AngeZanetti.com

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

Je suis à San Francisco !

Plusieurs mois après le billet qui l’annonçait, ça y est j’y suis ! Je suis à San Francisco, dans la Silicon Valley pour tester notre produit sur le marché US ! Nous sommes dans un accélérateur  TheRefiners, ils nous aident à faire grossir notre réseau ici et à nous adapter aux moeurs américains!

Cela fait un bien fou de se retrouver dans une ambiance d’entrepreneurs, des gens motivés par leurs projets qui sont là pour avancer. Et c’est vraiment le bon endroit pour faire ça.

Pour tout vous dire, je n’y croyais pas vraiment avant d’arriver, au mythe de la Silicon Valley. Mais je dois admettre que c’est vrai. Il y a ici une ambiance et surtout une telle densité d’entrepreneurs, de start-ups et d’investisseurs que c’est probablement le meilleur endroit pour monter une boite dans la tech. Clairement.

Nous sommes là pour 3 mois, cela fait 3 semaines que nous sommes arrivés et nous avons déjà tellement appris: les différences culturelles (qui sont assez nombreuses finalement cf mon poste sur le blog corporate), comment se vendre, faire un deck, comment recruter,…

L’accélérateur embarque 12 startups pour sa première “fleet“. Les projets sont tous différents, mais tous on un vrai truc à apporter.

En deux mots tout va bien :) En espérant que l’essai se transforme, je partirai bien en expat’ ici, il fait bon vivre de ce côté de l’atlantique !

 

Je pars monter une boîte aux US !

Sellsecure USA

Cela fait plus de deux ans que je bosse chez Sellsecure, quand je suis arrivé il fallait tout changer, ou presque. 30 mois plus tard nous avons changé de méthodes de travail, mis en place des revues de code systématique, nous utilisons Git, il y a des tests plus ou moins automatisés sur les projets et surtout nous avons refondu quasiment 100 % des appplicatifs.

Tout le vieux PHP legacy a disparu, et à été remplacé par du Symfony2. J’ai aussi refait tout l’architecture du SI pour être scallable et plus résilient. Tout n’est pas fini mais nous ne sommes plus dans la phase de refonte active, plutôt dans du run. Et le run c’est pas vraiment mon truc.

Du coup quand Robert, le DG de SellSecure à évoqué un projet aux USA j’ai levé la main. Parce que j’aime les défis, j’ai bien envie de bouger et parce que je suis un peu naif aussi.

Et le temps faisant, le projet qui était surtout un rêve au départ devient de plus en plus concret. Valentin Auvinet à été embauché pour partir avec moi, nous sommes en plein dans l’étude de marché US et dans la réflexion sur comment/pourquoi/avec qui monter une filiale de SellSecure aux USA.

Nous partageons d’ailleurs notre quotidien sur ce blog: https://medium.com/@Sellsecure_USA

L’idée est de partir 3 mois pour mettre en pratique le Lean Startup, savoir rapidement si le succès de Sellsecure est transposable aux USA. Ces trois devraient se dérouler fin 2016. Et si le retour est bon nous faisons nos valises aux alentours de mi 2017 pour la Silicon Valley avec pour objectif de monter et faire grossir un “fork” de Sellsecure aux USA !!!!

How cool !

Entrepreneur salarié, 3 ans après

Il y a 3 ans maintenant je suis passé d’autoentrepreneur à entrepreneur salarié, au sein de grandsensemble. J’en avais parlé rapidement sur ce post, mais rien de précis.

Trois ans après, je suis toujours sous ce statut. Cela m’a beaucoup aidé sur pleins de choses, et même si je suis toujours à la recherche du statut idéal je pense que celui d’entrepreneur salarié me convient pas trop mal.

Du coup, j’ai pensé que ça pourrait toujours être utile de faire un post sur cette solution de création d’entreprise assez peu connue.

L’argent

On va commencer par le nerf de la guerre. Le statut de salarié coûte extrêmement cher. En gros, plus de la moitié de ce que je facture tombe dans les mains des différents caisses, taxes et autres impôts.

Oui, 50% !

C’est énorme, mais j’ai fais le calcul pour comparer à une SARL/ SAS et la différence n’est pas énorme (de l’ordre de 5% du CA / an dans mon cas). Il faudrait affiner plus mais j’ai l’impression que les 5% valent largement les avantages que je vais vous décrire ensuite.

