#Informatique

Apprendre à utiliser les flexbox CSS (presque) en s’amusant

Un tutorial bien fichu qui fera enfin comprendre comment fonctionne les propriétés CSS de placement flex

Voir le site : Flexbox Froggy

C’est mon prénonyme Thomas Park qui a eu l’idée decet appli web bien sympa, où il faut placer correctement des grenouilles sur des nénuphars en éditant une propriété CSS et on voit en live le résultat. La dernière étape (24 !) est la seule un peu ardue, autant dire que la progression est plutot sympa, et le fait de répéter pas mal de fois les mêmes commandes aident a mémoriser les propriétés.

Have fun !

(English) An alternative of Hungarian notation applied to PHP

On some cases, by example when you works on webservices, data import or an ETL, you can be a little lost between all the variables you use, specifically arrays.

Even if it’s not in the coding standard, I developed a derivative of the Hungarian notation to prefix my variables and find myself there. This notation can be applied in php, but also to any other languages, especially non-typed.

NOTE : I recommend NOT using hungarian notation everytime (for exemple, will be almost useless in a MVC context), but only when it’s really needed.

There is the prefixing I use with PHP variables in that specific cases, depending on their type and semantic meaning :

Scalar types prefix

  • $is, $b : boolean
  • $s : string
  • $i : int (signed)
  • $n : natural (unsigned int)
  • $f : float
  • $fd : float round to 1 decimals
  • $fc : float round to 2 decimals
  • $fm : float round to 3 decimals
  • $m : mixed.
  • $v : void / null.

Non-scalar prefix types

  • $o : object
  • $r :
  • $h : handler (type in PHP : resource).

Arrays, can be, often, by design, a collection of elements, or a single element. For me an “element” is an object-like data, stored as an associative array. While a collection if an array of elements.
So I can distinguish 3 different semantic types for arrays :

  • $c : Collection [auto-incremented keys] : an array with integer keys containing elements (like « list » in Python). The keys are not used neither assigned, and only usefull to know the processing order.
  • $a : Dictionnary [associative keys] : the array keys are important and defined for each index (like in dictionnary Python or hash in Perl).
  • $e : Element [associative keys] ; like $a, but with a semantic information : contains data about one element. Think about an Object converted in Array.
    important.

For Collection and Dictionnary variables, I usually also put the variable in plural (or simply suffix with an s). But for Element, I put the variable name singular

For some array, i can also combine prefixes, like :

  • $co : incremented-collection of objects
  • $ce : incremented-collection, and each index contains an associative array defining an Element
  • $as : a dictionnary of string elements
  • $cbo : increment-collection of boolean OR objects. So we have to test if the entry is an object before processing it.

Other semantic types :

Date :
$ts : timestamp (unsigned int)
$dt : datetime, format ‘Y-m-d H:i:s’ (string)
Others :
$h : string of html code
$j : string of json code
$x : string of XML code
$y : string of YaML code
$u- : unsafe type or value, need to be checked or sanitized for security reason.
$z- : string of encoded something
They can be combined :
$us for unsafe string, with possible code injection.
$zo : string of encoded object
$zj : string of encoded json
$zh : string of encoded html entities, ie: ‘"’

Prefixes for Classes functions :

set : setter, assign the parameter function value to a class member
get : getter, returns something (can be the value of a class member)
is : returns a boolean

I personnally never prefix private members/function with underscores (indicates the visibilty is not public, usually), or with the prefixes I used below for variables.
Because i usually put all members in protected, and almost all function in public : some can be protected, but it can also change with time. So I avoid borgin refactoring when I change the visibilty of something.

Protéger votre vie privée, des alternatives à Google & co

Le propos de cet article n’est pas de te sensibiliser sur le fait que donner toutes tes informations personnelles à des gouvernements, compagnies ou publicitaires + ou – éthiques, c’est mauvais pour toi.

Je vais quand même te donner quelques exemples :
– Quand tu utilises Google, Facebook et même maintenant Microsoft, tu ne paie pas car TU es leur produit commercial. Pourquoi crois-tu que Microsoft a quasi-obligé ses utilisateurs à faire gratuitement la mise-à-jour de leur PC sous Windows 10, truffé de leurs propres spywares et backdoors ?
– Google Europe fait des dizaines milliards de bénéfices, et pourtant siège à Dublin pour ne payer pratiquement aucun impôts
– Les USA, qui ne sont plus vraiment une démocratie tant que le le Patriot Act ne sera pas aboli, contrôlent toutes les données passant par les compagnies américaines via le programmes PRISM. Ce même pays, s’apprêtent à élire Trump ou Hillary, tous deux étant totalement contre la liberté d’information ou même d’expression sous prétexte de « sécurité » ou lutte anti-terroriste . Julian Assange ou Edward Snowden, au lieu d’être acclamés en héros pour avoir révélés les abus de leurs gouvernements, sont déclarés ennemis d’état par leur pays (Hillary a récemment parler de « droner » Assange).

