AngeZanetti.com

Internet et ses usages, développement Web et humeurs diverses

Page 2 of 41

Silex un framework minimaliste PHP que vous devriez tester

Silex est un micro framework édité par SensioLabs, la société qui édite le fameux framework Symfony.

Un micro Framework

Silex est micro, vraiment micro. Même l’installation tiens en deux lignes:

$ curl -sS https://getcomposer.org/installer | php
$ composer.phar install

Une fois ces deux lignes exécutées vous vous trouvez avec:

  • un répertoire vendor qui embarque Pimple, une librairie pour l’injection de dépendances et les modules de gestion HTTP de Symfony ( pour gérer les routes, les requêtes etc..)
  • un répertoire web dans lequel se trouve un fichier index contenant toute voter application (rien pour le moment)
  • et un Composer pour installer en deux coups de cuillère à pot n’importe quelle librairie super utile.
  • et… c’est tout.

Ça ne fait pas lourd, surtout quand on vient de Symfony. Mais quand on y réfléchi deux minutes avec juste ces trois éléments on peut faire beaucoup de choses.

With great power, comes great responsibility

L’architecture de base, celle que je viens de décrire est suffisante pour des petits prototypes, pour tester SIlex ou pour monter votre blog. Mais rapidement, mettre toute vote application dans index.php, voire dans le répertoire web ça devient gênant. C’est pourtant ce que vous trouverez en majorité dans les tutos sur le web.

Si votre projet est fait pour prendre de l’ampleur, pour être maintenu dans le temps par plusieurs personnes il va falloir rendre les choses un peu plus structurées.

Comme Silex n’impose rien, le développeur à le choix. Pour partir sur de bonnes bases je vous propose de partir sur le Skeleton proposé sur Github par SensioLabs: https://github.com/silexphp/Silex-Skeleton

Ça permet de découpler le cœur de l’application du modèle MVC, de séparer les parties publiques et privées. Vous noterez au passage que le composer.json de cet exemple c’est pas mal étoffé et que l’on retrouve des outils Symfony comme Twig ou la console.

L’idée n’est peut être pas pour vous de prendre tout le skeleton, mais en tout cas de s’en inspirer et monter une vraie structure compréhensible et maintenable dans le temps.

Pourquoi pas Symfony ?

J’utilise actuellement Silex parce que le projet que j’ai repris était en Silex, je n’ai pas eu le choix. Cependant je me rends à l’utilisation que Silex peut être une bonne option dans plusieurs cas :

  • Vous voulez monter en compétences sur du PHP objet, savoir vraiment fonctionne des gros framework comme Symfony. Silex est beaucoup plus bas niveau que son cousin, il vous permet de vraiment mettre les mains dans le cambouis, de comprendre comment les choses fonctionnent.
  • Vous avez du code legacy dégueu et vous voulez migrer petit à petit vers quelque chose de plus propre. C’est le cas pour mon projet. 30% du code est horrible en legacy, 30% est sur du Silex mais en mode “Tout dans le index.php” et les derniers 30% ont été codés dans les derniers mois avec plus ou moins le skeleton ci dessus. Silex fonctionne très bien dans cette configuration et nous permet de migrer controlleur par controlleur notre code.
  • Vous êtes un ayatollah de la philosophie KISS, vous ne voulez installer que ce dont vous avez besoin et ne pas avoir un prjet qui finit par embarquer des milliers de lignes de codes qui ne vous serviront jamais.

Pour être honnête, pour des gros projets, des projets à longue durée de vie je vous conseille plutôt de partir sur du Symfony, la doc est mille fois plus abondante,  la structure est fixe et donc l’effort de maintenance et d’évolution sera beaucoup moins important.

Pour le cas d’une migration lente par contre je trouve que Silex est adapté si on part sur de bonnes bases.

Dans tous les cas, Silex vaut le coup d’oeil, au moins pour un side-project. On apprends beaucoup de choses et le chan IRC dédié est d’une grande qualité !

 

Migrer SPIP vers WordPress