Le régime social

L’avantage principal de ce statut c’est que suis salarié, au régime général, comme tout le monde. J’ai signé il y a trois an un CDI chez GrandsEnsemble comme développeur Web, j’ai un salaire qui tombe tous les mois (toujours le même j’en reparlerai), une mutuelle d’entreprise, un (petit) CE etc…

Et ça change la vie !

En fait, c’est tout con mais je rentre dans les cases de MrToutLeMonde:

  • J’ai une carte Vitale, en AE j’ai passé plusieurs années sans réussir à en avoir une via le RSI – et, à en croire mon entourage je ne suis pas le seul.
  • Je paye mes impôts simplement, tout est prérempli
  • Les banquiers ne me crachent pas dessus, les loueurs non plus
  • Et, si ça n’explose pas en vol, j’aurai droit à une retraite et à du chômage

Bref, être salarié c’est vachement plus simple pour la vie de tous les jours. Je ne dis pas que c’est impossible d’être entrepreneur juste que pour tout un tas de petites raisons c’est pénible. Simplement parce que le statut est méconnu et mal géré.

Le salaire

Avoir un salaire fixe quand on travaille comme indépendant ça peut paraître bizarre, surtout quand on a une activité en dents de scies.

Mais ça a été super salvateur pour moi. Je m’explique.

Pour fixer ton salaire, la coopérative prends tes revenus sur une longue période (entre 3 et 6 mois suivant les activités), enlève 50% de charges et garde de la trésorerie pour palier les trous d’activités. Ensuite tu divises par le nombre de mois et hop tu as ton salaire.

Par exemple, sur 3 mois j’ai rentré 6000€ HT de facture, soit 3000€ sans les charges, je garde 1000€ de treso, il me reste 2000€ / 3 soit ~660€/mois.

Ça été salvateur parce que ça permet de savoir vraiment combien tu gagnes avec ton activité, c’est tout bête mais tu peux te comparer facilement avec n’importe qui et surtout ça évite les sensations en dents de scie ou tu es hyper content de facturer 6000€ au mois de Janvier, mais tu ne rentres rien en Février ni Mars en te disant: “Boarf, j’ai fais un belle facture en Janvier c’est bon”

J’avais tendance à raisonner comme ça en AE, en CAE tu comprends vite que 600€ de salaire pour bosser tous les jours (et le week end souvent) c’est pas viable du tout. Ça permet d’avoir un œil raisonnable sur son activité et de faire de choix en fonction.

Ce système de lissage du salaire permet aussi de gérer beaucoup plus facilement sa vie perso, le même salaire tombe tous les mois ( que tu bosses ou pas d’ailleurs)

Ce système de lissage à des avantages mais il a aussi des inconvénients, il faut du temps pour monter en salaire et chaque augmentation doit faire l’objet d’un avenant au contrat de travail.

L’accompagnement

Je dois dire que cet aspect de la CAE n’a pas été le plus important pour moi, mon activité était déjà lancée depuis plusieurs années lors de mon passage en CAE mais pour un entrepreneur débutant c’est un plus indéniable de ne pas se retrouver tout seul.

Et pour les personnes qui, comme moi, ont du mal à être rigoureux avec la comptabilité c’est toujours bien d’avoir quelqu’un qui gère le tout et qui vous aide à prendre des décisions !

La suite

Logiquement une CAE est un tremplin, une façon de tester une activité sur deux ans, même s’il est possible d’y rester plus longtemps. Cela fait maintenant presque une année que je cherche une solution pour prendre le relais mais je n’ai toujours pas sauté le pas.

D’abord parce que ce statut me plaît, ensuite parce que je n’ai pas envie de monter ma boite tout seul (pour pleins de raisons administratives, financières et personnelles) et que le confort du salarié est difficile à laisser partir !

Voilà pour ce petit retour d’expérience sur mon statut juridique, si vous avez des remarques, des questions ou des insultes n’hésitez pas à commenté ce billet ou à me joindre sur Twitter.

 

 

Fuite mémoire avec curl et NSS sous RedHat

Depuis plusieurs mois je travaille pour une startup qui fait de la lutte contre la fraude. En deux mots, les clients nous envoient des flux XML et nous leur renvoyons note correspondant à l’indice de confiance de la transaction.

