K3 Blogue 2.0 | Marketing Internet, E-Commerce, E-Communauté, Web 2.0
K3Média de retour de PHP Québec 2008
Bruno Caillé, le 19 mars 2008 à 11:25 dans Logiciel libre, Programmation, Service Web, Technologie, Web 2.0, ÉvénementTrois membres de l’équipe de développement de K3Média représentaient l’entreprise à la dernière conférence PHP Québec ayant eue lieu à Montréal. Jérôme Bascoul, Mathieu Ducharme et moi-même. Ce fut une belle réussite, l’événement faisant salle comble pour la première fois, ce qui démontre encore une fois l’implantation croissante de PHP dans la province.
Dans ce billet, je livrerai une petite synthèse de ma visite au Sofitel. Évidemment, sachez qu’il y a une énorme quantité d’information à notre disposition dans ce type d’événement. Chaque personne vient donc y chercher ce qui lui semble pertinent. En ce qui me concerne, je voulais rencontrer les vrais "pros". Ceux qui travaillent chez MySQL, qui ont les deux mains dans le noyau de PHP, qui produisent les innovations techniques nous permettant de demeurer créatifs et de livrer des applications de qualités. À ce chapitre, je n’ai pas été déçu.
Voici donc, chronologiquement, les détails :
JOUR 1 :
Performance-minded MySQL for PHP Developpers
Jay Pipes
Si la modélisation de base de données vous intéresse, sautez sur le dvd de cette conférence aussitôt qu’il sera disponible. Ou encore, cliquez ici pour en avoir un résumé de l’auteur. Jay Pipes travaille chez MySQL et il ne se contente pas de livrer les astuces éculées sur la bête. Il connaît visiblement le fonctionnement des différents engins (MyIsam, InnoDB…) et décrit en détail le fonctionnement interne d’une requête dans chaque cas. En plus de citer de multiples cas d’optimisation concrets de requêtes SQL ou de structure de données. Par exemple, les avantages à utiliser de multiples engins selon les tables et leur contenu, le partitionnement de données, la détection d’index inutiles, etc… Très intéressant et très pertinent.
Databases and SQL (un)patterns
Lukas Smith
Cela doit être difficile de voir la majorité de ses points se faire couvrir dans la présentation précédente. M. Smith s’est rapidement rendu compte que sa conférence était redondante avec la première et que plusieurs personnes assistaient aux deux, donc il a légèrement modifié sa présentation pour ajouter des éléments comparatifs entre MSQL, PostgreSQL et Oracle. Bien qu’intéressante, cette présentation n’avait pas la même profondeur que la première.
Rich desktop Applications
Raphaël Rougeron
Je ne savais que penser en lisant le résumé de ce séminaire car il semblait concerner des technologies propriétaires, mais il m’a grandement surpris. En fait, il s’agissait plutôt d’un comparatif entre Adobe Air et XulRunner. Clairement, le formateur penchait pour ce dernier, mais a joué le jeu de la description des deux, exemples à l’appui.
Bien que friand des solutions ouvertes, je dois avouer qu’Adobe air, était assez convaincant. Quelqu’un qui a des connaissances en HTML, Javascript, CSS, Actionscript peut recycler un projet, lui ajouter 2 lignes de codes et en faire une application desktop… impressionnant. L’intégration des différents outils d’Adobe n’est rien pour nuire.
XulRunner m’a semblé essouflé par rapport à la solution d’Adobe. Une syntaxe beaucoup plus aride (trop) pour le résultat escompté, lente à l’exécution, une pénétration du runtime très faible, bref alors qu’Adobe nous offre une solution clé en main, nous avons de l’autre côté une solution qui nous procurera de multiples migraines.
Maintenant XulRunner possède de belle qualités. En plus d’être une technologie ouverte, il y est plus simple de créer des composantes réutilisables (XBL) et de mieux moduler notre application. De plus, avec l’arrivée prochaine de Firefox 3.0, le runtime XulRunner sera inclu avec le fureteur. Ainsi, le tiers des internautes l’auront sur leur station et pourraient potentiellement installer des applications l’utilisant. Le rendu du Javascript sera aussi grandement accéléré donc le problème de vitesse devrait se résorber. Il y a donc un avenir pour cette technologie, qui sert déjà de base aux extensions de Firefox de toute manière.
Je crois que M. Rougeron frappe dans le mille en nous conseillant d’ailleurs de débuter par le développement d’une simple extension Firefox avant d’y aller avec la totale application si l’on veut suivre la voie Xul.
Une partie de cette conférence était consacré aux API REST et RESTFull. Très intéressant.
PECL : The PHP Language Workbench
Sebastian Bergmann
Quelquefois, un séminaire nous parle d’un truc et bien que nous savons que nous ne nous en servirons pas, cela nous fait aboutir sur d’autres choses. C’est un peu ce qui c’est passé avec celui-ci.
De toutes les extensions PECL que nous avons vues, je retiens parse_tree qui permet d’aller chercher toutes les informations possibles et inimaginables en format XML sur unr page PHP. Seulement, sans l’intervention d’un fichier XSLT, ces informations sont inutilisables pour un être humain normalement constitué!
Je trouvais l’idée d’aller chercher les informations sur les pages PHP géniale, mais l’utilisation de parse_tree me semble trop complexe pour le gain d’optimisation que nous pourrions en tirer. J’ai donc trouvé une extension PEAR PHP_CodeSniffer qui me permettra d’aller chercher les optimisations possibles aux pages PHP sur nos serveurs. Belle trouvaille.
Breaking the rules
Morgan Tocker
Je suis toujours impatient d’assister à un séminaire de quelqu’un de chez MySQL. Mais, je dois avouer que j’ai été déçu par celui-ci. Je m’attendais à des notions avançées de dénormalisations par un spécialiste, mais il ne s’agissait que de trucs génériques sur comment épargner son serveur mySQL. En résumé, la plupart des astuces pointaient vers un motto : “Enlever des trucs de votre MySQL, il roulera plus vite.” Ne pas utiliser de constraints, de checks, de foreign keys, épargne bien sûr du travail côté base de donnée, mais il en donnera davantage côté PHP… S’agit-il d’un gain réel tant au développement qu’à l’utilisation? Il n’avait aucun chiffre, benchmark test à l’appui. Bref, je ne suis pas convaincu.
JOUR 2
API Design in PHP
David Sklar
Passionnant, cette conférence. Le développement d’API fait appel à de nouvelles problématiques et cet architecte logiciel de chez Ning nous a livré de judicieuses astuces sur la maintenance de leur propre API.
Alors que dans le commun des développement, il est plus simple d’effacer que d’ajouter, la réalité s’inverse dans le développement d’API. Impossible de supprimmer une méthode sans subir des plaintes des usagers qui l’utilisent toujours. Si vous voulez déprécier un truc, vous le laisser actif combien de temps? Cela peut rapidement devenir un casse-tête.
La mentalité de Ning est de prévilégier l’expérience client au-dessus même du développement. Donc, si une façon de faire peut rendre un client plus heureux, malgré une perte d’optimisation, ce choix sera fait. L’idée est que l’usager ne devrait jamais être frustré par l’utilisation de l’API. Je crois qu’il s’agit d’une bonne ligne de conduite puisqu’un API pourrait être ultra-fonctionnel, mais très difficile à utiliser pour l’usager. Son succès en serait donc affecté davantage qu’avec un léger compromis sur les performances.
Aussi, les méthodes aux longues listes de paramètres sont proscrites car cela perd en clarté et en facilité de maintenance. L’utilisation d’un array est recommandée.
De plus, il est recommandé de débuter les noms de méthodes, de propriétés et de namespaces avec un préfixe identifiant clairement l’API (XN est celui de Ning). Ceci fait en sorte que les gens instinctivement n’altéreront pas ces items.
Comme Ning est un API RESTFull, il leur est facile d’inclure le numéro de la version de l’API demandée dans l’URL et de conserver plusieurs branches de l’API. Ainsi, les usagers utilisant des méthodes dépréciées pourront continuer d’utiliser la version voulue sans qu’elle ne soit "traînée" dans les branches futures.
Comme par exemple :
XN/ATOM/1.0/CONTENT…
Aussi, encore plus qu’ailleurs, l’importance est à la documentation détaillée de l’application. PHPDocumentor est une solution largement utilisée. Les tests unitaires sont aussi primordiaux dans ce type d’entreprise. Ning est récemment passé de Simpletest à PHPUnit pour les capacité accrues de ce dernier. Le fait de pouvoir automatiser des séquences de tests et de déclencher une notification à la moindre défaillance permet de déceler plus facilement une coquille qui s’est glissée dans quelque chose qui fonctionnait très bien autrefois, précisément le genre de bogue qui frustre les usagers d’un API. PHPUnit s’est d’ailleurs avéré être un outil fort prisé par plusieurs conférenciers.
Graph-Oriented Programming with PHP
Sebastian Bergmann
Ce séminaire présentait le "workflow engine" d’eZ Systems. Il s’agissait d’une présentation très "high level" et théorique sur le projet de thèse de doctorat de M. Bergmann. Je dois avouer que j’aimes voir des cas concrets et du code me démontrant les bénéfices d’une innovation. Je suis resté sur ma faim.
PHP and memcached – Giving your database server a break
Marc Wandschneider
La mise en cache… Le genre de truc que l’on connait tous sans jamais être parfaitement à l’aise avec tous les dillemmes que cela soulève. Cette formation réponds à plusieurs interrogations concernant une des façon les plus populaires d’accélérer l’accès à vos données, memcached.
À la base étonnemment simple, son concept est de réduire les allers-retours au disque dur, le maillon faible de la chaîne en terme de rapidité pour la lecture d’informations provenant de votre base de donnée. Memcached va utiliser votre mémoire vive qui est immensément plus rapide. Il s’agit tout simplement d’un gigantesque array contenant les informations que vous y déposez. Lors d’une requête, memcached va d’abord vérifier si votre valeur est dans l’array, sinon exécute la requête à la base. Tout simple.
Toutefois, memcached est bourré de trous. Par exemple, comme il ne s’agit que d’un giga-array, zéro sécurité. Aucune authentification possible. Ou si vous voulez barrer une entrée temporairement le temps qu’une transaction se termine, impossible de le faire via ce système. Faites très attention à ce que vous mettez dans votre cache.
L’autre faille est que pour être rapide, memcached doit être installé localement, grugeant des ressources précieuses de votre serveur. Bien sûr, il est paramétrable. Mais, pour être pleinement efficace, plusieurs serveurs doivent être greffé à votre memcached. Facebook a agi de la sorte. Ils ont des dizaines de serveurs dédiés à un memcached. Malheureusement, tous n’ont pas les moyens de Facebook.
Malgré tout, pour stocker de petites données bien choisies ne nécessitant pas de sécurité, memcached peut s’avérer un bon choix. À cela j’ajouterais toutefois le MySQL Query Cache. De cette manière, si jamais la donnée n’est pas trouvée dans l’array de memcached, un second niveau de caching se trouverait plus loin lors de la requête si cette entrée n’a pas subi de modification depuis.
Help! I found a bug in my code!
Derick Rethans
Toujours en version beta, xdebug est une extension PEAR permettant au développeur d’aller quérir davantage d’informations sur une erreur survenue en cours d’exécution ou encore d’optimiser son code.
Vous pouvez personaliser les indications d’erreurs fatales vous parvenant en paramétrant xdebug. Je vous invite à aller chercher le PDF de la conférence pour visualiser les différentes possibilités. Notez bien que le message d’erreur n’est pas nécessairement celui que vous auriez normalement, mais bien celui issu du compilateur PHP, souvent plus complet aux yeux du développeur.
Aussi, parmi les choses intéressantes, avec xdebug, vous serez en mesure d’identifier des écarts de temps, par exemple, combien de temps une fonction PHP a mis de temps à s’exécuter. Vous serez aussi en mesure de retracer les pointes de l’usage de la mémoire.
Comme je suis un visuel de nature, j’ai vraiment adoré l’idée d’activer le "profiling" et d’utiliser KCacheGrind pour visualiser les goulots d’étranglement de la page en un clin d’oeil. Idéal lorsqu’une page semble ramer sans raison.
Who am I? - The age of digital identity
Rob Richards
Ce spécialiste de la sécurité informatique, maniaque du respect de la vie privée sur le web a livré une conférence très intéressante sur OpenId versus les Information Cards (openinfocards pas celles de Microsoft!), Bien que l’on sentait son penchant pour l’une des deux solutions, il a livré une bonne description et une bonne analyse des deux plateforme. Je dois avouer que je ne connaissais aucune de ces technologies avant ce séminaire et j’en ai appris énormément. Bien qu’instructif, il reste encore beaucoup de travail pour que ce genre de techno devienne un standard sur le web. Premièrement, l’accessibilité de la chose. Ce n’est pas demain la veille que la personne plus ou moins “computer literate” va utiliser les information cards. Même le formateur s’y est repris à 5 fois pour que cela finisse par fonctionner! Bref, cela demeure pour l’instant une techno de “geeks”.
Côté sécurité aussi cela pose de nombreuse questions. OpenID est à mes yeux un danger public. Il faut vous procurer un ID auprès d’un fournisseur et vous authentifier chez lui à chacune de vos authentification, transaction sur le web… Je ne tiens pas à ce que Verisign ou quiconque possède de telles informations sur moi. Cela serait cent fois pires qu’un espiogiciels planté sur ma station. Et même si je fais confiance à Verisign, à qui sera-t-elle vendue dans le futur? Où irons mes infos? Un non-sens en terme de sécurité. OpenId a fait exactement ce contre quoi elle lutte. Bref, ils se sont plantés.
Concernant les information cards, cette techno a du potentiel si l’on peut traîner ses cartes avec soi, ce qui n’est pas encore le cas. Cela revient donc à dire que cette techno s’adresse pour le moment à ceux qui sauront héberger leurs identités chez eux afin d’en profiter partout. Un truc de “geeks” vous dis-je! Fort prometteur toutefois. Je retournerai voir où ils en sont l’an prochain.
Tags associés: actionscript, adobe, api, Application, astuces, Blogue, carte, Conférence, CSS, Design, Facebook, firefox, futur, google, Innovation, Internet, javascript, K3média, livre, Montréal, MySQL, Optimisation Web, php, Québec, Ressources, Technologie, TI, travail, Trucs, veille, vie privée, Web, xp, Xul2 commentaires
Retour sur la 3ième conférence du MAUG (Montreal Adobe User Group)
Philippe Arseneault, le 30 mars 2007 à 5:50 dans DesignC’était ma deuxième participation au MAUG et même s’il y a eu un peu de retard dû à un problème de réservation de local et de connexion à Internet, je vois clairement une nette amélioration par rapport à la dernière conférence. Les gens étaient d’un niveau plus élevé et les conférences plus pertinentes. Lee Anthony Sutton de Adobe Digital Editions en est peut-être aussi une des raisons. Il y avait même des recruteurs d’emplois!
J’aimerais aussi donner une mention d’honneur au «gars de l’Internet» qui a tout donné pour tenter de nous brancher, mais qui n’a pas réussi. C’était beau de le voir faire à peu près n’importe quoi dans l’ordinateur et de le voir recharger la page du navigateur sans arrêt en espérant que ça fonctionne par magie. De le voir partir et revenir au local, toujours avec un long cable réseau en main qu’il ne lâchait jamais, était aussi inspirant.
Le premier bloc de la soirée était donné par LordAlex Leon, qui prend bien le temps de nous expliquer que son prénom est bien LordAlex… et de pas trop d’énerver avec ça. Il est un des fondateurs du MAUG et aussi le fondateur de LordAlex Works™. Petite note aux intéressés, il nous fait prendre note que toute aide est la bienvenue, que ce soit au niveau du site Web du MAUG ou au niveau de l’organisation des conférences. LordAlex était surtout là pour répondre aux questions concernant Apollo, le nouveau bébé d’Adobe. Cette période de questions a été très technique et spécifique, moins intéressante pour ceux qui n’ont toujours pas essayé Apollo. On se retrouvait donc avec des discussions entre quelques personnes du groupe, et les autres écoutaient.
Le deuxième bloc était donné par Martin Arvisais, l’autre fondateur du MAUG et un développeur et formateur Flash. D’ailleurs, si jamais votre entreprise a besoin d’un formateur Flash, il vous invite à communiquer avec lui à l’adresse services@as-is.ca. Martin nous parle premièrement du FITC 2007, un festival de 3 jours à Toronto qui présente des conférences principalement sur Flash et les domaines connexes. Très intéressant. De mon côté, je saute mon tour cette année, mais j’ai mis une note à mon agenda pour l’année prochaine.
Il nous donne ensuite quelques détails sur Flash CS3 qui vient tout juste d’être lancé. J’ai noté l’importation de PSD, le support Actionscript 3 et la sortie de la version 3 des composantes Flash. On parle que l’Actionscript 3 va vraiment séparer les designers des programmeurs et je crois en effet que c’est ce qui se passera. L’AS3 est complètement en programmation orientée objet. Finis les simples onRelease et getURL, on crée maintenant des objets et on leur ajoute des événements.
Petite note importante, Martin nous fait savoir que Colin Moock, le célèbre auteur de livres sur la programmation Actionscript viendrait en conférence à Montréal si au moins 40 personnes sont intéressées à y assister. Donc écrire soit à Martin ou à LordAlex pour leur confirmer votre intérêt.
Martin nous donne ensuite un aperçu de Flash Media Server, un outil d’Adobe très puissant, mais encore peu connu par manque de promotion de la part d’Adobe. Encore une fois ça semble très puissant et intéressant. La principale utilité de FMS est de créer et partager des connexions entre plusieurs utilisateurs. Un exemple simple de ça est la création d’un «Chat». FMS utilise la «Push Technology», qui fait sauver beaucoup de «bandwith». Par exemple, au lieu de toujours recharger une page pour avoir le pointage d’un match de hockey, FMS va simplement pousser la mise à jour du pointage aux utilisateurs connectés. Très pratique. On peut acheter FMS et l’installer facilement sur Linux Red Hat, ou simplement se louer un serveur pour environ 10$ US par mois.
Finalement pour Martin, un autre petit tour d’Appolo. Bon la seule chose que j’ai notée ici est qu’on peut se créer un fureteur Web directement dans Appolo. Et devinez quel moteur il utilise? Safari! Donc si vous me suivez bien, on pourrait donc se créer un fureteur Safari et le faire rouler sur PC. C’est donc un outil vraiment intéressant pour les développeurs Web qui désirent tester leurs sites dans Safari. C’est certain que je m’en fais un!
C’est le temps de la pause. Des recruteurs se promènent parmi nous et nous donnent des offres d’emplois. Une belle place pour se trouver un emploi en Flash. C’est incroyable à quel point la demande est forte pour les développeurs Flash actuellement. Il n’y a en a tout simplement pas, et il n’y a aucune formation pertinente pour en créer. Pensez-y!
On reprend avec Anthony Sutton de Adobe Digital Editions, qui arrive avec son manteau et son chandail Adobe. Il vient nous parler de la nouvelle version d’Acrobat. Très bien et très professionnel comme présentation. Très dynamique.
Avec Acrobat, on peut maintenant pratiquement créer des applications directement dans un PDF. On peut se créer des formulaires dynamiques, avec des boutons pour envoyer les données en «Post», etc. On peut ajouter du Flash, créer des boutons qui permettent d’ajouter des pages dynamiquement. Bref, c’était très intéressant et motivant. Les gens d’Adobe ont le don de nous motiver et de nous faire triper en nous présentant leur logiciel. Disnons qu’ils sont très bons vendeurs.
Le dernier bloc est donné par André Bouchard, développeur et programmeur Flash chez Generation Flash. Il nous parle de la délégation en Actionscript 2. Très technique comme présentation. En gros ce qu’il faut retenir, c’est que lorsque qu’on doit déléguer en Flash, il nous faut absolument la classe de Pixlib.
Voilà ce qui complète mes commentaires sur la rencontre d’hier soir. La prochaine conférence du Montreal Adobe User Group devrait être dans environ 1 mois et demi.
À bientôt
Laissez un commentaire
Actionscript 3 : Attacher sur la scène un movieClip de la librairie d’un swf que vous venez de charger.
Philippe Arseneault, le 1 mars 2007 à 3:44 dans DesignCeci est le premier article que j’écris sur ma transition de l’Actionscript 2 vers l’Actionscript 3. Je devrais en écrire un chaque fois que je réussis à faire un truc qui selon moi devrait en intéresser plus d’un. Je devrais également réécrire pour parler de l’Actionscript 3 en général, de ses avantages et grands changements par rapport à l’Actionscript 2.
Mais je propose aujourd’hui de plonger directement dans le code avec ce
qui permet de charger un fichier swf externe et d’accéder à un
movieClip de sa librairie.
Premièrement, le fichier externe.
Il doit être créer dans la version alpha de Flash 9 afin de pouvoir compiler en Flash 9 avec Actionscript 3.
Il faut se créer un movieClip dans la librairie d’un nouveau document.
On nomme notre movieClip, on coche "Export for Actionscript" et on
donne un nom unique à la classe qui sera créer automatiquement au
moment de la compilation.

