To content | To menu | To search

Sunday 15 April 2007

SVN: MKACTIVITY Could not parse response status line.

Un petit billet pour un problème qui ne bénéficie que d'une faible visibilité sur google. Si votre client SVN vous jette avec un message du genre:

svn: MKACTIVITY de '/pwnd/!svn/act/a4eec923-2c2e-0410-a786-c01cbd856e8f': Could not parse response status line. (http://svn.phpmafia.net)

Vérifiez que vous n'êtes pas derrière un proxy, ça peut venir de là.

cf: DevjaVu Forums

Thursday 12 April 2007

Éviter les appels de fonction en double en javascript

Dans un accès de désespoir vu l'activité débordante de ce blog en ce moment, je me lance et je vous propose cette petite librairie javascript qui va vous permettre d'éviter les appels de fonction en double:

var Defer = {
	config: {
		defaultTimeout: 1000
	},
	stack: {},
	schedule: function(id, fn, timeout) {
		if (typeof(timeout) == 'undefined') {
			timeout = Defer.config.defaultTimeout;
		}
		if (typeof(Defer.stack[id]) == 'undefined') {
			Defer.stack[id] = {defer: false, fn: fn, timeout: timeout };
			window.setTimeout('Defer.execute(\'' + id + '\')', timeout);
		} else {
			Defer.stack[id].defer = true;
		}
	},
	execute: function(id) {
		if (typeof(Defer.stack[id]) != 'undefined' && !Defer.stack[id].defer) {
			Defer.stack[id].fn();
			Defer.stack[id] = undefined;
		} else {
			Defer.stack[id].defer = false;
			window.setTimeout('Defer.execute(\'' + id + '\')', Defer.stack[id].timeout);
		}
	},
};

On peut l'utiliser ainsi par exemple (jquery requis):

$(document).ready(function() {
	$('#nickname').keyup(function() {
		Defer.schedule('chknickname', function() {
			$.get('/account/check_nickname.php', { nickname: $('#nickname').val() }, function(data) {
				data = eval(data);
				$('#nickname_availability').html(data ? 'Pseudo disponible' : 'Pseudo indisponible');
			});
		}, 2000);
	});
});

Concrétement, ce bout de code attache à un input un événement qui ne sera executé que s'il n'est pas répété avant une certaine période (2 secondes ici). C'est à dire qu'on évite de faire une requête xmlhttp à chaque keyup, on attend plutot que l'utilisateur arrête de taper un moment avant de balancer la sauce. A noter que de par la méthode utiliser, l'espace de nommage d'execution de la fonction change (par exemple ici, on ne peut pas utiliser this pour accéder a l'input).

Voila voila.

Débuter avec le Zend Framework

Pour info.

Je suis un peu triste parce que je voulais m'atteler à cette tâche, mais bon il faut croire que j'ai trop lambiné :)

Monday 2 April 2007

Coucher de soleil

Coucher de soleil a pornichet (miniature)

Tuesday 27 March 2007

2007 raisons de voter, ou pas.

Je profite du méga pagerank de mon blog et des stats de folies pour faire du buzz comme un grand: 2007 raisons de voter.

Saturday 24 March 2007

Zend Framework 0.9.1

Le ZF est sorti en version 0.9.1 et est dispo sur le channel pear.

Voir aussi:

Sunday 18 March 2007

Zend Framework 0.9.0

La version 0.9 du ZF est disponible sur le channel PEAR phpmafia:

pear upgrade phpmafia/Zend-0.9.0

ATTENTION, cette version change pas mal de choses au niveau de la classe Zend: vos applis risquent de ne plus fonctionner suite à la mise à jour.

Voir aussi: L'annonce sur la mailing list Zend Announce

Friday 2 March 2007

Mini Howto: Serveur et Packages PEAR

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();
}

?>

Thursday 1 March 2007

Mon bel iPod

J'ai commandé hier un iPod Nano 2GB White 1st Gen sur l'Apple Store Refurbish, et il est arrivé ce matin. Rapide non ? Aussitôt reçu, aussitôt branché, et aussitôt rempli (via GtkPod) avec de la (bonne) musique ! Maintenant j'attends qu'Amazon me livre mon PortaPro.

Tuesday 27 February 2007

A propos du flux RSS du blog Zend