Et, début Janvier nous avons intégré un GROS client. Du genre à faire pâlir les sysadmin. Cela nous à forcer à reconstruire une partie du code, à revoir l’architecture de l’application (qui est au passage devenue une application symfony2).

Le problème à été de faire communiquer la nouvelle partie avec l’ancienne, et comme nous sommes en PHP, ben nous avons opté pour Curl.

Pour chaque score demandé nous avons donc un appel CURL du nouveau code vers l’ancien. Rien d’inquiétant, cela fait partie de l’habituel en PHP.

Sauf que là :

 

Une belle grosse fuite mémoire, entre chaque restart Apache pas moyen de savoir où partait la mémoire. Nous avons d’abord accusé Symfony, l’ORM à assez mauvaise réputation avec des dæmons et Doctrine avoue ne pas être taillée pour absorber de la charge.

J’ai donc mis en place les fix nécessaires: forcer le garbage collector, désallouer la mémoire des objets inutilisés mais rien n’y faisait.

J’ai ensuite testé de lancer mes commandes en –no-debug, de virer les logs mais pas mieux, ma mémoire disparaissait toujours dans les méandres de mon système…

Toute ma RAM foutait le camp, de manière pernicieuse, petit à petit, Mo par Mo jusqu’à arriver à la limite du système, aux alentours du Go de libre – NB: le serveur n’avait pas l’air de souffrir par ailleurs, l’application ne ralentissait pas outre mesure…  

NSS Softoken

Finalement c’est le sysadmin qui à trouvé l’origine, en farfouillant sur le web. Je lui avais parlé peu de temps avant d’une histoire de fuites mémoire dans le CURL, vaguement, j’avais rien pigé à l’article. Il est retombé dessus quelques jours plus tard, et BIM, révélation! Notre fuite mémoire était en fait dû à une faille système, une sombre histoire de NSS (Network Security Services), qui est utilisée par libcurl et qui faisait du cache là où elle ne devrait pas.  C’est assez bas niveau, mais c’est un bug connu sur la version 3.16.0. C’est la version actuelle sur RedHat… Si vous voulez plus de détail je vous invite à lire cet article qui est la source de nos modifications : https://www.splyt.com/blog/2014-05-16-optimizing-aws-nss-softoken

Le fix est assez simple, il suffit d’ajouter une ligne dans la conf’ Apache:

# execute these commands as ‘root’ echo “export NSS_SDB_USE_CACHE=YES” >> /etc/sysconfig/httpd service httpd restart

Et voilà, comment retrouver le sourire et plusieurs Go de RAM ! 

Eviter les attaques par bruteforce sur WordPress

A l’heure où j’écris cet article ce blog subit une attaque de type bruteforce depuis plusieurs heures. C’est donc le moment idéal pour faire un petit tuto sur comment se protéger de ce type d’attaques dont les sites WordPress sont de plus en plus la cible.

2907405284_9b57d65695_o-676x287

Bruteforce ?

Les attaques bruteforce sont les attaques les plus basiques et les plus stupides du monde. Prenez un site que vous voulez attaquer et qui est protégé par mot de passe. Pour trouver ce mot de passe vous allez tout simplement tester toutes les combinaisons possible, aussi longtemps qu’il le faut jusqu’à ce que vous tombiez sur le mot de passe en question.

Prenons un exemple.

Mon site est protégé par le mot de passe “123”. Si je veux bruteforcer, je vais tester TOUS les mots de passe possible. D’abord les chiffres, les nombres puis l’alphabet puis les couple lettres + chiffres puis lettres + chiffres + symboles.

Dans notre cas, je ferais quelque chose comme:

1, 2, …, 11, 12, 13, …, 111, 112, … pour finalement arriver à 123.

Un vrai nom d’utilisateur

WordPress est une plateforme de blog devenu très populaire, c’est donc devenu, par la même occasion, une cible privilégiée de réseau de robots (appelés botnet) qui scannent le web à le recherche de site WordPress et qui déclenchent des batteries de bruteforce dessus.

Comme vous le savez, pour se connecter à l’interface d’administration de WordPress il faut un login et un mot de passe.

Les robots vont donc essayer de se connecter avec des utilisateurs “génériques”. Évitez donc d’avoir des utilisateurs avec pour login

admin, root, test, lenomdevotresite (ici angezanetti), etc …