On utilise maintenant notre imagination pour créer le contenu du
movieClip. Un gros X mauve dans mon cas (j’aime ça les X mauve).
Et finalement on compile.
Et on arrive dans notre éditeur Actionscript 3.
De mon côté je suis dans un projet Actionscript 3 de FlexBuilder 2.
Voici le code de la classe de l’application avec mes commentaires.
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class Application extends Sprite {
// On cré la variable qui va contenir le "loader" qui va charger le swf
private var _myLoader:Loader;
// Le constructeur
public function Application()
{
//On cré le "loader"
_myLoader = new Loader();
// On ajoute l’événement "Init" avec la méthode à exécuter une fois le swf chargé
_myLoader.contentLoaderInfo.addEventListener(Event.INIT, onLoadInit);
// On charge le swf
_myLoader.load(new URLRequest("myTests.swf"));
}
private function onLoadInit(p_event:Event):void
{
// On récupère le contenu de notre swf (qui est un movieClip) et on l’ajoute sur la scène
_mc = MovieClip(_myLoader.content);
addChild(_mc); importMC();
// On récupère la classe auquel notre movieClip de la librairie est associé
var myObject:Object =
_myLoader.contentLoaderInfo.applicationDomain.getDefinition("McLibrairie");
var myClip:MovieClip = MovieClip(new myObject());
// On peut lui donner quelques propriétés
myClip.x = 50;
myClip.y = 100;
// On l’ajoute sur la scène
addChild(myClip);
}
}
}
Voilà alors on a tout ce qu’il faut pour contrôler notre movieClip!
À bientôt!
Phil
Laissez un commentaire
Tamarin, l’effort Javascript de Adobe + Mozilla
admin, le 7 novembre 2006 à 8:55 dans Programmation
Tamarin devrait implémenter la version 4 du standard ECMAScript. Le futur nous dira si cette approche conjointe entre ces deux organisations facilitera la vie des développeurs web en uniformisant non seulement l’implémentation du standard dans Flash et dans le navigateur, mais aussi en uniformisant les bugs que nous devrons à tout coup contourner
Tags associés: actionscript, adobe, firefox, Flash, futur, javascript, linux, TI, Web
Laissez un commentaire







