nyroBlog
Bannière NyroBlog, par Nyro
Image par Nyro - ?

Tag : Buzz


Revue de presse de la calculette freemobile

Vous avez peut-etre (sûrement ?) entendu parlé de la calculatrice pour savoir s'il est avantageux de changer d'opérateur mobile, que j'ai mis en place une heure après le l'annonce de l'offre de free mobile.

Comme j'ai été le premier à mettre en ligne cet outil, l'echo a été fulgurant et les partages sur Twitter et Facebook ont dépassé tout ce que j'aurai jamais pu imaginer.

En attendant un vrai retour sur cette expérience à tête reposée, voici la revue de presse (qui évoluera au fil du temps) de cette fabuleuse expérience.

 

Et je ne le dirai jamais assez, mais merci encore à tous ceux qui ont partagé ce lien, qui m'ont conseillé, donné des idées d'amélioration, etc...

Un grand merci à Aymeric aka Miho qui m'a proposé un graphisme rapidement.

FF1J, une semaine après

Je n'ai pas pu y aller (et d'ailleurs je n'y suis jamais allé, c'est un truc d'artiste ce machin...), mais j'aime toujours regarder les vidéos finales.
Et cette année, il y avait plusieurs équipe de SRC qui m'ont bien plu. D'ailleurs l'équipe Enormous Pelican a gagné le prix du public et le Chrono d'or.

Le FF1J (Festival du film d’un jour) est un festival organisé par les étudiants de l’UTBM de Belfort. Ce festival se déroule sur 3 jours, pendant lesquels des équipes de tournage d’étudiants de toute la France doivent réaliser les meilleurs courts-métrages. Ils ont 50h pour trouver un scénario, tourner et monter leur court, ceci à partir d’un thème dévoilé le premier jour.

La vidéo d'Enormous Pelican :


La vidéo d'Hage :

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...

A propos des réseaux sociaux

Bientôt 3 mois sans un seul billet sur ce blog ! Quelle honte !

Mais en lançant dans ce billet, j'espère que je vais reprendre le goût d'écrire de longs billets. Et ce billet est d'ailleurs ici pour expliquer en partie pourquoi les billets se sont fait s'y rares...

La première raison est bien sûre la période estivale et les différents séjours dans les Alpes que j'ai pu faire cet été (j'en reparlerai sûrement dans un billet futur).

Mais l'autre raison est mon utilisation de plus en plus accrue des raisons sociaux. Oh, il n'y en a pas beaucoup. Je vais donc tous les lister pour vous en donner l'utilisation que j'en fais, aussi bien d'un point de vue personnel que professionnel.

Facebook

Sans doute le plus connu car le plus médiatisé, et plus simplement, le plus utilisé avec ses quelques 300 millions d'utilisateurs. Inscrit depuis plus de 2 ans maintenant, j'ai commencé à l'utiliser régulièrement lorsque j'étais à Los Angeles pour rester en contact avec mes amis français, voir les photos de leurs soirées, prendre des nouvelles comme des naissances, des mariages et bien d'autres choses. Facebook est le réseau social par excellence pour ce qui est des relations personnelles. Parfois on y dit un peu n'importe quoi, partant des discours sans queue ni tête où seule la dérision et le burlesque sont de mises. Concernant les applications comme les quizs, tests, et autres futilités, je n'en ai pas installé une depuis plus d'un an. Je me contente des status, des photos, des vidéos, de laisser des messages sur les murs des amis, de la messagerie interne quand je n'ai pas d'autres contacts sur la personne et des événements auxquels je suis invité.

Depuis peu, j'ai créé la page de fan de nyroDev pour me vendre un peu et avoir un espace sur le web supplémentaire. Je ne suis pas persuadé que cela puisse me ramené des clients aujourd'hui, mais ça ne coûte rien de s'y mettre et de voir l'impact que ça peut avoir. Je pense au contraire que je pourrai peut-être y trouver un futur stagiaire ou employé, comme beaucoup d'étudiants SRC en sont fans. (oui oui, il existe bien des fans de nyroDev, ils sont au nombre de 173 aujourd'hui !)

Dans une plus petite mesure, j'ai aussi créer la page de la Gym de Thise, le club dont je suis le vice-président pour la seconde année. Toujours dans la même idée, cette page permettra d'annoncer les concours et événements organisés par le club, les résultats. En complément du site, cette page permettra d'être en contact beaucoup plus rapidement avec les membres les plus jeunes du club.

 

Twitter

J'ai découvert twitter lors de mon séjour aux Etats-Unis, où j'avais développé une petite application PHP pour mettre à jour un compte en fonction des messages envoyés. J'ai créé mon compte tardivement, et il est resté très longtemps inutilisé, sans statut et moins d'une dizaine de followers/followed. Et puis au début de l'été, je m'y suis mis pour tester, mais sans grande conviction. J'ai commencé par suivre mes amis et connaissances de SRC, mes connaissances professionnelles. J'ai ensuite ajouter les comptes twitter des boîtes de communication qui me paraissaient intéressante et avec des tweet pertinents. Dans le même temps, je me suis pris au jeu, et le nombre de mes tweets a progressé doucement et régulièrement.

