nyroBlog
Ban NyroBlog, by Nyro
Image by Nyro - ?

Tag: Programmation


The return...

Last post: october 2010. (and maybe earlier in English...)

This has to stop! nyroBlog come back in a new version, "powered by nyroFwk".

Presentation stays the same but it should be faster.

 

New features in this version:

  • Server-side optimisations to cache MySQL and views (nyroFwk native)
  • Client-side optimisations (YSlow and PageSpeed) (natif nyroFwk)
  • Spam control with Akismet (usage of a native nyroFwk class)
  • Indexing of posts with Zend_Search_Lucene (might be included soon in nyroFwk)

New it's up to me to write new posts about PHP, frameworks, JavaScript, jQuery, and so one...

 

If you see anything wrong or some bugs in this new version, don't hesitate to tell me!

Le retour...

Dernier billet : octobre 2010.

Cela n'a que trop duré ! nyroBlog revient dans une nouvelle version "powered by nyroFwk".

La présentation reste la même, mais il devrait être plus rapide.

 

Les nouveautés de cette version :

  • Optimisations côté serveur avec du cache MySQL et vues (natif nyroFwk)
  • Optimisations côté client (YSlow et PageSpeed) (natif nyroFwk)
  • Contrôle des spams avec Akismet (utilisation classe native nyroFwk)
  • Indexation des billets avec un Zend_Search_Lucene (probablement bientôt inclus dans nyroFwk)

Maintenant, à moi de me remettre à écrire des billets à propos de PHP, de framework, de JavaScript, jQuery, etc...

 

Si vous voyez des bugs ou des choses étranges sur ce blog, n'hésitez pas !

Environnement de travail - Revival

En 2006, j'avais décris ma façon de travailler, et plus particulièrement les logiciels que j'utilisais.

Et si, 4 ans après, on refaisait la même chose ? (histoire de le mettre au goût du jour, et raviver la flamme de ce blog ?)

Allez hop, c'est parti.

Je suis maintenant sur Windows 7 Edition Familiale Premimum. Je ne m'embête plus à essayer d'autres OS ou des choses comme ça, ça me convient tout à fait. J'ai maintenant un joli écran 23 pouces devant moi et un vrai beau clavier. Un vrai ordinateur fixe, ça change du PC portable. Plsu d'espace et plus libre pour la disposition. Et puis comme le dual screen c'est vraiment pratique, un écran 17 pouces sur le côté.

Les logiciels maintenant : Firefox évidemment pour tous les développements, avec comme extension :

  • FireBug pour le déboggage JavaScript, mais aussi et surtout pour l'édition de live de la CSS : je créé mon HTML, j'ouvre Firebug et créé ma CSS en live pour voir directement le résultat. Une fois bon, copier/coller dans le fichier CSS, on réactualise et on passe à la suite.
  • Page Speed et YSlow pour vérifier les performances des sites
  • FireQuey indispensable pour le développement jQuery
  • Tab Mix Plus pour gérer le fonctionnement des onglets comme je veux
  • Web Developer généralement pour vider le cache, désactiver le JavaScript
  • Firefox Sync pour ne plus s'embetter à sauvegarder favoris, mot de passe et tout plein d'autres trucs
  • Echofon pour twitter...

Mais aujourd'hui, j'utilise aussi Chrome pour la plupart de mes navigations privées (facebook par exemple) et visualiser quelques autres sites plus smooth avec celui-ci.

IE8 est là aussi pour les tests, et le mode compatibilité pour IE7 qui permet de tester 2 navigateurs en 1. Une machine virtuelle avec VirtualBox sur Windows XP est toujours indispensable pour les test IE6, quand le client le demande expressément (le cas pour Cartier - Love par exemple)

On a fait le tour côté navigateur. Le serveur, j'utilise maintenant Wamp qui a remplacé depuis bien longtemps le vieillissant EasyPhp.

FileZilla est toujours là aussi pour les transferts FTP. Les fonctionnalités "navigation synchronisée" et "Comparaison des dossiers" sont devenus indispensables pour, d'une part, ne pas écraser un fichier plus récent, et d'autre part, n'envoyer que les nouveaux fichiers, qu'on peut visualiser d'un seul coup d'œil.

Oh, et pour le développement à proprement parler ? Dans quoi j'écris véritablement mes lignes de code ? Dans Netbeans bien sûr. Rapide, efficace, complétion correcte, il correspond exactement à ce dont j'ai besoin. Le CTRL+R pour renommer une variable est des plus efficaces, le CTRL+B pour aller à la déclaration d'une fonction ou variable aussi. un code bien commenté à la javaDoc est indispensable pour bien l'utiliser. Ça tombe bien, c'est le cas de nyroFwk !