Je me suis rendu compte en glandouillant dans mes logs qu'il restait des aggrégateurs qui tentaient désespérement d'aggréger le flux RSS de feu mon blog dédié au Zend Framework. J'avais mis une petite page explicative, mais puisque ça n'a pas l'air de suffire, j'ai fait le nécessaire en la forme d'une redirection HTTP 301 vers le flux RSS Zend Framework du présent blog.

Voilà voilà.

Channel PEAR PHPMafia, package Zend Framework

Au lieu de partir faire du vélo ce soir, j'ai livré bataille avec PEAR. Livré bataille c'est le mot, vu le manque flagrant de documentation sur la création de serveur et packages PEAR, mais j'ai finalement réussi, grâce au tutorial de Tobias Schlitt (un peu modifié) à Arnaud Limbourg. Bref, j'ai le plaisir de vous annoncer la disponibilité immédiate du Channel PEAR PHPMafia, qui héberge pour l'instant un unique package: Zend-0.8.0. Pour l'installer, vous devez d'abord présenter le channel à votre installeur pear:

pear channel-discover pear.phpmafia.net

Puis vous devriez être en mesure d'installer le Zend Framework via un pear install classique:

pear install phpmafia/Zend-0.8.0

On spécifie la version vu que le package est en stabilité devel, pour coller au status preview du Zend Framework.

Vu comment j'ai galéré pour en arriver là, j'ai certains doutes sur le caractère 100% komifo de l'installation, donc j'apprécierais tout retour de bug et anomalies diverses que vous pourriez rencontrer à l'utilisation de ce channel, à pear@phpmafia.net par exemple, ou dans les commentaires de ce billet :-)

Friday 23 February 2007

Java et /dev/dsp

Il semblerait que la java virtual machine, connue sous le nom de java_vm par /usr/bin/lsof, attaque directement /dev/dsp, bloquant ainsi l'accès au son à toutes les autres applications. Pas très sympa.

Thursday 22 February 2007

Zend Framework 0.8

Les beaux jours reviennent, le Zend Framework est de sortie, dans sa version 0.8, qui apporte son lot de belles choses, comme par exemple le passage Zend_Auth, Zend_Mail_Read et Zend_Rest_Server dans le core.

Youpi.

Tuesday 6 February 2007

PHPMafia et OPML

Un petit billet pour dire deux chose: d'abord le site a été migré sur ma dedibox, d'où la coupure de service que certains ont pu constater. Deuxième chose, je suis à la recherche d'une appli de gestion d'OPML qui gère l'attribut htmlUrl (automatiquement à partir du noeud /channel/link d'un RSS). Voili voilou.

Ergonomie d'un blog

Petite étude rapide sur l'ergonomie des blogs, chez Biologeek. Le panel représentatif est peut-être un peu faible, mais l'analyse compense :-)

Friday 2 February 2007

Joie

Mouahaha.

DETAIL DE VOTRE COMMANDE
Date de la commande 02 février 2007
Référence *****
Spectacles commandes 3 places
au tarif Normal Prix unique
pour DAFT PUNK (PALAIS OMNISPORTS DE PARIS BERCY (PARIS)) le 14 juin 2007 à 20:00

Wednesday 31 January 2007

Un peu de sport: le vélo

Ce soir j'ai fait une petite heure de vélo dans la défense, à la fraiche. C'est assez exceptionnel pour le noter, d'autant plus que je compte bien remettre ça dimanche dans la forêt (oui on a des forêts à Paris, enfin pas loin quoi).

Interfaces et Classes Abstraites

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 !

Continue reading...

Tuesday 23 January 2007

Humeur

La haine, c'est l'amour qui tourne le dos.

Friday 5 January 2007

By the way...

Did I ever talk you about Creating Passionate Users ? It's my number one favorite (almost) daily reading: I'm always sure to read something interesting when it pops to life into my google reader :-) Written by the creators of the Headrush books series (published by o'reilly in France under the name La tête la première, I know you know it), the content of this blog is highly valuable for those of us who wants to become smarter and learn how to do (or not to do !) things.

Well, I'm not really used to literate english, so I don't really find my words, sorry for that. Actually, I'm writing this blog entry in english just in case Kathy or Dan show up there :-)

Pour résumer, Creating Passionate Users, c'est vraiment LE blog à avoir dans vos RSS.

- page 5 of 37 -