Mini compte-rendu du petit Déjeuner symfony du 23 avril

J’ai pu assisté à une conférence mené par Fabien Potencier, le 23 avril au Centre Etoile Saint Honore sur le framework dont il est l’initiateur, symfony auquel il continue d’y contribuer via sa société Sensio Labs.

Dés mon arrivé, j’ai été surnommé Mr Jelix (amicalement bien sûr). Mon but n’était pas vraiment de dire symfony ça pue et jelix c’est bien mais vraiment de pouvoir poser des questions (pas forcement les plus intelligentes :p) et d’avoir une présentation de symfony par son auteur et ses contributeurs dans le cadre du choix d’un framework, une problématique qui se présente de plus en plus dans une offre de plus en plus pléthorique.

A l’accueil, on vous donne un petit sac avec quelques brochures, un callepin et une clé usb aux couleurs de Sensio Labs et de symfony. Un petit-déjeuner copieux était servi en attendant le début de la conférence.
J’ai pu discuté un moment avec Nicolas Perriault et voir un peu ce que symfony pouvait apporter au niveau des projets et j’ai pu aussi en apprendre davantage sur le framework.

La conférence était intéressante avec la possibilité de poser des questions à différents interlocuteurs, d’en savoir un peu plus.
Je n’avais pas d’à priori sur symfony mais pour le moment je reste sur mon impression de framework qui peut tout faire (ce qui est déjà très bien) mais que c’est au sacrifice bien sûr à mon avis des performances (je parle bien sûr de projets qui n’ont pas le budget serveur de yahoo par exemple), ce qui est normal.
Il ne colle pas vraiment avec mon idée de ce que je me fais d’un framework mais qui reste une option intéressante.
Sensio Labs propose maintenant un support sur symfony qui ne m’a pas trop convaincu en tant que développeur par rapport au rapport prix / type de support. Maintenant, c’est un plus non négligeable pour symfony.

A tester pour vous faire votre propre opinion.

Quelques idées reçues sur Jelix

Jelix est un excellent framework, malheureusement il ne jouis pas encore d’une réputation comme symfony (j’ai fait gaffe à bien l’écrire hein) ou Zend Framework et pour cela, beaucoup de développeurs ou d’entreprises peuvent se poser la question de son choix.
C’est pour cela que j’ai rédigé ce petit billet afin de tordre un peu le coup aux idées reçues qu’on pourrait avoir sur Jelix.
Read the rest of this entry »

Présentation de Jelix

Avant de commencer un petit tutoriel sur Jelix, je crois bon de commencer par vous le présenter afin d’avoir les idées un peu plus clair avant de débuter tout développement avec ce dernier.

Jelix est un framework initié par un français Laurent Jouanneau qui a l’origine si je ne dis pas de bêtise avait bossé sur Copix.

Cette article va présenter plus en détails les différents API de Jelix et permettre par la suite d’aborder plus sereinement un petit tutoriel.

Read the rest of this entry »

Les différentes solutions Apache, MySQL, PHP sous Mac

Il existe sous MacOS X plusieurs façons d’obtenir un MAMP (Mac Apache MySQL Php) :

- MAMP
- XAAMP
- Utilisation des packages pré-compilés
- Compilation soi-même

Même si Leopard est fourni désormais avec php 5, certaines librairies sont manquantes et il peut être utile de se faire sa propre installation de zéro.

MAMP

A203C0DC-EA20-4908-80BF-099AF4BFDB2D.jpg

MAMP est la solution tout en un qui ne nécessite aucune connaissance particulière. Un simple glisser-déposer dans le dossier Application et vous avez vos serveurs qui sont prêt à démarrer.
Aucune configuration particulière.
L’avantage est qu’en quelques clicks on a une installation complète d’une solution basé sur Mac MySQL et PHP. Néanmoins, dés lors qu’on souhaite pousser la solution et par exemple installer une librairie via Pear, on constate que cela ne marche pas vraiment et on se retrouve coincé :/.
MAMP est donc à recommandé pour les personnes qui n’ont pas de besoins spécifiques et qui peuvent se contenter des librairies fournies.

XAMPP

9E338BF2-2F64-4E23-945B-AB9459CFACEC.jpg