Le mieux étant d’éviter de mettre le pseudo de celui qui publie les articles comme admin. Par exemple l’utilisateur qui publie les articles s’appelle toto et n’a que les droits d’auteur. Un autre utilisateur du nom de tata à lui les droits d’administration.

Cela devrait déjà beaucoup compliqué la tâche de nos cher botnets.

Des mots phrases de passe

Ensuite pour se prémunir plus efficacement il faut choisir avoir un mot de passe complexe, ou mieux, une phrase de passe.

Avec l’exemple ci dessus on comprends bien que pour un ordinateur faisant plusieurs millions de combinaisons à la secondes, énumérer tous les nombres de 1 à 123 prends quelques secondes alors qu’avec un mot de passe du genre

j’adoreangezanetti.com

C’est déjà beaucoup plus compliqué ! D’ailleurs plutôt que de prendre des mots de passe impossible à retenir du genre

38jRXxuaES9Q

Préférez les phrases de passe, plus simple et tout aussi solides !

Pour une meilleure sécurité n’hésitez pas à recourir a des logiciels de gestionnaires de mot de passe qui retiennent pour vous chaque mot de passe pour chaque site (car oui, il en faut un par site !)

Bannissez !

Enfin, comme je vous le disais plus haut ce sont de véritables réseau de plusieurs centaines de machines fantômes qui attaqueront votre site, en même temps. Tout est donc une question de temps, même le meilleur des mots de passe est crackable avec beaucoup de temps et de ressources machines.

Pour rendre la tâche de ces attaques plus difficiles je vous conseille d’installer  Limit Login Attempt . C’est un plugin qui bannit automatiquement les IPs qui échouent à se connecter à votre interface d’administration.

Au bout de 3 fois il bannit l’IP pour une durée courte ( quelques dizaine de minutes), puis si l’opération se renouvelle avec la même adresse il bannit pour une durée plus longue (quelques jours). C’est efficace et ralentit considérablement la vitesse des attaques.

Le temps d’écrire ce billet mon plugin à banni plus de 100 IPs pour plusieurs jours, et ça continue…

Et c’est tout ?

Une fois ces réglages fait, vous devriez être couvert pour 99% des attaques bruteforce, mais bien sur, cela ne vous empêche pas de faire des sauvegardes, de mettre à jour vos plugins et WordPress et de mettre en place des protection au niveau serveur, mais c’est une autre histoire !

 

Credit Photo : GraceOda

Faire fonctionner le rétro-éclairage de son MacbookPro 7.1 sous Ubuntu 14.04

Depuis la mise à jour de mon Mac sous Ubuntu 14.04 le rétroéclairage de mon écran ne fonctionnait plus. J’ai passé pas mal de temps à chercher sur le net une solution viable, j’ai bidouillé pas mal de trucs pour au final tomber sur la doc communautaire qui vient d’être mis à jour.

Pour les non anglophones voici la marche à suivre :

On commence par ouvrir un terminal et lancer la commande suivante:

nvidia-xconfig

Cela crée un nouveau ‘xorg.conf’,que nous allons maintenant modifier.

sudo gedit /etc/X11/xorg.conf

Cherchez Section “Device” et remplacer le contenu par:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 320M"

    #La ligne ci dessous permet de gérer le contrôle du rétro-éclairage
    Option  "RegistryDwords" "EnableBrightnessControl=1"
    # La ligne ci dessous empeche l'afficahe du logo nvidia pendant le boot
    Option         "NoLogo" "True"
EndSection

Ensuite vous fermez votre session et vous vous reconnectez et tout devrait fonctionner :)

 

Credit photo : cmoralesweb

Comment savoir que son code est de bonne qualité?

C’est une question qui m’a été posée en entretien d’embauche il y a peu de temps:

“Comment un autodidacte comme vous peut-il être sur que son code est de bonne qualité?”

Ça peut paraître une question naïve, surtout venant d’un RH, mais ça me fait pas mal cogiter depuis, au delà de la technique.

Pendant l’entretien j’ai répondu un truc bâteau, qui a d’ailleurs eu l’air de lui plaire, mais il me semble que cette question de comment je produit du code et pourquoi il est bon ou mauvais mérite bien un petit article.

Au passage, si tu passes par là Mme la RH et bien tu trouveras ci dessous une réponse un peu plus complète à ta question :)