La liste est longue, et il y a suffisamment d’articles et de vidéos sur le net pour cela, et si depuis le temps que tu dois en entendre parler si tu n’es pas convaincu que donner à-qui-le veut toute ta vie privée, je peux plus rien pour toi. Garde juste en tête juste qu’un jour ou l’autre, une inévitable guerre mondiale éclatera (à moins qu’on arrête d’être humain ?), et l’information y jouera un rôle crucial. Soit pour contrôler les gens, soit pour écarter toute résistance.

Mais ce que je peux faire, c’est te donner des alternatives aux services de Google et autres compagnies pour lesquels tes données privés sont leur fond de commerce. Des services ayant comme priorité le respect de la vie privé de ses utilisateurs, un modèle économique non basé sur la publicité ciblée, voir des organismes a but non lucratifs, et si possibles, français au au moins européens. Car je prends en compte que les compagnies françaises on des lois à respecter et des organismes sur le dos pour protéger la confidentialité de nos données personnelles ; aux USA c’est une autre histoire.

A moins que je le mentionne explicitement, tous les services listés dans cet article sont totalement gratuit (et souvent Libres), ou proposent une offre gratuite non limitée dans le temps. Mais renseigne-toi avant sur la société et les conditions générales d’utilisation/de vente par toi-même avant de t’inscrire.

Libre à toi d’en proposer d’autres en commentaires ! Et voici ma liste :

NOTE : En plus de tous les produits que je vais énumérer ci-dessous, il y aura aussi un équivalent proposé par Framasoft, une association française loi 1901 militant pour le logiciel libre, qui s’est lancée dans l’initiative « dégoogler internet » en proposant le téléchargement / l’accès à tous les services possibles dans une version gratuite et open-source. Certains sont plus élaborés que d’autres, mais l’offre est complète !

Moteurs de Recherche

Pour des recherches très complexes ou très poussés, il est dur de détroner Google Search. Mais dans 95% des cas, les requêtes que tu va taper sont très simples et tu sera largement satisfait par les résultats d’un de ces moteurs :
DuckDuckGo, américain, qui s’engage à ne pas vous traquer et donne des résultats sympa. Mon moteur de recherche par défaut sur les navigateurs. La possibilité de lancer sa recherche sur d’autres moteurs de recherche via un mot-clé (un « bang ») en début ou fin de texte est bien pratique. Je l’utilise depuis des années et il ne cesse de s’améliorer. Si tu n’utilises pas encore ce moteur de recherche et que tu veux l’initialiser avec les paramètres que j’utilise (renforcement de la sécurité, thème sombre), clique sur ce lien
Qwant, un moteur de recherche français (et donc soumis à la législature française) respectant votre vie privée, plutôt performant et cohérent sur les résultats de recherches dernièrement. Il renvoie quasiment les mêmes résultats que DuckDuckGo, en un peu moins bien.
Disconnect Search : : fonctionne un peu comme Startpage, c’est un proxy pour utiliser Duckduckgo, Bing ou Yahoo (pas Google par contre)
Searx : un moteur de recherche non commercial et ne stockant pas vos données personnelles. Chose intéressante, n’importe qui peut en déployer une copie sur son propre serveur, via les gestionnaires de paquet Linux !
Lilo, un moteur de recherche français un peu particulier : il a lui-aussi comme principe d’être confidentiel, mais il s’engage aussi à reverser une partie des bénéfices a des projets sociaux environnementaux. Un service encore un peu trop immature a mon goût, mais je salue l’initiative. La grosse contrainte c’est l’obligation de s’inscrire (pour apres pouvoir choisir a quel projet social on veut reverser l’argent débloqué) et installer un plugin sur votre navigateur (j’ai vu que c’était compatible pour Firefox, Opera et Chrome).
Startpage, anciennement Ixquick : Même si le nom et le design fait penser a un site douteux, la compagnie derrière est sérieuse. Il synthétise les résultats de nombreux moteurs de recherches et tout cela derrière un proxy. Vous n’êtes donc pas traqué par ceux-ci, et les résultats de recherches sont neutres, c’est-à-dire pas influencés par le « profiling » que Google a sur vous. Au départ, il ne prenait en compte que les résultats de Google, mais depuis qu’il prend aussi en compte une longue liste de « has-been ». (Altavista, Ask, AOL Search…), les résultats sont pas terribles.

