Un ex-collègue de boulot à moi (mais toujours collègue tout court
), Guillaume Plessis, a monté il y a quelques temps un projet de dépot de paquets PHP qu'il a nommé DotDeb. C'est un dépot de paquets debian concernant principalement PHP5.
L'avantage par rapport aux sources de paquets officielles, c'est que dotdeb est beaucoup plus à jour, et on y trouve beaucoup plus de choses.
Suhosin, xdebug, apc, memcache, ffmpeg ou encore geoip : tout y est sous forme de paquets .deb
Sans parler de PHP5.3.1 (donc toute dernière version à la date de ce billet), ce qui est plus que rare aujourd'hui dans des dépots officiels !
Une seule adresse : http://www.dotdeb.org/
Personnellement, je préfère toujours la solution compilation manuelle aux paquets. Bon c'est normal, je suis un technique qui ne passe pas une journée sans ouvrir la source de PHP, je développe de plus en plus en C dans PHP Core ou Zend Engine, il est pour moi inconcevable de tourner avec des versions provenant de paquets et intégrant des patchs non officiels divers et variés.
La solution des paquets est intéressante par contre dans d'autres situations : simplicité d'installation, gestion des dépendances et surtout déploiement sur plusieurs postes et maintient à jour des distrib !
Pour PHP5.3, utilisez le dépot http://php53.dotdeb.org
Toute l'initiative est libre, n'importe qui peut participer au projet dotdeb si ça lui chante, et trouvera de l'aide sur le site officiel si besoin
Voyez aussi cette vidéo interview du fondateur de dotdeb par PHPTV
PS : pour les adeptes d'Ubuntu - comme moi - dotdeb est prévu pour Debian, vous pouvez donc l'utiliser sous Ubuntu, mais vous aurez des problèmes de dépendances à résoudre.
Soit vous tâtez dpkg et ses amies, et donc vous saurez re-construire les paquets pour votre distrib, soit sinon vous devrez télécharger les paquets à la main. Pour celà, fouillez le site de dotdeb, et notamment les commentaires de certains billets qui donnent une aide précieuse.
Inutile donc de trop harceler l'auteur : dotdeb ne supporte pas officiellement Ubuntu, par contre je suis sûr que Guillaume serait enchanté si quelqu'un pouvait l'aider à monter un support Ubuntu pour dotdeb :-)
Vous devez être identifié pour poster un commentaire.
Voila quelques temps j'ai sorti odtphp, un script PHP qui analyse des fichiers odt à la recherche de "tags" et qui les remplace par des données que vous fournissez.
C'est très pratique pour générer des factures ou d'autres documents basés sur un template odt et une source de données type MySQL.
Bon, même si le code n'est pas super bien écrit (il utilise des regex assez complexes, j'aurai préféré jouer avec OpenDocument et DOM mais on a passé le projet en Opensource, n'importe qui peut donc s'y atteler
, ça fonctionne dans la grande majorité des cas.
Aujourd'hui je me suis penché sur LiveDocx. Il s'agit d'un service Web SOAP, qui est capable de faire la même chose que odtPHP, avec quelques différences :
Cerise sur le gateau, il existe un service Zend Framework qui permettra donc d'éviter de lire l'API. Zend_Service_LiveDocx est tout petit et tout simple à utiliser
Concernant la compatibilité OpenOffice, lisez donc ce billet (jusqu'au bout)
J'ai testé, et ça fonctionne très bien (un peu lent, mais je suis sur un compte gratuit) ^^
Vous devez être identifié pour poster un commentaire.
La branche 1.3 d'Apache est officiellement arrêtée (http://www.apache.org/dist/httpd/Announcement1.3.html) , seuls des correctifs de sécurité éventuels viendront se greffer dessus.
L'ASF recommande fortement de migrer vers la branche 2.2 pour ceux chez qui ça n'est pas encore fait (FaceBook par exemple, mais c'est en cours).
On utilise aujourd'hui encore Apache 1.3 pour sa robustesse évidente, mais à ce jour la branche 2.2 a fait ses preuves, elle est tout aussi robuste, et surtout beaucoup plus fléxible notamment grâce à l'extraction des MPM(Multi Process Modules) sous forme de modules.
Le fonctionnement interne d'Apache est aussi fortement changé dans la branche 2.2 par rapport à la 1.3 et les fonctionnalités beaucoup plus nombreuses.
La branche 2.2 date tout de même de 2006 ^^
Vous devez être identifié pour poster un commentaire.
Pour la 1.10, prévue sous peu, une nouvelle version de la documentation a été compilée.
Plus claire, elle voit aussi naitre une nouvelle partie : tutoriels ^^
En la traduisant, j'ai exactement pensé à la confection d'un de mes tutoriels sur dvp.com, je me suis donc dit que je devais ajouter cet ensemble de pages de la documentation officielle, traduites par mes soins, à ma page de tutoriaux.
Ces tutoriels expliquent le fonctionnement des objets les plus couramment manipulés dans le ZendFramework, présente leur fonctionnement mais aussi la manière de les étendre.
Comme d'habitude, cette lecture accompagnée de la lecture des tests unitaires, permettra une pleine compréhension des choses
Je présenterai cette doc sous forme de tutoriel dans mes pages, ce sera chose faite dès la traduction totalement terminée (dans la semaine), vous pouvez par contre déja lire la documentation de la version 1.10 en partie traduite
Vous devez être identifié pour poster un commentaire.
Encore un peu de __halt_compiler()
Le but : créer un script qui va monter une base SQL en mémoire pour des tests.
Facile, oui, mais en jouant avec le compilateur Zend cette fois, c'est à dire en écrivant le script SQL au sein même du fichier PHP, sans manger de mémoire PHP pour le stocker dans une variable.
Voila la sauce :
$p = new PDO("sqlite::memory:", "user", "pass");
$fp = fopen(__FILE__, 'r');
fseek($fp, __COMPILER_HALT_OFFSET__);
while ($line = fgets($fp)) {
// on crée le tables et on insère les données écrites en SQL sous le script PHP
$p->exec($line);
}
fclose($fp);
__halt_compiler();
create table table1(champ1 INTEGER, champ2 CHAR);
insert into table1 (champ1, champ2) VALUES (3, 'foo');
// {{ some more SQL code to run here }}
Sympa cette fonction qui permet d'encapsuler au sein même de ces fichiers PHP du code non PHP en arrêtant le compilateur.
On pourrait imaginer compresser le code pour qu'il prenne moins de place, voire même encapsuler du code malicieux ... whouuu !
En résumé, un seul fichier encapsule du code PHP, SQLite étant compilé avec PHP ça embarque un moteur de base de données, et il n'a même pas besoin du FileSystem pour stocker la base SQLite : c'est stocké en mémoire ( et détruit en fin de script).
Encapsulation extrême !
Vous devez être identifié pour poster un commentaire.
Encore la semaine dernière on m'a demandé en formation s'il était prévu de traduire les messages d'erreur des validateurs de ZendFramework.
Il est vrai qu'il peut être pénible de traduire tous les messages de tous les validateurs en Français (par exemple), il y en a beaucoup (ils sont tous en anglais par défaut)
Plus besoin de chercher la perle rare (le fichier qui contient toutes les traductions en français, si un tel fichier peut exister sur Internet) : c'est devenu officiel : la version 1.10 du ZendFramework proposera tous les messages traduits.
Je suis actuellement sur leur traduction, la 1.10 sortant fin de semaine, ça sera terminé.
Pour ceux qui veulent plus d'informations, voyez les mailing-list @fw-doc ou encore http://framework.zend.com/svn/framework/standard/trunk/resources/
Vous devez être identifié pour poster un commentaire.
Windows et PHP ... Une longue histoire d'humour ;-)
Rappel des faits : Windows n'est pas fort en fork de processus, il s'en sort mieux avec les threads.
Le MPM d'Apache pour Windows est donc "Winnt", il utilise des threads pour traiter les requêtes parallèles (s'il utilisait des forks, on traiterait beaucoup moins de clients à la seconde et Windows n'en pourrait plus).
Conclusion : PHP doit être compilé avec la ThreadSafety(TS) (--enable-maintainer-zts) pour pouvoir tourner sous Windows avec Apache en module. C'est le cas historique, depuis la nuit des temps.
Ceci mène à des problèmes : les extensions PHP utilisées doivent être threadsafes(TS), y compris les débogueurs (qui ne sont autres que des extensions, un peu particulières certes).
Le problème est que Zend ne supporte plus le mode TS dans ZendDebugger pour PHP5.3 et proposent comme solution de télécharger ZendServer.
Conclusion : pour déboguer sous Windows avec PHP5.3 : soit vous faites une croix sur ZendDebuggeur et téléchargez Xdebug qui supporte la Thread Safety, soit vous utilisez PHP5.3 en mode NTS mais vous ne pourrez l'utiliser en module Apache, vous devrez donc vous tourner vers du FCGI, soit vous téléchargez ZendServer qui (il me semble) embarque un Apache et un PHP NTS en FCGI (tout fermé comme une boite noire ...)
Pour savoir quel PHP vous possédez : php -v ou encore phpinfo(INFO_GENERAL) (chercher "thread safety")
La plupart du temps, vous ne trouverez que des versions TS de PHP pour Windows, les versions NTS se trouvent sur windows.php.net
Après évidemment si vous le compilez vous-même, vous faites ce que vous voulez.
Ma recommandation : passez sous Linux ;-) Vous pourrez compiler vous-mêmes PHP sans grands efforts et le personnaliser au maximum. De plus vous disposerez de toutes les extensions PECL, bref : la liberté (article à venir)
Vous devez être identifié pour poster un commentaire.
Mon entreprise (AlterWay) vient de sortir un site dédié à l'elephpant PHP.
Vous trouverez des news, des images et vous pourrez en acheter. Je parle au futur car la conception est encore en cours, mais ça ne saurait tarder.
L'URL est plutôt simple : http://www.elephpant.com
Vous devez être identifié pour poster un commentaire.
Nous avons déjà compris le fonctionnement de PHPUnit et le principe des tests en développement PHP, au travers de l'article Développement piloté par les tests avec PHPUnit. Nous allons à présent montrer les fonctionnalités avancées de PHPUnit notamment concernant les patterns de tests, Mock, Stub, Double, Spy ; nous verrons comment les mettre en place au travers d'un exemple simple et concret, et en quoi ces techniques peuvent rapidement devenir addictives. Pour cela, il conviendra de rappeler les grands principes du développement logiciel orienté objet : SOLID.
Vous devez être identifié pour poster un commentaire.
Pour la troisième année consécutive, la journée be-zend aura bien lieu en 2010 : le 25 Mars.
Pour rappel cette journée est organisée par l'Université de Picardie, se déroule à Saint Quentin et concerne uniquement le ZendFramework
Le thème de l'année 2010 : les webservices
Si vous avez un retour d'expérience ou une conférence susceptible d'être intéressante, n'hésitez pas à la proposer !
Le site ne change pas d'adresse : http://www.be-zend.org ; il sera mis à jour d'ici la date du rendez-vous.
Vous devez être identifié pour poster un commentaire.
Sebastien Bergmann a eu la bonne idée d'ajouter une règle "ZendView" à son outil bytekit-cli (que j'ai déja présenté ici)
Cette règle trace tous les appels à "echo $this->{xxx}" dans votre vue Zend_View et vous indique qu'il n'est pas bien d'afficher directement une variable de vue sans l'échapper auparavant.
Bon, de là à monter un système qui echappe automatiquement les variables de vues ( à la Symfony) il n'y a qu'un pas, Zend_View étant pour rappel premièrement facultatif (vous voulez utiliser un autre système de vues/templates ? faites donc) deuxièmement très flexible (Zend_View_Abstract / Zend_View_Interface).
Petit exemple de script de vue (edit.phtml) :
<h1>Edition du membre <?php echo $this->form->getElement('nom')->getValue() ?></h1>
<?php
echo $this->form;
?>
Et le bytekit :
julien@julien:views/scripts/membres$ bytekit --rule=ZendView edit.phtml
bytekit-cli 1.1.1 by Sebastian Bergmann.
- Attribute $this->form is not safe-guarded by Zend_View::escape()
in /media/www/pe/application/modules/default/views/scripts/membres/edit.phtml:4
Sympa, à mettre dans la trousse à outils avec les autres (PHPUnit, PHP_CodeSniffer, PHPCPD, PHPMD etc...)
Vous devez être identifié pour poster un commentaire.
Une nouvelle année va démarrer bientôt (je suis en congé donc je ne bloguerai plus avant 2010 ;-)), il faut de bonnes résolutions n'est-ce-pas ?
Alors à quoi s'attendre de mon coté ?
Déja, sur le feu (terminé, actuellement en relecture) un article sur PHPUnit avancé et les patterns de tests arrive.
A ce sujet, j'enchaine tout de suite sur une annonce : je suis sur la rédaction d'un nouvel ouvrage en collaboration toujours avec Guillaume Ponçon.
Cet ouvrage aura 2 missions : faciliter la bascule vers le monde de l'objet pour les programmeurs PHP procéduraux encore réticents, et assoir les connaissances des programmeurs objets actuels éventuellement sur d'autres technos (type Java).
Les annexes de notre précédent ouvrage ayant visiblement bien plu, nous souhaitons monter un ouvrage de référence sur les techniques de programmation orientée objets (patterns) avec PHP 5 (5.3 bien sûr).
Voici un aperçu du menu qui peut encore bouger : Historique PHP et historique du modèle objet de PHP, PHP face à C++ et Java, différence approche procédurale approche objets, cultiver une pensée objets, UML et design applicatif, Design Patterns par la pratique, Testabilité logicielle découplage cohésion et principes fondamentaux, PHPUnit en profondeur, conception architecture logicielle et maitrise du changement, support objet intégré à PHP : la SPL de A à Z, déploiement et intégration continue en gestion de projets, Phar.
Date de sortie prévisionnelle : deuxième semestre 2010, éditions Eyrolles.
Concernant les tutoriaux dvp.com, j'ai envie de parler de : (sans garantie comme d'habitude)
- Installer un environnement en compilant PHP/Apache/MySQL sous Linux (UbuntuServer)
- gestion des flux de données en PHP
- Phar, le nouveau format de packaging PHP
- Petit tour des pratiques XML en PHP
- PECL : la mine d'or des extensions PHP
- Installation et configuration de modules "exotiques" d'Apache
RAS côté ZendFramework, en fait je n'ai pas trop de projets de tutoriaux mais je vais en écrire : les idées arrivent un peu au jour le jour en fait ;-)
Voila pour le programme, je rappelle que ce ne sont que des idées, l'ouvrage en revanche passera avant et sortira dans l'année.
Bien sûr les tutoriaux dvp.com prennent du temps (100% bénévole évidemment), donc je ne peux rien garantir (de ce programme très ambitieux) mais je ferai mon possible ^^
Sur ce, bonnes fêtes à tous, joyeux Noël
Vous devez être identifié pour poster un commentaire.
Developpement web PHP
| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |