Hébergement, Wordpress et performance

by matthieu 6/30/2009 11:14:00 PM

L’informatique est un monde vaste qui recouvre beaucoup de métiers différents, mais c’est quand on cherche un hébergement pour un site internet qu’on s’en rend compte vraiment.  Si on passe les offres mutualisées pour parler directement VPS ou serveurs dédiés, il existe encore de nombreux hébergeurs. Et puis même si vous êtes développeur, quand il s’agit de machines, il faut un temps d’apprentissage non négligeable pour appréhender les détails. Lorsque des problèmes surviennent n’oubliez pas que les administrateurs systèmes ne sont pas des développeurs donc souvent ils peuvent vous aider sur les symptômes (c’est déjà beaucoup) mais n’écoutez pas trop leur diagnostics.

Déjà il est préférable de se situer dans la même zone géographique que vos visiteurs (il en va de même pour vos DNS) surtout si vous avez un domaine en .com qui ne donnent aucun indice au moteur de recherche quand à votre localisation.

J’ai choisi Wordpress pour un blog car même si je ne suis pas à l’aise avec le langage PHP (depuis ça va mieux) ce moteur de blogs est un des plus populaires donc avec des nouvelles versions (et des patchs) régulièrement et un écosystème vivant (pour des plug-ins, des tutoriaux, les forums etc.). Mais cette facilité vient avec un prix : la performance.

Il existe pas mal d’articles sur les performances de Wordpress et notamment son usage du CPU. Et je dois dire que j’ai mis du temps à trouver les bonnes ressources. Beaucoup de micro-optimisations sont possibles : enlever les appels à des fonctions comme bloginfo(‘url’) en préférant les urls en dur, éviter les plug-ins qui sont gourmands en requêtes SQL, utiliser un système de cache au niveau de Wordpress comme WP Super-Cache.

Toutefois voici quelques informations glanées après des recherches approfondies :

  • regarder les paramètres recommandés par WP pour MySql trouvé via le blog de Coding Horror
  • cette présentation donnée par l’équipe de WP est précieuse, notamment sur l’usage du système de cache APC de PHP
  • Nous avons une partie indépendante de WP et nous utilisons memcached pour garder en mémoire des infomations souvent consultées et très rarement mises à jour. Ces deux liens sont intéressants pour l‘installation si vous êtes hébergés avec CPanel et Cent OS (plus il existe une page pour voir l’état du cache)
  • Attention APC ne semble pas compatible avec le module suPHP (qui permet de faire exécuter PHP par un user spécifique pour des raisons de sécurité) car c’est un mode CGI , un process par requête, donc le cache n‘est pas partagé.
  • Sous cPanel, utiliser easyapache (/scripts/easyapache) si vous faites une erreur, cela reconfigure Apache + PHP de façon très simple.
  • Si vous n'êtes pas en hébergement partagé suPHP n'est pas recommandé car plus lent que le mode DSO, il faut juste configurer le user Apache au lieu d'utiliser le user nobody

Premier coding dojo

by matthieu 6/28/2009 10:59:35 AM

Jeudi dernier j’ai fait mon premier coding dojo lors d’une rencontre de la communauté Alt.NET de Montréal. Comme son nom ne l’indique pas c’est une façon de pratiquer le partage de connaissance autour du code. Nous avons utilisé la manière ”Randori Kata” qui revient à coder à deux, l’un ayant le clavier l’autre suggérant, aidant, critiquant. On change toutes les 5 à 7 minutes les protagonistes avec des personnes présentes et volontaires.

Cela se fait dans la bonne humeur et le sujet de cette session, le Test-Driven Development, se prête bien aux discussions : le TDD étant une façon de coder et surtout de faire réfléchir au design avant l’implémentation via les tests, on jasse beaucoup :) Deux heures bien remplies dans un agenda de développeur, vous avez tout l’éte pour vous inscrire

Merci à Maxime et Eric, les organisateurs !

Notifications sur iPhone 3.0

by matthieu 6/23/2009 2:14:19 AM

Une des grandes nouveautés de la version 3 du système d’exploitation sont les notifications.

Apple ne donne pas le droit à une application de tourner en tâche de fond, donc en quittant une application par exemple de messagerie instantanée pour aller consulter votre courrier ou visiter une page web, vous ne la minimisez pas conme sur un ordinateur de bureau ou portable, vous perdez vos discussions en cours.

Je n’ai pas vu d’explications officielles précises mais le fait que l’iPhone n’est que 128 Mo de RAM (256 pour le nouveau modèle) milite pour cette exclusivité sur cette ressource rare surtout pour un appareil avec une interface aussi riche. Je ne connais pas Android ou BlackBerry mais Windows Mobile a un système de warning à plusieurs niveaux de criticité envers les applications lorsque la mémoire vive disponible est basse.

