Archive

Archive for décembre, 2008

SciTE un éditeur de texte et bien plus

décembre 17th, 2008

Aujourd’hui j’aimerai vous parler d’un éditeur de texte que j’affectionne tout particulièrement en tant que développeur : SciTE.

SciTE signifie Scintilla Text Editor. C’est donc un éditeur de texte qui utilise le composant Scintilla. Ce composant est un éditeur de code source particulièrement performant. Pour preuve, c’est ce composant que l’on retrouve dans d’autres logiciels d’édition tels que Notepad2.

Comme nous le verrons par la suite, SciTE est bien plus qu’un éditeur.

SciTE est disponible pour Linux et Windows et est téléchargeable à l’adresse suivante : http://www.scintilla.org/SciTEDownload.html.

Comme tous les éditeurs de texte SciTE offre la possibilité d’ouvrir plusieurs fichiers simultanément et de naviguer entre eux via des onglets.

De plus lors de l’édition de code (ce qui nous interesse sur ce blog) SciTE offre des fonctionnalités dignes des meilleurs IDE :

  • coloration syntaxique,
  • système de dépliage/repliage de bloc de code
  • appel d’un compilateur
  • fenêtre d’output

De plus tout est configurable avec SciTE malheureusement sans interface graphique. Il faut donc passer par l’édition des fichiers de properties.

Ces fichiers sont au nombre de trois (plus ceux dédiés aux languages spécifiques) :

  1. Le fichier Global définit les options globales par défaut de SciTE (c’est à dire, celles qui s’appliqueront à tous les utilisateurs). Il est préférable de ne pas y touché étant donné que ce fichier sera écrasé à chaque mise à jour
  2. Le fichier User,  qui définit les options pour  l’utilisateur courant.
  3. Le fichier Local qui définit les options à appliquer lors de l’édition de fichiers dans un fichier précis. Il doit se trouver dans le même dossier que les fichiers auxquels on veut appliquer ces paramètres.

Via ces fichiers vous pouvez complètement configurer le comportement de SciTE pour qu’il réponde à vos besoin.

Par exemple lors de l’édition de sources de balises (HTML ou MXML par exemple) vous pouvez configurer SciTE pour que celui-ci ferme automatiquement la balise que vous venez d’ouvrir en plaçant la curseur entre la balise ouvrante et la balise fermante. Pour cela, il vous suffit d’ajouter la ligne suivante au fichier de configuration :

xml.auto.close.tags=1

Un second exemple, il est possible de définir le look du système de repliage de bloc de code. Pour cela, il vous suffit de modifier la ligne suivante en remplaçant la valeur 1 pour une valeur allant de 0 à 4 (je vous laisse découvrir par vous même le résultat) :

fold.symbols=1

Pour plus d’information sur le paramétrage de SciTE, je vous invite à consulter la documentation en ligne.

En conclusion cet éditeur est vraiment très puissant bien que très léger d’utilisation et je ne peux plus m’en passer.

VN:F [1.0.8_357]
Rating: 4.7/5 (3 votes cast)

developpement , ,

Thickbox la modalbox à la mode JQuery

décembre 12th, 2008

Utilisant comme framework javascript de plus en plus JQuery (comparaison des frameworks javascript) j’ai été amené à développer des interfaces utilisateur à base de “popup ajax”.

thickbox.jpeg

Ne voulant pas réinventer la roue, j’ai cherché quels étaient les plugin JQuery qui offraient cette fonctionnalité. Mon choix s’est arrêté sur Thickbox.

Thickbox est plugin JQuery permettant d’afficher à l’écran du contenu en sur-impression de la page courante.

Ce plugin est très léger : 20ko en version compressée et 58ko en version normale. De plus son mode de fonctionnement est l’un des plus simple que j’ai utiliser et certainement le moins intrusif.

En effet pour ouvrir un contenu dans une “popup ajax”, il suffit (une fois le script chargé dans la page évidemment) de définir un lien HTML portant l’attribut class=”thickbox”. Thickbox se charge donc d’ouvrir la cible du lien dans une popup en sur-impression de la page courante.