Il y a quelques jour on m’a confié une super mission: migrer un blog SPIP vers un WordPress!
J’ai cherché un peu partout une solution simple et clé en main. Visiblement cela n’existe pas vraiment… Il y a bien Korben qui à fait un article la dessus, mais son code n’est plus dispo.

J’ai été cherché du côté de la communauté SPIP – ils sont super sympas d’ailleurs n’hésitez pas à aller leur faire un coucou sur IRC !
J’ai trouvé un tuto pas trop mal fait qui permet d’importer le contenu brut d’un SPIP vers un blog WordPress, tout ne fonctionne pas mais ça dégrossi vraiment le travail.

 

EDIT: Apparement il y a un plugin qui fait ça maintenant  (merci kerfred)

Ensuite il faut traiter toute la syntaxe bizarre du CMS pour en faire du beau HTML. Et là j’ai pas trouvé mieux que du sql, pénible mais efficace…

Le code des requetes est dans un gist ci dessous, n’hésitez pas à le forker !

 

Faire fonctionner le copier/coller avec Vim dans le terminal

Pour faire suite au billet de présentation de Vim que j’ai publié il y a quelques jours un petit tutorial pour activé le support du copier/coller avec Vim en mode console.

Vim n’embarque pas de base la gestion du presse papier de base, et cela pour éviter de surcharger le logiciel qui n’est pas forcement utilisé par des distributions avec une interface graphique – sur les serveurs par exemple.

La première chose à faire est donc de vérifier si Vim est compilé avec le support du serveur X. Pour cela lancez un terminal avec la commande :

vim --version | grep xterm

si dans la liste qu’il vous retourne vous voyez

 -xterm_clipboard

Alors vous avez un Vim sans support de X… Mais pas de panique, il suffit d’installer vim-gui-common ou Gvim/MacVim pour avoir une version de Vim compatible.

Une fois installé vous pouvez utilisé la syntaxe Vim pour mettre vos parties copiées dans le registre du presse papier avec “+y.

Si comme moi, vous êtes pas fan des combinaisons de plus de 2 touches je vous propose les mappings suivant:

" Copy to the clipboard -- need +xterm-clipboard
 nmap <Leader>y "+y<CR>

Ou

set clipboard=unnamedplus

En bonus, une petite astuce pour ne pas mettre dans les registres les morceaux de code que vous couper.

" Permet de couper du code avec d sans écraser le contenu du registre 
 nmap <Leader>d "_d<CR>

 

Vim, un éditeur de texte du 21ème siècle

Je me rends compte que je ne vous ai jamais parlé de Vim sur ce blog. J’ai un vieux brouillon qui date de 2 ans sur le sujet mais je n’ai jamais publié d’articles alors qu’il y a matière !

Vim, pour ceux qui ne le connaissent pas est un “vieil” éditeur de texte en mode texte. J’ai commencé à m’y intéresser il y a 2-3 ans quand je faisais des recherches sur l’ergonomie du poste de travail. En effet Vim à la particularité de ne pas utiliser la souris, vos doigts restent sur le clavier et vos poignets apprécient !

Vim keycap

Vim, un éditeur modal

En deux mots, Vim comporte plusieurs mode de fonctionnement: normal, insertion et visuel. Pour chaque mode la fonction des touches de clavier changent. Alors c’est un peu dur à apprendre mais ça décuple les fonctionnalités d’un éditeur classique! Tout part de là, par défaut, en mode normal, une grosse partie des 105 touches de mon clavier servent à me déplacer dans le texte, sans souris mais de manière très précise, au début du mot suivant, à la fin du mot suivant, au début du paragraphe, de la phrase, à la fin de la ligne etc, etc…

C’est long à apprendre mais c’est redoutable une fois maitrisé, bien plus que les raccourcis Ctrl+Alt+flèches  d’un éditeur type Sublime Text.

Pour creuser un peu allez voir ce lien qui regroupe quelques tutos.

Vim, un éditeur universel