Navigateurs web

Bannir évidemment Google Chrome, Microsoft Edge, Safari (Apple). Il y a une alternative à Chrome, sa couche “open source” baptisée Chromium https://www.chromium.org/Home, même si il n’est pas forcément facile à installer et à mettre à jour pour un utilisateur lambda.

  • Firefox est de loin le meilleur navigateur sur bien des points, sauf pour sa version mobile (trop gourmand en batterie et en mémoire). Tu peux aussi opter pour un de ces dérivés non-officieux, comme Waterfox basé sur une architecture 64bits.

Ensuite changer le moteur de recherche par défaut pour un de ceux que j’ai listé au-dessus et installer les plugins suivant (ou équivalents) :
HTTPS Everywhere
– Un bloqueur de tracking, comme Disconnect, pour ne plus être traqué par les plate-forme publicitaires, analytiques, réseaux sociaux et par la même occasion gagner des performances d’affichage des pages
– Si tu es éthiquement réfractaire à la publicité, qui est très souvent ciblée, mais aussi souvent l’unique source de revenu d’un site, alors installe un plugin bloqueur de publicité, comme Adblock Plus (en décochant la case « Autoriser certaines publicités non-intrusives » dans les préférences de filtres pour optimiser le nombre de publicités bloquées, et tu peux aussi télécharger d’autres listes de filtres : Fanboy Annoyance List, Adblock Warning removal list, Malware domains). Mais j’apprécie de moins en moins la politique d’Adblock Plus, qui fait du chantage aux publicitaires, leur proposant de payer pour ne plus apparaitre comme “publicité intrusive” : uBlock Origin, uBlock ou AdBlock . Malheureusement, l’affichage de sites buggent partiellement voir complètement avec ceux-là (mais on peut toujours le blocage au cas-par-cas).
– Tab Mix Plus, pour activer des options avancés sur les onglets et l’ouverture des liens (que t’aurais même pas imaginé)
Groupe d’Onglets (un plugin officiel de Firefox qui était avant intégré nativement)
– Et si tu es développeur : Web Developper, Firebug, FirePHP, Firepicker, Colorzilla, YSlow, EasyScreenshot (liste non exhaustive).

  • Et pour les réfractaires à Firefox, ou pour les téléphones/tablettes (parce que Firefox sur Android est trop lourd a mon sens), Opera est une alternative vraiment sympa. Basé sur Chromium depuis quelques années (mais avec un autre moteur de rendu HTML), il inclut, de base, un VPN gratuit pour la Navigation Privée, un bloqueur de pub (très light) et un économiseur de batterie. Seul point noir : ils ont bridé volontairement la possibilité de changer le moteur de recherche par défaut ( qui est… Google bien sûr !) sur les version mobiles, et il ont bien caché l’option dans leurs Réglages Avancés pour la version PC. Mais on peut contourner le problème en allant sur le site de recherche manuellement au lieu de taper ta recherche dans la barre d’adresse. Sur mobile, c’est le navigateur que j’utilise. Et pour les forfait 4G très limités (à l’étranger etc), teste Opera Mini pour économiser des data (images compressés, plein de javascript non chargés…).
    Le fondateur d’Opera a par ailleurs quitté sa propre société pour développer dans son coin un fork d’Opera basé sur l’ancien moteur de rendu et la customisation : Vilvaldi, suite à son désaccord pour utiliser Chromium. Paradoxalement, depuis son départ, Opera s’est vraiment développé dans le bon sens.

Maps

Alternatives à Google Maps et Bing Maps :

  • Here WeGo racheté par Nokia. Aussi performant que Google Maps pour moi, sauf pour planifier les itinéraires en transport en commun (déja que Google Maps est en général à la ramasse sur les horaires..). Les + : la possibilité de télécharger les maps hors-ligne pour utiliser l’appli juste avec la puce GPS de votre smartphone (bien pratique à l’étranger pour pas exploser votre forfait 4G !), et le rendu simili-3D des buildings, monuments historiques etc.

  • OpenStreeMap, une initiative “libre”. Moins performante que les poids-lourds de la cartographie si tu cherches quelque chose sans connaitre l’adresse exacte ou par nom de lieu. Mais le potentiel est là, la communauté aussi. Dommage qu’il n’y ait pas d’application mobile officielle (mais beaucoup qui l’ursupent, allant jusqu’à utiliser le même nom).

