# articles

feed_id: http://tontof.net/index.php?2013/07/23/07/32/37-spi0n-vs-koreus
title: Spi0n vs Koreus
uri: Spi0n-vs-Koreus
url: http://tontof.net/index.php?2013/07/23/07/32/37-spi0n-vs-koreus
content:
          La première fois que j'ai vu une vidéo de <a href="http://spi0n.com">Spi0n</a>, je crois que c'est grâce à <a href="http://lehollandaisvolant.net">Timo</a> qui avait partagé une vidéo de leur célèbre Zap. Si vous ne connaissez pas voici le dernier : <a href="http://www.spi0n.com/le-zap-de-spi0n-com-n177/">Zap 177</a>.<br />
<br />
J'ai trouvé sympa l'idée d'une compilation des meilleures vidéos et je l'ai ajouté à mon lecteur de flux. J'ai commencé à recevoir des dizaines et dizaines de vidéos que je ne regardais que de temps en temps ; je ne manquais par contre aucun zap. Je trouvais ça cool mais pour les autres vidéos j'étais souvent dérangé par leur pratique. Vous l'avez peut-être remarqué dans mes liens inutiles, mais quand je voulais partager une vidéo que j'avais découvert grâce à eux, j'étais obligé de rechercher la vidéo d'origine car ils ont une pratique assez particulière qui consiste à ré-uploader toutes les vidéos. Malheureusement, les sources ne sont pas systématiquement citées et c'est un truc qui m'énervait un peu... beaucoup...<br />
<br />
Un autre petit détail c'est l'utilisation systématique de dailymotion qui fonctionne très mal chez moi. Ce n'est pas un problème de bande passante, mais leur lecteur vidéo est d'une lourdeur qui m'empêche de suivre une vidéo correctement même en très basse qualité... Je n'ai pas 4 cœurs et 32 Go de RAM et la différence avec youtube est juste impressionnante.<br />
<br />
Peu de temps après Spi0n, je suis tombé sur le site de <a href="http://koreus.com">Koreus</a>. Il m'a semblé beaucoup moins connu mais avec un concept identique : le partage de vidéos. Contrairement à Spi0n, il ne faisait pas de compilation mais avait une approche que je préférais (et un lecteur perso très léger) alors j'ai aussi ajouté à mon lecteur de flux. Depuis plus d'un an j'avais donc 2 flux similaires et ce n'était pas rare de voir passer plusieurs fois la même vidéo. Cela ne me dérange pas car comme je vous l'ai dit au début je ne les regarde pas systématiquement et je suis un grand utilisateur de la touche 'n' dans KrISS feed :-)<br />
<br />
Depuis 1 an koreus s'est mis à faire des <a href="http://www.koreus.com/modules/news/article10305.html">compilations</a> : <a href="http://www.koreus.com/video/koreusity-50.html">koreusity 50</a> dernier en date. Et dès la première j'ai tout de suite apprécié. Je préfère d'ailleurs les montages koreusity aux zaps de spi0n. L'intégration des vidéos verticales est par exemple mieux réalisée (même si c'est mal, ça existe de plus en plus ! <a href="http://www.koreus.com/video/vertical-video-syndrome.html">VVS</a>).<br />
<br />
Tout ça pour vous dire que ce matin Koreus a posté cet article : <a href="http://www.koreus.com/modules/news/article11946.html">http://www.koreus.com/modules/news/article11946.html</a><br />
<br />
C'est enfin fait je ne suis plus abonné depuis 5 min à spi0n...
      


feed_id: http://tontof.net/index.php?2013/07/11/08/30/50-quelques-liens-inutiles-pour-passer-le-temps-43
title: Quelques liens inutiles pour passer le temps #43
uri: Quelques-liens-inutiles-pour-passer-le-temps-43
url: http://tontof.net/index.php?2013/07/11/08/30/50-quelques-liens-inutiles-pour-passer-le-temps-43
content:
          1 - Après avoir utilisé les réacteurs de votre avion,<br />
<a href="http://www.gizmodo.fr/2013/07/10/table-conference-747.html">http://www.gizmodo.fr/2013/07/10/table-conference-747.html</a><br />
via : <a href="http://bajazet.fr/shaarli/?_AsJuQ">http://bajazet.fr/shaarli/?_AsJuQ</a><br />
via : <a href="http://shaarli.m0le.net/?vv-gIw">http://shaarli.m0le.net/?vv-gIw</a><br />
<br />
si vous ne savez pas quoi faire des ailes :<br />
<a href="http://design-milk.com/aviation-inspired-desks-by-motoart/">http://design-milk.com/aviation-inspired-desks-by-motoart/</a><br />
<br />
2 - Vous connaissez tous les boîtes inutiles ?<br />
<a href="media/434c6856.tumblr_m72ssuAUNK1rb1tyzo1_500.gif" data-original-source="http://25.media.tumblr.com/tumblr_m72ssuAUNK1rb1tyzo1_500.gif">http://25.media.tumblr.com/tumblr_m72ssuAUNK1rb1tyzo1_500.gif</a><br />
En voici une autre qui vous réserve quelques surprises :<br />
<a href="http://www.koreus.com/video/boite-inutile-surprises.html">http://www.koreus.com/video/boite-inutile-surprises.html</a><br />
<br />
3 - Je ne sais pas trop quel piano choisir, ils sont tous exceptionnels :<br />
<a href="http://partitions-piano.fr/index.php/actualites/67-oeuvre-pour-piano/686-des-pianos-dexceptions">http://partitions-piano.fr/index.php/actualites/67-oeuvre-pour-piano/686-des-pianos-dexceptions</a><br />
<br />
4 - Un petit mémo pour apprendre à situer les os du corps humain :<br />
<a href="https://i.chzbgr.com/maxW500/7613520384/hFAEEFE7D/">https://i.chzbgr.com/maxW500/7613520384/hFAEEFE7D/</a><br />
via : <a href="http://cheezburger.com/7613520384">http://cheezburger.com/7613520384</a><br />
<br />
5 - Un objet déco pour votre 4x4 et surtout une astuce youtube : si vous ne pouvez pas regarder une vidéo sur youtube parce qu'il faut se connecter pour prouver que vous êtes majeur... (déconnectez-vous de Google avant de tester) :<br />
<a href="https://www.youtube.com/watch?v=GUSPDbnkHo4">https://www.youtube.com/watch?v=GUSPDbnkHo4</a><br />
Modifier le lien en utilisant <strong>embed/</strong> à la place de <strong>watch?v=</strong> et ça marche :-)<br />
<a href="https://www.youtube.com/embed/GUSPDbnkHo4">https://www.youtube.com/embed/GUSPDbnkHo4</a><br />
via : <a href="http://www.2m3.net/index.php?page=lire&amp;id=9385">http://www.2m3.net/index.php?page=lire&amp;id=9385</a><br />
<br />
Mais il y a des vidéos avec lesquelles vous n'avez pas besoin de vous connecter pour voir des trucs... euh... je vous laisse regarder :<br />
<a href="https://www.youtube.com/watch?v=kqGc6oeIQ5Y">https://www.youtube.com/watch?v=kqGc6oeIQ5Y</a><br />
via : <a href="https://twitter.com/GiedReLaLaLa/status/352363279915552768">https://twitter.com/GiedReLaLaLa/status/352363279915552768</a><br />
<br />
6 - Une astuce photo bien sympathique :<br />
<a href="http://www.fubiz.net/2013/05/22/urban-zoom-photography/">http://www.fubiz.net/2013/05/22/urban-zoom-photography/</a><br />
via : <a href="http://blog.m0le.net/2013/06/24/nonos-vrac-95/">http://blog.m0le.net/2013/06/24/nonos-vrac-95/</a><br />
<br />
7 - Un bar qui veut lutter contre les abrutis (... les gens) qui ne savent pas se passer de leur téléphone :<br />
<a href="http://www.koreus.com/video/the-offline-glass.html">http://www.koreus.com/video/the-offline-glass.html</a><br />
<br />
8 - Des mises en scène des objets du quotidien<br />
<a href="http://artpicsdesign.blogspot.be/2013/04/funny-objects-in-real-life-by-terry.html">http://artpicsdesign.blogspot.be/2013/04/funny-objects-in-real-life-by-terry.html</a><br />
via ?<br />
<br />
9 - Vous connaissez la chanson : <a href="https://en.wikipedia.org/wiki/The_Elements_%28song%29">The elements</a> de Tom Lehrer ?<br />
L'interprétation de Daniel Radcliffe est assez connue :<br />
<a href="https://www.youtube.com/embed/rSAaiYKF0cs">https://www.youtube.com/embed/rSAaiYKF0cs</a><br />
Voici une nouvelle chanson :<br />
<a href="http://www.youtube.com/embed/zUDDiWtFtEM">http://www.youtube.com/embed/zUDDiWtFtEM</a><br />
via : <a href="http://cheezburger.com/50416129">http://cheezburger.com/50416129</a><br />
<br />
10 - Affaire PRISM, rien à cacher, tout ça :<br />
<a href="media/521af738.3usegz.jpg" data-original-source="http://i.qkme.me/3usegz.jpg">http://i.qkme.me/3usegz.jpg</a><br />
via : <a href="http://www.quickmeme.com/meme/3usegz/">http://www.quickmeme.com/meme/3usegz/</a><br />
via : <a href="http://sensini42.free.fr/shaarli/index.php?dKKw1w">http://sensini42.free.fr/shaarli/index.php?dKKw1w</a>
      


feed_id: http://tontof.net/index.php?2013/06/24/07/09/47-quelques-liens-inutiles-pour-passer-le-temps-42
title: Quelques liens inutiles pour passer le temps #42
uri: Quelques-liens-inutiles-pour-passer-le-temps-42
url: http://tontof.net/index.php?2013/06/24/07/09/47-quelques-liens-inutiles-pour-passer-le-temps-42
content:
          Une 42e édition spéciale de liens inutiles dédiés aux lundis.<br />
Parce que oui, aujourd'hui est un lundi comme un autre :<br />
<br />
1 - Une petite animation qui explique pourquoi le lundi n'a pas d'ami :<br />
<a href="media/55790fa7.Xk9uo3i2MUCDhHTlHt6LdQ2.gif" data-original-source="https://i.chzbgr.com/completestore/12/11/30/Xk9uo3i2MUCDhHTlHt6LdQ2.gif">https://i.chzbgr.com/completestore/12/11/30/Xk9uo3i2MUCDhHTlHt6LdQ2.gif</a><br />
via : <a href="http://cheezburger.com/6813927936">http://cheezburger.com/6813927936</a><br />
<br />
2 - Le lundi vu par Grumpy cat :<br />
<a href="media/ff4bd949.grumpy_cat_mondays-180714.jpg" data-original-source="http://www.gagbay.com/images/2012/11/grumpy_cat_mondays-180714.jpg">http://www.gagbay.com/images/2012/11/grumpy_cat_mondays-180714.jpg</a><br />
<br />
3 - Un lundi dans la vie de Giedré - Vie de merde...<br />
<a href="http://www.dailymotion.com/video/xpdypb_giedre-vie-de-merde_music">http://www.dailymotion.com/video/xpdypb_giedre-vie-de-merde_music</a><br />
Ne marche plus : <a href="http://www.youtube.com/watch?v=E40vc08TihY">http://www.youtube.com/watch?v=E40vc08TihY</a><br />
<br />
4 - Quels sont les prénoms des fils de David Bowie et Lady Di :<br />
<a href="https://lh4.googleusercontent.com/-u4j638O7zRw/UQOH85l6UaI/AAAAAAAAB_I/Ciwaa1-KZ8I/s731/2013-01-25">https://lh4.googleusercontent.com/-u4j638O7zRw/UQOH85l6UaI/AAAAAAAAB_I/Ciwaa1-KZ8I/s731/2013-01-25</a><br />
via : <a href="http://lehollandaisvolant.net/index.php?mode=links&amp;id=20130126115256">http://lehollandaisvolant.net/index.php?mode=links&amp;id=20130126115256</a><br />
<br />
5 - Lundi matin 8h :<br />
<a href="media/a646d18a.04Y5ebB.gif" data-original-source="http://i.imgur.com/04Y5ebB.gif">http://i.imgur.com/04Y5ebB.gif</a><br />
via : <a href="http://lesjoiesducode.tumblr.com/post/47439530963/lundi-matin-8h">http://lesjoiesducode.tumblr.com/post/47439530963/lundi-matin-8h</a><br />
<br />
6 - Quand j’essaie de me rappeler où j’en étais vendredi le lundi matin :<br />
<a href="media/a71f8187.qRuEY.gif" data-original-source="http://i.imgur.com/qRuEY.gif">http://i.imgur.com/qRuEY.gif</a><br />
via : <a href="http://lesjoiesducode.tumblr.com/post/49759394380/quand-jessaie-de-me-rappeler-ou-jen-etais-vendredi-le">http://lesjoiesducode.tumblr.com/post/49759394380/quand-jessaie-de-me-rappeler-ou-jen-etais-vendredi-le</a><br />
<br />
7 - Le lundi, ça fait mal :<br />
<a href="https://i.chzbgr.com/maxW500/7446617344/h6D371C5F/">https://i.chzbgr.com/maxW500/7446617344/h6D371C5F/</a><br />
via : <a href="http://cheezburger.com/7446617344">http://cheezburger.com/7446617344</a><br />
<br />
8 - Quand je m'installe à mon bureau le lundi matin :<br />
<a href="media/379d960b.TiNJx5I.gif" data-original-source="http://i.imgur.com/TiNJx5I.gif">http://i.imgur.com/TiNJx5I.gif</a><br />
via : <a href="http://lesjoiesducode.tumblr.com/post/53180002028/quand-je-minstalle-a-mon-bureau-le-lundi-matin">http://lesjoiesducode.tumblr.com/post/53180002028/quand-je-minstalle-a-mon-bureau-le-lundi-matin</a><br />
<br />
9 - Je déteste les lundis ou ce sont les lundis qui me détestent ?<br />
<a href="media/43173b78.he-blues-monday-victimised-demotivational-posters-1309163749.jpg" data-original-source="http://cdn.motinetwork.net/motifake.com/image/demotivational-poster/1106/the-blues-monday-victimised-demotivational-posters-1309163749.jpg">http://cdn.motinetwork.net/motifake.com/image/demotivational-poster/1106/the-blues-monday-victimised-demotivational-posters-1309163749.jpg</a><br />
via : <a href="http://www.motifake.com/the-blues-monday-victimised-demotivational-posters-137148.html">http://www.motifake.com/the-blues-monday-victimised-demotivational-posters-137148.html</a><br />
<br />
10 - La mauvaise nouvelle du lundi...<br />
<a href="media/3d13c4cf.221.jpg" data-original-source="http://4.bp.blogspot.com/-UPI9dkOfTrM/Ub4q_O_hrkI/AAAAAAAAB9Q/kUULEuatyxQ/s1600/221.jpg">http://4.bp.blogspot.com/-UPI9dkOfTrM/Ub4q_O_hrkI/AAAAAAAAB9Q/kUULEuatyxQ/s1600/221.jpg</a><br />
via : <a href="http://drinkalol.blogspot.fr/2013/06/391.html">http://drinkalol.blogspot.fr/2013/06/391.html</a><br />
via : <a href="https://links.gatitac.eu/?TD3VAA">https://links.gatitac.eu/?TD3VAA</a>
      


feed_id: http://tontof.net/index.php?2013/06/22/13/37/28-presque-nouvelle-version-de-kriss-feed
title: Presque nouvelle version de KrISS feed
uri: Presque-nouvelle-version-de-KrISS-feed
url: http://tontof.net/index.php?2013/06/22/13/37/28-presque-nouvelle-version-de-kriss-feed
content:
          La version 8 est presque prête. J'attends quelques retours de votre part avant de l'officialiser !<br />
<br />
Cette version s'adresse donc aux personnes un peu plus averties (même s'il n'y a pas de grands risques : pensez juste à bien sauvegarder votre data.php et votre opml avant) qui utilisent la version de développement située dans <a href="https://raw.github.com/tontof/kriss_feed/master/src/index.php">src</a><br />
<br />
Dans les nouveautés :<br />
- Un <strong>favicon</strong> : cela n'a pas été facile, mais depuis <a href="http://tontof.net/?2013/04/27/13/44/27-votre-avis-nous-interesse">mon dernier sondage</a>, j'ai eu une autre idée qui j'espère mettra tout le monde d'accord. Pour rappel, je voulais un logo qui me permette de regrouper tous mes projets. Ce logo sera une pièce de puzzle avec 3 trous. Regardez de plus près et vous devriez voir un K. J'aime beaucoup cette idée alors si vous voulez me faire changer d'avis, il va falloir que vous avanciez de solides arguments :-)<br />
J'aime bien les puzzles depuis tout petit, la notion de choses qui s'emboîtent les unes dans les autres pour former un tout me plaît énormément (le terminal, le symbole K (pas le potassium hein :-p), la possibilité d'inclure un logo existant et d'en créer un nouveau.<br />
Cela donne pour KrISS feed ce favicon : <img src="http://tontof.net/feed/?file=favicon.ico" alt="KrISS feed favicon">. Alors qu'en pensez-vous ?<br />
Je n'ai pas encore eu le temps de l'améliorer et il n'est pas encore au format vectoriel, mais ça donne une bonne idée.<br />
- Support <strong>multilingue</strong> : à vous de jouer pour les traductions (<a href="https://github.com/tontof/kriss_feed/blob/master/src/locale/messages.pot">messages.pot</a>), j'ai fait la version <a href="https://github.com/tontof/kriss_feed/blob/master/src/locale/fr_FR/LC_MESSAGES/messages.po">française</a> (désolé pour les volontaires qui s'étaient proposés, mais je l'ai fait pour pouvoir tester le code : n'hésitez pas à relire, j'ai traduit assez rapidement). D'ailleurs je me demandais si ça n'existait pas des trucs pour traduire automatiquement en ce basant sur une base de .po (github possède beaucoup de fichiers de traduction mais je n'ai pas trouvé quelque chose qui permettrait de traduire automatiquement. Les seuls sites que j'ai trouvé nécessitaient une inscription...) ? J'ai utilisé poedit si vous avez des alternatives je suis preneur :-)<br />
- Ajout des <strong>plugins</strong> : pour le moment ça reste sommaire, je m'en suis surtout servi pour inclure le support multilingue. Il n'y a pas encore de menu de gestion des plugins.<br />
Par exemple, pour traduire, il faut connaître l'URL :<br />
KrISS en français : <a href="http://tontof.net/feed/?lang=fr_FR">http://tontof.net/feed/?lang=fr_FR</a><br />
KrISS en anglais : <a href="http://tontof.net/feed/?lang=en_GB">http://tontof.net/feed/?lang=en_GB</a><br />
- <strong>Favicon dynamique</strong> : le nombre d'articles non lus dans le favicon (très pratique quand on épingle un onglet) (par <a href="https://github.com/tvelter">Tvelter</a>).<br />
- <strong>Nouveau raccourci 'z'</strong> : permet d'ouvrir tous les articles de la page en cours dans des onglets et de les marquer comme lus (par <a href="https://github.com/tvelter">Tvelter</a>).<br />
- <strong>Préchargement des articles</strong> : option preload pour précharger les articles de la page en mode liste (par <a href="https://github.com/TiTi">TiTi</a>).<br />
- <strong>Icônes Unicode</strong> : permet de personnaliser plus facilement avec css. Pour activer les icones dans le menu, il faut créer un fichier user.css dans un dossier inc avec :<br />
<br />
.menu-ico:before {<br />
  display: inline-block;<br />
}<br />
<br />
Il me reste encore le + et - à changer. Inspiré de <a href="http://knacss.com">knacss.com</a>.<br />
<br />
J'ai eu de nouveaux retours sur les problèmes liés à des données corrompues. Une piste probable est l'utilisation d'un cron. Il semblerait que toutes les personnes touchées utilisaient un cron. Si vous avez des idées d'où pourrait venir le problème... (les données corrompues sont particulières car le fichier data.php peut se décompresser et c'est la sérialisation php qui semble poser problème... du coup je n'ai aucune idée d'où cela peut venir et comme le bug n'est pas reproductible à souhait, ça ne simplifie pas les choses...)<br />
<br />
Dans les idées que je souhaite développer, il y a la possibilité de compiler sa propre version de KrISS feed (un peu comme ça se fait bien pour les projets javascript comme <a href="http://knacss.com/builder/">http://knacss.com/builder/</a> http://jqueryui.com/download/ etc.). Je ne sais pas ce que vous en pensez, mais je pense qu'il y a quelque chose à creuser là dedans... Pour le moment les plugins sont inclus dans le fichier index.php mais ce n'est pas obligatoire et ça peut fonctionner autrement. L'avantage c'est que les gens qui n'y connaissent rien peuvent avoir accès à tout dans un seul et unique fichier. L'autre avantage c'est que les gens qui souhaitent optimiser leur programme ont la possibilité de le faire. En gros je pense que ça permettra une plus grande modularité. À voir...<br />
<br />
Maintenant la prochaine étape va être la création d'un plugin pour inclure le code de <a href="https://github.com/shrk69/kriss_feed">shrk69</a> car cela permettra de refactoriser le code de KrISS feed (qui en a bien besoin depuis la version 5. Il a évolué trop vite) et d'adapter les plugins pour les rendre entièrement fonctionnels.
      


feed_id: http://tontof.net/index.php?2013/06/19/17/54/16-quelques-liens-inutiles-pour-passer-le-temps-41
title: Quelques liens inutiles pour passer le temps #41
uri: Quelques-liens-inutiles-pour-passer-le-temps-41
url: http://tontof.net/index.php?2013/06/19/17/54/16-quelques-liens-inutiles-pour-passer-le-temps-41
content:
          1 - Une petite chanson : les gens qui doutent :<br />
<a href="http://www.youtube.com/embed/qM1XxVZH-I0?autoplay=1">http://www.youtube.com/embed/qM1XxVZH-I0?autoplay=1</a><br />
via : <a href="http://blogs.mediapart.fr/blog/thierry-peltier/280513/lettre-ouverte-labbe-grosjean-et-ceux-qui-le-suivent">http://blogs.mediapart.fr/blog/thierry-peltier/280513/lettre-ouverte-labbe-grosjean-et-ceux-qui-le-suivent</a><br />
via : <a href="http://share.no-life.info/?S1iB9w">http://share.no-life.info/?S1iB9w</a><br />
<br />
2 - Des petites astuces pour organiser un garage :<br />
<a href="http://www.curbly.com/users/diy-maven/posts/15010-round-up-10-diy-garage-organization-ideas">http://www.curbly.com/users/diy-maven/posts/15010-round-up-10-diy-garage-organization-ideas</a><br />
<br />
3 - De simples trombones :<br />
<a href="http://www.relentlesslyoptimistic.com/2013/06/middle-finger-paperclips.html">http://www.relentlesslyoptimistic.com/2013/06/middle-finger-paperclips.html</a><br />
<br />
4 - Un must-have : un décapsuleur :<br />
<a href="https://i.chzbgr.com/maxW500/7548649728/hDBDD0DD5/">https://i.chzbgr.com/maxW500/7548649728/hDBDD0DD5/</a><br />
via : <a href="http://cheezburger.com/7548649728">http://cheezburger.com/7548649728</a><br />
<br />
5 - Une chaise pliable :<br />
<a href="http://design-milk.com/deconstruction-leaf-chair-folditure/">http://design-milk.com/deconstruction-leaf-chair-folditure/</a><br />
<br />
6 - Un petit troll linux/windows/mac :<br />
<a href="media/56bfd1a3.539.jpg" data-original-source="http://www.olissea.com/gallery/medium/539.jpg">http://www.olissea.com/gallery/medium/539.jpg</a><br />
via : <a href="http://www.olissea.com/mb/links/1/?KaqKww">http://www.olissea.com/mb/links/1/?KaqKww</a><br />
<br />
Et parce que ça ne mange pas de pain, une spéciale pour apple :<br />
<a href="https://www.youtube.com/embed/ZWPqjXYTqYw?autoplay=1">https://www.youtube.com/embed/ZWPqjXYTqYw?autoplay=1</a><br />
via : <a href="http://lehollandaisvolant.net/index.php?mode=links&amp;id=20130616180636">http://lehollandaisvolant.net/index.php?mode=links&amp;id=20130616180636</a><br />
<br />
7 - Un poème fait de contrepèteries :<br />
<a href="http://blogs.mediapart.fr/blog/marie-anne-kraft/171112/plaintes-dune-femme-decue">http://blogs.mediapart.fr/blog/marie-anne-kraft/171112/plaintes-dune-femme-decue</a><br />
via : <a href="http://lehollandaisvolant.net/index.php?mode=links&amp;id=20130611204828">http://lehollandaisvolant.net/index.php?mode=links&amp;id=20130611204828</a><br />
<br />
8 - Vidéo promotionnelle de White night à Tel Aviv en jouant avec la lune :<br />
<a href="http://www.youtube.com/embed/FZ_pIP7bxyc?autoplay=1">http://www.youtube.com/embed/FZ_pIP7bxyc?autoplay=1</a><br />
via : <a href="http://www.koreus.com/video/white-night-tel-aviv-2013.html">http://www.koreus.com/video/white-night-tel-aviv-2013.html</a><br />
<br />
9 - Un vélo volant :<br />
<a href="http://www.youtube.com/embed/TtylFugOT_4?autoplay=1">http://www.youtube.com/embed/TtylFugOT_4?autoplay=1</a><br />
via : <a href="http://www.2m3.net/index.php?page=lire&amp;id=9378">http://www.2m3.net/index.php?page=lire&amp;id=9378</a><br />
<br />
10 - Une illusion d'optique illustrée par une image animée :<br />
<a href="https://i.chzbgr.com/maxW500/7462395648/h0018240C/">https://i.chzbgr.com/maxW500/7462395648/h0018240C/</a><br />
via : <a href="http://cheezburger.com/7462395648">http://cheezburger.com/7462395648</a><br />

      


feed_id: http://tontof.net/index.php?2013/05/24/09/41/39-presentation-de-kriss-feed
title: Présentation de KrISS feed
uri: Présentation-de-KrISS-feed
url: http://tontof.net/index.php?2013/05/24/09/41/39-presentation-de-kriss-feed
content:
          Comme vous avez pu le constater ces derniers temps, il n'y a pas eu beaucoup de nouveautés en ce qui concerne KrISS feed et malheureusement cela va durer jusqu'à mi juin. Je serai bientôt offline alors si vous m'envoyez un message, ne vous attendez pas à une réponse rapide de ma part :-)<br />
<br />
En attendant, je vous ai préparé une petite page de présentation des outils <a href="http://tontof.net/kriss">KrISS</a>... euh que <a href="http://tontof.net/kriss/feed">KrISS feed</a> en fait. Je sais, c'est moche, mais je n'ai pas eu le temps de faire de CSS pour le moment et mon but était de faire des pages statiques facilement maintenables avec de multiples possibilités. Pour le moment c'est juste en anglais et c'est très incomplet mais c'est un début... Pour cela, j'ai utilisé <a href="http://orgmode.org">Org-mode</a> qui est juste génial !<br />
<br />
Je vous ai déjà dit que j'utilisais <a href="http://tontof.net/?2013/01/25/18/32/57-mon-emacs-a-moi">Emacs</a> et Org mode est un mode emacs (<a href="http://orgmode.org/worg/org-tools/index.html">mais pas que</a>) qui permet d'organiser tout et n'importe quoi dans de simples fichiers textuels (Org mode for Emacs - Your Life in Plain Text) :<br />
Par exemple, voici le source de la page de <a href="http://tontof.net/kriss/feed">KrISS feed</a> : <a href="http://tontof.net/kriss/feed/index.org">http://tontof.net/kriss/feed/index.org</a> (Pour générer le html correspondant à partir d'emacs : C-c C-e h)<br />
<br />
Si vous voulez contribuez à la documentation, corriger des fautes, etc. c'est ici que ça se passe : <a href="https://github.com/tontof/kriss">https://github.com/tontof/kriss</a><br />
<br />
Je ne vous passerai pas en revue toutes les possibilités offertes par Org mode, mais si vous voulez un aperçu, c'est ici : <a href="http://orgmode.org/features.html">http://orgmode.org/features.html</a> <br />
<br />
Je vais par contre vous parler de <a href="http://orgmode.org/worg/org-contrib/babel/languages.html">Babel</a> qui permet d'utiliser directement dans un fichier org une multitude d'outils qui utilisent des fichiers textes :<br />
- <a href="http://ditaa.sourceforge.net">DITAA</a> - DIagrams Through Ascii Art<br />
  Super pour créer des graphiques lisibles directement à partir du fichier texte<br />
- <a href="http://www.graphviz.org/Gallery.php">Graphviz</a> - Graph Visualization Software<br />
  Plus complet que DITAA, mais les graphiques ne sont plus visibles aussi facilement dans le source<br />
- <a href="http://eukleides.org/samples.html">Eukleides</a><br />
  Pour faire des figures géométiques avec la possibilité de faire des animations : <a href="http://eukleides.org/thales.html">http://eukleides.org/thales.html</a><br />
- <a href="http://www.latex-project.org">LaTeX</a><br />
  LibreOffice Writer c'est fini quand on connaît LaTeX :-)<br />
  On parle souvent de LaTeX pour les formules mathématiques, mais c'est bien plus que ça.<br />
  Si vous cherchez un symbole particulier, je vous conseille <a href="http://detexify.kirelabs.org/classify.html">detexify</a><br />
  Vous pourrez même inclure vos formules directement dans vos pages html grâce à <a href="http://www.mathjax.org/demos/scaling-math/">mathjax</a> (supporte aussi MathML)<br />
- <a href="http://lilypond.org/text-input.fr.html">Lilypond</a><br />
  Le latex pour les musiciens<br />
- <a href="http://gnuplot.sourceforge.net">Gnuplot</a><br />
  Pour faire des graphiques (parfois <a href="http://gnuplot.sourceforge.net/demo_4.7/animate2.html">animés</a>) : <br />
  image : <a href="http://gnuplot.sourceforge.net/demo_4.7/">http://gnuplot.sourceforge.net/demo_4.7/</a><br />
  svg : <a href="http://gnuplot.sourceforge.net/demo_svg_4.7/">http://gnuplot.sourceforge.net/demo_svg_4.7/</a><br />
  gnuplot existe depuis 1986, mais ne cesse d'innover, il est même possible d'exporter en html5 canvas : <a href="http://gnuplot.sourceforge.net/demo_canvas_4.7/">http://gnuplot.sourceforge.net/demo_canvas_4.7/</a><br />
<br />
Bref, plein d'outils qui me permettront de faire des pages de présentation statiques sans trop me prendre la tête :-)<br />

      


feed_id: http://tontof.net/index.php?2013/05/15/18/23/22-quelques-liens-inutiles-pour-passer-le-temps-40
title: Quelques liens inutiles pour passer le temps #40
uri: Quelques-liens-inutiles-pour-passer-le-temps-40
url: http://tontof.net/index.php?2013/05/15/18/23/22-quelques-liens-inutiles-pour-passer-le-temps-40
content:
          1 - Après les <a href="media/8a9362cd.6957206_460s.jpg" data-original-source="http://d24w6bsrhbeh9d.cloudfront.net/photo/6957206_460s.jpg">Kamehameha</a>, la <a href="http://metro.co.uk/2013/04/03/star-wars-fans-embrace-the-dark-side-with-new-internet-trend-vadering-3580979/">force</a>, <a href="http://www.spi0n.com/le-pottering-le-meme-des-fans-dharry-potter/">Harry Potter</a> (<a href="http://tontof.net/?2013/04/10/18/42/45-quelques-liens-inutiles-pour-passer-le-temps-38#comments">via</a>), voici les géants :<br />
<a href="http://www.spi0n.com/le-meme-japonais-geants-mangent-des-humains/">http://www.spi0n.com/le-meme-japonais-geants-mangent-des-humains/</a><br />
<br />
2 - Je ne sais pas si vous connaissez le blog : la super supérette, mais en gros, ce sont des recettes alternatives aux produits commerciaux. Elles viennent de sortir un livre :<br />
<a href="http://www.lasupersuperette.com/2013/05/sortie-livre/">http://www.lasupersuperette.com/2013/05/sortie-livre/</a><br />
Dans l'actualité culinaire, vous avez dû entendre parler de la fabrique à menus :<br />
<a href="http://www.mangerbouger.fr/bien-manger/la-fabrique-a-menus.html">http://www.mangerbouger.fr/bien-manger/la-fabrique-a-menus.html</a><br />
Sinon j'aime bien ce meta moteur de recettes :<br />
<a href="http://www.chercher-une-recette.fr/">http://www.chercher-une-recette.fr/</a><br />
<br />
3 - C'est toujours surprenant le résultat de face swap :<br />
<a href="media/6d9846c0.sarkozy-hollande.jpg" data-original-source="http://www.topito.com/wp-content/uploads/2013/04/sarkozy-hollande.jpg">http://www.topito.com/wp-content/uploads/2013/04/sarkozy-hollande.jpg</a><br />
via : <a href="http://orangina-rouge.org/shaarli/?Fd8L8Q">http://orangina-rouge.org/shaarli/?Fd8L8Q</a><br />
via : <a href="http://www.topito.com/top-face-swaps-politiques">http://www.topito.com/top-face-swaps-politiques</a><br />
<br />
4 - J'aime bien quand les panneaux sont détournés un peu comme ça :<br />
<a href="https://i.chzbgr.com/maxW500/7377596416/h5CC4F4F9/">https://i.chzbgr.com/maxW500/7377596416/h5CC4F4F9/</a><br />
via : <a href="http://cheezburger.com/7377596416">http://cheezburger.com/7377596416</a><br />
<br />
5 - Comment découper un carré avec des bords arrondis à l'aide d'une perceuse :<br />
<a href="https://i.chzbgr.com/maxW500/7353768960/h5E32D78D/">https://i.chzbgr.com/maxW500/7353768960/h5E32D78D/</a><br />
via : <a href="http://cheezburger.com/7353768960">http://cheezburger.com/7353768960</a><br />
(Je vous rappelle que vous pouvez vous faire attaquer par <a href="http://www.luc-damas.fr/humeurs/poursuites-en-justice/">apple</a> qui a un brevet pour ça. Je ne sais pas si la justice considérera le carré comme un rectangle particulier...)<br />
<br />
6 - Un menu de fast-food à emporter (ne convient pas aux gros qui ne se limitent pas à un seul menu sans supplément burger :-p) :<br />
<a href="https://i.chzbgr.com/maxW500/7440104960/hE602B595/">https://i.chzbgr.com/maxW500/7440104960/hE602B595/</a><br />
via : <a href="http://cheezburger.com/7440104960">http://cheezburger.com/7440104960</a><br />
<br />
7 - Des toilettes avec des portes transparentes qui deviennent opaques quand c'est occupé :<br />
<a href="http://www.youtube.com/embed/KQu9XcqweXo">http://www.youtube.com/embed/KQu9XcqweXo</a><br />
via : <a href="http://www.spi0n.com/porte-de-toilettes-en-verre-originale/">http://www.spi0n.com/porte-de-toilettes-en-verre-originale/</a><br />
<br />
8 - On connaît au tennis les coups de la balle entre les jambes, de la raquette dans le dos, mais le lancer de raquette pour intercepter un lobe, je n'avais jamais vu :<br />
<a href="https://i.chzbgr.com/maxW500/7434647296/h86F0623B/">https://i.chzbgr.com/maxW500/7434647296/h86F0623B/</a><br />
via : <a href="http://cheezburger.com/7434647296">http://cheezburger.com/7434647296</a><br />
<br />
9 - Un décapsuleur 24 bières :<br />
<a href="https://i.chzbgr.com/maxW500/7432328960/h49E8E39A/">https://i.chzbgr.com/maxW500/7432328960/h49E8E39A/</a><br />
via : <a href="http://cheezburger.com/7432328960">http://cheezburger.com/7432328960</a><br />
<br />
10 - Un téléphone au design sympathique :<br />
<a href="https://i.chzbgr.com/maxW500/7388531456/hE877C15B/">https://i.chzbgr.com/maxW500/7388531456/hE877C15B/</a><br />
via : <a href="http://cheezburger.com/7388531456">http://cheezburger.com/7388531456</a>
      


feed_id: http://tontof.net/index.php?2013/05/05/17/34/36-spiced-ham-ahhhhh
title: Spiced Ham ahhhhh !
uri: Spiced-Ham-ahhhhh
url: http://tontof.net/index.php?2013/05/05/17/34/36-spiced-ham-ahhhhh
content:
          Vous vous souvenez, je vous ai dit pour <a href="http://tontof.net/?2013/04/18/19/00/00-new-kriss-feed-update-version-7">l'anniversaire de tontof.net</a> que je n'avais eu qu'un seul spam. Je ne sais pas si c'est le hasard du calendrier, mais depuis ce jour ça n'a pas arrêté. Ils sont principalement localisés sur 2 articles :<br />
- <a href="http://tontof.net/?2012/12/21/21/12/00-la-fin-du-monde-avec-giedre-en-tete">http://tontof.net/?2012/12/21/21/12/00-la-fin-du-monde-avec-giedre-en-tete</a><br />
- <a href="http://tontof.net/?2013/03/26/18/05/53-quelques-liens-inutiles-pour-passer-le-temps-37">http://tontof.net/?2013/03/26/18/05/53-quelques-liens-inutiles-pour-passer-le-temps-37</a><br />
<br />
Pour lutter contre ça, j'ai tout d'abord ajouté <a href="http://www.projecthoneypot.org/">honeypot</a> grâce à la <a href="http://sebsauvage.net/wiki/doku.php?id=project_honeypot">bibliothèque de Sebsauvage</a>.<br />
<br />
Le résultat s'est vite fait ressentir :<br />
En 9 jours, 617 BLOCKED 8-D (Heureusement tous ne réussissaient pas hein !)<br />
<br />
Malheureusement, cela n'a pas suffit car les spams ont continué.<br />
<br />
Comme <a href="http://tontof.net/?2012/04/20/20/47/51-kriss-blog">mon captcha</a> était simple et très classique, je l'ai <a href="https://github.com/tontof/kriss_blog/blob/master/src/class/Captcha.php">changé</a>. Je l'ai laissé simple mais moins classique. (Ça devrait faire plaisir à V!nc3r parce que c'est un peu plus lisible ^^)<br />
<br />
Seulement voilà, les spams ont continué. Je me suis dit que les catpchas avec les écritures ascii c'était peut être trop facile à pirater alors j'ai créé des questions du style : Quelle est la première lettre du mot Arbre ?<br />
<br />
Mais rien n'y faisait, les spams continuaient. J'ai donc mené ma petite enquête et il s'avérait que les robots ne réussissaient pas du tout les captchas. En fait, KrISS blog avait juste un petit bug introduit quand j'avais changé le fait de ne plus demander le captcha après la preview s'il était correct.<br />
<br />
J'ai donc remis le captcha avec l'alphabet ascii et j'ai viré honeypot pour faire quelques tests. Depuis plus de spam !<br />
<br />
En fait, dans la majorité des cas, les robots sont vraiment simples à détecter. J'ai un textarea invisible appelé message et ils le remplissent tous.<br />
<br />
Quand j'aurais un peu plus de temps, je supprimerai le catpcha et je testerai le contenu du textarea invisible. S'il contient quelque chose je redigirai vers le piège de honeypot pour essayer de contribuer à la détection de nouveaux robots spammeurs !<br />
<br />
En faisant ça, je n'aurais pas besoin de demander à honeypot si l'ip correspond à un spammeur et en plus je contribuerai au projet. Tout ça sans captcha pour les vrais gens.<br />
<br />
J'ai hâte de voir ce que ça va donner !<br />
<br />
Si vous voulez plus d'infos sur le <a href="http://www.projecthoneypot.org/">project honeypot</a> :<br />
<a href="http://www.sebsauvage.net/rhaa/index.php?2011/06/27/13/17/04-project-honeypot-une-alternative-a-akismet">http://www.sebsauvage.net/rhaa/index.php?2011/06/27/13/17/04-project-honeypot-une-alternative-a-akismet</a><br />
<a href="http://sebsauvage.net/rhaa/index.php?2011/08/04/09/31/40-revue-de-logs-de-project-honeypot">http://sebsauvage.net/rhaa/index.php?2011/08/04/09/31/40-revue-de-logs-de-project-honeypot</a><br />
<a href="http://sebsauvage.net/rhaa/index.php?2011/08/01/07/13/04-retour-sur-project-honeypot">http://sebsauvage.net/rhaa/index.php?2011/08/01/07/13/04-retour-sur-project-honeypot</a>
      


feed_id: http://tontof.net/index.php?2013/05/01/20/04/10-quelques-liens-inutiles-pour-passer-le-temps-39
title: Quelques liens inutiles pour passer le temps #39
uri: Quelques-liens-inutiles-pour-passer-le-temps-39
url: http://tontof.net/index.php?2013/05/01/20/04/10-quelques-liens-inutiles-pour-passer-le-temps-39
content:
          1 - Si vous aimez <a href="http://www.flightradar24.com/">http://www.flightradar24.com/</a><br />
via : <a href="http://sebsauvage.net/links/?03izLQ">http://sebsauvage.net/links/?03izLQ</a><br />
Vous devriez aimer cette vidéo : <a href="https://www.youtube.com/embed/p8LE-HGyrpw?autoplay=1">https://www.youtube.com/embed/p8LE-HGyrpw?autoplay=1</a><br />
via : Ben<br />
<br />
2 - Si seulement :<br />
<a href="https://i.chzbgr.com/maxW500/7400295680/h9D3A42B0/">https://i.chzbgr.com/maxW500/7400295680/h9D3A42B0/</a><br />
via : <a href="http://cheezburger.com/7400295680">http://cheezburger.com/7400295680</a><br />
<br />
3 - Un must have pour les pique-niques :<br />
<a href="http://design-milk.com/combine-an-eco-chic-picnic-set-from-bold_a-design-company/">http://design-milk.com/combine-an-eco-chic-picnic-set-from-bold_a-design-company/</a><br />
<br />
4 - Je regardais une interview de <a href="http://tontof.net/?2012/12/21/21/12/00-la-fin-du-monde-avec-giedre-en-tete">GiedRé</a> sur idf1 (une chanson inédite à la fin pour ceux que ça intéressent) :<br />
<a href="http://www.idf1.fr/videos/le-jjda/2013-04-22-l-invite-du-jour.html">http://www.idf1.fr/videos/le-jjda/2013-04-22-l-invite-du-jour.html</a><br />
quand je vois la publicité en haut sur le site qui n'est pas bloquée par adblock plus :<br />
<a href="media/6f0ba501.245.jpg" data-original-source="http://rsc.idf1.fr/banner/245.jpg">http://rsc.idf1.fr/banner/245.jpg</a><br />
5€ pour 5 minutes et 4€ la minute supplémentaire. Je vais peut-être envisager une reconversion :-)<br />
<br />
5 - Vous avez l'esprit mal tourné :<br />
<a href="http://lewistmlnsn.tumblr.com/post/48411033616">http://lewistmlnsn.tumblr.com/post/48411033616</a><br />
via : <a href="http://lehollandaisvolant.net/index.php?mode=links&amp;id=20130424223034">http://lehollandaisvolant.net/index.php?mode=links&amp;id=20130424223034</a><br />
<br />
6 - Un petit air d'accordéon en responsive web design :<br />
<a href="http://artpolikarpov.github.io/garmoshka/">http://artpolikarpov.github.io/garmoshka/</a><br />
via : <a href="http://sensini42.free.fr/shaarli/index.php?oAAa9w">http://sensini42.free.fr/shaarli/index.php?oAAa9w</a><br />
<br />
7 - Une artiste qui utilise des machines à écrire :<br />
<a href="http://www.warriordudimanche.net/article141/keira-rathbone-la-dactylo-utlime">http://www.warriordudimanche.net/article141/keira-rathbone-la-dactylo-utlime</a><br />
<br />
8 - Un spoiler de films excellent :<br />
<a href="http://etenfaitalafin.fr/">http://etenfaitalafin.fr/</a><br />
via : <a href="http://www.nothing-is-3d.com/links/?pb4Lfg">http://www.nothing-is-3d.com/links/?pb4Lfg</a><br />
<br />
9 - Un kayak pliable, vive l'origami :<br />
<a href="https://i.chzbgr.com/maxW500/7384202752/h73E4A824/">https://i.chzbgr.com/maxW500/7384202752/h73E4A824/</a><br />
via : <a href="http://cheezburger.com/7384202752">http://cheezburger.com/7384202752</a><br />
<br />
10 - Vous connaissez la célèbre vidéo : double rainbow :<br />
<a href="http://www.youtube.com/embed/OQSNhk5ICTI?autoplay=1">http://www.youtube.com/embed/OQSNhk5ICTI?autoplay=1</a><br />
En voici un tube...<br />
<a href="http://www.youtube.com/embed/MX0D4oZwCsA?autoplay=1">http://www.youtube.com/embed/MX0D4oZwCsA?autoplay=1</a><br />
via : <a href="http://www.2m3.net/breve-9363-Double_rainbow_all_the_way_cross_the_sky.html">http://www.2m3.net/breve-9363-Double_rainbow_all_the_way_cross_the_sky.html</a>
      


feed_id: http://tontof.net/index.php?2013/04/27/13/44/27-votre-avis-nous-interesse
title: Votre avis nous intéresse
uri: Votre-avis-nous-intéresse
url: http://tontof.net/index.php?2013/04/27/13/44/27-votre-avis-nous-interesse
content:
          Je me pose plusieurs questions concernant KrISS feed et j'aimerais savoir ce que vous en pensez avant de me lancer dans la modification du code et ainsi me retrouver dans cette situation : <a href="http://bobineau.blogspot.fr/2013/04/72.html">http://bobineau.blogspot.fr/2013/04/72.html</a> <a href="http://bajazet.fr/shaarli/?yquLUg">(via)</a>.<br />
<br />
En gros, j'ai des questions a vous poser sur :<br />
- <a href="#ProblemeDeFlux">certains problèmes de flux</a> ;<br />
- <a href="#LogoKrISS">le logo de KrISS feed mais pas que</a> ;<br />
- <a href="#certificatSSL">les certificats pour les flux https</a> ;<br />
- <a href="#attaquesXSS">les attaques XSS</a> ;<br />
- <a href="#multilingue">le multilingue</a>.<br />
<br />
<div id="ProblemeDeFlux"></div><br />
<span style="text-decoration: underline;"><strong>Les problèmes de flux :</strong></span><br />
Je ne sais pas si tout le monde est conscient du problème, alors je vais essayer de donner quelques précisions qui vous permettront peut-être de comprendre pourquoi des fois ça marche et des fois ça ne marche pas.<br />
<br />
Tout d'abord, il faut savoir que les flux RSS ça génère beaucoup de trafic (et quand Google Reader aura définitivement fermé, ça sera encore pire, car je pense que son rôle intermédiaire était très important dans la limitation de ce trafic lié au flux RSS et peut expliquer aussi pourquoi il ferme ; c'est tout ce trafic qu'ils n'auront plus à gérer eux-mêmes et qui leur coûtait des sous).<br />
<br />
Il faut également savoir qu'il y a des gens qui, de mon point de vue, ne se rendent pas vraiment compte qu'ils peuvent être une vraie plaie pour les serveurs. Un petit exemple d'une personne qui a réglé son lecteur de flux (en l'occurrence Thunderbird) à télécharger mon flux RSS toutes les minutes. Mon serveur ovh mutualisé a de la chance, son ordinateur n'est pas allumé toute la journée, mais il fait quand même des bonnes journées (environ 8h - minuit). Un autre point positif, il gère la compression et mon flux qui fait environ 150 ko n'est transmis que pour 30 ko. <br />
<br />
Faisons un rapide calcul pessimiste. Une personne qui télécharge mon flux toutes les minutes sans la compression et toute la journée, ça nous donne :<br />
24*60*150 = 216 000 ko<br />
Vous vous rendez compte ? 216 Mo pour une seule personne par jour ?<br />
<br />
Quand on sait que je poste moins d'un article par jour, ça fait pas mal d'octets inutilement transférés. Tout ça pour quoi ? Avoir mon article dans la minute... Youhou, vive le monde hyper connecté. Personnellement, ça ne me surprend pas tant que ça que <a href="http://sebsauvage.net/links/?tuNmtw">Free</a>, <a href="http://lehollandaisvolant.net/?mode=links&amp;id=20130422184042">Orange</a> en arrivent à brider Youtube... et que <a href="http://www.linformaticien.com/actualites/id/28836/deutsche-telekom-bride-l-acces-web-apres-75-go-mois.aspx">Deutsche Telekom veut limiter à 75 Go par mois</a>.<br />
<br />
Alors ce n'est pas très grave en soi, moi ça me dérange pas personnellement, je suis sur un mutualisé OVH. Mais si je m'auto-hébergeais sur ma connexion perso, je réagirais sûrement différemment et je pense que je serais obligé de blacklister de temps en temps ce genre de personne.<br />
<br />
Et ben figurez-vous que c'est ce que font certains sites et du coup vous vous dîtes, KrISS feed c'est tout pourri je peux pas ajouter ce flux. Désolé, mais la faute ne vient pas toujours de KrISS feed :-)<br />
<br />
Les serveurs peuvent réagir différemment. Pour cela, je vais prendre 2 exemples : Google avec Youtube et Live Journal.<br />
<br />
Certains sites comme <a href="http://www.livejournal.com">http://www.livejournal.com</a> ont une politique assez surprenante même si elle est compréhensible. Dans le code de leurs différents flux, ils ont quand même réussi à mettre ce commentaire :<br />
If you are running a bot please visit this policy page outlining rules you must respect. <a href="http://www.livejournal.com/bots/">http://www.livejournal.com/bots/</a> (via : <a href="http://linux.livejournal.com/data/rss)">http://linux.livejournal.com/data/rss)</a><br />
<br />
Je trouve ça assez drôle, car les flux RSS ont justement pour but d'être lu par des robots, pas par des humains, alors un commentaire dans un flux RSS, euh...<br />
<br />
Pour résumé, s'ils vous suspectent d'être un robot trop gourmand, ils vous bannissent et KrISS feed, mais n'importe quel autre lecteur de flux, ne sera plus capable de récupérer leur flux et vous obtiendrez un timeout :-(<br />
<br />
Alors des gens me disent qu'ils ne peuvent pas ajouter tel ou tel flux alors qui marche sous Google Reader. Dans cet exemple concret de live journal, la réponse est simple, le serveur vous a banni. Quand c'est sur un serveur perso, c'est moins fréquent, mais sur un mutualisé, ça l'est un peu moins. Juste pour votre information Google Reader ne fait la demande de flux que toutes les heures et bizarrement vous ne vous êtes jamais plein en disant que c'était nul parce que vous n'aviez pas l'info en temps réel (Ah... on me dit que si, vous vous plaignez tout le temps :-p).<br />
<br />
D'autres serveurs, comme ceux de Youtube, vous bannissent temporairement et vous obtenez fréquemment l'erreur : Problem with last update. En fait, je soupçonne Youtube, pour leur éviter un trafic inutile, de vous bannir tant qu'il n'y a pas de nouvelles vidéos. Il garde donc une information sur les demandes de flux et gère un historique de leur côté. C'est difficile de savoir vraiment ce qu'il en est, mais je pense que c'est ce qu'ils font (et je trouve assez malin de leur part pour limiter ce trafic inutile). Ça veut dire que si KrISS feed vous indique un problème lors d'une mise à jour, il ne faut pas trop vous inquiéter, c'est tout à fait normal et il y a de grandes chances pour qu'il n'y ait tout simplement pas eu de nouvelles vidéos.<br />
<br />
Donc en gros comme pour Live Journal, Youtube vous bannit, mais contrairement à Live Journal, je pense que c'est volontairement bien étudié et il ne faut donc pas trop vous inquiéter si vous avez un Problem with last update ou que vous n'arrivez pas à ajouter une vidéo du premier coup.<br />
<br />
Dans l'évolution de KrISS feed, je ferai des messages plus explicites pour distinguer les problèmes de flux (mal formés) et les problèmes liés à la récupération du flux (genre timeout).<br />
<br />
J'ai quand même quelques interrogations sur comment je peux aussi essayer d'améliorer ça. Ma question concerne donc l'amélioration du cache, l'utilisation des ttl (time to live qui semble être ignoré de toutes les lecteurs de flux), e-tag, last-modified etc. Certains flux comme ceux générés par shaarli ne tiennent pas compte de ces informations et retournent systématiquement le flux rss mis à jour. Alors peut-être que c'est inutile mais je me demandais, s'il fallait essayer d'intégrer ça pour soulager les serveurs qui pourront répondre un code 304 (not modified) plutôt que d'envoyer le flux à chaque fois. J'attends vos avis sur la question.<br />
<br />
<div id="LogoKrISS"></div><br />
<span style="text-decoration: underline;"><strong>Un logo KrISS ?</strong></span><br />
Vous êtes plusieurs à m'avoir demandé un favicon pour KrISS feed et comme je suis indécis, je vous fais ici quelques propositions. En tête, je n'avais pas que KrISS feed, mais l'idée de plusieurs outils KrISS, parce qu'avec le temps j'espère bien vous proposez encore plus d'outils avec la même philosophie :<br />
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" width="392.9375" height="388.375" id="svg2"><defs id="defs4"/><metadata id="metadata7"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><g transform="translate(-28.28125,-13.4375)" id="layer1"><rect width="89.90358" height="89.90358" rx="1.5" x="28.789351" y="112.75193" id="rect2985" style="opacity:0.97000002;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"/><path d="m 34.34519,118.30777 0,76.7716" id="path2987" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><path d="m 73.741139,120.32808 -39.395949,37.37564 40.406102,40.4061" id="path2989" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><rect width="89.90358" height="89.90358" rx="1.5" x="129.46788" y="112.75194" id="rect2985-5" style="opacity:0.97000002;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"/><path d="m 133.39872,125.83786 0,59.91516" id="path2987-1" style="fill:none;stroke:#000000;stroke-width:0.78043395px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><path d="m 164.14465,127.41457 -30.74593,29.16922 31.53429,31.53429" id="path2989-1" style="fill:none;stroke:#000000;stroke-width:0.78043395px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><path d="m 167.09607,187.75577 30.05204,-30.05204 -30.30458,-30.30458 50.00256,0" id="path3798" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><path d="m 197.65319,158.2088 15.65736,0" id="path3800" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><circle cx="2" cy="6" r="1" transform="matrix(3.6170739,3.6170739,-3.6170739,3.6170739,165.70531,128.26206)" id="circle3863" style="fill:#000000;fill-opacity:1;stroke:none"/><path d="m 154.85409,146.34743 a 15.345945,15.345945 0 0 1 0,21.70244 l 3.61707,3.61708 a 20.46126,20.46126 0 0 0 0,-28.93659 z" id="path3865" style="fill:#000000;fill-opacity:1;stroke:none"/><path d="m 162.08824,139.11328 a 25.576575,25.576575 0 0 1 0,36.17074 l 3.61707,3.61707 a 30.69189,30.69189 0 0 0 0,-43.40488 z" id="path3867" style="fill:#000000;fill-opacity:1;stroke:none"/><rect width="89.90358" height="89.90358" rx="1.5" x="230.14641" y="112.75194" id="rect2985-4" style="opacity:0.97000002;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"/><path d="m 235.70225,118.30777 0,76.7716" id="path2987-5" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><path d="m 275.0982,120.32808 -39.39595,37.37564 40.4061,40.4061" id="path2989-5" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><circle cx="2" cy="6" r="1" transform="matrix(6.7884427,6.7884427,-6.7884427,6.7884427,289.18107,102.8911)" id="circle3863-0" style="fill:#000000;fill-opacity:1;stroke:none"/><path d="m 268.81574,136.83332 a 28.800923,28.800923 0 0 1 0,40.73064 l 6.78843,6.78846 a 38.401231,38.401231 0 0 0 0,-54.30754 z" id="path3865-3" style="fill:#000000;fill-opacity:1;stroke:none"/><path d="m 282.39263,123.25643 a 48.001539,48.001539 0 0 1 0,67.88442 l 6.78844,6.78844 a 57.601847,57.601847 0 0 0 0,-81.4613 z" id="path3867-1" style="fill:#000000;fill-opacity:1;stroke:none"/><rect width="89.90358" height="89.90358" rx="1.5" x="28.789351" y="212.58867" id="rect2985-43" style="opacity:0.97000002;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"/><path d="m 28.78935,301.98717 43.689098,-43.6891 0,-46.71955 0,90.40865 0,-44.95179 45.078062,45.07806 -44.699255,-44.69925 43.562835,-43.56283" id="path3952" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><rect width="89.90358" height="89.90358" rx="1.5" x="129.46788" y="212.39926" id="rect2985-43-2" style="opacity:0.97000002;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"/><path d="m 174.23027,258.29807 0,-46.71955 0,90.40865 0,-44.95179 45.07806,45.07806 -44.69925,-44.69925 43.56283,-43.56283" id="path3952-9" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><rect width="89.90358" height="89.90358" rx="1.5" x="330.82495" y="212.58867" id="rect2985-43-7" style="opacity:0.97000002;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"/><path d="m 330.82495,301.98717 43.6891,-43.6891 0,-46.71955 0,90.40865 0,-44.95179 45.07806,45.07806 -44.69926,-44.69925 43.56284,-43.56283" id="path3952-37" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><circle cx="2" cy="6" r="1" transform="matrix(4.764165,4.764165,-4.764165,4.764165,406.44706,219.93222)" id="circle3863-0-1" style="fill:#000000;fill-opacity:1;stroke:none"/><path d="m 392.15457,243.75304 a 20.21264,20.21264 0 0 1 0,28.58499 l 4.76415,4.76418 a 26.950188,26.950188 0 0 0 0,-38.11333 z" id="path3865-3-8" style="fill:#000000;fill-opacity:1;stroke:none"/><path d="m 401.6829,234.22471 a 33.687734,33.687734 0 0 1 0,47.64165 l 4.76416,4.76417 a 40.425281,40.425281 0 0 0 0,-57.16999 z" id="path3867-1-4" style="fill:#000000;fill-opacity:1;stroke:none"/><rect width="89.90358" height="89.90358" rx="1.5" x="28.789351" y="311.41525" id="rect2985-43-209-6" style="opacity:0.97000002;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"/><path d="m 275.77165,449.80618 a 44.446712,44.446712 0 1 1 -88.88246,-0.98746" transform="matrix(0,-1,1,0,-419.99558,587.19611)" id="path4137" style="opacity:0.97000002;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"/><path d="m 118.69292,311.41525 -43.94163,43.94164 43.43656,43.43656" id="path4139" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><circle cx="2" cy="6" r="1" transform="matrix(9.6820471,0,0,9.6820471,125.90339,326.92182)" id="circle3863-8" style="fill:#000000;fill-opacity:1;stroke:none"/><path d="m 135.58545,365.65 a 29.04614,29.04614 0 0 1 29.04613,29.04615 l 9.68205,0 a 38.728187,38.728187 0 0 0 -38.7282,-38.72819 z" id="path3865-4" style="fill:#000000;fill-opacity:1;stroke:none"/><path d="m 135.58545,346.28591 a 48.410234,48.410234 0 0 1 48.41024,48.41024 l 9.68204,0 a 58.092281,58.092281 0 0 0 -58.09228,-58.09228 z" id="path3867-19" style="fill:#000000;fill-opacity:1;stroke:none"/><path d="m 172.90444,355.86196 0,-38.3858 0,38.3858 39.39595,0" id="path4248" style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:7.69999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/><rect width="89.90358" height="89.90358" rx="1.5" x="129.46788" y="311.41525" id="rect2985-43-209-7" style="opacity:0.97000002;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"/><rect width="89.90358" height="89.90358" rx="1.5" x="28.789351" y="13.925336" id="rect2985-43-209" style="opacity:0.97000002;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"/><path d="m 35.86042,20.491328 0,76.7716" id="path2987-3" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><path d="m 111.62186,22.511628 -75.76144,37.37565 m 36.870571,-18.18275 37.375649,55.55839" id="path2989-8" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><rect width="89.90358" height="89.90358" rx="1.5" x="230.14641" y="211.57852" id="rect2985-43-20" style="opacity:0.97000002;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"/><path d="m 231.03029,300.09314 86.74685,-87.25193" id="path3952-3" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/><path d="M 317.94551,300.05107 275.01403,255.60436" id="path3337" style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/></g><style type="text/css" id="style3859"/></svg><br />
<br />
- La première icône, c'est juste un K (pour KrISS) formé à l'aide d'un T (de Tontof). J'aime assez la forme, mais je ne vois pas trop comment je pourrais l'adapter pour différents outils.<br />
- La deuxième est un K qui forme la moitié d'un carré et qui permet d'inclure une autre icône, comme celle du RSS. En faisant la symétrie on peut écrire les initiales KF pour KrISS feed.<br />
- La troisième est identique à la deuxième avec une branche prolongée pour former en plus le T de Tontof. L'icône s'apparente au logo peace and love.<br />
- La quatrième est un K formé d'un demi-cercle et d'un demi carré.<br />
<br />
Voili voilou, j'ai fait ça vite fait pour vous donner une idée et savoir ce que vous en pensez. Je reste ouvert à toute proposition.<br />
<br />
<div id="certificatSSL"></div><br />
<span style="text-decoration: underline;"><strong>Les certificats SSL :</strong></span><br />
Certains d'entre vous ne peuvent pas ajouter certains flux https à cause de problème de certificats qui ne sont pas installés sur le serveur. Curl a une option pour ignorer ça, mais je ne pense pas que c'est une bonne idée de l'ajouter par défaut.<code><span style="color: #000000"><br />
<span style="color: #0000CC">&lt;?php&nbsp;curl_setopt</span><span style="color: #006600">(</span><span style="color: #0000CC">$ch</span><span style="color: #006600">,&nbsp;</span><span style="color: #0000CC">CURLOPT_SSL_VERIFYPEER</span><span style="color: #006600">,&nbsp;</span><span style="color: #0000CC">false</span><span style="color: #006600">);&nbsp;</span><span style="color: #0000CC">?&gt;</span><br />
</span><br />
</code>Une option, un plugin, tout est possible, qu'en pensez-vous ?<br />
<br />
<div id="attaquesXSS"></div><br />
<span style="text-decoration: underline;"><strong>Les attaques XSS :</strong></span><br />
Actuellement, il n'y a aucune modification du contenu d'un flux. Si ce dernier ajoute du code javascript, il sera exécuté. Je voulais savoir si vous aviez des idées pour limiter les risques. Je connais <a href="http://htmlpurifier.org">http://htmlpurifier.org</a> mais je cherche quelque chose de plus simple et léger. Des idées ?<br />
<br />
<div id="multilingue"></div><br />
<span style="text-decoration: underline;"><strong>KrISS feed en français :</strong></span><br />
Je vous ai dit que la version 8 serait multilingue, mais je voulais savoir si vous pensez que c'est plus intéressant d'avoir un fichier index par langue ? Toutes les langues disponibles dans le même fichier index ou l'ajout des langues grâce aux plugins ?<br />
<br />
Le débat est ouvert.
      


feed_id: http://tontof.net/index.php?2013/08/14/18/15/19-mes-petits-coups-de-gueule-de-l-ete
title: Mes petits coups de gueule de l'été
uri: Mes-petits-coups-de-gueule-de-l-été
url: http://tontof.net/index.php?2013/08/14/18/15/19-mes-petits-coups-de-gueule-de-l-ete
content:
          Il n'y a pas une réelle organisation dans cet article, juste quelques anecdotes !<br />
<br />
1 - Sur la route des vacances, j'ai cru que j'allais taper des gens. Je ne vais pas vous reparler des <a href="http://tontof.net/?2013/01/10/18/31/45-chauffard">classiques</a> qui m'énervent, mais de deux nouveautés qui m'ont surpris :<br />
- Le chauffard qui veut se la jouer cool en mettant son pied gauche en dehors de la vitre... (pour s'aérer le pied peut-être...). Je ne pense pas que sa voiture était sans pédale d'embrayage... Et puis même, j'avoue que là, j'imagine mal une manœuvre à réaliser en situation d'urgence...<br />
- Le chauffard qui entre sur l'autoroute et qui au lieu d'utiliser sa main pour mettre le clignotant et signaler qu'il va s'engager, attrape la poignée de son rétroviseur (une voiture pas toute récente) pour le dérégler afin de voir dans l'angle mort s'il peut se déporter... Euh, là je sais plus quoi dire... c'était même pas un torticolis, il m'a regardé quand je l'ai doublé un peu dépité... <br />
<br />
2 - Après <a href="http://www.my-beautyandco.fr/post/Carte-d-Or-met-sa-glace-en-pot-!">Carte d'or</a> qui avait sorti l'année passée une édition spéciale pâtisserie française, <a href="https://www.youtube.com/watch?v=ZR5m-ItTVyY">Magnum</a> à voulu faire de même cette année :<br />
- <quote>New Magnum 5 Kisses. A collection of 5 irresistible limited edition ice creams inspired by French patisserie. Make time for a kiss now!</quote><br />
La numéro 3 c'est : <a href="http://www.mymagnum.fr/article/5kisses/">PASSIONATE KISS TIRAMISU</a>. Hum le <a href="http://fr.wikipedia.org/wiki/tiramisu">tiramisu</a>, quelle délicieuse pâtisserie française... Cette pub m'énerve à chaque fois que je la vois dans les bandes annonces au ciné... pfff<br />
<br />
3 - Et pour finir, je voulais vous dire que oui je lèche mon assiette. Je ne comprends pas que ça choque des gens, c'est plutôt un compliment. Ça veut dire que j'apprécie, que c'était bon. En plus ça simplifie le lavage après, je n'y vois que des avantages. Je précise que c'est principalement pour les desserts car j'utilise sinon du pain. Mais s'il n'y a plus de pain, je peux très bien le faire pour l'entrée :-)<br />
<br />
Soleil
      


feed_id: http://tontof.net/index.php?2013/08/15/08/28/52-quelques-liens-inutiles-pour-passer-le-temps-44
title: Quelques liens inutiles pour passer le temps #44
uri: Quelques-liens-inutiles-pour-passer-le-temps-44
url: http://tontof.net/index.php?2013/08/15/08/28/52-quelques-liens-inutiles-pour-passer-le-temps-44
content:
          C'est le 15 août, vous avez du temps à perdre, ne me remerciez pas :-)<br />
<br />
1 - <a href="http://www.geogreeting.com/view.html?yDyxDypU975">http://www.geogreeting.com/view.html?yDyxDypU975</a><br />
via : <a href="http://www.howaboutorange.blogspot.fr/2008/04/hello-down-there.html">http://www.howaboutorange.blogspot.fr/2008/04/hello-down-there.html</a><br />
<br />
2 - <a href="http://www.kraftmaid.com/imagine/explore-your-style/style-quiz/">http://www.kraftmaid.com/imagine/explore-your-style/style-quiz/</a><br />
via : <a href="http://howaboutorange.blogspot.fr/2013/05/take-decorating-style-quiz.html">http://howaboutorange.blogspot.fr/2013/05/take-decorating-style-quiz.html</a><br />
<br />
You’re a firm believer in “less is more.” You see beauty in strong lines, symmetry and balance. You want a sleek, modern look that is both simple and sophisticated.<br />
<br />
Contemporary & Dynamic<br />
<br />
An understatedly elegant style, Contemporary & Dynamic features bold, straight lines and a clean, streamlined appearance so you can make a statement that is uniquely your own.<br />
<br />
3 - <a href="http://color.method.ac/">http://color.method.ac/</a><br />
9.4 avec un écran pas calibré et un touchpad qui merdouille un peu<br />
<br />
4 - <a href="http://woodgears.ca/eyeball/">http://woodgears.ca/eyeball/</a><br />
via : <a href="http://howaboutorange.blogspot.fr/2009/02/quiz-are-you-good-eyeballer.html">http://howaboutorange.blogspot.fr/2009/02/quiz-are-you-good-eyeballer.html</a><br />
<br />
 Your inaccuracy by category:<br />
			<br />
Parallelogram	2.2	4.1	3.0<br />
Midpoint	2.0	2.0	4.1<br />
Bisect angle	0.1	1.8	0.1<br />
Triangle center	7.8	3.0	3.9<br />
Circle center	4.2	4.5	5.0<br />
Right angle	1.2	4.1	0.7<br />
Convergence	3.6	3.2	2.2<br />
<br />
Average error:   2.99   (lower is better)<br />
Time taken:   188.3 <br />
<br />
5 - <a href="http://www.xrite.com/online-color-test-challenge">http://www.xrite.com/online-color-test-challenge</a><br />
Your score: 16<br />
C'était le 21 février 2010, j'ai pas refait.<br />
<br />
6 - <a href="http://www.geoguessr.com/">http://www.geoguessr.com/</a><br />
via : <a href="http://root.suumitsu.eu/links/?XngwEA">http://root.suumitsu.eu/links/?XngwEA</a><br />
<br />
C'est pas simple :<br />
<a href="http://url.geoguessr.com/40c9">http://url.geoguessr.com/40c9</a><br />
7284 points<br />
<a href="http://url.geoguessr.com/40cx">http://url.geoguessr.com/40cx</a><br />
10389 points<br />
<br />
7 - <a href="http://www.allgamesallfree.com/allgames/swf/3d-logic-2:-stronghold-of-sage-36.swf">http://www.allgamesallfree.com/allgames/swf/3d-logic-2:-stronghold-of-sage-36.swf</a><br />
À l'époque où on m'a fait découvrir ce jeu j'étais allé très loin.<br />
Là en 2 min 12 je me suis arrêté au 7e niveau<br />
<br />
8 - <a href="http://cache.armorgames.com/files/games/totem-destroyer-1871.swf">http://cache.armorgames.com/files/games/totem-destroyer-1871.swf</a><br />
via : <a href="http://www.prise2tete.fr/forum/viewtopic.php?id=1572">http://www.prise2tete.fr/forum/viewtopic.php?id=1572</a><br />
Pareil, c'est le genre de jeu qui fait perdre du temps<br />
<br />
9 - Petit test à la con pour savoir si vous êtes un cerveau gauche ou droit :<br />
<a href="http://www.mindmotivations.com/resources/free/rightleft-brain-test">http://www.mindmotivations.com/resources/free/rightleft-brain-test</a><br />
J'arrive assez facilement à la voir tourner dans les 2 sens, mais si vous n'y arrivez pas, voici ce qu'il faut voir :<br />
<a href="media/00ebafec.1237262681298.gif" data-original-source="http://www.monkeyreview.co.uk/wp-content/uploads/2009/04/1237262681298.gif">http://www.monkeyreview.co.uk/wp-content/uploads/2009/04/1237262681298.gif</a><br />
<br />
10 - <a href="http://www.illusions.org">http://www.illusions.org</a><br />
Y a un peu de tout, mais ça reste très connu.
      


feed_id: http://tontof.net/index.php?2013/08/16/08/42/10-le-prix-de-la-liberte
title: Le prix de la liberté
uri: Le-prix-de-la-liberté
url: http://tontof.net/index.php?2013/08/16/08/42/10-le-prix-de-la-liberte
content:
          <a href="http://lehollandaisvolant.net/index.php?mode=links&amp;id=20130716204312">Timo</a> a partagé cette <a href="http://imgur.com/gallery/YTDHtnp">image</a> que je trouve juste merveilleuse même si elle ne s'applique malheureusement pas seulement aux États-Unis (merci à toi).<br />
<br />
Entre temps, j'ai changé mon GNU/Linux.<br />
<br />
J'avais une debian <a href="http://wiki.debian.org/DebianReleases">stable</a> il y a 3, 4 ans avec quelques petits soucis audio, mais rien de catastrophique. En m'amusant avec stable, testing, unstable et experimental, j'avais un peu tout cassé. J'étais un peu pressé à l'époque et je n'avais pas envie de me reprendre la tête avec ce petit soucis audio. Je me suis (donc) retrouvé avec Ubuntu... (coucou <a href="http://bajazet.fr/shaarli/?scBSYA">Bajazet</a>)<br />
<br />
Ça marchait mais j'aimais de moins en moins Ubuntu, le passage à Unity, l'ajout d'Amazon, <a href="http://www.framablog.org/index.php/post/2012/12/08/stallman-ubuntu-espion">etc</a>. (<a href="http://bajazet.fr/shaarli/?cWQRwg">via</a>)<br />
<br />
Et puis il y a plus d'un mois, j'ai bidouillé un peu des répertoires importants et je me suis retrouvé avec l'impossibilité de me connecter à l'aide du serveur X. Un problème de droits que j'aurais sûrement pu corriger...<br />
<br />
C'est là que je me suis dit que c'était l'occasion de retourner enfin sur debian... Procrastination quand tu nous tiens...<br />
<br />
Je télécharge la <a href="http://www.debian.org/distrib/netinst">NetInstall</a> et c'est parti, je découvre le dernier gnome 3 et contrairement à tous les avis négatifs que j'avais lu, je suis plutôt agréablement surpris. J'étais un peu gêné par l'absence de raccourcis rapides pour l'ajout d'applications alors j'en ai profité pour tester un peu ce qui se fait en ce moment. J'ai ainsi testé Awesome, OpenBox, KDE, XFCE, et LXDE :<br />
<br />
- Awesome et OpenBox sont 2 gestionnaires de fenêtres qui me plaisent mais j'utilise mon GNU/Linux avec l'idée de le partager avec ma famille et mes amis. C'est donc sympa, mais le temps d'apprentissage est trop grand et ce n'est clairement pas pour monsieur et madame tout le monde :-)<br />
<br />
- Mon ordi n'est pas puissant alors si ça met un peu plus de 5 secondes à démarrer ça m'énerve assez vite. J'élimine donc assez rapidement KDE :-)<br />
<br />
- J'essaye enfin XFCE et LXDE qui sont vraiment légers, mais pour lesquels je trouve qu'il manque encore un peu ce côté sexy qui pourrait faire qu'ils plaisent à plus de monde.<br />
<br />
Je retourne donc sur gnome et installe <a href="http://wiki.go-docky.com">docky</a> (edit : <a href="http://glx-dock.org/">cairo-dock</a>, merci <a href="http://tontof.net/index.php?1376635330#9">@matttbe</a>) qui me manquait pour être satisfait. Debian est pour moi LA distribution GNU/Linux et ce n'est pas pour rien qu'elle sert de base à beaucoup d'autres. L'une des premières choses que font les gens après avoir installé Debian, c'est de changer /etc/apt/sources.list pour ajouter les sources non-free ou <a href="http://deb-multimedia.org">http://deb-multimedia.org</a> et installer par exemple le lecteur flash d'Adobe.<br />
<br />
Seulement voilà je ne l'ai pas fait. J'ai hésité parce que c'est vrai que c'est pratique pour plein de choses mais je me suis rappelé cette fameuse <a href="http://imgur.com/gallery/YTDHtnp">image</a> du début. Je ne suis pas un libriste extrémiste mais j'ai considéré à cet instant le fait d'installer le fameux flashplugin-nonfree comme le fait de scier un barreau à mon échelle.<br />
<br />
Alors oui, pour mon confort j'aurais pu le faire mais je voulais voir à l'usage ce que ça donnait. Je sais qu'il n'est malheureusement pas possible de faire accepter cette idée autour de moi car pour eux quand ça ne marche pas sur GNU/Linux c'est vite la faute de GNU/Linux.<br />
<br />
Entre temps quelqu'un de mon entourage m'a dit qu'elle n'arrivait plus à regarder les feux de l'amour en replay (aucun commentaire :-p). Pour faire des tests j'ai donc installé flash d'Adobe et j'ai effectivement remarqué que ça ne marchait pas. Je teste d'autres séries, pareil mais aucun problème avec secret story... TF1 conseille d'installer Google Chrome et même si je reste septique j'essaye. Grosse surprise ça fonctionne... Je regarde quelle version de flash il utilise et je découvre une version 11.8 (alors qu'Adobe a annoncé qu'il s'arrêterait à la 11.2). Je découvre alors que Chrome utilise la bibliothèque PepperFlash. Problème, elle n'est et ne sera pas compatible avec Firefox : <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=729481">https://bugzilla.mozilla.org/show_bug.cgi?id=729481</a><br />
<br />
Je suis très triste car même si flash est devenu moins intéressant avec l'arrivée d'html5, il reste le grand favori pour la diffusion de contenu bourré de DRM (<a href="http://sebsauvage.net/links/?b2ZQAw">tant que ceux-ci ne seront pas acceptés dans html</a>). Firefox était encore très apprécié par les utilisateurs de GNU/Linux mais monsieur et madame tout le monde qui privilégient le confort vont forcément se tourner vers Google Chrome qui lui fonctionne pour tout... Je ne conseillais que Firefox aux gens mais je suis maintenant triste de voir que je vais devoir proposer Google Chrome sous GNU/Linux pour qu'ils n'aient plus de problème...<br />
<br />
Mes tests sont finis, je continue d'utiliser <a href="http://gnashdev.org/">gnash</a> en attendant de passer à Google Chrome :'(<br />
<br />
Et vous combien de barreaux avez-vous sciés ?
      


feed_id: http://tontof.net/index.php?2013/08/31/12/12/02-une-nouvelle-bibliotheque-pour-gerer-les-flux-rss
title: Une nouvelle bibliothèque pour gérer les flux RSS
uri: Une-nouvelle-bibliothèque-pour-gérer-les-flux-RSS
url: http://tontof.net/index.php?2013/08/31/12/12/02-une-nouvelle-bibliotheque-pour-gerer-les-flux-rss
content:
          Comme vous l'avez sans doute remarqué, je n'ai pas trop donné de nouvelles sur la nouvelle version de KrISS feed. J'avais prévu un grand bouleversement du code pour le rendre encore plus flexible et chouette avant de sortir la version 8. La conséquence, c'est qu'il n'y a pas beaucoup de nouvelles fonctionnalités par rapport <a href="http://tontof.net/?2013/06/22/13/37/28-presque-nouvelle-version-de-kriss-feed">aux dernières nouvelles</a>. Avec les vacances, la rentrée et le boulot, je suis pas mal pris en ce moment et je ne pourrai donc pas sortir la version 8 telle que je l'avais imaginée. Je vais donc la sortir moins aboutie que ce j'avais prévu et je repousserai la mise à jour du code reformaté à la version 9. Je vais donc tout faire pour sortir cette version 8 mi-septembre !<br />
<br />
En attendant je voulais vous présenter certaines modifications plus ou moins récentes que j'ai intégrées pour converger vers un code encore plus chouette :-)<br />
<br />
<span style="text-decoration: underline;"><strong>Session.php</strong></span><br />
Tout d'abord j'ai légèrement modifié ma classe Session. Celle que je vous avais présentée lors de mon tout premier article : <a href="http://tontof.net/?2012/04/18/19/00/00-joyeux-anniversaire">http://tontof.net/?2012/04/18/19/00/00-joyeux-anniversaire</a><br />
J'ai viré le singleton que je trouvais inutile et ajouté un test pour le brute force basé sur les fonctions de Sebsauvage dans <a href="http://github.com/sebsauvage/shaarli">Shaarli</a>.<br />
Vous trouverez plus de détails sur la page dédiée : <a href="http://tontof.net/kriss/php5/session">http://tontof.net/kriss/php5/session</a><br />
<br />
<span style="text-decoration: underline;"><strong>Rss.php</strong></span><br />
Ensuite, je me suis dit que ce serait une bonne chose d'utiliser une bibliothèque dédiée pour les flux RSS. J'ai cherché du côté de <a href="http://www.milletmaxime.net/syndexport/">syndexport</a>, <a href="https://github.com/fguillot/picoFeed">picoFeed</a> et <a href="http://lastrss.oslab.net/">lastRss</a> (je n'ai pas considéré les poids lourds du style <a href="http://simplepie.org/">simplePie</a>) mais j'avais toujours des reproches : fait trop de choses à mon goût, utilise des dépendances pas nécessaires, ne gère pas tous les types de format comme rdf, n'est pas suffisamment paramétrable, <em>etc.</em><br />
<br />
Je tiens à signaler qu'il y a lastRss qui m'a beaucoup intéressé car il fonctionne avec PHP4 et ne nécessite même pas DOMDocument contrairement à tout ce qui existe. Le problème c'est que ça nécessitait trop de modifications pour que je l'intègre facilement à KrISS feed. En tout cas je le garde sous le coude parce que je pense que ça peut être une bonne chose pour éventuellement gérer les flux XML invalides. J'étudierai ça quand les plugins seront fonctionnels.<br />
<br />
Maintenant on peut compter sur une nouvelle alternative : <a href="http://tontof.net/kriss/php5/rss">http://tontof.net/kriss/php5/rss</a><br />
<br />
Elle ne fait rien d'autres que gérer des flux XML à l'aide de DOMDocument. Son but n'est pas de gérer le téléchargement d'un flux, la gestion du cache ou autres fantaisies. En gros, on a un flux RSS/atom sous forme de chaîne de caractères et on veut récupérer des infos sous la forme d'un tableau.<br />
<br />
Vous pouvez tester avec une petite démo ici : <a href="http://tontof.net/kriss/php5/rss/#demo">http://tontof.net/kriss/php5/rss/#demo</a><br />
<br />
Je suis assez content du résultat car je la trouve extrêmement fonctionnelle et flexible : <a href="http://tontof.net/kriss/php5/rss/#options">http://tontof.net/kriss/php5/rss/#options</a><br />
<br />
Elle permet des choses que je n'utilise pas encore dans KrISS feed comme vous pouvez le voir sur la démo avancée : <a href="http://tontof.net/kriss/php5/rss/#advanced-demo">http://tontof.net/kriss/php5/rss/#advanced-demo</a><br />
<br />
<span style="text-decoration: underline;"><strong>KrISS php5</strong></span><br />
Pour regrouper tout ça, j'ai donc créer <a href="https://github.com/tontof/kriss_php5">KrISS php5</a> qui contiendra plein de choses utiles en PHP pour mes différents projets présents et à venir !<br />
<br />
KrISS php5 ne contient que des classes statiques sans vraiment de dépendance. En ce moment je travaille beaucoup avec Symfony et l'injection de dépendances est quelque chose que je trouve vraiment chouette. Je n'arrive pas à savoir si c'est une bonne chose de faire comme je fais avec mes classes statiques mais pour des projets comme les miens (KrISS feed, blog, etc.), l'avantage de l'injection de dépendances reste relativement limité même si elle permettrait d'avoir un code encore plus propre et flexible. En fait, le côté statique est sensé être plus efficace (en pratique, ça dépend de la version de php mais la tendance est à l'amélioration au cours du temps). Mais en gros est-ce que vous pensez que l'injection de dépendances c'est KISS :-)<br />
Si des spécialistes PHP ont des conseils/suggestions, je suis tout ouïe !<br />
<br />
En attendant encore un peu de patience pour la version 8, mais elle arrive !
      


feed_id: http://tontof.net/index.php?2013/09/09/20/30/28-enfin-la-version-8
title: Enfin la version 8
uri: Enfin-la-version-8
url: http://tontof.net/index.php?2013/09/09/20/30/28-enfin-la-version-8
content:
          Edit : La gestion des sessions est modifiée et il vous faudra supprimer vos cookies pour pouvoir vous reconnecter. Voici un petit <a href="http://marklets.com/Delete%20cookies.aspx">bookmarklet</a> pour ça. J'ai mis à jour la version 8 ce matin pour corriger une petite erreur dans la classe Rss.<br />
<br />
Ce n'est pas sans plaisir que je vous présente la <a href="https://github.com/tontof/kriss_feed/raw/master/index.php">version 8</a> qui a bien failli être encore retardée. Merci <a href="https://github.com/Nodd">Nodd</a> pour tes retours et ta réactivité :-)<br />
<br />
Comme à chaque mise à jour, pensez à faire des sauvegardes, mais tout devrait bien se passer ^^<br />
<br />
J'ai essayé de créer un truc sur launchpad, mais ça n'a pas marché comme je voulais, du coup pour les traductions en ligne il faudra attendre, sinon, vous pouvez utiliser <a href="http://www.poedit.net/">poedit</a>.<br />
<br />
Parmi les dernières nouveautés, j'ai fait un truc qui exporte automatiquement 1 fois par jour votre opml dans le dossier data. En cas de problème vous aurez toujours un opml sous la main :-)<br />
J'ai créé une issue spécifique pour les problèmes liés à unserialized : <a href="https://github.com/tontof/kriss_feed/issues/268">https://github.com/tontof/kriss_feed/issues/268</a><br />
Je ne pense pas que ce soit lié à KrISS feed mais à PHP et je vais donc essayer de centraliser les infos pour qu'on trouve enfin d'où vient ce problème qui semble de plus en plus rare ?<br />
<br />
Avec les erreurs explicites, vous devriez souvent voir que les erreurs sont liées au timeout que j'ai fixé à 4 secondes et qui semble trop court pour beaucoup d'entre vous. En créant un dossier plugins à côté du fichier index.php et en mettant un fichier timeout.php avec ça :<br />
<br />
&lt;?php<br />
MyTool::$opts['http']['timeout'] = '10';<br />
<br />
vous devriez pouvoir personnaliser le timeout (ici 10 secondes).<br />
<br />
C'est temporaire, à terme, il y aura un vrai plugin pour ça avec un menu et tout de bien. Mais en attendant, ça vous permet de corriger ce problème. Je précise qu'il n'est malheureusement pas possible de spécifier un timeout pour un flux particulier :-) (pour le moment...)<br />
<br />
J'ai ajouté un petit script qui permet de lire le fichier data.php : <a href="https://github.com/tontof/kriss_feed/blob/master/src/bin/readData.php">https://github.com/tontof/kriss_feed/blob/master/src/bin/readData.php</a><br />
<br />
<a href="http://www.mbaerts.be/">Matttbe</a> a ajouté un petit résumé bien sympathique à la fin d'une mise à jour manuelle.<br />
<br />
Bon je vous laisse découvrir cette nouvelle version et j'espère à très vite pour la version 9 ^^
      


feed_id: http://tontof.net/index.php?2013/09/12/18/15/11-licence-de-kriss-feed
title: Licence de KrISS feed ?
uri: Licence-de-KrISS-feed
url: http://tontof.net/index.php?2013/09/12/18/15/11-licence-de-kriss-feed
content:
          J'ai modifié les infos dans la licence de <a href="https://github.com/tontof/kriss_feed#licence">KrISS feed</a> suite à une remarque qu'on m'a fait sur un article de <a href="https://linuxfr.org/news/flux-rss-atom-et-logiciels-libres">LinuxFr</a> parlant des flux RSS / Atom et logiciels libres et où la question de la licence de KrISS feed se posait : <a href="https://linuxfr.org/news/flux-rss-atom-et-logiciels-libres#comment-1477251">« licence incertaine »</a>.<br />
<br />
Chacun a sa définition du <a href="http://fr.wikipedia.org/wiki/Principe_KISS">Principe_KISS</a> et c'est un peu la même chose avec le <a href="http://fr.wikipedia.org/wiki/Logiciel_libre">Logiciel_libre</a>. Je partage mes codes pour <a href="http://www.youtube.com/watch?v=QxOSQvrr2E8">un monde meilleur</a> avec un simple <a href="https://www.gnu.org/copyleft/">copyleft (ɔ)</a> : le copyleft est un concept qui pour avoir une valeur juridique nécessite un copyright... Quel copyright ? Pourquoi le copyleft ne serait-il qu'un concept ?<br />
<br />
Choisir une licence ? Pourquoi ? Vous croyez que ça protège de quelque chose ? Vous croyez que ça empêche les gens malhonnêtes de faire des choses malhonnêtes ? Je ne compte plus les histoires dégueulasses que je lis sur des choses magnifiques qui ont été détournées par des gens malhonnêtes alors même que leurs créateurs étaient catégoriquement contre. Si ce n'était qu'une question de licence...<br />
<br />
<a href="http://tontof.net/index.php?2013/03/18/13/11/24-retours-sur-kriss-feed#licence">J'en avais déjà parlé</a> mais une petite piqûre de rappel ne fait pas de mal :<br />
- <a href="http://sebsauvage.net/hall.html">http://sebsauvage.net/hall.html</a><br />
- <a href="http://www.blender.org/blenderorg/blender-foundation/press/re-branding-blender">http://www.blender.org/blenderorg/blender-foundation/press/re-branding-blender</a> (<a href="http://sebsauvage.net/links/?Fm9pBw">via</a>)<br />
- <a href="https://bajazet.fr/shaarli/?9Fkstw">https://bajazet.fr/shaarli/?9Fkstw</a><br />
<br />
Donc voilà, moi je suis pour les 4 libertés. « Est-ce que ça vaut bien la peine » que KrISS feed et mes autres projets KrISS aient une licence explicite ?<br />
<br />
KrISS feed est-il libre ? C'est à vous de voir, moi je sais déjà...
      


feed_id: http://tontof.net/index.php?2013/09/13/19/27/12-kriss-dl-devient-kriss-dwld
title: KrISS dl devient KrISS dwld
uri: KrISS-dl-devient-KrISS-dwld
url: http://tontof.net/index.php?2013/09/13/19/27/12-kriss-dl-devient-kriss-dwld
content:
          Edit 2013-09-14 : <a href="http://tontof.net/?2013/09/14/13/46/36-kriss-dwld-version-2">Version 2</a> en pure javascript !<br />
<br />
<a href="http://tontof.net/kriss/dwld">Click here for the english version</a> : oui le succès me monte à la tête depuis l'article sur <a href="http://www.webupd8.org/2013/09/kriss-feed-is-simple-fast-feed-reader.html">webupd8</a> :-p<br />
<br />
Il y a quelques temps, je vous avais présenté <a href="http://tontof.net/?2013/01/04/18/43/12-telecharger-une-video-youtube-ou-autre-sur-le-net">KrISS dl</a>, un petit bookmarklet pour télécharger avec uniquement du javascript les vidéos sur Youtube. Il fonctionnait très bien jusqu'à maintenant. On dit que toutes les bonnes choses ont une fin alors je vous annonce officiellement la fin de KrISS dl...<br />
<br />
Bon en fait, ça faisait un petit moment que je l'avais déjà renommé en KrISS_vidz. Je vais essayer de nommer mes projets KrISS_1234. Ça ne sert à rien, mais ça me fait plaisir :-)<br />
Et puis on m'a dit que c'était pas terrible comme nom, surtout que dans l'absolu ce n'est pas limité aux vidéos. Du coup je vais vous présenter KrISS dwld !<br />
<br />
Il y a quelques temps <a href="http://lehollandaisvolant.net/index.php?mode=links&amp;id=20130903160317">Timo</a> partage une info sur des problèmes rencontrés avec Youtube qui aurait changé des trucs et que du coup mon bookmarklet ne devait plus marcher... Je ne l'utilise pas si souvent, je me dépêche de tester et ouf, il fonctionne encore. Je m'en vais donc vite envoyer un mail à Timo pour l'accuser de diffamation :-p<br />
<br />
Sauf que Mitsu, après lui avoir fait une proposition pour son truc de <a href="http://root.suumitsu.eu/links/?oDY7aw">gestion de parc informatique</a>, me répond qu'en plus de ma proposition pourrie, KrISS dl fait de la merde (je paraphrase mais c'est l'idée :-p)<br />
<br />
Bon je teste à nouveau avec une vidéo classique ça marche puis une seconde V€V0 et paf ils avaient raison tous les 2, mon KrISS dl ne marche plus.<br />
<br />
Je prends mon courage (<a href="http://tontof.net/?2013/01/25/18/32/57-mon-emacs-a-moi">emacs</a>) à 2 mains et paf je détecte vite fait bien fait les changements (une signature ajoutée à l'url qui est modifiée). Pif ! paf ! pouf ! je corrige mais ça ne marche toujours pas :-(<br />
<br />
Je pleure en leur répondant que c'est la merde...<br />
<br />
Sauf que ça c'était avant KrISS dwld.<br />
<br />
J'ai donc une bonne et plusieurs mauvaises nouvelles. La bonne c'est que ça remarche pour le moment. La première mauvaise nouvelle c'est que javascript ne suffit plus. Finit donc l'indépendance apporté par javascript. La seconde c'est que ça peut ne pas durer bien longtemps. <br />
<br />
Heureusement, les mauvaises nouvelles sont à nuancer. L'indépendance apportée par javascript peut se transposer à l'auto-hébergement. Mon bookmarklet sera sans prise de tête mais les gens devront faire confiance à tontof.net quand ils l'utiliseront, ceux qui veulent conserver au maximum leur indépendance pourront simplement s'auto-heberger avec quelques modifications parce que comme d'habitude tout est dispo sur <a href="https://github.com/tontof/kriss_dwld">github</a>. L'autre problème c'est que ça peut ne pas durer longtemps pour Youtube car pour trouver la signature, il faut faire appel à un code qui n'est pas sur youtube mais sur ytimg.com, (d'où l'impossibilité de tout faire avec uniquement du javascript), et qu'il suffit de vérifier que l'appel au fichier ne se fait pas avec la même IP pour bloquer l'usage du bookmarklet. Ne vous inquiétez pas il y aura toujours d'autres solutions, mais elles ne seront pas aussi simples qu'avec KrISS dwld :-)<br />
<br />
Sinon comme nous sommes vendredi 13, j'ai d'autres bonnes nouvelles, maintenant KrISS dwld fonctionne avec Dailymotion, Vimeo, Veoh et je n'ai pas tout tester, tout ça grâce à <a href="http://isebaro.com/savetube/">SaveTube</a>. <a href="http://tontof.net/?2013/08/16/08/42/10-le-prix-de-la-liberte">Je vous ai dit</a> que je n'utilisais plus flash mais gnash. Comme la plupart des sites vidéos ne fonctionnent pas avec gnash et ben je me débrouille autrement quand j'ai vraiment envie de voir la vidéo :-)<br />
<br />
J'ai fait tout ça rapidement et ça semble bien marcher. Quand ça ne marchera plus, il existera toujours des solutions plus compliquées (bien sûr tout ceci est relatif) à mettre en place comme <a href="http://rg3.github.io/youtube-dl/">youtube-dl</a> ou des scripts <a href="http://userscripts.org">Grease Monkey</a>. En fait, je n'ai que très peu de mérite, je n'apporte pas grand chose si ce n'est le côté KISS de l'accès à ce que d'autres personnes font. J'évite au maximum l'installation d'extensions qui ralentissent mon ordinateur (du style Grease Monkey) et l'installation de programmes qui doivent être installés sur chaque machine (du style youtube-dl). Les bookmarklets avec Firefox Sync sont juste parfaits pour mon usage et pour la simplicité d'accès. Bon je suppose que c'est pour avoir ce bookmarklet que vous avez lu jusqu'à la fin, alors le voici :<br />
<br />
<div style="text-align:center"><a href="javascript:(function(){var e=document.createElement('script');e.src='//tontof.net/kriss/dwld/script.js';document.body.appendChild(e);})()">KrISS dwld</a></div><br />
<br />
J'ai trouvé une autre alternative :<br />
- <a href="http://keepvid.com/">http://keepvid.com/</a> (nécessite java à partir de leur site mais a priori pas avec leur bookmarklet)<br />
<br />
Je n'ai pas eu le temps de regarder comment fonctionnait en détails keepvid, mais il y a peut-être une autre solution pour télécharger les vidéos V€V0 en utilisant uniquement javascript. Je n'ai pas encore trouvé, mais peut-être qu'avec www.youtube.com/get_video_info on doit pouvoir se débrouiller.<br />
<br />
À suivre...
      


feed_id: http://tontof.net/index.php?2013/09/14/13/46/36-kriss-dwld-version-2
title: KrISS dwld version 2
uri: KrISS-dwld-version-2
url: http://tontof.net/index.php?2013/09/14/13/46/36-kriss-dwld-version-2
content:
          Victoire \o/<br />
<br />
Grâce à <a href="http://gilles.wittezaele.fr/blog/">Gilles</a>, vous pouvez conserver votre indépendance de tout service extérieur pour télécharger les vidéos de Youtube !!!<br />
Il m'a parlé d'une autre alternative <a href="http://deturl.com">http://deturl.com</a> et en étudiant le code, j'ai pu extraire le minimum pour corriger l'ancien KrISS dl. Du coup plus besoin de service extérieur !<br />
<br />
Vous pouvez donc utiliser le bookmarklet général pour être tout le temps à jour mais qui se sert de tontof.net :<br />
- <a href="http://tontof.net/kriss/dwld/#KrISS_dwld">http://tontof.net/kriss/dwld/#KrISS_dwld</a><br />
ou le bookmarklet spécifique à Youtube qui ne dépend de rien mais qui ne se mettra pas à jour automatiquement :<br />
- <a href="http://tontof.net/kriss/dwld/#youtube">http://tontof.net/kriss/dwld/#youtube</a><br />
<br />
Et ça fonctionne avec http et https !<br />
Pour https, il vous faudra au préalable activer le certificat sur <a href="https://tontof.net">https://tontof.net</a> avec le bookmarklet général.<br />
Pour l'autre, ça fonctionne directement.<br />
<br />
Ça méritait bien une version 2 :-)<br />
<br />
Merci Gilles !
      


feed_id: http://tontof.net/index.php?2013/10/05/12/55/15-help-kriss-feed-translations
title: Help KrISS feed translations ?
uri: Help-KrISS-feed-translations
url: http://tontof.net/index.php?2013/10/05/12/55/15-help-kriss-feed-translations
content:
          <a href="https://translations.launchpad.net/krissfeed">https://translations.launchpad.net/krissfeed</a><br />
<br />
C'est enfin possible de traduire KrISS feed avec LaunchPad. Je n'y serai jamais arrivé sans l'aide de <a href="http://www.mbaerts.be/">Matttbe</a>, merci bien. Bon je ne suis pas fan de cette solution et je me perds un peu dans launchpad, mais comme je n'ai malheureusement pas trouvé d'alternatives chouettes en PHP du style (<a href="http://weblate.org">Weblate</a> ou <a href="https://github.com/mbi/django-rosetta">Rosetta</a>), j'ai choisi la solution de facilité même si cela n'a pas été aussi simple que ce que je pensais...<br />
<br />
Maintenant c'est à vous de jouer, heu de traduire ^^
      


feed_id: http://tontof.net/index.php?2013/10/24/16/30/10-mais-pourquoi-sont-ils-aussi-mechants
title: Mais pourquoi sont-ils aussi méchants ????
uri: Mais-pourquoi-sont-ils-aussi-méchants
url: http://tontof.net/index.php?2013/10/24/16/30/10-mais-pourquoi-sont-ils-aussi-mechants
content:
          <h3>Micro$oft</h3><br />
J'ai banni Micro$oft de mes usages personnels depuis bien longtemps. Il m'arrive malheureusement de devoir encadrer des travaux pratiques de bureautique avec le terrible pack office de M$ (Je n'ai pas le choix sinon je peux vous garantir que je privilégierais <a href="https://www.libreoffice.org/">libreoffice</a>). Je ne l'avais pas fait depuis plusieurs années et ce retour n'a fait que confirmer <a href="https://fr.wikipedia.org/wiki/Embrace,_extend_and_extinguish">mon dégoût des outils Micro$oft</a> (<a href="http://sebsauvage.net/links/?QkeFhw">via</a>).<br />
<br />
Après avoir fait un joli document Word, mes étudiants en Biologie devaient exporter leurs créations au format HTML. Certains m'appellent car le résultat n'est pas celui qu'ils attendaient. En effet, je constate que leur mise en page personnalisée, grâce à M$ Word, est complètement foutue sous Firefox. Je demande aux étudiants d'essayer d'ouvrir leur fichier HTML avec IE et là magie, c'est tout beau (tout est relatif, ça reste un document Word...). Non mais franchement c'est pas du foutage de gueule ?<br />
<br />
Je profite de cet exemple pour rappeler aux étudiants les principes de l'interopérabilité : les standards, tout ça ; j'ai parlé un peu dans le vide, mais au moins j'ai dit ce qu'il me semblait important. L'année prochaine, je pense que je préciserai que je ne veux plus encadrer ce genre de TP parce que je refuse de cautionner l'intégration de M$ dans les cursus universitaires.<br />
<br />
<h3>HP</h3><br />
Il m'arrive aussi parfois de dépanner des personnes qui ont des problèmes avec Windows. Je préfère les convertir à Linux, mais à 91 ans, je ne pense pas que ce soit une bonne idée de changer de système d'exploitation.<br />
<br />
J'allume l'ordi et j'ai une jolie erreur sur le fichier lpk.dll. Je cherche vite fait sur le net, j'essaye de faire 2, 3 trucs et paf un <a href="https://en.wikipedia.org/wiki/Blue_Screen_of_Death">BSOD</a> (ça faisait longtemps que je ne l'avais pas vu celui là...). Je n'étais pas très bien outillé alors, pour vérifier l'état hardware de l'ordi, je fais confiance aux outils HP installés sur une partition du disque dur de la machine. GROSSE ERREUR !!! Comme tout était en vert (proc, RAM, etc.), je ne me suis pas méfié et j'ai cherché pendant un bon moment pour rien. J'ai abandonné en confisquant l'ordinateur pour faire un petit test au chaud avec mes outils classiques. Je mets un petit CD avec différents outils et je lance <a href="http://www.memtest.org/">Memtest</a>. Moins d'une minute après, je trouve qu'une des 2 barrettes de mémoire est morte.<br />
<br />
Non mais franchement, les outils HP je les connaissais omniprésents, imposants et inutiles, mais je pensais qu'ils fonctionnaient un minimum. Je serais curieux de voir le test réalisé par leur outil pour que ça prenne autant de temps sans rien trouvé... sleep(rand()) ???<br />
<br />
<h3>YouTube</h3><br />
Je vous avais dit que depuis un petit moment je n'utilisais plus flash mais son équivalent libre gnash qui malheureusement est bien souvent inutile.<br />
<br />
Il fonctionnait très bien avec Youtube sauf que depuis quelques temps, ce n'est plus le cas ! C'est quoi ce bordel ?<br />
<br />
Heureusement, j'ai <a href="http://tontof.net/kriss/dwld/">KrISS dwld</a> et si ça continue, je vais même peut-être bientôt virer gnash parce que comme ça je pourrais dire que mon ordi fonctionne comme un iphone... (les gens sont beaucoup plus compréhensifs quand ça vient d'une pomme empoisonnée)<br />
<br />
Bon par contre, j'ai déjà dû changer le code de KrISS dwld pour l'adapter car Youtube semble modifier son algo de signature régulièrement (si vous utilisez la version indépendante, pensez à mettre à jour quand ça ne marche plus). Mais du coup, quand j'aurai un peu de temps libre, j'essaierai de le faire évoluer parce que j'ai plein d'idées pour faciliter mon expérience utilisateur sur le web :-)<br />
<br />
En plus je vois que ça sert à d'autres, du coup c'est chouette :<br />
<a href="http://orangina-rouge.org/shaarli/?AsLypQ">http://orangina-rouge.org/shaarli/?AsLypQ</a><br />
<br />
<h3>Google</h3><br />
Vous utilisez ghostery, adblock, vous avez configuré votre moteur de recherche avec duckduckgo ainsi que la barre d'adresse... vous vous croyez à l'abri ??<br />
Faîtes un petit about:config et faîtes une petite recherche google.<br />
<br />
browser.safebrowsing.keyURL<br />
<a href="https://sb-ssl.google.com/safebrowsing/newkey?client=SAFEBROWSING_ID&amp;appver=%VERSION%&amp;pver=2.2">https://sb-ssl.google.com/safebrowsing/newkey?client=SAFEBROWSING_ID&amp;appver=%VERSION%&amp;pver=2.2</a><br />
<br />
Oh purée, je n'avais pas pensé à ça, mais chaque URL que vous visitez est testée pour savoir si elle comporte des risques et bien sûr il ne faut pas oublier de remercier Google pour ça !<br />
<br />
Je n'ai pas trop cherché comment tout ça fonctionnait mais client=SAFEBROWSING_ID serait un identifiant unique permettant de nous identifier que je ne serais même pas surpris...<br />
<br />
Je ne suis pas le seul à m'être fait cette réflexion on dirait : <a href="http://root.suumitsu.eu/links/?jFpKJA">http://root.suumitsu.eu/links/?jFpKJA</a>
      


feed_id: http://tontof.net/index.php?2013/10/26/18/16/15-quelques-liens-inutiles-pour-passer-le-temps-45
title: Quelques liens inutiles pour passer le temps #45
uri: Quelques-liens-inutiles-pour-passer-le-temps-45
url: http://tontof.net/index.php?2013/10/26/18/16/15-quelques-liens-inutiles-pour-passer-le-temps-45
content:
          1 - Jeu : Saurez-vous reconnaître à quelle langue appartiennent les extraits ? Quand ça arrive à 4 langues, ça commence à être dur...<br />
<a href="http://greatlanguagegame.com">http://greatlanguagegame.com</a><br />
via : <a href="http://www.2m3.net/index.php?page=lire&amp;id=9419">http://www.2m3.net/index.php?page=lire&amp;id=9419</a><br />
<br />
2 - La cigarette dans les publicités, ce ne sont pas les idées qui manquent !<br />
<a href="http://www.vivelapub.fr/la-metaphore-de-la-cigarette-en-25-pubs/">http://www.vivelapub.fr/la-metaphore-de-la-cigarette-en-25-pubs/</a><br />
<br />
3 - J'aime bien ce genre d'approche :<br />
<a href="http://www.youtube.com/embed/GTH8hqJbCxw">http://www.youtube.com/embed/GTH8hqJbCxw</a><br />
via : <a href="http://www.koreus.com/video/oui-marketing-magazine.html">http://www.koreus.com/video/oui-marketing-magazine.html</a><br />
<br />
4 - Vous essayez tant bien que mal de faire le bruit du coucou en serrant vos 2 mains et en soufflant dedans ? Laissez tomber :-p<br />
Bonus, à la fin, apprenez à faire le bruit des oiseaux avec un seul doigt !<br />
<a href="http://www.youtube.com/embed/QiIj2gDzaNI">http://www.youtube.com/embed/QiIj2gDzaNI</a><br />
via : <a href="http://www.koreus.com/video/mitsuhiro-mori-flute-main.html">http://www.koreus.com/video/mitsuhiro-mori-flute-main.html</a><br />
<br />
5 - C'est tellement facile de mettre des étiquettes sur les gens, et pourtant :<br />
<a href="media/61eba6a7.NWuspql.jpg" data-original-source="http://i.imgur.com/NWuspql.jpg">http://i.imgur.com/NWuspql.jpg</a><br />
via : <a href="http://sebsauvage.net/links/?FwVf8w">http://sebsauvage.net/links/?FwVf8w</a> <br />
<br />
6 - Une solution si vous avez dû mal à vous lever les matins<br />
<a href="http://www.youtube.com/embed/0G4j1pNAA40">http://www.youtube.com/embed/0G4j1pNAA40</a><br />
via : <a href="http://www.koreus.com/video/reveil-dechiqueteur-billet.html">http://www.koreus.com/video/reveil-dechiqueteur-billet.html</a><br />
Pourtant nous sommes tous d'accord avec ça :<br />
<a href="https://i.chzbgr.com/maxW500/7862022144/h5B788180/">https://i.chzbgr.com/maxW500/7862022144/h5B788180/</a><br />
via : <a href="http://cheezburger.com/7862022144">http://cheezburger.com/7862022144</a><br />
<br />
7 - Je ne sais pas si c'est leur tête, mais cette blague avec le titre, Nerd vandalism, me fait beaucoup rire<br />
<a href="https://i.chzbgr.com/maxW500/7761012736/hF5CC82BE/">https://i.chzbgr.com/maxW500/7761012736/hF5CC82BE/</a><br />
via : <a href="http://cheezburger.com/7761012736">http://cheezburger.com/7761012736</a><br />
<br />
8 - C'est plus trop la saison, mais ça peut donner des idées pour l'année prochaine<br />
<a href="https://i.chzbgr.com/maxW500/7761831680/hA50B4BD2/">https://i.chzbgr.com/maxW500/7761831680/hA50B4BD2/</a><br />
via : <a href="http://cheezburger.com/7761831680">http://cheezburger.com/7761831680</a><br />
<br />
9 - Smiley<br />
<a href="http://root.suumitsu.eu/smile/">http://root.suumitsu.eu/smile/</a><br />
via : <a href="http://root.suumitsu.eu/links/?jwKGJg">http://root.suumitsu.eu/links/?jwKGJg</a><br />
Et si ça vous dit, amusez-vous avec <a href="http://sebsauvage.net/files/unicode_fun.html">http://sebsauvage.net/files/unicode_fun.html</a><br />
via : <a href="http://sebsauvage.net/links/?rYiNug">http://sebsauvage.net/links/?rYiNug</a><br />
Un bon test pour voir si vous pouvez lire l'unicode :-)<br />
<br />
10 - Faudrait savoir ?!<br />
<a href="https://i.chzbgr.com/maxW500/7825347328/h55CC3F17/">https://i.chzbgr.com/maxW500/7825347328/h55CC3F17/</a><br />
via : <a href="http://cheezburger.com/7825347328">http://cheezburger.com/7825347328</a><br />

      


feed_id: http://tontof.net/index.php?2013/11/05/11/59/24-quelques-liens-inutiles-pour-passer-le-temps-46
title: Quelques liens inutiles pour passer le temps #46
uri: Quelques-liens-inutiles-pour-passer-le-temps-46
url: http://tontof.net/index.php?2013/11/05/11/59/24-quelques-liens-inutiles-pour-passer-le-temps-46
content:
          Une petite série de life hack:<br />
1 - 2 bols dans un micro-onde, c'est possible :<br />
<a href="https://i.chzbgr.com/maxW500/7668413952/h31C1E4E0/">https://i.chzbgr.com/maxW500/7668413952/h31C1E4E0/</a> (<a href="http://cheezburger.com/7668413952">via</a>)<br />
2 - Des lits superposés, 2 cintres et il ne manque que les films en <a href="https://fr.wikipedia.org/wiki/Imax">Imax</a>...<br />
<a href="https://i.chzbgr.com/maxW500/7667283200/h3593C0C6/">https://i.chzbgr.com/maxW500/7667283200/h3593C0C6/</a> (<a href="http://cheezburger.com/7667283200">via</a>)<br />
3 - Comment ça c'est pas vraiment un life hack ?<br />
<a href="http://design-milk.com/sweeper-and-dustpan-by-jan-kochanski/">http://design-milk.com/sweeper-and-dustpan-by-jan-kochanski/</a><br />
Vous pouvez faire la même chose en moins design :<br />
<a href="media/bcc20a75.zhezhaobucuoo.jpg" data-original-source="http://img.gaoxiaoo.com/uploads2/zhezhaobucuoo.jpg">http://img.gaoxiaoo.com/uploads2/zhezhaobucuoo.jpg</a><br />
4 - Utile pour les chinoises quand il y a de la <a href="media/cb9c85ae.RkzrN68.jpg" data-original-source="http://i.imgur.com/RkzrN68.jpg">pollution</a> (<a href="http://sebsauvage.net/links/?bVzhhg">via</a>) :<br />
<a href="https://i.chzbgr.com/maxW500/7813220864/h2D0637EF/">https://i.chzbgr.com/maxW500/7813220864/h2D0637EF/</a> (<a href="http://cheezburger.com/7813220864">via</a>)<br />
5 - Fallait juste y penser mais un moule, c'est parfois autoreverse !<br />
<a href="media/99e5ec6a.tumblr_lsax5tOtFx1r3al53o1_400.jpg" data-original-source="http://25.media.tumblr.com/tumblr_lsax5tOtFx1r3al53o1_400.jpg">http://25.media.tumblr.com/tumblr_lsax5tOtFx1r3al53o1_400.jpg</a> (<a href="http://craftovision.tumblr.com/post/10859319477/hello-amazing">via</a>)<br />
6 - Si le 2e couplet de la chanson « <a href="http://www.youtube.com/watch?v=lw21NLY0Czw">LeS peTiTs secReTs </a> » de <a href="http://tontof.net/?2012/12/21/21/12/00-la-fin-du-monde-avec-giedre-en-tete">GiedRé</a> vous a traumatisé, j'ai LA solution :<br />
<a href="https://i.chzbgr.com/maxW500/7582077696/h120E3E01/">https://i.chzbgr.com/maxW500/7582077696/h120E3E01/</a> (<a href="http://cheezburger.com/7582077696">via</a>)<br />
7 - Vous connaissez tous la technique pour <a href="media/db18e858.comment-facilement-plier-un-t-shirt-en-deux-secondes.gif" data-original-source="http://www.elephantrank.com/images/comment-facilement-plier-un-t-shirt-en-deux-secondes.gif">plier les T-shirts</a> ? En voici une autre :<br />
<a href="http://snapguide.com/guides/fold-a-shirt-military-style-save-space-and-room/">http://snapguide.com/guides/fold-a-shirt-military-style-save-space-and-room/</a><br />
8 - Comment connaître le niveau d'une bouteille de gaz :<br />
<a href="media/75d660a8.DSC00407.JPG" data-original-source="https://lh3.ggpht.com/-dSV_Bvq8n_w/UU5lhSjbVDI/AAAAAAAAeE0/rlOrUbV_4w8/s640/DSC00407.JPG">https://lh3.ggpht.com/-dSV_Bvq8n_w/UU5lhSjbVDI/AAAAAAAAeE0/rlOrUbV_4w8/s640/DSC00407.JPG</a> (<a href="http://orangina-rouge.org/shaarli/?OqOQ4g">via</a>)<br />
9 - C'est chiant à manger les cupcake, mais ça c'était avant :<br />
<a href="https://i.chzbgr.com/maxW500/7866799872/hE6C00DF5/">https://i.chzbgr.com/maxW500/7866799872/hE6C00DF5/</a> (<a href="http://cheezburger.com/7866799872">via</a>)<br />
10 - Pour lire un livre plus facilement :<br />
<a href="media/137016bc.reading.jpg" data-original-source="https://lh5.googleusercontent.com/-2buzfmwZYAw/UmqKZ4z38wI/AAAAAAAAHxc/lOVAYWMIwYY/w426-h338/reading.jpg">https://lh5.googleusercontent.com/-2buzfmwZYAw/UmqKZ4z38wI/AAAAAAAAHxc/lOVAYWMIwYY/w426-h338/reading.jpg</a> (<a href="http://lehollandaisvolant.net/index.php?mode=links&amp;id=20131025185350">via</a>)<br />
<br />
J'ai essayé de sélectionner des choses un peu différentes des trucs classiques :<br />
- <a href="http://korben.info/life-hacks.html">http://korben.info/life-hacks.html</a><br />
- <a href="http://www.boredpanda.com/life-hacks/">http://www.boredpanda.com/life-hacks/</a><br />
- <a href="http://www.topito.com/top-trucs-astuces-simplifier-la-vie-maison">http://www.topito.com/top-trucs-astuces-simplifier-la-vie-maison</a><br />
Ou des <a href="http://fr.wikipedia.org/wiki/Chindogu">Chindogu</a><br />
- <a href="http://choualbox.com/jOlMU">http://choualbox.com/jOlMU</a> (<a href="http://lehollandaisvolant.net/index.php?mode=links&amp;id=20130624154602">via</a>)<br />

      


feed_id: http://tontof.net/index.php?2013/11/14/18/28/04-kriss-feed-integre-raintpl-enfin-presque
title: KrISS feed intègre RainTPL, enfin presque
uri: KrISS-feed-intègre-RainTPL-enfin-presque
url: http://tontof.net/index.php?2013/11/14/18/28/04-kriss-feed-integre-raintpl-enfin-presque
content:
          <a href="http://www.raintpl.com">RainTPL</a> est le template PHP utilisé par exemple dans Shaarli.<br />
<br />
L'avantage d'utiliser un moteur de template c'est de grandement simplifier les vues associées au code. L'inconvénient, c'est que ça alourdit l'exécution du code (tout est relatif avec l'utilisation d'un cache et de la compilation des templates en PHP).<br />
<br />
Sauf qu'avec KrISS feed, il y aura l'avantage sans l'inconvénient. En fait j'ai intégré RainTPL dans le dossier source <a href="https://github.com/tontof/kriss_feed/tree/master/src">src</a> ce qui me permet d'avoir un code source et des templates plus légers, plus lisibles et donc plus simples à maintenir. Quand je compile le fichier index.php j'intègre directement les templates php générés par RainTPL et supprime les dépendances à RainTPL pour faire comme avant.<br />
<br />
En gros je suis en train de supprimer le script generateIndex qui était en bash et j'ai créé un fichier <a href="https://github.com/tontof/kriss_feed/blob/master/src/make.php">make.php</a> qui me permettra plus de souplesse à terme et qui permettra à un plus grand nombre de compiler le fichier index.php. Pour le moment le fichier make.php est spécifique à KrISS feed, mais j'espère bien le rendre plus générique pour l'adapter à d'autres projets.<br />
<br />
Pour illustrer ce que ça a apporté, dans le dossier des templates tpl :<br />
- avant 86329 octets<br />
- après 74541 octets<br />
Pour l'index.php généré:<br />
- avant 9327 lines 328009 octets<br />
- après 9204 lines 327510 octets<br />
<br />
Donc en gros pour les utilisateurs finaux pas beaucoup de changements, mais le code continue de s'améliorer et ça c'est chouette :-)<br />
<br />
Il faut savoir que <a href="http://www.raintpl.com/News/2013/07/20/A-few-%28nice%29-words-on-the-Rain-Projects/">RainTPL</a> n'est plus vraiment maintenu dans sa version 2 et que j'ai eu quelques problèmes avec.<br />
<br />
- J'ai essayé quand même de poster sur <a href="https://github.com/rainphp/raintpl/issues/38">github</a> un de mes problèmes et je n'ai eu aucun retour en 1 mois. Heureusement ce n'était pas bien important, juste un comportement bizarre facilement contournable.<br />
<br />
- J'ai également dû intégrer <a href="https://github.com/rainphp/raintpl/issues/31">un pull request</a> qui permet de corriger des problèmes liés à l'interprétation des points dans les chaînes de caractères.<br />
<br />
- Enfin <a href="https://github.com/tontof/kriss_feed/issues/318">Nodd</a> a identifié un autre problème lié à l'utilisation du signe égal dans une chaîne de caractères lors d'une affectation que j'ai pu heureusement contourner assez simplement.<br />
<br />
Malgré tous ces problèmes, je pense que RainTPL est une bonne solution. J'ai pu l'intégrer facilement pour qu'il soit fonctionnel dans le source et le supprimer dans le code généré. Il risque d'y avoir un temps d'adaptation avec la nouvelle version du source même si Nodd m'a déjà permis de grandement améliorer la stabilité. Je crois qu'il n'y a plus de problème actuellement lié à RainTPL et c'est une bonne chose.
      


title: Affichage conditionnel en LaTeX avec la ligne de commande
uri: Affichage-conditionnel-en-LaTeX-avec-la-ligne-de-commande
feed_id:
http://tontof.net/index.php?2014/01/30/12/30/56-affichage-conditionnel-en-latex-avec-la-ligne-de-commande

url:
http://tontof.net/index.php?2014/01/30/12/30/56-affichage-conditionnel-en-latex-avec-la-ligne-de-commande

content:
          Ce n'est pas nouveau, <a href="http://www.latex-project.org/">LaTeX</a> c'est génial. Par contre quand on a des besoins particuliers, ça peut vite se compliquer surtout quand on n'a pas pris le temps de lire <a href="ftp://ctan.tug.org/tex-archive/info/lshort/">la courte (?) introduction à LaTeX2</a>.<br />
<br />
Pour des énoncés de partiels, je voulais facilement pouvoir générer l'énoncé avec et sans la correction, tout ça en ligne de commande s'il vous plaît !<br />
<br />
La solution est très simple<br />
<br />
<code><br />
\documentclass[12pt]{article}<br />
<br />
%% Création de la variable booléenne sol<br />
\newif\ifsol<br />
<br />
%% Par défaut je veux afficher les solutions<br />
\soltrue<br />
<br />
%% Si la variable SOLOFF est définie je masque les solutions<br />
\ifdefined\SOLOFF<br />
  \solfalse<br />
\fi<br />
<br />
\begin{document}<br />
<br />
Quelle est la couleur du cheval blanc d'Henri IV ?<br />
<br />
%% Affichage conditionnel<br />
\ifsol \textbf{Blanc} \fi<br />
<br />
\end{document}<br />
</code><br />
<br />
En compilant (fonctionne avec latex et pdflatex) normalement<br />
- <code>latex fichier.tex</code><br />
On obtient l'énoncé avec les solutions<br />
<br />
- <code>latex "\def\SOLOFF{}\input{fichier.tex}"</code><br />
On obtient l'énoncé sans les solutions<br />
<br />
Merci LaTeX<br />
<br />
sources :<br />
- <a href="http://brunettoziosi.eu/posts/latex-conditional-compilation.html">http://brunettoziosi.eu/posts/latex-conditional-compilation.html</a><br />
- <a href="http://tex.stackexchange.com/questions/5894/latex-conditional-expression">http://tex.stackexchange.com/questions/5894/latex-conditional-expression</a>
      


feed_id: http://tontof.net/index.php?2014/01/23/18/52/14-quelques-liens-inutiles-pour-passer-le-temps-47
title: Quelques liens inutiles pour passer le temps #47
uri: Quelques-liens-inutiles-pour-passer-le-temps-47
url: http://tontof.net/index.php?2014/01/23/18/52/14-quelques-liens-inutiles-pour-passer-le-temps-47
content:
          1 - Je ne savais pas mais certaines sonneries Nokia sont en Morse<br />
Connecting people !<br />
<a href="http://www.youtube.com/watch?v=9QWez2Siw4g">http://www.youtube.com/watch?v=9QWez2Siw4g</a><br />
SMS : ...--...<br />
Je trouve ça beau<br />
<br />
2 - Je suis tombé un peu par hasard sur un site qui permet de télécharger les vidéos Youtube, vimeo avec une interface sobre...<br />
<a href="http://filozavr.com/">http://filozavr.com/</a><br />
Ça vaut pas <a href="http://tontof.net/kriss/dwld/">KrISS dwld</a> mais ça peut servir :-)<br />
<br />
3 - Une vidéo où une prof de chimie coupe le bras d'une élève pour de faux :<br />
<a href="http://www.koreus.com/video/eleve-bras-couteau-sang-experience-chimie.html">http://www.koreus.com/video/eleve-bras-couteau-sang-experience-chimie.html</a><br />
<br />
4 - Merci duckduckgo tu me fais rêver :<br />
<a href="https://duckduckgo.com/?q=recette+frangipano">https://duckduckgo.com/?q=recette+frangipano</a><br />
Did you mean recette frangipani?<br />
<a href="https://duckduckgo.com/?q=recette+frangipani">https://duckduckgo.com/?q=recette+frangipani</a><br />
Did you mean recette frangipane?<br />
<br />
Pour ceux qui se demandent comment j'ai pu mettre un o à la place d'un e : <a href="http://bepo.fr">http://bepo.fr</a><br />
(Non c'est faux, mais ça aurait pu être une bonne excuse non ? Oui Fred, Il va falloir que je m'y mette)<br />
<br />
Je pense que vous avez remarqué mais des fois il a aussi du mal avec les accents.<br />
Je cherchais un exemple et suis tombé sur cette page Wiktionary sympa :<br />
<a href="http://fr.wiktionary.org/wiki/Annexe:Curiosit%C3%A9s_linguistiques_en_fran%C3%A7ais">http://fr.wiktionary.org/wiki/Annexe:Curiosit%C3%A9s_linguistiques_en_fran%C3%A7ais</a><br />
<br />
Tout ça pour vous donner un exemple de recherche qui merdouille : <br />
<a href="https://duckduckgo.com/?q=onomatopée">https://duckduckgo.com/?q=onomatopée</a><br />
Did you mean onomatopeee?<br />
<br />
5 - Je suis tombé sur <a href="https://www.google.com/takeaction/">https://www.google.com/takeaction/</a><br />
« Un Internet libre et ouvert pour un monde libre et ouvert »<br />
« Chacun de nous peut s'exprimer, créer, apprendre et partager grâce à Internet. »<br />
« Personne ne le contrôle : aucune organisation, aucun individu ni aucun gouvernement. »<br />
« Il relie le monde entier et nous devons le protéger. »<br />
« Rejoignez les quelque 3 000 000 d'internautes qui se prononcent en faveur d'un Web libre et ouvert.  »<br />
<br />
Ils sont gentils, hein, ils veulent notre bien...<br />
Regardez, on est sympa, on propose plein de services gratuits : <a href="http://sebsauvage.net/links/?Z4kjvg">http://sebsauvage.net/links/?Z4kjvg</a><br />
<br />
C'est dommage parce que ça part d'une bonne intention, mais après les censures Adsense pour des images de nu(e)s ou autre, les suppressions des applis du play store sans raison justifiée et la même chose pour les extensions Chrome... Je sais pas, mais ça m'énerve de lire des trucs comme ça de leur part...<br />
<br />
6 - Pour ceux qui aiment les statistiques en temps réel<br />
<a href="http://www.planetoscope.com">http://www.planetoscope.com</a><br />
via : <a href="http://www.2m3.net/index.php?page=lire&amp;id=9430">http://www.2m3.net/index.php?page=lire&amp;id=9430</a><br />
<br />
Il s'en passe des choses, on dirait pas comme ça :<br />
<a href="http://www.planetoscope.com/24-heures-en-france.php">http://www.planetoscope.com/24-heures-en-france.php</a><br />
<br />
7 - Une petite illusion sympathique :<br />
<a href="https://i.chzbgr.com/maxW500/7866710528/hCB0713B7/">https://i.chzbgr.com/maxW500/7866710528/hCB0713B7/</a><br />
via : <a href="http://cheezburger.com/7866710528">http://cheezburger.com/7866710528</a><br />
<br />
8 - Un truc qui ne sert à rien, mais j'aimerais bien l'avoir dans les mains pour voir :-)<br />
<a href="https://i.chzbgr.com/maxW500/7983448064/h3B5C9C5E/">https://i.chzbgr.com/maxW500/7983448064/h3B5C9C5E/</a><br />
via : <a href="http://cheezburger.com/7983448064">http://cheezburger.com/7983448064</a><br />
<br />
9 - <a href="http://fr.wikipedia.org/wiki/Allit%C3%A9ration">http://fr.wikipedia.org/wiki/Allit%C3%A9ration</a><br />
Ça m'a donné envie de revoir le film<br />
<br />
    « Voilà ! Vois en moi l'image d'un humble vétéran de vaudeville, distribué vicieusement dans les rôles de victime et de vilain par les vicissitudes de la vie. Ce visage, plus qu'un vil vernis de vanité, est un vestige de la vox populi aujourd'hui vacante, évanouie. Cependant, cette vaillante visite d'une vexation passée se retrouve vivifiée et a fait vœu de vaincre cette vénale et virulente vermine vantant le vice et versant dans la vicieusement violente et vorace violation de la volition. Un seul verdict : la vengeance. Une vendetta telle une offrande votive mais pas en vain car sa valeur et sa véracité viendront un jour faire valoir le vigilant et le vertueux. En vérité ce velouté de verbiage vire vraiment au verbeux, alors laisse-moi simplement ajouter que c'est un véritable honneur que de te rencontrer. Appelle-moi V Voilà ! »<br />
<br />
— Version française de la tirade par laquelle le héros se présente à Evey.<br />
<br />
    « In view, a humble vaudevillian veteran, cast vicariously as both victim and villain by the vicissitudes of fate. This visage, no mere veneer of vanity, is a vestige of the vox populi, now vacant, vanished. However, this valorous visitation of a bygone vexation stands vivified, and has vowed to vanquish these venal and virulent vermin vanguarding vice and vouchsafing the violently vicious and voracious violation of volition! The only verdict is vengeance; a vendetta held as a votive, not in vain, for the value and veracity of such shall one day vindicate the vigilant and the virtuous. Verily, this vichyssoise of verbiage veers most verbose, so let me simply add that it's my very good honour to meet you and you may call me V. »<br />
<br />
— Version anglaise<br />
<br />
10 - <a href="http://aem1k.com/world/">http://aem1k.com/world/</a><br />
C'est juste magnifique.<br />
Je tombé sur ça en étudiant l'utilisation de fishbone pour la partie js de KrISS feed.<br />
<a href="https://github.com/aemkei/fishbone.js">https://github.com/aemkei/fishbone.js</a>
      


feed_id: http://tontof.net/index.php?2014/01/17/17/23/53-nouvelle-installation-de-debian
title: Nouvelle installation de Debian !
uri: Nouvelle-installation-de-Debian
url: http://tontof.net/index.php?2014/01/17/17/23/53-nouvelle-installation-de-debian
content:
          Ça fait plus d'un mois que je n'ai pas posté, mais ce n'est pas parce que je vous boude, juste que je suis pas mal occupé et que ça va encore durer un petit moment. Et parce que ça aurait été trop facile, j'ai eu quelques petits soucis avec <a href="https://en.wikipedia.org/wiki/Logical_Volume_Manager_%28Linux%29">LVM</a>. « C'est super LVM, tu peux redimensionner les partitions à la volée, comme tu veux » qu'on m'avait dit. Tu parles, je fonce tête baissée à coup de lvreduce et lvextend pour augmenter la taille de ma racine et paf, ce qui devait arriver arriva, j'ai tout fait planté. Bon on m'a expliqué qu'il fallait quand même prendre quelques précautions, mais c'était trop tard.<br />
<br />
Heureusement, je n'ai rien perdu (backup ! backup !). Du coup j'me suis dit que j'allais en profiter pour vous faire un petit résumé de qu'est-ce que je fais après une nouvelle installation Debian. Je modifierai sûrement en fonction de mes besoins à l'avenir pour que ça me serve de référence perso.<br />
<br />
<h1>Je veux être root à la place du calife</h1><br />
Afin de pouvoir utiliser sudo sans problème avec mon compte classique tof, j'ouvre un terminal et je passe en root<br />
- <code>su</code><br />
J'ajoute le groupe sudo à mon compte tof<br />
- <code>usermod -a -G sudo tof</code><br />
et le tour est joué :<br />
#1) Respect the privacy of others.<br />
#2) Think before you type.<br />
#3) With great power comes great responsibility.<br />
<br />
<h1>Un petit menu rapide qui va bien</h1><br />
J'utilise gnome 3 qui répond plutôt bien à mes besoins mais j'utilise en plus un menu en bas pour faciliter l'accès à mes raccourcis rapides (Alt+F2 ne fait pas tout).<br />
- <code>sudo aptitude install cairo-dock</code><br />
<a href="http://www.glx-dock.org/">Cairo dock</a> est simple, fonctionnel et ultra paramétrable avec des raccourcis clavier qui vont bien.<br />
<br />
Si vous avez besoin de personnaliser un peu gnome:<br />
- <code>sudo aptitude install gnome-tweak-tool</code><br />
Je ne l'utilise pas personnellement, mais je l'installe chez certaines personnes qui ne peuvent pas vivre sans la corbeille sur leur bureau...<br />
<br />
<h1>VLC</h1><br />
Impossible de lire les mp4 avec iceweasel (firefox), VLC help me !<br />
- <code>sudo aptitude install vlc mozilla-plugin-vlc</code><br />
Je rappelle qu'il faut éviter le format mp4 :<br />
<a href="https://commons.wikimedia.org/wiki/Commons:Requests_for_comment/MP4_Video#No_MP4_support">https://commons.wikimedia.org/wiki/Commons:Requests_for_comment/MP4_Video#No_MP4_support</a><br />
via : <a href="http://root.suumitsu.eu/links/index.php?9MXo9w">http://root.suumitsu.eu/links/index.php?9MXo9w</a><br />
<br />
Pour le moment, cette config est suffisante, mais si j'ai besoin de plus côté multimedia, le plus simple est encore d'ajouter deb-multimedia.org, pour les trucs comme libdvdcss ou w32codecs. Plus d'infos sur<br />
<a href="http://debianhelp.wordpress.com/2011/11/06/to-do-list-after-installing-debian-squeeze/">http://debianhelp.wordpress.com/2011/11/06/to-do-list-after-installing-debian-squeeze/</a><br />
qui date un peu mais qui reste très utile !<br />
<br />
<h1>Gnash/PepperFlash</h1><br />
J'utilise gnash avec iceweasel, mais quand on me demande de tester certaines choses qui nécessitent flash, j'utilise chromium<br />
- <code>sudo aptitude install chromium</code><br />
En fait, flash fonctionne grâce à l'api PepperFlash qui n'est disponible qu'avec chrome.<br />
Il faut donc dans un premier temps télécharger chrome pour linux. Par exemple :<br />
- <code>wget <a href="https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb">https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb</a> </code><br />
On cherche ensuite le fichier qui nous intéresse :<br />
- <code>dpkg -c google-chrome-stable_current_i386.deb | grep libpepflashplayer.so</code><br />
Puis on le récupère, par exemple :<br />
- <code>dpkg --fsys-tarfile google-chrome-stable_current_i386.deb | tar xOf - ./opt/google/chrome/PepperFlash/libpepflashplayer.so > libpepflashplayer.so</code><br />
On le met où on veut (en créant par exemple un dossier plugins dans la config de chromium) :<br />
- <code>mkdir ~/.config/chromium/Default/Plugins/</code><br />
- <code>mv libpepflashplayer.so ~/.config/chromium/Default/Plugins/</code><br />
Et on configure chromium pour qu'il utilise ce plugin en ajoutant une ligne dans le fichier .profile<br />
- <code>nano ~/.profile</code><br />
Edit 20141022 : CHROMIUM_FLAGS à la place de CHROMIUM_USER_FLAGS<br />
- <code>export CHROMIUM_USER_FLAGS="--ppapi-flash-path=$HOME/.config/chromium/Default/Plugins/libpepflashplayer.so"</code><br />
<br />
Pour tester sa version de flash<br />
<a href="https://www.adobe.com/software/flash/about/">https://www.adobe.com/software/flash/about/</a> <br />
<br />
Je supprime la recherche par défaut de google dans la omnibox en ajoutant un truc du style :<br />
- <code>http://localhost/%s</code><br />
<br />
<h1>Arhhh mais pourquoi sont-ils aussi méchants ???</h1><br />
Les disques NTFS c'est chiant, heureusement, il y a ntfs-config :<br />
- <code>sudo aptitude install ntfs-config</code><br />
- <code>sudo ntfs-config</code> -> activer écriture sur les périphériques externes<br />
<br />
Après avoir installé Debian à partir d'une live USB, le fichier /etc/fstab est sûrement mal configuré et il faut commenter la dernière ligne correspondant à la clé USB utilisée pour l'installation : <a href="https://bugs.launchpad.net/usb-creator/+bug/150872">https://bugs.launchpad.net/usb-creator/+bug/150872</a><br />
- <code>sudo nano /etc/fstab</code><br />
<br />
Le beeeeeeeep à l'extinction de l'ordi n'est pas très discret, du coup je le supprime :<br />
- <code>sudo nano /etc/modprobe.d/blacklist.conf</code><br />
- ajout de <code>blacklist pcspkr</code><br />
<br />
Le bip bip du terminal de gnome aussi.<br />
- Menu -> Édition -> Profils... -> Modifier -> « bip » du terminal !!!<br />
<br />
<h1>Et parce qu'il faut bien bosser un peu</h1><br />
Je me suis limité à ce que j'avais en tête, mais j'en ajouterai sûrement au fur et à mesure des besoins:<br />
- <code>sudo aptitude install build-essential php5 php-pear git gettext filezilla qtcreator emacs texlive texlive-latex-extra auctex wine gimp-plugin-registry gimp-gmic audacity unrar-free</code><br />
<br />
La gestion des coding standards Symfony2 avec phpcs<br />
- <code>sudo pear install PHP_CodeSniffer</code><br />
- <code>cd /usr/share/php/PHP/CodeSniffer/Standards/</code><br />
- <code>sudo git clone <a href="git://github.com/opensky/Symfony2-coding-standard.git">git://github.com/opensky/Symfony2-coding-standard.git</a> Symfony2</code><br />
- <code>sudo phpcs --config-set default_standard Symfony2</code><br />
<br />
L'utilisation du dossier public_html pour accéder à <a href="http://localhost/~tof">http://localhost/~tof</a><br />
On commence par modifier l'utilisateur et le groupe associés à apache (dans l'absolu, ce n'est pas bien, mais c'est le plus simple pour ne pas se prendre trop la tête avec la gestion des droits liés à www-data)<br />
- <code>sudo nano /etc/apache2/envvars</code><br />
export APACHE_RUN_USER=tof<br />
export APACHE_RUN_GROUP=tof<br />
On modifie le propriétaire du dossier apache2<br />
- sudo chown tof /var/lock/apache2/<br />
On crée le dossier public_html<br />
- <code>mkdir public_html</code><br />
On active le mode userdir<br />
- <code>sudo a2enmod userdir</code><br />
On met en commentaire les lignes du module pour configurer php pour public_html<br />
- <code>sudo nano /etc/apache2/mods-available/php5.conf</code><br />
Redémarrer apache pour prendre en compte les modifications<br />
- <code>sudo service apache2 restart</code><br />
<br />
Bien sûr tout ceci est à utiliser à vos risques et périls !
      


feed_id: http://tontof.net/index.php?2013/12/04/08/32/30-comment-perdre-du-temps
title: Comment perdre du temps...
uri: Comment-perdre-du-temps
url: http://tontof.net/index.php?2013/12/04/08/32/30-comment-perdre-du-temps
content:
          Tout allait bien ce matin quand je tombe sur une vidéo youtube que j'essaye de regarder sans succès avec <a href="http://tontof.net/kriss/dwld">KrISS dwld</a>...<br />
<br />
Mon premier réflexe a donc été de voir si la signature avait encore changé depuis la dernière fois. Je perds donc 5/10 min à chercher, changer et réessayer, mais sans succès...<br />
<br />
Bizarre, bizarre, j'essaye donc en ajoutant pwn devant l'url, j'essaye de voir la vidéo mais pareil, même erreur. J'en conclus que ce n'est pas de ma faute, qu'il va falloir patienter pour que ça remarche, mais comme je n'ai pas le temps de regarder, j'attendrais que l'équipe de <a href="http://www.deturl.com/">deturl</a> fasse quelque chose.<br />
<br />
Je me souviens que j'avais du code php qui normalement se débrouillait tout seul pour chercher la signature, j'essaye donc mais j'obtiens toujours la même erreur...<br />
<br />
Je remets donc tout en place, j'allais abandonner quand soudain je teste un autre format, juste au cas où...<br />
<br />
Tadam, la vidéo apparaît...<br />
<br />
J'essaye une autre vidéo et ça marche pour tous les formats...<br />
<br />
Conclusion, Google a un problème avec le format webm pour cette vidéo : <a href="http://www.youtube.com/watch?v=hNEPZqJv_es">http://www.youtube.com/watch?v=hNEPZqJv_es</a><br />
<br />
Merci de m'avoir fait perdre 20 min... La prochaine fois, je testerai d'autres vidéos avant de m'emballer.<br />
<br />
Youtube est bizarre, sur la page des gens genre (<a href="http://www.youtube.com/user/nadidier">GiedRé</a>) les vidéos fonctionnent avec Gnash, mais pas sur la page des vidéos, ça charge en boucle...<br />
<br />
Vous pouvez pas faire comme koreus qui fournit directement le lien vers les vidéos ?<br />
<a href="http://www.koreus.com/video/beauty-of-mathematics.html">http://www.koreus.com/video/beauty-of-mathematics.html</a><br />
<a href="media/a28df581.beauty-of-mathematics.mp4" data-original-source="http://embed.koreus.com/00071/201312/beauty-of-mathematics.mp4">http://embed.koreus.com/00071/201312/beauty-of-mathematics.mp4</a><br />
<a href="http://embed.koreus.com/00071/201312/beauty-of-mathematics.m4v">http://embed.koreus.com/00071/201312/beauty-of-mathematics.m4v</a><br />
<a href="media/f5ce5e04.beauty-of-mathematics.webm" data-original-source="http://embed.koreus.com/00071/201312/beauty-of-mathematics.webm">http://embed.koreus.com/00071/201312/beauty-of-mathematics.webm</a><br />
<a href="media/e337a39a.beauty-of-mathematics-hd.mp4" data-original-source="http://embed.koreus.com/00071/201312/beauty-of-mathematics-hd.mp4">http://embed.koreus.com/00071/201312/beauty-of-mathematics-hd.mp4</a><br />
<br />
Ça serait vachement plus simple quand même !<br />

      


feed_id: http://tontof.net/index.php?2014/03/06/17/49/46-vous-ne-revez-pas-nous-sommes-en-2014
title: Vous ne rêvez pas, nous sommes en 2014...
uri: Vous-ne-rêvez-pas-nous-sommes-en-2014
url: http://tontof.net/index.php?2014/03/06/17/49/46-vous-ne-revez-pas-nous-sommes-en-2014
content:
          Il n'y a pas longtemps Timo partageait son avis sur la qualité de certains sites : <a href="http://lehollandaisvolant.net/index.php?d=2014/03/04/14/09/35-pourquoi-les-sites-des-services-publics-sont-ils-tous-aussi-pourris">http://lehollandaisvolant.net/index.php?d=2014/03/04/14/09/35-pourquoi-les-sites-des-services-publics-sont-ils-tous-aussi-pourris</a><br />
<br />
Pour La Poste, on aurait pu ajouter le foutage de gueule sur le fait qu'il faut cliquer sur un bouton pour afficher le numéro de téléphone désiré présent sur la page résultat d'une recherche. C'est complètement inutile, chiant mais ça permet de pister un peu plus les utilisateurs (ah ben voilà, ce n'est pas inutile...). Je bloque le javascript sur ce site pour avoir directement accès à un numéro (mais j'évite plus simplement d'aller sur ce site). Je vous déteste, vous qui faîtes ce genre de trucs...<br />
<br />
Cette petite introduction pour vous dire que ce matin, j'ai dû créer pour quelqu'un certains comptes sur des sites classiques et wow, je n'arrive toujours pas à croire qu'on en soit toujours là en 2014...<br />
<br />
<h2>Mon service public</h2><br />
On commence soft, avec l'impossibilité d'utiliser un point dans le choix d'un identifiant. Bon, à la rigueur, c'est le début de la journée, pourquoi pas...<br />
<br />
<h2>Orange</h2><br />
Je vous ai dit que ce n'était pas pour moi, je boycotte Orange depuis décembre 2004 pour une sombre histoire de commercial à la con d'Orange distribution.<br />
<br />
À la modification du mot de passe reçu initialement par texto, je m'aperçois qu'il n'est pas autorisé d'utiliser des caractères spéciaux... je ne parle pas de ♻ ⌘ ⌛ ☘ ☊ ♔ mais d'un simple tiret, point, etc. Pardon, quelqu'un m'explique ?<br />
<br />
<h2>Éloge de fin pour EDF</h2><br />
- À la création du compte il est obligatoire de saisir une question secrète limitée à 5 propositions (ville de naissance, nom d'un animal de compagnie, etc.). Je pensais que ça ne faisait plus... que tout le monde savait que c'était à proscrire ce genre de questions...<br />
<br />
- C'est le moment de choisir le mot de passe... Je pense qu'ils sous-traitent chez les mêmes prestataires qu'Orange. Bientôt ils vont aussi nous proposer de choisir parmi une liste de mots de passe comme leur question secrète ?<br />
<br />
- Dans leur page de redirection qui s'éternisait parce que j'étais à la campagne avec un point d'accès wifi sur un téléphone free qui ne captait pas la 3G, je me suis occupé en regardant le source de la page...<br />
<br />
&lt;!--  nouvelle charte graphique  --&gt;<br />
&lt;!-- Linkeo Css --&gt;<br />
&lt;!-- Supprimer integrer dans le tag --&gt;<br />
&lt;!--  &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://www.client.linkeo.com/edf.com/RECETTE-projet-ivoire/btn-pop/css/lnkWcb.css&quot; /&gt; --&gt;<br />
&lt;!-- End Linkeo Css --&gt;<br />
<br />
//ajout d'une variable à la requête<br />
LA_NSL_AddData(&quot;varname&quot;, &quot;value&quot;);<br />
//*****<br />
LA_UserInput( textBox.value );<br />
<br />
Je sais que c'est bien de mettre des commentaires, mais bon, à part faire sourire un abruti qui regarde le source de vos pages, j'ai des doutes sur leur utilité...<br />
<br />
<h2>Captcha</h2><br />
Je ne vous ai pas parlé des captchas qui sont sous-traités, pour Edf et le service public, par Google, mais franchement, je mets au défi un humain de pouvoir lire sans problème les captchas que j'ai eu. Je l'ai actualisé 5 ou 6 fois avant de me dire qu'il fallait peut-être essayer avec le captcha auditif... Quelle idée stupide, c'est encore pire, juste inaudible.<br />
<br />
Ça me fait mal au cœur de vous écrire ça, mais seul Orange s'en est bien sorti en proposant un captcha sur des images à sélectionner dans un ordre particulier. Sûrement pas impossible pour un robot, mais c'était au moins plus ludique que reCaptcha.<br />
<br />
Bientôt les robots seront les seuls capables de lire vos captchas de merde.
      


feed_id: http://tontof.net/index.php?2014/03/24/17/40/56-quelques-liens-inutiles-pour-passer-le-temps-48
title: Quelques liens inutiles pour passer le temps #48
uri: Quelques-liens-inutiles-pour-passer-le-temps-48
url: http://tontof.net/index.php?2014/03/24/17/40/56-quelques-liens-inutiles-pour-passer-le-temps-48
content:
          Des liens un peu artistiques, certains datent un peu...<br />
<br />
1 - Une robe que je trouve magnifique :<br />
<a href="https://i.chzbgr.com/maxW500/7483157248/h073A69B9/">https://i.chzbgr.com/maxW500/7483157248/h073A69B9/</a><br />
via : <a href="http://cheezburger.com/7483157248">http://cheezburger.com/7483157248</a><br />
2 - Miyoko Shida fait tenir une plume en équilibre :<br />
<a href="https://www.youtube.com/watch?v=AbA0iep4Ov8">https://www.youtube.com/watch?v=AbA0iep4Ov8</a><br />
3 - Une petite vidéo réalisée sans post production :<br />
<a href="http://www.youtube.com/watch?v=lX6JcybgDFo">http://www.youtube.com/watch?v=lX6JcybgDFo</a><br />
via : <a href="http://www.botndolly.com/box">http://www.botndolly.com/box</a><br />
via : <a href="http://www.2m3.net/in.php?id=9412">http://www.2m3.net/in.php?id=9412</a><br />
4 - Un boitier pour tablette plutôt classe :<br />
<a href="http://design-milk.com/dock-tray-by-alain-berteau/">http://design-milk.com/dock-tray-by-alain-berteau/</a><br />
5 - Un aperçu de l'avenir ? Ça peut faire peur...<br />
<a href="http://www.zdnet.com/design-lab-finalists-reveal-gadgets-of-the-future-7000021152/">http://www.zdnet.com/design-lab-finalists-reveal-gadgets-of-the-future-7000021152/</a><br />
via : <a href="http://share.no-life.eu/?WawKeg">http://share.no-life.eu/?WawKeg</a><br />
6 - Des dessins sur des feuilles, c'est beau :<br />
<a href="http://www.buzzecolo.com/24495/leaf-art-naturayarte/">http://www.buzzecolo.com/24495/leaf-art-naturayarte/</a><br />
via : <a href="http://sensini42.free.fr/shaarli/?weUx8w">http://sensini42.free.fr/shaarli/?weUx8w</a><br />
7 - Un ours en gif avec simplement des traits qui bougent :<br />
<a href="https://i.chzbgr.com/maxW500/8051232000/hF6361F60/">https://i.chzbgr.com/maxW500/8051232000/hF6361F60/</a><br />
8 - Une porte sympathique :<br />
<a href="http://www.youtube.com/watch?v=umfvm8I9_oU">http://www.youtube.com/watch?v=umfvm8I9_oU</a><br />
d'autres portes sympathiques<br />
<a href="http://www.youtube.com/user/katorvendis/videos">http://www.youtube.com/user/katorvendis/videos</a><br />
9 - Une horloge à imprimer qui écrit l'heure en boucle :<br />
<a href="https://vidd.me/wFz">https://vidd.me/wFz</a><br />
10 - Le logo apple qui fait peur :-)<br />
<a href="http://www.moillusions.com/apple-logo-optical-illusion/">http://www.moillusions.com/apple-logo-optical-illusion/</a>
      


feed_id: http://tontof.net/index.php?2014/04/14/10/13/12-un-bon-debut-de-semaine-pour-etre-en-pleine-forme
title: Un bon début de semaine pour être en pleine forme
uri: Un-bon-début-de-semaine-pour-être-en-pleine-forme
url: http://tontof.net/index.php?2014/04/14/10/13/12-un-bon-debut-de-semaine-pour-etre-en-pleine-forme
content:
          Après un week-end un peu fatigant, les lundis matins ont ces petits quelques choses d'uniques...<br />
<br />
<a href="http://www.numerama.com/magazine/29075-google-maps-rend-la-crimee-russe-en-russie-ukrainienne-en-ukraine.html">http://www.numerama.com/magazine/29075-google-maps-rend-la-crimee-russe-en-russie-ukrainienne-en-ukraine.html</a><br />
On a déjà certaines vidéos (ou pages) disponibles uniquement en fonction de votre localisation, alors cette info est-elle vraiment si surprenante ?<br />
<br />
Je viens de recevoir un message de la Direction-generale-des-finances-publiques<br />
ne-pas-repondre.finances.gouv.fr@dgfip.finances.gouv.fr<br />
Avec un joli petit via gmail.com...<br />
Ils me font rire ces politiques qui s'indignent des révélations de Snowden...<br />
<br />
Et pour finir leur message :<br />
« Suivez-nous sur Twitter@dgfip_officiel et sur Facebook : Direction générale des finances publiques »<br />
Ils ont du voir que ça marchait pour les vidéos de Norman et Cyprien, alors pourquoi pas eux...<br />
<br />
<a href="https://tcit.fr/2014/04/tous-ceux-qui-veulent-changer-le-monde/">https://tcit.fr/2014/04/tous-ceux-qui-veulent-changer-le-monde/</a><br />
via : <a href="http://sebsauvage.net/links/?aKYXyg">http://sebsauvage.net/links/?aKYXyg</a><br />
<br />
Heureusement que « je transforme le monde dans ma tête, pour en faire une fête »<br />
<a href="http://www.youtube.com/watch?v=kTtvMtFzvYI">http://www.youtube.com/watch?v=kTtvMtFzvYI</a>
      


feed_id: http://tontof.net/index.php?2014/05/26/22/12/34-le-piratage-c-est-mal-mais-au-moins-ca-fonctionne
title: Le piratage c'est mal, mais au moins ça fonctionne...
uri: Le-piratage-c-est-mal-mais-au-moins-ça-fonctionne
url: http://tontof.net/index.php?2014/05/26/22/12/34-le-piratage-c-est-mal-mais-au-moins-ca-fonctionne
content:
          Vous connaissez sans doute cette image qui montre la différence entre un DVD piraté et un DVD officiel : <a href="media/fcc1f627.pirate-vs-pay.png" data-original-source="http://www.christophesperandio.fr/wp-content/uploads/2010/02/pirate-vs-pay.png">http://www.christophesperandio.fr/wp-content/uploads/2010/02/pirate-vs-pay.png</a><br />
<br />
C'est la même chose en général et avec les logiciels en particulier.<br />
<br />
J'ai essayé d'installer une version officielle d'un logiciel de gestion/compta pour une association. Malheureusement, ce n'était pas aussi simple qu'avec <a href="http://dev.kd2.org/garradin/">Garradin</a>.<br />
<br />
Tout d'abord, au lancement du CD, le programme demande de cliquer sur l'image qui ressemble à la boîte du logiciel... dans le principe je trouve ça déjà un peu pourri, mais bon, on va dire que c'est une sorte de captcha pour être sûr qu'on installe le bon logiciel...<br />
<br />
Au lancement du logiciel, il faut activer ce dernier à l'aide d'un numéro de licence, d'une clé web et d'une clé d'activation... Oui oui, rien que ça.<br />
Le numéro de licence et la clé Web étaient dans la boîte. Pour la clé d'activation, c'est soit par courrier, soit par internet.<br />
<br />
C'est parti pour l'activation sur internet.<br />
Il faut commencer par se créer un compte... Ça ne passe pas avec une adresse yopmail, du coup, j'ai dû utiliser un spamgourmet... Ça ne vous suffit pas qu'on achète vos logiciels, il faut en plus que vous nous envoyez du spam ?<br />
<br />
Je continue et il me demande de renseigner le numéro de licence, la clé web et le numéro de clé PC ???<br />
Dans la notice, c'est écrit d'aller dans l'aide et de chercher la rubrique « Activer votre logiciel ». J'ai cherché de partout, je n'ai rien trouvé. Dans la boîte il y a des jolies captures d'écran qui ne correspondent même pas avec la version du logiciel de la boîte.<br />
<br />
Au bout de 30 min, je n'ai toujours pas trouvé ce numéro de clé PC, alors j'ai abandonné et je n'ai pas réussi à passer à l'étape 2/6 pour obtenir la clé d'activation...<br />
<br />
Franchement, c'est pas plus simple ça ?<br />
1. Unpack & Install<br />
2. Replace original EXE file<br />
<br />
Il ne faut pas croire que le piratage ce n'est qu'une question d'argent. Les gens sont prêts à payer pour quelque chose, mais avec le temps, ils aiment de moins en moins être pris pour des pigeons.
      


feed_id: http://tontof.net/index.php?2014/09/12/16/31/42-10-ans-de-trop
title: 10 ans de trop
uri: 10-ans-de-trop
url: http://tontof.net/index.php?2014/09/12/16/31/42-10-ans-de-trop
content:
          Et presque 4 mois que je n'ai pas posté un petit message...<br />
Avec la rentrée, les choses devraient se calmer un peu et j'espère que j'aurais le temps d'avancer sur mes projets persos que j'ai dû mettre de côté. J'ai eu plein de nouvelles idées mais je vous en reparlerai dans un autre billet dans j'espère pas trop longtemps :-)<br />
<br />
Aujourd'hui, cela fait 10 ans jour pour jour que j'ai mon compte Gmail. C'est la dernière chose qui me reste et dont je me sers vraiment encore un peu chez Google. J'ai commencé une petite transition mais comme beaucoup utilisent encore cette adresse pour me contacter je vais la garder encore un moment.<br />
<br />
À l'époque c'était encore sous invitation et je faisais partie des premiers (dans mon entourage) à avoir un compte chez eux. Les gens me demandaient souvent si je n'avais pas des invitations à leur envoyer... La mienne je l'avais eu un peu par hasard grâce à un contact du Canada avec qui je parlais pas mal émulation sur IRC... Nostalgie quand tu nous tiens.<br />
<br />
Le tout premier message :<br />
Date: Sun, 12 Sep 2004 11:48:40 -0700 (PDT)<br />
<strong>Subject:</strong> <em>Gmail is different. Here's what you need to know.</em><br />
...<br />
<br />
J'étais un peu naïf à l'époque et j'aimais bien Google, mais ça c'était avant.<br />
<br />
En attendant de trouver un domaine perso pour gérer mes propres adresses mails (un peu à la spamgourmet) je ne retournerai plus sur gmail et utiliserai seulement la partie imap de mon compte.<br />
<br />
Fini donc Google Talk, Tasks et même si ce n'est pas encore un adieu, c'est un gros au revoir de plus à Google.
      


feed_id: http://tontof.net/index.php?2015/01/30/18/06/29-oui-je-le-veux
title: Oui je le veux
uri: Oui-je-le-veux
url: http://tontof.net/index.php?2015/01/30/18/06/29-oui-je-le-veux
content:
          Je lis des choses qui me font un peu peur, je vis des choses qui me font un peu peur.<br />
<br />
Comme sûrement beaucoup qui me lisent je suis marié avec Ghostery et Adblock (ou autres) depuis longtemps déjà et quand je vois les compteurs qui augmentent, je me demande comment font les gens pour vivre sans.<br />
<br />
Aujourd'hui, on m'a parlé d'une extension qui permet de comparer les prix sur des sites classiques : <a href="http://www.shoptimate.fr/">http://www.shoptimate.fr/</a><br />
<br />
J'ai voulu l'installer pour tester mais je ne sais pas trop pourquoi rien ne fonctionnait. J'ai pensé à Ghostery et Adblock et je les ai donc désactivés pour voir, mais impossible de faire fonctionner l'add-on. Je n'ai pas vraiment l'utilité de ce genre d'extension alors je l'ai simplement supprimé sans trop chercher à comprendre.<br />
<br />
Je vais faire un tour sur mes flux RSS et je lis des choses à propos d'Apple et de leur argent :<br />
- <a href="http://www.commitstrip.com/fr/2015/01/29/too-much-of-a-good-thing-can-make-you-sick/">http://www.commitstrip.com/fr/2015/01/29/too-much-of-a-good-thing-can-make-you-sick/</a><br />
<br />
Je tombe sur un article de numérama que j'ouvre dans un onglet sans aller le lire :<br />
- <a href="http://www.numerama.com/magazine/32063-apple-gagne-plus-que-microsoft-google-et-amazon-reunis.html">http://www.numerama.com/magazine/32063-apple-gagne-plus-que-microsoft-google-et-amazon-reunis.html</a><br />
<br />
Je finis mes flux et je vais voir les articles que j'ai ouvert. C'est à ce moment que je m'aperçois que j'avais oublié de réactiver Ghostery et Adblock !!!!<br />
<br />
Ghostery m'affiche un petit 72 et je n'en reviens pas... 72 mais je me dis que ce n'est pas possible alors je compte :<br />
<br />
<em>ad6media, ad:C media, Adconion, Adform, Adloox, AdMeta, AdScale, ADTECH, AppNexus, AT Internet, BidSwitch, Burst Media, Casale Media, Chango, Criteo, DoubleClick, DoubleClick Floodlight, DoubleClick Spotlight, Drawbridge, Effiliation, EMatch, eXelate, Facebook Connect, Facebook Exchange (FBX), Facebook Social Plugins, Fidelity Media, Google Adsense, Google AdWords Conversion, Google Analytics, Google Dynamic Remarketing, Google+ Platform, Hi-Media Performance, Improve Digital, Internet BillBoard, ividence, Jumptap, Lijit, LiveRail, Media Innovation Group, Media Optimizer (Adobe), MediaMath, MLN Advertising, Neustar AdAdvisor, Next Performance, Nugg.Ad, OpenX, Piximedia, Public Ideas, PubMatic, Quantcast, Right Media, Rocket Fuel, Rubicon, ScoreCard Research Beacon, Simpli.fi, SMART AdServer, Sociomantic, Switch Concepts, Taboola, Target Performance, Tedemis, Tom's Native Ads, TradeDoubler, Turn, Twitter Button, Usemax, Ve Interactive, Veoxa, Yahoo Analytics, Yieldify, Yieldlab, Yieldr</em><br />
<br />
Je n'en reviens toujours pas, je vois de la pub de partout, ça pique les yeux. Je vois dans les commentaires un lien sur le nouvelobs<br />
<br />
- <a href="http://obsession.nouvelobs.com/high-tech/20140424.OBS5133/apple-google-facebook-amazon-microsoft-qui-est-le-plus-riche.html">http://obsession.nouvelobs.com/high-tech/20140424.OBS5133/apple-google-facebook-amazon-microsoft-qui-est-le-plus-riche.html</a><br />
<br />
Je clique par curiosité et là 49 :<br />
<br />
<em>Adap.tv, Adify, Adition, AdScale, ADTECH, Advertising.com, Adyoulike, AppNexus, AT Internet, BidSwitch, BrightRoll, Casale Media, ChartBeat, Coremetrics, Criteo, Datalogix, DoubleClick, eStat, eyeReturn Marketing, Ezakus, Facebook Connect, Facebook Exchange (FBX), Google AdWords Conversion, Google Analytics, Google Dynamic Remarketing, Google+ Platform, Improve Digital, IP Mappers, Ligatus, Lijit, LiveRail, Media Optimizer (Adobe), MediaMath, OpenX, Optimax Media Delivery, Outbrain, Pinterest, PubMatic, PulsePoint, Quantcast, Right Media, Rocket Fuel, Rubicon, ScoreCard Research Beacon, SMART AdServer, SpotXchange, Turn, Twitter Button, Visual Revenue</em><br />
<br />
J'ai tout de suite réactiver Ghostery, Adblock et j'ai pu réactualiser les pages et voir un petit 10 chez numérama et 14 sur le nouvelobs... Désolé de vous avoir laissé désactivé si longtemps, je ne recommencerai plus, je vous le promets. Bien sûr je savais que les chiffres affichés étaient sous évalués car les choses qui ne sont pas chargées dans la page ne peuvent pas charger les autres choses qui font chier aussi dans la page... Mais à ce point, je n'imaginais pas...<br />
<br />
Franchement, je vous souhaite bon courage pour survivre sur le web en continuant comme ça...<br />
<br />
Bien sûr, je m'aperçois que les pratiques sur les sites changent et bizarrement ça me semble toujours dans la mauvaise direction.<br />
<br />
L'un des derniers trucs qui m'a fait chier, c'est la soumission de formulaire :<br />
<a href="http://www.luc-damas.fr/humeurs/soumission-de-formulaire/">http://www.luc-damas.fr/humeurs/soumission-de-formulaire/</a><br />
<br />
Qu'est-ce qu'on pourrait inventer pour faire chier un peu plus les gens que les claviers virtuels qu'on trouve sur les banques et free mobile ?<br />
<br />
J'ai trouvé ! si on faisait des nouveaux formulaires html sans formulaire ! Merci javascript... html5 introduit plein de nouvelles balises pour apporter un peu de sémantique dans ce monde de brut, mais il semblerait qu'il y ait toujours des gens pour nous inventer des choses géniales. Et puis c'est tellement pratique quand on utilise des applis comme <a href="http://keepass.info/">http://keepass.info/</a> pour stocker les mots de passe des autres (les miens, ils sont juste stockés dans ma tête).<br />
<br />
Heureusement, il y a toujours ces moments agréables qui nous font sourire. En cherchant des infos sur du javascript, je tombe sur une page geocities. Je n'ai plus le lien exact mais ça fonctionne avec n'importe quoi : <a href="http://www.geocities.com/tontof">http://www.geocities.com/tontof</a> merci Yahoo...<br />
<br />
Bien sûr les sites de merde ne sont jamais très loin :<br />
<a href="http://www.inkling.com/read/javascript-definitive-guide-david-flanagan-6th/chapter-16/scripting-inline-styles">http://www.inkling.com/read/javascript-definitive-guide-david-flanagan-6th/chapter-16/scripting-inline-styles</a><br />
<br />
Ce lien me redirige sur <a href="https://www.inkling.com/unsupported/">https://www.inkling.com/unsupported/</a><br />
<br />
« Welcome to Inkling<br />
<br />
This browser is unsupported. To access all our content, please download one of the following browsers: »<br />
<br />
Iceweasel étant sûrement dépassé, je vais tester sur chromium, et là ça fonctionne mais il y a évidemment une fenêtre modale car si on n'a pas facebook, on ne peux pas surfer normalement et puis après tout, c'est pas gênant, tout le monde à un compte facebook... <br />
<br />
Bon, j'ai dégagé leur fenêtre modale à la main pour me rendre compte, que c'était pourri (enfin ça je le savais déjà)...
      


feed_id: http://tontof.net/index.php?2015/02/02/17/56/19-telecharger-les-sous-titres-de-dailymotion
title: Télécharger les sous-titres de Dailymotion
uri: Télécharger-les-sous-titres-de-Dailymotion
url: http://tontof.net/index.php?2015/02/02/17/56/19-telecharger-les-sous-titres-de-dailymotion
content:
          J'ai une bonne et une mauvaise nouvelle.<br />
<br />
La mauvaise concerne le site userscripts.org qui n'existe plus depuis août 2014. Je viens de l'apprendre et j'aimais bien ce site : <a href="http://tontof.net/kriss/dwld/#KrISS_dwld">KrISS dwld</a> était par exemple grandement inspiré de scripts provenant de ce site. Pour se consoler, il y a un miroir dispo à cette adresse <a href="http://userscripts-mirror.org">http://userscripts-mirror.org</a> mais il n'est pas des plus fonctionnels. Il existe également d'autres alternatives : <a href="http://wiki.greasespot.net/User_Script_Hosting">http://wiki.greasespot.net/User_Script_Hosting</a><br />
<br />
La bonne nouvelle, c'est que je viens d'ajouter un petit bookmarklet bien pratique pour télécharger les sous-titres à partir d'une vidéo de Dailymotion. J'ai cherché un peu avant de me lancer dans ce bookmarklet mais je n'ai rien trouvé sur le net qui permette de le faire facilement et simplement (en gros sans installer de logiciels ou de plugins).<br />
<br />
Je vous avais <a href="http://tontof.net/?2012/09/24/18/48/32-tous-les-oeufs-dans-le-meme-pachelbel">déjà</a> parlé du film My Sassy Girl et je voulais le faire découvrir à quelqu'un qui ne voulait pas les sous-titres en anglais. Je suis tombé sur une version en 3 parties sur <a href="http://www.dailymotion.com/video/x15n51d_kif-vostfr-my-sassy-girl-part-1-3-720p_shortfilms">Dailymotion</a> et grâce à <a href="http://tontof.net/kriss/dwld/#KrISS_dwld">KrISS dwld</a> et ce nouveau petit bookmarklet dispo sur <a href="https://github.com/tontof/kriss_dwld">Github</a>, j'ai pu récupérer une version assez rapidement et sans trop de difficulté.<br />
<br />
Pour essayer, il vous suffit de glisser ce lien dans votre barre personnelle :<br />
<br />
<div style="text-align:center"><a href="javascript:void%20function(){(function(){%22use%20strict%22;var%20n,a,e=function(n,a){var%20r;if(%22object%22==typeof%20n)for(var%20i%20in%20n){if(i==a){r=n[i];break}var%20t=e(n[i],a);if(%22undefined%22!=typeof%20t){r=t;break}}return%20r};$.each($(%22%23container_player_main%22).find(%22param[name=flashvars]%22).val().split(%22%26%22),function(a,e){%22sequence%22==e.substr(0,8)%26%26(e=unescape(e).substr(9),n=JSON.parse(e))}),a=e(n,%22availableSubtitles%22);var%20r=%22%22,i=[];for(var%20t%20in%20a)i.push(a[t]),r+=i.length+%22%20=%3E%20%22+t+%22\n%22;var%20s=parseInt(window.prompt(r),10)-1;s%3Ci.length%26%26window.location.assign(i[s])})()}();">Dailymotion subtitles</a></div><br />
D'aller sur une vidéo qui contient des sous-titres comme <br />
<a href="http://www.dailymotion.com/video/xavtby_les-sources-d-inspiration-d-herge-e_creation">http://www.dailymotion.com/video/xavtby_les-sources-d-inspiration-d-herge-e_creation</a><br />
De cliquer sur le bookmarklet et de choisir le sous-titre désiré.
      


feed_id: http://tontof.net/index.php?2015/02/18/20/43/55-php-revele
title: PHP révélé
uri: PHP-révélé
url: http://tontof.net/index.php?2015/02/18/20/43/55-php-revele
content:
          J'avais besoin de faire des supports pour une présentation sur PHP. Je voulais un truc simple qui permette de créer des slides sans trop faire de chi-chi, et qui reste paramétrable pour pouvoir éventuellement changer plus tard.<br />
<br />
Évidemment, j'élimine les ppt, pptx mais aussi les odp parce que je veux pouvoir modifier le cours en ssh ou dans un terminal avec un emacs -nw.<br />
<br />
J'aurais pu utiliser <a href="http://www.latex-project.org">LaTeX</a> et sa classe <a href="https://bitbucket.org/rivanvx/beamer/wiki/Home">bearmer</a> mais <a href="https://www.hartwork.org/beamer-theme-matrix/">warsaw</a> ça va 5 min et ça reste quand même assez verbeux.<br />
<br />
J'avais déjà vu des présentations html sans vraiment explorer plus que ça et je suis tombé sur <a href="https://github.com/yjwen/org-reveal/">org-reveal</a> qui permet à partir d'un fichier <a href="http://orgmode.org">org-mode</a> de générer une présentation <a href="http://lab.hakim.se/reveal-js">reveal.js</a>.<br />
<br />
Avec org-reveal, je peux utiliser du LaTeX qui sera affiché grâce à <a href="http://www.mathjax.org">MathJax</a> et pour faire des démos directement dans le navigateur, j'ai intégré <a href="https://github.com/niklasvh/php.js">PHP.js</a> qui est une machine virtuelle écrite en javascript. Elle reste limitée mais très pratique pour faire un exemple en live sans sortir du navigateur.<br />
<br />
Un petit aperçu est dispo sur <a href="http://tontof.net/tuto/php">http://tontof.net/tuto/php</a><br />
Si vous voulez voir la console <a href="http://tontof.net/tuto/php/#/hello-world">http://tontof.net/tuto/php/#/hello-world</a> et cliquez sur <strong>Run</strong> 2 fois<br />
<br />
(il est possible d'affiche la console quand on veut avec la touche 'v' et pour changer le style de la présentation c'est 'c')<br />
<br />
Une autre visualisation grâce à Github sur une seule page :<br />
<a href="https://github.com/tontof/kriss_tuto/blob/master/php/index.org">https://github.com/tontof/kriss_tuto/blob/master/php/index.org</a><br />
ou<br />
<a href="http://tontof.net/tuto/php/?print-pdf">http://tontof.net/tuto/php/?print-pdf</a><br />
<br />
Pour voir le fichier source qui reste très simple c'est<br />
<a href="https://raw.githubusercontent.com/tontof/kriss_tuto/master/php/index.org">https://raw.githubusercontent.com/tontof/kriss_tuto/master/php/index.org</a><br />
<br />
Les sources globales sont dispos sur <a href="https://github.com/tontof/kriss_tuto">https://github.com/tontof/kriss_tuto</a><br />
et pour que tout soit fonctionnel sans internet un petit<br />
<strong>git clone --recursive <a href="https://github.com/tontof/kriss_tuto">https://github.com/tontof/kriss_tuto</a> </strong><br />
qui prendra un moment à cause de MathJax et ces presque 200 Mo...<br />
<br />
Le support est relativement simple et joue parfois le rôle de listing, mais je l'améliorerai en fonction du déroulement des cours. Il ne traite pas toute la partie orientée objet de PHP même si je vais en parler vaguement quand je parlerais de PDO.
      


feed_id: http://tontof.net/index.php?2015/06/30/13/08/45-paiement-sans-contact-suite-et-fin
title: Paiement sans contact suite et fin
uri: Paiement-sans-contact-suite-et-fin
url: http://tontof.net/index.php?2015/06/30/13/08/45-paiement-sans-contact-suite-et-fin
content:
          Suite à mon premier article sur <a href="//tontof.net/?2012/09/28/17/32/29-nfc-no-fucking-chance">les cartes NFC</a>, j'avais pu résister au symbole jusqu'à peu. Malheureusement, ma nouvelle carte de la société (qui était) géniale (à l'époque) affiche les 4 petits arcs de cercle blanc :-(<br />
<br />
Heureusement, j'ai pu effectivement désactiver l'option très facilement sur mon compte, mais je ne savais pas vraiment si cela était suffisant, jusqu'à ce week-end où j'ai eu dans les mains un téléphone avec un lecteur NFC.<br />
<br />
- Premièrement si vous vous voulez une carte sans le symbole NFC, je sais qu'il y a encore HSBC qui les propose !<br />
<br />
- Deuxièmement, il semblerait que la désactivation de l'option NFC empêche toute récupération avec un lecteur NFC (je n'ai pas réussi sur la mienne alors que ça fonctionnait très bien sur une autre carte avec le NFC actif)<br />
<br />
- Troisièmement, les infos récupérées correspondent aux numéros de la carte, la date d'expiration et les 10 dernières transactions. (<span style="text-decoration: underline;">Pas seulement</span> les transactions effectuées avec le paiement sans contact mais bien celles réalisées avec la carte. J'ignorais cette info).<br />
<br />
- Enfin, si vous voulez être rassurés... sachez que le cryptogramme visuel est l'élément manquant des infos, et <span style="text-decoration: underline;">officiellement</span> le code de sécurité CCV2 ou CVC2 n'est pas encore cracké... Personnellement, j'ai un peu été surpris de voir que ces numéros étaient générés, je pensais qu'ils étaient créés aléatoirement <a href="https://fr.wikipedia.org/wiki/Cryptogramme_visuel#G.C3.A9n.C3.A9ration_des_codes_de_s.C3.A9curit.C3.A9_des_cartes">:-(</a><br />
<br />
Je n'ai pas vraiment de sources officielles, mais les principaux problèmes avec les cartes bleues sont le vol des données chez les commerçants peu scrupuleux qui n'hésitent pas à recopier le cryptogramme visuel (surtout si vous voyagez souvent à l'étranger). Bref, une raison de plus de préférer l'argent liquide qui semble être une espèce en voie de disparition.
      


feed_id: http://tontof.net/index.php?2015/07/24/11/43/30-blender-la-solution-pour-le-montage-video
title: Blender : LA solution pour le montage vidéo ?
uri: Blender-LA-solution-pour-le-montage-vidéo
url: http://tontof.net/index.php?2015/07/24/11/43/30-blender-la-solution-pour-le-montage-video
content:
          Pour réaliser un montage vidéo sous linux, il y a 2 approches :<br />
- utiliser un logiciel de montage vidéo user friendly qui vous simplifiera la tâche mais qui vous limitera dans les usages ;<br />
- passer du temps à comprendre comment utiliser un logiciel qui ne vous laissera qu'une limite celle de votre imagination.<br />
<br />
<strong>Le podium des logiciels simples</strong><br />
Je ne vous parle pas des cinelerra, lightworks, vlmc ou autres, je n'ai jamais réussi à les utiliser plus de 10 min :<br />
- <a href="http://heroinewarrior.com/cinelerra.php">Cinelerra</a> (gère peu de formats et n'est pas du tout agréable à prendre en main) ;<br />
- <a href="http://www.lwks.com/">Lightworks</a> (pareil que Cinelerra mais nécessite en plus la création d'un compte sur leur site...) ;<br />
- <a href="http://www.videolan.org/vlmc/">VLMC</a> (qui était très prometteur, mais qui depuis l'annonce de sa sortie en 2011, n'a pas évolué ?).<br />
<br />
Les logiciels avec lesquels on peut faire quelque chose sont KDEnlive, Openshot et Shotcut :<br />
- <a href="https://kdenlive.org/">KDEnlive</a> (est très complet, mais son plus gros défaut c'est les 3 premières lettres de son nom : KDE. Si vous êtes sous un environnement KDE, alors il sera parfait pour vous, sinon, c'est un peu plus compliqué à installer et à utiliser) ;<br />
- <a href="http://openshot.org/">Openshot</a> (vraiment génial dans sa version 1, j'attends avec impatience la version 2 qui sera en plus multi-plateforme. Le point noir actuel c'est la timeline qui ne permet pas de manipuler les séquences vidéos comme on veut facilement) ;<br />
- <a href="http://shotcut.org/bin/view/Shotcut">ShotCut</a> (ne nécessite pas d'installation. Il permet l'importation de code HTML/CSS/JS comme vidéo. Ces défauts sont l'absence d'un vrai éditeur de titres et l'impossibilité d'utiliser des keyframes pour réaliser par exemple des déplacements contrôlés d'une image dans une vidéo. Ces défauts peuvent cependant être plus ou moins comblés par l'utilisation de code HTML).<br />
<br />
<strong>Autres alternatives</strong><br />
Je n'ai pas encore eu le temps de m'intéresser plus en détails à <a href="https://zulko.github.io/moviepy/">moviepy</a>, mais je dois avouer que son approche très différente du montage vidéo classique, me plaît beaucoup. En gros, il suffit de réaliser un script python pour faire votre montage. Quand on voit le résultat de certains montages, ça donne envie :<br />
<a href="https://zulko.github.io/moviepy/gallery.html">https://zulko.github.io/moviepy/gallery.html</a><br />
<br />
Sinon, il y a Blender. On connaît tous Blender pour son moteur 3D. <a href="https://www.youtube.com/watch?v=Vpg9yizPP_g">Big Buck Bunny</a>, ça vous dit quelque chose, non ? Et ben il existe également un mode d'édition vidéo !<br />
<br />
Si, si regardez dans le menu<br />
<img src="media/95488aeb.menu.png" data-original-source="http://tontof.net/img/1437731010/menu.png" alt="Menu Blender"><br />
<br />
Il n'y a que des avantages. C'est multi-plateforme, c'est historiquement parfait, on a du recul sur la qualité du programme et on sait qu'il ne va pas s'arrêter du jour au lendemain. On peut faire ce qu'on veut avec si on a du temps :-)<br />
Parce que oui, il y a un petit temps d'adaptation et il n'est pas vraiment comme un logiciel d'édition vidéo classique.<br />
<br />
Si vous souhaitez prendre en main la bête, je vous conseille cette playlist youtube :<br />
<a href="https://www.youtube.com/playlist?list=PLjyuVPBuorqIhlqZtoIvnAVQ3x18sNev4">https://www.youtube.com/playlist?list=PLjyuVPBuorqIhlqZtoIvnAVQ3x18sNev4</a><br />
Elle est en anglais, mais elle est très bien faite et parle des sujets les plus importants pour bien démarrer !<br />
<br />
<strong>Un peu plus d'infos sur Blender</strong><br />
Pour utiliser Blender, il va falloir comprendre comment sont organisées les choses afin d'en faire ce qu'on a envie.<br />
<br />
Dans un logiciel de montage vidéo classique, pour démarrer un film, l'effet de fondu en ouverture est généralement utilisé (fade-in). Cet effet permet de passer d'une image noire à notre vidéo de manière progressive.<br />
<br />
Avec Blender, vous ne trouverez pas de fade-in ou fade-out. En revanche vous pouvez superposer à votre vidéo, une image noire et ajouter un effet « cross » entre vos 2 strips (en gros les 2 séquences vidéos : votre image/vidéo et l'image noire). Le résultat sera identique à un effet de fade-in ou fade-out. Il faut bien faire attention à l'ordre dans lequel on choisit les strips car cela a une incidence sur le rendu. Pour faire un fade-in, il faut d'abord choisir la strip de la couleur noire puis notre image/vidéo et pour le fade-out, il faut les sélectionner dans l'ordre inverse.<br />
<br />
Pour faire une transition, c'est la même chose, mais avec l'effet « wipe » (dans les options, on peut changer le style de transition : transition simple ou double, iris, horloge).<br />
<br />
Visuellement, vous devriez avoir ceci :<br />
<img src="media/ef985bb4.cross-wipe.png" data-original-source="http://tontof.net/img/1437731010/cross-wipe.png" alt="Cross Wipe Blender"><br />
<br />
Et voilà le résultat :<br />
<img src="media/69cae66b.lenna.gif" data-original-source="http://tontof.net/img/1437731010/lenna.gif" alt="Cross Wipe Blender"><br />
<br />
Bon montage vidéo!<br />

      


feed_id: http://tontof.net/index.php?2015/07/28/11/51/31-les-transitions-dans-blender
title: Les transitions dans Blender
uri: Les-transitions-dans-Blender
url: http://tontof.net/index.php?2015/07/28/11/51/31-les-transitions-dans-blender
content:
          Par défaut, il n'y a pas beaucoup d'effets de transition dans Blender (simple, double, iris et horloge).<br />
<br />
Comment faire pour avoir une transition personnalisée à partir d'une image en niveau de gris ?<br />
<br />
<strong>Récupérer une image de transition</strong><br />
Si vous n'avez pas d'idées, voici les transitions disponibles pour le prochain openshot<br />
<a href="https://github.com/OpenShot/openshot-qt/tree/master/src/transitions/extra">https://github.com/OpenShot/openshot-qt/tree/master/src/transitions/extra</a><br />
<br />
<strong>Créer une transition avec imagemagick</strong><br />
Sinon, il est possible de créer sa propre transition avec par exemple imagemagick :<br />
<a href="http://www.imagemagick.org/Usage/canvas/#gradient_fx">http://www.imagemagick.org/Usage/canvas/#gradient_fx</a><br />
<code><br />
convert -resize 640x480! xc:white -channel G -fx 'cos(pi*(i/w-.5))' -separate -rotate 90 -resize 640x480! -swirl 520 gradient.png<br />
</code><br />
<br />
<img src="media/f03f576f.gradient.png" data-original-source="http://tontof.net/img/1438077091/gradient.png" alt="gradient"><br />
<br />
<strong>Convertir l'image en masque animé</strong><br />
Je ne sais pas si c'est la solution la plus simple, et il existe peut-être quelque chose dans Blender qui permet de faire directement cela, mais à partir de notre image en niveau gris, il faut créer un masque animé.<br />
<code><br />
for i in $(seq -w 0 1 255); do convert gradient.png -flatten -threshold $(echo "100*(${i}/255)" | bc -l)% gradient_${i}.png; done<br />
</code><br />
<br />
On obtient alors 256 images png en noir et blanc.<br />
<br />
Voici ce que ça donne en gif :<code><br />
convert -set delay 1 gradient_* gradient.gif<br />
</code><br />
<img src="media/cf9bd372.gradient.gif" data-original-source="http://tontof.net/img/1438077091/gradient.gif" alt="gradient"><br />
<br />
<strong>Appliquer un masque avec Blender</strong><br />
Tout d'abord, il faut ajouter le masque sur la piste 1 des séquences vidéos. Pour cela, il suffit d'ajouter une image (<code>Add -> Image</code>) et dans la sélection mettre par exemple <code>gradient_*.png</code>. Blender importera alors toutes les images comme une seule séquence vidéo.<br />
<br />
Si on veut pouvoir gérer la longueur de la transition, il faut ajouter un effet de vitesse. Pour cela, il suffit de sélectionner le strip correspondant à notre masque, puis <code>Add -> Effect strip... -> Speed Control</code>. Ainsi, en redimensionnant le strip du masque, cela permettra d'adapter la transition à la longueur désirée.<br />
<br />
Sur les pistes 3 et 4, il faut ensuite disposer nos 2 séquences vidéos qui vont avoir la chance d'avoir une belle transition personnalisée. La première séquence doit se situer sur la piste 4 pour être visible au dessus de la séquence finale qui sera sur la piste 3.<br />
<br />
Ensuite, il faut sélectionner la première séquence sur la piste 4 et lui ajouter le masque. Dans les propriétés, <code>Add strip modifier -> Mask</code> puis dans le champ Mask, il faut choisir le strip speed.<br />
<br />
À ce niveau là, l'effet fonctionne et le strip de la piste 3 disparaît avec l'effet escompté. En revanche, on ne voit pas apparaître le strip de la piste 4. Pour cela, il faut choisir dans les propriétés de la piste 3 : <code>Blend -> Alpha Over</code>.<br />
<br />
Et voilà, c'est terminé :<br />
<img src="media/b8a8a60b.lenna.gif" data-original-source="http://tontof.net/img/1438077091/lenna.gif" alt="lenna"><br />
<br />
Pour ajouter un effet de blur à la transition, 2 solutions s'offrent à vous (mais en fait 1 seule à vraiment utiliser) :<br />
- Ajouter un effet blur directement dans Blender <code>Add -> Effect strip... -> Gaussian Blur</code> (à partir de la version 2.72 je crois). Attention, la prévisualisation et la génération de la vidéo vont être très longues car Blender va recalculer le blur pour chaque image. Dans la pratique, je ne vous conseille pas cette solution ;<br />
- Ajouter un effet blur directement sur le masque avec imagemagick.<br />
<code><br />
for i in $(seq -w 0 1 255); do convert gradient.png -flatten -threshold $(echo "100*(${i}/255)" | bc -l)% -blur 0x6 gradient_${i}.png; done<br />
</code><br />
Attention au paramètre de blur, ici, il est très petit à cause de la taille des images.<br />
<a href="http://www.imagemagick.org/Usage/blur/">http://www.imagemagick.org/Usage/blur/</a><br />
En gros c'est {radius}x{sigma} avec radius qu'on fixe à 0 et sigma c'est la largeur en pixel de l'effet blur.<br />
<br />
<img src="media/a2433747.lenna_blur.gif" data-original-source="http://tontof.net/img/1438077091/lenna_blur.gif" alt="lenna blur">
      


feed_id: http://tontof.net/index.php?2015/07/30/11/58/18-rsi-regime-social-incomprehensible
title: RSI : Régime social incompréhensible
uri: RSI-Régime-social-incompréhensible
url: http://tontof.net/index.php?2015/07/30/11/58/18-rsi-regime-social-incomprehensible
content:
          TLDR : mes déboires avec le RSI, ne vous sentez pas obligé de lire, c'est juste au cas où cela puisse servir à d'autres :-p<br />
<br />
J'ai hésité avec incompétent pour le titre, mais j'avais peur de représailles et je me suis dit que c'était peut-être moi qui l'était au regard de mon acharnement de plusieurs mois qui vient d'aboutir par un REJET !<br />
<br />
Pour me rassurer, je me dis que je ne suis pas le seul à avoir des problèmes avec le RSI : <a href="http://www.sauvonsnosentreprises.fr/51+concernant-le-rsi.html">http://www.sauvonsnosentreprises.fr/51+concernant-le-rsi.html</a><br />
<br />
Si j'ai lu beaucoup de commentaires de personnes qui se trouvent dans la même situation que moi et qui ont demandé de l'aide, je n'en ai pas vraiment trouvé qui expliquait les démarches qu'ils avaient entrepris pour essayer de changer les choses.<br />
<br />
J'espère que mon retour servira à d'autres même si je n'ai pas vraiment réussi à faire avancer le schmilblick. Pour résumé, j'ai eu un problème d'affiliation : je suis marqué comme artisan alors que je suis en profession libérale...<br />
<br />
Tout commence fin avril 2013, quand je me lance dans l'auto-entreprise. C'est pour simplifier la partie administrative, qu'on m'avait dit. Après m'être pas mal renseigné, je savais que je devais dépendre de la profession libérale et j'ai donc rempli le bon papier :<br />
<br />
<img src="media/c446ce3c.declaration.png" data-original-source="http://tontof.net/img/1438250298/declaration.png" alt="déclaration"><br />
<br />
Pour la déclaration de l'activité, j'étais un peu indécis car je ne savais pas exactement ce que j'allais faire. J'avais une première piste pour travailler en sous-traitance pour le développement d'un site. Mais j'avais également pensé faire des formations à domicile et pourquoi pas du dépannage.<br />
<br />
Je remplis donc en choisissant une activité qui me semblait pouvoir regrouper un peu tout sans me limiter. (Maintenant je sais qu'en fait, ça ne sert pas à grand chose d'essayer d'être le plus précis possible car j'aurais choisi le truc le plus simple, comme Conception de site web, Développement, ça m'aurait évité tous mes déboires sans m'empêcher de faire d'autres choses)<br />
<br />
<img src="media/4caa29e8.declaration-activite.png" data-original-source="http://tontof.net/img/1438250298/declaration-activite.png" alt="déclaration activité"><br />
<br />
J'avais vérifié et quand j'ai fait ma déclaration, cette activité, qui a pour code APE 6209Z, pouvait dépendre du secteur de l'artisanat ou de la profession libérale. Maintenant, les choses auraient été différentes car ce code est uniquement associé à l'artisanat et j'aurais su que ce n'était pas bon.<br />
<br />
Peu de temps après ma déclaration, je reçois un mail me demandant d'indiquer en quoi consiste mon activité de PRESTATAIRE EN INFORMATIQUE.<br />
<br />
Je réponds en disant que j'avais eu du mal à choisir parce que j'envisageais plusieurs choses. Mais suite à ce mail qui est resté sans réponse, les ennuis ont commencé sans que je m'en aperçoive. J'ai appris bien plus tard que c'est ce mail qui est à l'origine de tous mes problèmes.<br />
<br />
Pendant presque 1 an j'ai effectué mes déclarations sur le site www.lautoentrepreneur.fr jusqu'au jour où arrive la déclaration des impôts. J'ai une amie qui est dans la même situation que moi et nous n'avons pas reçu les mêmes papiers. En cherchant, je m'aperçois, que c'est parce que je suis considéré comme artisan :-(<br />
<br />
Je me renseigne donc auprès du RSI qui ne sait pas vraiment quoi me dire et me conseille de faire un changement d'activité.<br />
<br />
<img src="media/9dc2f924.modification.png" data-original-source="http://tontof.net/img/1438250298/modification.png" alt="modification"><br />
<br />
Et voici que je choisis l'activité Conception de site web, Développement, Vente de solutions informatiques ce qui me permettra d'avoir le code APE 6201Z qui dépend de la profession libérale : <a href="media/86b855bd.observatoire-de-l-activite-liberale-guide-methodologique.pdf" data-original-source="http://www.entreprises.gouv.fr/files/files/directions_services/cnapl/observatoire/etudes/observatoire-de-l-activite-liberale-guide-methodologique.pdf">http://www.entreprises.gouv.fr/files/files/directions_services/cnapl/observatoire/etudes/observatoire-de-l-activite-liberale-guide-methodologique.pdf</a><br />
<br />
<img src="media/68e3d677.modification-activite.png" data-original-source="http://tontof.net/img/1438250298/modification-activite.png" alt="modification activité"><br />
<br />
En septembre, je reçois un papier du RSI m'indiquant :<br />
« Vous exercez, désormais, une activité libérale. »<br />
Ce papier, je l'avais complètement zappé, car pour moi, c'était juste normal et tout était rentré dans l'ordre.<br />
<br />
Pendant ces modifications, j'ai appris que j'avais été radié (au lieu d'une simple modification d'activité). Je n'ai donc pas pu faire mes déclarations en ligne et je devais donc aller directement à l'URSSAF pour payer car je n'avais plus d'accès en ligne. Quand j'ai été recréé j'ai reçu par courrier 17 fiches de déclaration comme si je devais tout redéclarer depuis avril 2013. J'espère que c'était automatique parce que sinon, je plains le gars qui à fait les enveloppes...<br />
<br />
Je commence aussi à recevoir des papiers de la CIPAV qui gère justement les professions libérales. Ils me demandent de leur payer les cotisations.<br />
<br />
Je reçois ensuite un courrier de mise en demeure de la CIPAV pour cotisations impayées et quand je les ai par téléphone, ils me disent de ne pas m'inquiéter et de simplement leur envoyer un justificatif de mon statut d'auto-entrepreneur et qu'ils feront les démarches pour demander les cotisations au RSI. Bien sûr, je demande le papier au RSI, je l'envoie à la CIPAV qui met un temps relativement long à traiter les courriers mais qui semblent plutôt efficaces contrairement aux autres organismes. Ils m'indiquent que ce n'est pas un papier du RSI qu'ils veulent, mais de l'URSSAF... Du coup, c'est encore en cours et j'espère qu'avec ce nouveau papier ce sera bon. Bien sûr, l'envoi par mail aurait été beaucoup trop simple...<br />
<br />
Quand j'ai de nouveau accès au site www.lautoentrepreneur.fr je vois que je suis toujours considéré comme artisan. (J'ai zappé la lettre de septembre qui m'indiquait pourtant que j'étais bien en profession libérale)<br />
<br />
Je retourne donc au RSI et leur dit que je veux faire une contestation d'affiliation. Ils me disent qu'ils ne peuvent rien faire et qu'il faut que j'envoie une lettre au siège. J'écris donc au siège pour leur dire que je suis mal affilié.<br />
<br />
- J'ai une réponse rapide (1 mois) pour me dire qu'avec le code APE 6209Z je suis bien artisan.<br />
<br />
Je me dis qu'ils n'ont même pas pris la peine de regarder mon dossier car ce code APE n'est plus le bon. Je leur écris une seconde fois pour leur dire qu'ils se sont trompés de code APE.<br />
<br />
- Réponse rapide (1 mois) qui m'indique que même avec le code APE 6201Z je suis artisan à cause de mon activité principale.<br />
<br />
Je ne comprends pas, je n'ai qu'une seule activité, je ne vois pas de quoi ils parlent, je retourne au RSI et j'arrive à avoir une personne au téléphone du siège qui me dit que c'est bien normal que je sois en artisan. J'apprends que c'est suite à une enquête et qu'à leur niveau, ils ne peuvent rien faire. Je leur demande ce que je dois faire pour faire faire la modification et elle me dit de faire un dossier qui justifie que je suis bien en profession libérale. Je n'ai évidemment aucune information sur les pièces à fournir.<br />
<br />
Je regarde donc sur les sites de référence comme la CIPAV, entreprises.gouv.fr et j'imprime des papiers qui montrent que je suis bien en profession libérale. J'envoie le courrier en mars.<br />
<br />
Évidemment pour ne pas simplifier les choses, j'ai déménagé entre temps, ce qui m'a fait changé de SIRET et j'ai retrouvé le papier de septembre où le RSI me dit que je suis en activité libérale...<br />
<br />
Sur tous les sites où j'indique mon SIREN/SIRET j'apparais en profession libérale. Sauf sur le site de www.lautoentrepreneur.fr qui me considère encore comme artisan.<br />
<br />
Et voici 4 mois après, que je reçois la réponse : REJET.<br />
<br />
Des articles du code de la sécurité sociale L 133-6, L 133-6-1, L 621-3, L 622-3, L 622-7 comme justification et à priori c'est la faute du Centre National d'Immatriculation Commune d'Auray (CNIC) qui a choisit définitivement mon affiliation ?? Vous vous souvenez le fameux mail. C'était ça...<br />
<br />
Mon dernier recours possible le tribunal des affaires de sécurité sociale qui « examinera [le] litige au regard des seules règles de droit applicables en l'espèce (...) qui ne prévoient pas de dérogation pour les cas particuliers »<br />
<br />
Bien sûr si le tribunal estime mon recours abusif ou dilatoire, je peux avoir une amende... Du coup, je pense que c'est suffisamment dissuasif pour tenter quand bien même je pense qu'ils sont dans l'erreur. J'ai 2 papiers de leur part complètement contradictoire :<br />
<br />
- Celui de septembre 2014 qui m'indique que je suis en activité libérale :<br />
<img src="media/866dd390.activite-liberale.png" data-original-source="http://tontof.net/img/1438250298/activite-liberale.png" alt="activité libérale"><br />
<br />
- Celui de juillet 2015 qui m'indique qu'ils ne veulent pas me mettre en activité libérale :<br />
<img src="media/4572c8f5.pas-activite-liberale.png" data-original-source="http://tontof.net/img/1438250298/pas-activite-liberale.png" alt="pas activité libérale"><br />
<br />
Allez comprendre. Bien sûr quand tout se passe par courrier et qu'il n'y a personne en face à qui poser les questions, les choses ne peuvent pas vraiment se débloquer. Les bureaux du RSI ne servent pas à grand chose, ils sont remplis de secrétaires qui ne comprennent pas mieux que moi ce qu'il se passe et qui sont impuissants face à cette situation.<br />
<br />
Euh ben voilà, je n'ai plus qu'à attendre une réponse de la CIPAV qui j'espère me confirmera qu'avec ce nouveau papier, c'est bon. Je vais aussi essayer de joindre le CNIC pour avoir leur avis car a priori tout dépendrait d'eux... Bien sûr, on trouve très peu d'info à leur sujet sur la toile et le seul numéro que j'ai sonne dans le vide :-(<br />
<br />
Je vais aller voir mon médecin pour savoir si je peux déclarer une phobie administrative, et avoir ainsi une dispense...
      


feed_id: http://tontof.net/index.php?2015/10/01/17/45/13-kriss-feed-est-mort-vive-kriss-feed
title: KrISS feed est mort, vive KrISS feed !
uri: KrISS-feed-est-mort-vive-KrISS-feed
url: http://tontof.net/index.php?2015/10/01/17/45/13-kriss-feed-est-mort-vive-kriss-feed
content:
          Quand je vois passer des messages sur KrISS feed, je ne réponds pas souvent, car quand il s'agit de questions générales sur l'outil lui même, la plupart du temps, je vois d'autres personnes répondre et c'est bien chouette (en plus de faire plaisir). Les seules questions auxquelles je réponds toujours sont celles qu'on m'envoie directement par mail (oui je sais je n'ai toujours pas de page contact, mais je suis joignable sur free.fr :-)) ou sur github (même si parfois d'<a href="https://github.com/tontof/kriss_feed/issues/363">autres</a> sont plus rapides que moi :-p)<br />
<br />
Ce qui est drôle aussi, c'est que bien souvent, on me transmet des messages pour me dire qu'on parle de KrISS feed ou autre et ça aussi c'est bien chouette parce que j'avoue ne pas savoir comment font les gens pour suivre autant de flux RSS. Je pense tourner autour de 100/150 articles par jour et je trouve que ça fait déjà énormément (heureusement, qu'il y a beaucoup de photos de chatons qui ne demandent que quelques secondes avant que j'appuie sur 'n').<br />
<br />
Par contre, quand on demande si KrISS feed est en vie, il n'y a malheureusement pas grand monde qui puisse se substituer pour répondre à cette question à ma place. Comme cela fait un petit moment, je me suis dit que ça ferait l'occasion de donner des news sur le projet, les autres projets et le reste. La réponse n'étant pas 42.<br />
<br />
Pour moi, ce qui fait qu'un outil est en vie ou pas, ce n'est pas tant le fait qu'il y ait eu des mises à jour récentes ou pas, mais surtout est-ce qu'il est encore utilisé et qu'il fonctionne encore. Pour ma part, j'utilise toujours KrISS feed quotidiennement et je pense ne pas pouvoir m'en passer encore longtemps. Alors est-ce que KrISS feed est encore en vie, la réponse est oui sans hésiter ! Heureusement, il n'est d'ailleurs pas tout seul :<br />
- <a href="https://freshrss.org">https://freshrss.org</a><br />
- <a href="https://miniflux.net">https://miniflux.net</a><br />
- <a href="https://leed.idleman.fr">https://leed.idleman.fr</a><br />
- et pleins d'autres TTRSS, selfoss, etc.<br />
<br />
Pour le moment, si mes projets n'avancent pas publiquement, ce n'est ni un <a href="https://i.chzbgr.com/full/8570497280/hCC8D14DE/">manque d'idée ou de motivation</a>, mais un manque de temps. J'ai tout un tas d'idées que j'aimerais développer (comme beaucoup), mais avant d'avancer, j'ai envie d'avoir une base solide qui me permette de continuer à développer en plusieurs fichiers tout en les fusionnant pour n'avoir qu'un seul fichier final pour les utilisateurs. Franchement, quand je dois tester des logiciels et que je dois transférer 1 946 fichiers par FTP pour tester un logiciel de réservations (phpScheduleIt pour ne pas le citer), je me dis que cette histoire de fichier unique est juste géniale. Je ne comprends d'ailleurs pas comment ça se fait qu'il y ait si peu de solutions qui soient en un seul fichier.<br />
<br />
Alors oui, il reste encore des problèmes avec KrISS feed, mais en fait pas tant que ça :<br />
- Celui de corruption des données semblent être <a href="https://github.com/tontof/kriss_feed/issues/340#issuecomment-92751388">résolu</a> depuis une tentative de <a href="https://github.com/tontof/kriss_feed/issues/340#issuecomment-61642218">correction</a>. Je n'ai jamais rencontré ce problème et comme la correction alourdit le code (de mon point de vue), je ne l'ai pas ajouté dans le code principal (je vois ça comme une option/un plugin en plus qu'il faudrait faire).<br />
- Il y a des problèmes avec le service de favicon qui est tombé en rade. En attendant de trouver une meilleure solution, j'ai quand même proposé un nouveau code qui se trouve dans le dossier <a href="https://raw.githubusercontent.com/tontof/kriss_feed/master/src/index.php">dev</a> qui se base sur google. Heureusement que c'est mis en cache au premier appel :-)<br />
<a href="http://www.google.com/s2/favicons?domain=http://tontof.net/feed">http://www.google.com/s2/favicons?domain=http://tontof.net/feed</a><br />
<br />
Même si publiquement, je ne donne pas beaucoup signe de vie, je continue de réfléchir et de tester des choses pour voir comment je peux améliorer KrISS feed. Dans mes idées, je voudrais m'orienter vers une solution qui automatise la création d'une grosse partie du code. J'ai par exemple lu tout le contenu du <a href="https://r.je/">blog de Tom Butler</a> que j'ai trouvé très intéressant. J'aimerais d'ailleurs voir si je ne peux pas utiliser ses <a href="https://github.com/Level-2/">codes</a> pour améliorer KrISS feed. Je travaille beaucoup avec Symfony et j'apprécie l'injection de dépendance et la structure MVC (mais aussi MVVM, ADR, etc.). Alors je m'oriente petit à petit vers ces approches sans pour autant perdre l'idée que je veux que ça reste léger ! Dans mon idée principale, j'aimerais avoir besoin de seulement définir mes objets principaux pour avoir une appli CRUD/REST fonctionnelle avec toujours le fichier unique et la fonctionnalité sans javascript ! Dans les autres idées, il y a l'utilisation de <a href="https://github.com/badphp/dispatch">https://github.com/badphp/dispatch</a> que je trouve intéressante. Une fois que je serais satisfait de ma base principale, j'essayerai d'appliquer ça a un exemple concret comme KrISS feed, puis KrISS blog que je n'ai pas fait évoluer depuis longtemps puis KrISS link que j'utilise aussi tous les jours même si je suis le seul car il reste un concept basé sur shaarli 0.0.40beta.<br />
<br />
Malheureusement, il me manque du temps. Pour le moment, le temps libre que j'ai, je le passe sur un autre projet perso qui j'espère me permettra d'avoir plus de temps libre pour continuer mes projets KrISS. KrISS se sont des projets persos que j'utilise pour mon usage personnel et que je souhaite continuer de distribuer en copyleft (ɔ). Mais pour essayer de gagner de l'argent avec un autre projet, je suis en train de développer quelque chose que j'espère pouvoir vous faire découvrir l'année prochaine ! En attendant, je continue de corriger quand quelque chose ne va pas/plus, mais je n'améliore pas/plus vraiment. Ça reste dans l'idée :<br />
« Il semble que la perfection soit atteinte non quand il n’y a plus rien à ajouter, mais quand il n’y a plus rien à retrancher. » <a href="http://www.antoinedesaintexupery.com/terre-des-hommes-1939">Antoine de Saint-Exupéry</a> (oui je me répète)<br />
<br />
J'aimerais que KrISS feed et les autres soient parfaits, mais il reste encore du chemin. J'espère à très vite pour de nouvelles mises à jour !<br />

      


feed_id: http://tontof.net/index.php?2016/03/04/20/13/09-kriss-mvvm-sur-github
title: KrISS MVVM sur Github
uri: KrISS-MVVM-sur-Github
url: http://tontof.net/index.php?2016/03/04/20/13/09-kriss-mvvm-sur-github
content:
          Je reste silencieux en ces temps où il faudrait s'écrier haut et fort qu'il faut que ça change.<br />
<br />
En attendant.. Je vais essayer de prendre de bonnes résolutions et vous parler de tous ces projets que je garde de mon côté égoïstement. Les raisons sont différentes en fonction des projets, mais il ne faut plus que ça dure. La première étape de ce long travail est de vous présenter brièvement l'état actuel des choses.<br />
<span style="text-decoration: underline;">KrISS edit</span> : A simple and smart (or stupid) website editor (Un projet tout récent que je trouve prometteur mais qui nécessite encore un minimum de fonctionnalités pour être présenté.)<br />
<span style="text-decoration: underline;">KrISS fbwg</span> : A simple and smart (or stupid) facebook website generator (4 mois que j'ai créé le repo github et qu'il n'a pas bougé alors que le projet est fonctionnel pour la partie principale. Il va falloir que je prenne un moment pour épurer le code mais ça ne devrait pas être trop long)<br />
<span style="text-decoration: underline;">KrISS zoom</span> : A simple and smart (or stupid) image to video blender script convert with pan and zoom (9 mois qu'il existe alors qu'il est entièrement fonctionnel et que je n'envisage même pas de le faire évoluer. C'était une petite expérimentation personnelle avec blender et il faut juste que j'écrive un README...)<br />
<span style="text-decoration: underline;">KrISS tuto</span> : (1 an sans nouvelle alors que j'ai ajouté une partie HTML/CSS. Il faut juste que je prenne le temps de le mettre à jour)<br />
<span style="text-decoration: underline;">KrISS send</span> : (3 ans mais ce n'est qu'un début parce qu'il n'y a aucune ligne de code pour ce projet, c'est juste une idée dans ma tête pour ne pas oublier...)<br />
<br />
Tout ça pour arriver à vous présenter le tout nouveau KrISS MVVM : A simple and smart (or stupid) MVVM framework<br />
<a href="https://github.com/kriss/mvvm">https://github.com/kriss/mvvm</a><br />
<br />
Vous avez vu le lien ?<br />
J'ai pu bénéficier du pseudo kriss parce qu'il faisait partie de ces comptes dormants inutilisés.<br />
<a href="https://help.github.com/articles/name-squatting-policy">https://help.github.com/articles/name-squatting-policy</a><br />
<br />
Quand je vous dis que j'aimerais que le code de KrISS feed évolue, c'est dans l'optique de pouvoir faire ça avec KrISS MVVM. Pour le moment ça reste très basique et ne fonctionne que pour les classes simples. C'est un projet WIPOC (Work In Progress and Proof Of Concept).<br />
<br />
Dans l'idée vous créez une classe PHP et ça suffit pour avoir toutes les pages CRUD (Create, Read, Update, Delete). C'est prévu pour être super flexible et je me dis qu'il y a peut-être quelque chose à faire dans ce sens. Je ne sais pas comment il va évoluer mais j'aime bien ce début (même si il reste plusieurs choses qui me déplaisent comme l'utilisation du host dans les vues qu'il faudrait déléguer au routeur...).<br />
<br />
Pour avoir un petit aperçu, vous pouvez aller voir le résultat de <br />
<a href="https://github.com/kriss/mvvm/blob/master/mini.php">https://github.com/kriss/mvvm/blob/master/mini.php</a><br />
sur<br />
<a href="http://tontof.net/mvvm/mini.php/test">http://tontof.net/mvvm/mini.php/test</a><br />
Bon comme c'est la version mini c'est pas terrible ça permet d'accéder à toutes les classes dispos en PHP. Du coup on peut aller sur<br />
<a href="http://tontof.net/mvvm/mini.php/datetime">http://tontof.net/mvvm/mini.php/datetime</a><br />
<br />
Bien sûr dans une vraie application, il est possible de définir les urls accessibles<br />
<a href="https://github.com/kriss/mvvm/blob/master/index.php#L23">https://github.com/kriss/mvvm/blob/master/index.php#L23</a><br />
Ce fichier peut paraître impressionnant mais en fait, il est juste utilisé pour tester toutes les possibilités de KrISS MVVM et tous les blocs peuvent être mis en commentaires en fonction des besoins. KrISS MVVM est vraiment prévu pour être flexible. Du coup on peut modifier le comportement par défaut en disant qu'on veut utiliser une autre classe à la place de celle prévu par défaut et c'est tout.<br />
<a href="http://tontof.net/mvvm/index.php">http://tontof.net/mvvm/index.php</a><br />
<br />
Du coup, les données pour config et configs sont stockées dans un fichier texte php, alors que user utilise une base sqlite grâce à Maphper.<br />
<br />
Il faut que je prenne un peu du temps pour ajouter des commentaires parce que ce n'est pas forcément très accessible. Il faut bien comprendre l'injection de dépendances car c'est principalement ça qui fait toute la magie du projet.<br />
<br />
Je ne peux que vous conseiller le blog (en anglais de Tom Bulter) <a href="https://r.je">https://r.je</a><br />
Il a vraiment été la source d'inspiration principale de ce projet.<br />
<br />
J'espère à très vite pour le prochain projet (sûrement KrISS zoom)
      


feed_id: http://tontof.net/index.php?2016/03/13/19/24/18-kriss-zoom-avec-blender
title: KrISS zoom avec blender
uri: KrISS-zoom-avec-blender
url: http://tontof.net/index.php?2016/03/13/19/24/18-kriss-zoom-avec-blender
content:
          Je vous avais promis un petit script python pour travailler avec blender. Il permet de convertir des images en vidéo avec des effets de déplacement et de zoom :<br />
<br />
<a href="https://raw.githubusercontent.com/tontof/kriss_zoom/master/kriss_zoom.py">https://raw.githubusercontent.com/tontof/kriss_zoom/master/kriss_zoom.py</a><br />
<br />
Il est ultra simple d'utilisation et tout s'effectue en ligne de commande dans un terminal.<br />
Pour avoir un aperçu rapide, je vous invite à jeter un coup d’œil dans les exemples :<br />
<a href="https://github.com/tontof/kriss_zoom#examples">https://github.com/tontof/kriss_zoom#examples</a><br />
<br />
Il faut bien sûr avoir blender d'installé :-)
      


feed_id: http://tontof.net/index.php?2016/06/24/06/24/32-usurpation-d-user-agent
title: Usurpation d'user-agent
uri: Usurpation-d-user-agent
url: http://tontof.net/index.php?2016/06/24/06/24/32-usurpation-d-user-agent
content:
          Quand on cherche un type de fichier précis, il y a l'option filetype. Mais quand on ne trouve pas sur <a href="https://duckduckgo.com/">DDG</a> on peut alors utiliser !g qui parfois, il faut bien l'admettre retourne plus de résultats.<br />
<br />
Et là, on pense trouver ce qu'on cherche... C'est un exemple ici, je ne cherchais pas ce livre qu'on peut d'ailleurs lire en ligne <a href="http://www.catb.org/esr/writings/taoup/html/">http://www.catb.org/esr/writings/taoup/html/</a> :<br />
<div><h3  style="border-color: rgb(34, 34, 34); color: rgb(34, 34, 34); display: block; font-family: arial,sans-serif; font-size: 18px; font-weight: 700; height: 21.6px; line-height: 21.6px; margin-top: 18px; outline-color: rgb(34, 34, 34); overflow: hidden; perspective-origin: 300px 10.8px; text-align: left; text-decoration: none rgb(34, 34, 34); text-emphasis-color: rgb(34, 34, 34); text-overflow: ellipsis; transform-origin: 300px 10.8px 0px; white-space: nowrap; width: 600px; -moz-column-gap: 18px; -moz-column-rule-color: rgb(34, 34, 34);" ><span  style="border-color: rgb(26, 13, 171); color: rgb(26, 13, 171); display: block; float: left; font-family: arial,sans-serif; font-size: 10px; font-weight: 700; height: 12px; line-height: 12px; margin-right: 3px; outline-color: rgb(26, 13, 171); perspective-origin: 13px 6px; text-align: left; text-decoration: none rgb(26, 13, 171); text-emphasis-color: rgb(26, 13, 171); transform-origin: 13px 6px 0px; unicode-bidi: normal; white-space: nowrap; width: 26px; -moz-column-gap: 10px; -moz-column-rule-color: rgb(26, 13, 171);" >[PDF]</span><a  style="border-color: rgb(26, 13, 171); color: rgb(26, 13, 171); cursor: pointer; display: inline; font-family: arial,sans-serif; font-size: 18px; font-weight: 700; line-height: 21.6px; outline-color: rgb(26, 13, 171); perspective-origin: 199px 10.5px; text-align: left; text-decoration: none rgb(26, 13, 171); text-emphasis-color: rgb(26, 13, 171); transform-origin: 199px 10.5px 0px; unicode-bidi: normal; white-space: nowrap; -moz-column-gap: 18px; -moz-column-rule-color: rgb(26, 13, 171);"  href="media/f7fbf80c." data-original-source="http://anonym.to/">The Art of Unix Programming - GEEKBOOKS .me</a></h3><div  style="border-color: rgb(84, 84, 84); color: rgb(84, 84, 84); display: block; font-family: arial,sans-serif; font-size: 13px; height: 71.4px; line-height: 18px; max-width: 624px; outline-color: rgb(84, 84, 84); perspective-origin: 300px 35.7px; text-align: left; text-decoration: none rgb(84, 84, 84); text-emphasis-color: rgb(84, 84, 84); transform-origin: 300px 35.7px 0px; width: 600px; -moz-column-gap: 13px; -moz-column-rule-color: rgb(84, 84, 84);" ><div  style="border-color: rgb(84, 84, 84); color: rgb(84, 84, 84); display: block; font-family: arial,sans-serif; font-size: 13px; height: 71.4px; line-height: 18px; outline-color: rgb(84, 84, 84); perspective-origin: 300px 35.7px; text-align: left; text-decoration: none rgb(84, 84, 84); text-emphasis-color: rgb(84, 84, 84); transform-origin: 300px 35.7px 0px; width: 600px; -moz-column-gap: 13px; -moz-column-rule-color: rgb(84, 84, 84);" ><div   style="border-color: rgb(128, 128, 128); color: rgb(128, 128, 128); display: block; font-family: arial,sans-serif; font-size: 13px; height: 17px; line-height: 16px; outline-color: rgb(128, 128, 128); perspective-origin: 300px 8.5px; text-align: left; text-decoration: none rgb(128, 128, 128); text-emphasis-color: rgb(128, 128, 128); transform-origin: 300px 8.5px 0px; white-space: nowrap; width: 600px; -moz-column-gap: 13px; -moz-column-rule-color: rgb(128, 128, 128);"><cite  style="border-color: rgb(0, 102, 33); color: rgb(0, 102, 33); display: inline; font-family: arial,sans-serif; font-size: 14px; font-style: italic; line-height: 16px; outline-color: rgb(0, 102, 33); perspective-origin: 252.5px 8px; text-align: left; text-decoration: none rgb(0, 102, 33); text-emphasis-color: rgb(0, 102, 33); transform-origin: 252.5px 8px 0px; unicode-bidi: normal; white-space: nowrap; -moz-column-gap: 14px; -moz-column-rule-color: rgb(0, 102, 33);" >https://www.<b  style="border-color: rgb(0, 102, 33); color: rgb(0, 102, 33); display: inline; font-family: arial,sans-serif; font-size: 14px; font-style: italic; font-weight: 700; line-height: 16px; outline-color: rgb(0, 102, 33); perspective-origin: 38px 8px; text-align: left; text-decoration: none rgb(0, 102, 33); text-emphasis-color: rgb(0, 102, 33); transform-origin: 38px 8px 0px; unicode-bidi: normal; white-space: nowrap; -moz-column-gap: 14px; -moz-column-rule-color: rgb(0, 102, 33);" >geekbooks</b>.me/books/9f/4b/.../<b  style="border-color: rgb(0, 102, 33); color: rgb(0, 102, 33); display: inline; font-family: arial,sans-serif; font-size: 14px; font-style: italic; font-weight: 700; line-height: 16px; outline-color: rgb(0, 102, 33); perspective-origin: 54px 8px; text-align: left; text-decoration: none rgb(0, 102, 33); text-emphasis-color: rgb(0, 102, 33); transform-origin: 54px 8px 0px; unicode-bidi: normal; white-space: nowrap; -moz-column-gap: 14px; -moz-column-rule-color: rgb(0, 102, 33);" >the_art_of_unix</b>_<b  style="border-color: rgb(0, 102, 33); color: rgb(0, 102, 33); display: inline; font-family: arial,sans-serif; font-size: 14px; font-style: italic; font-weight: 700; line-height: 16px; outline-color: rgb(0, 102, 33); perspective-origin: 45.5px 8px; text-align: left; text-decoration: none rgb(0, 102, 33); text-emphasis-color: rgb(0, 102, 33); transform-origin: 45.5px 8px 0px; unicode-bidi: normal; white-space: nowrap; -moz-column-gap: 14px; -moz-column-rule-color: rgb(0, 102, 33);" >programming</b>.pdf</cite></div><div  style="border-color: rgb(128, 128, 128); color: rgb(128, 128, 128); display: block; font-family: arial,sans-serif; font-size: 13px; height: 18px; line-height: 18px; outline-color: rgb(128, 128, 128); perspective-origin: 300px 9px; text-align: left; text-decoration: none rgb(128, 128, 128); text-emphasis-color: rgb(128, 128, 128); transform-origin: 300px 9px 0px; width: 600px; -moz-column-gap: 13px; -moz-column-rule-color: rgb(128, 128, 128);" >de ES Raymond - ‎2003 - ‎<a  style="border-color: rgb(26, 13, 171); color: rgb(26, 13, 171); cursor: pointer; display: inline; font-family: arial,sans-serif; font-size: 13px; line-height: 18px; outline-color: rgb(26, 13, 171); perspective-origin: 36.5px 7.5px; text-align: left; text-decoration: none rgb(26, 13, 171); text-emphasis-color: rgb(26, 13, 171); transform-origin: 36.5px 7.5px 0px; unicode-bidi: normal; -moz-column-gap: 13px; -moz-column-rule-color: rgb(26, 13, 171);"  href="">Cité 452&nbsp;fois</a> - ‎<a  style="border-color: rgb(26, 13, 171); color: rgb(26, 13, 171); cursor: pointer; display: inline; font-family: arial,sans-serif; font-size: 13px; line-height: 18px; outline-color: rgb(26, 13, 171); perspective-origin: 42px 7.5px; text-align: left; text-decoration: none rgb(26, 13, 171); text-emphasis-color: rgb(26, 13, 171); transform-origin: 42px 7.5px 0px; unicode-bidi: normal; -moz-column-gap: 13px; -moz-column-rule-color: rgb(26, 13, 171);"  href="">Autres articles</a></div><span  style="border-color: rgb(84, 84, 84); color: rgb(84, 84, 84); display: inline; font-family: arial,sans-serif; font-size: 13px; line-height: 18.2px; outline-color: rgb(84, 84, 84); perspective-origin: 275.5px 7.5px; text-align: left; text-decoration: none rgb(84, 84, 84); text-emphasis-color: rgb(84, 84, 84); transform-origin: 275.5px 7.5px 0px; unicode-bidi: normal; word-wrap: break-word; -moz-column-gap: 13px; -moz-column-rule-color: rgb(84, 84, 84);" ><span  style="border-color: rgb(128, 128, 128); color: rgb(128, 128, 128); display: inline; font-family: arial,sans-serif; font-size: 13px; line-height: 18.2px; outline-color: rgb(128, 128, 128); perspective-origin: 40px 7.5px; text-align: left; text-decoration: none rgb(128, 128, 128); text-emphasis-color: rgb(128, 128, 128); transform-origin: 40px 7.5px 0px; unicode-bidi: normal; word-wrap: break-word; -moz-column-gap: 13px; -moz-column-rule-color: rgb(128, 128, 128);" >9 déc. 2002 - </span><em  style="border-color: rgb(106, 106, 106); color: rgb(106, 106, 106); display: inline; font-family: arial,sans-serif; font-size: 13px; font-style: italic; font-weight: 700; line-height: 18.2px; outline-color: rgb(106, 106, 106); perspective-origin: 22.5px 7.5px; text-align: left; text-decoration: none rgb(106, 106, 106); text-emphasis-color: rgb(106, 106, 106); transform-origin: 22.5px 7.5px 0px; unicode-bidi: normal; word-wrap: break-word; -moz-column-gap: 13px; -moz-column-rule-color: rgb(106, 106, 106);" >The Art</em> of <em  style="border-color: rgb(106, 106, 106); color: rgb(106, 106, 106); display: inline; font-family: arial,sans-serif; font-size: 13px; font-style: italic; font-weight: 700; line-height: 18.2px; outline-color: rgb(106, 106, 106); perspective-origin: 14px 7.5px; text-align: left; text-decoration: none rgb(106, 106, 106); text-emphasis-color: rgb(106, 106, 106); transform-origin: 14px 7.5px 0px; unicode-bidi: normal; word-wrap: break-word; -moz-column-gap: 13px; -moz-column-rule-color: rgb(106, 106, 106);" >Unix</em>. <em  style="border-color: rgb(106, 106, 106); color: rgb(106, 106, 106); display: inline; font-family: arial,sans-serif; font-size: 13px; font-style: italic; font-weight: 700; line-height: 18.2px; outline-color: rgb(106, 106, 106); perspective-origin: 27px 7.5px; text-align: left; text-decoration: none rgb(106, 106, 106); text-emphasis-color: rgb(106, 106, 106); transform-origin: 27px 7.5px 0px; unicode-bidi: normal; word-wrap: break-word; -moz-column-gap: 13px; -moz-column-rule-color: rgb(106, 106, 106);" >Program</em>- ming. Rule of Robustness: Robustness is the child of transparency and simplicity. 41. Rule of Representation: Fold&nbsp;...</span></div></div></div><br />
On clique en espérant voir s'afficher un joli pdf dans le navigateur et paf. On tombe sur une page web qui nous propose de télécharger le pdf. Bien sûr quand on clique sur le lien, on nous invite gentiment à l'inscription...<br />
<br />
Bon, j'avoue que j'aurais pu cliquer sur un autre résultat parce qu'il y en avait plusieurs, mais sur le principe je n'ai pas trop apprécié.<br />
<br />
Du coup je fais un clic droit pour copier le lien, mais bien sur ils ont désactivé cette possibilité. Tant pis je vais devoir aller sur un autre résultat...<br />
<br />
Non je déconne bien sûr, Firefox est là pour me sauver, je fais [Shift + Clic droit] et hop, copier l'adresse du lien. Après avoir vérifier, ce n'est pas possible de faire la même chose sous Chromium. Franchement, merci Firefox de faire ça par défaut parce que cette pratique est juste ridicule...<br />
<br />
C'est bien gentil tout ça, mais ce lien est celui qui m'a redirigé sur cette page. Donc ça me sert à rien d'essayer de le télécharger directement. Je me dit que si Google propose le pdf c'est que le site fournit le pdf à Google. Direction <a href="https://support.google.com/webmasters/answer/1061943?hl=en">https://support.google.com/webmasters/answer/1061943?hl=en</a><br />
<br />
J'ouvre un terminal et un petit wget avec l'option qui va bien : <code><br />
wget -U "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" [clic droit : coller]</code><br />
L'art de la programmation, c'est tout un art...
      


feed_id: http://tontof.net/index.php?2017/04/19/19/50/48-j-4
title: J-4
uri: J-4
url: http://tontof.net/index.php?2017/04/19/19/50/48-j-4
content:
          Je n'ai pas posté depuis juin 2016, c'est frustrant alors que j'aurais envie d'écrire plein de choses.<br />
<br />
Pour le moment, je ne trouve malheureusement pas le temps de le faire mais je brise le silence aujourd'hui, parce que dans 4 jours, c'est le jour où tout va basculer et qu'il s'agit un peu aussi d'une date anniversaire. Bien sûr c'est le premier bouleversement avant le 2e tour, mais il faut en passer par là !<br />
<br />
La(es) politique(s) m’exaspère(nt) depuis longtemps (toujours) mais c'est la première fois où j'ai enfin l'espoir que les choses changent. Les gens autour de moi me disent qu'il faut se méfier des extrêmes, parce que oui, depuis plusieurs jours/mois, je parle ouvertement de mon vote à mes proches (je suis décomplexé comme on dit).<br />
<br />
Il n'y a pas de flux RSS sur le site alors je vais quotidiennement sur <a href="http://www.politologue.com/Presidentielle2017/">http://www.politologue.com/Presidentielle2017/</a> pour voir comment évoluent les choses. Je n'ai pas de télé mais les gens me disent que ce n'est pas possible, on entend toujours parler des mêmes, comme quoi untel rejoint le Macaron, comme si il était LA solution pour le renouveau de la politique... Mais j'espère qu'ils se trompent. Pourtant j'en veux du renouveau, mais le Macaron est tout sauf extrémiste, il cherche au contraire à faire des statistiques sur ce qui réunit le plus pour avoir une chance d'être élu. Son but n'est pas de faire évoluer les choses, c'est juste d'être élu.<br />
<br />
Tout ça pour dire qu'aujourd'hui pour me rassurer, je suis allé jeter un coup d’œil sur Google Trends. Parce que ce n'est jamais très bon de se baser uniquement sur une seule source : <a href="https://trends.google.fr/trends/explore?date=2017-04-01%202017-04-19&amp;geo=FR&amp;q=%2Fm%2F04zzm99,%2Fm%2F011ncr8c,%2Fm%2F0fqmlm,%2Fm%2F02rdgs,%2Fm%2F0551nw">https://trends.google.fr/trends/explore?date=2017-04-01%202017-04-19&amp;geo=FR&amp;q=%2Fm%2F04zzm99,%2Fm%2F011ncr8c,%2Fm%2F0fqmlm,%2Fm%2F02rdgs,%2Fm%2F0551nw</a><br />
Et ça m'a rassuré, un peu. Bien sûr, tout le monde n'est pas représenté avec l'usage des ordinateurs, mais quand même, ça doit bien vouloir dire quelque chose ces courbes.<br />
<br />
Je ne partage pas toutes ces idées, mais entre nous, je ne vois pas comment on peut penser qu'on a vraiment le choix si on veut que les choses changent. Voter blanc ou ne pas voter pour montrer son désaccord, c'est aussi utile que dire qu'on veut que les choses changent.<br />
<br />
Mon vote commence par un M et finit par un N mais ce ne sera pas MarinelepeN, ni MacaroN<br />
<br />
La dernière ligne droite va être difficile, ne vous laissez pas convaincre par ce qu'on dira ou par ce que vous entendrez, lirez, faîtes vous votre propre avis.<br />
<a href="https://laec.fr/">https://laec.fr/</a><br />
Et si vous cherchez des chiffres pour vous rassurer<br />
<a href="https://www.youtube.com/watch?v=T7b67QCjibc">https://www.youtube.com/watch?v=T7b67QCjibc</a> 
      


feed_id: http://tontof.net/index.php?2017/05/25/11/57/22-l-ecureuil-a-t-il-de-bons-reflexes
title: L'écureuil a-t-il de bons réflexes ?
uri: L-écureuil-a-t-il-de-bons-réflexes
url: http://tontof.net/index.php?2017/05/25/11/57/22-l-ecureuil-a-t-il-de-bons-reflexes
content:
          Je vous avais déjà dit que j'étais parti de la banque écureuil pour une question de carte de paiement sans contact, mais il me reste toujours des comptes plus ou moins dormants.<br />
Aujourd'hui, je reçois un mail de la part de cette banque :<br />
<br />
« Un nouveau message est disponible dans votre Messagerie »<br />
<br />
Alors déjà, je ne supporte pas ces messages qui m'obligent à me connecter à un autre service pour savoir de quoi il s'agit. Mais quand il s'agit d'un message pour me donner des bons réflexes ça me fait sourire.<br />
<br />
Je leur ai donc répondu ceci :<br />
<br />
Bonjour,<br />
<br />
Quand vous envoyez un message pour informer vos clients sur « les bons réflexes à adopter dans votre site Internet sécurisé », vous pourriez vous assurer que le site en question met également en place les bons réflexes pour être vraiment sécurisé.<br />
<br />
Demander à l'utilisateur de changer de mot de passe pour passer de 4 à 8 chiffres (qui est tout sauf un mot de passe sécurisé) sans lui demander de redonner son ancien mot de passe est tout sauf un bon réflexe (sur une session ouverte n'importe qui peut alors modifier mon mot de passe à mon insu).<br />
<br />
Mettre un reCAPTCHA pour poster un message sur un site français qui demande des informations en anglais, n'est pas un bon réflexe, heureusement que je suis bilingue pour reconnaître les routes et les voitures (sachant que je suis connecté et que les informations sont préremplies, je me demande encore plus l'utilité d'une telle pratique).<br />
<br />
Tracker vos utilisateurs avec entre autre Adobe Audience Manager, Criteo, Facebook Custom Audience, Google Adwords Conversion, Marin Search Marketer, Weborama, AT Internet, Twitter Analytics, iAdvize ne fait également pas partie des bons réflexes<br />
<br />
Je ne pense pas que vous prendrez la peine de répondre à mes attentes, mais j'espère que vous transmettrez à des personnes compétentes qui pourront peut-être appliquer les conseils que vous donner à vos clients.<br />
<br />
Bonne fin de journée
      


feed_id: http://tontof.net/index.php?2017/06/02/14/17/15-kriss-feed-8-7
title: KrISS feed 8.7
uri: KrISS-feed-8-7
url: http://tontof.net/index.php?2017/06/02/14/17/15-kriss-feed-8-7
content:
          Ne vous emballez pas, ce n'est pas grand chose, juste une petite nouvelle version pour montrer que KrISS feed est toujours là et qu'il progresse doucement mais sûrement.<br />
<br />
Ce matin après une longue investigation et de nombreux tests de Draleg : <a href="https://github.com/tontof/kriss_feed/issues/385">https://github.com/tontof/kriss_feed/issues/385</a><br />
Nous avons réussi à corriger un petit bug (qui ne concerne pas grand monde) posant problème chez les personnes qui redirigeaient des ports et pour qui la mise en place des cookies n'était pas correcte. Ces personnes se retrouvaient avec un « Wrong Token » ou « Jeton de sécurité invalide » ou « Falsches Token » parce que oui, la version 8.7 arrive avec une version en allemand !<br />
Danke schöne à <a href="https://github.com/pille1842">https://github.com/pille1842</a><br />
<br />
Pour terminer, elle gère mieux les flux youtube et incruste une iframe pour visualiser directement la vidéo dans KrISS feed sans passer par Youtube. Idée de Nono-m0le : <a href="https://github.com/tontof/kriss_feed/issues/384">https://github.com/tontof/kriss_feed/issues/384</a><br />
<br />
Je m'excuse d'avance pour la lourdeur de cette nouvelle version qui passe de 332ko à 343ko !
      


feed_id: http://tontof.net/index.php?2017/07/07/17/54/52-kriss-kriss-bang-bang
title: KrISS KrISS bang bang
uri: KrISS-KrISS-bang-bang
url: http://tontof.net/index.php?2017/07/07/17/54/52-kriss-kriss-bang-bang
content:
          Un petit nouveau est arrivé ! Il s'appelle KrISS bang et pour la démo, c'est ici : <a href="https://tontof.net/bang/">https://tontof.net/bang/</a><br />
<br />
Je vous avais parlé de mon nouveau projet <a href="//tontof.net/?2016/03/04/20/13/09-kriss-mvvm-sur-github">KrISS mvvm</a> mais la <a href="//tontof.net/mvvm/demo.php">démo</a> ne vous avait pas vraiment impressionné. Pourtant, je pense vraiment que KrISS mvvm peut faire des choses chouettes (et j'envisage de passer un jour KrISS feed en mode mvvm).<br />
Du coup, pour vous montrer que KrISS mvvm n'est pas juste pour faire joli, je vous présente KrISS bang !!!<br />
<br />
J'utilise les bangs Duckduckgo tous les jours, plusieurs fois par jour et j'adore ça. Et puis un jour, j'utilise un bang classique !enfr ou !fren et paf WordReference fût balayer par Google Translate. Bien sûr le bang !wref ou !wrfe peut être utilisé. Mais entre nous, se faire balader comme ça sans qu'on me demande mon avis, je me suis dit: « et si je me déduckduckgoïsais un peu »<br />
<br />
<a href="https://tontof.net/bang/?bang=!enfr%20happy">https://tontof.net/bang/?bang=!enfr%20happy</a><br />
<br />
KrISS bang était né. Bon ce n'est rien d'autre qu'une alternative aux bangs Duckduckgo, mais les avantages sont multiples. Plus de surprise avec des changements de bangs non voulus et si vous l'installez en local vous éviterez ainsi quelques requêtes inutiles pour être redirigé. Vous pouvez gérer vos bangs comme vous le voulez et ça c'est quand même bien chouette !<br />
<br />
Alors, comme vous pourrez le voir, j'ai soigné le graphisme, le logo et toutes les choses superflues qui me semblaient indispensables !<br />
<br />
Il y a encore énormément de travail à faire avec KrISS mvvm et KrISS bang mais la base est là pour vous le présenter et pour commencer à l'utiliser au quotidien. Je vous laisse vérifier la taille actuelle du fichier : autour de 80ko !<br />
Elle augmentera forcément avec le temps, mais pour le moment, avec ces 80ko vous avez:<br />
- visibility: protected (en lecture seule sans être authentifié)<br />
- visibility: private (aucun accès sans authentification). <br />
- authSession (authentification session avec cookie)<br />
- authBasic (authentification sans cookie : je l'ai supprimé temporairement parce que ça semble poser quelques problèmes chez certains hébergeurs, mais en local je n'ai aucun soucis avec)<br />
EDIT : j'ai ajouté de nouveau authBasic parce que le problème ne venait pas de KrISS bang mais d'une configuration à ajouter dans un htaccess : <a href="http://tontof.net/kriss/bang/#faq-auth-basic">http://tontof.net/kriss/bang/#faq-auth-basic</a><br />
- la possibilité de gérer vos bangs (liste avec pagination, moteur de recherche pour chercher du texte n'importe où dans un bang). L'export et l'import CSV de bang<br />
- l'ajout automatique dans les moteurs de recherche sous Firefox (opensearch.xml)<br />
<br />
Si vous regardez le fichier de base qui permet de créer KrISS bang, il fait 10ko<br />
<a href="https://github.com/kriss/bang/blob/master/src/index.php">https://github.com/kriss/bang/blob/master/src/index.php</a><br />
<br />
Tout le reste provient de KrISS mvvm et est donc entièrement générique. J'ai ajouté quelques tests à KrISS mvvm pour essayer de couvrir tout le projet et il faudra faire de même pour KrISS bang.
      


title: Aidez-moi à trouver mon logo en votant parmi 4 propositions !
uri: Aidez-moi-à-trouver-mon-logo-en-votant-parmi-4-propositions
feed_id:
http://tontof.net/index.php?2017/10/12/12/10/17-aidez-moi-a-trouver-mon-logo-en-votant-parmi-4-propositions

url:
http://tontof.net/index.php?2017/10/12/12/10/17-aidez-moi-a-trouver-mon-logo-en-votant-parmi-4-propositions

content:
          J'ai déjà parlé d'un projet que j'avais en tête et aujourd'hui, je vais vous en dire un peu plus parce qu'il va bien falloir que je le mette en place un jour ou l'autre.<br />
<br />
Vous le savez, j'aime développer pour mon usage et plaisir des logiciels libres que j'aime tout autant partager. Jusqu'à présent, je le faisais sur mon temps libre (comme beaucoup) et puis un jour, <a href="https://tontof.net/kriss/feed/">KrISS feed</a> a eu son petit succès : en grande partie grâce à Sebsauvage qui m'a fait une petite surprise la semaine passée en postant sur son shaarli un nouveau message de remerciement : <a href="http://sebsauvage.net/links/?SY_PeA">http://sebsauvage.net/links/?SY_PeA</a><br />
<br />
Seulement voilà, pour vivre de ça, c'est compliqué et la question de la rémunération revient souvent. Je n'ai jamais voulu mettre en place quoique ce soit parce que je ne me fais aucune illusion sur le fait que ça ne payerait qu'une petite partie de l'hébergement et encore...<br />
<br />
D'autres expériences, comme celle de <a href="https://www.wallabag.it">Wallabag</a>, montrent que ce n'est pas évident :<br />
- <a href="https://nicolas.loeuillet.org/billets/service-wallabag-it">https://nicolas.loeuillet.org/billets/service-wallabag-it</a><br />
- <a href="https://nicolas.loeuillet.org/billets/f5">https://nicolas.loeuillet.org/billets/f5</a><br />
<br />
Bien sûr, je ne suis pas le premier à me poser la question et des solutions existent : <a href="https://www.parigotmanchot.fr/2017/08/03/faire-campagne-abonner-question-remuneration-blogueurs/">https://www.parigotmanchot.fr/2017/08/03/faire-campagne-abonner-question-remuneration-blogueurs/</a><br />
<br />
Seulement, aucune ne me satisfait et j'ai donc essayé d'imaginer une autre solution qui j'espère sera plus efficace. Je vais mettre en place quelque chose qui n'aura rien à voir avec les logiciels libres et qui j'espère permettra de me libérer plus de temps pour développer gratuitement d'autres logiciels libres. Le but étant de m'adresser à tout le monde et pas uniquement aux personnes qui sont susceptibles de s'auto-héberger. Bien sûr, j'essayerai de garder un minimum d'éthique en faisant un site léger et fonctionnel qui ne charge pas 150 bibliothèques javascript pour afficher un carousel, sans Google Analytics et compagnie.<br />
<br />
Mon idée est la suivante : je vais proposer aux gens, pour quelques euros, de personnaliser avec des photos des pliages en papier, du style origami à imprimer à la maison :<br />
<br />
<img src="media/dd0ad694.tontof_presentation.jpg" data-original-source="https://tontof.net/img/1507803882/tontof_presentation.jpg" alt="Présentation de Tontof"><br />
<br />
J'ai cherché et je n'ai pas trouvé de solutions semblables et je n'ai donc aucune idée du potentiel de cette idée. Pour info toutes les photos utilisées pour les pliages viennent du site <a href="https://unsplash.com/">https://unsplash.com/</a><br />
<br />
Mon plan d'action va être le suivant, dans les jours/semaines qui arrivent, je vais préparer un financement participatif Kickstarter pour payer un graphiste pour le site. Techniquement tout fonctionne, mais je vous laisse imaginer comment graphiquement ça pique les yeux. Le but du financement participatif sera d'avoir aussi un premier retour pour savoir si l'idée plaît aux gens (uniquement en anglais au début).<br />
<br />
Avant de lancer tout ça, je voulais mettre en place le logo pour créer une première identité visuelle et c'est là que vous intervenez. J'ai 4 logos que j'aimerais bien que vous évaluiez.<br />
<br />
Si le projet vous intéresse et que vous souhaitez connaître l'évolution de ce projet, vous pouvez  mettre votre email et quand je lancerai le Kickstarter je vous enverrai un petit message ! Bien sûr c'est facultatif et c'est avant tout votre vote qui m'intéresse. Si vous pensez que le projet peut intéresser des gens de votre entourage, n'hésitez pas à partager cet article pour que j'ai le plus de votes possibles et que ça oriente mon choix de logo.<br />
<br />
Pour le nom, je me suis rabattu sur TONTOF même si ce n'est pas l'idéal et que question marketing, ce n'était pas la meilleure solution :-)<br />
<br />
<a href="https://tontof.net/trap/logo/vote/new/">Merci d'avance pour votre vote</a><br />
<br />
Si vous avez des questions/remarques vous pouvez laisser un commentaire ou me contacter sur tontof à free.fr<br />

      


feed_id: http://tontof.net/index.php?2017/07/29/11/01/40-2017-un-dessert-un-cafe-pour-terminer
title: 2017... Un dessert, un café pour terminer ?
uri: 2017-Un-dessert-un-café-pour-terminer
url: http://tontof.net/index.php?2017/07/29/11/01/40-2017-un-dessert-un-cafe-pour-terminer
content:
          Je n'arrive même pas à imaginer que ce soit possible venant d'une société comme celle là, mais l'image parle d'elle même. Chez Nes les encodages riment avec Moyen-Âge ?<br />
<br />
<img src="media/df398058.cafe.jpg" data-original-source="https://tontof.net/img/1501318900/cafe.jpg" alt="problème encodage café"><br />
<br />
Ça me conforte dans l'idée de ne pas boire de café, encore plus quand il provient d'une société comme celle là, et je ne parle même pas que du problème d'encodage...<br />
Bon ça aide, je n'aime pas le café :-)
      


feed_id: http://tontof.net/index.php?2017/10/16/16/10/17-resultat-du-vote-pour-le-logo
title: Résultat du vote pour le logo
uri: Résultat-du-vote-pour-le-logo
url: http://tontof.net/index.php?2017/10/16/16/10/17-resultat-du-vote-pour-le-logo
content:
          Je ne pensais pas avoir autant de retours. Avec plus de 400 votes le résultat est sans appel, c'est le logo avec l'objectif photo que vous avez choisi :<br />
<br />
<div style="text-align: center"><img src="media/6ce2030a.logo.jpg" data-original-source="https://tontof.net/img/1508163017/logo.jpg" alt="Logo Tontof"></div><br />
<br />
Si vous regardez la forme de l'objectif photo, elle rappelle étrangement le logo copyleft, un petit clin d'œil symbolique et sympathique :-)<br />
<br />
Merci à tous pour votre participation !!!<br />
<br />
Pour les détails du vote,<br />
~ 67.40/100 : logo objectif<br />
~ 59.81/100 : logo couronne<br />
~ 39.74/100 : logo nœud<br />
~ 27.65/100 : logo flèche
      


feed_id: http://tontof.net/index.php?2017/10/20/12/34/56-tontof-n-est-plus-a-vendre
title: Tontof n'est plus à vendre
uri: Tontof-n-est-plus-à-vendre
url: http://tontof.net/index.php?2017/10/20/12/34/56-tontof-n-est-plus-a-vendre
content:
          J'ai une sensation un peu indescriptible. Je me dis que c'est pour la bonne cause (faire réussir TONTOF pour faire encore plus de KrISS) mais ce n'est pas évident pour autant.<br />
<br />
Vous l'aurez compris, j'ai commencé à découvrir un nouveau monde qui m'était inconnu et qui me fait peur, que je n'aime pas au premier abord et dans lequel je vais tenter de devenir célèbre et riche...<br />
<br />
Je veux parler bien sûr de :<br />
- <a href="https://www.facebook.com/tontof.origami/">https://www.facebook.com/tontof.origami/</a><br />
- <a href="https://twitter.com/tontof_origami">https://twitter.com/tontof_origami</a><br />
- <a href="https://www.pinterest.fr/tontof_origami/models/">https://www.pinterest.fr/tontof_origami/models/</a><br />
- <a href="https://www.instagram.com/tontof_origami/">https://www.instagram.com/tontof_origami/</a><br />
<br />
Vous pensez que je n'ai pas de Google+, bien sûr que non, c'est juste que je ne suis pas encore arrivé à personnaliser le nom... Et pour tout vous dire, je vais lister tout ce qui me paraît aberrant, incompréhensible, illogique, bref, un petit retour d'expérience sur ce début d'inscriptions massives à des sites trop chouettes...<br />
En même temps Google+, est-ce qu'il y a encore des gens qui utilisent ça ?<br />
<br />
Tout d'abord, il faut savoir que j'ai utilisé une adresse mail différente pour chaque plateforme, histoire de gérer un minimum comment sont utilisées mes informations.<br />
<br />
Ensuite, je voulais gérer un seul nom : tontof_origami ! Je vous arrête tout de suite, il est impossible d'avoir des urls uniformes entre les plateformes. Pour séparer 2 mots, il n'y a pas 36 possibilités... sur Facebook, seul le « . » est autorisé mais il est interdit sous Twitter et Pinterest qui n'autorisent que le « _ ». Seul instagram accepte les 2 !<br />
<br />
<h2>Facebook</h2><br />
Pour Facebook, il vous faut une page perso pour avoir une page publique et il faut obligatoirement un numéro de téléphone pour avoir le droit de personnaliser son url... Pour la page perso, il faut au moins 1h pour tout désactiver, mettre en privé etc. Normalement, c'est bon, je ne suis pas visible parce que seuls les amis de mes amis peuvent me voir dans le résultat d'une recherche de mon nom. Je n'ai pas d'amis, personne ne devrait donc avoir la chance et le privilège de me demander en ami ? Enfin, c'est ce que j'ai compris...<br />
<br />
<h2>Twitter</h2><br />
Twitter ne semble pas trop être pénible pour le moment à part les emails à chaque connexion pour me prévenir que je me connecte...<br />
<br />
<h2>Pinterest</h2><br />
En ce qui concerne Pinterest, il faut avoir de l'ambition parce que pour ne plus recevoir d'emails, c'est long et fastidieux. Il y a toujours une excuse pour envoyer un mail de suggestion de nouveaux trucs trop chouettes qui pourrait me plaire... Mais j'ai l'impression que j'ai réussi à venir à bout du spam incessant, à force de désinscription.<br />
<br />
<h2>Instagram</h2><br />
Instagram, c'est pour mobile mais je n'ai pas trouvé l'appli sur mon Nokia 1110. Du coup j'ai cherché une appli bureau qui fonctionne sous linux et je suis tombé sur <a href="https://github.com/terkelg/ramme">https://github.com/terkelg/ramme</a><br />
Plus de 2000 étoiles, une activité de moins d'une semaine, j'me suis dit génial, ça doit bien marcher. Bon en fait, il se trouve que c'est un navigateur qui se fait passer pour un mobile...<br />
Du coup j'ai changé mon user-agent sur Firefox et j'ai eu le même résultat... Je suis peut-être passé à côté de quelque chose, mais j'ai pu mettre une première photo sans problème...<br />
<br />
C'est parti pour la mise en avant des premiers modèles qui seront proposés à l'ouverture de Tontof. C'est un peu nul de ne pas pouvoir mettre un lien vers le site final, mais ça sera modifié quand le temps sera venu !<br />
<br />
Merci d'avance pour vos partages, likes, moi aussi je vous aime, c'est beau le web 3.0...<br />
<br />
- <a href="https://www.facebook.com/tontof.origami/?hc_ref=ARRPEF0sA4hoDoz6UcsrqRYzsEQ8K0u2uy-ptTskkQd9ui6sqyzKnRQ9EO5z02_sO9M">https://www.facebook.com/tontof.origami/?hc_ref=ARRPEF0sA4hoDoz6UcsrqRYzsEQ8K0u2uy-ptTskkQd9ui6sqyzKnRQ9EO5z02_sO9M</a><br />
- <a href="https://twitter.com/tontof_origami/status/921322501887623168">https://twitter.com/tontof_origami/status/921322501887623168</a><br />
- <a href="https://www.pinterest.fr/pin/686024955710854035/">https://www.pinterest.fr/pin/686024955710854035/</a><br />
- <a href="https://www.instagram.com/p/Bad2e4thUB9/">https://www.instagram.com/p/Bad2e4thUB9/</a><br />
<br />
En ce qui concerne Youtube, ce n'est pas pour tout de suite :<br />
<br />
To create a custom URL for your channel, your account needs to:<br />
<br />
    Have 100 or more subscribers<br />
    Be at least 30 days old<br />
    Have an uploaded photo as channel icon<br />
    Have uploaded channel art<br />
<br />
In general, a YouTube channel may only have one (1) custom URL and custom URLs cannot be transferred or assigned to anyone.<br />

      


feed_id: http://tontof.net/index.php?2017/11/27/19/20/21-tontof-origami-le-concept-en-une-image
title: Tontof origami : le concept en une image
uri: Tontof-origami-le-concept-en-une-image
url: http://tontof.net/index.php?2017/11/27/19/20/21-tontof-origami-le-concept-en-une-image
content:
          Ça fait plus d'un mois et je ne vous ai pas donné de nouvelles sur l'avancement de mon projet. Pour être tout à fait honnête j'imaginais faire une présentation textuelle rapide agrémentée de quelques photos fin octobre pour faire un financement en novembre et lancer le site en décembre... Pfff quel utopiste !<br />
<br />
Évidemment, j'ai eu plusieurs retours qui m'ont fortement déconseillé de me lancer trop vite. On m'a dit de soigner ma présentation pour faire bonne impression, que les personnes adhèrent au concept, etc. Je me suis donc lancé dans la mise en place d'une jolie présentation pour Kickstarter.<br />
<br />
Ça risque d'être un peu plus long que prévu, mais c'est pour la bonne cause... enfin j'espère.<br />
Il est vrai que je suis plutôt satisfait du résultat de la première partie de présentation grâce aux retours de plusieurs personnes que je ne citerai pas mais qui se reconnaîtront : B, É, F, G et surtout R<br />
<br />
Il y a eu une sorte d'avant-avant-première et je vous présente la version 25 de la première image:<br />
<div style="text-align: center"><img src="media/ebf30914.presentation.jpg" data-original-source="https://tontof.net/img/1511806821/presentation.jpg" alt="Présentation du concept"></div><br />
<br />
Globalement, je trouve qu'elle présente bien le concept et qu'elle est jolie : les images de la petite fille proviennent de unsplash : <a href="https://unsplash.com/@senjuti">https://unsplash.com/@senjuti</a><br />
Avant d'en arriver là, il y a eu plusieurs versions :<br />
<br />
<div style="text-align: center"><img src="media/32ded699.presentation.gif" data-original-source="https://tontof.net/img/1511806821/presentation.gif" alt="Toutes les versions de présentation du concept"></div><br />
<br />
Je fais cette avant-première pour plusieurs raisons :<br />
- Je me dit que ça peut montrer l'envers du décor de la mise en place d'un projet Kickstarter. Le but n'étant pas d'investir trop d'argent avant la mise en place du projet, je fais ça sur mon temps libre et ça va me prendre un peu de temps.<br />
- Si jamais je loupe quelque chose d'important, je pense que vous me préviendrez avant de faire LA boulette ? Hein !? En gros ça me permettra d'avoir des retours pour faire des modifications avant la présentation finale si besoin. Comme vous avez pu le voir, il y a déjà eu pas mal de modifications, je n'en suis pas à 1 ou 2 près.<br />
- Le temps de finir cette présentation risque d'être un peu long, j'espère que ça vous fera un peu patienter en attendant :-)<br />
<br />
Les remarques personnelles qui me chagrinent sur cette première image :<br />
- Comme vous pouvez le voir sur les différentes versions, j'ai eu un petit problème pour le choix de l'image de l'imprimante. Celle de la version finale n'est pas forcément la plus jolie, mais c'est parce que je ne voulais pas utiliser d'images où je n'avais pas les droits. Et si l'image la plus jolie est clairement celle de la HP Envy 5545, je ne pouvais pas l'utiliser pour la présentation. J'ai cherché dans mon entourage une imprimante pas trop vilaine :-)<br />
- La cocotte de la partie 4 a été gimpée... En fait, quand la cocotte était à côté de l'ordi, il n'y avait pas de problème sur la lisibilité de l'image et même si les photos étaient un peu floues par rapport aux originales, globalement ce n'était pas gênant. Sauf qu'après avoir détourée l'image, on ne voyait que ça et j'ai donc fait cette dernière modification pour améliorer le rendu.<br />
<br />
Ma TODO list est encore longue :<br />
- La prochaine étape concerne la présentation des occasions. À quelle(s) occasion(s) peut-on faire ce genre de pliages ? Je ne suis pas très inspiré pour la présentation, même si ce n'est pas le nombre d'idées qui manquent : naissance, mariage, anniversaire, déco, fête des (grand-)mères/pères, etc. Il va falloir que j'arrive à présenter tout ça simplement... Si vous avez des exemples je suis preneur. Par exemple pour la première partie en 4 étapes, je me suis inspiré de <a href="https://www.kickstarter.com/projects/lovebox/lovebox-a-simple-and-generous-way-to-send-love-mes">https://www.kickstarter.com/projects/lovebox/lovebox-a-simple-and-generous-way-to-send-love-mes</a><br />
- Il faudra également que je présente rapidement les 10 modèles du lancement avec des images animées pour certains pour faire voir que c'est vraiment chouette. Et puis il y a les instructions des pliages que je vais devoir aussi faire.<br />
- Un petit storytelling... Il paraît que c'est la mode et en plus je trouve l'histoire de cette idée intéressante. À la base, elle a des racines un peu écolo, ça devrait encore plus plaire, non ? Oula, je me mets à penser comme un marketing là ? Ça craint ?!
      


feed_id: http://tontof.net/index.php?2017/12/01/22/22/22-quelques-liens-inutiles-pour-passer-le-temps-49
title: Quelques liens inutiles pour passer le temps #49
uri: Quelques-liens-inutiles-pour-passer-le-temps-49
url: http://tontof.net/index.php?2017/12/01/22/22/22-quelques-liens-inutiles-pour-passer-le-temps-49
content:
          Je faisais un peu de tri dans mes articles et je suis tombé sur une liste de Gif (beaucoup de cinegraph) que je n'avais jamais publiée. Les images sont un peu anciennes, l'article datait de 2013...<br />
<br />
1 - Une rivière:<br />
<a href="https://i.chzbgr.com/maxW500/7805906176/h72FE8DE6/">https://i.chzbgr.com/maxW500/7805906176/h72FE8DE6/</a><br />
via : <a href="http://cheezburger.com/7805906176">http://cheezburger.com/7805906176</a><br />
2 - Le métro est dans quel sens ?<br />
<a href="https://i.chzbgr.com/maxW500/7447527936/hAA09362D/">https://i.chzbgr.com/maxW500/7447527936/hAA09362D/</a><br />
via : <a href="http://cheezburger.com/7447527936">http://cheezburger.com/7447527936</a><br />
3 - Métro bis<br />
<a href="https://i.chzbgr.com/maxW500/7895241216/h164A19E7/">https://i.chzbgr.com/maxW500/7895241216/h164A19E7/</a><br />
via : <a href="http://cheezburger.com/7895241216">http://cheezburger.com/7895241216</a><br />
4 - Quand je feuillette le cahier des charges<br />
<a href="media/25aeeca1.VBoGZmd.gif" data-original-source="http://i.imgur.com/VBoGZmd.gif">http://i.imgur.com/VBoGZmd.gif</a><br />
via : <a href="http://lesjoiesducode.tumblr.com/post/67360113636">http://lesjoiesducode.tumblr.com/post/67360113636</a><br />
5 - Lave<br />
<a href="https://i.chzbgr.com/maxW500/7771172096/h343BC32A/">https://i.chzbgr.com/maxW500/7771172096/h343BC32A/</a><br />
via : <a href="http://cheezburger.com/7771172096">http://cheezburger.com/7771172096</a><br />
6 - Bouteille de vin<br />
<a href="https://i.chzbgr.com/maxW500/8530743552/h1484B623/">https://i.chzbgr.com/maxW500/8530743552/h1484B623/</a><br />
via : <a href="http://cheezburger.com/8530743552">http://cheezburger.com/8530743552</a><br />
7 - Un livre fontaine<br />
<a href="https://i.chzbgr.com/maxW500/8125037568/h5E1D9B43/">https://i.chzbgr.com/maxW500/8125037568/h5E1D9B43/</a><br />
via : <a href="http://cheezburger.com/8125037568">http://cheezburger.com/8125037568</a><br />
8 - 2 flèches et un verre d'eau<br />
<a href="https://i.chzbgr.com/maxW500/8123062784/h76FD04E2/">https://i.chzbgr.com/maxW500/8123062784/h76FD04E2/</a><br />
via : <a href="http://cheezburger.com/8123062784">http://cheezburger.com/8123062784</a><br />
9 - 2 danseuses avec une projection en fond<br />
<a href="https://i.chzbgr.com/maxW500/8092312576/h4DC5173D/">https://i.chzbgr.com/maxW500/8092312576/h4DC5173D/</a><br />
via : <a href="http://cheezburger.com/8092312576">http://cheezburger.com/8092312576</a><br />
10 - Pissenlit de la fleur aux graines<br />
<a href="https://i.chzbgr.com/maxW500/8241233152/h17EF7FBF/">https://i.chzbgr.com/maxW500/8241233152/h17EF7FBF/</a><br />
via : <a href="http://cheezburger.com/8241233152">http://cheezburger.com/8241233152</a><br />
<br />
Bonus (récent) :<br />
Un puissance 4 en CSS (sans javascript)<br />
<a href="https://codepen.io/finnhvman/pen/xXpzVN/">https://codepen.io/finnhvman/pen/xXpzVN/</a><br />
via : <a href="https://css-tricks.com/roman-empire-made-pure-css-connect-4-possible/">https://css-tricks.com/roman-empire-made-pure-css-connect-4-possible/</a>
      


feed_id: http://tontof.net/index.php?2018/03/25/18/02/25-petit-vote-pour-la-presentation-des-modeles
title: Petit vote pour la présentation des modèles
uri: Petit-vote-pour-la-présentation-des-modèles
url: http://tontof.net/index.php?2018/03/25/18/02/25-petit-vote-pour-la-presentation-des-modeles
content:
          Ma TODO list commence à se réduire et je pense que la partie la plus longue à réaliser avant le lancement Kickstarter est enfin terminée ! Pour présenter les 10 modèles, j'ai dû faire quelques animations et c'était bien long, d'où l'absence de nouvelles depuis la dernière fois. J'ai fait plein de choses grâce à Gimp et j'ai même appris à faire des scripts python avec. Il faudra que je prenne le temps de vous faire un retour, il faudra...<br />
<br />
Reste à choisir parmi les 3 dernières présentations sélectionnées. J'ai longuement hésité et je pense que j'ai enfin trouvé une présentation simple des modèles. Je vous propose un deuxième petit vote pour choisir votre présentation préférée. La première présente les modèles au centre, la seconde les aligne à droite et pour la dernière ils sont en zigzag.<br />
<br />
On verra ce que ça donne, mais j'avoue avoir une petite préférence pour une présentation... Contrairement au dernier vote, j'ai ajouté la possibilité de laisser un commentaire directement dans le vote (et aussi votre mail comme la dernière fois, si vous souhaitez un message lors du lancement Kickstarter). Bien sûr ces 2 dernières infos sont facultatives et seul votre vote pour les présentations compte vraiment.<br />
<br />
<div style="text-align: center"><a href="https://tontof.net/trap/show/vote/new/">Merci d'avance</a></div><br />
<br />
Tontof x 3 !!!
      


feed_id: http://tontof.net/index.php?2018/04/20/12/00/00-tontof-your-own-unique-origami-and-paper-toys
title: TONTOF: Your own unique origami and paper toys
uri: TONTOF-Your-own-unique-origami-and-paper-toys
url: http://tontof.net/index.php?2018/04/20/12/00/00-tontof-your-own-unique-origami-and-paper-toys
content:
          Bonjour à tous,<br />
<br />
Je n'ai pas pris le temps de faire un article sur les résultats du dernier vote parce que j'étais sur le sprint final et je voulais vous faire la surprise en vous annonçant le lancement officiel du projet Kickstarter de Tontof.<br />
<br />
<a href="https://www.kickstarter.com/projects/tontof/tontof-your-own-unique-origami-and-paper-toys/">https://www.kickstarter.com/projects/tontof/tontof-your-own-unique-origami-and-paper-toys/</a><br />
<br />
Je vous remercie d'avance de partager ce lien en espérant que le projet plaira au plus grand nombre. C'était un peu une date anniversaire et j'ai donc fait le maximum pour pouvoir faire le lancement à temps.<br />
<br />
Merci encore à tous pour vos partages.
      


feed_id: http://tontof.net/index.php?2018/05/04/11/00/00-bookmarklet-pour-contourner-scribd
title: Bookmarklet pour contourner Scribd
uri: Bookmarklet-pour-contourner-Scribd
url: http://tontof.net/index.php?2018/05/04/11/00/00-bookmarklet-pour-contourner-scribd
content:
          Quand je cherche des informations sur des livres, je tombe souvent sur des liens scribd. Je ne vous cache pas que je n'aime pas du tout ce site et malheureusement bugmenot ne vous sera pas d'une grande aide. Si vous pouvez enrichir scribd site sans compte, la consultation est plus contraignante.<br />
<br />
Donner, do-o-nner, donner, do-o-nner moi<br />
Donner, do-o-nner, scribd le gardera...<br />
...et ne vous le rendra pas...<br />
<br />
Heureusement, souvent je ne cherche que des informations spécifiques et pas à télécharger des pdf. Et je ne comprends pas trop leur fonctionnement, mais quand vous commencez à lire, au bout d'un moment un filtre apparaît en surbrillance et vous ne pouvez plus lire et il faut vous connecter...<br />
<br />
En apparence oui, mais tout est chargé dans le navigateur et quelques règles CSS permettent facilement de contourner le problème.<br />
<br />
Du coup, un petit bookmarklet et plus de problème<br />
<div style="text-align:center;"><br />
<a href="javascript: (function () {code=&quot;.autogen_class_views_pdfs_page_blur_promo {display: none !important;} div.image_layer .absimg { opacity: 1 !important;}&quot;;var style=document.createElement(&quot;style&quot;);style.type=&quot;text/css&quot;,style.styleSheet?style.styleSheet.cssText=code:style.innerHTML=code,document.getElementsByTagName(&quot;head&quot;)[0].appendChild(style);}())">scribd</a><br />
</div><br />
<br />
<code><br />
    code = ".autogen_class_views_pdfs_page_blur_promo {display: none !important;} div.image_layer .absimg { opacity: 1 !important;}"<br />
    var style = document.createElement('style');<br />
    style.type = 'text/css';<br />
<br />
    if (style.styleSheet) {<br />
        // IE<br />
        style.styleSheet.cssText = code;<br />
    } else {<br />
        // Other browsers<br />
        style.innerHTML = code;<br />
    }<br />
<br />
    document.getElementsByTagName("head")[0].appendChild( style );<br />
</code><br />
<br />
Merci <a href="https://martijnbrekelmans.com/bookmarkletify/">https://martijnbrekelmans.com/bookmarkletify/</a><br />
et <a href="https://stackoverflow.com/questions/707565/">https://stackoverflow.com/questions/707565/</a>
      


feed_id: http://tontof.net/index.php?2018/06/29/08/08/08-le-format-svg-dans-tous-ces-etats
title: Le format SVG dans tous ces états
uri: Le-format-SVG-dans-tous-ces-états
url: http://tontof.net/index.php?2018/06/29/08/08/08-le-format-svg-dans-tous-ces-etats
content:
          Si vous connaissez ce format, je vous invite à lire uniquement le dernier paragraphe.<br />
<br />
Pour les personnes qui ne le savent pas, les images sont souvent séparées en 2 catégories, les plus classiques sont les images matricielles (jpg, gif, png, bmp, etc.) qui sont représentées sous la forme d'un tableau de pixels et les images vectorielles (svg : Scalable Vector Graphics) qui sont décrites par le contenu à l'aide de formes et couleurs. Ces dernières sont principalement utilisées pour les logos et les images/présentations à afficher dans n'importe quelle dimension sans avoir l'effet de pixellisation.<br />
<br />
<a href="https://inkscape.org/">Inkscape</a> est le logiciel que j'utilise le plus. Je m'en suis servi pour ma présentation des origamis, mais je m'en sers aussi pour mettre en page facilement des photos, réaliser des étiquettes pour les confitures que je mets à jour toutes les années en ligne de commande (On peut effectivement utiliser Inkscape directement dans le terminal), etc.<br />
<br />
Il est parfois possible de convertir une image matricielle en image vectorielle. Inkscape possède un outil qui marche plus ou moins bien mais quand j'en ai eu vraiment besoin, j'ai obtenu de meilleurs résultats avec des outils en ligne comme <a href="https://vectormagic.com/">Vector Magic</a> (qui semble être devenu payant depuis).<br />
<br />
SVG est également un format supporté par tous les navigateurs (ou presque) et en fait donc un format privilégié pour le web. Il est parfois utilisé pour les polices d'écriture/d'icône. Il s'utilise aussi facilement avec javascript et il existe plusieurs bibliothèques :<br />
- <a href="http://dmitrybaranovskiy.github.io/raphael/">RaphaelJS</a> est la plus complète qui supporte jusqu'à IE 6, oui, oui vous avez bien lu ??? « Raphaël currently supports Firefox 3.0+, Safari 3.0+, Chrome 5.0+, Opera 9.5+ and Internet Explorer 6.0+ »<br />
- <a href="http://snapsvg.io/">Snap.svg</a> est plus récente et ne s'intéresse qu'aux navigateurs récents « Modern features for modern browsers »<br />
- <a href="http://svgjs.com/">SVG.js</a> est la version minimaliste et légère<br />
<br />
Je suis un grand fan de ce format et je connaissais quelques outils sympathiques comme <a href="http://sozi.baierouge.fr/pages/10-about-fr.html">Sozi</a> qui permet de faire des présentations animées ou <a href="https://github.com/svg/svgo">svgo</a> pour réduire la taille des fichiers (Inkscape stocke beaucoup d'infos inutile au rendu de l'image) mais je viens découvrir 2 nouveaux usages:<br />
- Des icônes responsives : <a href="http://responsiveicons.co.uk">http://responsiveicons.co.uk</a><br />
- Des logos responsives : <a href="http://responsivelogos.co.uk/">http://responsivelogos.co.uk/</a><br />
(Il faut redimensionner le navigateur pour voir la magie opérée)<br />
Je suis tombé dessus grâce à cet article<br />
<a href="https://medium.com/9elements/building-a-responsive-image-e4c6229fa1f6">https://medium.com/9elements/building-a-responsive-image-e4c6229fa1f6</a><br />
qui présente ce logo<br />
<a href="media/b13c2602.9e-anywhere.svg" data-original-source="https://www.ichimnetz.com/responsive-logo/9e-anywhere.svg">https://www.ichimnetz.com/responsive-logo/9e-anywhere.svg</a><br />

      


feed_id: http://tontof.net/index.php?2018/11/24/18/11/24-tontof-com-est-en-ligne
title: Tontof.com est en ligne
uri: Tontof-com-est-en-ligne
url: http://tontof.net/index.php?2018/11/24/18/11/24-tontof-com-est-en-ligne
content:
          C'est officiel depuis le 13 novembre 2018 <a href="https://tontof.com">https://tontof.com</a> et <a href="https://fr.tontof.com">https://fr.tontof.com</a> sont en ligne. Après quelques retours et corrections, je suis fier de vous présenter la version actuelle qui est encore en phase de test mais qui est présentable !<br />
<br />
J'espère que le site vous plaira et même si je n'ai pas encore tout optimisé, je pense qu'il est plutôt léger et loin de ce qu'on peut trouver classiquement. Je pense faire un article de tous les choix techniques que j'ai fait parce qu'il y a vraiment beaucoup de choses à dire.<br />
<br />
Pour le lancement, j'ai décidé de mettre un prix libre ce qui permet à tout le monde de tester gratuitement. Sur la page du panier il suffit de mettre 0 pour faire apparaître un bouton qui permet de valider le panier sans carte bancaire.<br />
<br />
Bon pliage à tous !<br />
<br />
<div style="text-align: center"><a href="https://fr.tontof.com"><img src="media/6a6bdd0d.tontof.png" data-original-source="https://tontof.net/img/1543079484/tontof.png" alt="Tontof en lign"></a></div>
      


feed_id: http://tontof.net/index.php?2019/01/08/19/01/08-make-our-politic-great-again
title: Make our politic great again
uri: Make-our-politic-great-again
url: http://tontof.net/index.php?2019/01/08/19/01/08-make-our-politic-great-again
content:
          Je n'aime pas écrire ce genre d'article... Je vous avais déjà dit que je n'aimais pas la (les) politique(s), mais en ce moment, c'est un sujet qui revient souvent. Je vous ai dit pour qui j'ai voté au premier tour, et même si ce n'était pas un vote d'adhésion pour la personne, c'était surtout parce que c'était le seul programme à proposer une VIe république. Et je fais partie de ceux et celles qui pensent qu'il faut effectivement remettre sur la table un certain nombre de choses.<br />
<br />
Alors bien sûr, depuis l'élection j'ai toujours un sentiment particulier. Quand j'entends « Vous m'avez élu » je revois cette <a href="https://www.youtube.com/watch?v=vfTJ4vmIsO4">vidéo de la statistique expliquée à mon chat</a> qui montre simplement qu'à la base il y a un problème avec les règles définies pour l'élection. Il existe pourtant des <a href="https://www.youtube.com/watch?v=ZoGH7d51bvc">alternatives</a>... Clairement il est difficile de savoir à qui correspond vraiment ce « vous » et combien de personnes ont vraiment voté « pour » (entre les personnes qui ont été influencées par les sondages, celles qui ont votées contre d'autres personnes, etc.).<br />
<br />
Une chose est sûre, ce n'est pas avec 18% au premier tour des personnes inscrites qu'on peut légitiment penser que tout ce qu'on va faire, va être accepter par le « peuple ». Mais ce n'est pas tout, je pense qu'il y a un autre point pour lequel les gens en ont plus qu'assez. C'est le sentiment que les (certains) politiques ne sont pas honnêtes et cherchent avant tout à défendre leurs propres intérêts.<br />
<small>- Bruno Le Maire (avant) : « La réalité c'est que Emmanuel Macron, c'est une coquille vide »<br />
- Bruno Le Maire (après) : ministre de l'économie<br />
- François Bayrou (avant) : « Je ne me reconnais pas dans ce qu'Emmanuel Macron incarne »<br />
- François Bayrou (après) : ministre d'état, garde des sceaux, ministre de la justice<br />
- Marielle de Sarnez (avant) : « il dit un certain nombre de choses et après en général il recule toujours »<br />
- Marielle de Sarnez (après) : ministre auprès du ministre de l'Europe et des affaires étrangères chargée des europpéennes</small><br />
En vidéo c'est encore plus drôle... si on peut dire que c'est drôle... Par contre, en prenant les  initiales des prénoms de l'ordre choisi par FranceInfo dans cette vidéo, ça fait BFM, et ça c'est plutôt drôle ? Non toujours pas...<br />
<a href="https://www.youtube.com/watch?v=XX0rNWLZEPs">https://www.youtube.com/watch?v=XX0rNWLZEPs</a><br />
<small>- Gérald Darmanin (avant) : « Partout où il va dans une région, il insulte les habitants de la région, il va en Bretagne, il y a les illettrés, il va en Guadeloupe, il s'expatrie, il va dans les hauts de France, il considère qu'il a de l'alcoolisme et du tabac en très grand nombre donc c'est quelqu'un qui ne connaît le pays d'abord »<br />
- Gérald Darmanin (après) : « Moi j'ai vu un président de la république plusieurs fois, dans plusieurs déplacements, en Guyane, dans ma commune à Tourcoing, d'une écoute, d'une empathie, d'une volonté de convaincre »</small><br />
<a href="https://www.facebook.com/naceur.hamadi/posts/2377653542263725">https://www.facebook.com/naceur.hamadi/posts/2377653542263725</a><br />
<small>- Édouard Philippe (avant) : « Quand il s'exprime sur tout plein de choses, je me dis que c'est dommage qu'il n'ait pas été ministre de l'Économie juste avant parce qu'il aurait pu le faire, ah pardon, il était ministre de l'Économie avant et il ne l'a pas fait »<br />
- Édouard Philippe (après) : premier ministre</small><br />
<a href="https://www.youtube.com/watch?v=olVCanjtgrM">https://www.youtube.com/watch?v=olVCanjtgrM</a><br />
<br />
Nul n'est dupe et tout le monde est d'accord pour dire qu'il y a des problèmes. Personnellement je ne pense pas que le grand débat permettra de changer les choses en profondeur. Quand on nous prévient que de toute façon, le but ne sera pas de faire changer les choses alors même que c'est ce qui est demandé, à quoi bon vouloir débattre. Cause toujours tu m'intéresses... J'entends parler d'un RIC (CARL), mais je ne pense pas que c'est LA solution. C'est sûr que ça serait un début pour considérer le peuple, mais clairement il y a trop de paramètres à considérer pour espérer qu'il sera bien appliqué. Je ne demande qu'à voir cependant.<br />
<br />
Enfin tout ça pour dire que j'espère qu'en 2019 on aura du neuf...
      


feed_id: http://tontof.net/index.php?2019/02/07/19/02/07-kriss-tuto-html-css-php-et-maintenant-javascript
title: KrISS tuto : html, css, php et maintenant javascript
uri: KrISS-tuto-html-css-php-et-maintenant-javascript
url: http://tontof.net/index.php?2019/02/07/19/02/07-kriss-tuto-html-css-php-et-maintenant-javascript
content:
          Cela faisait plusieurs années que j'utilisais une présentation javascript d'une autre personne alors qu'il y avait des choses du style<br />
<code><br />
&lt;SCRIPT LANGUAGE="JavaScript">...&lt;/SCRIPT><br />
</code><br />
Autant vous dire que je n'étais pas à l'aise : l'utilisation des majuscules pour les balises et l'attribut language... ça pique un peu les yeux. J'avais apporté quelques modifications sur le fichier PDF avec Master PDF editor (qui depuis la version 5 n'est plus vraiment gratuit pour exporter ses modifications mais qui est heureusement toujours disponible en version <a href="https://code-industry.net/public/master-pdf-editor-4.3.89_qt5.amd64.deb">4.3.89</a>). D'ailleurs si vous connaissez une alternative je suis preneur...<br />
<br />
Heureusement maintenant c'est fini parce qu'après <a href="//tontof.net/tuto/html">HTML/CSS</a> et <a href="//tontof.net/tuto/php">PHP</a> j'ai enfin agrémenter <a href="https://github.com/tontof/kriss_tuto">KrISS tuto</a> de <a href="//tontof.net/tuto/js">JS</a> !<br />
<br />
Autant vous dire que je suis bien content et mon cours est maintenant complet, uniforme et interactif grâce aux différentes consoles que j'ai adaptées pour être utilisées directement dans le navigateur avec l'affichage du code HTML/CSS et son interprétation par le navigateur, l'affichage de la console JS et la sortie du code PHP. C'est vraiment agréable pour la présentation, tout se fait dans le navigateur !<br />
<br />
En plus je peux générer le PDF de mon cours grâce à l'attribut <a href="//tontof.net/tuto/js?print-pdf">print-pdf</a> dans l'url. Par contre je ne sais pas exactement pourquoi mais quand je l'imprime avec Firefox, il me génère une page blanche entre chaque diapo et j'ai donc cherché à les supprimer en ligne de commande.<br />
<br />
J'avais déjà eu le soucis, et j'avais utilisé pdftk pour résoudre ce problème<br />
<code><br />
pdftk A=fichier.pdf cat Aodd output fichier_impair.pdf<br />
</code><br />
Sauf que pdftk ne s'installe plus facilement avec apt à cause de certaines dépendances. A priori il existe une version <a href="https://gitlab.com/pdftk-java/pdftk">java</a> mais je n'avais pas envie d'ajouter une source tiers pour ça et j'ai donc cherché une alternative.<br />
<br />
Première tentative avec psselect:<br />
<code><br />
pdftops fichier.pdf; psselect -o fichier.ps > fichier_impair.ps; ps2pdf fichier_impair.ps<br />
</code><br />
L'option -o pour odd (impair) et -e pour even (pair).<br />
Taille du fichier d'origine 611k, taille du fichier final 6.6M !!!<br />
À part le fait qu'au final j'ai bien le résultat attendu, c'est juste pas une bonne solution, les conversions pdf/ps/pdf sont super longues, la création d'un fichier PS inutile et la taille du finale du fichier  x10 ce n'est pas possible...<br />
<br />
Deuxième tentative avec <a href="https://github.com/qpdf/qpdf">qpdf</a>:<br />
<code><br />
qpdf --pages fichier.pdf 1,3,5,7,9 -- fichier.pdf fichier_impair.pdf<br />
</code><br />
Sauf que mon nombre de pages ne s'arrêtent pas à 10 et je n'ai pas vu d'options dans le man pour gérer les pages paires/impaires.<br />
J'ai donc cherché à récupérer le nombre de page de mon fichier PDF avec :<br />
<code><br />
pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2<br />
</code><br />
et avec l'utilisation de seq pour générer la liste des pages impaires<br />
<code><br />
seq 1 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)<br />
</code><br />
pour les pages paires il suffit de commencer seq à 2<br />
<code><br />
seq 2 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)<br />
</code><br />
Pour avoir toutes les pages sur une seule ligne, un petit xargs et un petit tr pour remplacer les espaces par des virgules, ce qui donne au final :<br />
<code><br />
file="fichier.pdf"; qpdf --pages "$file" $(seq 1 2 $(pdfinfo "$file" | grep 'Pages:' | cut -d':' -f2) | xargs | tr " " ",") -- "$file" "${file/.pdf/_impair.pdf}"<br />
</code><br />
Taille du fichier d'origine 611k, taille du fichier final 502k !!! Et c'est instantané !<br />
Vive la ligne de commande
      


feed_id: http://tontof.net/index.php?2019/06/27/19/06/27-filtre-calendrier-ics
title: Filtre calendrier ICS
uri: Filtre-calendrier-ICS
url: http://tontof.net/index.php?2019/06/27/19/06/27-filtre-calendrier-ics
content:
          Quand l'administration utilise Google Calendar pour gérer les plannings avec un seul calendrier, ce n'est pas simple d'ajouter juste les événements qui nous intéressent.<br />
On m'a demandé si c'était possible et après une rapide recherche, je n'ai rien trouvé qui permettait de faire ça : je n'ai pas réussi à utiliser <a href="https://icalfilter.com/">https://icalfilter.com/</a><br />
<br />
Je serai curieux de savoir si c'est possible de le faire avec un <a href="https://framagenda.org">https://framagenda.org</a> mais en utilisant un <em>parseur</em> et un <em>formatteur</em> PHP c'est plutôt simple.<br />
<br />
Si ça peut être utile à d'autres.<br />
<br />
Dans le fichier composer.json<br />
<pre><br />
{<br />
    "require": {<br />
      "johngrogg/ics-parser": "^2",<br />
      "jsvrcek/ics": "*@dev"<br />
    }<br />
}<br />
</pre><br />
<br />
On installe tout ce qu'il faut avec <pre>composer install</pre><br />
<br />
Dans un fichier index.php<br />
<code><span style="color: #000000"><br />
<span style="color: #0000CC">&lt;?php&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #006600">require_once&nbsp;</span><span style="color: #CC0000">'vendor/autoload.php'</span><span style="color: #006600">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000CC">ICal</span><span style="color: #006600">\</span><span style="color: #0000CC">ICal</span><span style="color: #006600">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000CC">Jsvrcek</span><span style="color: #006600">\</span><span style="color: #0000CC">ICS</span><span style="color: #006600">\</span><span style="color: #0000CC">Model</span><span style="color: #006600">\</span><span style="color: #0000CC">Calendar</span><span style="color: #006600">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000CC">Jsvrcek</span><span style="color: #006600">\</span><span style="color: #0000CC">ICS</span><span style="color: #006600">\</span><span style="color: #0000CC">Model</span><span style="color: #006600">\</span><span style="color: #0000CC">CalendarEvent</span><span style="color: #006600">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000CC">Jsvrcek</span><span style="color: #006600">\</span><span style="color: #0000CC">ICS</span><span style="color: #006600">\</span><span style="color: #0000CC">Model</span><span style="color: #006600">\</span><span style="color: #0000CC">Relationship</span><span style="color: #006600">\</span><span style="color: #0000CC">Attendee</span><span style="color: #006600">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000CC">Jsvrcek</span><span style="color: #006600">\</span><span style="color: #0000CC">ICS</span><span style="color: #006600">\</span><span style="color: #0000CC">Model</span><span style="color: #006600">\</span><span style="color: #0000CC">Relationship</span><span style="color: #006600">\</span><span style="color: #0000CC">Organizer</span><span style="color: #006600">;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000CC">Jsvrcek</span><span style="color: #006600">\</span><span style="color: #0000CC">ICS</span><span style="color: #006600">\</span><span style="color: #0000CC">Utility</span><span style="color: #006600">\</span><span style="color: #0000CC">Formatter</span><span style="color: #006600">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000CC">Jsvrcek</span><span style="color: #006600">\</span><span style="color: #0000CC">ICS</span><span style="color: #006600">\</span><span style="color: #0000CC">CalendarStream</span><span style="color: #006600">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000CC">Jsvrcek</span><span style="color: #006600">\</span><span style="color: #0000CC">ICS</span><span style="color: #006600">\</span><span style="color: #0000CC">CalendarExport</span><span style="color: #006600">;<br />
<br />
&nbsp;&nbsp;try&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000CC">$ical&nbsp;</span><span style="color: #006600">=&nbsp;new&nbsp;</span><span style="color: #0000CC">ICal</span><span style="color: #006600">(</span><span style="color: #CC0000">'https://raw.githubusercontent.com/u01jmg3/ics-parser/master/examples/ICal.ics'</span><span style="color: #006600">,&nbsp;array(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #CC0000">'defaultSpan'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #006600">=&gt;&nbsp;</span><span style="color: #0000CC">2</span><span style="color: #006600">,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF9900">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #CC0000">'defaultTimeZone'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #006600">=&gt;&nbsp;</span><span style="color: #CC0000">'UTC'</span><span style="color: #006600">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #CC0000">'defaultWeekStart'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #006600">=&gt;&nbsp;</span><span style="color: #CC0000">'MO'</span><span style="color: #006600">,&nbsp;&nbsp;</span><span style="color: #FF9900">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #CC0000">'disableCharacterReplacement'&nbsp;</span><span style="color: #006600">=&gt;&nbsp;</span><span style="color: #0000CC">false</span><span style="color: #006600">,&nbsp;</span><span style="color: #FF9900">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #CC0000">'filterDaysAfter'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #006600">=&gt;&nbsp;</span><span style="color: #0000CC">null</span><span style="color: #006600">,&nbsp;&nbsp;</span><span style="color: #FF9900">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #CC0000">'filterDaysBefore'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #006600">=&gt;&nbsp;</span><span style="color: #0000CC">null</span><span style="color: #006600">,&nbsp;&nbsp;</span><span style="color: #FF9900">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #CC0000">'replaceWindowsTimeZoneIds'&nbsp;&nbsp;&nbsp;</span><span style="color: #006600">=&gt;&nbsp;</span><span style="color: #0000CC">false</span><span style="color: #006600">,&nbsp;</span><span style="color: #FF9900">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #CC0000">'skipRecurrence'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #006600">=&gt;&nbsp;</span><span style="color: #0000CC">false</span><span style="color: #006600">,&nbsp;</span><span style="color: #FF9900">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #CC0000">'useTimeZoneWithRRules'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #006600">=&gt;&nbsp;</span><span style="color: #0000CC">false</span><span style="color: #006600">,&nbsp;</span><span style="color: #FF9900">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #006600">));<br />
&nbsp;&nbsp;}&nbsp;catch&nbsp;(\</span><span style="color: #0000CC">Exception&nbsp;$e</span><span style="color: #006600">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die(</span><span style="color: #0000CC">$e</span><span style="color: #006600">);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000CC">$forceTimeZone&nbsp;</span><span style="color: #006600">=&nbsp;</span><span style="color: #0000CC">false</span><span style="color: #006600">;<br />
<br />
&nbsp;&nbsp;</span><span style="color: #0000CC">$newCal&nbsp;</span><span style="color: #006600">=&nbsp;new&nbsp;</span><span style="color: #0000CC">Calendar</span><span style="color: #006600">();<br />
&nbsp;&nbsp;</span><span style="color: #0000CC">$newCal</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">setProdId</span><span style="color: #006600">(</span><span style="color: #0000CC">$ical</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">cal</span><span style="color: #006600">[</span><span style="color: #CC0000">'VCALENDAR'</span><span style="color: #006600">][</span><span style="color: #CC0000">'PRODID'</span><span style="color: #006600">]);<br />
&nbsp;&nbsp;</span><span style="color: #0000CC">$newCal</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">setVersion</span><span style="color: #006600">(</span><span style="color: #0000CC">$ical</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">cal</span><span style="color: #006600">[</span><span style="color: #CC0000">'VCALENDAR'</span><span style="color: #006600">][</span><span style="color: #CC0000">'VERSION'</span><span style="color: #006600">]);<br />
&nbsp;&nbsp;</span><span style="color: #0000CC">$newCal</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">setName</span><span style="color: #006600">(</span><span style="color: #0000CC">$ical</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">cal</span><span style="color: #006600">[</span><span style="color: #CC0000">'VCALENDAR'</span><span style="color: #006600">][</span><span style="color: #CC0000">'X-WR-CALNAME'</span><span style="color: #006600">]);<br />
&nbsp;&nbsp;</span><span style="color: #0000CC">$newCal</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">setCalendarScale</span><span style="color: #006600">(</span><span style="color: #0000CC">$ical</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">cal</span><span style="color: #006600">[</span><span style="color: #CC0000">'VCALENDAR'</span><span style="color: #006600">][</span><span style="color: #CC0000">'CALSCALE'</span><span style="color: #006600">]);<br />
&nbsp;&nbsp;</span><span style="color: #0000CC">$newCal</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">setMethod</span><span style="color: #006600">(</span><span style="color: #0000CC">$ical</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">cal</span><span style="color: #006600">[</span><span style="color: #CC0000">'VCALENDAR'</span><span style="color: #006600">][</span><span style="color: #CC0000">'METHOD'</span><span style="color: #006600">]);<br />
&nbsp;&nbsp;</span><span style="color: #0000CC">$newCal</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">setCustomHeaders</span><span style="color: #006600">([</span><span style="color: #CC0000">"X-WR-TIMEZONE"&nbsp;</span><span style="color: #006600">=&gt;&nbsp;</span><span style="color: #0000CC">$ical</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">cal</span><span style="color: #006600">[</span><span style="color: #CC0000">'VCALENDAR'</span><span style="color: #006600">][</span><span style="color: #CC0000">'X-WR-TIMEZONE'</span><span style="color: #006600">]]);<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000CC">$events&nbsp;</span><span style="color: #006600">=&nbsp;</span><span style="color: #0000CC">$ical</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">events</span><span style="color: #006600">();<br />
&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000CC">$events&nbsp;</span><span style="color: #006600">as&nbsp;</span><span style="color: #0000CC">$event</span><span style="color: #006600">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF9900">//&nbsp;add&nbsp;custom&nbsp;filter&nbsp;here<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #006600">if&nbsp;(</span><span style="color: #0000CC">preg_match</span><span style="color: #006600">(</span><span style="color: #CC0000">'/.*DST*/'</span><span style="color: #006600">,&nbsp;</span><span style="color: #0000CC">$event</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">summary</span><span style="color: #006600">))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000CC">$newEvent&nbsp;</span><span style="color: #006600">=&nbsp;new&nbsp;</span><span style="color: #0000CC">CalendarEvent</span><span style="color: #006600">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000CC">$newEvent</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">setStart</span><span style="color: #006600">(new&nbsp;</span><span style="color: #0000CC">DateTime</span><span style="color: #006600">(</span><span style="color: #0000CC">$event</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">dtstart</span><span style="color: #006600">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000CC">$newEvent</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">setEnd</span><span style="color: #006600">(new&nbsp;</span><span style="color: #0000CC">DateTime</span><span style="color: #006600">(</span><span style="color: #0000CC">$event</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">dtend</span><span style="color: #006600">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000CC">$newEvent</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">setSummary</span><span style="color: #006600">(</span><span style="color: #0000CC">$event</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">summary</span><span style="color: #006600">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000CC">$newEvent</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">setUid</span><span style="color: #006600">(</span><span style="color: #0000CC">$event</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">uid</span><span style="color: #006600">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000CC">$newEvent</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">setStatus</span><span style="color: #006600">(</span><span style="color: #0000CC">$event</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">status</span><span style="color: #006600">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000CC">$newCal</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">addEvent</span><span style="color: #006600">(</span><span style="color: #0000CC">$newEvent</span><span style="color: #006600">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000CC">$calendarExport&nbsp;</span><span style="color: #006600">=&nbsp;new&nbsp;</span><span style="color: #0000CC">CalendarExport</span><span style="color: #006600">(new&nbsp;</span><span style="color: #0000CC">CalendarStream</span><span style="color: #006600">,&nbsp;new&nbsp;</span><span style="color: #0000CC">Formatter</span><span style="color: #006600">());<br />
&nbsp;&nbsp;</span><span style="color: #0000CC">$calendarExport</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">addCalendar</span><span style="color: #006600">(</span><span style="color: #0000CC">$newCal</span><span style="color: #006600">);<br />
<br />
&nbsp;&nbsp;</span><span style="color: #0000CC">header</span><span style="color: #006600">(</span><span style="color: #CC0000">'Content-type:&nbsp;text/calendar;&nbsp;charset=utf-8'</span><span style="color: #006600">);<br />
&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000CC">$calendarExport</span><span style="color: #006600">-&gt;</span><span style="color: #0000CC">getStream</span><span style="color: #006600">();<br />
&nbsp;</span><span style="color: #0000CC">?&gt;</span><br />
</span><br />
</code><br />

      


feed_id: http://tontof.net/index.php?2021/02/19/19/02/21-quelques-nouvelles-et-une-mise-a-jour-de-kriss-tuto
title: Quelques nouvelles et une mise à jour de KrISS tuto
uri: Quelques-nouvelles-et-une-mise-à-jour-de-KrISS-tuto
url: http://tontof.net/index.php?2021/02/19/19/02/21-quelques-nouvelles-et-une-mise-a-jour-de-kriss-tuto
content:
          Plus d'1 an et demi sans article, que le temps passe vite.<br />
<br />
Je pourrais résumé 2020 comme l'année de <strong>Merdouille</strong>. Cette simple phrase n'est pas anodine et correspond à quelques choses de très personnel, très loin de tout ce que se rappelleront la plupart des gens.<br />
<br />
Parce qu'en ce moment des personnes ont besoin d'avoir des informations positives, je ne vais vous parler que de choses chouettes.<br />
<br />
<h3>Accès à distance avec la banque à l'écureuil</h3><br />
Je ne parlerai donc pas de ma banque à l'écureuil qui depuis la mise en place de l'authentification par SMS ne me donne plus aucun accès sur internet et ne me propose aucune solution alternative. Même leur service technique n'a pas su m'expliquer pourquoi, la personne par téléphone m'a simplement dit que ça arrivait parfois et qu'il fallait demander à mon agence de me mettre sur liste blanche. Sauf que c'est sur décision du directeur d'agence et que ce dernier n'a pas voulu. En cherchant de mon côté je me suis aperçu que c'était lié à mon téléphone, mon nokia 1110 ne reçoit pas le SMS d'authentification, mais il reçoit bien celui du mot de passe de réinitialisation. J'ai bien sûr dit à ma banque que je n'allais pas changer de téléphone et que je voulais donc fermer mes comptes ce à quoi on m'a répondu de fournir mon relevé d'impôts... C'est quoi le rapport ??? Je n'avais déjà plus de chèque/carte bancaire sur ce compte, mais maintenant je me retrouve donc avec un compte vide chez l'écureuil après avoir effectué les virements nécessaires.<br />
<br />
<h3>Linux Mint 20.1 et libinput</h3><br />
Je ne vous parlerai pas non plus de mes récents problèmes avec Linux Mint. C'est vrai que ça faisait <a href="https://sebsauvage.net/links/?rq-0_w">longtemps que tout se passait bien</a> sauf qu'à ma dernière mise à jour sur Linux Mint 20.1, écran noir au redémarrage bloqué sur grub. La solution était assez simple à trouver avec une live USB :<br />
- sudo grub-install /dev/sda<br />
- sudo update-grub<br />
mais c'est assez déstabilisant parce que ça ne m'était jamais arrivé. Je n'ai pas cherché à comprendre mais peut-être que c'était lié à mon partitionnement sur mon disque qui était déjà bien découpé. Je n'abandonnerai pas pour autant tout ça pour passer à Windows 10 comme <a href="https://www.blog-libre.org/2021/02/16/pourquoi-jai-tourne-la-page-du-libre/">certaines personnes</a> parce qu'au fond je sais que j'aurais encore plus de problèmes avec Windows. Je suis tout à fait d'accord avec <a href="https://sebsauvage.net/links/?_WwFdg">Sebsauvage</a> et j'ai beaucoup moins de demandes/problèmes depuis que j'ai passé mes proches à Linux que quand ces personnes étaient sous Windows (on parle de personnes qui ont un usage limité à la bureautique/internet avec les ordinateurs). Avec Linux Mint 20.1 j'ai également de temps en temps un problème avec mon touchpad à cause de la nouvelle bibliothèque libinput mais c'était annoncé : <a href="https://linuxmint.com/rel_ulyssa_mate.php">https://linuxmint.com/rel_ulyssa_mate.php</a> et la solution proposée est très acceptable : apt install xserver-xorg-input-synaptics<br />
Par contre je vais quand même faire un vrai reproche que je crois encore lié à libinput mais avant de l'imposer par défaut il faudrait s'assurer que ça fonctionne bien. Si vous utilisez des manettes et qu'il faut les calibrer vous ne pourrez pas le faire simplement. Avant il y avait <a href="https://jstest-gtk.gitlab.io/">jstest-gtk</a> et il n'y a aucun équivalent avec la nouvelle version <a href="https://gitlab.com/evtest-qt/evtest-qt">evtest-qt</a>. Heureusement j'ai trouvé une solution grâce à <a href="https://github.com/m-kostrzewa/sdl2-joystick-calib">python</a> qui permet de faire un man in the middle avec la manette ! Mais il faut bien avouer que ce n'est pas à la portée de tout le monde.<br />
<br />
<h3>MakeMKV</h3><br />
Et entre nous, je ne vais pas non plus vous embêter avec mes problèmes pour lire des DVD officiels d'une ancienne série. Aucun problème avec les 3 premières saisons et le premier DVD de la 4e et dernière saison (parce qu'il ne faut pas se le cacher mais quand une série est considérée terminée et que parce qu'il y a sûrement de l'argent à se faire on refait une saison des années plus tard, ça ne donne <a href="https://fr.wikipedia.org/wiki/Jumping_the_shark">jamais des merveilles</a>, je considère donc la saison 4 comme la dernière) mais à partir du 2e DVD de la saison 4, ce dernier se montait comme périphérique TSITFAT. La solution n'a pas été simple a trouvé mais maintenant tout fonctionne grâce à <a href="https://www.makemkv.com/forum/viewtopic.php?f=3&amp;t=224">MakeMKV</a>. Des personnes se demandent encore pourquoi des gens piratent des séries, mais même avec les DVD dans les mains j'ai dû regardé des épisodes en streaming le temps que je trouve comment corriger ce problème de TSITFAT... Et encore sur un ordi, merci VLC,  on peut passer les menus parce que les annonces sur les DVD officiels pour dire que le piratage c'est mal et que sur un lecteur DVD de salon on ne peut pas passer, c'est vraiment mais alors vraiment la meilleure solution pour favoriser le piratage...<br />
<br />
<h3>Mise à jour de <a href="https://github.com/tontof/kriss_tuto/">KrISS tuto</a></h3><br />
Pour parler vraiment de choses chouettes, je suis resté dans le silence alors que je n'aurais jamais été autant prolifique cette année 2020. J'ai mis en production un projet pro qui aura duré plus d'un an et demi, ce qui explique aussi mon silence et qui maintenant est en place depuis fin octobre sans trop de problème, en tout cas pas forcément de ma faute. Les certificats Let's Encrypt ont changé et n'étaient plus compatibles avec les anciennes version d'Android, heureusement c'est de nouveau fonctionnel : <a href="https://letsencrypt.org/2020/12/21/extending-android-compatibility.html">https://letsencrypt.org/2020/12/21/extending-android-compatibility.html</a><br />
<br />
J'ai aussi dû modifier mes cours comme jamais pour qu'ils puissent être adaptés aux cours à distance (avec le recul que de temps perdu quand on voit le résultat). J'ai dû mettre en place de nouvelles modalités pour évaluer mes matières (que de temps gagné pour la mise en place des futurs examens). Il était évident que l'évaluation à distance allait conduire à une triche massive de la part des étudiant⋅es. Le nombre de collègues qui ont fait comme si c'était une évaluation normale ont eu la surprise de voir des copies semblables/identiques, sérieusement ? <br />
<br />
De mon côté j'ai mis en place des générateurs d'énoncés pour évaluer mes matières avec des thèmes différents (merci ÉS pour toutes ces propositions) et des questions différentes pour chaque copie et même avec ça, j'ai eu le droit à des réponses qui parlaient d'abeilles alors que la copie parlait de chèvres...<br />
Quand j'aurais un peu de temps j'essayerai de partager tout ça parce que je pense que ça pourrait être utile. C'est autre chose que la génération de <a href="https://www.auto-multiple-choice.net/">QCM avec LaTeX</a> et il est sûr que ça prend plus de temps pour faire la correction, mais au moins on sait ce qu'on évalue. Petit aperçu pour l'évaluation de requêtes algébriques ou SQL :<br />
- « Donner le nombre de membres des troupes qui se sont produites dans des festivités qui se sont déroulées dans des villes dont l'altitude est 75 »<br />
- « Donner le genre musical du groupe qui a l'année de formation la plus grande (ou les genres musicaux des groupes si plusieurs groupes ont la même année de formation) »<br />
Tout ceci est généré automatiquement et je suis assez fier du résultat mais beaucoup moins du code. Coder vite et bien ce n'est pas toujours simple.<br />
<br />
J'avais prévu depuis longtemps de ne pas intervenir en cours fin 2020 et c'est plutôt bien tombé parce que l'organisation de la rentrée a été plutôt compliquée. C'est guère mieux pour ce 2e semestre, mais il y a un peu plus d'expérience et il semblerait acquis (avant de nouvelles annonces) que les examens à distance c'est terminé. J'en ai quand même profité pour mettre à jour mes cours <a href="https://tontof.net/tuto/html/">HTML/CSS</a>/<a href="https://tontof.net/tuto/js/">JS</a>/<a href="https://tontof.net/tuto/php/">PHP</a> en supprimant <a href="https://jquery.com/">jquery</a>, en remplaçant <a href="https://highlightjs.org/">highlight.js</a> par <a href="https://codemirror.net/">CodeMirror</a> et en ajoutant <a href="https://github.com/nathancahill/split/tree/master/packages/split-grid">Split Grid</a> (un petit plus que j'ai ajouté pour changer la largeur de colonnes de l'éditeur quand j'en ai besoin).<br />
<br />
Un petit aperçu avec une belle coloration syntaxique dans les slides et dans l'éditeur grâce à CodeMirror. L'éditeur qui s'adapte en fonction du code si c'est du HTML (2 colonnes) ou du PHP (3 colonnes).<br />
<a href="https://tontof.net/tuto/html/#/slide-hello-world">https://tontof.net/tuto/html/#/slide-hello-world</a><br />
<a href="https://tontof.net/tuto/php/#/slide-hello-world">https://tontof.net/tuto/php/#/slide-hello-world</a><br />
<br />
Je pense être quelqu'un de très exigeant et je n'ai pratiquement plus rien à redire sur ces supports, je suis presque entièrement satisfait par mon approche pour faire ces cours. Je ne parle pas du fond mais bien de la forme. Je remercie vraiment <a href="https://www.gnu.org/software/emacs/emacs.html">GNU Emacs</a>, <a href="https://orgmode.org/">Org Mode</a>, <a href="https://revealjs.com/">reveal.js</a>, <a href="https://github.com/yjwen/org-reveal/">org-reveal</a>, <a href="https://github.com/niklasvh/php.js">PHP.js</a> et <a href="https://www.mathjax.org/">MathJax</a>.<br />
<br />
À dans un an et demi ? Je devrais avoir plus de temps pour partager des choses, je pense donc que ça sera avant mais je ne préfère pas m'avancer, on ne sait jamais de quoi sera fait l'avenir.
      


title: KrISS jams pour générer des étiquettes pour vos pots de confitures
uri: KrISS-jams-pour-générer-des-étiquettes-pour-vos-pots-de-confitures
feed_id:
http://tontof.net/index.php?2021/06/22/13/17/13-kriss-jams-pour-generer-des-etiquettes-pour-vos-pots-de-confitures

url:
http://tontof.net/index.php?2021/06/22/13/17/13-kriss-jams-pour-generer-des-etiquettes-pour-vos-pots-de-confitures

content:
          <h2>Pots d'échappement</h2><br />
<br />
J'avais prévu un article pour me plaindre de toutes ces choses qui me chagrinent : quand on m'a expliqué pourquoi on voyait de plus en plus de gros 4x4 et que l'exonération de malus pour ces 4x4 considérés comme utilitaires n'était sûrement pas un hasard, quand on m'a dit que certains gros utilitaires qui possédaient un jerrican pour faire tourner un compresseur avaient été modifiés pour le brancher directement sur le réservoir du véhicule (ce qui était une bonne idée) mais après la sortie moteur ce qui nécessite de faire tourner le moteur constamment pour s'en servir... ou comment faire d'une bonne idée, une grosse idée de merde (peut-être qu'il y a une info technique qui m'échappe, mais en 2021, je n'arrive pas à comprendre comment on peut prendre ce genre de décision...), quand j'ai vu qu'un gros utilitaire lourd avait une vignette Crit'air 2 car plutôt récent mais qui pollue mille fois plus (hyperbole) que notre petite et légère voiture bien trop ancienne qui ne mériterait pas mieux qu'une vignette Crit'air 3 (je ne parle même pas de notre voiture encore plus légère et plus ancienne : « Votre véhicule ne répond pas aux critères retenus pour l'attribution d'un certificat qualité de l'air »), quand on comprend que les grosses camionnettes immatriculées principalement en Pologne sont le nouveau mode de transport à la mode car il permet de ne pas avoir les mêmes contraintes associées aux routiers en camion, dormir après avoir beaucoup roulé quelle idée saugrenue... ou quand on vous explique que les tarifs de certains trajets en transport proposé par des camions non immatriculés en France sont impossibles à tenir car moins coûteux que les coûts réels, soupçon de blanchiment d'argent ? théorie du complot ou réalité, je ne préfère ne pas trop savoir. Bref, ce n'était pas un article très optimiste.<br />
<br />
<h2>Pots de confitures : <a href="https://tontof.net/jams/">KrISS jams</a></h2><br />
<br />
Vous avez le choix : faire comme moi et ne rien étiqueter parce qu'après tout en rangeant à peu près bien vos pots vous retrouvez ce que vous voulez et puis parfois on a la surprise de ne pas avoir le parfum que l'on croyait, ou bien comme ma (bonne) maman bien mieux organisée qui étiquette joliment tous ces pots. Petite aparté pour remercier publiquement mes parents pour un peu tout, j'ai une chance inestimable et j'en suis bien conscient.<br />
<br />
Chaque année ma maman me demande donc de mettre à jour la date des étiquettes que je lui avais préparées. Sauf que cette année, magie du format svg et Inkscape, impossible de faire tout ça en ligne de commande, mise à jour depuis la version 0.92 avec un dpi qui change, l'option convert-dpi-method=scale-viewbox n'étant pas gérer et un problème de police mal installée posait problème avec Inkscape et GIMP mais pas Firefox. Je vous avais dit que j'avais un peu plus de temps alors j'en ai profité pour faire <a href="https://tontof.net/jams/">KrISS jams</a> un générateur d'étiquettes pour les pots de confitures.<br />
<br />
Petite précision, les réglages par défaut correspondront à ceux voulus par ma maman et risquent de changer avec le temps. J'ai un peu plus de temps mais pas suffisamment pour améliorer l'outil avec les réglages paramétrables dans l'ancre de l'url. Il faudrait aussi que je traduise pour avoir tout en français et en anglais, mais en attendant l'interface est en anglais et le contenu en français. J'aurais bien aimé avoir un petit éditeur pour personnaliser l'étiquette mais je n'ai rien trouvé de simple et fonctionnel comme je l'imaginais. C'est donc pour le moment limité à une image, la date et le texte. <a href="https://github.com/tontof/kriss_jams">Techniquement</a> c'était intéressant pour rendre tout ça responsive et j'ai trouvé les images de <a href="https://www.shutterstock.com/fr/g/Daria+Ustiugova">Daria Ustiugova</a> parfaites pour illustrer les étiquettes merci pour ce travail et de m'avoir autorisé à le partager avec ces belles images.<br />
<br />
Bel été et bonnes confitures 2021 à tout le monde.
      


title: KrISS jams pour générer des étiquettes pour vos pots de confitures
uri: 2021-09-20-KrISS-jams-pour-générer-des-étiquettes-pour-vos-pots-de-confitures
feed_id:
https://tontof.net/index.php?2021/06/22/13/17/13-kriss-jams-pour-generer-des-etiquettes-pour-vos-pots-de-confitures

url:
https://tontof.net/index.php?2021/06/22/13/17/13-kriss-jams-pour-generer-des-etiquettes-pour-vos-pots-de-confitures

content:
          <h2>Pots d'échappement</h2><br />
<br />
J'avais prévu un article pour me plaindre de toutes ces choses qui me chagrinent : quand on m'a expliqué pourquoi on voyait de plus en plus de gros 4x4 et que l'exonération de malus pour ces 4x4 considérés comme utilitaires n'était sûrement pas un hasard, quand on m'a dit que certains gros utilitaires qui possédaient un jerrican pour faire tourner un compresseur avaient été modifiés pour le brancher directement sur le réservoir du véhicule (ce qui était une bonne idée) mais après la sortie moteur ce qui nécessite de faire tourner le moteur constamment pour s'en servir... ou comment faire d'une bonne idée, une grosse idée de merde (peut-être qu'il y a une info technique qui m'échappe, mais en 2021, je n'arrive pas à comprendre comment on peut prendre ce genre de décision...), quand j'ai vu qu'un gros utilitaire lourd avait une vignette Crit'air 2 car plutôt récent mais qui pollue mille fois plus (hyperbole) que notre petite et légère voiture bien trop ancienne qui ne mériterait pas mieux qu'une vignette Crit'air 3 (je ne parle même pas de notre voiture encore plus légère et plus ancienne : « Votre véhicule ne répond pas aux critères retenus pour l'attribution d'un certificat qualité de l'air »), quand on comprend que les grosses camionnettes immatriculées principalement en Pologne sont le nouveau mode de transport à la mode car il permet de ne pas avoir les mêmes contraintes associées aux personnes qui roulent en camion, dormir après avoir beaucoup roulé quelle idée saugrenue... ou quand on vous explique que les tarifs de certains trajets en transport proposé par des camions non immatriculés en France sont impossibles à tenir car moins coûteux que les coûts réels, soupçon de blanchiment d'argent ? théorie du complot ou réalité, je ne préfère ne pas trop savoir. Bref, ce n'était pas un article très optimiste.<br />
<br />
<h2>Pots de confitures : <a href="https://tontof.net/jams/">KrISS jams</a></h2><br />
<br />
Vous avez le choix : faire comme moi et ne rien étiqueter parce qu'après tout en rangeant à peu près bien vos pots vous retrouvez ce que vous voulez et puis parfois on a la surprise de ne pas avoir le parfum que l'on croyait, ou bien comme ma (bonne) maman bien mieux organisée qui étiquette joliment tous ces pots. Petite aparté pour remercier publiquement mes parents pour un peu tout, j'ai une chance inestimable et j'en suis bien conscient.<br />
<br />
Chaque année ma maman me demande donc de mettre à jour la date des étiquettes que je lui avais préparées. Sauf que cette année, magie du format svg et Inkscape, impossible de faire tout ça en ligne de commande, mise à jour depuis la version 0.92 avec un dpi qui change, l'option convert-dpi-method=scale-viewbox n'étant pas gérer et un problème de police mal installée posait problème avec Inkscape et GIMP mais pas Firefox. Je vous avais dit que j'avais un peu plus de temps alors j'en ai profité pour faire <a href="https://tontof.net/jams/">KrISS jams</a> un générateur d'étiquettes pour les pots de confitures.<br />
<br />
Petite précision, les réglages par défaut correspondront à ceux voulus par ma maman et risquent de changer avec le temps. J'ai un peu plus de temps mais pas suffisamment pour améliorer l'outil avec les réglages paramétrables dans l'ancre de l'url. Il faudrait aussi que je traduise pour avoir tout en français et en anglais, mais en attendant l'interface est en anglais et le contenu en français. J'aurais bien aimé avoir un petit éditeur pour personnaliser l'étiquette mais je n'ai rien trouvé de simple et fonctionnel comme je l'imaginais. C'est donc pour le moment limité à une image, la date et le texte. <a href="https://github.com/tontof/kriss_jams">Techniquement</a> c'était intéressant pour rendre tout ça responsive et j'ai trouvé les images de <a href="https://www.shutterstock.com/fr/g/Daria+Ustiugova">Daria Ustiugova</a> parfaites pour illustrer les étiquettes merci pour ce travail et de m'avoir autorisé à le partager avec ces belles images.<br />
<br />
Bel été et bonnes confitures 2021 à tout le monde.
      


title: Quelques nouvelles et une mise à jour de KrISS tuto
uri: 2021-09-20-Quelques-nouvelles-et-une-mise-à-jour-de-KrISS-tuto
feed_id:
https://tontof.net/index.php?2021/02/19/19/02/21-quelques-nouvelles-et-une-mise-a-jour-de-kriss-tuto

url:
https://tontof.net/index.php?2021/02/19/19/02/21-quelques-nouvelles-et-une-mise-a-jour-de-kriss-tuto

content:
          Plus d'1 an et demi sans article, que le temps passe vite.<br />
<br />
Je pourrais résumé 2020 comme l'année de <strong>Merdouille</strong>. Cette simple phrase n'est pas anodine et correspond à quelques choses de très personnel, très loin de tout ce que se rappelleront la plupart des gens.<br />
<br />
Parce qu'en ce moment des personnes ont besoin d'avoir des informations positives, je ne vais vous parler que de choses chouettes.<br />
<br />
<h3>Accès à distance avec la banque à l'écureuil</h3><br />
Je ne parlerai donc pas de ma banque à l'écureuil qui depuis la mise en place de l'authentification par SMS ne me donne plus aucun accès sur internet et ne me propose aucune solution alternative. Même leur service technique n'a pas su m'expliquer pourquoi, la personne par téléphone m'a simplement dit que ça arrivait parfois et qu'il fallait demander à mon agence de me mettre sur liste blanche. Sauf que c'est sur décision du directeur d'agence et que ce dernier n'a pas voulu. En cherchant de mon côté je me suis aperçu que c'était lié à mon téléphone, mon nokia 1110 ne reçoit pas le SMS d'authentification, mais il reçoit bien celui du mot de passe de réinitialisation. J'ai bien sûr dit à ma banque que je n'allais pas changer de téléphone et que je voulais donc fermer mes comptes ce à quoi on m'a répondu de fournir mon relevé d'impôts... C'est quoi le rapport ??? Je n'avais déjà plus de chèque/carte bancaire sur ce compte, mais maintenant je me retrouve donc avec un compte vide chez l'écureuil après avoir effectué les virements nécessaires.<br />
<br />
<h3>Linux Mint 20.1 et libinput</h3><br />
Je ne vous parlerai pas non plus de mes récents problèmes avec Linux Mint. C'est vrai que ça faisait <a href="https://sebsauvage.net/links/?rq-0_w">longtemps que tout se passait bien</a> sauf qu'à ma dernière mise à jour sur Linux Mint 20.1, écran noir au redémarrage bloqué sur grub. La solution était assez simple à trouver avec une live USB :<br />
- sudo grub-install /dev/sda<br />
- sudo update-grub<br />
mais c'est assez déstabilisant parce que ça ne m'était jamais arrivé. Je n'ai pas cherché à comprendre mais peut-être que c'était lié à mon partitionnement sur mon disque qui était déjà bien découpé. Je n'abandonnerai pas pour autant tout ça pour passer à Windows 10 comme <a href="https://www.blog-libre.org/2021/02/16/pourquoi-jai-tourne-la-page-du-libre/">certaines personnes</a> parce qu'au fond je sais que j'aurais encore plus de problèmes avec Windows. Je suis tout à fait d'accord avec <a href="https://sebsauvage.net/links/?_WwFdg">Sebsauvage</a> et j'ai beaucoup moins de demandes/problèmes depuis que j'ai passé mes proches à Linux que quand ces personnes étaient sous Windows (on parle de personnes qui ont un usage limité à la bureautique/internet avec les ordinateurs). Avec Linux Mint 20.1 j'ai également de temps en temps un problème avec mon touchpad à cause de la nouvelle bibliothèque libinput mais c'était annoncé : <a href="https://linuxmint.com/rel_ulyssa_mate.php">https://linuxmint.com/rel_ulyssa_mate.php</a> et la solution proposée est très acceptable : apt install xserver-xorg-input-synaptics<br />
Par contre je vais quand même faire un vrai reproche que je crois encore lié à libinput mais avant de l'imposer par défaut il faudrait s'assurer que ça fonctionne bien. Si vous utilisez des manettes et qu'il faut les calibrer vous ne pourrez pas le faire simplement. Avant il y avait <a href="https://jstest-gtk.gitlab.io/">jstest-gtk</a> et il n'y a aucun équivalent avec la nouvelle version <a href="https://gitlab.com/evtest-qt/evtest-qt">evtest-qt</a>. Heureusement j'ai trouvé une solution grâce à <a href="https://github.com/m-kostrzewa/sdl2-joystick-calib">python</a> qui permet de faire un man in the middle avec la manette ! Mais il faut bien avouer que ce n'est pas à la portée de tout le monde.<br />
<br />
<h3>MakeMKV</h3><br />
Et entre nous, je ne vais pas non plus vous embêter avec mes problèmes pour lire des DVD officiels d'une ancienne série. Aucun problème avec les 3 premières saisons et le premier DVD de la 4e et dernière saison (parce qu'il ne faut pas se le cacher mais quand une série est considérée terminée et que parce qu'il y a sûrement de l'argent à se faire on refait une saison des années plus tard, ça ne donne <a href="https://fr.wikipedia.org/wiki/Jumping_the_shark">jamais des merveilles</a>, je considère donc la saison 4 comme la dernière) mais à partir du 2e DVD de la saison 4, ce dernier se montait comme périphérique TSITFAT. La solution n'a pas été simple a trouvé mais maintenant tout fonctionne grâce à <a href="https://www.makemkv.com/forum/viewtopic.php?f=3&amp;t=224">MakeMKV</a>. Des personnes se demandent encore pourquoi des gens piratent des séries, mais même avec les DVD dans les mains j'ai dû regardé des épisodes en streaming le temps que je trouve comment corriger ce problème de TSITFAT... Et encore sur un ordi, merci VLC,  on peut passer les menus parce que les annonces sur les DVD officiels pour dire que le piratage c'est mal et que sur un lecteur DVD de salon on ne peut pas passer, c'est vraiment mais alors vraiment la meilleure solution pour favoriser le piratage...<br />
<br />
<h3>Mise à jour de <a href="https://github.com/tontof/kriss_tuto/">KrISS tuto</a></h3><br />
Pour parler vraiment de choses chouettes, je suis resté dans le silence alors que je n'aurais jamais été autant prolifique cette année 2020. J'ai mis en production un projet pro qui aura duré plus d'un an et demi, ce qui explique aussi mon silence et qui maintenant est en place depuis fin octobre sans trop de problème, en tout cas pas forcément de ma faute. Les certificats Let's Encrypt ont changé et n'étaient plus compatibles avec les anciennes version d'Android, heureusement c'est de nouveau fonctionnel : <a href="https://letsencrypt.org/2020/12/21/extending-android-compatibility.html">https://letsencrypt.org/2020/12/21/extending-android-compatibility.html</a><br />
<br />
J'ai aussi dû modifier mes cours comme jamais pour qu'ils puissent être adaptés aux cours à distance (avec le recul que de temps perdu quand on voit le résultat). J'ai dû mettre en place de nouvelles modalités pour évaluer mes matières (que de temps gagné pour la mise en place des futurs examens). Il était évident que l'évaluation à distance allait conduire à une triche massive de la part des étudiant⋅es. Le nombre de collègues qui ont fait comme si c'était une évaluation normale ont eu la surprise de voir des copies semblables/identiques, sérieusement ? <br />
<br />
De mon côté j'ai mis en place des générateurs d'énoncés pour évaluer mes matières avec des thèmes différents (merci ÉS pour toutes ces propositions) et des questions différentes pour chaque copie et même avec ça, j'ai eu le droit à des réponses qui parlaient d'abeilles alors que la copie parlait de chèvres...<br />
Quand j'aurais un peu de temps j'essayerai de partager tout ça parce que je pense que ça pourrait être utile. C'est autre chose que la génération de <a href="https://www.auto-multiple-choice.net/">QCM avec LaTeX</a> et il est sûr que ça prend plus de temps pour faire la correction, mais au moins on sait ce qu'on évalue. Petit aperçu pour l'évaluation de requêtes algébriques ou SQL :<br />
- « Donner le nombre de membres des troupes qui se sont produites dans des festivités qui se sont déroulées dans des villes dont l'altitude est 75 »<br />
- « Donner le genre musical du groupe qui a l'année de formation la plus grande (ou les genres musicaux des groupes si plusieurs groupes ont la même année de formation) »<br />
Tout ceci est généré automatiquement et je suis assez fier du résultat mais beaucoup moins du code. Coder vite et bien ce n'est pas toujours simple.<br />
<br />
J'avais prévu depuis longtemps de ne pas intervenir en cours fin 2020 et c'est plutôt bien tombé parce que l'organisation de la rentrée a été plutôt compliquée. C'est guère mieux pour ce 2e semestre, mais il y a un peu plus d'expérience et il semblerait acquis (avant de nouvelles annonces) que les examens à distance c'est terminé. J'en ai quand même profité pour mettre à jour mes cours <a href="https://tontof.net/tuto/html/">HTML/CSS</a>/<a href="https://tontof.net/tuto/js/">JS</a>/<a href="https://tontof.net/tuto/php/">PHP</a> en supprimant <a href="https://jquery.com/">jquery</a>, en remplaçant <a href="https://highlightjs.org/">highlight.js</a> par <a href="https://codemirror.net/">CodeMirror</a> et en ajoutant <a href="https://github.com/nathancahill/split/tree/master/packages/split-grid">Split Grid</a> (un petit plus que j'ai ajouté pour changer la largeur de colonnes de l'éditeur quand j'en ai besoin).<br />
<br />
Un petit aperçu avec une belle coloration syntaxique dans les slides et dans l'éditeur grâce à CodeMirror. L'éditeur qui s'adapte en fonction du code si c'est du HTML (2 colonnes) ou du PHP (3 colonnes).<br />
<a href="https://tontof.net/tuto/html/#/slide-hello-world">https://tontof.net/tuto/html/#/slide-hello-world</a><br />
<a href="https://tontof.net/tuto/php/#/slide-hello-world">https://tontof.net/tuto/php/#/slide-hello-world</a><br />
<br />
Je pense être quelqu'un de très exigeant et je n'ai pratiquement plus rien à redire sur ces supports, je suis presque entièrement satisfait par mon approche pour faire ces cours. Je ne parle pas du fond mais bien de la forme. Je remercie vraiment <a href="https://www.gnu.org/software/emacs/emacs.html">GNU Emacs</a>, <a href="https://orgmode.org/">Org Mode</a>, <a href="https://revealjs.com/">reveal.js</a>, <a href="https://github.com/yjwen/org-reveal/">org-reveal</a>, <a href="https://github.com/niklasvh/php.js">PHP.js</a> et <a href="https://www.mathjax.org/">MathJax</a>.<br />
<br />
À dans un an et demi ? Je devrais avoir plus de temps pour partager des choses, je pense donc que ça sera avant mais je ne préfère pas m'avancer, on ne sait jamais de quoi sera fait l'avenir.
      


feed_id: https://tontof.net/index.php?2019/06/27/19/06/27-filtre-calendrier-ics
title: Filtre calendrier ICS
uri: 2021-09-20-Filtre-calendrier-ICS
url: https://tontof.net/index.php?2019/06/27/19/06/27-filtre-calendrier-ics
content:
          Quand l'administration utilise Google Calendar pour gérer les plannings avec un seul calendrier, ce n'est pas simple d'ajouter juste les événements qui nous intéressent.<br />
On m'a demandé si c'était possible et après une rapide recherche, je n'ai rien trouvé qui permettait de faire ça : je n'ai pas réussi à utiliser <a href="https://icalfilter.com/">https://icalfilter.com/</a><br />
<br />
Je serai curieux de savoir si c'est possible de le faire avec un <a href="https://framagenda.org">https://framagenda.org</a> mais en utilisant un <em>parseur</em> et un <em>formatteur</em> PHP c'est plutôt simple.<br />
<br />
Si ça peut être utile à d'autres.<br />
<br />
Dans le fichier composer.json<br />
<pre><br />
{<br />
    "require": {<br />
      "johngrogg/ics-parser": "^2",<br />
      "jsvrcek/ics": "*@dev"<br />
    }<br />
}<br />
</pre><br />
<br />
On installe tout ce qu'il faut avec <pre>composer install</pre><br />
<br />
Dans un fichier index.php<br />
<code><span style="color: #000000"><br />
<span style="color: #0000BB">&lt;?php&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #007700">require_once&nbsp;</span><span style="color: #DD0000">'vendor/autoload.php'</span><span style="color: #007700">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000BB">ICal</span><span style="color: #007700">\</span><span style="color: #0000BB">ICal</span><span style="color: #007700">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000BB">Jsvrcek</span><span style="color: #007700">\</span><span style="color: #0000BB">ICS</span><span style="color: #007700">\</span><span style="color: #0000BB">Model</span><span style="color: #007700">\</span><span style="color: #0000BB">Calendar</span><span style="color: #007700">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000BB">Jsvrcek</span><span style="color: #007700">\</span><span style="color: #0000BB">ICS</span><span style="color: #007700">\</span><span style="color: #0000BB">Model</span><span style="color: #007700">\</span><span style="color: #0000BB">CalendarEvent</span><span style="color: #007700">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000BB">Jsvrcek</span><span style="color: #007700">\</span><span style="color: #0000BB">ICS</span><span style="color: #007700">\</span><span style="color: #0000BB">Model</span><span style="color: #007700">\</span><span style="color: #0000BB">Relationship</span><span style="color: #007700">\</span><span style="color: #0000BB">Attendee</span><span style="color: #007700">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000BB">Jsvrcek</span><span style="color: #007700">\</span><span style="color: #0000BB">ICS</span><span style="color: #007700">\</span><span style="color: #0000BB">Model</span><span style="color: #007700">\</span><span style="color: #0000BB">Relationship</span><span style="color: #007700">\</span><span style="color: #0000BB">Organizer</span><span style="color: #007700">;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000BB">Jsvrcek</span><span style="color: #007700">\</span><span style="color: #0000BB">ICS</span><span style="color: #007700">\</span><span style="color: #0000BB">Utility</span><span style="color: #007700">\</span><span style="color: #0000BB">Formatter</span><span style="color: #007700">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000BB">Jsvrcek</span><span style="color: #007700">\</span><span style="color: #0000BB">ICS</span><span style="color: #007700">\</span><span style="color: #0000BB">CalendarStream</span><span style="color: #007700">;<br />
&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000BB">Jsvrcek</span><span style="color: #007700">\</span><span style="color: #0000BB">ICS</span><span style="color: #007700">\</span><span style="color: #0000BB">CalendarExport</span><span style="color: #007700">;<br />
<br />
&nbsp;&nbsp;try&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$ical&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">ICal</span><span style="color: #007700">(</span><span style="color: #DD0000">'https://raw.githubusercontent.com/u01jmg3/ics-parser/master/examples/ICal.ics'</span><span style="color: #007700">,&nbsp;array(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'defaultSpan'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'defaultTimeZone'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'UTC'</span><span style="color: #007700">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'defaultWeekStart'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'MO'</span><span style="color: #007700">,&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'disableCharacterReplacement'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">,&nbsp;</span><span style="color: #FF8000">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'filterDaysAfter'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">null</span><span style="color: #007700">,&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'filterDaysBefore'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">null</span><span style="color: #007700">,&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'replaceWindowsTimeZoneIds'&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">,&nbsp;</span><span style="color: #FF8000">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'skipRecurrence'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">,&nbsp;</span><span style="color: #FF8000">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'useTimeZoneWithRRules'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">,&nbsp;</span><span style="color: #FF8000">//&nbsp;Default&nbsp;value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">));<br />
&nbsp;&nbsp;}&nbsp;catch&nbsp;(\</span><span style="color: #0000BB">Exception&nbsp;$e</span><span style="color: #007700">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die(</span><span style="color: #0000BB">$e</span><span style="color: #007700">);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000BB">$forceTimeZone&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />
<br />
&nbsp;&nbsp;</span><span style="color: #0000BB">$newCal&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">Calendar</span><span style="color: #007700">();<br />
&nbsp;&nbsp;</span><span style="color: #0000BB">$newCal</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setProdId</span><span style="color: #007700">(</span><span style="color: #0000BB">$ical</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cal</span><span style="color: #007700">[</span><span style="color: #DD0000">'VCALENDAR'</span><span style="color: #007700">][</span><span style="color: #DD0000">'PRODID'</span><span style="color: #007700">]);<br />
&nbsp;&nbsp;</span><span style="color: #0000BB">$newCal</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setVersion</span><span style="color: #007700">(</span><span style="color: #0000BB">$ical</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cal</span><span style="color: #007700">[</span><span style="color: #DD0000">'VCALENDAR'</span><span style="color: #007700">][</span><span style="color: #DD0000">'VERSION'</span><span style="color: #007700">]);<br />
&nbsp;&nbsp;</span><span style="color: #0000BB">$newCal</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setName</span><span style="color: #007700">(</span><span style="color: #0000BB">$ical</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cal</span><span style="color: #007700">[</span><span style="color: #DD0000">'VCALENDAR'</span><span style="color: #007700">][</span><span style="color: #DD0000">'X-WR-CALNAME'</span><span style="color: #007700">]);<br />
&nbsp;&nbsp;</span><span style="color: #0000BB">$newCal</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setCalendarScale</span><span style="color: #007700">(</span><span style="color: #0000BB">$ical</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cal</span><span style="color: #007700">[</span><span style="color: #DD0000">'VCALENDAR'</span><span style="color: #007700">][</span><span style="color: #DD0000">'CALSCALE'</span><span style="color: #007700">]);<br />
&nbsp;&nbsp;</span><span style="color: #0000BB">$newCal</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setMethod</span><span style="color: #007700">(</span><span style="color: #0000BB">$ical</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cal</span><span style="color: #007700">[</span><span style="color: #DD0000">'VCALENDAR'</span><span style="color: #007700">][</span><span style="color: #DD0000">'METHOD'</span><span style="color: #007700">]);<br />
&nbsp;&nbsp;</span><span style="color: #0000BB">$newCal</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setCustomHeaders</span><span style="color: #007700">([</span><span style="color: #DD0000">"X-WR-TIMEZONE"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$ical</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cal</span><span style="color: #007700">[</span><span style="color: #DD0000">'VCALENDAR'</span><span style="color: #007700">][</span><span style="color: #DD0000">'X-WR-TIMEZONE'</span><span style="color: #007700">]]);<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000BB">$events&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$ical</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">events</span><span style="color: #007700">();<br />
&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000BB">$events&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$event</span><span style="color: #007700">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;add&nbsp;custom&nbsp;filter&nbsp;here<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">preg_match</span><span style="color: #007700">(</span><span style="color: #DD0000">'/.*DST*/'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$event</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">summary</span><span style="color: #007700">))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$newEvent&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">CalendarEvent</span><span style="color: #007700">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$newEvent</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setStart</span><span style="color: #007700">(new&nbsp;</span><span style="color: #0000BB">DateTime</span><span style="color: #007700">(</span><span style="color: #0000BB">$event</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dtstart</span><span style="color: #007700">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$newEvent</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setEnd</span><span style="color: #007700">(new&nbsp;</span><span style="color: #0000BB">DateTime</span><span style="color: #007700">(</span><span style="color: #0000BB">$event</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dtend</span><span style="color: #007700">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$newEvent</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSummary</span><span style="color: #007700">(</span><span style="color: #0000BB">$event</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">summary</span><span style="color: #007700">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$newEvent</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setUid</span><span style="color: #007700">(</span><span style="color: #0000BB">$event</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">uid</span><span style="color: #007700">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$newEvent</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setStatus</span><span style="color: #007700">(</span><span style="color: #0000BB">$event</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">status</span><span style="color: #007700">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$newCal</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">addEvent</span><span style="color: #007700">(</span><span style="color: #0000BB">$newEvent</span><span style="color: #007700">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000BB">$calendarExport&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">CalendarExport</span><span style="color: #007700">(new&nbsp;</span><span style="color: #0000BB">CalendarStream</span><span style="color: #007700">,&nbsp;new&nbsp;</span><span style="color: #0000BB">Formatter</span><span style="color: #007700">());<br />
&nbsp;&nbsp;</span><span style="color: #0000BB">$calendarExport</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">addCalendar</span><span style="color: #007700">(</span><span style="color: #0000BB">$newCal</span><span style="color: #007700">);<br />
<br />
&nbsp;&nbsp;</span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;text/calendar;&nbsp;charset=utf-8'</span><span style="color: #007700">);<br />
&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">$calendarExport</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getStream</span><span style="color: #007700">();<br />
&nbsp;</span><span style="color: #0000BB">?&gt;</span><br />
</span><br />
</code><br />

      


feed_id: https://tontof.net/index.php?2019/02/07/19/02/07-kriss-tuto-html-css-php-et-maintenant-javascript
title: KrISS tuto : html, css, php et maintenant javascript
uri: 2021-09-20-KrISS-tuto-html-css-php-et-maintenant-javascript
url: https://tontof.net/index.php?2019/02/07/19/02/07-kriss-tuto-html-css-php-et-maintenant-javascript
content:
          Cela faisait plusieurs années que j'utilisais une présentation javascript d'une autre personne alors qu'il y avait des choses du style<br />
<code><br />
&lt;SCRIPT LANGUAGE="JavaScript">...&lt;/SCRIPT><br />
</code><br />
Autant vous dire que je n'étais pas à l'aise : l'utilisation des majuscules pour les balises et l'attribut language... ça pique un peu les yeux. J'avais apporté quelques modifications sur le fichier PDF avec Master PDF editor (qui depuis la version 5 n'est plus vraiment gratuit pour exporter ses modifications mais qui est heureusement toujours disponible en version <a href="https://code-industry.net/public/master-pdf-editor-4.3.89_qt5.amd64.deb">4.3.89</a>). D'ailleurs si vous connaissez une alternative je suis preneur...<br />
<br />
Heureusement maintenant c'est fini parce qu'après <a href="https://tontof.net/tuto/html">HTML/CSS</a> et <a href="https://tontof.net/tuto/php">PHP</a> j'ai enfin agrémenter <a href="https://github.com/tontof/kriss_tuto">KrISS tuto</a> de <a href="https://tontof.net/tuto/js">JS</a> !<br />
<br />
Autant vous dire que je suis bien content et mon cours est maintenant complet, uniforme et interactif grâce aux différentes consoles que j'ai adaptées pour être utilisées directement dans le navigateur avec l'affichage du code HTML/CSS et son interprétation par le navigateur, l'affichage de la console JS et la sortie du code PHP. C'est vraiment agréable pour la présentation, tout se fait dans le navigateur !<br />
<br />
En plus je peux générer le PDF de mon cours grâce à l'attribut <a href="https://tontof.net/tuto/js?print-pdf">print-pdf</a> dans l'url. Par contre je ne sais pas exactement pourquoi mais quand je l'imprime avec Firefox, il me génère une page blanche entre chaque diapo et j'ai donc cherché à les supprimer en ligne de commande.<br />
<br />
J'avais déjà eu le soucis, et j'avais utilisé pdftk pour résoudre ce problème<br />
<code><br />
pdftk A=fichier.pdf cat Aodd output fichier_impair.pdf<br />
</code><br />
Sauf que pdftk ne s'installe plus facilement avec apt à cause de certaines dépendances. A priori il existe une version <a href="https://gitlab.com/pdftk-java/pdftk">java</a> mais je n'avais pas envie d'ajouter une source tiers pour ça et j'ai donc cherché une alternative.<br />
<br />
Première tentative avec psselect:<br />
<code><br />
pdftops fichier.pdf; psselect -o fichier.ps > fichier_impair.ps; ps2pdf fichier_impair.ps<br />
</code><br />
L'option -o pour odd (impair) et -e pour even (pair).<br />
Taille du fichier d'origine 611k, taille du fichier final 6.6M !!!<br />
À part le fait qu'au final j'ai bien le résultat attendu, ce n'est vraiment pas une bonne solution, les conversions pdf/ps/pdf sont super longues, la création d'un fichier PS inutile et la taille du finale du fichier x10 ce n'est pas possible...<br />
<br />
Deuxième tentative avec <a href="https://github.com/qpdf/qpdf">qpdf</a>:<br />
<code><br />
qpdf --pages fichier.pdf 1,3,5,7,9 -- fichier.pdf fichier_impair.pdf<br />
</code><br />
Sauf que mon nombre de pages ne s'arrêtent pas à 10 et je n'ai pas vu d'options dans le man pour gérer les pages paires/impaires.<br />
J'ai donc cherché à récupérer le nombre de page de mon fichier PDF avec :<br />
<code><br />
pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2<br />
</code><br />
et avec l'utilisation de seq pour générer la liste des pages impaires<br />
<code><br />
seq 1 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)<br />
</code><br />
pour les pages paires il suffit de commencer seq à 2<br />
<code><br />
seq 2 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)<br />
</code><br />
Pour avoir toutes les pages sur une seule ligne, un petit xargs et un petit tr pour remplacer les espaces par des virgules, ce qui donne au final :<br />
<code><br />
file="fichier.pdf"; qpdf --pages "$file" $(seq 1 2 $(pdfinfo "$file" | grep 'Pages:' | cut -d':' -f2) | xargs | tr " " ",") -- "$file" "${file/.pdf/_impair.pdf}"<br />
</code><br />
Taille du fichier d'origine 611k, taille du fichier final 502k !!! Et c'est instantané !<br />
Vive la ligne de commande
      


title: Lille / Saint-André-lez-Lille / Lyon et compression de données
uri: Lille-Saint-André-lez-Lille-Lyon-et-compression-de-données
feed_id:
https://tontof.net/index.php?2022/04/15/10/15/00-lille-saint-andre-lez-lille-lyon-et-compression-de-donnees

url:
https://tontof.net/index.php?2022/04/15/10/15/00-lille-saint-andre-lez-lille-lyon-et-compression-de-donnees

content:
          Je pensais avoir plus de temps pour partager du code mais force est de constater que ça va faire presque 1 an que je n'ai rien posté. J'avais un service à demander aux éventuelles personnes qui se balade entre Lille et Lyon mais comme je ne voulais pas faire un article juste pour ça, j'en ai profité pour mettre à jour <a href="https://tontof.net/tuto/">KrISS tuto</a><br />
<br />
<h1>Lille / Saint-André-lez-Lille / Lyon</h1><br />
Dans l'idéal je suis à la recherche d'une personne qui voyage entre Lille et Lyon plus ou moins régulièrement et qui pourrait me récupérer 3 petits livres sur Saint-André-lez-Lille pour que je les récupère sur Lyon. Comme c'est un idéal, je me satisferais aussi d'une personne qui habite simplement vers Lille et qui pourrait me récupérer ces livres et me les garder plus ou moins longtemps et que je viendrai récupérer sur Lille pendant une sortie vélo qui n'est pas encore prévue mais que j'organiserai pour l'occasion (attention plus ou moins longtemps ça peut vouloir dire plus d'un an).<br />
Pour préciser, je ne souhaite pas vraiment faire un envoi Mondial Relay/Autre car si j'aime acheté d'occasions, je n'aime pas pensé que ça s'accompagne toujours d'un envoi spécifique. J'organise donc régulièrement des vacances pour récupérer des objets que des gens m'ont gentiment gardé une plus ou moins longue période, record avec Émilie en Suisse qui entre temps à même déménagé et m'a gardé un jeu plus d'un an ! Ça s'est donc terminé avec un voyage en train jusqu'à Genève, un tour du lac Léman à vélo et un petit retour écourté par la météo sur la Via Rhôna ! À la sortie ça fait cher le jeu mais il faut voir ça comme un tout et en fait c'est surtout des vacances chouettes qui comme de par hasard se trouve sur la route d'un jeu tout aussi chouette.<br />
<br />
Si j'abusais je dirai que je suis aussi intéressé par toute personne qui pourrait m'aider dans cette démarche qui vise à réduire mon impact en récupérerant et conservant des choses à l'occasion un peu partout en France. Si en plus vous vous rendez régulièrement ou occasionnellement sur Lyon c'est encore mieux. J'ai déjà plusieurs connaissances avec qui je m'arrange de temps en temps mais au cas où, je suis preneur de ce genre de bons plans :-)<br />
<br />
Pour les personnes concernées, un petit mail sur <strong>keep</strong> à <strong>tontof.net</strong> en précisant votre possibilité de zone de récupération et vos éventuelles possibilités de remise sur Lyon. En fait j'indique Lyon mais je ne suis même pas de Lyon mais j'ai la possibilité de m'y rendre régulièrement. Sinon ça peut-être aussi autour de Saint-Étienne. En fait entre Saint-Étienne et Lyon je pourrais toujours me débrouiller pour qu'on se retrouve.<br />
<br />
Merci d'avance !<br />
<br />
<h1><a href="https://tontof.net/tuto/compression/">La compression de données</a></h1><br />
Il s'agit d'une petite introduction à la compression de données sans perte. En plus des autres supports sur HTML/CSS/JS/PHP, j'ai dû ajouter la représentation d'arbres binaires grâce à <a href="https://github.com/DmitryBaranovskiy/raphael">RaphaelJs</a> et les schémas avec <a href="http://ditaa.sourceforge.net/">ditaa</a>. Pour le contenu, il est question d'entropie, de Huffman, Huffman adapatif, codage arithmétique, Run Length Coding, LZ77, LZ78, LZW. Pour utiliser concrètement les algos j'utilisais jusqu'à présent le code dispo sur <a href="https://sourceforge.net/projects/compressions/">https://sourceforge.net/projects/compressions/</a> mais cela ne me convenait pas vraiment. Cette année j'ai donc tenté une uniformisation avec du code python. J'essaye de vous partager tout ça avant l'été !<br />
<br />
Bonne lecture !
      


feed_id: https://tontof.net/index.php?2022/11/04/11/04/00-sobriete-choisie
title: Sobriété choisie
uri: Sobriété-choisie
url: https://tontof.net/index.php?2022/11/04/11/04/00-sobriete-choisie
content:
          "Votre offre d'hébergement o2switch va expirer dans 6 jours."<br />
<br />
Tontof va disparaître... si ça peut vous rassurer, normalement, ça ne sera que pendant 5 mois et mon retour est prévu au printemps prochain à la date anniversaire du 18 avril. Cet hiver est soit disant sous le signe de la sobriété alors comme je pense déjà vivre sobrement au quotidien, je me suis dit que l'occasion était bien tombée pour décaler le prélèvement de mon hébergement à mi-avril comme celui de mes noms de domaine. Malheureusement, chez o2switch il n'est pas possible de faire un prélèvement de 5 ou 17 mois et la solution la plus simple pour que je synchronise les paiements de mon hébergement avec mes noms de domaines est donc de ne pas renouveler cet hébergement et d'attendre mi-avril pour en reprendre un nouveau. Pas besoin de chercher à comprendre, je n'aime pas les prélèvements automatiques et je trouve que c'est plus simple de payer tout à la même période (hébergement et noms de domaine).<br />
<br />
Je vis sobrement mais je ne le subis pas et c'est bien là toute la différence. Il faut déjà se dire que si ce ne sont pas des convictions intimes, la sobriété ne peut pas être envisagées facilement et je sais que tout le monde n'a pas la chance de pouvoir faire ce choix. Ce qui apparaît pour des contraintes ou des choses négatives pour certaines personnes sont pour moi le contraire. Combien de fois j'ai pu entendre, "mais pourquoi tu n'as pas un vrai téléphone ?" comprendre smartphone. Tout simplement parce que je n'en ai pas besoin, j'ai un accès à un ordinateur pratiquement quand je veux, qu'est-ce que je ferai d'un smartphone alors que mon téléphone fait déjà ce que je lui demande principalement, être joignable et envoyer/recevoir des messages textuels. Alors oui un smartphone peut être utile en dehors du quotidien, en week-end, en vacances, mais dans ce cas je ne suis pas tout seul et j'ai accès à un Fairphone qui nous suffit largement. Le téléphone est l'exemple le plus récurrent mais au quotidien je fais beaucoup de choix réfléchis qui interrogent et font réagir. C'est toujours intéressant de voir comment la société peut formater des habitudes sans s'en rendre compte et quand on en discute on se rend compte que ce ne sont pas toujours des choix personnels.<br />
<br />
En attendant le retour en ligne, j'essaye de faire le point sur tous mes projets en cours parce que je me rends compte que j'ai beaucoup de code à partager mais comme je n'aime pas trop partager des choses non abouties je me retrouve à ne rien publier et c'est dommage parce qu'il y a des choses bien sympathiques dans le tas.<br />
<br />
Bonne fin d'année 2022 et on se retrouve normalement le 18 avril 2023 !<br />

      


title: KrISS jams pour générer des étiquettes pour vos pots de confitures
uri: 2023-04-19-KrISS-jams-pour-générer-des-étiquettes-pour-vos-pots-de-confitures
feed_id:
http://tontof.net/index.php?2021/06/22/11/17/13-kriss-jams-pour-generer-des-etiquettes-pour-vos-pots-de-confitures

url:
http://tontof.net/index.php?2021/06/22/11/17/13-kriss-jams-pour-generer-des-etiquettes-pour-vos-pots-de-confitures

content:
          <h2>Pots d'échappement</h2><br />
<br />
J'avais prévu un article pour me plaindre de toutes ces choses qui me chagrinent : quand on m'a expliqué pourquoi on voyait de plus en plus de gros 4x4 et que l'exonération de malus pour ces 4x4 considérés comme utilitaires n'était sûrement pas un hasard, quand on m'a dit que certains gros utilitaires qui possédaient un jerrican pour faire tourner un compresseur avaient été modifiés pour le brancher directement sur le réservoir du véhicule (ce qui était une bonne idée) mais après la sortie moteur ce qui nécessite de faire tourner le moteur constamment pour s'en servir... ou comment faire d'une bonne idée, une grosse idée de merde (peut-être qu'il y a une info technique qui m'échappe, mais en 2021, je n'arrive pas à comprendre comment on peut prendre ce genre de décision...), quand j'ai vu qu'un gros utilitaire lourd avait une vignette Crit'air 2 car plutôt récent mais qui pollue mille fois plus (hyperbole) que notre petite et légère voiture bien trop ancienne qui ne mériterait pas mieux qu'une vignette Crit'air 3 (je ne parle même pas de notre voiture encore plus légère et plus ancienne : « Votre véhicule ne répond pas aux critères retenus pour l'attribution d'un certificat qualité de l'air »), quand on comprend que les grosses camionnettes immatriculées principalement en Pologne sont le nouveau mode de transport à la mode car il permet de ne pas avoir les mêmes contraintes associées aux personnes qui roulent en camion, dormir après avoir beaucoup roulé quelle idée saugrenue... ou quand on vous explique que les tarifs de certains trajets en transport proposé par des camions non immatriculés en France sont impossibles à tenir car moins coûteux que les coûts réels, soupçon de blanchiment d'argent ? théorie du complot ou réalité, je ne préfère ne pas trop savoir. Bref, ce n'était pas un article très optimiste.<br />
<br />
<h2>Pots de confitures : <a href="https://tontof.net/jams/">KrISS jams</a></h2><br />
<br />
Vous avez le choix : faire comme moi et ne rien étiqueter parce qu'après tout en rangeant à peu près bien vos pots vous retrouvez ce que vous voulez et puis parfois on a la surprise de ne pas avoir le parfum que l'on croyait, ou bien comme ma (bonne) maman bien mieux organisée qui étiquette joliment tous ces pots. Petite aparté pour remercier publiquement mes parents pour un peu tout, j'ai une chance inestimable et j'en suis bien conscient.<br />
<br />
Chaque année ma maman me demande donc de mettre à jour la date des étiquettes que je lui avais préparées. Sauf que cette année, magie du format svg et Inkscape, impossible de faire tout ça en ligne de commande, mise à jour depuis la version 0.92 avec un dpi qui change, l'option convert-dpi-method=scale-viewbox n'étant pas gérer et un problème de police mal installée posait problème avec Inkscape et GIMP mais pas Firefox. Je vous avais dit que j'avais un peu plus de temps alors j'en ai profité pour faire <a href="https://tontof.net/jams/">KrISS jams</a> un générateur d'étiquettes pour les pots de confitures.<br />
<br />
Petite précision, les réglages par défaut correspondront à ceux voulus par ma maman et risquent de changer avec le temps. J'ai un peu plus de temps mais pas suffisamment pour améliorer l'outil avec les réglages paramétrables dans l'ancre de l'url. Il faudrait aussi que je traduise pour avoir tout en français et en anglais, mais en attendant l'interface est en anglais et le contenu en français. J'aurais bien aimé avoir un petit éditeur pour personnaliser l'étiquette mais je n'ai rien trouvé de simple et fonctionnel comme je l'imaginais. C'est donc pour le moment limité à une image, la date et le texte. <a href="https://github.com/tontof/kriss_jams">Techniquement</a> c'était intéressant pour rendre tout ça responsive et j'ai trouvé les images de <a href="https://www.shutterstock.com/fr/g/Daria+Ustiugova">Daria Ustiugova</a> parfaites pour illustrer les étiquettes merci pour ce travail et de m'avoir autorisé à le partager avec ces belles images.<br />
<br />
Bel été et bonnes confitures 2021 à tout le monde.
      


feed_id: http://tontof.net/index.php?2023/04/19/17/00/00-11-ans
title: 11 ans
uri: 11-ans
url: http://tontof.net/index.php?2023/04/19/17/00/00-11-ans
content:
          Même si officiellement cela fait 13 ans que Tontof existe, cela ne fait que 11 ans que tontof.net est en ligne.<br />
<br />
Après cette petite pause hivernale pour synchroniser administrativement nom de domaine et hébergement, j'ai prévu un retour avec 11 nouveautés/mises à jour que je vais essayer de présenter régulièrement, toutes les 1 ou 2 semaines.<br />
<br />
Première présentation d'une mise à jour vendredi 21 avril !
      


feed_id: http://tontof.net/index.php?2023/04/21/16/00/00-1-kriss-jams
title: 1 : KrISS jams
uri: 1-KrISS-jams
url: http://tontof.net/index.php?2023/04/21/16/00/00-1-kriss-jams
content:
          Première présentation d'une mise à jour de <a href="https://tontof.net/jams/">KrISS jams</a><br />
<br />
J'ai déjà présenté <a href="https://tontof.net/?2021/06/22/11/17/13-kriss-jams-pour-generer-des-etiquettes-pour-vos-pots-de-confitures">KrISS jams</a> pour imprimer des étiquettes de confitures et Nono m'a rapidement demandé s'il était possible d'avoir une version pour les pots de miel.<br />
<br />
Plutôt que de faire une autre version spécifique aux pots de miel, j'ai ajouté un petit éditeur qui permet de personnaliser les étiquettes puis d'exporter les infos dans l'URL. Ça me paraît assez complet et fonctionnel en l'état même s'il y aurait des améliorations à apporter. Par exemple pour les confitures, la couleur du texte dépend du parfum et ce n'est actuellement pas possible de le faire simplement avec l'éditeur qui impose la couleur du texte pour toutes les étiquettes.<br />
<br />
Il n'y a pas vraiment de documentation, mais ça me paraît assez intuitif :<br />
- <strong>Edit list</strong> gère la liste des variétés des étiquettes (pour les différents parfums)<br />
- <strong>Edit template</strong> est utilisé pour éditer le nom d'une étiquette et ses éléments (texte, image)<br />
- <strong>Edit labels</strong> permet la mise en page des étiquettes dans une page (pour l'impression)<br />
<br />
      


feed_id: http://tontof.net/index.php?2023/04/28/15/00/00-2-kriss-cast
title: 2 : KrISS cast
uri: 2-KrISS-cast
url: http://tontof.net/index.php?2023/04/28/15/00/00-2-kriss-cast
content:
          L'utilisation d'une présentation classique à l'aide de <a href="https://revealjs.com/">reveal.js</a> par l'intermédiaire de <a href="https://orgmode.org/">Org mode</a> comme pour <a href="https://tontof.net/tuto/">KrISS tuto</a> avec le mode présentation (touche 's') permet de vidéoprojecter une fenêtre spécifique mais reste quand même limitée.<br />
<br />
J'avais un besoin assez spécifique. Je voulais partager mon écran sur un vidéoprojecteur sans avoir à tourner la tête pour voir ce que j'écrivais dans un terminal. La solution la plus simple est de dupliquer l'écran. Sauf que je voulais aussi avoir la possibilité d'ouvrir d'autres applications que je ne voulais pas projecter et dans ce cas la duplication ne fonctionne plus.<br />
<br />
Au départ, je pensais pourvoir projecter un bureau linux spécifique mais je n'ai pas vraiment trouvé comment faire. En partageant des applications sur plusieurs bureaux je pense qu'on peut s'en sortir avec un gnome ou KDE. Sauf que de toute façon avec lightdm, je ne pense pas que j'aurais pu m'en sortir.<br />
<br />
Après avoir cherché rapidement, je n'ai pas trouvé non plus d'application qui réponde à mon besoin alors j'ai pensé au partage d'écran sur Firefox (ou un autre navigateur) et après quelques lignes de javascript <a href="https://tontof.net/cast/">KrISS cast</a> est né !<br />
<br />
C'est assez basique mais ça fait le job. On ouvre une fenêtre avec <a href="https://tontof.net/cast/">KrISS cast</a> dedans et on vidéoprojète  la fenêtre. On clique sur ▶ en haut à gauche pour sélectionner la fenêtre à partager et c'est parti. Grâce à <a href="https://split.js.org/#/split-grid">Split Grid</a>, j'ai ajouté la possibilité de partager plusieurs fenêtres en même temps.<br />
<br />
Pour résumé :<br />
- les boutons + permettent de partager la fenêtre courante en 2 en fonction du bouton cliqué<br />
- ▶/■ en haut à gauche démarre ou arrête le partage d'écran<br />
- ⨯ en haut à droite ferme la fenêtre courante<br />
- ⛶ en bas à gauche met en plein écran la fenêtre courante<br />
- 🗖 en bas à droite met en plein écran la fenêtre globale<br />
<br />
Quelques petits bonus :<br />
- tous les vidéoprojecteurs n'ont pas l'option pour faire un écran noir, il suffit de découper la fenêtre en 2 et d'agrandir la zone pour avoir le même effet. Pratique pour écrire au tableau tout en vidéoprojetant<br />
- pour zoomer la fenêtre projetée il suffit de redimensionner la fenêtre partagée d'origine<br />
<br />
Pour utiliser KrISS cast directement ajouter <a href="https://tontof.net/cast/#cast">#cast</a> dans l'url. Vous pouvez également télécharger un seul fichier <a href="https://raw.githubusercontent.com/tontof/kriss_cast/master/index.html">index.html</a> compilé de 17K. Comme d'habitude les sources sont disponibles sur <a href="https://github.com/tontof/kriss_cast">Github</a>.<br />
<br />
Bon partage d'écran !
      


feed_id: http://tontof.net/index.php?2023/05/05/14/00/00-3-kriss-tuto
title: 3 : KrISS tuto
uri: 3-KrISS-tuto
url: http://tontof.net/index.php?2023/05/05/14/00/00-3-kriss-tuto
content:
          Une petite mise à jour pour garder le rythme d'un message par semaine !<br />
<br />
Comme je suis un grand fan du duo <a href="https://orgmode.org">OrgMode</a> et <a href="https://revealjs.com">RevealJs</a> grâce à <a href="https://github.com/yjwen/org-reveal">Org Reveal</a>, j'ai voulu voir si je pouvais intégrer un cours de base de données.<br />
<br />
Mission réussie grâce à <a href="https://sql.js.org">SQL.js</a>. Comme en plus j'ai besoin d'avoir certaines commandes basées sur MySQL/MariaDB, j'ai apporté quelques modifications pour gérer par exemple les dates, AUTO_INCREMENT, etc : <a href="https://github.com/tontof/kriss_tuto/blob/master/common/lib/sqlite/sqlite.js">https://github.com/tontof/kriss_tuto/blob/master/common/lib/sqlite/sqlite.js</a><br />
<br />
Il n'a actuellement pas de contenu pour le cours mais des exemples qui montrent comment intégrer du SQL pour présenter un cours de base de données :<br />
- Exécuter du SQL directement : <a href="https://tontof.net/tuto/bdd/#/slide-requetes-simples">https://tontof.net/tuto/bdd/#/slide-requetes-simples</a><br />
- Charger un fichier SQLite : <a href="https://tontof.net/tuto/bdd/#/slide-fichier-sql">https://tontof.net/tuto/bdd/#/slide-fichier-sql</a><br />
- Afficher une table à partir d'un fichier : <a href="https://tontof.net/tuto/bdd/#/slide-sql-integre">https://tontof.net/tuto/bdd/#/slide-sql-integre</a><br />
<br />
Pour le code source Org correspondant : <a href="https://github.com/tontof/kriss_tuto/blob/master/bdd/index.org">https://github.com/tontof/kriss_tuto/blob/master/bdd/index.org</a>
      


feed_id: http://tontof.net/index.php?2023/05/19/13/00/00-4-kriss-aaaa-middleware
title: 4 : KrISS aaaa : middleware
uri: 4-KrISS-aaaa-middleware
url: http://tontof.net/index.php?2023/05/19/13/00/00-4-kriss-aaaa-middleware
content:
          La semaine passée était bien chargée et je n'ai pas eu le temps de partager un peu de code. Cette semaine, c'est un début de présentation d'un projet encore en cours. À l'image de <a href="https://github.com/kriss/mvvm">KrISS MVVM</a> qui est une sorte de projet générique pour développer rapidement des petites applications en utlisant la programmation orientée objet, <a href="https://github.com/kriss/aaaa">KrISS aaaa</a> a le même but mais avec l'esprit programmation fonctionnelle. À l'heure où j'écris ces lignes KrISS aaaa n'est pas vraiment opérationnel mais j'ai déjà quelques briques que je vais présenter petit à petit après avoir mis en place quelques tests pour présenter comment tout cela fonctionne.<br />
<br />
La programmation fonctionnelle n'a plus vraiment le vent en poupe mais je pense qu'elle peut être intéressante car plus facile à comprendre que la programmation orientée objet et j'espère donc trouvé du temps pour concrétiser tout ça. J'ai même pensé mettre à jour KrISS feed en utilisant ce principe, un jour peut-être...<br />
<br />
Voici donc une première présentation de middleware qui correspond au principe de la couche d'oignon illustré dans cet article : <a href="http://esbenp.github.io/2015/07/31/implementing-before-after-middleware/">http://esbenp.github.io/2015/07/31/implementing-before-after-middleware/</a> mais en programmation fonctionnelle :<br />
<code><span style="color: #000000"><br />
<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">include(</span><span style="color: #DD0000">'src/helpers/middleware/middleware.php'</span><span style="color: #007700">);<br />
<br />
function&nbsp;</span><span style="color: #0000BB">before</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$next</span><span style="color: #007700">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$object</span><span style="color: #007700">[]&nbsp;=&nbsp;</span><span style="color: #DD0000">'before'</span><span style="color: #007700">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$next</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">);<br />
}<br />
<br />
function&nbsp;</span><span style="color: #0000BB">after</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$next</span><span style="color: #007700">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$object&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$next</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$object</span><span style="color: #007700">[]&nbsp;=&nbsp;</span><span style="color: #DD0000">'after'</span><span style="color: #007700">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$object</span><span style="color: #007700">;<br />
}<br />
<br />
function&nbsp;</span><span style="color: #0000BB">core</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$object</span><span style="color: #007700">[]&nbsp;=&nbsp;</span><span style="color: #DD0000">'core'</span><span style="color: #007700">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$object</span><span style="color: #007700">;<br />
}<br />
<br />
</span><span style="color: #0000BB">$middleware&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">middleware</span><span style="color: #007700">([</span><span style="color: #DD0000">'after'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'before'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'after'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'before'</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">'core'</span><span style="color: #007700">);<br />
<br />
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$middleware</span><span style="color: #007700">());<br />
&nbsp;</span><span style="color: #0000BB">?&gt;</span><br />
</span><br />
</code>Le résultat est le suivant<br />
<code><br />
array(5) {<br />
  [0] =><br />
  string(6) "before"<br />
  [1] =><br />
  string(6) "before"<br />
  [2] =><br />
  string(4) "core"<br />
  [3] =><br />
  string(5) "after"<br />
  [4] =><br />
  string(5) "after"<br />
}<br />
</code><br />
J'imagine utilisé ce principe de middleware pour gérer des plugins dans KrISS aaaa. Plus d'exemples dans le fichier de tests : <a href="https://github.com/KrISS/aaaa/blob/main/tests/MiddlewareTest.php">https://github.com/KrISS/aaaa/blob/main/tests/MiddlewareTest.php</a><br />

      


feed_id: http://tontof.net/index.php?2023/05/26/12/00/00-5-kriss-json
title: 5 : KrISS json
uri: 5-KrISS-json
url: http://tontof.net/index.php?2023/05/26/12/00/00-5-kriss-json
content:
          Je vous ai dit que j'avais exploré la programmation fonctionnelle avec <a href="http://tontof.net/?2023/05/19/13/00/00-4-kriss-aaaa-middleware">KrISS aaaa : middleware</a> et il y a quelques années j'ai voulu testé cette même approche pour l'utilisation de schémas json <a href="https://json-schema.org">https://json-schema.org</a><br />
<br />
Le résultat final est plutôt chouette :<br />
<pre><br />
tests suite:	nb tests	nb files<br />
draft3: 	  520/520	    35/35<br />
draft4: 	  735/735	    38/38<br />
draft6: 	  995/995	    48/48<br />
draft7: 	1286/1286	    57/57<br />
draft2019-09: 	1571/1651	    59/68<br />
draft2020-12: 	1579/1677	    58/68<br />
draft-next: 	1623/1724	    58/68<br />
</pre><br />
C'était il y a quelques temps et j'ai dû faire 2/3 modifications pour valider les mises à jours des tests fournis par <a href="https://github.com/json-schema-org/JSON-Schema-Test-Suite">https://github.com/json-schema-org/JSON-Schema-Test-Suite</a> pour continuer à valider les premiers drafts comme à l'époque où j'avais codé ça.<br />
<br />
S'il n'y a qu'un seul fichier à regarder c'est la validation des URI/IRI à partir de la RFC<br />
<a href="https://github.com/tontof/kriss_json/blob/main/schema/core/inc/rfc.php">https://github.com/tontof/kriss_json/blob/main/schema/core/inc/rfc.php</a><br />
<br />
Les validations proposées par PHP ne fonctionnaient pas pour tous les tests, j'ai donc dû lire un peu les RFC pour arriver à la validation de tous les tests. C'est à faire au moins une fois dans sa vie...<br />
<br />
Pour valider un schéma json, il suffit d'inclure le fichier "json.php" et d'appeler la fonction "json_schema"<br />
<code><span style="color: #000000"><br />
<span style="color: #0000BB">&lt;?php&nbsp;<br />
</span><span style="color: #007700">include_once(</span><span style="color: #0000BB">__DIR__&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/schema/json.php'</span><span style="color: #007700">);<br />
<br />
</span><span style="color: #0000BB">$json&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'https://json-schema.org/learn/examples/address.schema.json'</span><span style="color: #007700">;<br />
</span><span style="color: #0000BB">$address&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">$json</span><span style="color: #007700">);<br />
<br />
</span><span style="color: #0000BB">$data&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'<br />
{<br />
&nbsp;&nbsp;"locality":"locality",<br />
&nbsp;&nbsp;"region":"region"<br />
}<br />
'</span><span style="color: #007700">;<br />
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">json_schema</span><span style="color: #007700">(</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$address</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">)));<br />
<br />
</span><span style="color: #0000BB">$data&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'<br />
{<br />
&nbsp;&nbsp;"locality":"locality",<br />
&nbsp;&nbsp;"region":"region",<br />
&nbsp;&nbsp;"country-name":"country-name"<br />
}<br />
'</span><span style="color: #007700">;<br />
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">json_schema</span><span style="color: #007700">(</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$address</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">)));<br />
<br />
</span><span style="color: #0000BB">$data&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'<br />
{<br />
&nbsp;&nbsp;"locality":"locality",<br />
&nbsp;&nbsp;"region":"region",<br />
&nbsp;&nbsp;"country-name":"country-name",<br />
&nbsp;&nbsp;"post-office-box":"post-office-box"<br />
}<br />
'</span><span style="color: #007700">;<br />
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">json_schema</span><span style="color: #007700">(</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$address</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">)));<br />
<br />
</span><span style="color: #0000BB">$data&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'<br />
{<br />
&nbsp;&nbsp;"locality":"locality",<br />
&nbsp;&nbsp;"region":"region",<br />
&nbsp;&nbsp;"country-name":"country-name",<br />
&nbsp;&nbsp;"post-office-box":"post-office-box",<br />
&nbsp;&nbsp;"street-address":"street-address"<br />
}<br />
'</span><span style="color: #007700">;<br />
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">json_schema</span><span style="color: #007700">(</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$address</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">)));<br />
&nbsp;</span><span style="color: #0000BB">?&gt;</span><br />
</span><br />
</code>Ce qui donne comme attendu :<br />
<pre><br />
bool(false)<br />
bool(true)<br />
bool(false)<br />
bool(true)<br />
</pre><br />
En pratique, je vous invite à utiliser une approche plus classique <a href="https://json-schema.org/implementations.html#validator-php">https://json-schema.org/implementations.html#validator-php</a> mais <a href="https://github.com/tontof/kriss_json">KrISS json</a> reste intéressant de par son approche fonctionnelle
      


feed_id: http://tontof.net/index.php?2023/06/11/11/06/23-6-kriss-lldc
title: 6 : KrISS lldc
uri: 6-KrISS-lldc
url: http://tontof.net/index.php?2023/06/11/11/06/23-6-kriss-lldc
content:
          Nous voilà à la moitié des présentations des codes (06/11 coïncidence je ne crois pas) et si j'ai réussi à garder à peu près le rythme depuis mon retour en ligne, je sens qu'avec l'été qui arrive, cela va être plus compliqué et je ne pense pas que je pourrais garder ce rythme. Il me reste 1 ou 2 projets à peu près présentables mais il y a encore un peu de boulot pour les derniers. Donc, pas d'inquiétude si je suis plus discret les prochaines semaines !<br />
<br />
Je vous ai déjà parlé avec <a href="https://tontof.net/tuto/">KrISS tuto</a> d'un petit cours sur la <a href="https://tontof.net/tuto/compression/">compression de données</a> où je présente les algorithmes classiques de compression sans perte (Huffman, Huffman adaptatif, le codage arithmétique, rle, lz77, lz78, lzw).<br />
<br />
Pour la partie pratique, j'ai eu du mal à trouver des algorithmes qui fonctionnaient bien et qui permettaient d'illustrer ce que je montrais en cours. J'ai utilisé un temps <a href="https://sourceforge.net/projects/compressions/">https://sourceforge.net/projects/compressions/</a> mais la compilation n'était pas toujours simple et j'ai donc cherché des versions python que j'ai regroupé dans <a href="https://github.com/tontof/kriss_lldc">KrIIS lldc</a>. C'est vraiment à but pédagogique et je ne vous invite pas à utiliser ce code pour compresser de vrais fichiers ! Personnellement je ne le ferai pas.<br />
<br />
J'ai uniformisé l'usage des algorithmes et ajouté un petit bout de code pour le codage binaire du résultat. Les ordinateurs stockent l'information avec des octets (8 bits) mais quand on a besoin de stocker un nombre de bits précis qui n'est pas multiple de 8 c'est un peu compliqué, il faut trouver une méthode pour arriver à relire le résultat. J'imagine qu'il y a une solution existante mais je n'ai pas vraiment cherché et je me suis dit qu'il suffisait d'utiliser les 3 derniers bits d'un octet pour savoir combien de bits sont à supprimer.<br />
<code><br />
"0": "00000100"<br />
"1": "10000100",<br />
"01": "01000011",<br />
"010": "01000010",<br />
"0110": "01100001",<br />
"01110": "01110000",<br />
"011110": "0111100000000111",<br />
"0111110": "0111110000000110",<br />
"01111110": "0111111000000101",<br />
"011111110": "0111111100000100"<br />
</code><br />
Il suffit de prendre les 3 derniers bits par exemple pour "0111110000000110" on a "110" ce qui donne 6 en décimal. On supprime donc les 3+6 derniers bits et on retrouve "0111110" qu'on voulait stocker à l'origine.
      


feed_id: http://tontof.net/index.php?2024/03/19/19/03/24-7-kriss-turn
title: 7 : KrISS turn
uri: 7-KrISS-turn
url: http://tontof.net/index.php?2024/03/19/19/03/24-7-kriss-turn
content:
          Quand dans le dernier article j'ai écrit que je ne pourrais pas garder le rythme des publications, je pensais que je reprendrais tranquillement à l'automne mais force est de constater que c'est avec le printemps qui arrive que je vais pouvoir reprendre la publication de code.<br />
<br />
C'est plus ou moins vrai avec KrISS turn qui est un peu un entre 2. J'ai écrit plusieurs fois à <a href="https://github.com/blasten">blasten</a> pour savoir si je pouvais publier mes modifications à son projet <a href="https://github.com/blasten/turn.js">turn.js</a> mais mes messages sont restés sans réponse. Sur github son projet semble abandonné à la version 4 mais sur son site, il y a une version 5 qui est bien plus aboutie même si la démo qui affiche des pages en html n'est pas forcément très convainquante : <a href="http://turnjs.com/catalog/">http://turnjs.com/catalog/</a><br />
<br />
J'ai donc apporté quelques modifications afin de pouvoir faire un lecteur PDF en intégrant la bibliothèque Mozilla <a href="https://github.com/mozilla/pdf.js">PDF.js</a>. Je n'ai pas modifié la bibliothèque <a href="view-source:http://turnjs.com/catalog/assets/js/turn.min.js">turn.js</a>, juste quelques lignes de son script principal qui utilise sa bibliothèque.<br />
<br />
Comme je n'ai pas eu de répons, je ne publie pas sur github mais en regardant le code source il est assez facile de récupérer ce qu'il faut pour pouvoir héberger votre propre lecteur PDF sous forme de magazine.<br />
<br />
Voici quelques exemples :<br />
- <a href="https://tontof.net/turn/">https://tontof.net/turn/</a><br />
- <a href="media/ed2de0b6.turn" data-original-source="https://tontof.net/turn/">https://tontof.net/turn/?pdf=assets/pdf/classes.pdf</a><br />
- <a href="media/ed2de0b6.turn" data-original-source="https://tontof.net/turn/">https://tontof.net/turn/?pdf=assets/pdf/turnjs4-api-docs.pdf</a><br />
<br />
J'ai 1 mois pour publier les 4 derniers projets, j'espère que je vais tenir le rythme !
      


feed_id: http://tontof.net/index.php?2024/03/26/19/04/24-8-kriss-aaaa-html
title: 8 : KrISS aaaa : html
uri: 8-KrISS-aaaa-html
url: http://tontof.net/index.php?2024/03/26/19/04/24-8-kriss-aaaa-html
content:
          L'idée de Tom Butler pour la génération des pages PHP est vraiment originale. Son implémentation avec <a href="https://github.com/Level-2/Transphporm">Transphporm</a> montre une approche différente des autres projets plus classiques comme <a href="https://twig.symfony.com/">Twig</a>. À ma connaissance c'est vraiment le seul projet qui utilise cette idée et théoriquement c'est très élégant dans le monde de la programmation object.<br />
<br />
Pour mon approche plus impérative avec <a href="https://github.com/kriss/aaaa">KrISS aaaa</a>, j'ai imaginé l'utilisation d'un tableau associatif pour manipuler le code html à générer. Pour cela j'ai donc fait plusieurs fonctions pour transformer du code html en tableau associatif et vice versa.<br />
<br />
En pratique, ça donne : <code><span style="color: #000000"><br />
<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">include(</span><span style="color: #DD0000">'src/helpers/html/html.php'</span><span style="color: #007700">);<br />
<br />
</span><span style="color: #0000BB">$string&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'<br />
&lt;!DOCTYPE&nbsp;html&gt;<br />
&lt;html&nbsp;lang="en"&gt;<br />
&nbsp;&nbsp;&lt;head&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;charset="utf-8"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Title&lt;/title&gt;<br />
&nbsp;&nbsp;&lt;/head&gt;<br />
&nbsp;&nbsp;&lt;body&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;body<br />
&nbsp;&nbsp;&lt;/body&gt;<br />
&lt;/html&gt;<br />
'</span><span style="color: #007700">;<br />
</span><span style="color: #0000BB">$array&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">html_to_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$string</span><span style="color: #007700">);<br />
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">array_to_html</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">));<br />
</span><span style="color: #0000BB">$arraySimplified&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">array_html_simplify</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br />
</span><span style="color: #0000BB">$arraySimplified</span><span style="color: #007700">[</span><span style="color: #DD0000">'html'</span><span style="color: #007700">][</span><span style="color: #DD0000">'head'</span><span style="color: #007700">][</span><span style="color: #DD0000">'title'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">"New&nbsp;title"</span><span style="color: #007700">;<br />
</span><span style="color: #0000BB">$arraySimplified</span><span style="color: #007700">[</span><span style="color: #DD0000">'html'</span><span style="color: #007700">][</span><span style="color: #DD0000">'body'</span><span style="color: #007700">]&nbsp;=&nbsp;[[</span><span style="color: #DD0000">"p"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">"new&nbsp;body"</span><span style="color: #007700">]];<br />
</span><span style="color: #0000BB">$arraySimplified</span><span style="color: #007700">[</span><span style="color: #DD0000">'html'</span><span style="color: #007700">][</span><span style="color: #DD0000">'body'</span><span style="color: #007700">][]&nbsp;=&nbsp;[</span><span style="color: #DD0000">"p"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">"add&nbsp;body"</span><span style="color: #007700">];<br />
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$arraySimplified</span><span style="color: #007700">);<br />
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">array_to_html</span><span style="color: #007700">(</span><span style="color: #0000BB">$arraySimplified</span><span style="color: #007700">));&nbsp;</span><span style="color: #0000BB">?&gt;</span><br />
</span><br />
</code><br />
<br />
Ce qui donne comme résultat :<br />
<code>string(110) &quot;&lt;!DOCTYPE html&gt;&lt;html lang=&quot;en&quot;&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;title&gt;Title&lt;/title&gt;&lt;/head&gt;&lt;body&gt;body&lt;/body&gt;&lt;/html&gt;&quot;<br />
array(2) {<br />
  '!DOCTYPE' =&gt;<br />
  array(1) {<br />
    '@' =&gt;<br />
    array(1) {<br />
      [0] =&gt;<br />
      string(4) &quot;html&quot;<br />
    }<br />
  }<br />
  'html' =&gt;<br />
  array(3) {<br />
    '@' =&gt;<br />
    array(1) {<br />
      'lang' =&gt;<br />
      string(2) &quot;en&quot;<br />
    }<br />
    'head' =&gt;<br />
    array(2) {<br />
      'meta' =&gt;<br />
      array(1) {<br />
        '@' =&gt;<br />
        array(1) {<br />
          'charset' =&gt;<br />
          string(5) &quot;utf-8&quot;<br />
        }<br />
      }<br />
      'title' =&gt;<br />
      string(9) &quot;New title&quot;<br />
    }<br />
    'body' =&gt;<br />
    array(2) {<br />
      [0] =&gt;<br />
      array(1) {<br />
        'p' =&gt;<br />
        string(8) &quot;new body&quot;<br />
      }<br />
      [1] =&gt;<br />
      array(1) {<br />
        'p' =&gt;<br />
        string(8) &quot;add body&quot;<br />
      }<br />
    }<br />
  }<br />
}<br />
string(140) &quot;&lt;!DOCTYPE html&gt;&lt;html lang=&quot;en&quot;&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;title&gt;New title&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;new body&lt;/p&gt;&lt;p&gt;add body&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&quot;<br />
<br />
</code><br />
<br />
Une remarque importante, cela ne génère pas de code html avec des retours à la ligne et des indentations mais c'est un choix volontaire. Bien sûr cela peut poser problème avec les affichages inline-block qui ne réagissent pas exactement de la même façon s'il y a des espaces entre les balises ou non.<br />
<br />
Le but étant de rester minimaliste, ce comportement est donc voulu !<br />
It's not a bug it's a feature!
      


feed_id: http://tontof.net/index.php?2024/04/04/16/04/04-9-kriss-klok
title: 9 : KrISS klok
uri: 9-KrISS-klok
url: http://tontof.net/index.php?2024/04/04/16/04/04-9-kriss-klok
content:
          J'étais un peu trop à la bourre pour publier du code mardi et puis j'ai appris par hasard qu'aujourd'hui 4 avril était une fête un peu spéciale car pour ce que ça vaut, c'est la Saint <a href="https://fr.wikipedia.org/wiki/Isidore_de_Séville">Isidore de Séville</a> le patron des internautes, des informaticiennes et informaticiens... En tout cas je m'en sers d'excuse pour publier <a href="https://tontof.net/klok">KrISS klok</a> aujoud'hui !<br />
<br />
L'idée vient du « puzzle chess » qui adapte les horloges des jeux d'échecs aux puzzles et qui permet de les aborder d'une façon bien différente de ce qu'on a l'habitude de faire avec. Voici une <a href="https://www.youtube.com/watch?v=AOrFOyAbHJM">vidéo</a> de présentation.<br />
<br />
KrISS klok est encore bien loin de ce que j'ai en tête, mais j'essaye de publier même en l'état : « Not perfect, just good enough »<br />
<br />
En tout cas c'est fonctionnel même si grandement imparfait. Comme à mon habitude je n'ai pas vraiment passé du temps sur le graphisme et je suis allé à l'essentiel de la fonctionnalité de base. Contrairement aux horloges d'échecs classiques, KrISS klok offre la possibilité d'avoir plus de 2 horloges, l'idée finale étant de pouvoir découper l'espace de façon plus agréable pour qu'on puisse l'adapter en fonction de la position des personnes autour de l'écran. J'aimerais pouvoir utiliser un <a href="https://fr.wikipedia.org/wiki/Diagramme_de_Vorono%C3%AF">diagrame de Voronoï</a> en pondérant les points pour avoir des zones de tailles plus ou moins égales.<br />
<br />
J'ai voulu utiliser des ServiceWorker pour le rendre accessible hors ligne, mais comme il s'agit d'une simple page html, le charger dans le navigateur ou l'enregistrer en local permet aussi de s'en servir directement sans trop de complication, je verrai donc plus tard pour améliorer cette partie là.<br />
<br />
Il faudrait aussi qu'on puisse l'inverser en mode chronomètre plutôt que décompte. Une chose est sûre, ce ne sont pas les idées qui manquent pour l'améliorer. Le code est dispo sur <a href="https://github.com/tontof/kriss_klok">Github</a> en attendant que je trouve le temps de voir comment je peux faire avec mon hébergement pour gérer les git de mon côté.<br />
<br />
Bon puzzle chess avec <a href="https://tontof.net/klok">KrISS klok</a> !
      


feed_id: http://tontof.net/index.php?2024/04/10/10/04/24-10-kriss-ecmd
title: 10 : Kriss ecmd
uri: 10-Kriss-ecmd
url: http://tontof.net/index.php?2024/04/10/10/04/24-10-kriss-ecmd
content:
          Avant dernier bout de code avant le 11e prévu mardi prochain \o/<br />
<br />
<a href="https://developer.mozilla.org/en-US/docs/Web/API/document/execCommand">execCommand</a> combiné à contenteditable est super pratique pour éditer une page html même s'il génère un code HTML un peu nul (par exemple les balises &lt;i&gt; ou &lt;b&gt; pour l'italique et le gras). Maintenant le problème ne se pose plus car l'usage de execCommand est devenu obsolète.<br />
<br />
À ma connaissance il n'y a aucune alternative à execCommand et s'il existe des éditeurs HTML sympathiques, j'aimais bien <a href="https://getcontenttools.com/demo">ContentTools</a> qui semble abandonné, j'avais envie d'étudier comment fonctionnaient les sélections en javascript et j'ai donc commencé <a href="https://tontof.net/ecmd">KrISS ecmd</a>.<br />
<br />
C'est encore loin d'être complet, mais j'ai réussi à gérer plusieurs problèmes qui se posaient sur les sélections qui ne correspondaient pas toujours à ce que j'imaginais (quand on sélectionne du texte qui est dans une balise html, ça peut sélectionner le texte à l'intérieur dans les balises mais aussi le texte avec les balises) ainsi que sur la qualité du code HTML généré avec entre autres la fusion de même balises pour éviter la duplication de code (quand on veut mettre en gras du texte à côté de texte en gras, ça fusionne les 2 balises de gras).<br />
<br />
L'objectif final de ce code serait de l'utiliser dans un projet de création de pages HTML statiques dans l'esprit de mobirise mais en plus simple, un KrISS edit ? En attendant le code est disponible sur <a href="https://github.com/tontof/kriss_ecmd">Github</a>.
      


feed_id: http://tontof.net/index.php?2024/04/16/16/04/24-11-kriss-paol
title: 11 : KrISS paol
uri: 11-KrISS-paol
url: http://tontof.net/index.php?2024/04/16/16/04/24-11-kriss-paol
content:
          11e et dernier bout de code de la série que j'avais promis pratiquement l'année passée pour les 11 ans de <a href="https://tontof.net/?2023/04/19/19/00/00-11-ans">tontof.net</a>. C'est promis je ne ferai plus de promesse que je ne pourrais pas tenir... Euh... Ça commence mal ? En tout cas, j'avoue que je n'avais pas imaginé que cela m'aurait pris autant de temps pour publier tous ces bouts de code.<br />
<br />
Pour terminer la série voici donc <a href="https://tontof.net/paol/">KrISS paol</a> un petit outil qui permet d'exploiter le système PAO pour retenir des suites de chiffres. PAO c'est pour Personne, Action et Objet et PAOL c'est avec un Lieu en plus. Des explications sont données sur la page consacrée au projet, je ne vais donc pas m'étendre sur le projet mais plutôt sur les données qui avec votre aide pourrait grandement s'améliorer.<br />
<br />
Dans l'idée si vous devez retenir les décimales de π : 3.141592653, au lieu de les retenir directement vous apprenez la phrase : <a href="https://tontof.net/paol/?person=doroth%C3%A9e&amp;action=loue&amp;object=p%C3%A9niche&amp;location=limoux">Dorothée loue une péniche à Limoux</a> et avec la traduction du code <a href="https://fr.wikipedia.org/wiki/Code_chiffres-sons">chiffres - sons</a> vous retrouvez les décimales ! Ça permet aussi de retenir des numéros de téléphone ou des codes pour certains accès (je m'en suis servi pour le code d'une imprimante que j'utilisais ponctuellement et après presque un an sans l'avoir utilisé, j'avais oublié le code mais pas la phrase qui m'a permis de le retrouver facilement !).<br />
<br />
Actuellement, c'est déjà fonctionnel mais j'aimerais pouvoir améliorer les données pour avoir encore plus de choix dans les phrases proposées. Ce qu'il faut savoir c'est que la partie la plus délicate est la traduction d'un mot en phonétique pour ensuite le traduire en chiffres. Pour limiter certaines erreurs j'ai supprimé les mots qui avaient 2 prononciations différentes dans le wiktionary. Il y a donc des mots qui sont supprimés, comme par exemple le prénom Jean qui correspond à 6 mais qui peut aussi se prononcer DJean pour le vêtement et qui dans ce cas correspondrait à 16. Pour "Jean/jean", on pourrait faire la différence s'il s'agit d'une personne ou d'un objet mais à partir des données que j'ai pu extraire je n'ai pas vraiment pu gérer ce genre d'exception et "Jean/jean" ne sont donc pas proposés.<br />
<br />
Pour la liste des personnes, j'ai utilisé les données de l'<a href="https://www.insee.fr/fr/statistiques/2540004">INSEE</a> pour utiliser les prénoms français donnés entre 1900 et 2021 (les propositions sont ordonnées par fréquence d'apparition). Pour améliorer cette liste, une liste de personnalités/personnages seraient un plus, mais je n'ai pas trouvé de listes suffisamment fournie et intéressante pour pouvoir l'intégrer.<br />
Plus de détails : <a href="https://github.com/tontof/kriss_paol/blob/main/data/person/script.bash">https://github.com/tontof/kriss_paol/blob/main/data/person/script.bash</a><br />
<br />
Pour les actions, j'ai trouvé une liste de <a href="https://github.com/Drulac/Verbes-Francais-Conjugues/">verbes conjugués</a> et je n'ai gardé que les temps présent et futur qui ont une prononciation différente. (Certains systèmes PAO utilisent seulement la traduction du verbe à l'infinitif, j'ai préféré prendre le son du verbe dans la phrase finale).<br />
Plus de détails : <a href="https://github.com/tontof/kriss_paol/blob/main/data/action/script.bash">https://github.com/tontof/kriss_paol/blob/main/data/action/script.bash</a><br />
<br />
Pour les objets, c'est une donnée assez difficile à trouver et je suis donc parti d'une <a href="https://github.com/hbenbel/French-Dictionary/">liste de noms</a> assez générique. Le résultat n'est pas trop mal mais peut sûrement être amélioré.<br />
Plus de détails : <a href="https://github.com/tontof/kriss_paol/blob/main/data/object/script.bash">https://github.com/tontof/kriss_paol/blob/main/data/object/script.bash</a><br />
<br />
Enfin pour les lieux, c'est encore sur l'<a href="https://www.insee.fr/fr/statistiques/6683035?sommaire=6683037">INSEE</a> que j'ai récupéré les communes de France. Mais là encore, il serait intéressant de pouvoir ajouter d'autres localités comme les villes assez connues d'autres pays (Londres, etc.), des noms de pays (Italie, etc.), des lieux précis (la tour Eiffel, etc.).<br />
Plus de détails : <a href="https://github.com/tontof/kriss_paol/blob/main/data/location/script.bash">https://github.com/tontof/kriss_paol/blob/main/data/location/script.bash</a><br />
<br />
Tout est sur <a href="https://github.com/tontof/kriss_paol">Github</a> pour les infos un peu plus techniques mais si vous avez des pistes d'améliorations je suis preneur !<br />

      


feed_id: http://tontof.net/index.php?2024/04/18/18/19/25-12-ans
title: 12 ans
uri: 12-ans
url: http://tontof.net/index.php?2024/04/18/18/19/25-12-ans
content:
          Pour cet anniversaire je n'ai pas de nouveau code à publier mais un inventaire personnel que je voulais partager.<br />
<br />
Je vous ai dit que j'étais un grand utilisateur d'<a href="https://tontof.net/?2013/01/25/17/32/57-mon-emacs-a-moi">emacs</a> et j'ai même partagé ma configuration <a href="https://github.com/tontof/.emacs.d">.emacs.d</a> mais c'est officiel, je suis en train du passer du coté obscur et si je développe encore professionnellement avec emacs, je développe personnellement avec vim et j'envisage une conversion totale dans les semaines/mois qui arrivent. Je n'ai pas encore de configuration vim à partager parce que je suis en train d'étudier maintenant le passage à <a href="https://www.damyr.fr/posts/neovim/">neovim</a> mais quand ça sera fait, je la partagerai aussi. Je connaissais déjà un peu vim mais si j'ai une série de vidéos à vous conseiller pour débuter c'est la playlist de <a href="https://www.youtube.com/watch?v=X6AR2RMB5tE&amp;list=PLm323Lc7iSW_wuxqmKx_xxNtJC_hJbQ7R">ThePrimeAgen</a> que j'ai trouvé assez concise et complète et qui se termine aussi avec le passage à neovim...<br />
<br />
Pour l'instant je ne pourrais pas complètement quitter emacs parce qu'orgmode n'étant pas entièrement supporté par vim il va falloir que j'étudie comment mettre à jour <a href="http://github.com/tontof/kriss_tuto">KrISS tuto</a><br />
<br />
Si vous vous demandez pourquoi un tel changement, la réponse est simple l'efficacité. Attention, je ne parle pas ici d'efficacité liée à une quelconque rentabilité. C'est juste que j'essaye d'être de plus en plus sobre et qu'en pratique cela veut dire que j'ai remplacé mon ordinateur portable qui est en train de mourir par un <a href="https://www.raspberrypi.com/products/raspberry-pi-400/">RPI400</a>. Si la différence de chargement d'un fichier entre emacs et vim sur mon ordinateur portable n'était que peu perceptible, vous n'imaginez pas à quel point il n'y a pas photo sur mon RPI400. Je ne savais pas trop si un tel support me permettrait de travailler dans de bonnes conditions mais après plus de 2 ans, je ne reviendrai pas en arrière. C'est vrai que l'installation est un peu plus compliquée en mode nomade parce qu'il y a plusieurs cables à brancher (alimentation, souris, écran (x3 pour mon écran portable Arzopa : cable d'alimentation usb-c sur la prise, cable usb-c/usb le RPI400 et cable hdmi), mais au quotidien il est posé sur un bureau branché et il n'y a donc qu'à brancher la prise d'alimentation au lieu d'appuyer sur un bouton de démarrage (d'ailleurs c'est même plus simple parce que mon RPI400 s'allume tout seul en branchant la prise contrairement à mon ordinateur pour lequel je branche la prise et j'appuye sur le bouton).<br />
<br />
Pourquoi un RPI400 ?<br />
- Pas de batterie (oui c'est un critère parce qu'en pratique je n'ai que très peu utilisé mon ordinateur portable sans fil et que la batterie avec le temps ne joue plus du tout son rôle).<br />
- Pas cher (ce n'est pas vraiment le critère que je mets en premier parce que ça ne me dérange pas vraiment d'acheter un outil un peu plus cher s'il dure longtemps. Mon ordi a 9 ans et j'espère bien l'utiliser encore plusieurs années avec le ventilateur bruyant et le tour de l'écran recollé à la fibre de verre).<br />
- Plus sécurisant (je transporte moins d'informations personnelles et/ou sensibles avec mon RPI400 qu'avec mon ordi. Je pourrais crypter mon disque dur mais j'ai préféré opter pour une clé USB avec LUKS que je trouve plus pratique à l'usage surtout quand on utilise différents outils (ordinateurs portables perso et non perso, RPI400, etc.) on retrouve tout ce dont on a besoin sur la clé). Merci <a href="https://sebsauvage.net/links/?CZTO8g">Sebsauvage</a> pour la découverte.<br />
<br />
Au quotidien, je n'ai pas beaucoup de reproche à faire à mon RPI400 si ce n'est qu'il est parfois un peu limite sur certains sites web mais dans ce cas j'en veux plus au site web qu'à mon RPI400. Je n'imagine même pas comment se passerait l'ouverture du menu windows 11 dessus :-)<br />
<br />
Et pour terminer, j'envisage un apprentissage du clavier <a href="https://ergol.org/">Ergo-l</a>. Merci <a href="https://orangina-rouge.org/shaarli/shaare/neAyAw">Orangine Rouge</a> pour le partage. J'ai tenté il y a plusieurs années le passage à bépo (clavier adapté à l'écriture en français) et contrairement à d'autres personnes :-p j'avoue ne pas avoir vraiment insisté. Comme je regrette un peu, je me dis que c'est l'occasion de se remettre à un apprentissage qui peut être enrichissant. Ergo-l étant adapté au français, à l'anglais et au code, je me dis que c'est l'occasion ou jamais parce que c'est clairement ce que j'utilise le plus et qu'au final le bépo n'aurait pas été le plus adapté. Comme je ne regarde déjà pas le clavier je me dis que je devrais pouvoir y arriver assez facilement et ça me permettra peut-être de perdre certains défauts de frappe...<br />
<br />
À suivre
      


