Je suis un peu triste parce que je voulais m'atteler à cette tâche, mais bon il faut croire que j'ai trop lambiné :)
A propos
- About me: Geoffrey Bachelet
- Profile LinkedIn
Si tu kiffes pas reunoi, t'écoutes pas et puis c'est tout.
Thursday 12 April 2007
By Geoffrey on Thursday 12 April 2007, 00:31 - Coding - 3 comments
Friday 2 March 2007
By Geoffrey on Friday 2 March 2007, 12:11 - Geekeries - 2 comments
Pour installer le serveur PEAR, c'est simple:
pear channel-discover pear.chiaraquartet.net pear install chiara/Chiara_PEAR_Server pear run-scripts Chiara_PEAR_Server
Ensuite on répond aux question, et c'est automagique.
Après, pour créer des packages, ça se corse. Tout d'abord, on a besoin de PEAR_PackageFileManager:
pear install PEAR_PackageFileManager
Ensuite, le but est de générer les package.xml qui vont bien. Voilà comment j'ai procédé pour le package Zend:
mkdir -p ~/pear/zend/src && cd ~/pear/zend wget http://framework.zend.com/download/tgz -O - | tar xzC ~ mv ~/ZendFramework-0.8.0/library/Zend* src/ php ./mkpkg.php make cd src && pear package
Ceux qui ont bien suivi auront noté que mkpkg.php est sorti un peu de l'espace :-) Vous trouverez son contenu à la fin du billet.
Pour résumer, on créé un répertoire de travail (~/pear/zend/), dans lequel on créé un répertoire src, qui contiendra tous les fichiers du package, puis le script mkpkg.php se charge 1) d'analyser le contenu de src, et 2) de créer le package.xml qui va bien, selon les instructions qui lui sont fournies.
Nous disposons désormais d'un package Zend-0.8.0.tgz dans ~/pear/zend/src, que nous n'avons plus qu'a uploader via l'interface d'administration du serveur PEAR précédemment installé :-)
Le fichier mkpkg.php:
<?php
require_once('PEAR/PackageFileManager2.php');
PEAR::setErrorHandling(PEAR_ERROR_DIE);
$packagexml = new PEAR_PackageFileManager2;
$e = $packagexml->setOptions(array(
'baseinstalldir' => '/',
'packagedirectory' => dirname(__FILE__).'/src',
));
$packagexml->setPackage('Zend');
$packagexml->setSummary('Zend Framework');
$packagexml->setDescription('The Zend\'s PHP Framework');
$packagexml->setChannel('pear.phpmafia.net');
$packagexml->setAPIVersion('0.8.0');
$packagexml->setReleaseVersion('0.8.0');
$packagexml->setReleaseStability('devel');
$packagexml->setAPIStability('devel');
$packagexml->setNotes("Still a preview release");
$packagexml->setPackageType('php'); // this is a PEAR-style php script package
$packagexml->addRelease(); // set up a release section
$packagexml->setPhpDep('5.1.2');
$packagexml->setPearinstallerDep('1.4.0a12');
$packagexml->addMaintainer('lead', 'ash', 'Geoffrey Bachelet', 'geoffrey+pear@zubrowka.org');
$packagexml->setLicense('New BSD License', 'http://framework.zend.com/license/new-bsd');
$packagexml->generateContents(); // create the <contents> tag
$pkg = &$packagexml->exportCompatiblePackageFile1(); // get a PEAR_PackageFile object
if (isset($_GET['make']) || (isset($_SERVER['argv']) && @$_SERVER['argv'][1] == 'make')) {
$pkg->writePackageFile();
$packagexml->writePackageFile();
} else {
$pkg->debugPackageFile();
$packagexml->debugPackageFile();
}
?>
Wednesday 31 January 2007
By Geoffrey on Wednesday 31 January 2007, 09:08 - Coding - 2 comments
Les concepts de classes abstraites et d'interfaces sont souvents assez flous quand on débute dans la programmation objet, et on se fourvoie assez souvent sur leur utilisation et leur but. Voila une petite explication qui j'espère sera 1) juste et 2) assez claire pour tout le monde. Si vous pensez que je me fourvoie sur ces 2 concepts de base de la POO, n'hésitez pas à me le faire savoir !
Thursday 9 November 2006
By Geoffrey on Thursday 9 November 2006, 17:25 - Geekeries - one comment
Imaginons que vous souhaitiez déplacer votre dépôt subversion myproject d'une machine old-server à une machine new-server. Vite fait, bien fait:
old-server# svnadmin dump /var/lib/subversion/myproject > ~/myproject.svndump old-server# scp ~/myproject.svndump new-server: new-server# svnadmin create /var/lib/subversion/myproject new-server# svnadmin load /var/lib/subversion/myproject < ~/myproject.svndump
Attention, il vous faut par contre migrer vos éventuelles hooks à la main, ils ne sont effectivement pas gérés par svndump. Une autre méthode, incluant les hooks celle-ci, serait d'utiliser svnadmin hotcopy, mais je n'ai pas testé.
Plus d'infos:
Wednesday 1 November 2006
By Geoffrey on Wednesday 1 November 2006, 16:10 - Geekeries - no comment
Les liens interressants (ou pas) de la semaine:
Tuesday 31 October 2006
By Geoffrey on Tuesday 31 October 2006, 20:26 - Coding - one comment
Comme je le disais plus bas, le Zend Framework Preview 0.2.0 est dans les bacs ! Cette nouvelle mouture apporte son lot de nouveautés, et nous allons nous pencher sur une des plus interressantes: le RewriteRouter. Le RewriteRouter est un routeur pour le composant MVC du Zend Framework qui va nous permettre de configurer nos URL comme dans Ruby on Rails, c'est à dire (en gros), via un fichier de configuration, et c'est là que Zend_Config entre en jeu.
Friday 20 October 2006
By Geoffrey on Friday 20 October 2006, 22:05 - Geekeries - 3 comments
Pour économiser la bande passante au boulot, j'ai décidé de relayer le stream Club ! de 1.fm sur le LAN. Après avoir vainement tenté d'utiliser streamripper (on verra plus tard pourquoi vainement), j'ai sorti l'artillerie lourde: icecast2:
sudo apt-get install icecast2
Si on sait un peu lire, le script de post-configuration nous incite à aller fourrer notre nez dans /etc/default/icecast2, où l'on apprend (vers la fin) que icecast est désactivé par défaut à cause de la directive ENABLED=false. C'est en fait une feinte pour nous pousser à configurer le bousin (de toute façon si on le configure pas, il marchera pas). Direction /etc/icecast2/icecast.xml donc, pour un brin de configuration (les explications qui suivent se basent sur le fichier par défaut d'une installation sur une ubuntu).
La première partie qui nous interresse s'intitule authentication (vers la ligne 23). Elle contient les informations d'authentification pour les clients qui se connectent en tant que source (source-password), les serveurs qui se connectent en tant que slave (relay-password, en fait je ne suis pas sur à 100%, c'est une déduction) et pour l'interface d'administration (admin-user et admin-password). Une fois ces informations modifiées, direction la directive hostname, qu'on remplira avec au choix, le nom de la machine, son ip, etc. J'ai personellement mis l'ip privée de ma machine (172.16.x.y), pour que ça correspondent à la prochaine directive qui nous interresse: listen-socket. Ici on définit le port et l'ip sur laquelle icecast va écouter. En gros, si vous spécifier 127.0.0.1, votre serveur de streaming ne sera accessible qu'en local. On y met donc en général la même chose que dans hostname (172.16.x.y par exemple), avec un port qui va bien, libre de préférence (8000 par défaut).
Maintenant on passe a la partie qui nous interresse vraiment, la section relay. Rien de bien compliqué ici. Le stream que je souhaite relayer se trouve là: http://64.62.253.223:8060/, or icecast nous demande un server, un port, un point de montage (mount) et un point de montage local (local-mount). Vous avez déjà compris qu'on arrive a cette configuration:
<relay>
<server>64.62.253.223</server>
<port>8060</port>
<mount>/</mount>
<local-mount>/1.fm</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
Ainsi parés, il ne nous reste plus qu'a lancer modifier la directive ENABLED=false en ENABLED=true dans /etc/default/icecast2 et à lancer icecast:
sudo /etc/init.d/icecast2 start
Si vous avez bien tout fait, vous devriez pouvoir streamer depuis http://172.16.x.y:8000/1.fm, et vos collègues également ! Vous pouvez avoir une vue d'ensemble du serveur ainsi que quelques options d'administration en vous rendant sur l'interface d'admin: http://172.16.x.y:8000/ et en utilisant admin-user et admin-password pour vous authentifier.
A cela on peut ajouter un petit streamripper:
streamripper http://172.16.x.y:8000/1.fm -d ~/streamripped
Pour enregistrer. En parlant de streamripper, j'avais tenté au début de relayer avec streamripper -r, mais malgrès les apparences du netstat -pl (*:8000 LISTEN), il ne bind qu'en local, donc impossible d'en faire profiter les collègues :-)
Monday 16 October 2006
By Geoffrey on Monday 16 October 2006, 11:46 - Geekeries - no comment
... c'est chiant. Surtout pendant cinq longues heures. Mais le résultat est appréciable, merci phpdoc :-)