DISCLAIMER: Je vais parler ici de méthodes et pas de techniques pure. Si tu cherches à savoir comment indenter ton code ou si tu dois ou non commenter tu ne trouveras pas ton bonheur :)

Comment produire du code de qulité

1 – Mon code marche

Réponse simpliste. Mon code fonctionne, ça tourne en prod depuis des jours/mois/années, mon code est de qualité.

C’est pas faux, mais ce n’est pas suffisant. On a tous en tête des codes qui tournent mais qui ne seront jamais mis à jour tellement l’effort de maintenance est important.

Un code qui tourne n’est pas un bon code, c’est nécessaire mais loin d’être suffisant.

2 – Mon code est le fruit d’une méthode de travail

Produire du code de qualité c’est, pour moi, avant tout la mise en place d’une méthode. Toute l’équipe de développeurs doit être impliquée et faire en sorte que la base de code de tous les projets soit de qualité ou en constante évolution vers une qualité optimale.

Pour ça j’essaie d’appliquer ces trois méthodes :

Merge Request

Je travaille le plus possible avec le workflow de github. Tout mon code est crée sur de nouvelles branches avec Git et quand j’ai fini une fonctionnalité ou un fix je fais relire le tout par un collègue. Tout le code produit est relu, commenté, et n’est mergé que quand celui à qui est affecté la merge request n’est satisfait.

Ce système permet de produire du code bien meilleur, on sait que l’on va être relu, du coup on fait gaffe et on essaye de commenter un peu plus, de mettre des variables explicites etc…

Si jamais des erreurs se sont glissées, il y a de grandes chances que le mainteneur nous le fasse remarquer (autant sur le fond que sur la forme d’ailleurs)

Autre point positif de cette méthode, le mainteneur du code changeant tout le temps, toute l’équipe “voit passer” le nouveau code sur le projet. Cela réduit considérablement l’effort de maintenance.

Extreme Programming

Depuis plusieurs mois j’essaye de mettre en place les règles de l’extreme programming. Au programme, pair programming, ne pas sur optimiser, garder le code le plus simple possible et impliquer toute l’équipe à ces problématiques.

La mise en place des tests automatisés est au programme, mais pour le moment ils ne sont pas encore écrit.

Les retombées sont impressionnantes, l’équipe est plus motivée, le code produit est de meilleure qualité car revu de manière régulière et le pair programming permet d’abattre plus rapidement les situations de blocages – sans avoir à faire des hacks tout moches que l’on aurait tendance à faire seul dans son coin!

Code Sniffer

Enfin, dernier point plus technique, j’ai mis un code sniffer sur mon éditeur de texte préféré. Il râle si mon code n’est pas formaté comme il faut, et, du coup, je râle si le code que je récupère d’un collègue ne respecte pas les règles du standard.

Cela peut paraître anecdotique mais c’est primordial. Cela donne une base de code uniforme sur les milliers de lignes de code de nos applicatifs et cela facilite la maintenance.

3 – Je suis un être social

Autre point qui me tient particulièrement à cœur: l’échange.

Un développeur isolé est un développeur qui travaille mal.

Moi qui n’ai jamais étudié la programmation à l’école (ou très peu) j’ai toujours codé en restant en contact avec des groupes de dev qui pouvait répondre à mes question et vide versa. C’est ce que je fais avec StackOverflow, sur IRC, Twitter etc…

C’est primordial pour moi, cela permet aussi de confronter les idées, d’aller chercher les best-pratices et “d’aspirer” une quantité d’expérience bien plus importante et de manière beaucoup plus interactive qu’en lisant des bouquins!

Par exemple, il y a peu j’ai du concevoir et coder une API RESTFull avec Symfony2. Au final j’ai du passer plus de 70% de mon temps à lire des posts de blogs sur le sujet, à échanger avec des pointures sur IRC et à chercher les meilleurs design pattern et les meilleurs bundle AVANT de commencer à coder.

Seul je n’aurai pas fait un dixième du résultat final et la qualité aurait été réellement en deçà de ce que j’ai finalement produit.

Voilà en substance comment je fais pour savoir si mon code est de bonne qualité, et vous quels sont vos #proTips pour produire du code de qualité ?

 

 

Ce que change vraiment Internet

Sur ce blog je parle beaucoup de révolution des méthodes de travail, et même plus généralement de la “révolution Internet”