Webmails

  • Gmx, basé en Allemagne. Leur revenu vient de la publicité affiché (enfin, si tu n’utilises pas de bloqueurs style Adblock) et certaines offres payantes, mais celle-ci n’est pas affinée sur le contenu de tes emails, à priori (en tout cas avec Adblock j’en vois pas). Ils proposent jusqu’à 10 alias gratuits par compte e-mails, y compris @caramail.com pour les nostalgiques.

  • Un clone de Gmx, + commercial, mais exactement le même webmail : Mail.com, proposant des alias de domaines différents, comme @mail.com, @email.com, @null.net et beaucoup d’autres. Et aussi + de proposition de services payants ou de pubs affichés, d’ou ma préférence pour Gmx.

  • Zoho Mail (gratuit pour une quantité limitée de compte en utilisant un nom de domaine à toi). Lire mon article détaillé sur Zoho si tu veux en savoir plus.

  • Protonmail, gratuit, qui te demandera 2 mots de passe à chaque connexion, et complètement indéchiffrable (y compris pour Protonmail lui-même), surtout si tu veux communiquer avec d’autres utilisateurs ayant aussi un compte email chez Protonmail.

  • OpenMailBox, gratuit et respectant votre vie privée. Son système économique est basé sur des dons. Si un jour il n’y a plus assez de dons pour l’année, ya un risque qu’il n’y ait plus de boites mails. Sinon avec une adresse @openmailbox.org ou @opmbx.org, je trouve ça long à taper…

  • Startmail par les créateurs de Startpage (payant, essai gratuit pendant 7 jours), s’engage a respecter la confidentialité de tes données.

  • Sinon il y a toujours la possibilité d’utiliser un client email comme Thunderbird, qui stockera tes emails sur ton disque dur.

Calendrier collaboratif

Zoho utilise les calendriers au même format que Google, donc les calendriers peuvent être partagés très facilement entre utilisateurs Google et Zoho. Sinon, j’avoue que je n’ai pas trop fait de recherches sur ce sujet.

Suite bureautique

Dur de rivaliser avec Google, tant les documents étant lié a de l’espace de stockage. Il n’y a que des société qui exploitent ou vendent tes données qui t’offriront ce service.
Les alternatives à Google Docs / Drive :
– des documents faits avec LibreOffice (gratuit) ou autre (Microsoft Office pour les conservateurs) sur n’importe quel service de Cloud protégeant tes données. Attention à ce que tu diffuses, même de manière privée disponibles sur internet (documents confidentiels, mots de passes…) Je préconise plutôt de faire des backups sur 1 ou 2 disques durs dans certains cas, plutôt que les lâcher dans la nature
– Microsoft Office 365 pour 90€ / an (!)
Zoho encore

Cloud

Plutôt que Google Drive ou Microsoft OneDrive, essayer un service de cloud français, garantissant la protection de tes données (par la CNIL), comme hubiC (30 Go de stockage gratuit en utilisant ce lien de parrainage, sinon 25Go). Et avec l’offre payante, vous aurez au moins le double de To pour moitié prix, comparé a Google Drive ou OneDrive.

Streaming

Dur de se passer de Youtube, appartenant à Google, tant son modèle économique et sa popularité sont profitables pour les vidéastes en herbes. Et c’est dangereux depuis que Youtube est un media de communication en situation de monopole et qu’il ne s’impose aucune neutralité : il se donne en effet à cœur joie dans la censure (via leur projet de dé-monétisation de vidéos critiquant la politique, ou suppression pur et simple de certaines vidéos sans aucune justification). Et c’est dans leurs CGV ; ils se réservent le droit de supprimer des vidéo qui leurs plaisent simplement pas. Tu me diras, qui est assez débile pour publier des vidéo en acceptant de tels CGV ? Et bien a peu près tout le monde, vu que c’est eux qui rémunèrent le plus.
En voici quelques autres :
Dailymotion, français
Vimeo

Réseau Sociaux

Autant dire que Google se vautre complètement dans le domaine. Après Orkut, qui pour des raisons incompréhensibles, n’a marché qu’au Brésil et a maintenant complètement fermé, ils ont fait un autre tentative avec Google+ a fait un gros bide. Le service ne survit que grâce aux fait que Google a laissé sous-entendre aux compagnies sur internet que leur site sera mieux référencés sur leur propre moteur si ils créent un compte Google+, et au fait que Google a déja quasiment le monde entier en annuaire grâce a Gmail et Youtube. Mais passé la première années, les gens ont vite arrêté de fréquenter le réseau de Google, lui préférant Facebook (lui aussi en perte de vitesse, d’ailleurs), ou Instragram
Facebook : j’avoue, c’est avoir le choix entre la peste et le choléra. Facebook à la même politique que Google, excepté que son créateur investit quasiment toute sa fortune personnelle dans l’humanitaire. Et qu’il a apporté sa pierre à l’édifice dans l’environnement PHP.
Instagram, qui appartient maintenant à Facebook. C’est un peu version « usine à selfie kikoolol » de Facebook
Diaspora, un programme libre, hébergé en France par OVH. Ca à peu d’’intérêt si aucun de tes contacts ne l’utilisent. Un réseau social sans tes amis dessus, ca perd forcément de l’intérêt tu me dira : c’est vrai, mais bon, c’est en s’y inscrivant et en en parlant a votre entourage qu’ils viendront. Car c’est juste un facebook en mieux, sans pub ni articles sponsorisé ni collègues de bureaux.