J'ai quand même toujours un Notepad++ qui traîne pour l'édition rapide depuis Filezilla ou bien pour les JS ou CSS, quand NetBeans n'est pas très utile.

Voilà pour les principaux. En vrac, on citera aussi :

  • Thunberbird qui est mon fidèle partenaire pour tous mes e-mail depuis 2005
  • Foxit Reader pour lire les PDF à la vitesse de l'éclair
  • VLC pour lire les musiques bien plus vite que le vieillissant Winamp
  • Le vieux mais non moins efficace PuTTY pour les connexions SSH
  • OpenOffice.org pour tous les traitements de texte et excel

Et vous alors, vous utilisez quoi ?

nyroFwk, Framework PHP - Présentation

Ceci est un brouillon d'introducion à la documentation de nyroFwk. Toutes remarques, suggestions ou questions pour l'améliorer est la bienvenue !

Vendredi dernier, j'ai mis en ligne l'API et le svn (user : anon / passe : anon) de nyroFwk.

Bon c'est très bien tout ça, mais qu'est-ce que c'est ?

Pour commencer, petit extrai de wikipedia : Un framework est un kit de composants logiciels structurels, qui définissent les fondations ainsi que les grandes lignes de l'organisation de tout ou partie d'un logiciel.

Oui, mais des frameworks PHP, il en existe des tas, non ?
Oui, on peut signaler symfony, Zend Framework et CakePHP ici. J'ai testé ces 3 là plus ou moins fortement. Chacun a ses avantages et ses inconvénients. Mais aucun ne répondait exactement à mes besoins et habitudes de développements. Alors quand quelque chose ne me convient pas, moi, je le refais, tout simplement (comme nyroModal par exemple)

