25 Mar 2009J'ai utilisé de nombreux éditeurs depuis que j'ai commencé à coder, et au fil du temps j'ai changé. Souvent parce qu'un bug particulier de ma version me dérangeait beaucoup, ou parce que j'avais besoin d'une fonctionnalité que je ne pouvais trouver que chez un concurrent.
Je suis resté très longtemps sur Webexpert, fais un court passage par Aptana, avant de rester pendant les quelques dernières années sur Intype. Et aujourd'hui, je viens de découvrir Komodo Edit.
Webexpert avait tout ce dont j'avais besoin il y a quelques années, mais il plantait sans raison assez souvent. Et quand je voyais ce que pouvais proposer un logiciel comme Aptana avec son parseur intégré, son autocomplete de code, etc je me disais que j'étais vraiment à la préhistoire.
J'ai donc essayé Aptana, mais je m'en suis vite lassé, c'est une usine à gaz. Il sait certes tout faire mais il était lent, et j'avais besoin de pouvoir m'en servir rapidement.
Je suis donc passé à Intype, qui est très léger et qui possédait exactement tout ce dont j'avais besoin et il le faisait bien. C'était aussi le premier éditeur qui me permettait d'enregistrer mes fichiers correctement en UTF-8. Ses colorations syntaxiques étaient très claires, son système d'indentation était parfait, bref que du bon.
Il n'avait pas d'autocomplete de code, ou alors je n'ai pas réussi à m'en servir, mais ça m'allait bien. Son seul défaut était l'absence d'une fonction de recherche dans plusieurs fichiers.
Aujourd'hui je viens de passer à Komodo Edit car j'avais déjà vu en m'en servant brievement qu'il avait une bonne gestion des commentaires multilignes qu'il identifiait tout seul et rendait leur écriture plus simple.
Et là je suis en train de m'en servir et je suis bluffé par le nombre d'atouts qu'il a ! Déjà j'ai pu retrouver le même theme de couleurs que celui que j'avais sur Intype, il gère aussi bien l'indentation et enregistre parfaitement en utf8. Jusqu'ici, il est du niveau d'Intype.
Voici la liste des points positifs supplémentaires au fur et à mesure que je m'en sers :
- Il a un parseur PHP intégré, il m'a souligné une ligne en erreur, en m'indiquant l'erreur !
- L'autocomplete m'a l'air pas mal foutu, il va chercher dans la liste des fonctions et variables que j'ai définies, ainsi que dans la liste des fonctions intégrées de PHP.
- C'est extremement pratique pour les str_replace, explode et autres fonctions dont je ne me souviens jamais de l'ordre des arguments, parce qu'il me les affiche ainsi qu'une petite explication !
- Avec Ctrl+Espace, il peut me terminer un mot que j'ai commencé s'il trouve une correspondance avec les fonctions que j'ai définies
- Il me liste même toutes les méthodes d'un modèle quand je tape le nom de ce modèle. Avec la description et la liste des paramètres tirée de mes propres commentaires
- Il ajoute automatiquement les } de fermeture quand on les ouvre
- Il enlève automatiquement les espaces qui trainent à la fin d'un fichier. Ca aussi je sens que je vais aimer, vu le nombre de fois où j'ai eu des problèmes de "headers already defined" à cause de problème de ce genre !
- En passant mon curseur sur une couleur en hexadecimal et en appuyant sur Ctrl, il me donne un apercu de la couleur. Vraiment pratique en CSS
- ll me prévient en Javascript de mes array qui se terminent par des virgules, ce qui fait bugguer IE. Pratique
01 Mar 2009Cela faisait quelques temps que je souhaitais ajouter une gestion des flux RSS à Caracole. J'ai donc recherché du coté du RssHelper intégré à cakePHP et l'ai quelque peu modifié pour qu'il s'adapte à mes besoins.
En effet, il manquait selon moi quelques fonctions extremement importantes pour la génération d'un flux complet, par exemple la possibilité de spécifier des attributs aux différents noeuds, ou encore de passer le contenu entre balises <![CDATA[]]>.
Mais surtout la possibilité d'ajouter des noeuds de façons récursive, la fonction RssHelper::item() ne permettant d'ajouter des noeuds qu'à un seul niveau.
Bref, j'ai revu tout cela dans ma propre version du Helper, avec une autre fonction pratique pour ajouter un thumbnail à un post. Pour voir ce que cela donne, et il vous suffit de vous abonner aux flus disponibles sur les pages du blog ou sur la page Réalisations
J'ai découvert la syntaxe d'un flux RSS il y a seulement quelques jours, et je n'ai testé le résultat qu'avec Netvibes, je pense donc qu'il me faut me livrer à quelques tests supplémentaires.
En tout cas, il me suffit maintenant d'ajouter une variable $rssFeed à un modèle pour qu'un flux RSS lui soit automatiquement généré (on peut préciser bien sur les informations devant être affichées pour chaque modèle). Voila qui encore un pas de plus pour Caracole :)
25 Feb 2009Attention : Ce post n'est plus d'actualité. Je n'utilise plus du tout cette technique pour masquer les adresses mails car elle bloquait complétement la lisibilité aux personnes sans Javascript. Je n'ai pas encoe trouvé de meilleure alternative pour le moment, néanmoins.
Pour faire suite au billet précédent, un autre problème que j'ai rencontré dans le développement des sites était un moyen sûr d'empecher qu'une adresse mail exposée sur un site ne soit récupérée par des robots crawlers et ne deviennent la cible de leurs spams.
Je parse donc chaque texte affiché afin de remplacer les adresses mails par une version cryptée, que Javascript décryptera à l'affichage. A chaque affichage la clé de cryptage est différente. Bon, l'algorithme de cryptage est extremement simple, c'est juste une permutation alphabétique, chaque lettre est remplacée par une autre. Et la clée est indiqué dans l'attribut title de mon code généré.
Il suffit d'étudier le Javascript pour réussir à comprendre comment décrypter les mails, mais cela demande que le robot ai intégré mon codage dans ses paramètres, ce qui n'est à priori pas le cas. Et quand bien même se serait le cas, je changerai la façon de crypter la clé.
Jetez un oeil au code source de cette page si vous le souhaitez pour voir comment cette adresse : blabla@somewhere.com est écrite.
Cela devrait être quelque chose de la forme :
<span title="97tasbw84fv6_q3pn5yirchya15nq.p9b_jziggtc40lfolwxxk@meo26m70zj2d-sur@hev8u1-dk.3" class="protectFromSpam">
<span class="noscript">
<span class="icon icon_notice"></span>
Cette adresse mail est protégée contre le spam, vous devez activer Javascript pour pouvoir la voir.
</span>
<span class="cryptedMail">ageh9gxvw1bag4342e</span>
</span>
Bon alors bien sur, cela nécessite Javascript activé, c'est un gros défaut, je l'admets. Un message permet de ne pas laisser l'utilisateur sans JS dans l'incompréhension, mais ça reste problématique malgré tout. Je n'ai pas réussi à faire mieux pour le moment.
24 Feb 2009Les trois derniers sites que j'ai fait avec Caracole avaient tous un formulaire de contact (nom, mail et texte, pour contacter le propriétaire du site).
Et tous les trois se sont fait spammer rapidement une fois que le site est arrivé dans les moteurs de recherche. J'ai donc cherché moyen d'empecher cela, une façon de detecter les spammeurs.
Alors, il existe bien sur Akismet, qui marche du tonnerre, mais qui est payant pour un usage professionnel, j'ai donc d'abord cherché du coté des solutions gratuites.
Il y a le projet reCaptcha, qui en plus d'empecher le spam, permet d'aider la numérisation de vieux livres, donc une assez bonne idée mais qui ne semble pas disponible en français. C'est malheureusement un impératif sur les sites que je développais.
J'ai donc plutot retourné le problème dans ma tête et cherché un moyen facile et ingénieux de faire la différence entre un humain et un bot. J'ai finalement opté pour un champ caché au sein du formulaire qui doit absolument rester vide. Un bot le remplira automatiquement, un humain le laissera vide.
J'avais tout d'abord mis ce champ en type="hidden" et cela semblait fonctionner, mais de plus récents spams me l'ont fait passer en display:none par CSS et je n'ai pas eu de nouveau spam depuis. Je continuerai de peaufiner le système jusqu'à ce que je trouve un blocage parfait ou que j'en ai marre et que je me tourne vers Akismet :)
Pour le moment, je loggue toutes les demandes de contact avec les informations du Header, afin d'identifier certains patterns qui pourraient me permettre de trouver plus facilement les spammeurs dans le lot.
23 Feb 2009Je viens de rajouter une petite fonctionnalité sur Caracole qui permet d'exporter une liste d'adresses mails (actuellement les personnes souhaitant s'abonner à une newsletter) dans un format exploitable par les logiciels de messagerie et les webmail.
La liste peut être exportée sous format vCard, ou encore CSV exploitable par Outlook ou GMail.