:-y

Resynthesizer sous Gimp 2.8 sous Ubuntu

vendredi 14 septembre 2012 - 15:23

Edit 02/01/13 : Gimp 2.8 est maintenant intégré à Ubuntu, cet article n'est donc plus vraiment utile. En revanche si vous avez des problèmes avec Resynthesizer, utilisez à la place Filtres -> Amélioration -> Heal selection et vous aurez le même résultat.

Gimp 2.8 est arrivé, mais j'ai rencontré quelques soucis en voulant utiliser le filtre resynthesizer. Heureusement, rien de bien grave et la solution pour réparer ce petit problème est très simple.

Pour illustrer le problème, je vais utiliser la très célèbre Lenna (Vous savez la tête utilisée en traitement d'images qui correspond à une couverture de Playboy)

Lenna

Tout d'abord j'installe gimp et gimp-plugin-registry :
sudo add-apt-repository ppa:otto-kesselgulasch/gimp
sudo apt-get update && sudo apt-get install gimp
sudo apt-get install gimp-plugin-registry


Je veux faire disparaître l'oeil droit de Lenna et paf j'obtiens le résultat suivant :

Lenna resynthesizer fail

Bizarre bizarre...

La solution
Installer gimp-resynthesizer (qui enlève gimp-plugin-registry), sauvegarder le programme resynth, réinstaller gimp-plugin-registry (qui enlève gimp-resynthesizer) et remplacer resynthesizer par resynth :
sudo apt-get install gimp-resynthesizer
cp /usr/lib/gimp/2.0/plug-ins/resynth .
sudo apt-get install gimp-plugin-registry
sudo mv resynth /usr/lib/gimp/2.0/plug-ins/resynthesizer


Et voilà le résultat : l'oeil droit de Lenna a disparu, resynthesizer est réparé !

Lenna resynthesizer win

Bien sûr cet article n'est pas fait pour présenter resynthesizer qui est juste indispensable pour gimper des images (je suis contre le terme photoshopper :-p allez savoir pourquoi...)

C'est moi ou feedburner nous prend pour des cons ?

samedi 08 septembre 2012 - 08:46

Je suis tranquillement en train de lire sur mon KrISS feed lorsque je tombe sur un article de LOL annonces. L'annonce, je m'en fous c'est surtout le fait que contrairement à avant l'image de l'annonce n'est plus présente dans le flux RSS. Est-ce que LOL annonces a changé sa politique ?

Ils préfèrent peut-être que les gens aillent sur leur site pour voir les annonces, c'est leur choix, je respecte. Je jette quand même un rapide coup d'oeil sur leur flux RSS et WTF je découvre ça :


<content:encoded><![CDATA[<br/>
<br/>
LOLannonces a publié un nouvel article.<img src="http://feeds.feedburner.com/~r/LolAnnonces/~4/YKauxwJXvtc" height="1" width="1"/>]]></content:encoded>


C'est une blague ou quoi ? Je vous avais dit (dans la version 2 de KrISS feed) que j'avais considéré les liens feedburner qui nous pistent avec leur plus ou moins faux <guid isPermalink="false"> :

« J'ai pris quelques libertés : j'espère que vous ne m'en voudrez pas, mais je ne choisis pas les liens de la balise 'link' pour les flux feedburner, ce sont des adresses proxy de Google (http://feedproxy.google.com/), ce n'est pas grand chose, mais c'est toujours ça de pris. »

Je vous avais également dit dans les TODO de la version 3 que j'envisageais de considérer les faux liens images en bas de certains articles :

« virer les liens de feedburner (email-this, save to delicious, digg this, twitt this) qui sont des images dans l'unique but d'avoir encore quelques stats en plus à notre insu (afficher le texte à la place si des gens s'en servent ?) ; »

TODO : Maintenant il faut aussi supprimer des fausses images de 1 pixel ? Merci Google... (j'ai vérifié et tous mes flux feedburner contiennent cette image).

PS : je n'ai pas beaucoup de temps en ce moment, mais j'ai un peu avancé sur KrISS blog et KrISS feed. Un article de news est bientôt prévu (1 semaine ou 2...)

Edit (11/09/12) :
Parce qu'il est toujours bon de rappeler qu'il ne faut pas faire un business basé sur une API, voici un petit lien du hollandais volant sur l'API feedburner...

La chute des ventes de cd

vendredi 24 août 2012 - 18:15

Je n'ai pas besoin de vous donner de liens sur la crise du disque, tout le monde qui suit un minimum l'actu a déjà lu plusieurs articles qui accusent les méchants pirates (ce dont tout le monde est bien sûr maintenant persuadé...).

Cependant, je trouve qu'on ne parle pas suffisamment d'un autre problème que je trouve bien plus important et qui pourrait justifier une partie de cette crise, c'est la qualité (et je ne veux pas parlé de la qualité d'encodage !).

Coupé du monde pendant les vacances, j'ai eu l'agréable plaisir de découvrir, en prenant mon petit déjeuner devant la télé, certaines nouveautés (des chansons que je ne connaissais pas avant et qui sont donc nouvelles pour moi). Des fois, j'me demande pourquoi on n'est pas en vacances toute l'année...

Je ne cherche pas à critiquer cette chanson en particulier, mais Lô - Le soleil etc a comme refrain la la la la... (environ 81 fois, oui j'ai compté...).

Selena Gomez fait légèrement mieux avec Love You Like A Love Song et un refrain qui contient 8 phrases dont 6 correspondent... au titre de la chanson et les 2 autres, ben c'est aussi une seule et unique phrase.

Attention, je ne dis pas que je n'aime pas ces chansons ou que ces dernières sont nulles, mais de façon générale, j'aime cette petite illustration qui résume bien mon ressenti. Évidemment, il y a des chansons où ce ne sont pas forcément les paroles qu'il faut écouter : Daft Punk - Around the world ou la musique classique n'auraient aucun intérêt sinon...

Et bien sûr, je ne parle pas ici des artistes qui comptent sur une reprise pour lancer leur carrière : Princess Sarah avec la chanson (À la faveur de l'automne) reprise de Tété. Si encore la reprise apportait quelque chose d'original et nouveau, je dis pas. Mais bon avec un pseudo pareil, fallait-il s'attendre à de la nouveauté ? (Pour les jeunes qui ne comprendraient pas mon petit énervement, je vous laisse découvrir l'originale Princess Sarah)

Heureusement que tout n'est pas comme à la télé... enfin pour le moment...

Je crois me rappeler que c'est Sebsauvage qui m'a fait découvrir cette artiste dans un de ces célèbres "en vrac"
Pour découvrir GiedRé, je vous propose cette première chanson qui n'est pas forcément la plus représentative de son répertoire. Elle raconte l'histoire d'un petit ver de terre (non vous ne rêvez pas il s'agit effectivement d'une tête de bébé en plastique sur le manche de sa guitare).

Une autre chanson, sans doute la plus connue est pisser debout.

Et parce qu'il manque une chanson plus représentative, en voici deux : la première parce qu'on n'y pense pas mais cela laisse à réfléchir, la seconde pour un texte très bien écrit et une chute comme elle sait si bien les faire.

Si vous avez aimé les 4 chansons précédentes je ne peux que vous conseillez d'écouter attentivement cette playlist (attention, elle est incomplète, et je vous conseille de faire d'autres recherches ainsi qu'un détour par dailymotion pour compléter) et bien sûr d'aller la voir en concert. C'est bizarre, mais je n'ai pas eu l'impression de m'être fait avoir comme ceux qui ont dû payer 180 € pour 45 minutes de concert avec Madonna.

Edit :
Playlist complète :
http://tontof.net/?2012/12/21/21/12/00-la-fin-du-monde-avec-giedre-en-tete

Vive la publicité à la con

mercredi 22 août 2012 - 18:02

Les vacances sans internet, sans la télé, sans la radio, c'est chouette, mais le retour à la réalité est parfois difficile. Un exemple ? Depuis mon retour, j'ai vu plusieurs fois à la télé la publicité d'Intermarché qui compare les prix du jus de fruit 1,5L Andros avec E. Leclerc... et à chaque fois ça m'énerve, mais alors à un point.

Pour ceux qui ne l'ont pas vu voici un résumé sur leur site.

Je cite :
- "Le prix moyen constaté chez Leclerc était de : 3,04 euros"
- "Le prix en vigueur aujourd’hui chez INTERMARCHE est de : 2,78 euros soit 1,86 euros/litre"

Alors déjà pourquoi le temps de conjugaison n'est pas le même (présent, imparfait) ? Tout simplement parce que la comparaison concerne des relevés de prix pour Leclerc effectués "du 30 juillet au 4 août 2012" alors que le prix pour Intermarché est valable depuis mi août (je ne me rappelle plus de la date exacte qui est écrite et qui défile en bas de la pub en petit : edit : j'ai revu la pub et c'est écrit le 20 août). Déjà je trouve ça limite... Pourquoi ne pas avoir effectuée la comparaison sur la même période ? Je pense que ça m'aurait un peu moins énervé...

Mais bon passons.

Je ne sais pas si vous connaissez, mais Leclerc avec leur site quiestlemoinscher.com propose également une comparaison que je trouve moins énervante car avec l'explication de leurs résultats avec les valeurs pour chaque relevé.

On remarque qu'en mai, Intermarché était effectivement moins cher, mais avec une moyenne de 2,97 €.

L'avantage avec les drives, c'est que tous les magasins ont un site en ligne qui permet de comparer les prix facilement (Auchan, Carrefour, Casino, E. Leclerc, Intermarché)

J'effectue donc une rapide comparaison et vers chez moi, le prix du jus d'orange est de 2,78 € chez E. Leclerc et 2,90 € à Intermarché. C'est un prix moyen chez E. Leclerc, et visiblement je suis du bon côté de la courbe. Mais par contre ce que je ne comprends pas c'est pourquoi chez Intermarché c'est 2,90 € ? Nul part dans leur publicité il est spécifié qu'il s'agit d'une moyenne et sur leur site, il est même écrit "Aujourd'hui"... "Encore une preuve de l’engagement prix d’INTERMARCHE !"... tu parles... encore une preuve qu'on nous prend pour des cons. Il sort d'où ce 2,78 € (et je ne parle pas du fait que leur site Intermarché ne marche pas sous firefox... impossible de cliquer sur la voiture. J'ai tout de même pu regarder le prix avec Opéra)

Qu'est-ce qui m'énerve ?

On nous prend de plus en plus pour des cons avec des publicités qui contiennent des astérisques de partout et des références qui ne veulent rien dire.

La dernière qui m'a marquée : SFR femto avec déjà plus de "200000 clients satisfait*"
(ici le plus drôle c'est que dans la publicité, l'astérisque n'est même pas expliqué)

Et je ne vous parle pas de tous ces labels, élu produit de l'année, testé cliniquement, etc. qui ne veulent bien souvent rien dire, si ce n'est, "nous avons payé pour pouvoir mettre un label qui fait bien".

C'est dommage, parce que j'aime bien les publicités. (Vivelapub, Culturepub)

Et quand elles sont bien faites, ben c'est vachement plus agréable à regarder.

Edit (23/08/12) :
- Hier au cinéma j'ai vu la pub pour IE9. Ce qui m'a le plus faire sourire c'est "IE9... de loin le meilleur - PC Magazine". J'ai cherché sur le net mais je n'ai pas trouvé la référence (certaines sont présentes ici). J'ai lu beaucoup de commentaires du style "Ils ont fumé quoi PC Magazine" mais je n'en ai pas vu qui soupçonnait microsoft d'avoir sorti une phrase hors contexte : "de tous les précédents IE, IE9 est de loin le meilleur". Dans ce cas là, PC Magazine n'aurait peut-être pas tout à fait tort (je ne peux pas juger d'un logiciel que je n'utilise plus depuis la version 5). On voit ici que donner les références exactes (qui permettent de retrouver la citation) de ce qu'on dit est indispensable ;

- Via http://orangina-rouge.org/shaarli/ un article intéressant : http://www.marianne2.fr/Les-promos-bidons-des-hypermarches-marquent-la-rentree_a221852.html

Edit (24/08/12) :
La "Méthodologie du relevé" est détaillée sur leur site :
- "Les relevés de prix ont été confiés à une société d’études indépendante." (indépendante... pas plus d'infos, on va donc les croire sur écrit...)
- "Les données saisies ont fait l’objet d’un calcul statistique." (ah ben si c'est un calcul statistique)
- "52 magasins Leclerc" (mais finalement 46 car 6 n'avaient pas le produit), "huit grandes zones régionales" (choisies on ne sait pas trop comment), "Un tirage aléatoire a été réalisé dans cette liste en respectant pour chaque enseigne le nombre de magasins à relever par région au prorata du nombre de magasins par enseigne et par région et ce afin d’obtenir 349 magasins à enseignes concurrentes." (bref un protocole expérimental qu'il est donc impossible de reproduire) et je vous laisse lire la suite du pdf sur leur site si jamais au cas où vous vouliez vous faire rembourser... mais attention "dans la limite de 12 remboursements maximum pour chacun des produits de la liste, par client (même nom et/ou même adresse), par semaine."
(faut pas déconner non plus)

KrISS feed version 3

vendredi 27 juillet 2012 - 06:50

Dans les prochains jours, je ne pourrais pas trop avancer sur KrISS feed et en même temps cela fait déjà un petit moment qu'il n'avait pas évolué. Dans la précipitation, j'ai donc essayé de corriger certains problèmes et d'améliorer en même temps le mode reader. Je n'utilise que le mode show car je ne conserve pas les articles non lus indéfiniment et pour ça ce mode est juste super... j'ai eu en revanche beaucoup de mal à imaginer un mode reader pratique et j'attends donc vos remarques pour le faire évoluer dans le bon sens.

Pour ceux qui utilisent déjà la version 2, je m'excuse, mais pour mettre à jour, il va falloir exporter vos flux, supprimer le fichier data.php et réimporter les flux après avoir mis à jour le fichier index.php car j'ai changé la structure interne pour conserver les liens et ainsi pouvoir différentier les urls identiques provenant de flux différents plus facilement.

Pour ne pas faire un post trop long, je vais lister ce qui a changé et ce qui changera j'espère rapidement :

Ce qui a été fait :
- public/private : public permet la lecture passive des articles comme sur la démo et private renvoie sur la page de connexion pour les personnes non autorisées. (J'ai ajouté une checkbox pour pouvoir rester connecté plus longtemps) ;
- sur la page de configuration, j'ai ajouté un lien pour ceux qui utilisent la mise à jour automatique à l'aide d'un cron. Empêche les gens de pouvoir faire une mise à jour sans le lien et comme ce dernier combine le mot de passe et le sel. Pas besoin de mettre le mot de passe en clair dans le cron ;
- show/expanded : la touche 'u' marque l'article en cours comme keepunread (next/previous pour valider) (permet de conserver un article temporairement pour remplacer les favoris proposés par Anadrark) ;
- Prise en compte des commentaires de sensini42 : tout marqué comme lu à partir du mode show, correction du problème de saisie en mode reader, remonte automatiquement en haut de l'article suivant en mode show/expanded, plus besoin de rafraîchir pour faire disparaître le dernier article ;
- factorisation du code javascript pour qu'il soit compatible entre les modes show/reader et les vues list/expanded... le code reste encore illisible par contre... désolé ;
- mise en cache des 10 derniers articles visionnés (ajaxitem) pour limiter les appels ajax ;
- j'ai ajouté la vue sous forme de liste d'articles pour les modes show et reader. Marque automatiquement les articles comme lus quand on clique sur un article. Ne permet pas encore de marquer les articles keepunread ;
- chargement progressif de la suite des articles quand on scrolle (comme twitter, google reader...) pour le mode reader et le mode show en vue list ;
- mode reader amélioré, j'ai supprimé la pagination pour le chargement progressif mais je n'ai pas encore géré la suppression dans le DOM des articles précédents ce qui rend ce mode pas très efficace en vue expanded.

Je marque ici quelques remarques qu'il faudra que je prenne en compte pour la suite
- utiliser lasttimeupdate au lieu du nombre initial d'articles pour le chargement progressif. (L'ordre des articles n'est pas conservé $list = array_slice($list, count($list)-$num, $num, true); dans ajaxlist et ne garantit pas que count($list)-$num soit la position à laquelle il faut conserver les articles) ;
- l'écriture du fichier data.php est une opération coûteuse, il faudrait ne pas sauvegarder à chaque ajaxread/ajaxkeepunread (utiliser les SESSION pour sauvegarder périodiquement ?) ;
- reader/expanded : marquer comme lu automatiquement comme Google Reader ;
- reader/expanded : dans ce mode, tous les articles sont conservés dans l'arbre DOM, ça doit donc vite ramer... penser à décharger les articles lus) ;
- list : impossible de marquer keepunread les articles pour le moment ;
- show : en plus de précharger le code html, précharger les médias ;
- show/reader : encore plein de modifs... (mise en page, accès direct aux config des feed...) ;
- virer les liens de feedburner (email-this, save to delicious, digg this, twitt this) qui sont des images dans l'unique but d'avoir encore quelques stats en plus à notre insu (afficher le texte à la place si des gens s'en servent ?) ;
- gérer les via ! avoir le permalink d'un shaarli plus facilement par exemple ;
- mettre à jour les non lus dans la liste des feeds (mode reader).

Bons tests à vous :-)

Edit :
- en mode show : quand on est arrivé à la fin et qu'on fait un previous, ça revient de 2 articles. Pas très grave, mais je note pour le modifier la prochaine fois ;
- en mode reader : quand on regarde un flux particulier et que le nombre d'items indique de nouveaux articles, ça ne charge pas les articles quand on clique dessus à cause du hash courant ;
- regarder s'il est possible d'utiliser une sorte de cache pour éviter de charger les flux rss à chaque fois quand il n'y a pas de modification, 304 status par exemple. Si vous avez des idées ou des pistes, je suis preneur :-)
- j'ai ajouté le fait de marquer comme lu un article quand on fait un previous 'p' en mode show/expanded, mais finalement je crois que je vais revenir comme avant où ça ne valide qu'en faisant next 'n'.

Le premier utilisateur de KrISS blog autre que moi-même :-)

jeudi 26 juillet 2012 - 17:31

Je pensais vous écrire un petit article demain avant les vacances pour vous parler des news concernant KrISS feed, mais je n'ai pas pu attendre, car je viens de tomber sur Azikan, le premier utilisateur de kriss blog !

Évidemment, mon premier sentiment a été la joie, mais ensuite, je me suis vite rendu compte que je n'avais pas commité les modifications qui corrigeaient les bugs découverts au fil des discussions concernant KrISS feed.

Voilà qui est chose faite et je vous présente donc la version 4 de KrISS blog qui en plus de corriger quelques rares et exceptionnels bugs... possède la nouvelle sauvegarde automatique des éditions d'articles vachement plus KISS que ce que j'avais mis en place avec javascript. Le principe est simple quand on poste un article en cours d'édition et qu'entre temps, nous avons perdu la connexion (car oui, ça peut être long pour écrire un article), au lieu de perdre l'article, ça le stocke dans une variable de SESSION. Transparent pour l'utilisateur, il retrouvera son article en se reconnectant. Elle est pas belle la vie.

À demain pour quelques informations concernant KrISS feed.

Ma vision du KISS pour KrISS feed

lundi 02 juillet 2012 - 18:53

La première fois que j'ai entendu parlé du principe KISS, c'était en lisant les discussions du projet shaarli de Sebsauvage.

Si l'acronyme peut vouloir dire beaucoup de choses, la notion qui se cache derrière est tout à fait simple et compréhensible. Je pense aussi que cette notion est relative. Je vous avais parlé de Leed annoncé comme KISS et que j'avais envisagé pour me passer de Google Reader. Leed utilisait SQLite (maintenant MySQL) et pour moi, ce n'était pas suffisamment KISS.

Je suis plutôt d'accord avec la définition du principe KISS de Idleman et des commentaires qui complètent sa définition. Je vais quand même vous donner ma vision du KISS pour kriss feed et ne je ne vais donc pas vous parler des nouvelles fonctionnalités (même si j'ai corrigé la lecture de certains flux qui définissent les namespaces dans chaque balise plutôt que dans la balise racine, et si j'ai amélioré certains comportements concernant la mise à jour en mode show et le fait de ne plus avoir à appuyer deux fois sur 'n' quand de nouveaux articles apparaissent) :

- pour les utilisateurs finaux, je compte laisser un unique fichier à télécharger car je pense que c'est le plus simple et qu'il n'y a pas besoin que ce soit plus compliqué ;

- pour la partie développement, j'ai ajouté sur github le dossier contenant les sources qui permettent de maintenir kriss feed beaucoup plus facilement. J'ai utilisé les standards Symfony et Zend que j'ai fait valider grâce à phpcs (il faut ajouter le standard Symfony qui n'y est pas par défaut). J'ai commenté les sources afin de générer une petite documentation et ajouté un script bash permettant de compiler le fichier index.php pour les utilisateur finaux (les commentaires DocBlock sont supprimés n'étant pas vraiment utiles pour les utilisateurs finaux).

Le principe KISS n'est pas forcément simple et immédiat à mettre en place. Quand j'ai repris le code de picoblog, je voulais utiliser le même principe KISS. Je vous ai parlé du problème que j'ai rencontré quand ma session s'était terminée pendant l'édition d'un article et que j'avais de ce fait perdu mon article. Pour corriger ce problème, j'ai pensé dans un premier temps que la bonne solution était d'utiliser un peu de javascript. À l'utilisation, ce n'est pas très pratique et après réflexion, je me suis dit qu'il fallait que j'envisage d'utiliser les session php qui permettrait de rendre tout ceci invisible à l'utilisateur et donc beaucoup plus pratique.

Tout ça pour dire que la simple volonté de programmer KISS n'est pas suffisante pour rendre un projet vraiment KISS et c'est pourquoi, il ne faut pas avoir peur de reconsidérer le code encore et encore et encore et encore :

<blockquote>But don't be afraid of refactor your code over and over and over and over again.</blockquote>

KrISS feed 2 de sortie !

vendredi 22 juin 2012 - 19:30

Je vous présente KrISS feed dans sa deuxième version !

(La démo ne permet que d'afficher les flux, sans faire de mise à jour, sans marquer les articles comme lus ou non lus, etc.)

Beaucoup de changements depuis la première version et maintenant ça y est, je n'utilise plus Google Reader comme lecteur de flux principal !!! (je le garde encore 1 semaine ou 2 pour m'assurer que KrISS feed fait bien son travail, mais j'ai bon espoir)

Évidemment, je suis égoïste et je l'ai codé principalement pour répondre à mes besoins, mais j'ai aussi pensé un peu à vous.

Pour cela, j'ai fait deux modes principaux : 'show' et 'reader'.

- Le 'show' est le plus fonctionnel pour le moment car je vous l'ai dit, je suis égoïste. Ainsi, il est possible de lire rapidement les nouveaux articles (et uniquement les nouveaux). L'affichage est très épuré pour ne laisser place qu'à un petit menu (qui peut s'agrandir en cliquant sur le nombre d'items) et un seul article. Il suffit ensuite de cliquer sur les flèches pour naviguer avec les articles suivants et précédents ou alors de taper sur 'n', 'p' (emacs), 'j', 'k' (vi), 'flèche de gauche ou de droite' !!

Dans ce mode les flux se mettent automatiquement à jour et il n'y a pas besoin contrairement à Google Reader (et cela m'énervait au possible) d'actualiser l'affichage en cliquant sur le nombre d'items. C'était long et chiant, mais cela n'est qu'une histoire ancienne maintenant. Quand le nombre d'items augmente, il suffit de continuer à cliquer sur 'n' et la lecture continue. Que du bonheur !

Je suis égoïste, mais également magnanime ; aussi j'ai ajouté un 'keep unread', même si je ne trouve pas cela très utile. Si vous utilisez un smartphone, il suffit de slider à gauche ou à droite pour naviguer (j'ai essayé sur mon S700i de 2004, mais je ne comprends pas pourquoi cela ne marche pas, je compte donc sur vous pour me signaler les éventuels bugs). Je ne voulais pas inclure tout JQuery/JQueryMobile pour ça, j'ai donc juste inclus la partie qui me semblait utile.

Pour valider, il faut toujours passer à l'article suivant ('n'), ce qui veut dire qu'il n'est pas possible de marquer des articles comme 'keep unread' en faisant des ('p'). À voir à l'usage si cela est gênant...

- Le 'reader' est un affichage plus classique et moins fonctionnel pour le moment. Il me sert surtout pour ajouter, déplacer, marquer tout/flux/dossier/article comme lus/non lus. Il est grandement à améliorer.

Le principal problème est la mise à jour qui n'est pas du tout automatisée. Pour le moment, il faut la faire manuellement et attendre... Il va falloir que je réfléchisse comment la faire sans que cela ne soit gênant pour la lecture (les problèmes sont légèrement différents que dans le mode 'show').

Je n'ai toujours pas pris le temps de faire l'affichage compact sous forme de liste, ce n'était pas dans mes priorités et je n'ai pas eu de demandes dans ce sens.

Entre temps j'ai essayé RSS lounge... et voici un petit retour... je télécharge, j'installe, j'ai le joli message "Installation finie. Vous pouvez maintenant utiliser rsslounge.". Je clique sur le lien et paf ! une page toute blanche :-( ça commence bien... Je modifie le .htaccess pour afficher les erreurs et j'obtiens : 'Internal Server Error'... super... Je regarde sur la FAQ et je fais les modifs mais toujours rien. Je n'ai pas encore commencé à utiliser RSS lounge que ça m'énerve déjà. Je cherche un peu sur le net et je tombe sur un forum qui explique que cela peut venir du transfert avec filezilla et qu'il faut choisir le transfert de fichiers binaires. Je recommence et ça marche enfin. J'importe mon fichier opml et là c'est la catastrophe, ça prend une plombe, c'est méga long, je clique un peu de partout pour tester, ça plante mon navigateur et là j'abandonne.

Pour résumer :
- 'show' : gestion ajax pour le mode 'show' avec les raccourcis qui vont bien, possibilité de conserver en 'non lu', mise à jour entièrement automatique, possibilité de partager avec shaarli.

TODO : pas grand chose à ajouter sauf si vous avez des propositions (moi cela me convient parfaitement pour le moment) ;

- 'reader' : affiche les flux en rouge en cas d'erreur (flux non XML, problème de la dernière update, problème d'articles manqués par rapport à la dernière mise à jour), possibilité de naviguer entre les différentes pages (next, previous avec les mêmes raccourcis 'n', 'p'...)

TODO : ne fait pas les mises à jour en ajax (principale priorité), ne sauvegarde pas l'état des dossiers (ouverts/fermés) (ce qui est chiant sur les téléphones avec les flux en haut qui sont tout le temps affichés), ne permet pas de supprimer plusieurs flux en même temps, ou encore de les déplacer dans des dossiers.

J'ai pris quelques libertés : j'espère que vous ne m'en voudrez pas, mais je ne choisis pas les liens de la balise 'link' pour les flux feedburner, ce sont des adresses proxy de Google (http://feedproxy.google.com/), ce n'est pas grand chose, mais c'est toujours ça de pris.

J'ai encore du boulot c'est ça ? En attendant, bon essayage !

(Définitivement tl;dr cet article...)

Adieu Google Reader ? Bonjour KrISS feed !

vendredi 08 juin 2012 - 17:44

2 semaines sans poster, ça commençait à faire un peu long. Mais aujourd'hui, j'ai une bonne nouvelle à vous annoncer, je suis en train de me faire un petit lecteur de flux RSS que j'ai envie de partager avec vous.

Chez Google, il y a encore 2 services dont je me sers tous les jours, ou presque, c'est Gmail et Google Reader et je souhaite dans un premier temps me séparer de ce dernier. J'ai bien évidemment regardé les alternatives et pour ne pas les citer rssLounge et Tiny Tiny RSS sont sans aucun doute les plus utilisées. Sauf que bon, utiliser MySQL pour ça, je vois pas vraiment l'intérêt (toujours dans l'optique de l'auto-hébergement). Je lis aussi que Idleman veut lancer un projet léger pour lire les flux et là je me dis chouette, allons regarder Leed qui n'utilise que 'SQLite'. Bon pourquoi pas, mais encore un peu compliqué à mettre en place et ne répond pas encore suffisamment à mes besoins.

Mes besoins :
- lire mes flux rapidement (Google Reader permet de naviguer très rapidement dans les flux avec les touches 'j', 'n' (next) ou 'k', 'p' (previous))
- partager rapidement avec kriss link (comment ça il n'existe pas encore ? C'est un shaarli en plus simple, je vous laisse imaginer) => ceci implique que kriss feed n'a pas besoin de gérer les favoris ou autre pour stocker les articles intéressants ; pour moi, c'est le travail de shaarli qui le fait déjà très bien ;
- simple à mettre en place, à mettre à jour (un seul fichier index.php à remplacer à chaque mise à jour) et à sauvegarder (le fichier 'data.php' pour 80 flux et + de 1000 articles ne faisait pas 1 Mo, pourquoi se 'compliquer' la vie avec SQL ?).
- mise à jour automatique un peu comme les autoblogs ce qui éviterait de passer nécessairement par un cron (oui je sais, il faudrait que je me mette aux autoblogs, promis je le ferais) avec en plus une sauvegarde automatique qui permettrait de lire les flux offline plus facilement (pas dans les priorités) ;
- d'ajouter un flux à partir d'un site automatiquement grâce à un petit bookmarklet (pas dans les priorités) ;

C'est parti, je reprends le code de kriss blog, je le modifie un peu et j'obtiens kriss feed. Alors je vous préviens tout de suite et je m'en excuse d'avance, mais je ne compte pas quitter Google Reader tout de suite, car kriss feed n'est pas suffisamment mature.

Cependant, kriss feed permet déjà :
- d'ajouter/supprimer des flux, d'importer/exporter des fichiers opml (conserve les dossiers et descriptions associés aux flux) ;
- de mettre à jour manuellement flux, dossier ou tout ;
- de marquer comme lus les flux, les dossiers ou tout (les messages lus qui ne sont plus dans les flux après une update sont supprimés) ;
- de trier ses flux par dossier (un flux peut appartenir à plusieurs dossiers ou à aucun, comme le propose Google Reader) ;
- d'afficher les articles avec une pagination définie dans les préférences.

Une petit démo est disponible ici : http://tontof.net/feed

Il ne permet pas encore :
- de n'afficher que les nouveaux messages ;
- de mettre à jour automatiquement les flux, (j'envisage d'utiliser 2/3 types de mises à jour, auto (qui détecte si un flux à besoin de se mettre à jour souvent en fonction de la fréquence des précédents posts), max ou un nombre de minutes fixées par l'utilisateur (qui permet de mettre à jour toutes les 'max' ou 'n' minutes) ;
- de faire la différence entre 'description' et 'content' des flux ;
- d'utiliser un 'redirector' ;
- de limiter le nombre d'articles à sauvegarder (si vous ne marquez pas les messages non lus, ils ne se supprimeront jamais du fichier 'data.php') ;
- d'afficher rapidement les images (avec un mur d'images) comme semble le proposer rssLounge d'après les screenshots (pas dans les priorités);
- d'afficher rapidement les articles comme je le souhaite avec au moins 'n' et 'p' (troll emacs) (la plus grosse partie du travail).

Je crois qu'il va falloir que je me mette sérieusement à AJAX :-)

Bon, je vous le dis tout de suite, je ne suis pas fier de mon code (comment ça, il manque des htmlspecialchars ?), mais je le partage quand même pour que vous puissiez tester toutes les fonctionnalités et que vous n'hésitiez pas à faire des propositions d'améliorations, en plus de celles proposées, je ne connais que Google Reader ce qui limite un peu les idées. J'espère que ce n'est pas trop prématuré, mais comme je vais être très peu disponible les jours qui arrivent, je ne voulais pas attendre d'avantage.

Au fait, pas la peine de reredemander, ça ne marche pas sur free :-p

GIF, APNG, WebP versus Canvas

vendredi 25 mai 2012 - 23:58

Je vous avais préparé un petit article pour vous parler d'images animées. C'est dommage mais l'article n'était pas encore tout à fait prêt quand je me suis rendu compte que j'aurai pu le publier pour l'anniversaire du GIF animé (Korben). Je n'ai jamais utilisé de javascript dans un flux RSS, je ne sais donc pas ce que ça va donner. Si cela ne s'affiche pas correctement, n'hésitez pas à venir directement sur le site.

Si seulement je n'avais pas eu tous ces partiels et soutenances à préparer...

On m'a demandé quand est-ce que je mettrais en place sur ce site quelques images pour faire des illustrations... Je compte intégrer l'ajout d'images à kriss blog, mais en attendant, voilà en avant-première une petite alternative aux formats GIF, APNG, WebP et autres formats qui permettent/permettront d'animer une image.

Pourquoi une alternative ?

Tout d'abord, il faut savoir qu'à la base GIF est un format propriétaire qui ne satisfaisait pas vraiment tout le monde. Maintenant ce format est vieux et les brevets associés ne sont plus vraiment gênants...

D'autres solutions ont été proposées comme alternatives à ce format comme le format APNG ou le format de Google WebP qui devrait supporter les animations dans ses futures versions. Ces formats ne sont malheureusement pas supportés par tous les navigateurs, et pour une fois pas seulement Internet Explorer, mais le format APNG n'est pas non plus supporté par Chrome et Safari et le format WebP n'est supporté que par Chrome et Opera. Bravo Opera qui supporte tous ces formats nativement !

Mais alors pourquoi une alternative ?

Tout d'abord, je pense que c'est bien d'avoir le choix et je pense qu'il peut être intéressant d'utiliser la balise canvas comme une alternative qui sera compatible avec tous les navigateurs (récents) et qui devrait permettre un paramétrage plus avancé des animations.

Des solutions existent déjà :
- afficher successivement plusieurs images png à l'aide d'un script : exemple (solution qui ne m'a pas vraiment convaincue)
- utiliser des sprites et un script pour animer tout ça exemple 1, exemple 2.
J'ai trouvé ces solutions intéressantes, mais elles sont "compliquées" à mettre en place et ne permettent pas vraiment de configurer l'animation. Je me suis donc inspiré et j'ai adapté tout ça.

Une image vaut mille mots alors voici un petit exemple :

(source : Wikipedia : Balle.gif)

- on convertit le gif en png avec des sprites :
montage Balle.gif -tile 1x -geometry +0+0 balle.png (merci ImageMagick)
- on met un background transparent (pas obligatoire) :
convert balle.png -transparent white balle.png (merci ImageMagick)
- on obtient cette image :

- on met les images à animer dans un canvas, un petit script et voilà le résultat
<script src="//tontof.net/js/acanvas.js"></script>
<canvas height="50" width="50"><img src="//tontof.net/img/balle.png" width="50" height="50"></canvas>


- à partir de la même image, il est possible de modifier l'animation


Je ferai un autre article pour présenter les différentes options, car je n'ai pas encore tout développé ce que j'ai en tête, et je trouve cet article bien assez long :-)
Je vous laisse regarder le code source si vous ne voulez pas attendre le prochain article consacré à acanvas.

Avantages :
- simple d'utilisation : un simple script js à inclure, une balise canvas qui encadre l'image avec les dimensions du sprite et c'est tout
- compatible sur tous les navigateurs récents ? (juste testé sur firefox et sur le navigateur mobile android 2.3.5 pour le moment)
- hautement paramétrable grâce à javascript et permet d'animer également une image fixe sans sprite
- peut réduire la taille de l'image (2361 octets pour l'image gif, 1549 octets pour l'image png, soit 35% de réduction)... dépend bien évidemment du type d'image, l'exemple étant clairement avantageux pour png.

Inconvénients :
- nécessite javascript, sinon affiche l'image à la place toute réduite.
- ne gère pas encore les gif où seulement des parties changent un peu comme les Cinemagraph qui n'encodent que les parties qui bougent dans le gif.
- doit être plus gourmand en ressources qu'un simple fichier image, même si je pense avoir un peu limité en utilisant un setTimeout dans le code à la place de setInterval.