Les impacts sur notre société de l’arrivée d’internet sont nombreux. A tel que c’est complexe à expliquer à un novice. Surtout en 15min.

Mais ce n’est pas le cas de ce TED talk de Joi Ito, en moins de 20 minutes il explique brillamment quel bouleversement énorme est entrain de se produire et pouruoi nous devons laisser tomber nos veilles méthodes “B.I.” !

Non, ne faites pas de nos enfants des développeurs

Depuis quelques mois on parle d’apprendre à coder aux enfants comme une solution aux bouleversements d’internet. Dernièrement il y a encore eu un article dans les Echos en ce sens.

Je ne suis pas un expert de l’éducation mais j’ai vraiment l’impression que ce discours, souvent servi avec un arrière fond économique, se trompe de combat, je m’explique:

La thèse soutenue par les défenseurs du “code à l’école” est relativement simple:

Notre futur sera rempli de machines, or les machines se programment donc il faut savoir programmer.

L’idée est séduisante, mais comme beaucoup de sophismes la simplicité cache une réalité différente.

Enlever la “peur” du code

Faire de nos enfants des développeurs est un erreur.

Évidemment, le fait que rien ne soit enseigné à l’école en terme de programmation informatique est une erreur. Il faut que nos enfants trifouillent les machines, jouent avec, ne serait-ce que pour enlever la peur de la ligne de code qui est souvent un frein à la compréhension de l’informatique.

Les codinggouter font ça très bien, l’école devrait généraliser ce genre d’initiative, personne n’en doute. Il est important que les citoyens de demain comprennent globalement comment marchent les machines et ne crois plus, comme beaucoup de la génération X, que c’est “magique”

Ceci dit, développeur est un métier un peu plus complexe que seulement “pisser du code“. Se mettre en tête qu’enseigner la programmation en dans le cursus des élèves fera exploser le nombre de développeurs est une erreur. Simplement prenons l’exemple des maths, nous en avons tous fait pendant années, vous connaissez des mathématiciens? Personnellement, pas un seul. Par contre des gens qui utilisent les maths dans leur boulot ou dans leur vie de tous les jours j’en connais un paquet !

L’informatique amène une problématique du même ordre, nous en avons besoin tous les jours, et de plus en plus. Il faut donc être capable de comprendre, et maîtriser les concepts de base.

(D’ailleurs il est hallucinant que personne ne nous apprenne jamais à taper sur un clavier par exemple)

L’enjeu n’est pas sur le code mais sur le réseau

Sans vouloir vexer personne, ce débat de l’enseignement de la programmation à l’école est un combat du XXème sciècle, pas du XXIè.

La vrai révolution de ces dernières années ce n’est pas l’explosion du nombre des PCs, c’est l’arrivée massive dans nos vies du réseau mondial.

Internet est entrain de bouleverser le monde, nos quotidiens, et de remettre tout ce qui fait nos sociétés à plat.

Le travail change, la politique change, nos vies “privées” sont bouleversées et pour la première fois depuis que l’homme existe n’importe quel individu peut parler avec le monde entier.

Alors, oui, c’est vrai, Internet c’est peuplé de machines. C’est un protocole qui permet de faire discuter des machines. Savoir comment les machines discutent aide à comprendre notre monde mais l’enjeu est ailleurs.

Apprendre à apprivoiser les Internets

Savoir coder est indispensable, de même que savoir nager.

Il est devenu indispensable de savoir taper une ou deux lignes de code, et bien pratique de savoir aligner deux trois lignes d’HTML ou de PHP. L’école devrait nous apprendre ça, c’est vrai

Mais elle devrait surtout nous apprendre a parler en public, à écrire pour être lu par nos concitoyens. L’école devrait apprendre à nos enfants comment gérer notre liberté d’expression qui est réellement effective que depuis qu’internet existe.

Elle devrait nous apprendre à gérer nos traces numériques. L’arrivée du big data et les enjeux sur notre vie privée devrait être enseigné à l’école, le bouleversement de nos politiques devrait être enseigné à l’école, etc …

Et, contrairement à ce qui est dit un peu partout, pas par des profs de maths ou de physique, c’est de profs d’histoire, de philo et de français dont on a besoin.

 

 

 

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é !

 

« Older posts

© 2017 AngeZanetti.com

Theme by Anders NorenUp ↑