Conférence PHP Quebec 2007 - Jour 1

admin, le 18 mars 2007 à 11:32 dans Programmation

Je reviens à peine de l’édition 2007 de la conférence PHP Québec.
J’ai bien aimé la conférence, ce n’était que ma deuxième présence mais
encore une fois j’ai été plus que satisfait de la qualité des
présentateurs ainsi que de l’organisation générale. Donc un gros merci
a l’équipe de PHP Quebec; je ne peux imaginer l’effort necessaire pour
recueillir sponsors, conferenciers, equipement et accomodements et
parvenir a ce que tout fonctionne bien.

Il y avait trois differentes "tracks" de conférence, donc
il fallait à chaque conférence choisir quelle voir et quelles manquer
en se fiant a un petit paragraphe de description. J’aurais bien aimé
savoir à l’avance le public cible et le niveau technique de chacune des
conférences pour éclairer ma décision. Voici donc mon resumé, mes
commentaires et mes opinions…


Filtering Security Problem
Derick Rethans

J’avais bien apprecié la session de Derick l’an dernier sur xdebug (il
en est l’auteur) donc je m’attendais a quelque chose d’assez
intéressant et assez technique. Effectivement, M. Rethans nous a
presenté une extension PHP que je considère que j’aurais dû connaître
depuis bien longtemps, les input filters.

Il s’agit d’un simple framework pour valider les inputs des
utilisateurs (ou autres sources). On apprend que c’est actif par défaut
dans la dernière version de PHP, et donc que c’est super facile à
utiliser. En fait, il ne s’agit que d’aller chercher chacune de ses
variables venant de GET ou POST avec la fonction filter_input(). Il est également possible de performer les validations et de filtrer les variables avec filter_var().

C’est tellement simple à utiliser que j’ai déjà pu en quelques minutes
implémenter ce nouveau module dans K3Soft; il ne suffit que de choisir
le type de filter que l’on veut appliquer ou d’écrire notre propre
filter si ceux fournis par defaut ne conviennent pas. La plupart des
cas d’utilisation ont été pensé, il y a des filtres pour les strings,
les nombres, les email, les adresses IP, les URL…


Unicoding with PHP 6
Andrei Smevski

Cette session avait été donnée l’an dernier et je l’avais manqué.
J’étais donc content de pouvoir me reprendre cette année. Le support
unicode est la grosse nouveaute de PHP 6 et si je me fie a Andrei
Smevski, ils sont dans la bonne direction.

Si j’étais cynique, je dirais "Mieux vaut tard que jamais"… c’est
assez etonnant de savoir que nous avons encore tant de probleme avec
l’affichage multilingue en 2007. C’est présentement possible avec PHP 5
grâce a l’extension mbstring
mais c’est évidemment insuffisant; il faut qu’un tel support soit bâti
dans le core et supporté par toutes les fonctions qui ont à manipuler
des strings.

C’est donc le travail (gigantesque) qu’a completé M. Smevski. Ce n’est
pas terminé, 62% des fonctions du core supportent présentement
l’unicode. Il va également rester la documentation à faire.

C’est donc une très bonne nouvelle de savoir qu’enfin strtoupper() va supporter tous les caractères speciaux, que strlen() va etre garanti de fonctionner même avec des caracteres complexes asiatiques etc…

Andrei termine la session en donnant des exemples tres cool, par
exemple pour faire afficher les alphabats orientatux en latin. Je vais
essayer d’installer une image virtuelle VMWare et y installer le dernier snapshot de PHP 6 pour jouer avec tout ca.


PHP & Design Patterns
Gérald Croës

J’avais quelques inquietudes face a cette session; qu’on allait nous
repeter encore les meme design patterns que l’on connait deja bien,
etc… Finalement, c’etait exactement ca, mais j’ai tout de meme bien
apprecie. En fait, on ne parle jamais assez de design pattern, quand on
y pense, donc c’est bien d’avoir une conference qui nous rappelle les
bonnes pratiques face à ceux-ci.

Ce que j’ai trouvé dommage, c’est qu’encore les meme exemples ont ete
donné pour expliquer le singleton, le factory, le decorator, le builder
etc… Dans tous les ouvrages sur les design pattern, on donne toujours
les mêmes exemples. Pourtant on vante les patterns comme étant des
solutions reutilisables dans plusieurs situations…