XAMPP est une solution que j’ai découverte récemment grâce à un commentaire sur mon blog. Il fonctionne un peu comme MAMP sauf qu’il fournit également Perl. C’est encore une version en cours de développement qui est proposé, donc certaines fonctionnalité ne marche pas totalement.
J’ai notamment eu quelques soucis à faire marcher pear avec certaines librairies ou framework.
A garder de côté pour le moment. Je pense qu’il aura plus de succès que MAMP d’ici les mois qui viennent.

Utiliser les packages pré-compilés

A défaut de pouvoir utiliser les différentes solutions toute faites, il faut mettre un peu la main dans la cambouis. Par chance, Marc Liyanage maintient depuis quelques temps des versions compilés de php pour Tiger et Leopard.
Même si la version Leopard porte la mention bêta, elle fonctionne parfaitement et ne nécessite que quelques lignes de commandes pour pouvoir fonctionner pleinement.
Nous n’avons besoin que de php car Apple fournit par défaut avec MacOS X un serveur Apache parfaitement fonctionnel. Nous allons donc garder cette version d’apache qui va nous faciliter la vie.

Avant toute chose il faut télécharger la version qui correspond à votre version de MacOS (voir ci-dessus). Double-cliquer sur le fichier en question pour obtenir un dossier php5.
Il faut maintenant ouvrir le Terminal (que l’on peut trouver dans /Applications/Utilitaires/) pour y taper les lignes suivantes :

# il faut se rendre dans le dossier où vous avez décompresser php
cd dossier_ou_vous_avez_decompresser_php
# on va copier le dossier décompressé dans la dossier /usr/local
sudo mv php5 /usr/local/

On a maintenant une installation de php fonctionnelle qui est installé, il ne reste plus qu’à configurer l’ensemble.

# cette commande peut être tapé de n’importe où
cp /usr/local/php5/lib/php.ini-recommanded /usr/local/php5/lib/php.ini

Il faut à présent avec l’éditeur de votre choix modifier le fichier /etc/apache2/httpd.conf pour qu’il utilise la nouvelle version de php fraîchement installé.
Il faut remplacé la ligne suivante

LoadModule php5_module libexec/apache2/libphp5.so

par

LoadModule php5_module /usr/local/php5/libphp5.so

Afin de pouvoir utiliser nos commandes php à n’importe quoi sans les préfixer de /usr/local/php5/bin, il faut modifier la variable PATH de notre environnement. Pour cela, à l’aide du terminal, tapez :

# on va dans notre répertoire personnel
cd $HOME
nano .bash_profile

Dans ce fichier, il faut rajouter les lignes suivantes :

export PATH=$PATH:”/usr/local/php5/bin”

Sauvegarder le fichier. Pour que les modifications soit effectives, il faut fermer votre fenêtre du terminal et en ouvrir une nouvelle. Il vous suffit de taper la commande php –version afin de vérifier que c’est la bonne version. Pour cela, il faut vérifier le numéro de version, la 5.2.5 et la date de compilation built: Feb 20 2008 12:30:47.
Vous obtiendrez une sortie comme celle-ci :

BART:~ despe$ php –version
PHP 5.2.5 (cli) (built: Feb 20 2008 12:30:47)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

Il ne reste plus qu’à redémarrer apache en tapant toujours dans le terminal

apachectl restart

Pour les allergiques à la ligne de commande, il est possible de passer directement par les préférences systèmes

pref_sys_1.jpg

Il suffit de cocher, décocher l’option partage web pour redémarrer Apache.

pref_sys_2.jpg

Pour accéder à vos sites, ils doivent être stockés dans le dossier Sites de votre répertoire personnel.

Installation de MySQL

L’installation de MySQL se trouve ici. Elle est simple à utiliser, il suffit de faire suivant, suivant en lisant néanmoins bien les éventuelles indications.

Une fois, l’installation terminé, je vous invite à installer le fichier dont l’extension est prefpane, cela va rajouter un panneau dans les préférences systèmes pour démarrer ou stopper le serveur MySQL.

Une dernière étape est requise pour autoriser votre utilisateur à lancer MySQL. Avec le finder, il faut se rendre dans la dossier /usr/local/mysql/. Etant donné que certains dossiers sont masqués par le finder, il faudra utiliser le menu “Aller” et “Aller au dossier” (avec le clavier POMME+SHIFT+G).
Une fois dans ce dossier, POMME+I sur le dossier data. Les informations de Partage et permissions vont être modifié. Il suffit de cliquer sur le + pour rajouter votre utilisateur.
Il faut que ces modifications s’appliquent au dossier et à ses sous-dossiers. Il faut pour cela cliquer sur l’icône à côté du - et sélectionner Appliquer aux éléments inclus.