Twitter est la principale raison pour laquelle ce blog a été délaissé. En effet, twitter permet un échange d'informations très rapide et sans contraintes. On retweet les informations des autres pour les partager, on découvre les informations aussi beaucoup plus rapidement. Mais pour aller vite, il faut remettre à jour ses pages souvent. Heureusement, des plugins firefox sont là pour nous aider ; j'utilise Echofon qui fonctionne très bien. Et lorsqu'on tweet, on pense moins au blog pour la simple et bonne raison que l'information est déjà partagée et qu'elle se propoage beaucoup plus rapidement.

Bien sûr, le contenu rédactionnel de twitter et beaucoup plus faible, et se limite la plupart du temps à un titre et un lien vers... un billet d'un blog ! Ce billet sera d'ailleurs publié dans twitter pour augmenté son nombre de lectures, et sur Facebook !

Grâce à twitter, j'ai su bien avant que cela soit publié dans les blogs des journaux qu'on avait trouvé de l'eau sur la lune, qu'Ardi était encore plus vieux que Lucie, que Barack Obama avait eu le prix Nobel de la paix, etc etc...

Et puis j'ai aussi tweeté depuis le sommet du Mont-Blanc grâce à mon téléphone portable ; j'ai été un peu déçu du retour de ce tweet, car je pense avoir été le premier à l'avoir fait. Mais ce manque de retour est sans doute dû à ma jeunesse sur Twitter et mon faible nombre de followers.


Viadéo

Inscrit sur Viadéo là aussi depuis longtemps, je l'utilisai au strict minimum, en me contentant d'accepter les demandes de mises en relation. Sur les conseils de Sandrine Décembre, j'ai rejoint de nombreux Hubs en rapport avec mon activité professionnelle et ma localisation géographique pour être en relation avec des clients potentiels. Pour l'instant, je n'ai encore eu aucun retour et demande de devis ou similaire grâce à Viadéo, qui est le réseau social professionnel français le plus primé.

Mais je ne désespère pas. En effet, j'ai assisté il y a quelques semaines à un séminaire organisé par Franche-Comté Interactive et animé par Eric Gorneau, qui n'est autre que le PDG de Ciméos. Même si ce séminaire n'était vraiment pas terrible, j'ai retenu un seul chiffre : M. Gorneau estime que 10% de son chiffre d'affaires de 1020 viendra depuis des contacts Viadéo. Ce n'est donc pas négligeable, surtout quand on connaît le très faible investissement pour s'y mettre.

Suite à ce jour là, j'ai mis à jour mon profile Viadéo pour y mettre une description détaillé de mon travail et corrigé les erreurs que j'avais pu y mettre. J'en ai profité pour rejoindre de nouveaux hubs, demander de nouveaux contacts parmis les amis de mes amis, etc... j'ai augmenté mon nombre de contacts et déjà quelques demandes de personnes qui seront potentiellement des clients futurs. Tout ça, sans débourser un sous, et n'y passant que très peu de temps, les descriptions étant des copiés/collé de mon site web.

 

Pour finir

Enfin, pour conclure ce billet, je dirai simplement que si vous n'êtes pas encore sur ces réseaux sociaux, vous devriez vous y mettre rapidement. Même si vous n'y passez pas beaucoup de temps, vous y serez et des clients potentiels pourront voys y trouvez. Un simple lien vers votre site internet suffira à rediriger la personne si vraiment elle est intéressé. Et ça évitera aussi le cyber-squatting de votre nom, qui peut être totalement dévastateur.

Mais si vous êtes vraiment motivé, que vous commencez une activité avec peu de moyens, je suis persuadé que ces outils peuvent être un moyen rapide, efficace et gratuit d'obtenir de nouveaux contacts, qui pourront se transformer en client par la suite.

nyrodev.com has a nice refresh

I was a long time since this one was on the boxes, it finally cames out: the new version of my website is online!

Aymeric aka Miho designed it; I think it's very clear and let a good place for the content with a great readability.

I developed it using my own framework which optimizes every to the server by compressing every HTML pages. It also merges and compresses CSS and JavaScript after removing all the comments and useless whitespaces. With that my website gains a A-grade with YSlow - only one F for not using CDN and one B for contents without cookies.

I also enjoyed make it accessible without reloading the page using AJAX and jQuery. I used jQuery address which works perferctly. And nyroModal is also in the party to show the references. Of course all pages are accessible without JavaScript for a better ranking.

In the same time I left phpMyVisites to use Google Analytics, using the manual tracker for Ajax pages.

Finally, I want to thnaks the following personns:

  • Miho for the design
  • My mother for the French corrections
  • Chonchon for the English corrections
  • Florian for the new logo

To celebrate this, I created a facebook group and I'm twitting again more often. Don't hesitate to join the group or follow me!

If you have any remarks, suggestions or anything else to say about the new wbesite, the comments are here for you!