Autre point positif, vi(m) est super léger et présent sur à peu près tous les système d’exploitations sérieux. Je peux donc changer d’OS, me connecter à un serveur en SSH, coder directement sur une VM sans avoir à changer mon workflow, à modifier mes habitudes. Il suffit de copier mes préférences – mon .vimrc – dans ma home et, hop, je suis comme à la maison !

Vim est moderne et extensible !

Dernier point pour les sceptiques, les fonctionnalités des Vim sont largement aussi étendues que celles de votre IDE préféré. Par défaut il embarque la coloration syntaxique, l’auto-complétion, l’indentation automatique et pleins d’autre chose.

Mais Vim c’est surtout un “vieux” logiciel libre avec une communauté énorme de développeurs. Du coup, un peu comme pour WordPress, il y a une multitude de plugins pour faire ce que Vim ne fait pas encore.

Personnellement j’utilise NERDtree qui permet de manipuler et visualiser facilement des fichiers dans un projet et tComment qui permet de commenter les lignes sélectionnées en fonction du langage utilisé, bien pratique pour les **** de commentaires du HTML :)

En ce moment je teste également CtrlP, un équivalent du Pomme T de Textemate pour ouvrir rapidement des fichiers, AcK une alternative à grep pour parcourir le code de tous les fichiers d’un projet et Syntastic qui m’affiche les erreurs de syntaxe directement dans mes fichiers sources.

 Je ne changerais pas  d’IDE

Did you mean: vim?

En plus de deux ans d’utilisation je suis carrément convaincu: Vim c’est bien. La courbe d’apprentissage est longue (je suis toujours entrain d’apprendre) mais ça vaut le coup, plus on code, plus on apprends de nouveaux raccourcis, plus on est productif. Et ce quel que soit la machine, et quand on passe d’un Mac à un PC on est heureux d’avoir fait ce choix !

PS: Il y aura dans les semaines qui suivent un TupperVim d’organiser au Mutualab venez y faire un tour pour découvrir la bête !

Je n’ai qu’un seul client et il s’appelle Coworking

L’année 2013 touche à sa fin et je fais le bilan de mon activité. Durant ce bilan, je me suis rendu compte d’un fait marquant: 100 % de mon chiffre d’affaire de freelance provient du CoworkingLille.

100%!

Tous les clients avec lesquels j’ai travaillés en 2013 sont des coworkers Lillois ou ce sont des clients qui ont été orientés vers moi par ce réseau.

J’ai d’ailleurs presque arrêté de faire des articles sur mon blog – qui me ramenait pas mal de clients jadis. Je ne fais pas de démarchage, sauf peut être un peu de “community-management” sur Twitter.

A la place je me contente d’être là, ou plutôt la bas, tous les jours ou presque. Et pas pour ramener des clients, non. J’aime juste être la bas, on y apprends beaucoup, on monte des projets sympas, on boit des bières et je travaille bien mieux que si j’étais chez moi.

C’est magique. Tout simplement. Alors que l’on a toujours du mal à trouver un business model pour les Coworkings. Du malà faire de ses lieux d’échanges des lieux économiquement viables sans être sous perfusion des acteurs publics, les retombées pour les membres sont assez hallucinant : 100% du CA !

Alimenter l’éco-système

Plus je réfléchi, plus je débat avec mes copains du Mutualab sur les différentes possibilités de financer notre lieu et plus je suis convaincu que les seules vraies solutions sont dans tout ce qui alimente la machine: monter des projets qui créer de l’activité pour les membres, qui à leur tour monteront des projets qui créeront de l’activité etc, etc…  Cela marche, j’en suis un exemple vivant -et je ne suis pas seul – et c’est probablement la seule solution viable dans le temps.

Après, c’est comme partout il faut trouver l’énergie et l’argent pour lancer la machine !

Cela fait longtemps que je me dit qu’il faut que je modifie un peu tout ça, que je fasse le ménage mais j’ai plus vraiment le temps, plus vraiment l’envie de refaire ce que j’avais fait pour le thème précédent: monter un thème “from scratch”.