Depuis la dernière version les applications peuvent envoyer des notifications à l’appareil, ici un exemple avec Beejive une application de messagerie instantanée :

exemple de notification

Comment cela se passe sous la capot ? Voici un résumé du worflow entre l’application, les serveurs d’Apple et votre serveur :

  1. L’utilisateur lance l’application
  2. L’application s’enregistre auprès des serveurs de notification d’Apple
  3. Ces derniers générent  un token applicatif à partir des informations de l’application et de l’iPhone et renvoie cette information à l’application.
  4. L’application transmets ce token à son serveur
  5. Le client quitte l’application par exemple
  6. Le serveur peut alors envoyer des notifications à l’utilisateur via les serveurs d’Apple avec le token précédemment enregistré sous la forme d’un son, badge (chiffre affiché sur l’icône de l’application) ou d’un court texte.
  7. L’utilisateur choisit de fermer la notification ou de lancer l’application concernée

En dessin :

schema dy système de notifications

Cela marche très bien avec l’application testée. On ne peut pas pour l’instant spécifier comme on le fait naturellement sur un ordinateur quand est-ce qu’on quitte une application et quand on la minimise. On peut bien sûr désactiver la notification mais ce n’est pas très pratique. Beejive contourne un peu le problème en laissant l’utilisateur spécifier un temps (de qqles minutes à 24h) au bout duquel les notifications ne sont plus transmises. Je pense qu’il y a une marge de progession pour le système de notifications (sans parler ici de la consommation supplémentaire induite par la connexion IP permanente entre l’iPhone et les serveurs d’Apple).

OS iPhone 3.0

by matthieu 6/17/2009 9:16:49 AM

Parmi les nouveautés de cette version du système d’exploitation celle de la recherche dans l’application de courrier est une des plus attrayantes pour moi.

La recherche avec filtre s’effectue d’abord en local (sur les courriers contenu sur l’iPhone) puis on peut choisir de continuer sur le serveur, i.e. dans les archives qui sont sur le serveur (dans mon cas exchange).

Un exemple en images :

 

iPhoneSearch (2)iPhoneSearch (1) iPhoneSearch (3)

Categories : coding

Tags:

From AZERTY2QWERTY

by matthieu 6/12/2009 10:43:09 AM

Ayant un ordinateur portable (DELL e6500) avec un clavier français AZERTY l’adaptation vers un clavier QWERTY aurait éte dure. Imaginez : travailler la journée  avec un clavier QWERTY puis le soir revenir au clavier AZERTY. J’ai essayé quelques jours avec le clavier canadien (c’est simplement un clavier US avec une touche pour le e accentué) Microsoft Desktop 4000 mais le passage entre les deux fomes est trop dur.

Dell permet à ses clients de remplacer eux-même certaines parties de leur ordinateur, et le clavier en fait partie. Le manuel explique le comment, bien que l’étape qui requiert d’énlever l’écran est superflue… (et très chiante).

extrait du manuel de DELL pour démonter le clavier

Voici en image l’opération :

IMG_0795

Cette étape n’a pas servi à grand chose ….

IMG_0796

Au revoir AERTY :

IMG_0797

Bonjour QWERTY :

IMG_0798

Categories : coding

Tags:

Applying Domain-Driven Design and Patterns: With Examples in C# and .NET - Jimmy Nilsson

by matthieu 6/8/2009 7:20:03 AM

couverture du livre

Etant interessé par le DDD et ayant déjà lu le livre d’Eric Evans qui est un peu la bible dans ce domaine, j’ai appris l’existence d’un autre ouvrage sur la question, qui plus est avec des exemples en C#/.NET. Il date de 2005, une éternité dans le secteur de l’informatique ce qui n’est pas gênant en soit vu qu’on parle de concepts. Mais il est vrai que si 4 ans auparavant le TDD, l’intégration continue étaient des choses “nouvelles” aujourd’hui leur adpatation est sinon comprise voire acquise.

J’ai bien aimé le cheminent adopté dans le chapitre 4 : en partnat d’une liste d’exigences on construit le modèle du domaine, chaque exigence servant d’exemple des problématiques classiques comme la validation, la recherche par critères, etc. Mais c’est aussi là que la confusion commence car le modèle d’ensemble est rarement abordé. On se perd un peu dans la succession des zooms faits sur telle ou telle parties.

Je dois dire que l’aspect .Net/C# est léger puisque d’une part on est en 2005 et que je trouve que les forces de C# vis-à-vis du DDD ne sont pas encore présents (comme les lambda expressions, Linq) et d’autre part on ne voit pas une architecture .NET mais un ensemble de frameworks comme NHibernate ou Spring.NET / Windsor pour l’IoC (pattern très bien abordé comme le reste des patterns rencontrés dans le livre).

