Category: Opensource

Bonne résolutions 2011 : quelques mises à jour de nos outils sont à prévoir

Posted by – January 6, 2011

Quelques sorties de nouvelles versions, programmons vite les mises à jour :

  • ORM : NHibernate 3.0 : Linq, Lazy property, memcached, QueryOver API pour les requêtes Criteria, un billet suivra sur certaines des nouveautés,
  • IoC : Castle Windows 2.5.2 : .NET 4.0, réduction à seulement 2 assembly (au lieu de 4), et d’autres améliorations,
  • Wiki : dokuWiki Anteater : améliorations de l’API XmlRPC (ajout de la recherche plein texte dans les pages du Wiki), recherche sur le Wiki plus pertinente,
  • il me plait bien ce moteur de rendu Razor d’ASP.NET MVC 3 R2

Y’a plus qu’à.

Quelques sorties 2010 : Castle Windsor, Dokuwiki, Sympa, jQuery

Posted by – January 24, 2010

Quelques mises à jour à effectuer pour 2010 :

  • IoC : Castle Windsor 2.1.1 : ajout du support Silverlight, performances, …vous avez des besoins ? n’hésitez pas à les exprimer sur UserVoices,
  • Wiki : bon, pas vraiment 2010 mais presque : dokuwiki Lemming du 2009-12-25 patch c : moteur wiki que j’affectionne car il reste simple (sans base de données) et offre une extensibilité appréciable (même s’il est développé en PHP), voir les changelog
  • Listes de diffusion : Sympa version 6.x : SYMPA est un serveur de listes de diffusion, doté d’un API SOAP, et d’innombrables fonctionnalités : authent/ SSO (CAS), moteur de modèles, antispam, hautes-performances / réparti, listes dynamiques, sources de données diverses et variées (LDAP, SQL Server/…, fichiers locaux ou distants, …) Il est maintenu (développement en Perl) par des français et utilisé de plus en plus aux US.
  • javascript : à moins d’avoir eu une grosse coupure Internet, si vous n’êtes pas au courant : jQuery 1.4

Opensource : marketing…et argument de vente

Posted by – February 9, 2009

[EDIT] Mea culpa, il semble que j’ai eu un jugement un peu trop hâtif concernant XWiki et son modèle de développement. Les 3 commentaires, dont 2 de la société XWiki nous expliquent et infirment ma critique sur ce qui ne me semblait pas être de l’Opensource, ce qui est bien entendu erroné , suite à ces explications et les *bons* liens, c’est bel et bien un projet Opensource. Honte à moi de ne pas avoir plus poussé mes recherches, d’autant plus que XWiki paraît être un très bon produit, on mettra ça sur le coup de la fatigue ou de la vieillesse. Je comprends tout à fait votre “colère” et ce sentiment d’injustice face à ma grossière erreur d’appréciation. A ma décharge, c’est vrai qu’entre le .com et le .org, l’erreur est rapide. Egalement, je n’entends pas Opensource = gratuit (contrairement à beaucoup de personnes), beaucoup de sociétés font commerce, par les services ou des versions améliorées d’un produit, et c’est tant mieux, il faut que vive le business, je n’ai pas de souci avec ça. Avec toutes mes plates excuses pour ce billet vous concernant en tout cas. J’enlève le texte qui remet en cause votre produit. Le débat n’en reste pas moins réel quant à l’argument marketing sur certains produits dits Opensource. 

More

Ruby et Merb inside : initialisation

Posted by – January 10, 2009

Préambule

Cette année, parmi mes bonnes résolutions, j’ai décidé de me mettre (réellement) à Ruby, tant qu’au niveau personnel que professionnel. Pourquoi ? tout simplement qu’apprendre un langage c’est sympa, fun et intellectuellement intéressant , d’autant plus si ce dernier est prometteur.

Parmi les langages dits interprétés, dans ma vie professionnelle, j’ai pu m’exercer au développement PHP ou Perl (encore maintenant, cela peut m’arriver de taper quelques lignes), que ce fût pour le développement Web ou tout simplement le développement de scripts. Perl qui supporte l’approche objet reste une catastrophe pour y arriver, cela devient vite illisible.