Enfin, pour pouvoir accéder aux programmes de mysql (le client, mysqladmin, etc…), il faut modifier le .bash_profile comme nous l’avons fait pour php.

# on va dans notre répertoire personnel
cd $HOME
nano .bash_profile
export PATH=$PATH:”/usr/local/php5/bin”:”/usr/local/mysql/bin”

Attention, toutefois votre serveur MySQL dispose d’un compte root sans mot de passe avec tous les accès. Il ne faudra pas oublier de modifier ces paramètres.

Compilation soi-même

MacOS X étant un Unix, il est possible de compiler certains logiciels grâce à des gestionnaires de paquet comme FinkPorts ou DarwinPorts.
Néanmoins, l’opération est relativement longue selon le processeur de votre machine et assez compliqué à mettre en oeuvre pour un débutant.
Elle a le mérite d’exister.
Pour pouvoir utiliser ces outils, il vous faut les outils développeurs fourni sur votre dvd d’installation de MacOS X.

A quand une version de WAMPServer pour Mac ? :-)

Références et diverses sources : Olivier Mansour

Deux mini-outils indispensable

DF3CADDB-D4F0-4144-823F-72EB647E8D8E.jpg

Aujourd’hui deux mini-outils à l’honneur : Open In Terminal Here et Open in Textmate qui s’ajoutent dans la barre du finder et qui vous permet d’ouvrir un terminal dans le répertoire actuel et d’ouvrir les fichiers sélectionnés (dossier, groupe de fichiers) dans Textmate directement.

Il suffit de copier les applications dans le dossier Applications et de les glisser-déposer sur la barre du finder.

Php et Curl pour poster son status twitter sur n’importe quel site

Twitter est de plus en plus utilisé (même moi qui au début y trouvait un attrait relatif) et il est assez simple de publier son statut sur la plupart des grandes plate-formes communautaires.

Que se passe-t-il si on a envie d’afficher son statut si un site qui ne permet pas d’afficher son statut mais qui permet de modifier sa description ou sa signature ?
Même si la plupart des sites communautaire permet d’afficher son dernier twit, c’est un bon cas pratique pour découvrir cURL et son utilisation avec php.

Nous allons voir dans cette article comment faire avec PHP et cURL pour pouvoir le faire de maniére automatisé.

Pré-requis

Il faut avoir PHP compilé avec le support cURL sinon impossible de faire ses manipulations.

cURL, c’est une technique de curling ?

cURL est un utilitaire qui existe en ligne de commande et qui permet à l’instar de wget d’aller récupérer des pages, images, etc.. sur Internet.
Il sait gérer les formulaires, les cookies, etc…
cURL se comporte comme un navigateur web sans interface graphique.

PHP supporte cURL et permet son utilisation de maniére totalement transparente et simplifié.

Dans le cadre de notre projet, nous avons besoin de :
- pouvoir nous identifier auprès du site
- pouvoir poster un formulaire de données
- pouvoir récupérer le contenu d’une page donnée

Créeons notre objet

Avant de commencer à jouer avec cURL, il faut d’abord prendre en compte un paramétre important.
PHP s’execute avec un temps d’attente maximum de 30 secondes. Nous allons surcharger ce paramétre afin d’éviter que notre script s’arrête en plein milieu d’un envoi d’information.

En effet, selon le temps de réponse du site, il peut arriver que cela prenne rapidement plus de 30 secondes.
Pour cela, nous allons utiliser la ligne de code suivante afin d’éviter de rencontrer ce problème :


/* suppression du temps limite */
set_time_limit(0);

cURL s’utilise de la manière suivante :
- on initialise la librairie et on récupéré une instance
- on définit les options
- on exécute l’action (récupération de page, envoie de données, etc…)
- on récupère le retour (contenu ou code http)
- on libère l’instance

Pour initialiser l’instance, rien de bien compliqué :


$monInstance = curl_init();

Voyons maintenant quelles options peuvent nous interresser. Si on fait un petit détour par le manuel de php, on constate qu’il y a des lignes et des lignes d’options pas souvent facile à comprendre.

J’en ai sélectionné quelques unes qui sont indispensables pour les actions que nous allons effectué.

