Macadames' blog

Le silence est d'or, jusqu'à ce qu'il devienne plomb.

PhpTal

with 3 comments

PhpTal est un langage de templating XML pour Php, qui simplifie énormément la vie des intégrateurs web. Il permet entre autre d’utiliser des macros (héritages de templates), et surtout d’écrire un code 100% xhtml, compatible avec tous les éditeurs html wysiwyg, compréhensibles par tous les intégrateurs sans nécessité de mettre le nez dans le code Php, très facile à lire et à écrire …

Voici un exemple très simple de code php traduit en PhpTal.

Version Php


<?php foreach ($values as $value): ?>
 <div class="item">
  <div class="title">
    <?php if ($value->hasDate()): ?><?=$value->getDate()?><?php endif; ?>
    <a href="<?= $value->getUrl() ?>"><?=
    htmlentities($value->getTitle())
  ?></a>
  </div>
  <div class="content">
    <?= htmlentities($value->getContent()) ?>
  </div>
 </div>
<?php endforeach; ?>

Rien compris ? Pas envie de comprendre ? C’est pareil pour moi.
Voilà la version PhpTal


<div class="item" tal:repeat="value values">
  <div class="title">
    <span tal:condition="value/hasDate" tal:replace="value/getDate"/>
    <a tal:attributes="href value/getUrl" tal:content="value/getTitle"/>
  </div>
  <div id="content" tal:content="value/getContent"/>
</div>

Je ne suis pas un adepte de Php, bien au contraire, mais principe de réalité oblige, ce langage étant très répandu, un développeur web s’y frotte fatalement de temps à autre.

C’est mon cas aujourd’hui, je suis chargé de faire une css + refactoring du html pour un thème Drupal, ma première réaction a été de dire mais quel est le porc immonde qui a fait ça (version 1 du thème) ? En cherchant mieux j’ai vu que malheureusement, il n’y a pas beaucoup de solution, hormis des bidouilles pas trop standard dans le monde Drupal, pour structurer le html proprement.

Ca saute aux yeux quand on a fait du Zope , du Django ou du Pylons, il manque à Drupal un langage de template correct.

Car par exemple ces « page-toto.tpl.php » qu’on trouve dans les sites développés avec Drupal avec des copier-coller de code partout car on ne peut même pas hériter d’un template, cette syntaxe épouvantable et illisible qui ne permet pas d’indenter le code correctement, ces ‘print’, ces ‘echo’, comment peut-on accepter ça dans un framework soit-disant moderne ? Pour moi c’est un point de blocage qui ne donne pas envie de creuser plus loin ce CMS.

Voir cette petite discussion sur les templates Drupal http://drupal.geek.nz/blog/tplphps-are-not-templates ou même l’auteur de PhpTemplate le dit clairement (dans la première réponse affichée), PhpTal est la solution. Alors qu’est-ce qui freine ?  les performances ?  Il semble que PhpTal a de bonnes performances sous Php5 ou du moins qu’il n’est pas si gourmand en ressources lorsqu’il est utilisé sans excès. Puisque la seule solution au problème du manque de souplesse de PhpTemplate est l’éducation des développeurs de modules, des  intégrateurs et des webmasters (voir la présentation associée à l’article ci-dessus) , incitation à faire du code Php le plus dépouillé possible (mission impossible à mon avis),  pourquoi ne pas les éduquer à utiliser correctement PhpTal ? Pourquoi ne pas l’intégrer dans le coeur de Drupal en tant que moteur de template alternatif  ?

A côté de ça quel gain de productivité ça apporterait ! On pourrait enfin avoir un minimum de plaisir en écrivant des pages Php, des pages qui seraient alors maintenables, et pas ce code qui ressemble aux bidouillages illisibles qu’on pratiquait il y a plus de dix ans avant l’apparition des CMS (voir les exemples de la présentation tous issus du coeur de Drupal, imaginez ce que ça donne dans la réalité de thèmes ou de modules développés à l’arrache pour des clients pressés  !!).

