Quand l'utilisateur https://linuxfr.org/users/img-srchttpparanomehellojpg poste sur la tribune, au lieu de voir son login (qui contient par un incroyable hasard un tag html img) s'afficher à gauche du post, il voit (ainsi que les autre utilisateurs de la tribune) s'afficher une image de fort bon gout.
Rennes : Rails bar #16 — 14 avril
Si je veux apprendre le judo, je vais m’inscrire au dojo du coin et y passer une heure par semaine pendant deux ans ; au bout de quoi, j’aurai peut-être envie de pratiquer plus assidûment.
Si je veux apprendre la programmation objet, mon employeur va me trouver une formation de trois jours à Java dans le catalogue 2004.
Cherchez l’erreur.
—Laurent Bossavit
Source : http://wiki.agile-france.org/cgi-bin/wiki.pl?LeProjetDuDojo
Rennes On Rails semble avoir trouvé son format avec le « [[Randori]] ».
Comme à chaque fois :
- propositions de sujets ;
- vote ;
- travail ;
- retour d’expérience.
Sortie de Django 1.3
Mercredi matin, 11 mois après la 1.2, est sortie la version 1.3 du framework Web Django, écrit en Python.
Ce framework, basé sur un concept [Modèle-Vue-Contrôleur], est conçu pour le développement rapide et reprend la plupart des grands principes de Python (« Explicit is better than implicit », notamment), ce qui en fait la plate-forme de développement Web idéale pour les perfectionnistes sous pression.
De plus en plus de sites utilisent Django (par exemple, Bitbucket.org, Libération.fr, Disqus, Century21, convore, instagram, threadless…) pour sa flexibilité et pour le nombre d’applications Django réutilisables, qui ne cesse de croître.
Je vous propose de découvrir les quelques nouveautés que vous offrent les développeurs Django et toute la communauté.
Elixir, enfin une syntaxe agréable pour Erlang ?
Elixir est un langage de programmation qui s’appuie sur Erlang et sous licence MIT. Il propose une syntaxe agréable, inspirée de celle de Ruby, et un modèle objet à base de prototypes.
Erlang est un langage fonctionnel avec un typage dynamique, une évaluation stricte et une assignation unique. Il convient bien pour des applications distribuées, résistantes aux erreurs et sans arrêt grâce au mécanisme de rechargement à chaud. Mais c’est également un langage qui peut sembler difficile à apprendre et dont la syntaxe peut rebuter. Elixir propose une manière élégante de profiter des avantages d’Erlang. Il est notamment possible d’appeler des modules Erlang sans conversion des types de données, et donc sans impact sur les performances.
Elixir est encore très jeune et recherche des contributeurs pour aider au développement de sa bibliothèque standard. Pour installer Elixir, vous aurez besoin d’Erlang R14B01, et je vous invite à parcourir le README pour découvrir ce langage. Mais voici un avant-goût sous la forme d’un très classique « Hello World » :
module World
def say_hello
IO.puts "Hello World!"
end
end
World.say_hello
En vrac spécial Ruby : JRuby, Sinatra et Goliath
JRuby
JRuby est une implémentation complète de Ruby au-dessus de la machine virtuelle Java. La version 1.6 récemment sortie apporte des fonctionnalités majeures :
- compatibilité avec Ruby 1.9.2, aussi bien pour le langage que pour l'API ;
- prise en charge expérimentale des extensions écrites en C ;
- profiler intégré ;
- performances améliorées ;
- meilleure expérience utilisateur sous windows ;
- etc.
Sinatra
Sinatra est un micro-framework en Ruby pour construire rapidement des applications web (licence MIT). La version 1.2 est sortie au début du mois avec des nouveautés intéressantes :
- prise en charge de nouveaux moteurs de templating (Slim et Inline Markaby) et de nouvelles options (
:layout_engine,:scope) ; - ajouts de méthodes utilitaires pour construire les URL ;
- captures nommées de Ruby 1.9 pour le routage ;
- possibilité de surcharger la résolution des chemins vers les templates.
Goliath
Goliath est un serveur HTTP en Ruby sous licence MIT. Sa particularité est de s'appuyer sur EventMachine et les fibres de Ruby 1.9. Il peut ainsi fonctionner de manière asynchrone et performante tout en gardant le code lisible (l'exécution reste linéaire et ne repose pas sur des callbacks enchainés comme on peut le voir dans d'autres environnements).
En pratique, Goliath convient bien pour écrire des services HTTP en complément d'une application web : API de streaming, upload de fichiers volumineux, proxy HTTP adaptés, etc.
Architecture logicielle de la nouvelle version de LinuxFr.org
La nouvelle version de LinuxFr.org est en ligne depuis quelques jours. Vous nous remontez régulièrement des bugs et des propositions d'améliorations dans le suivi. Je vous encourage à continuer et à commenter / voter sur les entrées qui vous intéressent.
Voici quelques entrées sur lesquelles j'aimerais particulièrement avoir vos retours :
- Pour ou contre le respect de la syntaxe Markdown pour les retours à la ligne ?
- Quels services devrait-on prendre en charge pour les avatars ? Certains d'entre vous utilisent-ils pavatar ?
- Que pensez-vous des polices utilisées ?
Je pense que vous êtes également intéressés par l'architecture logicielle de cette nouvelle version. Vous pourrez donc trouver quelques explications à son sujet en seconde partie et n'hésitez pas à poser des questions dans les commentaires.
Nouvelle version de LinuxFr.org
Le site LinuxFr.org existe depuis juin 1998. Il est passé par différentes versions, fonctionnant avec différents moteurs : DaCode, Templeet et maintenant Ruby on Rails. Le site a donc utilisé le tout intégré DaCode, puis des modèles de page en Templeet développés par l'équipe du site, puis une version intégrée en Ruby.
Templeet avait été lancé principalement pour LinuxFr.org, il a été et est utilisé par d'autres sites comme moteur de « templates ». Il continuera sa vie de son côté, une version 4 étant attendue d'ici quelques mois.
La nouvelle version propose une charte graphique refaite pour l'occasion. Un concours a été organisé dans ce but et la feuille de style (CSS) gagnante, RonRonnement, est devenue la nouvelle CSS par défaut. Si celle-ci ne vous plaît pas, vous pouvez toujours profiter des autres CSS (l'ancienne feuille de style est là sous le nom kaiska-new).
Il est difficile de lister tous les changements liés à cette migration, mais voici les plus notables :
- Les contenus et commentaires utilisent maintenant une syntaxe wiki, du Markdown en l'occurrence ;
- L'espace de rédaction collaboratif a été refait (d'ailleurs, cette dépêche a été écrite simultanément par les 3 admins du site : lukhas, oumph et NoNo) ;
- Le site intègre maintenant un wiki ;
- Chaque utilisateur a maintenant un avatar : par défaut, il vient de gravatar mais il peut être changé dans les préférences ;
- Les utilisateurs authentifiés peuvent étiqueter les contenus ;
- Le script d'envoi de la lettre quotidienne d'annonce des dépêches est à refaire.
Mais certaines fonctionnalités n'ont pas encore été portées : la messagerie interne, les statistiques et le choix des contenus sur la première page.
Après les remous de la migration vers le nouveau site, l'équipe du site est à votre écoute pour recenser tous les problèmes que vous pourriez rencontrer.
Sortie de Redis en version 2.2
Redis est une base de données de type clé-valeur, sous licence BSD. On peut voir Redis comme une sorte de Memcached boosté aux stéroïdes.
La version 2.2.0 est sortie la semaine dernière, très rapidement suivie de la version 2.2.1. Cette version apporte principalement des optimisations par rapport à Redis 2.0 :
- importante diminution de la consommation mémoire (à ce sujet, je vous conseille la lecture des astuces pour optimiser la mémoire) ;
- réplication non-bloquante ;
- la commande Watch pour faire du check and set ;
- l'Algorithme LRU pour l'éviction des données quand la mémoire consommée par Redis est limitée ;
- nouvelles commandes : SETBIT, GETBIT, SETRANGE et GETRANGE permettant d'accéder à des valeurs de type « chaînes de caractères », comme s'il s'agissait de tableaux.
Pour la suite, antirez (le principal développeur) souhaite se concentrer sur la prise en charge des grappes de serveurs (clusters) et sur diskstore (un stockage sur disque des données pour les instances où tout faire tenir en mémoire n'est pas une option).
En vrac : Typo 6.0, Rails Installer, Pik
L'installation et l'utilisation de Ruby sous Windows a souvent été en retard par rapport à d'autres systèmes d'exploitation. Mais plusieurs initiatives visent à réduire ce retard. La première est Pik, un équivalent de Ruby Version Manager pour Windows. Il permet d'installer plusieurs interpréteurs Ruby, de passer facilement de l'un à l'autre, voir de lancer une même commande avec plusieurs interpréteurs (ça peut être pratique pour vérifier que des tests passent correctement avec plusieurs versions de Ruby). Il est distribué sous licence MIT.
Une autre initiative très récente est Rails Installer. C'est un kit sous licence MIT permettant d'installer le nécessaire pour développer des applications Rails à partir d'un Windows de base. Cela comprend notamment Ruby 1.8.7, Rails 3, Git 1.7 et SQLite 3. C'est donc une solution idéale pour permettre à vos amis d'essayer Rails sans être découragés par l'installation.
Gérez vos projets avec Redmine
- Prise en charge de plusieurs projets ;
- Contrôle d'accès avec un modèle flexible de rôles ;
- Gestion avancée des tickets ;
- Diagramme de Gantt et calendrier ;
- Publication de news, documents et gestionnaire de fichiers ;
- Notifications par emails et flux ATOM ;
- Wiki et forums par projet ;
- Outil de suivi du temps ;
- Champs personnalisables pour les tickets, suivi de temps, projets et utilisateurs ;
- Intégration avec plusieurs SCM : SVN, CVS, Git, Mercurial, Bazaar et Darcs ;
- Création de tickets par email ;
- Possibilité de se brancher sur de multiples annuaires LDAP pour l'authentification ;
- Traduction dans 34 langues dont le français ;
- Extensible grâce à ses greffons ;
- Et plein d'autres choses encore...
Redmine est écrit en Ruby on Rails et vient de sortir en version 1.1. Vous pouvez l'essayer sur le site officiel ou sur la demo.
Apprendre à programmer avec Hackety Hack
Hackety Hack est un environnement en Ruby, sous licence MIT, pour apprendre à développer. Il s'adresse aux débutants et propose des leçons pour coder en quelques lignes des choses fun.
Le projet a été initié par Why the lucky stiff, un célèbre hacker Ruby et a été repris par une équipe menée par Steve Labnik. La version 1.0 vient de sortir pour Noël et ce fût également l'occasion de la mise en ligne du nouveau site web.
D'un point de vue technique, il fonctionne avec le framework Shoes et tourne sur les plateformes GNU/Linux, Windows et Mac OS X. Le code écrit au cours des leçons est du Ruby et utilise également Shoes.
Apprendre un langage de programmation par an
L'année 2011 va bientôt arriver et je souhaite partager avec vous quelques suggestions de langages pour ceux qui voudraient suivre ce conseil :
- Ruby (disponible sous Licence Ruby et GPL) reste mon langage préféré et je ne saurais trop vous conseiller de le découvrir !
- Reia (disponible sous licence MIT) est un langage avec une syntaxe inspirée de Ruby qui tourne au-dessus de la machine virtuelle d'Erlang, permettant ainsi de profiter du meilleur des deux mondes.
- Go (disponible sous Licence BSD) est un langage assez jeune mais déjà très intéressant, avec notamment la programmation concurrente à base de Goroutines.
- Io (disponible sous Licence BSD) est un langage de programmation qui s'appuie sur les prototypes, avec des inspirations venant de Smalltalk, Self, Lisp et Lua.
- Scala (disponible sous Licence BSD) pourrait être le futur pour les développeurs Java et propose déjà des avancées très pertinentes comme son modèle d'Actors ou son travail sur le typage.
- F# (disponible sous Licence Apache) est un langage de programmation fonctionnelle, fortement inspiré d'OCaml et issu des laboratoires de Microsoft.
Au fait, je n'ai pas encore choisi quel langage j'allais étudier en 2011, donc n'hésitez pas à défendre votre langage favori dans les commentaires ;-)
Rubygems.org, So Nice et Rubinius
So Nice est une application web pour contrôler iTunes, Rhythmbox ou MPD. Elle est développée en Ruby avec Sinatra et disponible sous licence WTFPL.
Rubinius est une implémentation du langage de programmation Ruby, sous licence BSD. La version 1.2.0 vient de sortir avec :
- Passage à LLVM 2.8
- Améliorations des performances
- Vérification du bytecode (particulièrement utile avec l'arrivée d'autres projets utilisant la machine virtuelle de Rubinius)
- Des optimisations, notamment de la consommation mémoire
- Query Agent, un nouvel outil pour débugger et remonter des informations de bas niveaux (statistiques sur le Garbage Collector par exemple)
- Et autres améliorations et correctifs.
Reia, un langage fortement inspiré de Ruby
Reia est un langage de programmation qui cherche à prendre le meilleur des 2 mondes (licence MIT). Le code en reia ressemble à s'y méprendre à du code Ruby, mais il s'exécute sur la machine virtuelle d'Erlang. Voici à titre d'exemple le très classique Hello World :
"Hello world!".puts()
Pour le moment, il n'y a pas encore de version officielle de reia. Si vous souhaitez l'essayer, il vous suffit de cloner le dépôt git, d'avoir Erlang et Rake installés puis de lancer rake.
Campagne de documentation Rails, RubyDrop et Refinements
Ryan Bigg est l'auteur de plusieurs guides Ruby on Rails, écrit un livre sur Rails et participe au développement de nombreux gems Ruby. Il a lancé un appel à dons pour lui permettre de passer du temps à écrire de la documentation pour Rails. Le choix des sujets se fera parmi les suggestions proposées publiquement.
À la dernière RubyConf, Shugo Maeda a parlé des Refinements, qui devraient arriver dans Ruby 2.0. En Ruby, il est possible de faire ce que l'on appelle du monkey-patching : réouvir une classe déjà définie pour lui ajouter de nouvelles méthodes, voir modifier les méthodes existantes. Cela peut être très pratique mais peut très facilement devenir une source de bugs. Par exemple, si deux bibliothèques ajoutent toutes les deux une méthode camelize sur la classe String et que ces méthodes se comportent différemment, alors une des deux bibliothèques va utiliser l'implémentation de l'autre avec un comportement qui n'est pas celui attendu. Les Refinements pourraient être une solution pour corriger ce problème en limitant la portée de ces modifications.
Je profite également de cette dépêche pour annoncer la publication de la première revue mensuelle sur Ruby France.