M. Croës a répété plusieurs fois un bon point; les patterns ne sont
qu’une piste de réflexion à utiliser (ou pas). Il faut donc pas tenter
de les integrer à tout prix mais plutot simplement s’en servir comme
référence lors de la conception de systèmes.


SOA: Beyond the Hype
Rob Richards

Encore une autre conferencier que j’avais bien apprecie l’an dernier.
Rob Richards semble etre le responsable de tout ce qui touche le XML
dans PHP, j’ai donc ete plutot decu de l’approche non-technique de
cette session.

Si j’esperais apprendre de bonnes techniques d’application d’un systeme SOA (Service-Oriented Architecture), il a plutot discute du cote "management" et "marketing" de cette approche architecturale.

La session a donc porter son focus sur le fait que SOA n’est pas un
système magique qui reglera les problemes existants et qui sauvera
nécessairement beaucoup d’argents a court-moyen terme. Toutefois, avoir
un bon plan et ne pas voir trop gros tout de suite en partant pourront
aider a creer un systeme base sur les services qui va aider
l’entreprise a s’ajuster plus rapidement aux changements des besoins.

À la toute fin, il montre un peu de code qui m’impressionne beaucoup; avec de simples commentaires JavaDoc (phpdocumentor)
il ouvre une classe à plusieurs services en même temps. Je note donc
que je dois assister absolument à la session de Charter Grahams le
lendemain sur l’extension SCA.


10 Random tips for MySQL performance Optimisation
Morgan Tocker

C’est toujours bon d’avoir des commentaires d’un expert sur les facons
d’optimiser ses bases de donnes MySQL. J’ai donc apprecié le format de
cette session qui portait effectivement bien son titre de 10 trucs plus
ou moins aléatoires.

Selon M. Tocker, la plus gros "bottleneck" d’un systeme
est souvent le disque dur, il faut donc prendre ceci en considerations
lorsque l’on optimise notre système. Par exemple, la RAM est moins
souvent un probleme que l’on pense il faut donc utiliser le systeme de
cache des tables MyISAM a son maximum.

Le reste de la conference portait principalement sur la façon d’utiliser les logs (SHOW STATUS)
pour trouver les problèmes potentiels dans le système. J’etais content
d’en apprendre plus sur les avantages et inconvenients des moteurs de
stockages InnoDB et MyISAM.

Tags associés: , , , , , , , , , , , , , ,

Laissez un commentaire

Nouveautés K3Soft de la semaine.

admin, le 9 février 2007 à 9:18 dans Programmation

"Grosse semaine". Je ne suis pas étonné de la finir avec une sale grippe…

Au moins ça a été productif. J’ai beaucoup travaillé sur les sites de
certains clients mais j’ai quand même réussi à me trouver un peu de
temps pour ajouter des features que je voulais depuis un moment dans K3Soft.

J’ai tout d’abord ajouté des options d’intégration pour gérer certains outils externes comme phpBB et Wordpress à partir du gestionnaire de contenu. Plus de détails à venir dans un prochain texte.

J’ai aussi réglé quelques bugs par rapport au redimensionnement
automatique des images. Si vous aviez des problèmes avec la génération
automatique des thumbnails ce devrait maintenant fonctionner sans problème.

J’ai aussi updaté FCKEditor à la denière version, 2.4.
Pour les utilisateurs, aucun changement visible à priori si ce n’est
que l’éditeur HTML devrait désormais se charger beaucoup plus
rapidement. Ce qui est bien c’est que plusieurs ajouts pourront être
faits très bientôt au niveau de l’éditeur grâce aux nouveautés de la
version 2.4… je pense notamment à l’intégration des feuilles de
styles et les liens HTML.

Également: refactorisation et réorganisation interne des répertoires à
l’intérieur du code. Ça m’a permis d’en profiter pour faire le ménage
de certaines vieilles fonctions AJAX et utiliser un framework plus solide. C’est maintenant beaucoup plus facile pour moi et les autres dévelopeurs d’ajouter des requêtes AJAX assez cool dans K3Soft. Le premier changement que je crois va être très apprécié est le Quick Edit pour les textes. Permettez-moi d’expliquer ce que c’est.