Et puis j’ai mis à jour WordPress, c’est une bonne idée il paraît, et j’ai trouvé que le thème par défaut, Twenty 14, avait de la gueule avec son design flat et son gros bandeau noir.

Du coup, hop hop, deux trois coups de CSS vite fait et hop nouveau look !

Rien de vraiment personnalisé, mais ça correspond aussi à mon usage du moment, je blog moins, VRAIMENT moins, presque plus en fait.

J’ai moins de temps, plus de boulot, et c’est une bonne nouvelle :) Et j’ai surtout moins besoin de partager ici depuis que je passe mes journées à refaire le monde, à trouver des idées pour conquérir la planète avec mes copains du Coworking !

Mais bloguer me manque, je le regrette dans le fond de moins partager ici ce qui me fait marrer/m’énerve ou m’interpelle.

Il faut vraiment que je reprenne le ryhtme, surtout que j’ai pas mal d’idées de billets sous le coude avec des projets Symfony, des outils sympas et deux trois coups de gueules.

Bref, Stay Tuned !

 

Pour sortir du lot mettez vous dans une niche !

Depuis que les mondes virtuels sont en baisse, que je ne peux plus vivre avec cette activité il m’a fallu changer de cap, me recycler.

Et je me suis perdu.

DSC_6698

Devant la palette de technologies, d’outils qui sont disponibles j’ai testé pas mal de trucs: NodeJS, WebGL, Ruby on Rails, WordPress, Jekyll, Symfony, Zend et à chaque fois il faut apprendre de nouveau les bases du framework, recommencer à comprendre les grands concepts etc… Si j’ai testé autant de technos c’est que j’aime ça, découvrir de nouveaux outils m’a toujours plu et, au delà du défi “geek“, ça permet aussi d’améliorer sa compréhension de l’univers du web. Mais, et c’est là que le bat blesse, ça n’a jamais fait gonfler mon portefeuille client, au contraire.

Vu de l’extérieur être un “touche à tout” est souvent pris pour du papillonnage, cela brouille les pistes pour vos futurs prospects et même si c’est excitant professionnellement c’est souvent synonyme de perte de temps – il faut réapprendre tout le temps – et de mauvaise estimation de temps passé.

Du coup, personne ne comprends vraiment ce que vous faites, et les contrats que vous remportez sont souvent mal vendus. Au final on fini par se fondre dans la masse des freelances qui “font du web”, sans réelle plus value la concurrence est rude surtout si on met dans la balance les développeurs indiens !

Bref c’est un mauvais calcul !

J’ai l’impression que la solution est de faire carrément l’inverse, choisir une techno qui nous plait, qui paraît robuste et s’y tenir. Au passage avant de foncer tête baissé, allez faire une  tour sur la timeline Twitter de l’outil, regardez les annonces de jobs, bref vérifiez qu’il y a de la demande. Dans le cas de Symfony par exemple c’est très clair : la moitié des tweets français sont des recherche de compétences !

Une fois la techno choisie, communiquez de façon hyper ciblée, spécialisée, faites vous identifiez comme un “expert” de la solution. Mettez en avant vos compétences techniques, votre expérience sur le sujet, faites du réseau en local et sur Twitter. Je vous parie qu’en quelques mois pour une techno demandée vous avez des clients.

Au passage, en l’écrivant je me dis que rien n’empêche d’avoir deux trois activités distinctes sur plusieurs technos différentes, le tout étant de garder une ligne et un discours hyper centré sur chaque projet. Le tout est d’avoir assez d’énergie pour animer 3 blogs, 3 twitters et faire de la veille sur toutes ces technos !

Voilà, cela fait longtemps que cette problématique me trotte dans la tête, j’ai d’ailleurs expérimenté l’inverse avec une “agence” montée au sein de CoworkingLille qui finalement n’a jamais marché justement parce notre discours était beaucoup trop large et que l’on avait pas de ressources commerciales suffisante pour assurer ce grand écart.