Alors qu'est-ce que je n'aime pas ou j'aime dans ces frameworks ?
  • CakePHP : la gestion des bases de données et des objets associés. A l'époque où j'avais testé, on était obligé de modifier les objets lorsqu'on avait des relations entre différents objets. Et puis je n'ai jamais réussi a vraiment faire quelque chose de bien avec. Pas forcément réellement tout testé non plus, je dois bien l'avouer. Là où CakePHP marque des points, c'est dans la génération automatique de l'administration et toutes les fonctionnalités ajax super simple à implémenter.
  • Zend Framework : Je ne l'ai jamais concrètement utilisé car il me paraissait trop énorme. Ce framework a absolument tout ce dont on peut rêver. L'organisation des fichiers, de la documentation et de tout ce qui va autour de ce framework est géniale.
  • Symfony : c'est celui que j'ai le plus utilisé (et que j'utilsie encore). J'aime bien la génération automatique des objets de base de données, même si je trouve cela dommage de devoir regénérer ça à chaque modification de la base de donnée. J'aime pas le grand nombre de fichiers de configuration et encore moins tous les différents formats possibles. Pourquoi s'embetter et donc ralentire le processus avec des fichiers YAML alors qu'un simple tableau PHP fait très bien l'affaire ? La barre de débuggage peut être très utile. La séparation des classes de chaque controller pose problèmes ; dans certains cas, on est obligé de réécrire le code...
Et puis il y a plein d'autres choses qui ne sont pas dans ces frameworks, comme :
  • Gestion simple de formulaire permettant d'ajouter des champs, de vérifier s'il est valide, de le remplir, de récupérer les valeurs, etc...
  • Intégration des règles d'opitimisations de yahoo developper simplement et de base
  • Gestion des images souples, rapide et efficace
  • Intégration d'un éditeur WYSIWYG simple
  • Gestion des fichiers envoyés par les utilsiateurs sécurisée (ie : possibilité de restreindre l'affichage de ces fichiers qu'aux utilsiateurs connectés)
  • Tout est objet
Vous l'aurez compris, ces éléments sont intégrés de base dans nyroFwk.

Dans mon framework, chaque objet a sa propre configuration, qui hérite de toutes la configuration de ses parents. Chaque configuration est définie de base par le framework mais est modifiable pour chaque site très simplement. Suivant les besoins, on peut aussi modifier la configuration de chaque classe suivant le controller (front ou admin). Prenons un exemple, plus parlant. La classe response_http_html gère tout ce qui sera envoyé au navigateur lorsque la page demandée est en HTML. Elle hérite de la classe reponse_http, qui elle hérite de la classe reponse_abstract qui hérite de object. La définition de cette classe est dans le fichier nyro/response/http/html.class.php. Sa configuration est dans le fichier nyro/response/http/html.cfg.php est conteint (extrait) :
$cfg = array(
    'meta'=>array(
        'robots'=>'index, follow',
        'description'=>'nyro project',
        'keywords'=>'nyro, project',
        'language'=>request::get('lang'),
    ),
);
On définit donc les balises meta par défaut de toutes les réponses HTML. A noter que la langue ici est dynamique sera en rapport avec la langue demandée par l'utilisateur (explications plus tard).

Cette configuration est là pour définir des éléments par défaut, mais doit bien évidemment être modifié pour chaque site. Pour ce faire, chaque site aura un dossier personnel dans lequel il doit définir ses classes propres aux sites, mais aussi toutes ces configurations. Ce dossier se nomme par défaut my dans nyroFwk et est placé juste à côté du dossier nyro.

Dans ce dossier propre à chaque site, on peut aussi redéfinir chaque classe de nyroFwk. En effet, à la demande de chaque classe, le framework va vérifier si le fichier correspondant à la classe existe dans le dossier my au bon endroit. Sinon, il cherchera dans le dossier de base du framework. Un mécanisme similaire est utilisé pour les configurations. Au lieu de remplacer la configuration, on va fusionner les configurations successives de la classe, en gardant bien sûr le plus spécifique. Par exemple, pour nyrodev.com, le fichier my/response/http/html.cfg.php ressemble à (extrait) :
$cfg = array(
    'meta'=>array(
        'title'=>'nyroDev, Analyste Développeur Web (PHP, jQuery)',
        'description'=>'Cédric Nirousset, nyroDev : Conception, Analyse et Développement de sites web (PHP, jQuery).',
    ),
);
Je redéfinis les balises meta title et description pour mon site public.

Les configurations sont un point très important pour nyroFwk. C'est pourquoi il est possible de définir encore plus finement ces configurations. Tout d'abord, on peut spécifier le controller de la configuration si on veut être plus précis. Pour mon site, l'administration porte le nom de controller 'admin' et le site public 'front' (par défaut dans nyroFwk). Pour l'administration, on n'a pas besoin des meta description par exemple. C'est la raison pour laquelle le fichier de configuration du site public ne se nomme pas comme je l'ai indiqué plus haut, mais en réalité my/response/http/html.front.cfg.php. Vous avez remarquer le front en plus qui indique que l'on veut l'affciher que pour le site public. Juste à côté, le fichier my/response/http/html.admin.cfg.php existe pour définir les éléments pour l'administration.

Avec ce système, on a déjà quelque chose de tout à fait souple. Mais ce n'est pas fini ! nyroFwk gère les sites multilangues de base. Son fonctionnement est :
  • On définit une langue par défaut
  • On définit les langues disponibles
  • Si l'URL demandé est du type : monsite.com/LANG/maPage avec LANG une langue définit, alors on passe dans la langue demandée.
Bien, et alors, le rapport avec les fichiers de configuration ? Simple, en plus de la spécification par rapport au controller, les fichiers de configuration permettent aussi de spécifier une configuration spécifique pour la langue demandée. Exemple pour mon site qui est aussi disponible en anglais, le fichier my/response/http/html.front.en.cfg.php contient :
$cfg = array(
    'meta'=>array(
        'title'=>'nyroDev, Analyst Developper Web (english) (PHP, jQuery)',
        'description'=>'Cédric Nirousset, nyroDev: Conception, Analysis and Development of websites (PHP, jQuery).',
    ),
);
Ce mécanisme est utilisé à plusieurs endroits dans nyroFwk pour définir des messages à l'utilisateurs. Et comme vous l'avez remarques, ces fichiers sont de vrais fichier PHP. Donc rien ne vous empêchera, quand vous serez plus à l'aise avec le framework, d'utiliser des classes avec des fonctions statiques pour faire d'autres choses comme par exemple utiliser la base de donnée pour modifier ces éléments...

Et n'oubliez pas : les configurations sont successives et n'écrasent pas les autres configurations, aussi bien des classes parentes, mais aussi des configurations du controller et de langue. Ainsi, pour la classe response_http_html, la configuration est le résultat de la fusion des configurations (le plus bas étant le plus prédominant) :
  1. nyro/object.cfg.php
  2. nyro/object.fr.cfg.php
  3. nyro/object.front.cfg.php
  4. nyro/object.front.fr.cfg.php
  5. my/object.cfg.php
  6. my/object.fr.cfg.php
  7. my/object.front.cfg.php
  8. my/object.front.fr.cfg.php
  9. nyro/response_abstract.cfg.php
  10. nyro/response_abstract.fr.cfg.php
  11. nyro/response_abstract.front.cfg.php
  12. nyro/response_abstract.front.fr.cfg.php
  13. my/response_abstract.cfg.php
  14. my/response_abstract.fr.cfg.php
  15. my/response_abstract.front.cfg.php
  16. my/response_abstract.front.fr.cfg.php
  17. nyro/response_http.cfg.php
  18. nyro/response_http.fr.cfg.php
  19. nyro/response_http.front.cfg.php
  20. nyro/response_http.front.fr.cfg.php
  21. my/response_http.cfg.php
  22. my/response_http.fr.cfg.php
  23. my/response_http.front.cfg.php
  24. my/response_http.front.fr.cfg.php
  25. nyro/response_http_html.cfg.php
  26. nyro/response_http_html.fr.cfg.php
  27. nyro/response_http_html.front.cfg.php
  28. nyro/response_http_html.front.fr.cfg.php
  29. my/response_http_html.cfg.php
  30. my/response_http_html.fr.cfg.php
  31. my/response_http_html.front.cfg.php
  32. my/response_http_html.front.fr.cfg.php
Bien sûr, ces fichiers ne sont utilisés que s'ils existent ! Et ceci avec n'importe quelle classe du framework.

Mais je dois créer un fichier pour chaque classe qui en a besoin ? Au début, c'était le cas oui. Mais je me suis aperçu que cela pouvoit devenir très vite long et fastidieux. Ce mécanisme existe toujours et est toujours utilisé car dans certains cas indispensable, mais il existe un autre moyen. En effet, la configuration de la classe nyro permet de modifier la configuration de n'importe quelle classe dans un seul et même fichier de configuration. Par exemple, on aurait pu définir les éléments montrés précédemment dans le fichier my/nyro.front.cfg.php de cette façon :
$cfg = array(
    'response_http_html'=>array(
        'meta'=>array(
            'title'=>'nyroDev, Analyst Developper Web (english) (PHP, jQuery)',
            'description'=>'Cédric Nirousset, nyroDev: Conception, Analysis and Development of websites (PHP, jQuery).',

        ),
    ),
'une_autre_classe'=>array(
'uneAutreConfig'=>'yeah'
),
);
Cette configuration est utilisé en dernier lieu pour créer la configuration de chaque classe.

Vous avez d'ailleurs remarqué la classe object ? Toutes les classes instanciables héritent de cette classe, ce qui permet une gestion centralisée et uniforme des configurations et de la création des objets.

Bon, voilà déjà pour la configuration.

Pour revenir sur les fonctionnalités du framework, voici une liste (sans doute non exhaustive) de ce que gère pour l'instant nyroFwk :
  • Programmation orientée objet
  • Configuration avancée et très souple des classes
  • Gestion des sites multilingues
  • Gestion des bases de données multilingues avec récupération automatique des données propre à la langue
  • Configuration de base de donénes multiples
  • Gestion des utilsiateurs et de leur connexion, vérifications des accès, etc...
  • Gestion des formulaires avancées et souples : validation, affichage, etc...
  • Manipulation des images simplement, avec souplesse et efficacement
  • Création de formulaires directement depuis la structure de la base de données (gestion des données liées et en relation)
  • Création de l'administration automatique
  • Minimisation en un seul fichier compressé des fichiers JavaScript et CSS nécessaire à la page
  • Application d'un maximum de règle d'optimisations données par Yahoo
  • Barre de débogage
  • Editeur WYSIWYG (tinyMce) très simplement intégrable
  • jQuery et jQuery UI intégré
  • Ajax ready : différents templates s'il s'agit d'une requêtes ajax
  • Extensibilité simple et accrue : tout peut être redéfini
  • etc...
Fiou, ça n'a pas été une mince affaire de rédiger tout ça... J'espère que ça vous donne déjà une meilleure idée de ce qu'est nyroFwk et que vous aurez envie d'en savoir plus...

nyroModal aux étoiles du libre

nyroModal a été sélectionné pour les étoiles du libre.

Il s'agit d'un concours visant à récompenser les contributions issues du monde universitaire à des projets libres. Je suis encore étudiant à l'UTBM et nyroModal est open-source. J'ai donc inscris mon projet et il a été sélectionné dans la catégorie "Développement Web et Réseaux".

Samedi prochain, je dois défendre mon projet pour que le jury délibère et détermine le classement final. Dans ma catégorie, les 2 autres personnes sélectionnées sont :

  • Alexandre Lissy pour sa contribution à Kerrighed (probes et politique d’ordonnancement)
  • Nicolas Brodu pour Encours

Je dois préparer une présentation de 8 minutes. J'ai quelques idées à propos de ce que je vais dire, mais j'aimerai votre avis.

Qu'est-ce qui, selon vous, fait de nyroModal un plugin de fenêtre modales différents des autres ?
Quels sont les points importants à mettre en valeur ?
Quels aspects du développements dois-je mettre en valeur ?

Si vous avez des suggestions ou des remarques, n'hésitez pas à les partager via les commentaires.