Failed opening required ‘phar://…

Chez PMSIpilot, nous commençons à utiliser Behat pour nos tests fonctionnels.
Je ne vais pas m’étendre sur toutes les belles choses que ce framework de bdd apportera au testing de votre projet, il vous suffit de vous rendre sur leur site officiel et de lire leur introduction rapide pour vous en persuader.

Le problème auquel j’ai immédiatement fait face en tentant d’inclure le Phar de Behat est le suivant :

Fatal error: require(): Failed opening required 'phar:///[...]/lib/vendor/behat/behat.phar'

La ligne incriminée ne pouvait pas être plus simple :

include 'phar:///[...]/lib/vendor/behat/behat.phar';

Après avoir interrogé dans toutes les langues et sous toutes les formes mon moteur de recherché préféré, difficile de trouver une explication rationnelle.
Comme souvent, la réponse est venue par l’intermédiaire d’un collègue (merci @jubianchi et @ratibus !) et il s’avère que c’est l’extension ioncube qui était en cause sur mon poste. Si vous avez ce problème, c’est donc peut-être une piste à suivre.

Pour tester si ioncube est activé :

$ php -i | grep -i ioncube
with the ionCube PHP Loader v4.0.5, Copyright (c) 2002-2011, by ionCube Ltd., and
ionCube Loader

Chez moi c’était la version ioncube 4.0.5 qui posait problème. Rassurez-vous néanmoins, une fois la dernière version de ioncube installée, plus de problème à noter ! Apparemment le problème est réglé au moins depuis la version 4.0.9.

Le lien direct pour télécharger la dernière version stable pour une distrib linux 32 bits : http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz

Une fois l’extension décompressée et placée au bon endroit, l’include passe sans encombre.

$ php -i | grep -i ioncube
with the ionCube PHP Loader v4.0.12, Copyright (c) 2002-2011, by ionCube Ltd., and
ionCube Loader

Comment trouver la version de son Ubuntu ?

Il est souvent utile de connaître la version de son système d’exploitation. Et si il est assez évident de connaître sa version de Windows tant les changements d’interface sont importants, c’est parfois moins évident d’une distribution Ubuntu à l’autre.
La commande magique pour répondre à ce besoin est tout simplement la suivante :

> lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 10.10
Release:	10.10
Codename:	maverick

Vous obtenez ainsi votre numéro de version mais aussi son nom de code, Maverick pour moi. Oui je sais, il faut que j’upgrade !

Autre petite astuce pour savoir si on est en version 32 bits ou 64 bits :

>uname -a
Linux ubuntu 3.0.0-14-generic #23-Ubuntu SMP Mon Nov 21 20:28:43 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux</code>

Si on récupère un truc du genre x84_64 c’est qu’on est en 64 bits, sinon on en est sur un noyau 32 bits.

Passer de SVN à Git en préservant son historique de commits

Subversion (SVN) a eu une belle carrière parmi les outils de versionning mais il est aujourd’hui largement supplanté par Git. Plus souple, plus rapide, plus puissant, nombreux sont les développeurs qui souhaitent migrer leurs dépôts vers Git. Mais il serait dommage de perdre l’historique de son projet, surtout quand celui-ci remonte sur plusieurs mois / années.

Le sujet a déjà largement été abordé sur différents blogs, forums et mailing-list mais je vais simplement compléter les étapes classiques par celles que j’ai dû ajouter pour pouvoir migrer mes propres dépôts SVN qui n’avaient pas tous une structure standard (pas de Trunk par exemple…).
Nous utiliserons la commande par défaut git-svn. Si besoin : sudo apt-get install git-svn

Quelques étapes indispensables (pour plus de détails, se rendre à cette adresse, ou à celle-ci) :

Récupérer les différents commiters sur son dépôt SVN

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > commiters.txt

Il suffit ensuite de transformer chaque ligne du fichier généré vers quelque chose du genre :

obalais = Olivier Balais <obalais@server.com>

Cloner votre dépôt SVN

Ici on spécifie l’url de son dépôt SVN, le fichier à utiliser pour les logs de commit et un dossier dans lequel cloner le dépôt. L’option no-metadata supprime les notes que git-svn ajoute à chaque message de commit par défaut.

git svn clone URL_DEPOT --no-metadata -A commiters.txt --stdlayout ~/mon_depot

Certains de mes dépôts avaient une structure non standard. Par exemple, certains projets simples n’avaient tout simplement pas de trunk, branches et tags mais directement la structure du projet commitée à la racine du dépôt (oui c’est moche…). Pour se sortir de ce genre de galères on peut utiliser les options -T, -t et -b pour spécifier les URI des Trunk, Tag et Branches. Dans mon cas, j’ai utilisé la commande suivante :

git svn clone URL_DEPOT --no-metadata -T / -A authors.txt --stdlayout ~/mon_depot

Sur un projet, j’ai également souhaité récupérer tous les commits excepté le dernier. Pour cela, il suffit d’ajouter l’option -r initial_revision:final_revision. Exemple :

git svn clone URL_DEPOT --no-metadata -T / -r 1:99 -A authors.txt --stdlayout ~/mon_depot

Créer un dépôt vide pour y pusher le contenu de son ancien dépôt SVN

git init --bare ~/mon_projet.git
cd ~/mon_projet.git
git symbolic-ref HEAD refs/heads/trunk

Pusher le contenu en faisant :

cd ~/mon_depot
git remote add bare ~/mon_projet.git
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare

Il ne reste désormais plus qu’à renommer la branche trunk en master…

Renommer son trunk en master

cd ~/mon_projet.git
git branch -m trunk master

And you’re done!

Ray Kurzweil – Quelques pistes concernant notre avenir

Quelques vidéos de Raymond Kurzweil ont été publiées sur Arte.tv.
La description que fait Kurzweil de notre futur correspond assez bien à celle du monde dans lequel je pense que nous vivrons dans quelques années. Un bon moyen de mettre facilement des mots sur mes pensées…

Qu’est-ce que la Singularité ?

« En 2029 l’intelligence des ordinateurs sera égale à celle des humains. En 2045 les ordinateurs seront tellement plus puissants que nos petits 100 milliards de neurones qu’on ne peut absolument pas prévoir ce qu’il va se passer. »

Lève-toi et marche :

« Ray kurzweil a stocké tous les bibelots, mèches de cheveux et autres souvenirs de feu son père, et il compte bien sur l’intelligence artificielle pour le faire revenir à la vie ! »

Body 2.0 :

« Ray Kurzweil nous propose de remplacer nos organes déficients par des répliques artificielles beaucoup plus puissantes et résistantes. »

Ray Kurzweil – Coup de foudre avec un droïde :

« Selon Kurzweil, à partir de 2029, les robots seront tellement « convaincants » qu’on pourra très bien avoir le béguin pour Terminator »

Ray Kurzweil – de l’immortalité :

« Adepte de la médication anti-vieillissement, Ray Kurzweil explique que la mort est loin d’être une fatalité, puisque la clé de l’immortalité est entre nos mains. »

Ray Kurzweil – Vivre 500 ans ?

« Vivre 500 ans, c’est un peu long ? Pas d’après Kurzweil qui nous rappelle que d’ici là, on pourra changer de corps comme de chemise et vivre une multitude de vies trépidantes. »

Ray Kurzweil – Objectif Mars ?

« Selon Kurzweil, l’humanité manquant de ressources, nous enverrons des robots dans l’espace d’ici 2045. »