Et vous comment faites vous ? Quelle est voter solution pour sortir du lot ?

Installer un environnement de développement avec VirtualBox

Travailller avec un LAMP, ou un MAMP, installé en local c’est bien pour des petits projets, type création de thème/plugins WordPress, mais pour les projets plus conséquents avec des technos plus exotique que PHP il peut être nécessaire de virtualiser un système d’exploitation pour travailler. Je vous conseillle d’ailleurs de mettre en local le même système que votre machine de production, ça limite grandement les surprises de mise en prod !

Etape 1 : Installation de VirtualBox et de l’OS

Vous trouverez des milliers de tutos sur le web pour installer votre distribution préférée et sur la procédure d’installation de virtualbox, rien de bien compliqué. Petites remarques toutefois, préférez bien sur des OS stables genre debian, ubuntu LTS , CentOS etc… Les distributions à la mode ne sont pas forcement un choix judicieux pour une machine de production.

Limitez les ressources que vous allouez à votre machine, un OS serveur n’a pas besoin de beaucoup de ressources (256Mo de RAM et un petit de processeur devrait suffire) sinon vous allez vraiment avoir du mal à bosser dans de bonnes conditions.

Etape 2 : Configuration de l’OS

Une fois que tous vos paquets sont installés et que votre serveur virtuel tourne bien il va falloir le mettre en relation avec votre machine afin de travailler dans de bonnes conditions.

Pour l’accès je recommande un bon vieil SSH, c’est simple et efficace :

sudo apt-get install open-ssh

Pour le serveur web et le langage je vous laisse choix, nginx, apache2 ou autres, idem PHP, Ruby, Python, faites votre marché !
NB: Faites attention à bien installer la version identique à celle du serveur de production, toujours dans un soucis de compatibilité.

Etape 3 : Configuration du réseau

Ensuite, il faut pouvoir accéder à son serveur depuis son navigateur pour afficher les pages web, pour ça c’est un peu plus complexe, mais pas sorcier non plus.

D’abord rendez vous dans configuration/Réseau de votre machine virtuelle et configurer la carte 1 en NAT, et ajouter une deuxième carte en Réseau privé comme ci dessous  :

Reseau Virtualbox

Ensuite, on va configurer les interfaces réseau dans l’OS directement  – ici une debian. On édite donc  /etc/network/interfaces dans lequel on trouvera lo et eth0 nous allons ajouter eth1 à la fin du fichier :

# The host-only network interface
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255

Ensuite, pour des raisons pratiques nous allons donner des noms à ces serveurs virtuels pour éviter de retenir des adresses IP obscures, en éditant le /etc/hosts/ de votre machine hôte et en ajoutant :

192.168.56.101    myserver1
192.168.56.102    myserver2

Et voilà vous avez une machine de développement fonctionnelle, reste plus qu’a mettre votre framework préféfé et à installer git pour travailler en équipe !

Connaissez vous Cryptocat, le chat anti-PRISM?

Sur Github on trouve vraiment des petites merveilles, le dernier projet vraiment sympa que j’ai découvert s’appelle Crypto.cat. En deux mots cryptocat c’est du chat de groupe un peu comme IRC mais qui crypte les conversations afin de rendre vos correspondances vraiment privées.

cryptocat

Rien de vraiment nouveau, ce type de techno existe depuis des années avec PGP ou OTR mais ce qui est cool chez cryptocat c’est la volonté de se mettre au niveau du chat de Facebook en terme d’ergonomie et de facilité d’usage. Le constat est simple, depuis PRISM il est sans appel, les sociétés américaines qui hébergent nos données ne se privent pas pour regarder au passage vos conversations, vos mails, et revendre vos données.

Le but de Crypto.cat est clairement de draguer les utilisateurs de Gtalk, du chat Facebook ou autre MSN, et de les amener vers une techno qui préserve la confidentialité des échanges sans pour autant devoir se taper de la configuration, des clés de chiffrage asymétriques ou autre machin de nerds.