Aussi, regarder vers d’autres langages- dynamiques (ie : vs. C#) – me paraît une démarche toute naturelle.

En plus d’apprendre un nouveau langage, Ruby semble être un candidat tout approprié, tant pour son élégance que pour sa puissance. Il y a 2 ans, j’avais assisté à la conférence Paris on Rails, et l’ensemble (Ruby + Rails) m’avait particulièrement attiré. A une époque, Python me titillait les doigts, mais, décision toute personnelle, la syntaxe me déplaisait, injuste et totalement partial, oui je sais – même si Django est en vogue comme framework MVC ou encore Google app engine ou bien…Zope…non je plaisante ;-) , mais la syntaxe Python, non, vraiment, c’était au-dessus de mes forces. Un langage est souvent une affaire de coup de cœur.

More

Ruby In Steel Free

Posted by – October 7, 2008

L’éditeur de RIS (“Qui es-tuuuuuuuuuuuuuuu ?”…sic…je sors) offre une édition de leur produit pour Visual Studio 2008, c’est ici.

Pour rappel, Ruby In Steel est un add-in Visual Studio qui permet de développer en Ruby sous cet IDE (coloration syntaxique, mode console, …).

Vous aurez besoin pour cette version, d’ IronRuby et certainement (même si c’est inclus dans RIS), de Ruby Installer.

Pour s’amuser, on peut essayer ces bouts de code :

Sites à fort trafic : PHP, RoR, il y a encore des progrés à faire

Posted by – June 3, 2008

PHP et le multi-threading

Je discutais avec un copain au sujet d’une redirection 404 (pour l’existence ou non d’un fichier) sous Apache, la solution serait de rediriger vers une page PHP (en fait, la bonne solution serait d’utiliser les rewriting rules, dont ce n’est pas le sujet ici). Cet ajout de page paraîssait poser un problème de performances (sous eZPublish le bien nommé, sur un site à fort trafic). Je googlise pour voir Apache, et ses modes d’exécution. 2 modes : MPM prefork ou MPM worker, le 1er hérité de la version 1.x, le 2è, nouveauté de la version 2.x d’Apache, et permet le multi-threading, ce qui est bien mieux au niveau de la consommation de ressources (mémoires notamment) et des performances d’exécution.

Lighty est souvent conseillé pour répondre aux problèmes de perf. d’Apache, ou Nginx pour servir des fichiers statiques, ce dernier étant très performant pour remplir cette fonction…seulement ils n’offrent pas toutes les capacités des rewriting rules, dilemme.

Pour rappel, Apache a un pool de process, pour chaque requête HTTP (ou ~session). Sur un site à fort trafic, on imagine très vite le coût que va demander l’ensemble des process du pool (ajusté en conséquence) en termes de mémoire, le mode worker (multi-threadé) serait alors plus approprié, et est une évidence évidente comme dirait ma femme. Le mode worker doit être précisé lors de la compilation, prefork étant le mode par défaut founi (voir cet intéressant article), mais le seul problème étant que PHP 5 n’accepte pas par défaut le multi-threading (il n’est pas thread-safe)…sic…obligé d’utiliser l’ancien, le très old-school prefork, à moins d’utiliser FastCGI, ce qui n’est pas représentatif de l’ensemble des LAMP – comme on risque de me sortir ben si, regarde Facebook, eux, c’est du PHP…sans doute oui, mais leur infrastructure a été réglée aux p’tite oignons pour répondre à la charge.

Je trouve ça très (très) étonnant et fou qu’à notre époque, qu’une techno. ne puisse pas gérer de façon simple (ie : qu’il faille déployer une énergie sans limite pour régler ça…) la problématique du multi-threading, la base de toute plateforme Web, qu’on me l’explique SVP.

Rails

Sur les différents blogs que je visite, revient régulièrement la question de performance, des problèmes de stabilité du serveur Web ou des soucis d’hébergement mutualisé (ie : comment relancer une application sans relancer tout le serveur Web…et donc toutes les applis. sur celui-ci). Même si des solutions se profilent à l’horizon pour régler les questions de consommation de ressources ou de mutualisation de sites par le biais de mod_rails , même si certains sont moins optimistes.

Je ne voudrais pas jouer les Cassandre, mais pour comprendre, qui pourrait m’expliquer pourquoi en 2008, toutes ces questions de perf., stabilité, hébergement ne soient toujours pas résolus, qu’il faille dépenser beaucoup de temps pour régler ces points, afin d’arriver à un niveau d’industrialisation / de production des applications Web suffisant (et nécessaire). Même si des expériences, des tentatives, des essais sont engagés, pourquoi cela parait-il si compliqué ? Est-ce tout compte fait une Arlésienne les promesses de DHH, un coup marketting monté en mayo par des killers applications, comme le soupçonnent certains ?