Un scénario d’utilisation fréquent du module de gestion de contenu est
de modifier rapidement plusieurs textes du site internet. Jusqu’à
aujourd’hui, la façon de procéder était de choisir une section dans le
menu de gauche, cliquer sur un des textes de cette section, modifier
son contenu et sauvegarder. J’ai tenté de réduire le nombre d’opération
nécessaire en permettant d’éditer le contenu directement dans la liste
des textes.

Ainsi, en cliquant sur le petit symbole " » " (qui sera bientôt un
icône pertinent…) l’éditeur HTML s’affichera sous la ligne du texte
et pourra être modifié directement de cet endroit. Voici un petit screenshot pour comprendre:

quickedit.png

Comme toujours, votre feedback est apprécié! Si vous avez des
commentaires sur ce nouvel option laissez-moi savoir. Aussi, si vous
avez des idées où vous aimeriez voir ce genre d’option, n’hésitez
surtout pas à me contacter!

Bon weekend.

Tags associés: , , , , , , , , , , , , , , ,

Laissez un commentaire

Nouveauté K3Soft: L’édition massive

admin, le 28 novembre 2006 à 11:07 dans Programmation

Deux modules particulièrement important dans K3Soft sont le "Library Manager" ainsi que le "Product Manager". Effectivement, lorsqu’on sort du contenu "traditionnel" du site web (les menus, les sections, les textes et les médias) c’est probablement les outils les plus importants pour gérer une banque d’objet comme un catalogue de produits ou n’importe quel autre truc qui se range bien dans une base de données ou un tableur.

Puisque l’on possède le contrôle sur chaque paramètre, nous avons pu créer dans ces modules des solutions personalisés de toute sorte; des produits en tous genres, des demandes d’informations, des bases de données de clients, des budgets personnels, des bases d’informations (Knowledge Base), des glossaires, des extensions aux sites webs… Dans le gestionnaire de contenu K3Soft, chaque client ayant un accès "administrateur" peut aller entrer de nouveaux objets ainsi qu’éditer leurs paramètres.

Parfois, de nouveaux paramètres doivent être ajoutés après la mise en ligne du site. Par conséquent, une requête des clients a souvent été d’avoir une interface simple pour éditer rapidement un seul paramètre de tous les objets d’un catalogue. J’ai donc implémenté une solution pour ce problème; voici comment procéder.

Si vous avez accès administrateur à votre CMS K3Soft et que les modules "Product Manager" ou "Library Manager" sont installés sur votre système, vous pourrez observer un nouveau bouton dans le menu de gauche de ces modules: Bulk Edit (Edition massive).

bulkedit.png

 

Dans la page suivante il s’agit de sélectionner le catalogue ainsi que la propriété que vous désirez éditer. Tous les objets de ce catalogue
apparaîtront ainsi qu’un champs éditable pour chacun de ces objets. Il y a ensuite deux façons de sauvegarder: soit cliquer sur le bouton "Bulk Save" en bas de l’écran, qui sauvegardera d’un seul coup *tous* les objets, ou encore utiliser le bouton "Save" présent à droite de chaque objet (pour certains types seulement) qui utilisera un peu de magie AJAX pour mettre à jour le paramètre en arrière-plan.

 

À noter qu’il s’agit d’un feature encore en beta; il manque notamment un système de pagination donc veuillez svp éviter de l’utiliser pour vos catalogues de 1000+ objets…

Comme à l’habitude, si vous avez des questions concernant cette nouveauté ou encore n’importe quel autre truc que vous souhaitez voir
implémenter dans K3Soft, contactez-moi par courriel ou laissez-moi un commentaire directement sur ce blogue!

Tags associés: , , , , , , , , , ,

Laissez un commentaire

Les sliders script.aculo.us, Internet Explorer et K3Soft

admin, le 26 octobre 2006 à 10:48 dans Programmation

Avec K3Soft, nous avons une librairie générale qui permet de
transférer les éléments de la database dans un tableau HTML
(présentable sur un site web) avec toutes ces propriétés intactes. Il
s’agit d’un mode de visualisation standard auquel les gens sont
habitués; la représentation tabulaire de l’information. Lorsqu’il y a
beaucoup d’information, un système de pagination a été instauré.