VoIP / Messagerie

Avec Google Hangouts (bientôt renommé Google Duo), Google n’a pas le monopole non plus sur la VoIP. Voici ces concurrents :

  • Skype (PC, Mac, un peu Linux), qui appartient a Microsoft (et donc fait aussi parti du programme PRISM, mais leur modèle économique est + porté sur les services payant que la publicité). Depuis le rachat par Microsoft, ça devient un carnage : aucune mise-à-jour pour Linux, une appli mobile ultra-lourde et buggée… Bref, comme son accoutumé depuis maintenant trop longtemps, quand Microsoft touche à quelque chose, c’est pour le saccager, et le pire, c’est que j’ai l’impression qu’ils le font même pas exprès.
  • Telegram (Android/iOS), qui est un des plus sécurisé et disponible gratuitement, et qui refuse (jusqu’à un certain point) de déchiffrer les communications de ses clients aux gouvernements (et donc beaucoup de ces teubés de « journalistes » l’ont catalogué direct comme une application pour djihadistes. Dans la réalité, la message n’est pas si sécurisé que ça, et je parie que les gouvernements ont déja cassé les accès. Mais ça reste la meilleure alternative a Google/Facebook pour la VoIP. Reste a convaincre ton entourage d’installer eux aussi cette application sur ton smartphone et c’est pas gagné
  • Whatsapp (Android/iOS/web), qui appartient à Facebook (et donc fait parti du programme PRISM, et leur modèle économique est un peu flou). Au départ exclusivement pour android/iOS, mais peu de gens savent qu’on peut utiliser le service Whatsapp Web sur son PC (à condition que notre smartphone qui connecté à internet simultanément).
  • Facebook Messenger (Android/iOS) créée pour t’inciter à donner ton numéro de téléphone à Facebook, pour encore mieux te cibler au niveau publicitaire (et croiser les données avec tes contacts et messages WhatsApp). Sache que tu peux avoir des notifications de messages facebook en temps réél simplement étant juste connecté à facebook avec un navigateur (comme Opera ou Firefox), sinon.

Smartphones

Là, pas trop de choix : les leaders sont Android (de Google) ou iOS d’Apple. Il y a aussi Windows Phone (lol) et Firefox OS (qui est en train d’être abandonné).
Le mieux reste maheureusement Android, et de supprimer les applications Google, mais tu devra le le rooter pour nettoyer complètement deTOUTES les applications Google. Et même encore, je suis persuadé qu’il y ait des spyware de Google qui tournent.

Moi pour mon usage personnel, les seuls produits de Google que j’utilise encore sont Android et occasionnellement Youtube. Je me sens pas limité pour autant.

DNS

Beaucoup changent les DNS par défaut (qui sont vos fournisseurs d’accès) pour contourner les blocages / censures locales. Et prennent ceux de… Google. Lui donnant ainsi tout leur historique de navigation (au cas où il aurait par miracle loupé quelques infos sur eux, la boucle est ainsi bouclée).

Or, vous vous en doutez, il y à d’autres DNS d’autres compagnies qui s’engagent à ne pas utiliser les informations ainsi collecté à votre escient. En dehors du classique OpenDNS, Duckduckgo en liste d’autres ici, en IP v4 et IP v6. Tester-les, lisez leurs CGU, et pensez que vous pouvez faire des mix entre les DNS secondaires ip v4 et v6, filiaire ou wifi, sur chacun de vos appareils. Ainsi vous dispatchez vos données et vous êtes moins dépendant d’un seul service.

Et toi, t’aurais d’autres suggestions de produits/services à ajouter dans cette liste ?

Un modèle de fichier .gitignore pour partir sur de bonnes bases sur tes projets PHP

Si tu versionnes tes projets PHP avec Git, voici des modèles de fichier .gitignore (voir documentation officielle) que j’utilise depuis longtemps et qui évite de versionner des fichiers qui n’ont rien à faire sur le dépôt (fichiers temporaires des OS, de l’IDE…).

Ces modèles diffèrent des autres modèles que tu pourra trouver sur des plus plus connus, comme Github ou gitignore.io, dans le sens ou j’utilise des expressions régulières faisant que les règles sont adaptés à la plupart des projets, tout en contenant moins de lignes. Plus d’intelligence, quoi.

Bien sûr ce fichier est un modèle, il faudra quand même sûrement que tu rajoutes des règles spécifiques a ton projet. Certains fichiers peuvent être versionnés ou non suivant ta vision du versioning et la phase de ton projet (dev initial, tma…) : les lignes dans ce cas sont son commentés par défaut (voir lignes commençant par un seul #), a toi de voir si tu les actives ou non.

Comment ajouter facilement ces règles dans mon .gitignore

J’ai créé un projet projet GitHub dédié, contenant également les instructions ci-dessous en anglais).

Deux méthodes de copie sont disponible pour chaque fichier

  • Méthode 1 : avec un terminal positionné sur la racine de votre projet web, contenant déjà ou pas un fichier nommé .gitignore (si un fichier est déja présent, du contenu va être ajouté à la fin) et taper la ligne de commande indiquée. A noter que cette ligne de commande ne fonctionne que sur un poste configuré avec un serveur web actif et php-cli installé., si ce n’est pas le cas utilisez la méthode 2 (plus fastidieuse)
  • Méthode 2 : ouvre le lien avec un navigateur et copier-coller manuellement le contenu à la fin de votre fichier .gitignore

Règles générales pour les projets PHP

Méthode 1 :

php -r "readfile('https://raw.githubusercontent.com/tbondois/gitignore/master/php.gitignore');">>.gitignore

ou Méthode 2 : voir le fichier

Si ce n’est pas le cas, il te suffit de copier manuellement l’url dans readfile('') dans un navigateur et copier-coller tout le contenu dans votre fichier .gitignore.

Quelques lignes sont présentes mais commentées ; comme expliqué un peu plus haut, il s’agit des fichiers qui peuvent dans certains cas, vouloir être ignoré, donc à toi de les décommenter si c’est le cas.

Attention : git-ignorer le fichier .gitignore peut être déroutant pour tes collègues :-)