Nom Type Description Exemple
CURLOPT_RETURNTRANSFER boolean par défaut, cURL affiche directement le contenu de la page ou de la ressource souhaité, pour éviter de s’encombrer d’affichage surperflu, le contenu de la page sera retourné lors de l’exécution de l’action. true
CURLOPT_HEADER boolean Evite d’avoir les headers HTTP dans le contenu de la page ou de la ressource false
CURLOPT_USERAGENT chaîne de caractères Permet de faire passer cURL pour tel ou tel navigateur Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9
CURLOPT_TIMEOUT temps en secondes le temps de réponse maximal avant de stopper le processus. 60
CURLOPT_FOLLOWLOCATION boolean spécifie si on suit les redirections http ou non. true
CURLOPT_MAXREDIRS entier le nombres de redirections maximum avant de considérer qu’il y a un problème. 10
CURLOPT_COOKIESESSION boolean true
CURLOPT_COOKIEJAR fichier un fichier pouvant être modifié par l’utilisateur qui lance apache et qui va contenir les variables des cookies des sites visités ./cookie.txt
CURLOPT_URL url l’url que l’on souhaite utiliser http://www.despe974.org/
CURLOPT_POST boolean permet de dire que les valeurs transmises sont en POST true
CURLOPT_POSTFIELDS chaine de caractères spécifie les valeurs des différents champs d’un formulaire (ne pas oublier de spécifier toutes les valeurs du formulaire même les hidden et les submit) login=tarte&password=bidule

Pour définir une option, il suffit d’utiliser curl_setopt comme ci-dessous :


curl_setopt($monInstance, NOMDELOPTION, VALEUR);

Une fois l’instance configuré comme nous le souhaitons, il ne reste plus qu’à lancer notre action (envoi de formulaire, récupération de contenu, etc…)


$contenu = curl_exec($monInstance);

La variable contenu va contenir le code HTML de la page ou le contenu binaire du fichier que vous avez souhaité récupérer.

Pour obtenir plus d’informations sur comment la requête HTTP s’est passé, il est possible de récupérer un tableau contenant ces paramètres.


$info = curl_getinfo($monInstance);

Enfin, si on ne souhaite plus utiliser notre instance, il faut la libérer avec curl_close. Si vous souhaitez récupérer une autre page, etc… il est possible d’utiliser la même instance en changeant l’option CURLOPT_POST et éventuellement celle qui vous sont nécessaire.


curl_close($monInstance);

Voici un exemple par exemple pour se logguer sur le site City974