.NET Performer

Dernière petite chose, que j’avais dans mes innombrables favoris, un plugin Rails pour le 1er avril 2008 qui simule le modèle ASP.NET, un brin d’humour, mais beaucoup d’ironie voire du cynisme…quelques réponses aux points soulevés par l’article.

En préambule, l’auteur a bien eu raison après 5 ans d’abandonner .NET, être mauvais dans une techno. c’est une chose, ne pas l’admettre, c’est de la mauvaise foi. Pour sa décharge, sans doute qu’il venait du monde PHP et qu’il a, sans réfléchir ou par manque de temps, voulu appliquer le modèle PHP à celui d’ASP.NET, càd. développer des pages ASP.NET comme on en développe en PHP, autrement dit, de la mauvaise manière.

  • Feature 1 : Viewstate : dans les pages consultatives, on le désactivera bien évidemment – même sur certains formulaires, on pourra également s’en passer, et on remerciera le PostbackData qui permet en grande partie de faire persister les valeurs d’un formulaire (Textbox, …). Pour rappel, le Viewstate permet de conserver les valeurs des données des contrôles lors du POST de la page (ie : propriétés déclarées dans ces derniers ou celles sauvées manuellement comme stockage). Un excellent article sur le sujet : Le Gray’s Anatomy du Viewstate qui met fin à toute ambiguité et surtout certaines idées reçues véhiculées, et on pourra toujours le compresser si besoin, même si avec une bonne utilisation du Viewstate devrait suffire.
  • Feature 2 : dans un environnement en production, on pensera bien évidemment à se brancher sur l’évènement Error de la page (on pourra créer une classe mère utilitaire pour déployer à l’ensemble des pages qui hériteront de cette classe cet évènement) : cela a le mérite de pouvoir faire une belle page “Veuillez nous excuser, bla, bla” à la charte pour l’afficher aux internautes, et entre-temps de nous envoyer par mail, toute la pile de l’erreur survenue, la page, l’id de l’utilisateur le cas échéant, ni vu, ni connu, tout le monde y trouve son compte.
  • Feature 3 : différents points de vue sur le moment de valider une saisie : est-ce aux entités de l’ORM de le faire (ie : ActiveRecord), ou bien la couche présentation ? je suis d’avis (forcément) de les contrôler sur le formulaire – même si on pourra discuter du pour ou contre – on fera évidemment un contrôle réutilisable pour gérer l’affichage des erreurs (ok, ko). Les entités étant utilisables dans l’absolu ailleurs que la couche présentation, je compte plutôt sur les contraintes d’intégrité, dont c’est le travail, pour me vérifier la cohérence de mes données. En amont, bien entendu, on ne fera jamais confiance envers l’utilisateur et les données saisies, les contrôleurs sont faits pour ça, de vérifier (un article intéressant sur ActiveRecord).
  • Feature 4 : has been, voir WCF ou ADO.NET Data Services (codename Astoria). Dans l’absolu, en quoi gêne l’extension .aspx ?
  • Feature 5 : has been – ce n’est plus le cas depuis 2005, les pages créées sont XHTML 1.0 compliant. En préviligiant l’utilisation des Masters Pages, qui permettent d’avoir un thème de page, et surtout d’avoir un layout et des déclarations uniformes (JS, composants, …) pour toutes les pages qui se basent sur une Master Page.
  • Feature 6 : sur la longueur des ID des contrôles : je lui accorde au moins ce point, qu’ASP.NET génère le nom selon l’arborescence est gênant du point de vue du nombre de caractères transférés. Mais bien sûr, le mauvais exemple est donné avec l’hidden, si on doit stocker des valeurs, autant le faire dans le Viewstate (optimisé en conséquence). Pour l’Ajax, avec Prototype, on accédera à la valeur d’un contrôle en utilisant $(‘<%=moncontrol.ClientID%>’). C’est bien mais pas suffisant. Pour une question de réutilisation, on veillera à développer des composants (ie : user controls) qui seront réutilisables soit dans l’application Web soit dans d’autres applications Web hébergées sur la même plateforme (projets en WAP) . Ainsi nous ne serons pas dépendants d’une librairie Javascript, embarquée et générée pour la page utilisatrice du composant utilisant Ajax (encapsulation et abstraction). Les répertoires virtuels sont nos amis pour réutiliser des composants partagés entre applications.