gitignore

Extensions spécifiques à quelques frameworks

En addition, tu dois rajouter ce qui est spécifique au framework de ton projet. Généralement, les frameworks te mettent à disposition un .gitignore très basique. En voici des versions plus évolués, tout en supprimant les redondances avec les lignes précédentes. A insérér à la suite :

Projets Symfony 2, 3, Silex, OroPlatform, AkeneoPIM

Méthode 1 :

php -r "readfile('https://raw.githubusercontent.com/tbondois/gitignore/master/symfony2.gitignore');">>.gitignore

ou Méthode 2 : voir le fichier

<

h3>Projets Laravel / Lumen

Méthode 1 :

php -r "readfile('https://raw.githubusercontent.com/tbondois/gitignore/master/laravel.gitignore');">>.gitignore

ou Méthode 2 : voir le fichier

Projets Magento 1

Deux configurations possible :

Solution A : Tu veux aussi versionner le noyau du framework dans ton projet :

Méthode 1 :

php -r "readfile('https://raw.githubusercontent.com/tbondois/gitignore/master/magento1.gitignore');">>.gitignore

ou Méthode 2 : voir le fichier

Solution B : Tu préféres exclure tous les fichiers du noyau et ne versionner que ton propre code :

Méthode 1 :

php -r "readfile('https://raw.githubusercontent.com/github/gitignore/master/Magento.gitignore');">>.gitignor

ou Méthode 2 : voir le fichier

Projets Magento 2

Méthode 1 :

php -r "readfile('https://raw.githubusercontent.com/tbondois/gitignore/master/magento2.gitignore');">>.gitignore

ou Méthode 2 : voir le fichier

WordPress 4

Méthode 1 :

php -r "readfile('https://raw.githubusercontent.com/tbondois/gitignore/master/wordpress4.gitignore');">>.gitignore

Méthode 2 : voir le fichier

Tuto : Installer Composer sur un projet web pour gérer facilement les libraires externes (et internes) de ton framework

Installer composer sur ton poste / serveur

Ton poste doit bien sûr avoir un serveur web qui tourne avec PHP.

Site officiel de Composer : getcomposer.org/download/

Si tu es sous Windows, je te recommande de l’installer via leur « Windows Installer », permettant d’éxécuter composer sur n’importe quel dossier de ton poste, juste en tapant « composer », car il aura correctement intialisé le PATH

Sur un autre OS, le plus simple c’est d’ouvrir une console positionnée dans le répertoire de projet et de taper :

curl -sS https://getcomposer.org/installer | php --filename="composer.phar"