La puissance de la bibliothèque ne s’arrête pas là. En effet, le comportement de la popup est paramétrable. Vous pouvez très simplement déterminer par exemple la hauteur ou la largeur de la popup à afficher. Pour cela, rien de plus simple il suffit d’ajouter à la suite de l’url du lien à charger en popup les paramètres height et/ou width.

Par exemple, si nous voulons charger la home de google dans une popup de largeur 200 pixels et de hauteur 300 pixels il suffit de définir un lien dont l’attribut href aura la valeur http://google.fr?height=300&width=200.

de la même manière si nous voulons que notre popup soit modale il nous suffit d’ajouter le paramètre d’url &modal=true.

Je conseille vivement à tous les utilisateurs de JQuery de tester cette bibliothèque très utile et tellement simple d’utilisation qu’elle rendra vos développement javascript encore plus joyeux. Vous remarquerez au passage que le système d’affichage des photos de ce blog utilise thickbox ;)

VN:F [1.0.8_357]
Rating: 3.9/5 (12 votes cast)

developpement , ,

Maximum function nesting level of ‘100′ reached

décembre 8th, 2008

Depuis quelques temps sur mon serveur de développement PHP, je suis régulièrement tombé sur l’erreur fatale suivante : Maximum function nesting level of ‘100′ reached.

N’ayant jamais rencontré cette erreur auparavant et ayant installé dernièrement l’extension PHP Xdebug j’ai creusé dans cette direction.

L’extension PHP Xdebug qui permet de faire du debuggage ainsi que du profiling PHP définit le paramètre de configuration xdebug.max_nesting_level (par défaut à la valeur 100). Ce paramètre permet de déterminer le nombre maximum de fonctions imbriquées avant de stopper l’exécution du script.

Il suffit donc d’augmenter la valeur de ce paramètre de configuration et de redémarrer Apache pour ne plus rencontrer le problème.

NB : je n’ai pas trouvé de valeur permettant d’ignorer ce paramètre comme il est possible de le faire pour la variable max_execution_time par exemple.

VN:F [1.0.8_357]
Rating: 4.3/5 (7 votes cast)

developpement

Invoquer des méthodes d’un objet métier dans un template ezPublish

décembre 4th, 2008

Lors de développements de modules ou d’extensions pour le CMS ezPublish nous sommes souvent amenés a développer des classes php métiers (pour accéder aux données, réaliser des traitements particuliers, …).

Il peut devenir alors utile dans un template de vouloir manipuler une instance d’une classe métier et d’invoquer des méthodes php de cette classe. EzPublish fournit pour cela un mécanisme assez simple à mettre en oeuvre qui permet d’exposer des méthodes d’une classe php à un template.

Pour cela, la classe métier doit définir les trois méthodes suivantes :

  • attributes
  • attribute
  • hasAttribute

Méthode attributes

Cette méthode permet de donner la liste de toutes les fonctions de la classe que le template peut invoquer sur l’instance de cette classe. En gros elle retour un tableau de chaines de caractère avec le nom des méthodes accessibles dans le template.

Elle ne prend pas de paramètre en entrée.

Méthode hasAttribute

Cette méthode permet de valider que la fonction invoqué sur l’instance de la classe dans le template existe bien.

Elle prend en entrée un paramètre de type chaine de caractère représentant la méthode à invoquer

Méthode attribute

Cette méthode fonctionne comme un hub en reroutant l’invocation de fonction depuis le template sur la bonne méthode de la classe.

Elle prend en entrée deux paramètres :

  • une chaine de caractère représentant la méthode invoquée
  • un booléen indiquant s’il s’agit d’une fonction invoqué ou un attribut de la classe

Voici un exemple de classe php implémentant ces méthodes :

class myClass{
public function __construct(){…}
public function sayHello(){
return “hello the world !!!”;
}
/**
* Retourne un tableau avec toutes les méthodes utilisables dans
* un template
*
* @return array liste des toutes les méthodes accessibles en template
*/
public function attributes(){
return array(’sayHello’);
}
/**
* Valide que la méthode appellée dans un template existe
*
* @return bool true si la fonction existe false sinon
*/
public function hasAttribute($attr){
return in_array($attr, array(’sayHello’));
}
/**
* Execute la méthode demandée dans un template
*
* @param string $attr
* @param bool $noFunction
*/
public function attribute($attr, $noFunction = false){
if($attr == ’sayHello’){
return $this->sayHello();
}
}
}