Je suis un peu déçu même si ce livre constitue un complément très appréciable du livre Evans. Si c’est pour découvrir le DDD, je ne conseillerai pas cet ouvrage mais pour le DDD appliqué avec les bonnes pratiques dans un environnement .NET

Categories : readings | coding

Tags: , ,

Mix09, le grand bazar de Microsoft pour les développeurs web

by matthieu 3/18/2009 5:44:06 AM

Mix devient une conférence importante dans le monde Microsoft. Destinée aux mondes des professionnels du web, elle a servi de tremplin pour lancement de Silverlight. Cette édition n’est pas en reste :

  • ASP.NET MVC 1.0 en version finale
  • Azure / SDS : on attend les détails lors des sessions mais PHP est supporté via FastCGI, on attend avec impatience le détail sur le tournant relationnel de SDS. Un nouveau portail a vu le jour. On notera aussi le support du niveau .NET Full Trust (nécessaire pour certaines librairies tierces) ainsi que de la géo localisation du déploiement
  • Expression Blend, l’outil de développement autour de Silverlight avec SketchFlow qui permet de prototyper (et de partager le résultat) mais aussi une fonction d’import Photoshop/Illustrator qui ressemble beaucoup à Catalyist/Thermo
  • Bien sûr une tonne d’annonces autour de Silverlight 3, pas mal autour des nouveaux codecs vidéo/audio supportés ainsi que des nouveaux effets, méthodes de rendu etc. Je retiendrai deux éléments plus orientés développement : le support de Mac pour le développement avec le projet Eclipse4SL et surtout la possibilité de faire tourner les applications en-dehors du navigateur (et en mode offline) pour Windows et Mac OSX. Comme le dit Miguel de  Icaza, WPF va avoir du mal à concurrencer Silverlight maintenant.
  • Des trucs pas très clairs comme .NET RIA services, il y a un pdf de 100 pages mais il va falloir quelques jours pour digérer ça …
  • Que serait le web sans les serveurs ? L’équipe IIS en profite pour publier des modules pour IIS 7.

Le flux vidéo du keynote de Scott Gutherie sur le site officiel était accompagné des tweets taggés MIX09, très intéressant pour obtenir des urls avec des infos complémentaires.

NHibernate 2.1 première alpha

by matthieu 3/15/2009 12:27:44 AM

NHibernate est le framework ORM du monde .NET, projet open source qui a connu beaucoup de maisons, la dernière en date étant nhforge.org. Il a bien sûr bénéficier de la réputation de sa version Java (cette alpha correspond à la version 3.2.6 d’Hibernate en terme de fonctionnalités), mais a depuis acquis son propre eco-system avec une communauté de développeurs très grande. Le release note est toujours aussi impressionnante, l’un des principaux apports est en fait un abandon : celui de la dépendance vers Castle pour la génération de proxy (les fameux proxies du lazy-loading).

Le grand absent de cette version est Linq. Il n’est pas très clair si on verra un vrai provider Linq (chose pas très aisée) qui remplacera l’implémentation actuelle basée sur l’API Criteria.

S#arp Architecture, le pet shop DDD du monde .NET

by matthieu 3/13/2009 10:59:27 PM

logo du projet

L’article de Bill McCafferty sur les bonnes pratiques dans l’utilisation de NHibernate s’est peu à peu transformé en un projet (et un framework) à la PetShop : Sharp Architecture.

La dernière release (RC2) comporte en plus du code, un projet d’exemple autour de la base Northwind et un document de 50 pages sur les différentes couches : leur implémentation, les outils et frameworks utilisés sans oublier les considérations transverses comme la gestion des transactions. Les tests unitaires ne sont pas en reste avec l’utilisation de SQlLite pour les test de la couche de données, Rhino Mocks.

Cela peut paraître un peu trop liste de courses mais l’évolution du projet sous l’influence des discussions sur le forum dédié est intéressante et garanti je trouve un bon équilibre entre pragmatisme et pédagogie.

SQL Data Services abandonne REST et SOAP

by matthieu 3/12/2009 6:14:44 AM

Depuis le début on avait un peu de mal à distinguer Windows Azure Storage et SDS. Ce dernier va fortement évolué dans la prochaine beta puisque ses API clientes actuelles (REST et SOAP) vont disparaître au profit de TDS, le protocole de Microsoft pour communiquer avec SQL Server. Le côté positif réside dans le support d’une API programmation très proche du SQL qu’on connait actuellement. La conférence MIX09 sera l’occasion d’en connaître un peu plus. On y perd le côté ouvert/interopérable de REST/SOAP mais Microsoft annonce le support de PHP, Ruby et Java.

Ceci est très étonnant car la “mode” est plutôt aux bases de données cloud “schema-less” (ou entités flexibles) comme BigTable ou AmzonDB. Azure reste dans cette optique mais SDS fait un changement de cap à 180 degrés.

Categories : coding

Tags: , ,