Dans ce cas, il faudra taper « php composer.phar » au lieu de simplement « composer » pour le tuto qui va suivre.

Continuer la lecture

Les tests binaires – une fonctionnalité sous-estimée

Imaginons qu’en tant que développeur (dans le cas contraire, passe à un autre article), on doit réaliser plusieurs actions suivant plusieurs cas de figures possibles (disons, une quinzaine), qui peuvent se combiner.
Et suivant certains cas de figures, certains actions à éxécuter se répètent, et peuvent même se combiner suivant certains cas de figure. Pour ne pas dubliquer le code, on identifie donc 5 blocs d’actions différentes. La situation la plus simple serait donc d’utiliser plusieurs variables : (je vais mettre mes exemples en PHP, mais les tests binaires existent dans tous les langages de programmation dignes de ce nom – déjà si ça existe en PHP…)

Continuer la lecture

Suivre ou pas la tendance/mode des domaines en .io?

Comme à peu près tout dans notre société, les noms de domaines sont soumis a des tendances et des effets de mode. On se souvient des société en -oo dans les années 2ooo (Yahoo, Badoo, Wanadoo, Spartoo…), des noms en -r vers 2004 (Tumblr, Twittr devenu Twitter, Frappr, Zoomr, Flickr et tout son écosystème), des noms en -us ou -ous vers 2007 (disqus, scritaculous, del.ico.us), et en 2014 une nouvelle tendance émergea, très prisée par les start-ups : les domaines en .io.

Exemples : blackfire.io, github.io, techtalent.io, breaz.io, daux.io, bento.io, statuspage.io, aha.io … Il y en a déja des milliers.

Le problème, c’est que comme toutes les extensions de domaines en 2 lettres, il est lié à un pays. Et ce pays à le droit de contrôle/blocage sur votre nom de domaine.

Par exemple, bit.ly a du avoir une grosse angoisse quand la Lybie (contrôlant le domaine .ly) les a menacé de couper leur domaine parce le service était utilisé pour raccourcir des liens anti-kadhafistes.

Mais à qui appartient le nom de domaine .io ? A une ce ces entités bizarres à qui l’ont attribue beaucoup d’extensions de domaines nationales : le Territoire britannique de l’océan Indien. Soit, d’après Wikipédia, un ensemble de 55 îles peuplées exclusivement d’une base militaire américaine, mais un territoire officiellement Indien quand même. Même si c’est une colonie britannique en même temps. Bref, c’est confus. Mais l’extension est officiellement géré par registre indien .

Un gouvernement qui a priori parait stable, donc. Sauf si par exemple un jour la souveraineté de ce territoire et remis en question, où que l’Inde/l’UK/l’amérique décide un jour que le .io servira uniquement aux entités administratives ou militaires, et demandera par exemple aux enregistrés une adresse postale sur ce territoire. C’est un des droits légitimes des détenteurs d’extensions nationales, et vu que le territoire semble habité seulement par des militaires américains, bon courage pour y acheter une boite postale.

Continuer la lecture

Symfony versus Symphony, deux frameworks PHP homophones : plagiat ou concours de circonstance ?

Je suis tombé par hasard sur quelque chose plutôt étrange : Symphony, a « XSLT-powered open source content management system ». C’est aussi un framework PHP, qu’on pourrait donc positionner comme un concurrent au projet Symfony CMF.

getsymphony.com

Encore plus troublant, cette annnonce sur la page d’accueil de leur site  :

 Symphony 2.6 is now available  –  11 March 2015

Comme par hasard, le framework homophone suit exactement le même numéro de version que Symfony, à un mois d’intervalle…

Continuer la lecture

8 outils gratuits pour faire du Scrum dans tous les sens

Je faisais des recherches (et des tests) il y a quelques temps des outils gratuits permettant de gérer des projets avec Scrum . Pour gérer un mix scrum/kanban/scrumban, c’est déja moins évident. Mais pour scrum, il y a pas mal de soft gratuits, la plupart en ligne et limités sur un nombre de personnes ou projets. Je ne parlerais pas par contre des outils qui ne sont gratuit uniquement pour une une période d’essai, comme sprint.ly, Jira ou Mingle.

IceScrum

Site officiel : http://www.icescrum.org/
Opensource : Oui
Accès : à installer soi-même (serveur tomcat/Java) ou version améliorée online payante

Voir mon tuto pour installer la version opensource sur un serveur web. Existe également des version Pro (plus de fonctionnalités) et online payante.

Agilefant

Site officiel : http://agilefant.com/
Opensource : Non
Accès : à installer soi-même (serveur tomcat/JRE/Oracle) et online limité