Amusant en tout cas, je donne gracieusement un cours sur les bonnes pratiques du modèle ASP.NET à cet affranchi ;-)

Ceux qui prônent une idéologie philosophie soi-disante libre pensent bien souvent détenir LA vérité et l’unique voie à prendre, en deviennent à force arrogants voire intolérants et…aveugles, le propre des communautés ?

Diatribe finie – retour au mode constructif.

Sortie de SYMPA v5.4

Posted by – March 27, 2008

Après 10 mois de développement, SYMPA, LE serveur de listes vient de sortir dans sa version 5.4. Parmi les évolutions notables, on citera notamment :

  • la modification de la gestion de pas mal de variables jusqu’à présent stockées sous forme de cookies, ceci par l’intermédiaire de variables de sessions
  • l’apport de formulaires extensibles pour la gestion des abonnés : ajout de champs autres que Email, Nom. Ces champs sont gérés sous forme d’un modèle au format XML, stocké en base.
  • son lot de bug fix et de remaniements

SYMPA est un serveur de listes [écrire en Perl], Opensource, qui contrairement à Mailman, a une communauté très active (française ou anglophone) et évolue sans cesse.

More

“putain, 15 ans”, linux, I’m still there

Posted by – February 28, 2008

En lisant la genèse (ou directement voir le thread sur les ng), je me suis dit, “putain, il y a 15 ans” je commençais à m’intéresser à cet OS, par curiosité, obligation, intérêt philosophique et passion. Ce qui réconforte également, c’est que ce choix a été bien vu et pérenne, il suffit d’y croire, d’avoir des convictions et prendre des risques [calculés] parfois. Même si je me suis un peu écarté du chemin (environnement Microsoft et opensource ce jour), dans les entreprises dans lesquelles je suis passé, j’ai essayé à chaque fois de mettre en place 1 ou plusieurs serveurs Linux [pour le Web1 et la messagerie]. Ces actions sans prosélytisme, sectarisme ou idéologie, mais simplement guidé par l’envie et la passion, malgré le risque pris à l’époque, Linux était encore jeune avec une faible communauté.

Alors, comment je procédais en 19932 ? un p’tit coup de revival

La distribution était la slackware, qui tenait sur à peine 50 disquettes (sic), X-Window compris. Autant dire que l’installation était longue…sur mon [pauvre] PC 386 sx 253, avec mon disque de 80 Mo…oui, à l’époque, le giga n’existait pas.

L’avantage, lorsqu’on voulait compiler, c’était de bien faire attention à sa configuration, vu le peu de ressources disponibles en termes de mémoire ou de disque, et qu’une compilation du noyau prenait bien 2 heures.

Alors pourquoi avoir commencé ? tout simplement parce que encore étudiant, j’apprenais le C, et que les pointeurs mal gérés sous DOS cela faisait souvent planter le portable ou le PC…sous Linux, un autre étudiant m’ayant convaincu, toute mauvaise gestion provoquait un simple coredump…quel bonheur ;)

A partir de 95, ce fut l’occasion de se lancer dans le développement Web / Internet, en commençant par des CGI en C (mais tout de même à l’aide d’une libraire), puis en Perl, pour poursuivre par PHP/FI (l’ancêtre de PHP). Côté bases de données ou fichiers indexés, un commencement par C-ISAM, puis mSQL pour finir par PostgreSQL. Aux prémices du Web, on se débrouillait avec les outils de l’époque, et ceux-là étaient Opensource, c’est plus simple aujourd’hui.

Aujourd’hui, toujours une certaine passion, même si mon coeur balance également du côté de .NET, peut-être qu’avec Mono, je pourrai allier un jour les 2 mondes, à suivre.

Merci Linus, merci à tous les projets Opensources (Apache, lighty, Mysql, Ruby, Perl, …) et toute la synergie et l’émulation qui s’en dégage, nous pouvons que leur rendre hommage.

1 le tout 1er fut sous NCSA l’ancêtre d’Apache

2 quitte à jouer au vieux con…aucune nostalgie bien entendu dans la suite, c’est bien mieux aujourd’hui qu’hier.

3 mais heureusement que je l’avais overclocké en 40…;)