Bien-sûr mon point de vue est aussi partisan, car je fais du Plone depuis plusieurs années. Ce qui m’a vraiment attiré dans Plone fin 2003 c’était Zope et surtout le ZPT, le ZPT qui est à l’origine de PhpTal, sa version Python. Tous les intégrateurs qui ont pratiqué le ZPT vous le diront, facile à apprendre, plaisant à coder, facile à lire, compatible avec des éditeurs html wysiwyg, des avantages énormes, alors les drupalistes qu’attendez-vous ?

Bon c’est pas ça qui va transformer le Php en Python hein ? Mais ça n’est pas mon problème, je ne touche que rarement au coeur du code.

http://phptal.org/

Written by macadames

7, octobre 2011 at 6:44

Publié dans open source, Uncategorized

Je veux mon réseau social

with 2 comments

Rien de plus simple, avec  Twistranet.

Il vous faut :

Un serveur (Linux, Mac, ou Windows) avec python 2.6+ installé (ou python 2.5 accompagné de simplejson). Python 3 n’est pas supporté par contre.

Installez pip (il faut apprendre à s’en servir, ça simplifie toutes les installations/mises à jour/ désinstallations des paquets python). (*)

Installez PIL. (http://www.pythonware.com/products/pil/)

En ligne de commande vous tapez :

$ pip install numericube-twistranet

Si tout s’est bien déroulé, vous êtes prêt à démarrer.

Admettons que vous voulez stocker votre projet dans le dossier « c:\mesprojets\monreseausocial » ou dans « /home/chezmoi/monreseausocial », appelons le  « path_to/monreseausocial »

Ouvrez une ligne de commande et tapez :

$ twistranet_project « path_to/monreseausocial »

Si c’est pour du test, je vous conseille plutôt de taper :

$ twistranet_project cogip « path_to/monreseausocial »

Ainsi vous verrez twistranet en action dans une société fictive appelée cogip.

Cela a pour effet de créer votre projet et de démarrer votre serveur en ligne de commande sur le port 8000. En bas du fichier de log vous trouverez le mot de passe du compte admin indispensable pour vous connecter.

Et finalement, ouvrez votre navigateur et tapez :

http://localhost:8000

Vous pouvez commencer à jouer avec Twistranet, votre réseau social.

Pour couper votre serveur :

Sur la ligne de commande :

$ CTRL-C

Pour changer le mot de passe du compte admin :

$ cd « path_to/monreseausocial »

$ python manage.py changepassword admin

Pour redémarrer le serveur :

$ python manage.py runserver

Pour (beaucoup) plus d’information, http://www.twistranet.fr/

Pour les développeurs, lisez aussi la doc (dossiers /docs) dans le paquet :
http://pypi.python.org/packages/source/n/numericube-twistranet/numericube-twistranet-0.9.0.zip

Si le sujet des réseaux sociaux vous intéresse je vous suggère d’aller faire un tour sur

http://numericube.com

(*) Installer pip sous Linux :

$ wget http://pypi.python.org/packages/source/p/pip/pip-0.6.3.tar.gz
$ tar xzf pip-0.6.3.tar.gz
$ cd pip-0.6.3
$ python setup.py install

Installer pip sous Windows :
- Téléchargez http://pypi.python.org/packages/source/p/pip/pip-0.6.3.tar.gz
- Ouvrir et décompresser le fichier pip-0.6.3.tar.gz
$ cd pip-0.6.3
$ python setup.py install

Written by macadames

7, mars 2011 at 1:53

jquery PostMessage, pour une application en iframe

leave a comment »

Ce petit produit javascript est indispensable pour intégrer une application sous forme d’iframe à l’intérieur d’un portail.

Ca permet d’échanger côté client entre les deux serveurs, à condition d’autoriser la communication.

Applications immédiates :

  • taille de l’iframe
  • impression correcte de l’iframe à l’intérieur de la page qui l’appelle
  • style de l’iframe pouvant s’adapter dynamiquement
  • échange de données entre les deux applications en passant par le client.

C’est compatible avec tous les navigateurs, y compris ceux qui ne supportent pas la méthode window.postMessage comme IE6, avec quelques contraintes mineures dans ce cas.

Après l’avoir utilisé à fond même pour des choses qui me paraissaient difficiles (soucis avec l’impression entre autre) je constate que cet outil est juste parfait.

http://benalman.com/projects/jquery-postmessage-plugin/

 

 

 

 

Written by macadames

10, janvier 2013 at 11:11

Publié dans javascript, jquery

Install fabric 1.1.3 with pycrypto 2.6 under windows

leave a comment »

1. Install mingw, mingw-get and mingw-sys (using mingw-get). Take care : do not put spaces in mingw installation path.

Add the paths to mingw32-gcc and chmod in Sys env Vars > PATH (something like « c:\MinGW\bin;C:\MinGW\msys\1.0\bin »)

2. Change your Lib\distutils.cfg (in your python path or virtualenv path), just add these lines

[build]
compiler=mingw32

3. Remove in your python path Lib\distutilis\cygwincompiler.py all these expressions :

 » -mno-cygwin »

4. Install with pip

>> pip install pycrypto

>> pip install fabric

Written by macadames

24, août 2012 at 3:20

Publié dans Uncategorized

Titanium et Android SDK premiers pas

leave a comment »

Installation

Si vous vous prenez la tête avec l’installation de Titanium et du sdk Android, voilà une petite aide.

Si comme moi vous ne voulez installer que le nécessaire pour ce qui concerne le sdk Android, il faut déjà éviter de faire « tout installer », sinon ça prend deux jours et encore je ne suis pas arrivé au bout (il y avait déjà 4Go dans le dossier), à la fin j’étais tellement énervé que j’ai tout enlevé pour recommencer.

Bref on installe le sdk avec seulement quelques versions de l’API. Au pifomètre on se dit que les dernières versions majeures de l’API Android devraient suffire, et c’est déjà assez gros en taille, même si on se trompe on le fait.

On installe aussi la dernière version de Titanium (conseil désinstaller puis réinstaller la dernière version plutôt que « mettre à jour » via Eclipse quand la version de Titanium est ancienne)

Ensuite dans l’écran d’accueil Titanium sous Eclipse, on clique sur configuration et on choisit les sdk qui nous intéressent (Android donc), et là patatras, il manque des packages Android (la 2.1 et la 2.2 sont obligatoires, ainsi que les addons Google API 7 et 8).

Si vous cliquez directement depuis cet écran sur « Install or Update Android SDK », c’est simple, il installera la totalité du sdk, on ne comprend rien à ce qui se passe, et il faudra deux jours pour s’en remettre.

Donc mieux vaut utiliser le Android SDK Manager et choisir les paquets requis et manquants tels qu’ils sont indiqués dans l’écran de configuration (c’est déjà bien long à charger croyez-moi). A la fin de l’installation l’écran du SDK Manager est tellement mal foutu qu’on se demande ce qui a été installé ou pas, néanmoins ça marche, Titanium ne crie plus.

Voilà, tout cela est perfectible, ça au moins c’est clair.

Conflits de version avec dernier java sdk

Dans le répertoire contenant les sources Titanium, il y a un fichier prereq.py
Si vous avez installé la dernière version du jdk (installation par défaut), vous disposez du jdk 1.7, il faut donc changer à la ligne 21 et 22 de prereq.py, « 1.6 » par « 1.7 »
if not version.startswith(« 1.7 »):
status = « JDK version %s detected, but 1.7 is required » % version

Mais si vous êtes en 64bits, il faudra faire machine arrière, la dernière version du java sdk ne fonctionne pas avec Titanium + android sdk, à vous de trouver le jsdk 1.6 dans cette jungle de fichiers.

Premiers pas, premiers sentiments

On dirait que commence un long et difficile apprentissage avec des pièges un peu partout. Faire du développement mobile c’est déjà complexe, un bon background en javascript et html5 est indispensable pour Titanium par exemple, mais faire du multi-plateformes c’est un challenge encore plus gros. Rien que de découvrir le monde Android avec ses multiples versions d’API, incluant ou pas les API Google, donne le tournis. On comprend que certains s’énervent sur les forums.

Les premiers pas avec Titanium furent hésitants, mais ça commence à devenir sympa.

On voit beaucoup de critiques un peu partout sur les forums comme quoi il serait préférable de coder directement en s’appuyant sur les sdk natifs mais ça ne me dit rien du tout dans l’immédiat, PhoneGap et Titanium permettent de coder en js, en s’appuyant d’avantage sur des appels aux widgets natifs pour Titanium, et d’avantage sur des widgets pur javascript pour PhoneGap (avec l’aide jquery mobile ou Sencha Touch). Cette approche convient mieux à mes ambitions limitées (je ne vais pas coder un jeu vidéo ultra performant). Mais la surcouche javascript nécessite d’être prudent au niveau des ressources, ceux qui se plaignent des fuites mémoire devraient savoir que le javascript doit être manipulé sagement.

Restez Zen, c’est complexe il faut prendre son temps pour comprendre les choses.

Written by macadames

17, février 2012 at 1:17

Publié dans Uncategorized

Tagged with , ,

Nucléaire, on arrête et on réfléchit.

with 3 comments

Quand on va s’apercevoir dans les mois qui viennent ce qui a été imposé aux travailleurs du nucléaire dans le monde entier et plus encore chez nous en France, on risque de se sentir très mal.
Décontamineurs, jumpers, nettoyeuses, tous confrontés au pire, une vie comparable à celle des mineurs de Germinal. Tout ça enrobé sous une pseudo-technologie de pointe alors qu’une centrale nucléaire n’est que de la tuyauterie autour d’une bombe sale. Ce soir, 25/03/2011 un reportage sur Arte « RAS Nucléaire rien à signaler » tourné en 2008, pour qu’on se réveille tous, car il faut que cet accident au Japon serve à quelque chose.

Alors, évidemment on est admiratif devant le courage des japonais, qui se sacrifient, le mot n’est pas trop fort, pour ne pas éparpiller la radioactivité dans l’atmosphère. Mais on ne peut pas pour autant continuer à fermer les yeux et se taire sous prétexte que c’est indécent. Au minimum un grand débat sera nécessaire pour que tout le monde soit conscient de cette folie.

Personnellement, je suis triste pour le Japon, très triste, et accessoirement très en colère contre moi-même de ne pas avoir compris les risques bien avant cet accident, de ne m’être jamais intéressé au problème, et d’avoir consommé l’électricité d’EDF sans trop compter pendant des années.

Written by macadames

25, mars 2011 at 6:18

Publié dans Uncategorized

Gainsbarre 20 ans – anniversaire

leave a comment »

20 ans après sa mort, qu’en reste-til de l’ami Gainsbarre ?

Il y a 20 ans, Gainsbourg ne représentait plus rien pour moi, je parle de l’homme pas de l’oeuvre.

Après la vague punk, neo punk, post-industrielle et pré-zeroneurone, et dans l’état post-végétal où se trouvait mon esprit à l’époque des faits, la mort de Gainsbourg lui a juste fait comprendre qu’une page s’était tournée, c’était déjà pas mal pour cette petite chose ravagée.

Un ami à moi, Mustafa, m’avait offert un fac similé avec photo de l’annonce AFP. Il était très ému. Pas moi.

J’ai toujours été un amateur inébranlable de la musique de Gainsbourg, surtout de « Melody Nelson » son chef d’oeuvre, mais en 91, foutu brouillard,  je pensais que Gainsbourg n’avait plus rien à dire, sauf pour ses proches éventuellement, et pour les charognards qui attendaient sa mort, tandis qu’il leur disait merde, MERDE, MEEEERRRRDDDDEEEUUUHHHHH. C’est le seul message qu’il communiquait à l’époque. Aujourd’hui, je m’agenouille, je me prosterne, il avait 20 ans d’avance.

Voilà que je joue au charognard moi aussi, 20 ans après ?

Il serait content et fier l’ami de pouvoir encore goinfrer un ventre de hyène après tout ce temps.

Rassure toi enfoiré, dans 11 jours ceux qui n’ont rien à dire vont évoquer ta mort, les vautours vont se gaver, et tu vas te tordre de rire et de vanité dans l’au-delà, alors je tente un véritable hommage pour toi, sacré Gainsbarre.

T’as bien fait de te tirer rapidement, mais quel bordel complètement nul tu nous a laissé !  Tu n’aurais pas pu arriver vivant en 2011, un officiel quelconque t’aurait forcément abattu d’une balle dans la tête avant ça pour que tu arrêtes de ramener ta face avinée sur les écrans. De toute façon, un esprit normalement imbibé n’aurait pas pu survivre, alors toi mon pote … laisse tomber.

On vit aujourd’hui dans un monde de flics et de têtards, de larves de moustique qui s’effraient au moindre mouvement de vent, imagine un peu mec … Imagine que les maffieux n’ont plus besoin de se battre, ils se baladent en liberté tranquillement et gouvernent ce monde. Imagine que les plus-puritains-des-trous-du-cul sont aux commandes de ce pays, ou du moins ils imaginent l’être, et c’est nous qui les avons porté là, avec l’assentiment des intellectuels « de gauche ». Imagine qu’au 21e siècle des gens croient tellement en Dieu qu’ils n »hésitent pas à se faire exploser dans la foule, tuant au passage des tas d’innocents, et ils pensent qu’ils seront remerciés dans l’au-delà. T’y crois pas n’est-ce pas ? Mais attends, imagine aussi une densité phénoménale d’ultra-religieux, d’ultra-prétentieux et d’ultra-idiots au mètre carré. Imagine la pauvreté de l’esprit, la banalité des idées, la stupidité qui s’insinue partout, qui infeste, qui pollue tout. Imagine la morale Gainsbarre, qui pétrit toutes les « nouvelles » idées. Imagine ces yeux trop fatigués pour pleurer, ces millions de gens toujours affamés, et ces millions d’autres toujours assoiffés … de fric. Imagine que l’argent est la seule valeur, et le cynisme la seule attitude possible. Imagine qu’on se parle essentiellement par écrans interposés, et que jamais, jamais la peur de l’autre n’a été si grande.

20 ans se sont passés, et on a eu beau essayer de voter, sans grande conviction c’est vrai, les méchants ont toujours gagné. Et cette nouvelle réalité vraiment pas faite pour toi s’est installée.

Hmm, toi mon salaud tu t’en foutais à l’époque, et  tu t’es même comporté comme la pire des ordures le jour où tu as brûlé ces 500 balles à la face de ceux qui n’avaient rien, ce jour là j’ai souhaité non pas ta mort, mais ta souffrance. Désolé mon pote, je ne le pensais pas vraiment. Mais tu dois t’en vouloir là haut, d’avoir autant bu ce jour là, d’avoir été si con, si prophétique, si exemplaire dans la connerie, permettant aux pires pourritures de revendiquer aujourd’hui une part de ton héritage.

Ah Gainsbarre mon ami, ma charogne puante à l’intérieur, dans 11 jours on fête ton passage au monde des ténèbres, certains fêteront 20 ans de soulagement, et d’autres profitent de la date pour seulement faire la fête, je me range bien sûr avec ces derniers. J’espère que tu es devenu vampire et que tu es toujours là dans l’ombre à guetter une proie innocente pour la ramener à la poésie de la réalité, lui donner le goût de la gitane sans filtre du whisky du sexe et de la révolution.

Mords-les-tous, pour que ce monde change.

Et ceux que tu ne toucheras pas, il va falloir que les vivants s’en  occupent, c’est notre job.

Et bien je vais t’étonner et finir par une note positive, ce job on le fait bien. Nous sommes de plus en plus nombreux à vouloir transformer ce monde un endroit vivable, et nous sommes décidés à nous battre. Bien que ne disposant pas d’arme de destruction massive de connards, et que face à nous il y a des tanks, des kalachnikov, des CIA, des KGB, plus puissants que jamais, bien qu’ils nous fliquent, qu’ils nous mettent à poil aux aéroports, nous palpent les glandes et le trou du cul, nous filment dans les rues 24 heures sur 24, ils ne gagneront pas car notre arme secrète est bien plus forte, c’est un mélange non chimique fait d’amour, d’acceptation de l’autre, de poésie, de provocation et d’humour. Notre arme c’est aussi ta musique, et tes textes, et ton attitude face aux cons, ta fierté. Notre arme c’est ton véritable héritage.

Bon je ne suis pas venu te dire que je m’en vais, mais je me barre quand-même. Ciao mon grand.

Written by macadames

18, février 2011 at 11:39

Publié dans Uncategorized

Santa Montega Blues

leave a comment »

Un petit blog sur mon village

http://moltifao.wordpress.com/

Written by macadames

15, février 2011 at 7:58

Publié dans Uncategorized

Bonne année 2011

with 2 comments

Avec un peu de retard je vous souhaite une excellente année 2011, et en profite pour donner de mes nouvelles.

L’année démarre en trombe pour ce qui me concerne, nouveau job, nouveaux projets.

Me voilà surtout embarqué sur un projet d’outil de réseau social pour l’entreprise en Django. Ca s’appelle Twistranet, c’est fort sympathique et bientôt dans vos bacs. Ce projet est entièrement supporté par Numericube, la société dans laquelle j’oeuvre depuis Octobre 2010 et à qui je souhaite évidemment le plus grand succès.

Nouveauté qui marquera sans doute 2011, ça se passe du côté des frameworks web légers en Python : Pyramid est le projet dont tout le monde parle et qui réunit des développeurs venus des mondes Pylons, repoze.bfg (zope donc) et TurboGears. C’est très prometteur, d’ailleurs avec mes amis Gilles et Kamon on a prévu de sprinter sur le sujet avant fin Janvier, si d’autres sont intéressés, qu’ils se fassent connaître rapidement.

Autre nouvelle intéressante, la dernière version de ckeditor (3.5) est sorti en Décembre, toujours très au-dessus de la mêlée des éditeurs Wysiwyg open source. Je suis toujours partant pour améliorer le produit Plone (et ses dépendances), si vous avez un projet en ce sens n’hésitez pas à me contacter.

Pace e salute !

 

 

Written by macadames

14, janvier 2011 at 11:38

Publié dans Uncategorized

Three Plone addons – part 3 : CKEditor for Plone

with one comment

Three Plone addons – part 3 : CKEditor for Plone

Why Plone4 is so cool ? because you can create easily new addons in a pure python way, look at this new addon  called « CKEditor for Plone ».

A screencast here :

http://www.youtube.com/watch?v=ICuMYWncX8M&feature=channel

More information here :

http://plone.org/products/collective.ckeditor

Some lines of code are used to take original ckeditor svn code and place it in a Zope browser resource (because Zope is really strict about XML/XHTML we must do this little work, i hope i could replace it by a simple svn-externals in future).

Other lines of code are here to call dependencies (collective.plonefinder to search server resources, collective.quickupload for fast upload, see previous posts).

A small javascript « select resources » code is here to communicate with Collective Plone Finder.

The most part of code is CKEditor Plone control panel because it’s important for managers to allow or disallow features, toolbars, or some plugins on their Plone site.

The last part of code is the CKEditor integration in plone wysiwyg templates.

Hmm, that’s all.

Some people ask me, why CKEditor ? Plone4 has Tiny MCE …

Because :

– CKEditor is fast (really fast)

– CKEditor is accessible ( http://www.w3.org/WAI/WCAG1A-Conformance)

– because i’m a FCKeditor’s friend since 10 years, Fred (Frederico Caldeira Knabben) had no chance, his initials offend some English spoken people, now than the software name is more accessible perhaps more people will be interested in its features ?

– Plone needs to be good but it also needs to have reliable addons, and CKEditor cames with a good Plone integration (relax with collective.plonefinder and collective.quickupload)

Written by macadames

24, septembre 2010 at 11:05