$monInstance = curl_init();
curl_setopt($monInstance, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($monInstance, CURLOPT_HEADER, false);
curl_setopt($monInstance, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');
curl_setopt($monInstance, CURLOPT_TIMEOUT, 60);
curl_setopt($monInstance, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($monInstance, CURLOPT_MAXREDIRS, 10);
curl_setopt($monInstance, CURLOPT_COOKIESESSION, true);
curl_setopt($monInstance, CURLOPT_COOKIEJAR, './cookie.txt');
curl_setopt($monInstance, CURLOPT_URL, 'http://www.city974.com/ident/identification.php');
curl_setopt($monInstance, CURLOPT_POST, 1);
//remplacer les paramètres par vos informations
curl_setopt($monInstance, CURLOPT_POSTFIELDS, 'pseudo=ahahahaha&mdp=ouioui&retenir=1&Submit=Ok');
$contenu = curl_exec($monInstance);
$info = curl_getinfo($monInstance);
//affiche le contenu pour voir qu'on est loggué
echo $contenu;
curl_close($monInstance);

Récupérer son dernier Twitt

Twitter comme tout bon site web 2.0 propose une API assez simple à utiliser.
Il suffit d’utiliser un cURL avec l’url adéquate pour récupérer ce qui nous intéresse.

L’url pour récupérer nos tweets sont de la forme http://www.twitter.com/statuses/user_timeline/username.format?count=10 où username est votre nom d’utilisateur et format le format dans lesquels vous souhaitez récupérer ces informations (xml et json principalement).

Voici comment faire avec cURL pour récupérer ce flux.


$monInstance = curl_init();
curl_setopt($monInstance, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($monInstance, CURLOPT_HEADER, false);
curl_setopt($monInstance, CURLOPT_TIMEOUT, 60);
curl_setopt($monInstance, CURLOPT_MAXREDIRS, 10);
curl_setopt($monInstance, CURLOPT_URL, 'http://www.twitter.com/statuses/user_timeline/despekiroule.xml?count=10');
$contenu = curl_exec($monInstance);
$info = curl_getinfo($monInstance);
$xml = $curl->getContent('');
$twitts = new SimpleXMLElement($contenu);
$lastTwitt = $twitts->status[0]->text;

Conclusion

Nous avons vu de manière succincte comment utiliser cURL pour récupérer et poster des informations dans le cadre précis de pouvoir poster son statut Twitter un peu n’importe où.
Un exemple plus complet est disponible ici.

Premier pas avec un serveur chez OVH sous Gentoo

Cette article va vous présenter les différentes méthodes pour installer un serveur LAMP sous OVH sous la distribution Gentoo 2007.0 (Il ne faut pas confondre la distribution Gentoo et celle qui est customisé par ovh).

Avant-propos

Gentoo est une distribution qu’on appelle source car elle compile chaque application et permet d’obtenir un gain sensible de performances et permet surtout de gérer plus finement les dépendances.
Il est possible d’opter pour d’autres distributions plus user-friendly lors de l’achat de votre serveur.
A vous d’opter pour celle qui vous correspond le mieux.
Les USE FLAGS qui vous seront présenté plus loin, sont en fait des options que tel ou tel paquet supporte et qu’on peut activer ou désactiver à notre convenance.

Pré-requis

Pouvoir se connecter en ssh et avoir quelques connaissances en ligne de commande Linux.

Premier pas avec le serveur

Avant de commencer, on va mettre à jour son gestionnaire de paquets. Sous gentoo, il s’appelle emerge.

Il suffit de taper la commande suivante pour mettre à jour les paquets.

emerge –sync

Dans un second temps, il faut vérifier le fichier /etc/hosts qui est souvent erroné.

127.0.0.1 localhost
91.1.1.1 2-r0001.ovh.net

En effet, pour une raison étrange, chaque nom de domaine se voit précédé d’un 2-nomduserveur.ovh.net.
Il suffit de l’enlever pour éviter d’éventuels problèmes.

Choix des options

Avant de lancer la compilation et l’installation de nos serveurs, il faut spécifier les différentes options que l’on souhaite activer pour chaque serveur.
Par exemple, les différentes librairies qu’on souhaite activer pour PHP.

Pour lister les options possibles d’un paquet il suffit de taper :

emerge -pv nomdupaquet

Ces options sont à renseigner dans le fichier /etc/portage/package.use sous la forme :

type-du-paquet/nom_du_paquet_sans_la_version -option_qui_sera_ignoré option_qui_sera_incluse

Evidemment, certains options peuvent paraître obscures et c’est pour ça que Gentoo Portage est là !
Pour l’utiliser, rien de plus simple, il suffit de taper le nom du logiciel que vous souhaitez installer, de choisir celui qui correspond.
Vous obtiendrez alors une liste de versions du paquet et tout en bas plusieurs onglets. Il suffit de regarder l’onglet “USE FLAGS” qui présente toutes les options.

Apache [USE FLAGS]

Apache utilise deux fichiers pour spécifier ses différentes options.
Dans package.use, on va spécifier les options générales tandis que les make.conf on va définir les modules à compiler (APACHE2_MODULES) et le type de fonctionnement d’apache (APACHE2_MPMS).

Voici pour exemple ma configuration.

ww-servers/apache ssl -debug -doc -ldap -selinux -sni -static -suexec threads

/etc/portage/package.use

APACHE2_MODULES=”alias auth_basic authz_host autoindex charset_lite deflate dir dumpio env expires headers log_config log_forensic mime mime_magic negotiation rewrite setenvif speling unique_id userdir vhost_alias filter”
APACHE2_MPMS=”worker”

/etc/make.conf

PHP [USE FLAGS]

Voici un exemple de configuration :

dev-lang/php berkdb cli crypt gdbm iconv ipv6 -ncurses nls pcre readline reflection session spl ssl unicode zlib -adabas apache2 -bcmath -birdstep -bzip2 -calendar -cdb -cgi -cjk -concurrentmodphp ctype curl -curlwrappers -db2 -dbase -dbmaker -debug -discard-path -doc -empress -empress-bcs -esoob exif -fastbuild -fdftk filter -firebird -flatfile -force-cgi-redirect -frontbase -ftp gd -gd-external -gmp -hash -imap inifile -interbase -iodbc -java-external -json -kerberos -ldap -ldap-sasl -libedit -mcve -mhash -msql -mssql mysql mysqli -oci8 -oci8-instant-client -odbc pcntl pdo -pic posix -postgres -qdbm -recode -sapdb sharedext -sharedmem simplexml -snmp soap sockets -solid -spell -sqlite suhosin -sybase -sybase-ct -sysvipc threads -tidy tokenizer -truetype -wddx xml xmlreader xmlrpc xmlwriter -xpm -xsl -yaz -zip -zip-external

MySQL [USE FLAGS]

Voici un exemple de configuration possible :

dev-db/mysql -berkdb -perl ssl -big-tables -cluster -debug -embedded extraengine -latin1 -max-idx-128 -minimal -selinux -static

Installation des serveurs

Il suffit de taper la commande suivante

emerge apache php mysql

Une fois la compilation terminé et qu’il n’y a pas d’erreurs pendant la compilation, il ne reste plus qu’à enregistrer les serveurs dans la séquence de démarrage.

rc-update add apache default
rc-update add mysql default

Maintenant, même en cas de redémarrage du serveur, Apache et MySQL démarreront sans intervention de votre part.

Configuration des serveurs

Apache

Selon les modules que vous avez choisi, le fichier /etc/conf.d/apache2 peut différer.
Il faut s’assurer néanmoins que sur la ligne APACHE2_OPTS la valeur -D PHP5 soit présente pour que le module php soit chargé.

APACHE2_OPTS=”-D DEFAULT_VHOST -D INFO -D LANGUAGE -D SSL -D SSL_DEFAULT_VHOST -D PHP5 -D USERDIR -D REWRITE”
SERVERROOT=/usr/lib/apache2
CONFIGFILE=/etc/apache2/httpd.conf
STARTUPERRORLOG=”/var/log/apache2/startuperror.log”
#RELOAD_TYPE=”graceful”

MySQL

emerge –config =dev-db/mysql-5.0.19

En remplaçant bien sur, 5.0.19 par la version que vous avez installé.
Derniére étape pour sécuriser le serveur,

mysql-secure-installation

Il suffit juste de répondre aux questions que le programme vous pose pour fermer quelques petits trous qui sont ouverts par défaut.

Voilà vous avez un serveur fin prêt à accueillir vos sites. J’ai passé sous silence d’autres aspects de la configuration qui sont spécifiques (les Virtual Hosts, optimiser MySQL) vu qu’il s’agissait ici des premiers pas avec son serveur.

Petit Déjeuner Symfony

Même si c’est pas mon framework de prédilection (je suis 100% Jelix), je vous relais l’information.

Symfony est un framework PHP orienté objet développé par Fabien Potencier.
Il reprend des designs patterns comme MVC notamment pour la séparation des couches.

Ce petit déjeuner aura lieu le jeudi 10 Avril au Centre Etoile Saint Honore (Paris 8ème) à partir de 8h45.

Prochain rendez-vous le mercredi 23 avril.

Pour s’inscrire c’est par ici.

Recherche de conférenciers pour le forum PHP 2008

Le forum PHP 2008 , organisé par l’Afup qui se tiendra du 8 au 9 décembre, est en quête de conférenciers.
Si vous pouvez couvrir un des sujets suivants, contacter les au plus vite :
- Comment gérer un projet PHP (outils, méthodes, …)
- Assurer la qualité du code
- Le Droit sur Internet
- Monter son entreprise autour de PHP
- La montée en charge
- Connecter des services (web services)
- Les interfaces riches (choix technologie, implémentation, …)

Conférences sur PHP en avril, mai 2008

Quelques conférences dans les mois à venir, auquel je compte y aller, je vous les listes au cas où vous seriez intéresser ou passer à côté de l’information.

- Apéro PHP le 22 avril à la Panfoulia à partir de 20h00, 20h30. [s'inscrire]

- Industrialiser les développements PHP, le cas eTF1, le 29 avril de 20h00 à 21h30 à la FIAP. [s'inscrire]

- PHP et Silverlight animé par Christophe Lauer et Pierre Lagarde, le 14 mai à la Cantine (Paris) à partir de 19h00. [s'inscrire]

Ca me fait penser qu’il faudrait que j’adhère à l’AFUP.

Flux RSS

Twitter

Se prépare à rentrer...6h00 de train en perspective et pas grand chose à faire...