Maintenant dans un template auquel nous avons au préalable passé une instance de la classe myClass, nous pouvons invoquer la méthode sayHello de la manière suivante :

{$instance.sayHello}
VN:F [1.0.8_357]
Rating: 3.8/5 (5 votes cast)

developpement, ezPublish ,

Comparaison framework javascript

décembre 3rd, 2008

Le web 2.0 étant la nouvelle tendance actuelle il existe une multitude de framework javascript nous faciltant la tache dans nos développements (ajax, manipulation du DOM, widgets, modalbox…).

En faisant un état des lieux des projets web dont j’ai la charge, je me suis rendu compte que nous utilisons pas moins de trois frameworks différents par projet. En effet, chaque développeur a ses habitudes, ses bibliothèques et utilise par conséquent le framework qu’il connait le mieux pour gagner du temps.

Résultat, les sites embarquent un nombre de javascript important : les différents frameworks ainsi que nos codes les utilisant.

Tous les frameworks font globalement la même chose, nous avons donc décidé d’uniformiser nos projets afin d’utiliser un framework unique.

Il s’est alors posé la question du choix du framework : prototype, jquery, yui, mootols… avec deux préocupations majeures : les performances et les fonctionnalités natives du framework.

En cherchant de la documentation sur le net, je suis tombé sur la page suivante :

http://mootools.net/slickspeed/

slickspeed-large.jpg

Cette page permet de tester sur son propre navigateur les performances ainsi que les différentes fonctionnalités des framework javascript les plus connus. Pour cela il vous suffit de cliquer sur le bouton “start test” et d’attendre la fin de l’exécution des tests.

Résultats des tests sur ma machine (windows XP, 2Go de RAM)

Avec Firefox 3.0.4

  1. Dojo 1.1.1
  2. JQuery 1.2.6
  3. Mootools 1.2
  4. Yui (Yahoo User Interface) 2.5.2
  5. prototype 1.6.0.2

Avec Internet Explorer 6.0.2

  1. Dojo 1.1.1
  2. JQuery 1.2.6
  3. Yui (Yahoo User Interface) 2.5.2
  4. prototype 1.6.0.2
  5. Mootools 1.2

Conclusions

Les deux grands gagnants sont et de loin Dojo et JQuery.

Nous concernant, nous avons choisi JQuery framework plus connu que Dojo avec une communauté de développeurs importante et ayant une syntaxe proche de prototype qui était très utilisé chez nous.

VN:F [1.0.8_357]
Rating: 4.4/5 (11 votes cast)

Projets professionnels, developpement , , , , , ,

Extension ezPublish AjaxClassEdit

décembre 2nd, 2008

Voici la dernière extension ezPublish que j’ai développé.

Cette extension modifie l’interface d’édition et de création des classes de contenu ezPublish en évitant de poster et recharger la page à chaque modification.

Tous les traitements se font en AJAX ce qui rend la gestion des classes plus facile et surtout plus rapidement (notamment lorsqu’il faut déplacer des attributs).

L’extension utilise la framework javascript JQuery dans sa version 1.2.6 et fonctionne à partir de la version 4.0 d’Ez Publish.

vous pouvez télécharger l’extension à l’adresse suivante : http://ez.no/developer/contribs/applications/ajax_class_edit

Installation de l’extension

Pour l’installation il suffit de suivre les étapes suivantes :

  1. décompresser l’archive zip dans le répertoire extension de votre installation ezPublish
  2. activer l’extension dans le backoffice (onglet administration)
  3. regénérer les autoloads

N’hésitez pas à laisser vos commentaires si vous rencontrez un problème un bug ou si vous désirez des améliorations

VN:F [1.0.8_357]
Rating: 3.0/5 (2 votes cast)

Projets professionnels, developpement, ezPublish , ,