Version online gratuite limité a 5 comptes actifs simultanément. Mais on peut en créer d’autres et les désactiver temporairement. C’est le manager Scrum open-source le plus populaire. Pourtant pas de whiteboard, à ma connaissance (ou je ne l’ai pas trouvé).

TargetProcess

Site officiel : targetprocess.com
Opensource : Non
Accès : online limité

Version online gratuite limitée à quelques comptes. Très complexe et complet. Heureusement un guide interactif nous explique comment l’utiliser.

Youtrack

Site officiel : https://www.jetbrains.com/youtrack/
Opensource : Non
Accès : online ou à installer soi-même sur un serveur / un poste client Windows

Jetbrains, ca vous dit quelque chose ? L’éditeur de l’excellent IDE PHPStrom, entre autres. Ils ont plein d’autres produits pro dont un gestionnaire de projet est online, avec une version gratuite limitée à 10 comptes. Pas de whiteboard, l’accent est + mis sur l’issue tracking, et exploite assez peu le cadre Agile en fait.

Redmine + plugins

Beaucoup de plugins agiles pour redmine, certains totalement gratuits, d’autres seulement en mode limités
Redmine Backlogs
Scrum
Kanban
Easy Agile
Scrumbler

Accès : A installer soi-même sur un serveur Ruby

Redmine s’est beaucoup popularisé ces derniers temps. Basé sur Ruby on Rails (et donc nécéssitant un serveur web avec Ruby), ca peut valoir le coup pour faire un passage à Scrum en douceur.

Kados

Site officiel : http://www.kados.info/
Opensource : Oui
Accès : à installer soi-même sur un serveur

Un gestionnaire de projet Scrum/Kanban. Gratuit, opensource, en PHP donc facile a déployer sur un serveur.  Le code source fait un peu usine à gaz par contre. Des efforts à faire sur l’ergonomie, mais une bonne initiative française.

Kanboard

Site officiel : http://kanboard.net/
Opensource : Oui
Accès : A installer sur un serveur

Une appli PHP basée sur Kanban et la simplicité d’utilisation. Vraiment sympa, dommage que les spécificités de Scrum (notion de sprint, dates butoirs) ne soient pas gérées.

Express

Site officiel : http://agileexpress.sourceforge.net/
Opensource : Oui
Accès : A installer soi-même sur un serveur

une appli en servlet Java. Très rudimentaire avec une gestion d’utilisateurs. Bien être bien pratique pour des petits projets.

Juste besoin d’un scrumboard visuel tout simple ?

scrumblr.ca

Site officiel : http://scrumblr.ca
Opensource : Non
Accès : online

Juste un scrumboard collaboratif en ligne. Minimaliste mais parfait pour travailler à distance avec des gens de confiance (aucun gestion de droits ou d’historique).

Bonus : comment comparer rapidement des gestionnaires de projets

… Parmi + de 200 existants. La seule chose qui manque ca serait de pouvoir filtrer sur uniquement les gestionnaires Scrum.

http://project-management.zone/systems

Cela dit pour avoir le détail sur les fonctionnalités des applications, et les comparer rapidement entre elles, c’est pratique. Exemple :

http://project-management.zone/system/agilefant,icescrum on voit que sur les fonctionnalités, iceScrum à l’avantage sur Agilefant, excepté qu’il n’a pas de time tracker.

De rien.

Anticiper la migration entre Symfony 2 et 3 en activant la nouvelle structure de répertoires

Symfony, le framework PHP made in France a le vent en poupe et amène dans son sillage le PHP à l’ère industrielle (bon, c’est vrai que Zend l’avait déja aidé à traverser). Sa version 2.6 est sortie depuis quelques semaines mais papa Sensiolabs a semble-t-il déjà bien entamé le travail sur la version 3…

Il y a toutes les chances que les projets v2 soient migrables assez facilement sur v3, mais que la structure des répertoires systèmes changent un peu, car pour l’instant ça reste assez mal structuré : par exemple il y a un peu trop tout et n’importe quoi dans /app/, du cache, des logs, la console, et l’emplacement des fichiers de config globaux ne suit pas la norme des bundles.

Lors d’une release  de Symfony 2.4 ou 2.5, l’assistant vous demandait si vous vouliez utiliser la « nouvelle structure de répertoire v3 » lors de la création d’un nouveau projet. Ça changeait pas mal de choses sur la structure, sans toutefois être documenté ; c’est sûrement pour ne pas embrouiller les esprits que Sensiolabs a vite retiré cette option. C’est dommage, car c’est la structure prévue pour le futur de Symfony.

Mais pourtant tu peux continuer à utiliser cette option en définissant la variable d’environnement SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true avant de lancer l’assistant de création de projet.

Continuer la lecture