Et je dois dire que le pari est vraiment réussi, il suffit d’installer une extension sur son navigateur, de cliquer sur l’icône et de rentrer son pseudo et de le nom du salon de chat que l’on veut rejoindre. Tout le reste se fait tout seul, et l’ergonomie est franchement bien pensé, même le design est cool !

D’un point de vue technique c’est tout aussi intéressant, c’est une implémentation du protocole OTR – Off the record – 100% en Javascript ! Un vrai défi technique de faire de la crypto avec un langage aussi “flou”.

Comme tout projet crypto un peu sérieux c’est opensource, allez jeter un oeil sur le site , téléchargez l’extension et rejoignez nous sur la conversation Mutualab !

NB : Attention toutefois cryptocat ne masque pas votre identité, ni votre IP et c’est toujours une application en phase bétâ :)

Freelances contribuez au libre pendant vos temps morts

Dans la vie professionnelle de tout indépendant il y a des temps morts. Entre deux contrats, avant ou après avoir fait de la prospection commerciale, les moments où l’on est pas forcement débordé sont assez fréquents. Hors ce sont bien souvent ces temps là qui nous permettent de nous former, d’apprendre, de faire de la veille.

Freelances contribuez à l'opensource

Depuis quelques temps déjà j’essaye de consacrer ces temps morts à des projets opensource. Je ne le faisais pas forcement avant, mais clairement c’était une erreur pour plusieurs raisons :

Cela permet de faire de la veille active

Être développeur c’est être curieux, être capable de s’adapter aux nouvelles technologies et donc d’apprendre sans cesse. Alors, bien sur, on peut lire des tonnes de flux RSS mais la meilleure façon est encore de mettre les mains dans le code. “C’est en forgeant que l’on devient forgeron”.

Contribuer à des projets libre c’est donc se confronter à de nouveaux outils, à de nouvelles méthodes de travail mais dans une ambiance moins tendue que dans une relation client/prestataire classique. Cela peut être l’occasion de tester le framework de vos rêves de mettre les mains dans un nouveau langage etc… Le plus souvent vous êtes en plus épauler par les anciens de la communauté qui n’hésitent pas à vous donner un conseil, une astuce, une vraie aubaine quand on apprend une nouvelle techno !

Cela contribue à forger vos références et votre réputation

Mettre son temps libre à profit pour des projets opensource cela permet bien sur d’augmenter le nombre de ces compétences, de monter son expérience sur telle ou telle techno mais cela peut aussi faire une jolie référence à présenter à vos futurs clients. De plus, la réputation d’un développeur passant de plus en plus par son profil Github, contribuer à un projet Github libre, le forker, commiter faire des pull request fera monter votre activité sur le réseau social et permettra à vos clients, ou à d’éventuels recruteurs de vous trouver et de voir la qualité de votre code, vos compétences et votre implication.

Faire du libre c’est surtout aider des projets vraiment cools

Evidemment, et, à mon avis c’est le plus important contribuer au libre c’est aussi aider des projets qui en valent la peine. D’ailleurs à ce propos Github est un vrai vivier de petits projets super cools qui ont besoin d’un coup de main ! Je rappelle d’ailleurs que contribuer ce n’est pas forcement coder. En fait c’est bien souvent le reste qui fait défaut. Il y a souvent plus besoin de graphistes, d’ergonomes et de traducteurs que de développeurs. D’ailleurs contribuer ça peut tout simplement être de remonter les bugs.

Bref, la prochaine fois que vous avez un jour ou deux à tuer, sans activité réelle allez faire un tour sur Github, essayer de rencontrer les gens qui font les petits outils que vous utilisez ou tout simplement allez sur les trackeurs de bugs des géants de l’opensource – Mozilla par exemple facilite vraiment la tâche des ces futurs contributeurs – et traduisez, codez, designez, aidez vous verrez c’est beaucoup plus gratifiant, valorisant et plaisant que d’attendre les futurs clients !

 

« Older posts Newer posts »

© 2017 AngeZanetti.com

Theme by Anders NorenUp ↑