scriptaculous-web20-javascript.gif
Cliquer sur des pages pour naviguer n’est pas la meilleure navigation
mais demeure néanmoins un bon compromis pour un système HTML/PHP.
Aujourd’hui j’ai amélioré cet élément de l’interface en ajoutant un peu
de JavaScript, et rapidement grâce à la librairie script.aculo.us.

Scriptaculous est un framework JavaScript basé sur prototype, le système derrière Ruby On Rails. Cette librairie offre plusieurs classes intéresantes d’effet, d’animation etc… Pour notre slider, ce sont les classes de drag & drop et le slider qui nous intéressait.

Créer un slider s’est avéré être extrêmement simple, puisque la librairie fait tout le travail. Voici un bout de code exemple:

<script type="text/javascript" language="javascript">document.write('<div id="slidePages"><div id="slideTrack"><div id="slideHandle"></div></div></div>');new Control.Slider(   'slideHandle',   'slideTrack',   {      axis:'horizontal',      range:$R(0,pageMax, false),      values: pageRange,      sliderValue: page,      onSlide:function(v) {         $('slideInfo').innerHTML=(v+1);      },

      onChange:function(v){         // EFFECTUER UNE COMMANDE ICI          // (par exemple, changer window.location)      }   });</script>

C’est tout ce qu’il y a à faire. Slider instantanné, gracieuseté de scriptalicious.
Slider instantanné dans Firefox/Opera/Konqueror… Internet Explorer refuse de coopérer si facilement…

En fait, l’exemple ci-haut fonctionne, si vous ne vous trouvez pas à l’intérieur d’une table HTML. Ça rend la session de debug assez complexe puisque

  1. Tous les exemples sur lesquels il est basé fonctionnent
  2. La documentation de script.aculo.us n’en fait pas mention
  3. Aucune erreur javascript ne s’affiche; le slider s’affiche mais ne fonctionne pas
  4. Qui peut s’imaginer que l’élément table cause *encore* des problèmes.

Ce n’est qu’après beaucoup de test que j’ai pu constater que tout
fonctionne bien si l’on sort les éléments div à l’extérieur du tableau.
Le slider fonctionne désormais, mais ne se retrouve pas à la bonne
position. Un petit peu de JavaScript pour le repositionner (facilement
grâce à la librairie prototype)

// sliderId = le slider que l'on veut positionner// refId = Objet de référence, dans le tableaufunction resizeSlider(sliderId, refId){   var p = (Position.cumulativeOffset($(refId)));   $(sliderId).style.top = (p[1])+’px’;   $(sliderId).style.left = p[0]+($(refId).offsetWidth/2)      -($(sliderId).offsetWidth/2)+’px’;}

Ne pas oublier de s’assurer que le div "slidePages", dans l’exemple précédent, soit en position:absolute.

Puisque le positionnement est absolu (et en javascript, de plus, une
dernière petite ligne de code pour s’assurer que tout fonctionne bien
lorsque l’utilisateur redimensionne sa fenêtre:

window.onresize = function(){    resizeSlider('sliderPages', 'referenceObject');};

Le slider scriptaculous va désormais fonctionner sans problème avec Internet Exporer!

Toutefois, ici, nous voulons toujours que chaque site web que nous
développons soit accessible si l’utilisateur a choisi de ne pas
autorisé le JavaScript. Notre solution est de garder la navigation par
page, et remplacer celle-ci par le slider en JavaScript.

Résultat, sans JavaScript:
noslider.png

La même page, avec JavaScript:
sider.png

Cette modification sera visible bientôt pour tous nos clients utilisant K3Soft pour toutes les tables de l’admin. (Librairies, Produits, Images etc…)

Tags associés: , , , , , , , , , , , , , ,

1 commentaire

Nouvel interface de login pour K3Soft.

admin, le 24 octobre 2006 à 10:44 dans Programmation

J’ai finalement changé l’interface de login de K3-Soft, notre système intégré de gestion de contenu, pour réfléter de plus près l’identité visuelle du site de K3 dans notre outil.

Ancien login:
oldlogin.png
Nouveau:
Loginscreen.jpg

Tags associés: , , , , , , ,

Laissez un commentaire