Toute l'actualité francophone sur PHP en un seul flux

Juillet 2008 – PHP Index: Symfony 1.1

Après plusieurs mois de développement, la version 1.1 du framework PHP Symfony est désormais officiellement disponible.

Parmi les nouveautés et évolutions nous trouvons entre autres :

  • Une nouvelle architecture de Symfony plus configurable et découplée pour utiliser ou remplacer des parties du framework plus facilement.
  • Un nouveau framework de formulaire orienté-object facilitant leur création.
  • Un nouveau système de tâches pour les scripts batch et les utilitaires en ligne de commande.
  • Un nouveau parser YAML avec un reporting des erreurs plus détaillé.
  • Un nouveau gestionnaire de plugins compatible avec l'API standard de PEAR et qui gère désormais les dépendances.
  • L'ORM Propel 1.2 est désormais intégré en temps que plugin pour faciliter le passage à un autre ORM (comme Doctrine ou Propel 1.3).
  • Un plugin sfCompat10Plugin facilite le passage d'un projet basé sur la branche 1.0 de Symfony vers la branche 1.1.
  • Une mise en cache du système de routing pour augmenter les performances.

A noter également des améliorations de l'internalisation, des outils de test et une refonte totale de l'utilitaire en ligne de commande.

Pour en savoir plus :
The wait is over: symfony 1.1 released
Documentation d'installation

Juillet 2008 – tigrou/pwet.fr: La recherche universelle de Google même dans le code

Petite découverte aujourd'hui en cherchant un peu par hasard mysql_num_rows dans Google, puisqu'on peut y voir un petit extrait de code PHP d'une application nommée eNdonesia (d'ailleurs le fait d'avoir des mysql_query() et mysql_num_rows() perdus au milieu de HTML ne donne pas très envie mais c'est une autre histoire...).

Je savais que la recherche universelle était en place depuis un moment, mais c'est la première fois que je vois des morceaux de Google Code Search au milieu des résultats et pourtant des recherches portant sur du code j'en fais régulièrement. En regardant les autres moteurs sur la même recherche, il est amusant de constater que Yahoo! remonte en dixième place une page avec le célèbre warning "Warning: mysql_num_rows(): supplied argument is not a valid MySQL result" qui est certes répèter un bon nombre de fois. Les résultats sur Live sont encore plus surprenants, puisque ce dernier sort une page du même genre en neuvième position mais chose étonnante, il faut aller en troisième page pour trouver une page de PHP.net et encore ce n'est pas la bonne ! Google a semble t il encore un bonne longueur d'avance !

Juillet 2008 – Nexen.net: Uploaders d'Images avec Adobe AIR et JavaScript

Image pour le titre du contenu
"Dans cet article, je vais vous montrer comment construire un uploader d'images avec Adobe AIR, Javascript et HTML. Mon premier exemple sera le chargement d'un fichier. Puis, en se basant sur cet exemple, nous allons voir comment télécharger un groupe de fichiers. Et je finirais en affichant la liste des fichiers actuellement disponibles sur le serveur, après leur téléchargement."
Jack Herrington s'attaque au problème classique des téléchargements d'images, si populaires auprès des utilisateurs, mais tellement inefficaces en HTML.

Juillet 2008 – Nexen.net: Symfony 1.1 publiée

Image pour le titre du contenu
Symfony 1.1 est publié en version stable et finale. La liste des évolutions du populaire framework de développement est très intéressantes.
Les classes de formulaires, qui permettent de produire des Formulaires HTML, et de les valider, ont été réécrites et sont documentées (en français). Le système de gestion des tâches a aussi revu en profondeur, l'analyseur YAML réécrit.
Le projet est livré avec un plug-in de compatibilité avec la version 1.0 (sfCompat10), ainsi que 8500 tests unitaires de regression.
Bravo à toute l'équipe pour le travail, et bonne chance à cette version.

Juillet 2008 – Nexen.net: Les utilisateurs de FireFox sont les plus sécuritaires

Image pour le titre du contenu
Selon une étude indépendante menée par Google Switzerland, IBM Internet Security Systems et CSG ETH Zurich, les utilisateurs de FireFox sont les plus prudents, car ils utilisent la toute dernière version du système (à l'exception de 16% d'entre eux). En fait, les chiffres sont beaucoup plus bas pour Safari, Opera et Internet Explorer. Ces derniers sont 1 sur 2 à ne pas utiliser la dernière mouture du navigateur.
Alors que tout ces navigateurs utilisent un système de surveillance automatique de la dernière version, il y a encore tant d'utilisateurs qui ignorent ces mises à jour. Pourtant, il n'y a qu'un seul clic, sauf si on ne dispose pas des droits pour cela sur la machine.
Les auteurs de l'étude propose au final de mettre une date de péremption sur les navigateurs : meilleur si utilisé avant... Cela rappelle les licences temporaires, mais maintenant, avec une argumentation sécuritaire.

Juillet 2008 – Nexen.net: PHP sécurité de PHP freaks

Image pour le titre du contenu
Daniel Egeberg publie un dossier plutôt complet sur la sécurité PHP, sous forme d'un PDF de 20 pages. La sécurité PHP passe par le masquage d'erreur, les injections SQL et HTML, les téléchargements de fichiers, et la protection des sessions.
Ce document est à utiliser comme une référence, et si tous les points affichés sont pris en comptes, il sera difficile de trouver une faille dans vos applications. Il manque peut être une section sur les directives de sécurité PHP plus détaillées.

Juillet 2008 – Nexen.net: Revue de MONyog, moniteur pour MySQL

Image pour le titre du contenu
Sheeri Kabral passe en revue MONyog, un moniteur MySQL dédié. Il s'installe en quelques minutes, surveille les requêtes SQL (tentatives de piratage, qualité des requêtes SQL), et produit des graphiques de performances. MONYog se distingue des autres outils de surveillance, comme MySQL entreprise, par l'absence d'agent local : pas besoin d'installation particulière sur le serveur de destination pour le suivre.
MONyog coûte 129 $ US, avec 1 an de support.

Juillet 2008 – PHP Index: Symfony 1.2 planifié pour octobre 2008

Après la sortie récente de Symfony 1.1, Fabien Potencier décrit la feuille de route pour Symfony 1.2, dont la sortie est prévue en octobre 2008.

Les nouvelles fonctionnalités prévues sont les suivantes :

  • Réécriture complète de l'admin generator, afin de profiter des nouvelles fonctionnalités pour les formulaires et en vue de la rendre plus souple et personnalisable.
  • Plugins Propel et Doctrine.
  • Filtrage natif des données.
  • Intégration de la librairie Swift (solution d'envoi d'email).
  • Création d'un plugin pour les éléments javascript, en vue de laisser le choix à l'utilisateur pour l'éventuel framework javascript à employer.
  • Discussion ouverte sur les fonctionnalités nécessaires pour un "deployement task" adéquat.

Il annonce un nouveau management des sorties de Symfony dont la date de sortie sera désormais fixée à l'avance. Notamment celle de la version 1.2 est d'ores et déjà prévue pour octobre 2008, quatre mois selon après la version 1.1. Pour permettre ce type de management, le développement de chaque nouvel élément sera rendu indépendant des autres et attribué à un membre spécifique de l'équipe.

Il est à noter que seul l'ajout du point sur l'admin generator est considéré comme "must-have" pour la version 1.2, les autres seront ajoutés s'ils sont prêts à la date échue.

Pour en savoir plus :

Juillet 2008 – Arnaud Limbourg: Lightroom - photos supprimées du catalogue mais pas du disque

Lors du traitement de photos avec Lightroom l'une des étapes essentielles est de supprimer des photos du catalogue lors du tri. Il arrive que la photo soit retirée du catalogue mais se trouve toujours sur le disque. La place disque ainsi perdue devient non-négligeable.

N'ayant pas trouvé de solution sur la toile j'ai écrit un script [PHP][php] qui parcourt récursivement un répertoire et regarde si les fichiers photos existe dans le catalogue de lightroom.

[php]: http://www.php.net Attention : je ne prends aucune responsabilité quand à l'utilisation que vous pourrez en faire, une mauvaise utilisation peut détruire votre catalogue, faites une sauvegarde au préalable.

Limitations : ce script n'interagi qu'avec un catalogue à la fois, si vous avez plusieurs catalogues référençant les mêmes photos sur le disque ce script ne vous sera pas d'une grande aide

Lightroom utilise une base de données SQLite il est donc possible de faire des requêtes sur cette base. Le schéma n'est pas publié par Adobe, si votre catalogue est corrompu ne venez pas vous plaindre :-)

Le script est non destructif, il affiche les informations sur les fichiers et les commandes que vous pouvez executer pour les supprimer.

Exemple d'utilisation (sur OS X):

php find_deleted_photos_lr.php ~/Pictures ~/Pictures/Lightroom/Lightroom\ Catalog.lrcat

Le script : http://www.limbourg.com/arnaud/code/find_deleted_photos_lr.php.txt

Les extensions considérées comme des photos se trouvent en début de script, modifiez les à votre guise.

ps: le script n'est pas spécialement beau. Denombreux bouts de code des examples de SPL (la librairie standard PHP) sont utilisés

Juillet 2008 – Nexen.net: MySQL proxy tests de performances

Image pour le titre du contenu
Alex Tomic a testé le proxy MySQL en charge sur EC2 : un proxy et 4 serveurs MySQL. Les requêtes sont réparties sur 4 serveurs MySQL, et distribuées (entrée et sortie) via le proxy. Les résultats montrent que le point critique est entre 4 et 8 threads concurrents : en dessous de ce niveau d'activité, le surcoût de MySQL proxy rend l'architecture plus lente. Une fois ce cap passé, le gain devient plus intéressant, et l'archi proxy est capable de monter en puissance jusqu'à 4 fois la charge nominale de chaque serveur.

Juillet 2008 – Nexen.net: PHP 5.3 reçoit l'aide de Lukas Smith

Image pour le titre du contenu
Lukas Smith est maintenant co-RM (Release Manager), avec Johannes Schlüter, pour faire avancer PHP 5.3. C'est une bonne chose, et PHP 5.3 en a bien besoin. De nombreuses fonctionnalités de PHP 6.0 ont finalement été ramenée en 5.3, et il semble que le code actuel ne soit pas encore bien stable : mon dernier make test sur OSX affichait 13% d'erreurs dans les 6000 tests unitaires (YEAH), et le CLI était inutilisable.
Bonne chance à Lukas, et Johannes. Pour les aider, pas de secret : téléchargez PHP sur la version snaps, et testez leur sur vos applications. Plus on en sait maintenant, moins il y a urat de bugs plus tard.

Juillet 2008 – Nexen.net: Statistiques PHP de juin 2008

Image pour le titre du contenu
Les statistiques de diffusion PHP dans le monde pour juin 2008 sont arrivées.

  • PHP 5.2.6 progresse vivement et rattrappe PHP 5.2.5

  • PHP 5 atteint 38,93% de part de marché

  • Le sondage a passé en revue plus de 30 millions de domaines ce mois-ci

Juillet 2008 – Nexen.net: Lire des RSS en PHP

Image pour le titre du contenu
'Récemment, je cherchais un agrégateur RSS. J'ai été surpris de réaliser la difficulté que j'avais à trouver celui qui me convenait parfaitement. Et, manquant de patience, je me suis penché sur l'idée d'écrire le mien. Dans cet article, je vais vous montrer comment créer votre propre lecteur RSS!
Par Ian Gilfillan

Juillet 2008 – Arnaud Limbourg: Lightroom - photos supprimées du catalogue mais pas du disque

Lors du traitement de photos avec Lightroom l'une des étapes essentielles est de supprimer des photos du catalogue lors du tri. Il arrive que la photo soit retirée du catalogue mais se trouve toujours sur le disque. La place disque ainsi perdue devient non-négligeable.

N'ayant pas trouvé de solution sur la toile j'ai écrit un script [PHP][php] qui parcourt récursivement un répertoire et regarde si les fichiers photos existe dans le catalogue de lightroom.

[php]: http://www.php.net Attention : je ne prends aucune responsabilité quand à l'utilisation que vous pourrez en faire, une mauvaise utilisation peut détruire votre catalogue, faites une sauvegarde au préalable.

Limitations : ce script n'interagi qu'avec un catalogue à la fois, si vous avez plusieurs catalogues référençant les mêmes photos sur le disque ce script ne vous sera pas d'une grande aide

Lightroom utilise une base de données SQLite il est donc possible de faire des requêtes sur cette base. Le schéma n'est pas publié par Adobe, si votre catalogue est corrompu ne venez pas vous plaindre :-)

Le script est non destructif, il affiche les informations sur les fichiers et les commandes que vous pouvez executer pour les supprimer.

Exemple d'utilisation (sur OS X):

php find_deleted_photos_lr.php ~/Pictures ~/Pictures/Lightroom/Lightroom\ Catalog.lrcat

Le script : http://www.limbourg.com/arnaud/code/find_deleted_photos_lr.php.txt

Les extensions considérées comme des photos se trouvent en début de script, modifiez les à votre guise.

ps: le script n'est pas spécialement beau. Denombreux bouts de code des examples de SPL (la librairie standard PHP) sont utilisés

Juillet 2008 – PHP Index: Test des performances de CMS : Typo3, Joomla!, and Drupal

Sur son blog, Alex Shapovalov propose deux séries de tests comparatifs des CMS Typo3, Joomla!, and Drupal.

En mai 2008, une première série de tests lui avait permis de conclure que Drupal était notablement plus rapide que les autres CMS testés.
De nombreuses personnes lui avaient alors reproché de ne pas avoir fait le nécessaire pour optimiser le résultat de chacun des CMS testé (cache, environnement, ...). Aujourd'hui il propose les résultats d'une nouvelle série de tests en ayant fait les optimisations demandées. Il en conclut que Drupal tire encore une fois son épingle du jeu.

Affaire à suivre. Il ne serait guère étonnant que d'autres séries de tests voient le jour dans les prochains mois.

Pour en savoir plus :

Juillet 2008 – Nexen.net: Calculer les centiles MySQL

Image pour le titre du contenu
Les centiles sont une des 99 valeurs qui divise les données triées en 100 parts égales. Le premier centile (abusivement appelé percentile, de la version anglaise), identifie les valeurs le plus basses du groupe. On connaît souvent la médiane, qui découpe le groupe en 2 part de même taille : le concept est similaire.
Roland Bouman publie un article où il arrive à calculer les percentiles sans jointures, sous-requêtes ni variables utilisateurs : il se base sur GROUP_CONCAT, et SUBSTRING pour ordonner le groupe, et en extraire des portions intéressantes. Le tout se fait en une seule passe, et quelques manipulations de chaînes.
C'est un bon truc, mais je crois que je préfèrerai les variables utilisateurs, pour éviter de concaténer des chaînes trop grosses dans group_concat.

Juillet 2008 – Nexen.net: Vidéo PHP et MySQL, édition 51

Image pour le titre du contenu
Voici les 5 dernières vidéos PHP et MySQL.


Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.



N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.

Juillet 2008 – Nexen.net: Introduction aux hashages

Image pour le titre du contenu
"Une tâche classique pour tout système d'identification est de stocker et relire des mots de passe. La sécurisation de ces données est critique pour la mise en place d'un système stable et sécuritaire, car s'il y a une vulnérabilité, il faudra que les données se défendent seul contre les pirates qui auraient accès en lecture. Les mots de passe ne doivent jamais (ou très exceptionnellement) être sauvé en clair : il faut toujours compter sur la signature, un chiffrement uni-directionnel, pour protéger ces informations critiques, et au moins gagner du temps."
Par Sean Coates.

Juillet 2008 – Nexen.net: Rdv Technique : Yahoo lance "SearchMonkey"

Image pour le titre du contenu
Via l'AFUP :
"Yahoo ! a quelque chose à fêter avec vous ! Dans le style "SearchMonkey" !
Vous êtes développeur ? Venez célébrer avec nous le lancement de SearchMonkey. Au programme de la soirée : des démos en live, des goodies, et bien sûr, nourriture et boisson à lavenant !
Lieu : La Cantine - Coworking Paris 151 rue de Montmartre Paris, Île-de-France 75002
Avec SearchMonkey, les développeurs et les webmasters peuvent utiliser les standards du Web sémantique et les données structurées pour améliorer et enrichir les résultats de Yahoo ! Search afin de les rendre plus utiles, plus pertinents et plus attrayants. Venez donc rencontrer léquipe qui a créé le service : vous aurez toute liberté pour leur poser les questions qui vous tiennent à coeur.
Nous espérons vous voir le 10 juillet !"

Juillet 2008 – Nexen.net: Actualité de développement PECL, edition 206

6 paquets ont été mis à jour cette semaine :

  • en xdiff (0 visite) : extrait les différences et les patches entre fichiers

  • en lzf (0 visite) : compression LZF

  • en xattr (0 visite) : attributs étendus

  • en svn (0 visite) : Interface avec le client Subversion

  • en intl (0 visite) : extension d'internationalisation

  • en tcpwrap (0 visite) : interfarce TCP wrapper


PECL est la bibliothèque d'extensions C de PHP.

 



 

Juillet 2008 – Nexen.net: Le meilleur du mois de Juin 2008

Image pour le titre du contenu
Des interfaces PHP plus conviviales Des interfaces PHP plus conviviales
(1914 hits)
30 Classes et Composants PHP utiles 30 Classes et Composants PHP utiles
(1659 hits)
Plus de 1000 scripts PHP Plus de 1000 scripts PHP
(1499 hits)
introduction au PHP/Java Bridge introduction au PHP/Java Bridge
(1222 hits)
  Outils pour le suivi des performances MySQL
(1198 hits)
addslashes : toujours la protection numéro 1? addslashes : toujours la protection numéro 1?
(1110 hits)
PHruts : Portage de Struts en PHP5 en version bêta PHruts : Portage de Struts en PHP5 en version bêta
(1097 hits)

Retrouvez les dépêches les plus populaires mois par mois, dans la rubrique 'Le meilleur du mois'.
Vous pouvez aussi découvrir l'actualité PHP et MySQL uniquement à travers les liens publiés sur nexen.net, dans le link blogue : tous les liens y sont recensés, mais pas le billet d'actualité.
Enfin, nous avons un porte-feuille de liens intéressants, dans la boîte à liens. Vous y trouverez beaucoup de PHP et MySQL, mais aussi d'autres petites perles intéressantes.
Bonne lecture!

Juillet 2008 – Nexen.net: Alertes sécurité des applications PHP et MySQL, édition 209

Image pour le titre du contenu


PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.6 et 4.4.8; MySQL 5.0.51 (communauté) , 5.1.24-rc et 6.0.4.
Les mises à jour sont recommandées vers ces versions.



3 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Drupal, Joomla et phpMyAdmin



Juillet 2008 – Nexen.net: Actualité de développement PEAR, edition 209

Image pour le titre du contenu
3 paquets ont été mis à jour cette semaine :

PEAR est la bibliothèque de composants PHP.

 



 

Juillet 2008 – Hello Design: VIP 2008 : Conference PHP

 Après quelques années d'absence, la 5ème édition de la VIP aura lieu du 11 au 13 juillet 2008 aux alentours de Lyon.

Cette rencontre sera le lieu de prédilection de la création numérique. La demoparty  ou aussi appelé coding party comporte différents concours informatiques dans lesquels les créateurs peuvent s'affronter, s'évaluer, en laissant une grande part de liberté dans la création et l'imagination.

Les principaux sponsors de ce rendez-vous sont :

 Cette année verra apparaitre une série de conférences accessible pour les visiteurs et les participants, dont une des conférences sera sous le thème de "Qu'est ce PHP ?" le Samedi 12 juillet a 14h00, présente par moi même (christophe Villeneuve)

 

Pour plus d'informations sur la VIP : cliquez ici


 

 

Juillet 2008 – Apprendre-PHP.com: Générer une liste déroulante HTML de nombres

Cette petite fonction permet de générer une liste déroulante de nombres en une seule ligne de code. Il suffit de lui fournir quelques paramètres obligatoires tels que son nom, la valeur de départ, la valeur d'arrivée, la valeur par défaut et quelques autres données facultatives pour obtenir une belle liste déroulante sexy.

Juillet 2008 – Nexen.net: FirePHP - Nouvelle version

Image pour le titre du contenu
Pour rappel, FirePHP est une extension de Firebug permettant d'aider l'utilisation du PHP en un simple appel.
FirePHP nécessite obligatoirement PHP 5 et se trouve maintenant 100 % compatible avec Firefox 2 et la nouvelle version de Firefox 3 qui vient de sortir.
En plus, Un Wiki et de nouveaux exemples ont été réalisés pour faciliter vos développements.

Juillet 2008 – Apprendre-PHP.com: Introduction aux Cross Site Request Forgeries ou Sea Surf

Vous connaissez peut-être les attaques XSS qui consistent à injecter du code malveillant, et où l'utilisateur est directement victime de l'action du code (boîtes de dialogue, redirections, vols de cookies, etc.) ? Eh bien, ce tutoriel va vous apprendre un autre type de faille radicalement opposé à celui-ci. Il s'agit bien entendu des attaques CSRF.

Juillet 2008 – Nexen.net: log_error pour MySQL

Image pour le titre du contenu
Log_error() pour MySQL est une fonction utilisateur qui enregistre un message dans le log d'erreur de MySQL. Pour pouvoir l'extraire plus rapidement ultérieurement, un indicateur est ajout à la fin du message.
Pourquoi écrire dans le log d'erreur? Pour le débogage, ou pour simplement enregistrer quelque chose d'important pour votre application.

Juillet 2008 – Nexen.net: Abus de LEFT JOIN

Image pour le titre du contenu
Arjen Lentz propose une solution pour éviter les abus de LEFT JOIN :
"Si vous n'avez aucune raison pour utiliser un LEFT JOIN, n'en utilisez pas".
Trop souvent, LEFT JOIN est la jointure par défaut dans les applications, alors qu'un JOIN classique, avec condition de jointure, serait correct et suffisant. Réfléchissez-y, cela fait souvent plus de sens, et moins de travail pour le serveur MySQL.

Juillet 2008 – Nexen.net: mysqlslap et supersmack, deux outils de benchmark pour MySQL

Image pour le titre du contenu
"comment sassurer que son serveur MySQL tiendra la charge ? 1000 requêtes /s en insertion sont prévues le jour de la sortie de votre prochain service internet : votre serveur sera t-il capable dy faire face ?
Les deux outils présentés aujourdhui permettent de simuler la charge reçue par le serveur MySQL en fonction de différentes paramètres dont le nombre de connexions simultanées et le nombre de requêtes par utilisateurs. Avec de tels outils, vous pouvez par exemple tester mysqlslap sur une de vos requêtes clé, visualiser comment celle-ci réagit sous différentes configurations, et visualiser un score à base de temps dexécution. Une fois ce score récupéré, comparez-le avec celui que vous obtiendriez avec la même requête modifiée par vos soins, avez-vous progressé ?"

Juillet 2008 – Nexen.net: Injection de dépendances en PHP avec Crafty

Image pour le titre du contenu
"Mes récentes, brèves mais fructueuses, incursions dans l'archipel de Java m'ont permis de pratiquer les patrons de conceptions inversion de contrôle (IoC) et injection de dépendances. Je viens de tomber sur une bibliothèque PHP, Crafty, permettant de faire de l'injection de dépendances en PHP. L'occasion d'en dire 2 mots..."
Par clochix.

Juillet 2008 – Nexen.net: Sauvegarde MySQL 6.0 : beaucoup plus rapide

Image pour le titre du contenu
L'une des fonctionnalités phare de MySQL 6 sera la sauvegarde : au lieu de passer simplement par mysqldump, pour exporter les données, puis par mysql (le client en ligne de commande), pour tout réimporter, des commandes SQL seront dédiées à la sauvegarde et la restauration des données :
 
 
backup database employees to 'emp2.bkp';
 
restore from 'emp2.bkp';
 

Les premiers tests de Guiseppe Maxia affichent des gains de vitesse de 6 fois. La sauvegarde peut même être encore plus rapide si on ignore les index (mais la restauration sera alors beaucoup plus lente).
Jetez un oeil sur la documentation en ligne et les exemples de Guiseppe. Pendant que vous regarderez la doc MySQL, jetez un oeil sur le "MySQL Load Balancer", qui est indisponible maintenant, mais semble programmé pour la version beta.
Pour faire un test rapide de MySQL 6, utilisez donc la mysql sandbox.

Juillet 2008 – Nexen.net: PHP sur GlassFish

Image pour le titre du contenu
GlassFish est un serveur d'application, édité par Sun. Il est écrit entièrement en Java, ce qui semble en condamner l'accès à PHP. Pourtant, ce n'est pas le cas. Il existe plusieurs implémentations de PHP en Java, et notamment Quercus. Cette dernière s'intègre dans GlassFish pour faire tourner les scripts, et le résultat semble suffisamment bon pour faire tourner Wordpress directement.

Juillet 2008 – PHP News: Rsync avec un client Windows en 3 commandes

rsync

Une stratégie de backup complète d’un site web est efficace tant que la taille de ce site web reste raisonnable. Avec un site de plusieurs dizaines de gigaoctets, il devient en effet plus compliqué de rapatrier chez soi la backup du site.

Je ne parle ici que de backup des fichiers propres au site (images uploadées par exemple), pas de sa base de donnée qui doit faire l’objet d’une stratégie de sauvegarde plus poussée.

Jusqu’à présent, en faisant “avec les moyens du bord”, je procédais de la façon suivante pour posséder une sauvegarde perso d’un site web:

  • Une tâche cron tourne chaque X jours la nuit et met tout le site dans une archive tar.gz
  • Je télécharge cette archive sur mon PC personnel peu après

Mais voilà, maintenant que le site en question pèse dans sa totalité une vingtaine de giga, même avec une connexion symétrique à 100Mb/s, c’est laborieux. Il faut donc trouver un autre moyen. Ici, la solution s’appelle rsync et permet de posséder une copie du site identique à l’instant de la synchronisation.

Maintenant pour posséder une sauvegarde perso d’un site, je n’ai plus qu’à lancer manuellement ma commande rsync sur mon PC quand celui-ci est allumé afin de rapatrier les nouveaux fichiers crées ou supprimés sur le serveur, et sans devoir télécharger tout le reste qui n’a pas changé. Mon PC étant sous Windows, il serait dommage de se priver de rsync.

Voiçi en 3 commandes comment avoir un mirroir de votre site avec une connexion sécurisée et un PC où effectuer la sauvegarde sous Windows

Prérequis :

Sur votre serveur, en root :

1. #useradd -g www -s /bin/bash rsync

2. #passwd rsync

Sous Windows, dans le dossier \bin de cwRsync

3. rsync –verbose –progress –stats –compress –recursive –delete -e “ssh.exe -p 8000″ rsync@monserver.fr:/home/server/htdocs/mondossier “/cygdrive/f/Backup/rsync”

Note : il s’agit de double tiret et non de tiret simple

Explications :

Etape 1 :

On crée un utilisateur sur le serveur possédant un vrai shell (pas de /bin/false car rsync doit pouvoir exécuter des commandes shell). Cet utilisateur doit posséder le droit de lecture sur votre répertoire à backuper (par exemple htdocs/), ainsi que ses sous-répertoires. Ici je le place dans les users de mon groupe www qui possèdent le droit de parcourir mon répertoire htdocs et ses enfants.

Etape 2 :

Un password fort à mettre en place pour l’utilisateur. Cet utilisateur aura le pouvoir de se connecter en SSH sur votre serveur et de parcourir vos fichiers. Ici pas de mis en place d’une authentification par clés SSH, nous utiliserons une connexion manuelle avec un mot de passe à entrer manuellement, car ici c’est à vous de lancer le processus de synchronisation quand vous le souhaitez. Pour un tutorial complet sur comment mettre en place un rsync automatique avec utilisations de clés SSH, rendez-vous sur cet excellent tutotial publié sur Howtoforge

Etape 3 :

cwRsync est une version packagée pour windows de rsync et ssh grâce à cygwin. Il vous fournit une fois installé les binaires rsync.exe et ssh.exe dans son dossier \bin.

Voici les arguments utilisés (rsync –help pour toutes les options) :

–verbose

Détails de l’exécution du programme

–progress

Voir l’avancement du téléchargement pendant les transferts

–stats

Des stats sur les transferts (vitesse de transfert)

–compress

Compression des fichiers transférés

–recursive

Parcourir les sous répertoires du dossier à backuper

–delete

Supprimer aussi les fichiers sauvegardés si ils n’existent plus sur le serveur

-e “ssh.exe -p 8000″ ou -e “ssh -p 8000″ ou -e “ssh”

Commande du shell distant à utiliser (ici ssh.exe dans le même répertoire que rsync.exe), suivi des arguments optionnels à lui passer, ici connexion sur le port distant 8000 et pas le traditionnel 22 (le serveur cible n’acceptant pas les connexions SSH sur le port 22 mais sur le 8000)

rsync@monserver.fr:/home/server/htdocs/mondossier

L’utilisateur ssh est ici rsync, on se connecte au server cible server.fr (ou une IP) et on demande de commencer la sauvegarde en démarrant depuis le dossier /home/server/htdocs/mondossier. Extrait du manpage :

“Le transport par shell distant est utilisé à chaque fois que le chemin source ou destination contient un séparateur «:» après la spécification de l’hôte. Le contact direct avec un démon rsync est utilisé lorsque le chemin source ou destination contient un séparateur «::» après la spécification de l’hôte, OU lorsqu’une URL rsync:// est spécifiée”

“/cygdrive/f/Backup/rsync”

C’est la synthaxe à utiliser pour copier les fichiers sur le disque dur F: et dans le dossier Backup/rsync. On ne peut pas indiquer un chemin windows directement comme ‘F:/Backup …’, il faut passer par l’abstraction des disque cygwin (/cygdrive/LETTRE_LECTEUR/VOTRE/DOSSIER)

Une fois la commande lancée, une connexion SSH va se mettre en place, le mot de passe donnée en #2 vous sera demandé et le processus de synchro sera lancé.

Enjoy ;)

Juillet 2008 – z-f.fr: Roadmap mise à jour

Forum: Brèves
Auteur: philippe
Écrit le: Tue, 08 Jul 2008 13:34:56 +0200
Dernier message: Tue, 08 Jul 2008 23:23:38 +0200

Juillet 2008 – PHP Index: IBM : Intégration de Google Agenda dans une application PHP

Dans un article paru sur le site IBM, Vikram Vaswani propose un tutoriel permettant d'associer l'API Google calendar et l'extension SimpleXML de PHP et/ou la librairie GData de Zend.

Ce tutoriel commence par donner quelques explications sur le format de sortie de l'API Google Calendar et comment récupérer les événements en usant de SimpleXML ou des librairies Zend. Il aborde ensuite les fonctionnalités de gestion et de recherche des événements.

Pour en savoir plus :

Juillet 2008 – PHP Index: Inscriptions ouvertes pour la Zendcon 2008

Zend Technologies a annoncé aujourd'hui l'ouverture des inscriptions pour la quatrième conférence annuelle Zend/PHP.

Celle-ci se tiendra du 15 au 18 septembre, à Santa Clara, en Californie. Cette année sera axée sur les améliorations importantes que PHP peut apporter aux nouvelles applications web, à l'avantage de leurs utilisateurs.

Pour plus d'informations :

Juillet 2008 – Nexen.net: Architecture de Linkedin

Image pour le titre du contenu
Les slides de présentations de l'architecture Linkedin sont maintenant en ligne, et c'est une excellente source d'inspiration. Par exemple, la totalité des relations de Linkedin sont stockées en RAM, dans une machine appelée The Cloud. Rien en base de données SQL. Il faut 8 heures pour recharger les millions de liens à partir de la base.
Linkedin utilise aussi un système de communication interne push : les informations récentes sont mailées (en interne) à une mailbox, où elles sont immédiatement disponibles. Puis, elles sont mises à jour dans le système, de manière asynchrone.

Juillet 2008 – Nexen.net: Conception de formulaire Web : résultat de sondage

Image pour le titre du contenu
Smashingmagazine a lancé un sondage sur les points de conceptions des formulaires Web, et ils en ont tiré un dossier très complet, en deux volets. Tous les aspects de la présentation d'un formulaire sont disséqués : positions des étiquettes, couleur, typographie, gestion des champs obligatoires et des erreurs, etc. Vous en apprendrez beaucoup sur la popularité de vos propres choix.
Le plus important est d'avoir une liste assez complète sur les solutions utilisées et leur rendement : les tooltips et leur positionnement, les méthodes d'affichage d'erreur. Il y a des questions qu'on ne se pose pas, mais parfois à tort.
Evidemment, au final, cela fait beaucoup de travail supplémentaire pour chaque page.

Juillet 2008 – Nexen.net: PHPLinq : SQL en tableaux

Image pour le titre du contenu
Linq est une bibliothèque .NET qui permet d'exprimer des traitements d'informations stockées en tableaux comme des requêtes SQL. Par exemple :
 
 
<?php
 
$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
 
 
 
$result = from('$number')->in($numbers)
 
            ->where('$number => $number > 5')
 
            ->select('$number');
 
?>
 

L'interface est fluide, et on peut aussi travailler sur des fichiers XML, grâce à SimpleXML.
L'approche est d'autant plus séduisante qu'on peut imaginer une traduction immédiate entre un stockage tableau et un stockage en base (ou en XML, ou en une autre structure). Le langage SQL est alors agnostique, et s'adapte à différentes solutions de stockage, temporaire ou permanant, locale ou distante. Or, c'est souvent le cas : on voit évoluer une variable qui était un scalaire au départ (une seule valeur), puis devient un tableau, puis une table SQL ou un fichier XML, en passant par une inclusion PHP.

Juillet 2008 – Glagla.org: PHPTeam, une vieille application de retour sous Symfony

Je découvre la nouvelle version de PHPTeam. Pour l’instant, le fork de Symfonians est encore un peu brutal, comme, par exemple, le bloc “a propos” mais il y a déjà quelques articles, un super logo et deux offres d’emploi !

Une bonne initiative si elle est suivie d’inscriptions et de contenus.

Bon courage aux développeurs de ce site.

Article original publié sur Glagla Dot Org. Tous droits réservés.

PHPTeam, une vieille application de retour sous Symfony

Juillet 2008 – PHP Index: Devshed : Envoi d'email MIME avec PHP

Sur le site Developper Shed, Alejandro Gervasio propose aujourd'hui un tutoriel pour réaliser une classe d'envoi de emails MIME avec PHP5.

Ce tutoriel est composé de quatres parties :

Juillet 2008 – Glagla.org: Lier vos médias depuis vos vues Symfony

(encore un post un peu pense bête pour moi)

Les helpers sont pratiques pour afficher des images ou créer des liens htmls. Parfois, on désire lier des documents que l’on a uploadé dans un répertoire spécifique ou autre bizarrerie. La classe sfWebRequest de Symfony fourni une méthode bien pratique pour faire ça. Par exemple pour accéder au fichier raoul.pdf dans le répertoire web/uploads/pdf :

echo '<a href="'.$sf_request->getRelativeUrlRoot().'/'.
  sfConfig::get('sf_upload_dir_name').'/pdf/raoul.pdf'
  .'raoul.pdf</a>';

Cet objet est automatiquement accessible depuis vos vues via la variable $sf_request.

Article original publié sur Glagla Dot Org. Tous droits réservés.

Lier vos médias depuis vos vues Symfony

Juillet 2008 – Nexen.net: Vues matérialisées : flexyview

Image pour le titre du contenu
Justin Swanhart publie Flexviews, des vues matérialisées pour MySQL, basée sur des procédures stockées. Ce sont des vues qui sont réellement enregistrées sur le disque, et non pas générées à chaque sollicitations. L'avantage est de bénéficier des capacités d'indexation des vraies tables, et l'inconvénient est de devoir faire la mise à jour de la table.
C'est là que Flexviews intervient : avec quelques procédures stockées, Justin a mis en place des outils pour mettre à jour la table. Les méthodes de mise à jour sont COMPLETE, qui remplace la table existante par une nouvelle, et INCREMENTAL, qui est capable de faire une petite mise à jour, sans tout recalculer. Les coûts de mises à jour peuvent être assez élevé, mais les gains de performances pour les lectures sont nettement plus importants.

Juillet 2008 – Nexen.net: Migration PHP 4 vers PHP 5

Image pour le titre du contenu
OK, la date du 8 août 2008 approche à grand pas, puisqu'il ne reste plus qu'un mois avant que PHP 4 soit définitivement et totalement abandonné. Il ne vous reste donc plus beaucoup de temps avant que cette migration soit obligatoire.
Plus que la peur de la fin de PHP 4, c'est les avantages que vous gagnerez à passer à PHP 5 qui doivent vous stimuler : POO, SimpleXML, Web 2.0, Json, espaces de noms, performances, sécurité et stabilité sont au rendez-vous. Les missions de migration que je mène pour nexen Services sont souvent initiées par cette peur, mais se transforment généralement en chasse au trésor : "On peut faire ça en une seule fonction maintenant?".
Bref, passez à PHP 5!

Juillet 2008 – Glagla.org: Blogmarks pour le 10/07/2008

Web Form Design Patterns: Sign-Up Forms, Part 2 | How-To | Smashing Magazine

Last week we have presented first findings of our web forms survey. The main objective of the survey was to provide designers and developers with some intuition of how effective web forms are designed; we also presented some guidelines of how an effective and user-friendly web form can be achieved.

(categories: )

ratproxy - Google Code

A semi-automated, largely passive web application security audit tool, optimized for an accurate and sensitive detection, and automatic annotation, of potential problems and security-relevant design patterns based on the observation of existing, user-initiated traffic in complex web 2.0 environments.

(categories: )

Recherchez vos documents Google Documents sur votre Mac avec Spotlight

Vous possédez un Mac et vous utilisez Google Document. Voici une application qui vous permettra de rechercher des documents et signets présents sur votre compte Google en utilisant Spotlight. Cette utilitaire se nomme Precipitate, il a été développé par Stuart Morgan de chez Google.

(categories: )

Go!Explore

Go!Explore est hyper facile à utiliser, et que vous soyez piéton ou automobiliste, il fait de votre PSP un système GPS idéal.

(categories: )

blogmarks.net

Article original publié sur Glagla Dot Org. Tous droits réservés.

Blogmarks pour le 10/07/2008

Juillet 2008 – PHP Index: Drupal 6.3 et 5.8

Les version 6.3 et 5.8 de DRUPAL sont disponibles. Ce sont des versions de maintenance pour corriger des failles de sécurités ainsi que des problèmes signalés par l'outil de suivi des bugs.

La version 6.3 inclue également :

  • Quelques modifications sur l'installeur pour prévenir les problèmes de propriétés des fichiers au niveau des partages
  • Passage à la version 1.2.6 de jQuery
  • Amélioration de la compatibilité PostgreSQL
  • Amélioration des performances des API search, menu et form.

Il est a noter que Views pour Drupal 6 nécessite la version 6.3 pour fonctionner correctement.

La mise à jour des versions existantes de DRUPAL 5 et 6 est vivement recommandée. Pour plus d'information, vous pouvez consulter l'annonce sur le site du projet DRUPAL

Juillet 2008 – Nexen.net: Actualité de développement PECL, edition 207

Image pour le titre du contenu
7 paquets ont été mis à jour cette semaine :

  • en xdiff (0 visite) : extrait les différences et les patches entre fichiers

  • en imagick (0 visite) : interface avec la bibliothèque graphique ImageMagick

  • en lzf (0 visite) : compression LZF

  • en xattr (0 visite) : attributs étendus

  • en timezonedb (0 visite) : base de données de fuseaux horaires pour PHP

  • en uploadprogress (0 visite) : suivi des téléchargements de fichiers type Ajax

  • en tcpwrap (0 visite) : interfarce TCP wrapper


PECL est la bibliothèque d'extensions C de PHP.

 



 

Juillet 2008 – Nexen.net: mylvmbackup : sauvegardes MySQL par fichiers

Image pour le titre du contenu
"mylvmbackup est un outil pour réaliser rapidement des copies de sauvegardes de données dans un serveur MySQL. Pour ce faire, mylvmbackup obtient un verrou sur toute les tables, écrit les caches sur le disque, fait une copie LVM du volume contenant les données MySQL, puis libère les tables. Le processus prend alors quelques instants. Lorsque c'est fini, le serveur peu reprendre son fonctionnement normal."

Juillet 2008 – Nexen.net: Symfony Oracle en PHP mineur

Image pour le titre du contenu
Pour ceux qui se lancent sur Symfony, et utilisent une base Oracle, l'OTN publie un article d'introduction pour faire fonctionner ces deux technologies ensemble. Il y a un exemple complet, avec une entreprise et ses employés.

Juillet 2008 – PHP Index: Mastering phpMyAdmin

L'ouvrage "Mastering phpMyAdmin for Effective MySQL Management" est recommandé sur le site de Zend.

Ce livre a été écrit par Marc Delisle [ISBN 1904811035]. D'après Cal Evans, ce livre s'adresse aussi bien aux utilisateurs finaux (développeurs et administrateurs de bases de données) qu'aux administrateurs systèmes. Il considère que ce livre est particulièrement intéressant pour :

  • Les personnes ne connaissant pas encore phpMyAdmin et voulant en tirer le maximum,
  • Les personnes l'utilisant déjà et voulant savoir ce qu'il peut faire de plus.

Pour plus d'informations :

Juillet 2008 – PHP Index: Joomla! 1.5.4

Joomla! 1.5.4 [Naiki] est disponible depuis quelques jours. Il s'agit d'une version de maintenance incluant quelques correctifs de vulnérabilités modérées, des corrections de bugs et quelques améliorations.

Juillet 2008 – PHP Index: wampMSS 1.1.1

La version 1.1.1 de wamp MSS (Mobil Storage Server) est enfin disponible !

La version 1.1.1 de wampMSS (Mobile Storage Server) qui est une version modifiée de wamp permet de faire fonctionner un serveur apache, php, mysql sur un périphérique USB

Cette version comprend :
- Apache 2.2.9
- PHP 5.2.6
- MySQL 5.0.51b
- PhPMyAdmin 2.11.7
- SQLiteManager 1.2.0 RC2

rendez-vous sur http://www.uni-d.net

Proposé par UNi

Juillet 2008 – Glagla.org: Les cousines se bidonnent !

Ce qui est sympa à trois ans, c’est qu’un rien t’amuse !

Article original publié sur Glagla Dot Org. Tous droits réservés.

Les cousines se bidonnent !

Juillet 2008 – Lapin Blanc: 6 plugins Symfony indispensables

Écrit en PHP, orienté objet, implémentant le design pattern Moèle-Vue-Controlleur, doté de nombreuses fonctionnalités et soutenu par Yahoo! : Symfony, le framework web développé par Sensio Labs, à tout pour plaire. L’une des forces de ce framework est la disponibilité de nombreux plugins qui permettent (...)

Juillet 2008 – Nexen.net: Actualité de développement PEAR, edition 210

Image pour le titre du contenu
4 paquets ont été mis à jour cette semaine :

PEAR est la bibliothèque de composants PHP.

 



 

Juillet 2008 – Nexen.net: Alertes sécurité des applications PHP et MySQL, édition 210

Image pour le titre du contenu


PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.6 et 4.4.8; MySQL 5.0.51 (communauté) , 5.1.24-rc et 6.0.4.
Les mises à jour sont recommandées vers ces versions.



10 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Drupal, Gallery, Joomla, MyBB, PHP Nuke, V-webmail, Zen Cart, phpMyAdmin, vBulletin et wordpress



Juillet 2008 – Nexen.net: mysqlsla 2.0 publié

Image pour le titre du contenu
mysqlsla est un analyseur de log MySQL qui permet d'extraire les informations importantes des logs MySQL. Ces derniers stockent les requêtes brutes, et il est parfois difficile de repérer les requêtes qui sont identiques, à quelques variables ou valeurs près. mysqlsla est alors là pour ça.
Ce problème de requêtes similaire est une raison de plus pour passer aux commandes préparées de MySQL : avec les commandes préparées, la requête est dissociée des valeurs d'exécution, et le stockage dans le log MySQL devient constant : la requête d'un coté, les valeurs de l'autre. Et on peut aussi arriver au même résultat avec les variables MySQL.

Juillet 2008 – Nexen.net: Les méta-données FALCON en MySQL 6.0.5

Image pour le titre du contenu
"MySQL® 6.0.5-alpha, la dernière version de la série 6.x de MySQL est disponible au téléchargement sur les sites de SUN|MySQL.
Les méta-données (les données à propos des données), sont très importantes, notamment pour les développeurs. Dans cet article, nous verrons ce qui est nouveau dans les méta-données FALCON, en comparaison avec la version 6.0.4."

Juillet 2008 – Nexen.net: Zend Technologies lève 7 millions

Image pour le titre du contenu
Zend Technologies, éditeur de solutions PHP, annonce avoir obtenu un financement de 7 millions de dollars US auprès de Triple Point. L'objectif de cette levée de fond est de faire face aux opportunités du marché.
Les opportunités ne sont pas précisées, mais le marché est favorables aux produits PHP, et Zend annonce avoir des contacts croissants avec des grandes entreprises. Triple Points est connu pour investir dans des profils à forte croissance.
Cette levée de fond fait écho à la restructuration de cette année, qui tendait à assainir les comptes, mais ne met pas fin aux rumeurs de rachat.

Juillet 2008 – Nexen.net: MySQL 5.1.26-rc publiée : la dernière avant la GA?

Image pour le titre du contenu
MySQL/SUN annonce la publication de MySQL 5.1.26-rc, la dernière version de la série des 5.1, et possiblement la dernière avant la publication en GA.
La liste des mises en production est courte, et de bonne augure pour la suite : le moteur FEDERATED est maintenant désactivé par défaut. 7 bogues ont été corrigés, reliés à la réplication, l'analyse de requête, InnoDB et l'Unicode.

Juillet 2008 – Nexen.net: Myosotis : proxy MySQL et PostGreSQL en Java

Image pour le titre du contenu
Les proxy SQL sont partout dans les actualités, notamment pour les bases de données Open Source. MySQL Proxy et PG-Pool sont juste deux exemples récentes. Mais voici un autre proxy que vous devez connaître : Myosotis.
Myosotis est un proyx JDBC 'client natif' pour MySQL et PostgreSQL. Nous l'avons initialement développé pour relier nos Cluster sans utiliser de pilote JDBC. Myosotis analyse la requête dans le protocole du client, et émet un appel JDBC similaire, puis il retourne le résultat au client. Comme vous pouvez le deviner, c'est écrit en Java. "

Juillet 2008 – Nexen.net: 9 solutions pour avoir des captures d'écran sur votre site

Image pour le titre du contenu
Proposer une capture d'écran du site qui va être visité, lors du survol d'un lien par la souris est une fonctionnalité à la mode sur les sites : il permet de donner un aperçu du site de destination, sans quitter le site actuel.
Comme il n'est pas raisonnable de faire les captures à la main, sitepoint vous propose 9 sites qui fournissent ce service.

Juillet 2008 – Nexen.net: Integrez votre application PHP avec Google Calendar

Image pour le titre du contenu
Google Calendar permet aux développeurs d'application Web d'accéder aux contenus utilisateurs et aux événements via une interface REST. PHP, avec son extension SimpleXML et la bibliothèque de Zend GData Library sont idéales pour traiter des flux XML, générés par ces API, et permettre la construction d'applications PHP personnalisées. Cet article vous présente l'API de Google Calendar Data, et comment l'utiliser pour naviguer dans les calendriers utilisateurs; puis comment ajouter et modifier des événements, et enfin, effectuer des recherches par mot clé.

Juillet 2008 – Hello Design: L'approche d'un projet en PDO

Dans le magazine PHP solution (4/2008) qui vient de sortir, un article sur le PDO et plus précisemment : L'approche d'un projet en PDO

Dans ce numéro les autres concernent : 

  • Les services web SOAP avec PHP 5...
  • L'approche d'un projet en PDO...
  • Faire communiquer Flex et AMFPHP...
  • Flux RSS...
  • Un site communautaire avec Copix...
  • Les nouveautés de MySQL 5.1...
  • Découvrez les design patterns...
  • Les nouveautés de PHP 5.3...
  • Framework ZEND : MVC...
  • Les problèmes de sécurité avec PHP...
  • Générer des fichiers pour tableurs...
  • 4D v11 SQL et PHP : développement durable...

Vous pouvez vous rendre directement sur le lien suivant (cliquer ici) pour voir les résumés des articles.

Juillet 2008 – Digital Fashion: About the self keyword in static methods

While setting up a test server for some software I wrote at the office, I eventually noticed the following notice:

Notice: Use of undefined constant self - assumed 'self'

That surprised me, because 1) I though self were some kind of "superglobal" constant or a special token of the parser, always automatically available in a static method and 2) the code works. So what's up in there ? Let's make a simple test:

<?php

class foo {
	static public function bar() {
		var_dump(is_callable(array('self', 'foobar')));
		var_dump(is_callable(array(self, 'foobar')));

		var_dump(class_exists('self'));
		var_dump(class_exists(self));

		self::foobar();
	}

	static public function foobar() {
	}
}

foo::bar();

Executing the above code will yeld the following result:

bool(true)

Notice: Use of undefined constant self - assumed 'self' in /home/geoffreyb/test.php on line 6
bool(true)
bool(false)

Notice: Use of undefined constant self - assumed 'self' in /home/geoffreyb/test.php on line 9
bool(false)

What do we learn here ? Not much actually. It seems like self as a constant is only available when used with the scope resolution operator, aka double-colon or paamayim nekudotayim. When you want to use it in, for example, a callback definition, use a string representation of self:

<?php

is_callable(array('self', 'bar'));
call_user_func(array('self', 'bar'));

Which, while making absolutely no sense at all, works. Another way to get around this is to use the get_class() function that, without any argument, will return the name of the class you're currently in (foo in my example).

After a bit more investiging, I found out that there is nothing special about the self token, which is actually a string token. You can check this very easily with the following code:

<?php

class foo {
	static public function bar() {
		self::foobar();
	}
}

var_dump(token_get_all(file_get_contents(__FILE__)));

Somewhere inside the output, you'll find the following piece of text:

  array(2) {
    [0]=>
    int(307)
    [1]=>
    string(4) "self"
  }

And the token id 307 is resolved by token_name to string.

Juillet 2008 – Digital Fashion: About the self keyword in static methods

While setting up a test server for some software I wrote at the office, I eventually noticed the following notice:

Notice: Use of undefined constant self - assumed 'self'

That surprised me, because 1) I though self were some kind of "superglobal" constant or a special token of the parser, always automatically available in a static method and 2) the code works. So what's up in there ? Let's make a simple test:

<?php

class foo {
	static public function bar() {
		var_dump(is_callable(array('self', 'foobar')));
		var_dump(is_callable(array(self, 'foobar')));

		var_dump(class_exists('self'));
		var_dump(class_exists(self));

		self::foobar();
	}

	static public function foobar() {
	}
}

foo::bar();

Executing the above code will yeld the following result:

bool(true)

Notice: Use of undefined constant self - assumed 'self' in /home/geoffreyb/test.php on line 6
bool(true)
bool(false)

Notice: Use of undefined constant self - assumed 'self' in /home/geoffreyb/test.php on line 9
bool(false)

What do we learn here ? Not much actually. It seems like self as a constant is only available when used with the scope resolution operator, aka double-colon or paamayim nekudotayim. When you want to use it in, for example, a callback definition, use a string representation of self:

<?php

is_callable(array('self', 'bar'));
call_user_func(array('self', 'bar'));

Which, while making absolutely no sense at all, works. Another way to get around this is to use the get_class() function that, without any argument, will return the name of the class you're currently in (foo in my example).

After a bit more investiging, I found out that there is nothing special about the self token, which is actually a string token. You can check this very easily with the following code:

<?php

class foo {
	static public function bar() {
		self::foobar();
	}
}

var_dump(token_get_all(file_get_contents(__FILE__)));

Somewhere inside the output, you'll find the following piece of text:

  array(2) {
    [0]=>
    int(307)
    [1]=>
    string(4) "self"
  }

And the token id 307 is resolved by token_name to string.

Juillet 2008 – Nexen.net: Auditer les données en MySQL

Image pour le titre du contenu
"Un client m'a demandé récemment de l'aide pour enregistrer l'historique de modification de certaines tables. Comme pour de nombreux problèmes, la solution n'est pas unique, et dans ce cas, il y a même plusieurs solutions. J'ai été capable de fournir une solution totalement en base de données, avec un impact minimal sur le schéma.
Voici mon approche : votre avis et solutions alternatives sont toujours les bienvenues."
L'audit de données en base consiste à avoir un journal de toutes les modifications et lectures des données. Les audits sont de plus en plus courants dans les bases, où le système de droits n'est pas suffisant pour garantir la pérennité des informations : il faut parfois aussi fournir à un organisme certificateur des listes d'utilisations et d'utilisateurs.

Juillet 2008 – Nexen.net: Ne donnez pas trop de processeurs à InnoDB

Image pour le titre du contenu
Matt Yonkovit et Yves Trudeau ont mesuré l'impact du nombre de processeurs sur les performances InnoDB. Il est connu que InnoDB n'aime pas les machines à 16 coeurs, et via la commande taskset, Matt et Yves ont testé la progression des performances de 1 à 16.
Au final, il semble bien que 6 coeurs soient capables de fournir le même travail que 9. 8 coeurs est donc le maximum d'éfficacité actuellement pour un serveur MySQL sur InnoDB.

Juillet 2008 – Nexen.net: Sauvegarde MySQL sur SSH

Image pour le titre du contenu
Garry Van Burren publie une (longue) ligne de commande pour sauvegarder des bases MySQL sur un serveur distant, via SSH. mysqldump et mysql sont appelé à la rescousse, et ssh se charge du transport. Rien de difficile (hormis les 3 jeux de noms d'utilisateurs), mais une astuce pratique pour une sauvegarde.

Juillet 2008 – Nexen.net: Auditer les données en MySQL

Image pour le titre du contenu
"Un client m'a demandé récemment de l'aide pour enregistrer l'historique de modification de certaines tables. Comme pour de nombreux problèmes, la solution n'est pas unique, et dans ce cas, il y a même plusieurs solutions. J'ai été capable de fournir une solution totalement en base de données, avec un impact minimal sur le schéma.
Voici mon approche : votre avis et solutions alternatives sont toujours les bienvenues."
L'audit de données en base consiste à avoir un journal de toutes les modifications et lectures des données. Les audits sont de plus en plus courants dans les bases, où le système de droits n'est pas suffisant pour garantir la pérennité des informations : il faut parfois aussi fournir à un organisme certificateur des listes d'utilisations et d'utilisateurs.

Juillet 2008 – Nexen.net: Ne donnez pas trop de processeurs à InnoDB

Image pour le titre du contenu
Matt Yonkovit et Yves Trudeau ont mesuré l'impact du nombre de processeurs sur les performances InnoDB. Il est connu que InnoDB n'aime pas les machines à 16 coeurs, et via la commande taskset, Matt et Yves ont testé la progression des performances de 1 à 16.
Au final, il semble bien que 6 coeurs soient capables de fournir le même travail que 9. 8 coeurs est donc le maximum d'éfficacité actuellement pour un serveur MySQL sur InnoDB.

Juillet 2008 – Nexen.net: Sauvegarde MySQL sur SSH

Image pour le titre du contenu
Garry Van Burren publie une (longue) ligne de commande pour sauvegarder des bases MySQL sur un serveur distant, via SSH. mysqldump et mysql sont appelé à la rescousse, et ssh se charge du transport. Rien de difficile (hormis les 3 jeux de noms d'utilisateurs), mais une astuce pratique pour une sauvegarde.

Juillet 2008 – Lapin Blanc: Faire fonctionner PHP mail() sous Debian et dérivés

Peut-être avez-vous remarqué que l’envoi de mail en PHP ne fonctionne pas après une installation standard de Debian ou de Ubuntu. Pourtant, Debian fournie le serveur de mail exim qui fait partie de la base du système. Le problème est que la configuration initiale d’exim l’empêche d’envoyer des mails (...)

Juillet 2008 – Kamelot Blog: Vendredi c'est l'apéro php de Bruxelles et le 20 aout c'est le 2eme meeting (pas apéro) à Gand

Vendredi aura lieu le prochain apérophp à "la lunette" place de la monnaie à Bruxelles. 19h le 18 du 7 espérons être au moins 6 ....

Signalez votre participation pour cette rencontre informelle




Au mois d'Août aura lieu le 2ème phpBelgium Meeting.

Plus conventionnel, il y aura des présentations/discussions au sujet de diverses matières connexes par PHP, telles que la certification de Zend PHP5, le Zend framework et davantage.

Envoyez vos idées l'adresse pour les intéressés c'est http://upcoming.yahoo.com/event/805818. et suivez le twit de phpBelgium

Juillet 2008 – Nexen.net: PHP TV - Emission Numero 1

Image pour le titre du contenu
PHPTV est un nouveau magazine TV orienté PHP.
C'est un projet communautaire dont AFUP (Association Française des Utilisateurs de PHP) se trouve être partenaire.
Par ailleurs, ce premier numéro présente des news, des reportages, interviews et débats, suivi d'une rubrique "coups de cœur / coups de gueule".

Juillet 2008 – Rom's blog: PHP 5.3, plus que quelques mois!

D’après le blog de mon collègue et ami Julien PAULI, PHP 5.3 devrait bientôt être disponible.
Reprise des infos de son post :

PHP 5.3 :

* Features freeze le 24 Juillet
* Bétas à partir du mois prochain (courant Aout 2008)
* Sortie prévue fin octobre 2008

Points actuellement sous l’attention :

* namespaces
* late static binding
* re2c
* windows support
* minimizing BC support/documentation
* intl extension
* phar extension
* E_DEPRECATED
* __callStatic
* Garbage Collection
* MySQLnd

Sa source : http://marc.info/?l=php-internals&m=121577053504295&w=2

Juillet 2008 – PHP Index: Wordpress 2.6

La version 2.6 de Worpress est disponible, presque un mois avant la date prévue.

Cette version comporte quelques nouvelles caractéristiques pour augmenter la performance de Wordpress en tant que CMS, notamment un système de suivi des révisions. Une vidéo est disponible sur wordpress.org pour faire le tour des améliorations apportés par Wordpress 2.6.

D'après l'auteur du communiqué sur wordpress.org, la compatibilité des plugins et thèmes entre les versions 2.5 et 2.6 ne devrait pas poser de problèmes majeurs. Il est à noter que la branche 2.5 ne sera désormais plus maintenue, que tous les utilisateurs sont encouragés à passer à la version 2.6.

Juillet 2008 – Glagla.org: Une bande de petits braillards

Pas possible de prendre son petit dej tranquille !!!!

Article original publié sur Glagla Dot Org. Tous droits réservés.

Une bande de petits braillards

Juillet 2008 – Glagla.org: WordPress 2.6 intègre Google Gears

Dans le but d’accélérer le back office, WordPress 2.6 intègre maintenant Google Gears !

Pour l’instant le bouton turbo ne sert qu’a mettre en local certaines CSS, javascripts et autres données générales de votre blog, mais on peut espérer une utilisation plus intensive dans le futur comme la contribution hors-ligne.

activation de Google Gears

Google Gears activé

Sur mon hébergement, le back office est sensiblement plus rapide.

Chapeau WordPress !

Article original publié sur Glagla Dot Org. Tous droits réservés.

WordPress 2.6 intègre Google Gears

Juillet 2008 – Dur Comme Faire: PHPTV

La première télévision sur le web entièrement consacrée à PHP vient d'être officiellement lancée. PHPTV est une initiative de l'AFUP produite par la société OpenStates. Cette web TV publiera une émission chaque mois. Au programme de la première émission, on trouve :...

Juillet 2008 – Nexen.net: MySQL patché par Percona

Image pour le titre du contenu
Percona est une société spécialisé dans les missions d'expertise MySQL. Ils publient régulièrement sur le blogue de MySQL Performance Blog ainsi que des patchs. Comme MySQL met beaucoup de temps à publier ces patchs dans le code du serveur, Percona a décidé de publier ses propres versions de MySQL, avec ses patchs préférés.

  • patch microslow patch (permet d'identifier les requêtes lentes à la micro-seconde près)

  • Plan d'éxecution (affiche des informations sur l'exécution de la requête dans le log de requêtes lentes)

  • Statistiques InnoDB statistic (plus de détails sur l'utilisation InnoDB)

  • Patch Google avec des statistiques utilisateurs et l'utilisation des index


Les versions 5.1.26 et 5.0.62 sont disponibles (la version communauté actuelle est la 5.0.51)

Juillet 2008 – Nexen.net: Vidéo PHP et MySQL, édition 52

Image pour le titre du contenu
Voici les 5 dernières vidéos PHP et MySQL.


Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.



N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.

Juillet 2008 – Apprendre-PHP.com: L'AFUP lance PHP TV et PHP 5.3 sur les rails !

Ce soir, en ouvrant mes flux RSS préférés, j'ai eu la grande surprise de découvrir le nouveau site francophone PHPTV.fr né du travail de l'AFUP et de la société OpenStates. Il s'agit un site qui publiera chaque mois des podcasts vidéos d'informations et de reportages dédiés à l'univers...

Juillet 2008 – Glagla.org: Sauvegarde de ce site avec Automator

Automator est un logiciel fourni par apple permettant au premier utilisateur venu de créer visuellement des applications enchainant des actions simples. Automator est à mon avis assez méconnu et mériterait plus de publicités.

Mon site hébergé par Gandi avait besoin d’un petit système de sauvegarde. En bon informaticien j’ai cherché le moyen le plus rapide et simple pour le réaliser.

Il se trouve que mon ordinateur personnel est largement sauvegardé via un disque dur externe + Time Machine ainsi que par Mozy. Rapatrier les sauvegardes sur cet ordinateur n’est donc pas idiot. Certes, il n’est pas tout le temps allumé, par exemple quand je part en vacances, mais dans ce cas là je ne mets pas à jour ce blog non plus … ce système me parait donc pas mal.

J’ai donc réaliser un script shell qui dump les données de mes bases SQL, qui copie les données de mes sites et qui compresse tout ça. J’obtiens une belle archive que je place dans un répertoire publié sur le web. (avec une protection htaccess bien suffisante).

Exemple de code :
/usr/bin/mysqldump -u reader blog > /tmp/dump.sql
/bin/tar zcf /tmp/backup_sql.tgz /tmp/dump.sql
/bin/tar zcf /tmp/backup_olivier.tgz /srv/d_glagla/olivier
mv …
zip …

A partir de là j’assemble un script automator sauvegardé comme une application qui :

  • déplace dans un répertoire temporaire mes sauvegardes de moins de 15 jours,
  • purge mon répertoire de sauvegarde,
  • restaure tout depuis le répertoire temporaire,
  • télécharge le fichier de backup,
  • le renomme en le préfixant de la date du jour,
  • envoie une notification Growl signalant que la sauvegarde est finie.

Et voila. Le tout sans taper une ligne de code.

Vous pouvez télécharger cet exemple enregistré sous forme de workflow : exemple de processus.

Afin de lancer ce script tous les jours, j’ajoute simplement une alerte iCal ouvrant le fichier correspondant à mon appli automator.

Article original publié sur Glagla Dot Org. Tous droits réservés.

Sauvegarde de ce site avec Automator

Juillet 2008 – PHP Index: Lancement de PHPTV.

Le mois dernier a été lancé la première émission de la "chaine" PHPTV.

En partenariat avec l'AFUP, PHPTV est un projet communautaire ayant pour but de proposer un magazine TV orienté sur la technologie PHP.

Au programme de l'émission de juin vous retrouverez :

  • Des news sur google summer of code, PHP5.3, ...
  • L'interview de la société e-TF1.
  • Un débat sur PHAR.
  • Une rubrique "coups de cœur/gueule".

Comme d'habitude, pour plus d'informations rendez-vous directement à la source (qui dispose d'un flux RSS et/ou d'une newsletter pour vous tenir au courant de nouvelles émissions).

Souhaitons bonne chance à cette initiative !

Juillet 2008 – PHPortail: Plume CMS 1.2.3 (17/07/08)

La version 1.2.3 de Plume CMS est disponible. Elle contient entre autres nouveautés :

* un moteur de recherches qui supporte les langues asiatiques ;
* un filtre antipourriel très performant...

Juillet 2008 – PHPortail: Inscriptions ouvertes pour la Zendcon 2008 (17/07/08)

Zend Technologies a annoncé aujourd'hui l'ouverture des inscriptions pour la quatrième conférence annuelle Zend/PHP.

Celle-ci se tiendra du 15 au 18 septembre, à Santa Clara, en Californie....

Juillet 2008 – PHPortail: Subversion 1.5 (17/07/08)

La nouvelle version de subversion, ou encore appelle SVN, vient de sortir et permet toujours d'effectuer le contrôle de système. Cette nouvelle version se trouve indispensable pour avec l'ensemble...

Juillet 2008 – PHPortail: Copix : 3.0.3 (17/07/08)

Copix 3.0.3 est officiellement disponible sur la page de téléchargements du projet. Pas mal de nouveautés majeures. Parmi celles-ci on peut citer l’apparition de valideurs qui permettent de...

Juillet 2008 – PHPortail: MySQL 5.1.26 (17/07/08)

MySQL/SUN annonce la publication de MySQL 5.1.26-rc,
la dernière version de la série des 5.1, et possiblement la
dernière avant la publication en GA. MySQL 5.1.25 inclut
essentiellement des...

Juillet 2008 – PHPortail: Sécurité : 8 plugiciels Firefox pour vous aider (17/07/08)

Il existe plusieurs modules de sécurités pour Firefox, voici une liste pour éviter les malwares, générer des mots de passe sécuritaires, surveiller les témoins, nettoyer l'historique, naviguer...

Juillet 2008 – PHPortail: PHP sécurité de PHP freaks (17/07/08)

Daniel Egeberg publie un dossier plutôt complet sur la sécurité PHP, sous forme d'un PDF de 20 pages. La sécurité PHP passe par le masquage d'erreur, les injections SQL et HTML, les...

Juillet 2008 – PHPortail: Drupal 6.3 (17/07/08)

La version 6.3 DRUPAL est disponible. C'est une version de maintenance pour corriger des failles de sécurités ainsi que des problèmes signalés par l'outil de suivi des bogues.

Elle inclut...

Juillet 2008 – PHPortail: Joomla! 1.5.4 (17/07/08)

Joomla! 1.5.4 [Naiki] est disponible depuis quelques jours. Il s'agit d'une version de maintenance incluant quelques correctifs de vulnérabilités modérées, des corrections de bogues et quelques...

Juillet 2008 – PHPortail: Couverture de code avec PHPT (18/07/08)

« Mes premières expériences avec les tests unitaires et PHP ont été avec PHPUnit. C'est un excellent outil, et je remercie vivement Sebastian pour avoir contribué à ce projet. Mais j'ai aussi...

Juillet 2008 – PHPortail: Rapport sur le CodeFest 2.1 de PHP Québec (18/07/08)

J'en avais parlé, mais PHP Québec avait fait un CodeFest au mois de mai. Montréal Tech Watch en fait un bon rapport.

Mais deux points s'en détachent...

Premièrement, Evan Prodromou...

Juillet 2008 – PHPortail: Livre blanc sur quatre cadres d'applications PHP (18/07/08)

« Fruit d'une étude de longue haleine, ce livre blanc aborde les différents aspects du choix d’un framework : problématiques fonctionnelles, techniques et stratégiques, avec notamment une...

Juillet 2008 – PHPortail: PHP-GTK 2.0.1 (18/07/08)

La version de PHP-GTK 2.0.1 est sortie. De nombreuses évolutions majeures y sont apparues :

- Soutien GtkBuilder
- Prise en charge du nouveau GTK+ 2,12 API de bulles
- Prévenir de segmentation...

Juillet 2008 – PHPortail: Les classes abstraites et finales (18/07/08)

Un article intéressant, sur les classes abstraites et finales, sur notre partenaire Apprendre PHP :

« PHP intègre un autre concept de la programmation orientée objet : les classes abstraites....

Juillet 2008 – PHPortail: phar arrive (18/07/08)

Phar est un format de fichier d'archive pour PHP : (PHp ARchives). Il permet de stocker des applications PHP complètes dans un seul fichier, et de les exécuter de manière indépendante. Toutes les...

Juillet 2008 – PHPortail: Classe singleton d'accès aux SGBD intégrant PDO (18/07/08)

« Et voilà! » Comme le dirait une des membres de l'équipe qualité chez mon employeur. Encore un autre tutoriel d'Apprendre PHP.

« J'ai commencé à créer ma propre classe d'accès aux...

Juillet 2008 – PHPortail: Singleton : instance unique d'une classe (18/07/08)

J'ai un peu trop négligé ce partenaire, alors voici un tutoriel sur les Singletons d'Apprendre PHP.

« Dans la plupart des développements professionnels ou de grande envergure, il est...

Juillet 2008 – PHPortail: Sécurité : Identification X.509 PKI avec PHP et Apache (18/07/08)

« Comme certains d'entre vous le savent, je travaille actuellement dans un environnement dont la sécurité de résume aisément à "comment faire pour s'assurer que ceux qui utilisent le service...

Juillet 2008 – PHPortail: Découvrez APC, le cache d'Opcode de PHP (18/07/08)

« Les caches d'opcode de PHP économisent de l'énergie, des dépenses, et améliorent l'expérience utilisateur générale sur les sites Web, tout en étant l'une des optimisations les plus simples...

Juillet 2008 – Kamelot Blog: L'apéro PHP de Bruxelles 07-2008

Voilà c'est fait. Il y avait quand même plus de monde cette fois. Vous retrouverez déjà quelques photos ici D'autre en ont fait je les linkerai plus tard dans ce post.

Juillet 2008 – Glagla.org: Blogmarks pour le 19/07/2008

Royal Pingdom » Forget about hacking - your servers might get stolen

When it comes to security, there is often a focus on the software side, thwarting hackers and other virtual threats such as viruses and worms. When it comes to uptime and availability, focus often rests on redundant power, clustering, and other similar strategies. We often forget about something that can put a stop to any operation: good, old-fashioned, real-life robbery.

(categories: )

Le spam représente 81,6% des emails au niveau monde par Neteco.com

Malgré bien des tentatives pour essayer de l’éradiquer et de le minimiser, le spam ou courrier électronique non sollicité reste plus que jamais d’actualité. Dans une récente étude publiée par MessageLabs, 81,5% des emails reçus au travers des fournisseurs d’accès seraient du spam.

(categories: )

PHPTV - Dur Comme Faire

La première télévision sur le web entièrement consacrée à PHP vient d’être officiellement lancée. PHPTV est une initiative de l’AFUP produite par la société OpenStates. Cette web TV publiera une émission chaque mois.

(categories: )

Zend, la PHP compagnie, lève 7 millions de dollars par Neteco.com

Zend, « The PHP Company », lève 7 millions de dollars auprès de TriplePoint Capital. Cette nouvelle levée de fonds doit lui permettre de monter en puissance sur un marché en croissance.

Après tout, ce n’est qu’un petit million de moins que seesmic :-p

(categories: )

Comment localiser sa copine grâce à Orange !

Orange vient tout juste de mettre en ligne son API de localisation de téléphone mobile sur son portail Orange Partner :

http://www.orangepartner.com/

Cette API REST fonctionne pour tous les clients Orange France quel que soit leur modèle de téléphone (GPS ou non) à condition bien sûr qu’ils aient accepté préalablement le SMS de demande de localisation envoyée par le service.

(categories: )

Integrate your PHP application with Google Calendar

Google Calendar allows Web application developers to access user-generated content and event information through its REST-based Developer API. PHP’s SimpleXML extension and Zend’s GData Library are ideal for processing the XML feeds generated by this API and using them to build customized PHP applications. This article introduces the Google Calendar Data API, demonstrates how you can use it to browse user-generated calendars; add and update calendar events; and perform keyword searches.

(categories: )

Google devrait numériser des documents de la bibliothèque de Lyon

Le groupe internet Google devrait être choisi demain par la municipalité de Lyon pour numériser 500.000 documents du fonds ancien de la bibliothèque municipale.
Cela ferait de Lyon la première ville française à procéder à la numérisation de ses ouvrages patrimoniaux, antérieurs au XXe siècle.

(categories: )

blogmarks.net

Article original publié sur Glagla Dot Org. Tous droits réservés.

Blogmarks pour le 19/07/2008

Juillet 2008 – Nexen.net: 9 méthodes pour protéger les adresses emails en ligne

Image pour le titre du contenu
Silvan Mühlemann a testé 9 méthodes différentes de protections des adresses emails en publiant une page avec 9 adresses différentes, protégées par une techniques différentes. Après un an et demi d'attente, beaucoup de spam, il peut publier les méthodes les plus efficaces : les meilleures protections affichent 0 spam reçu en 1,5 an, alors que l'adresse sans protection recevait 21Mo de spams.
Un torture test qui vaut un coup d'oeil!

Juillet 2008 – Nexen.net: Alertes sécurité des applications PHP et MySQL, édition 211

Image pour le titre du contenu


PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.6 et 4.4.8; MySQL 5.0.51 (communauté) , 5.1.26-rc et 6.0.5.
Les mises à jour sont recommandées vers ces versions.



7 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Claroline, Gallery, Joomla, MyBB, WordPress, ez et phpMyAdmin



Juillet 2008 – Nexen.net: Actualité de développement PEAR, edition 211

Image pour le titre du contenu
4 paquets ont été mis à jour cette semaine :

  • en PHP_CompatInfo (0 visite) : Recherche les versions et extensions minimum pour exécuter un script PHP

  • en MP3_ID (0 visite) : Écriture et lecture de balises MP3

  • en Testing_Selenium (0 visite) : Client PHP pour Selenium RC

  • en Net_DIME (0 visite) : Implémentation de l'encodage DIME


PEAR est la bibliothèque de composants PHP.

 



 

Juillet 2008 – Nexen.net: En avant pour OSCON

Image pour le titre du contenu
Ce soir, départ pour OSCON, à Portland Oregon. Si vous y êtes, comme Tarek Ziade, faîtes moi signe. J'y serais lundi et mardi, juste le temps de voir une conférence de Damian Conway (encore un qui massacre mon prénom ;)), sur l'art de faire des présentations.
J'y suis pour donner un atelier de 3h30 sur la sécurité : 'Hack this App' sera la première publication anglaise de l'atelier de sécurité que nous avons monté avec Philippe Gamache. Il faut bien tout ce temps pour prendre en compte toutes les vulnérabilités que nous avons inséré dans un petit blogue communautaire. C'est un atelier particulièrement vivant, où les stagiaires réalisent eux-même les attaques... et les défenses. Je crois que c'est encore le meilleur moyen pour bien comprendre les mécanismes de sécurité actuels.
Enfin, il y aura une belle brochette d'acteurs de PHP et MySQL, que je compte bien aller rencontrer.

Juillet 2008 – Nexen.net: Concours d'utilisateurs MySQL 5.1

Image pour le titre du contenu
MySQL 5.1 n'a jamais été aussi près d'être publié en version finale, et MYSQL AB recherche maintenant des cas d'utilisateurs : si vous avez déjà adopté MySQL 5.1, pour ses nombreuses capacités nouvelles (Partitions, Plug-ins, Programmateur d'événements, Fonctions XML, Logs en tables, performances, sécurité, etc.) vous pouvez envoyer un mail tout simple, et gagner un souper avec Monty (en tête à tête avec 4 autres utilisateurs) ou des peluches de Shakila.
Dans tous les cas, jetez un oeil sur cette nouvelle mouture, elle est particulièrement riche et pratique.

Juillet 2008 – Prendre un Café: Debug PHP facile avec Firefox, Firebug et FirePHP

Tous ceux qui ont déjà eux à batailler avec du code javascript connaissent certainement la fabuleuse extension Firebug pour Firefox. L'outil propose une console permettant d'examiner l'environnement d'exécution javascript mais aussi HTML et CSS de n'importe quelle page web.

FirePHP est une autre extension qui a pour but de proposer le même service mais pour le langage PHP. L'extension repose elle-même sur Firebug et propose, une fois installée, l'affichage dans la console des messages de debug émis depuis vos scripts PHP :

Démo FirePHP

Une fois l'extension Firefox installée, pour pouvoir envoyer un message de log dans la console depuis vos scripts, il faut utiliser une librairie spécifique PHP fournie téléchargeable depuis la page d'accueil du projet FirePHP. Cette librairie très simple est d'ailleurs documentée ici. Une fois l'archive récupérée, décompressez-la et appelez FirePHP de cette façon depuis un script PHP standard :

require_once '/path/to/firephp/lib/FirePHPCore/FirePHP.class.php';
 
$f = FirePHP::getInstance(true);
$f->fb('Hello FirePHP console', FirePHP::INFO);
$f->fb(array('hello' => 'how are you?'));
$f->fb(array('hello' => array('how', 'are', 'you')));
$f->fb(array('foo', 'bar'), 'Results', FirePHP::WARN);
 
$o = new stdClass();
$o->foo = 'foofoo';
$o->bar = 'barbar';
 
$f->fb($o);

Pour envoyer les informations de debug à la console, la librairie PHP envoie les données sérialisées au format JSON dans un entête HTTP personnalisé dédié (X-FirePHP-Data). Ainsi, aucune interférence n'est possible avec vos scripts existants, la seule condition étant bien entendu de ne pas lancer la sortie standard PHP avant que ces entêtes aient été envoyés.

Données JSON passées dans un entête dédié

En bref, un outil génialement simple et efficace.


Ce billet intitulé Debug PHP facile avec Firefox, Firebug et FirePHP a été rédigé par Nicolas Perriault et publié sur le blog Prendre un Café sous licence Creative Commons BY-NC-SA.

Juillet 2008 – Nexen.net: Hackontest : booster les fonctionnalités que vous attendiez!

Image pour le titre du contenu
informatica08 organise le HackonTest, dont le but est de financer la réalisation de nouvelles fonctionnalités pour les projets OpenSource les plus populaires. 3 programmeurs seront réunis, grâce à des financements appropriés, pour travailler pendant 1 jour sur les fonctionnalités en demande par la communauté.
Les projets s'inscrivent sur le site de hackontest.org, et les fonctionnalités demandés par les utilisateurs sont référencées, et reçoivent des votes. Les projets seront alors revus par un jury, et les lauréats seront accueillis à Zurich, en Suisse, pour être cloîtrés une journée (avec sofa, pizza et internet), et travailler sur leur projet. Le lendemain, aura lieu la publication des informations.
Pour les projets PHP, Marc Delisle, qui m'a signalé le projet, a inscrit phpMyAdmin. Gallery, Moodle et typo3 sont aussi en compétition. Venez voter pour eux, ou inscrire votre propre projet.

Juillet 2008 – Nexen.net: Geolocalisation en PHP

Image pour le titre du contenu
À l'aide de Net_GeoIP, un paquet PEAR, et des dernières bases de localisations de MaxMind, asvin vous permet de géolocaliser vos visiteurs en 5 lignes de Code. Et il promet aussi de revenir avec d'autres trucs.

Juillet 2008 – Nexen.net: Générer des formulaires PDF pour une application Flex en PHP

"Pour les utilisateurs finaux, pouvoir produire un fichier PDF à partir de votre application est une fonctionnalité standard incontournable. Mais, comme développeur, la production de fichiers PDF est un défi permanent et fatiguant, notamment quand on travaille sur le Web. Vous pouvez expliquer à votre utilisateur d'utiliser un pilote d'imprimante PDF avec son navigateur, mais cela demande des installations complémentaires, et le navigateur en profitera pour ajouter ses propres informations."
Heureusement, Richard Bates publie un tutoriel sur Zend pour résoudre cet épineux problème, grâce à AMFPHP.

Juillet 2008 – Nexen.net: WampMSS 1.1.1

Image pour le titre du contenu
WampMSS correspond à une version modifiée de WampServer sous windows et la nouvelle version se trouve disponible.
La signification de WampMSS veut dire Wamp Mobil Storage Server.
Cette application réalisée par une autre Team permet d'avoir un environnement portable sur une clef USB, pouvant etre utile pour continuer à développer ou à montrer des pré-projets en PHP.
Cette version comprend :
- Apache 2.2.9
- PHP 5.2.6
- MySQL 5.0.51b
- PhPMyAdmin 2.11.7
- SQLiteManager 1.2.0 RC2

Juillet 2008 – PHP Index: La prochaine version de SPIP sous licence GNU/GPL 3

C'est officiel depuis l'anniversaire des sept ans de SPIP (début juillet), la prochaine version de celui-ci adoptera une licence GNU/GPL 3.

Cette version de la licence GPL remplacera pour SPIP la version 2 écrite par la Free Software Foundation il y a déjà plus de 15ans !
Le principal intérêt qui a plébiscité le changement de la licence est la meilleure protection des droits d'auteurs pour les pays autres que les Etats-Unis.

Il faut tout de même savoir que la GPL2 et sa petite sœur la GPL3 sont incompatibles entre elle. Incompatible dans le sens où la version 2, comme la 3, interdit de combiner du code sous une autre licence. Plus concrètement les licences nous disent : "si vous incorporez du code sous cette licence dans un plus grand programme, ce dernier doit aussi être sous cette licence".
Mais bien sûr rien n'empêche a deux applications sous chacune de ces licences de fonctionner dans un même environnement. Comme nous le dit Richard Stallman en personne : "Par exemple, la licence TEX et la licence Apache sont incompatibles avec la GPLv2, mais cela ne nous empêche pas d'avoir TEX et Apache dans le même système avec Linux, Bash et GCC car ce sont tous des programmes séparés. Ainsi, si Bash et GCC évoluent vers la GPLv3, tandis que Linux reste sous la GPLv2, il n'y a pas de conflit."

Pas trop d'inquiétude avoir donc, mais pour plus d'informations :

Juillet 2008 – PHPortail: wampMSS 1.1.1 (21/07/08)

La version 1.1.1 de wamp MSS (Mobil Storage Server) est enfin disponible !

wampMSS est une version modifiée de wamp permet de faire fonctionner un serveur apache, PHP, MySQL sur un périphérique...

Juillet 2008 – PHPortail: 9 solutions pour avoir des captures d'écran sur votre site (21/07/08)

Proposer une capture d'écran du site qui va être visitée lors du survol d'un lien par la souris est une fonctionnalité à la mode sur les sites : il permet de donner un aperçu du site de...

Juillet 2008 – PHPortail: Trois conseils pour rendre le code PHP lisible (21/07/08)

dom29399 propose trois approches pour améliorer la lisibilité du code PHP :

* Réduire la taille des conditions : les blocs de conditions qui font des centaines de lignes perdent aisément les...

Juillet 2008 – PHPortail: Mise au point de votre site web (21/07/08)

La mise au point de votre site web pour l'ensemble des utilisateurs est un point important.

Yahoo propose un nouveau service concernant le modèle de réputation ("Reputation Pattern") qui se...

Juillet 2008 – PHPortail: 30 Classes et Composants PHP utiles (21/07/08)

Frederico s'est penché sur les classes et les composants utiles touchant PHP.

La liste qu'il propose concerne les thèmes suivants :

* Base de données
* Outil de développement
* Test...

Juillet 2008 – Nexen.net: tester le web service

Image pour le titre du contenu
Le site TechTarget s'est penché sur différents tests qui peuvent être très interressant de connaitre, sous la forme de 2 articles.
Le 1er article est consacré sur les tests des services Web et RIA. cet article nous parle des possibilités de réaliser des essais avec les navigateurs comme Firefox et son module firePHP, de ce que le développeur peut effectuer de son coté.
Le 2eme article sur les tests unitaires et de suivi du coté du serveur, c'est à dire la surveille du fonctionnement des services Web, l'utilisation de la mémoire, etc.

Juillet 2008 – Lapin Blanc: PHP et ses tags

Il existe plusieurs manières de délimiter les blocs de code en PHP : <?php et ?> (les tags standard) <? et ?> (leur version courte) <?= et ?> (équivalent de <?php echo et ?>) <% et %> (style ASP) <script language="php"> et </script> (style (...)

Juillet 2008 – Nexen.net: AMP sur Solaris et Linux

Image pour le titre du contenu
AMP se trouve etre le nouveau stack logiciel proposé par Sun. Il a pour but de proposé une pile AMP (Apache / MySQL / PHP) qui se trouve intégré et supporté dans les environnements solaris et Linux. Dans le futur, une version pour les possesseurs de Windows devrait voir le jour.
Cette pile de logicielle se trouve être un ensemble d'outils pour le développement sites Web dans le but de faciliter les développements, les tests et les déploiements.
De nombreuses options sont proposés pour aider les développeurs et les administrateurs qui veulent en faire plus avec ce nouvel outil.

Juillet 2008 – Prendre un Café: Mes conventions de codage...

... sont celles des projets sur lesquels je me greffe. C'est en effet pour moi une forme de respect que d'appliquer les standards de codage partagés par une communauté (ou une équipe) de développeurs : ainsi, on maximise les chances de se comprendre et on minimise les coûteuses phases de communication entre geeks introvertis[1] :p

En effet, rien de plus pénible que de reprendre le code de quelqu'un qui a pris des libertés avec des conventions établies à ce niveau, l'apothéose étant obtenue avec ce genre de code :

<?php
  class Ma_superClasse {
 
    function dire_coucou ( $popol) {
  echo 'coucou ' . $popol   . ' !' ;
}
     function DireAuRevoir($Popol )
{ print "Au revoir $Popol !";
     }
  }

Je force bien évidemment ici le trait, mais tout le monde est déjà tombé sur ce genre de code illisible, qui multiplie par 10 votre temps d'intervention sur ce dernier et divise par 1000 votre passion pour la TMA.

Bien entendu, il peut arriver de produire du code sur un projet ne nécessitant l'utilisation d'aucune brique logicielle existante. Auquel cas vous pouvez librement appliquer vos propres standards de codage, l'important étant ici qu'ils soient cohérents et constamment appliqués. S'il peuvent être ceux d'un projet open source existant reconnu, cela augmentera la sympathie potentielle à votre égard de futurs intervenants sur votre code ;)

Je noterai quand même en vrac quelques bonnes pratiques générales globalement reconnues et appréciées :

  • être explicite,
  • indenter son code,
  • documenter son code,
  • à choisir entre les deux, privilégier la lisibilité à la concision,
  • utiliser des noms de variables, de classes, de méthodes, de fonctions et d'arguments parlants,
  • utiliser des noms anglophones,
  • utiliser des motifs de conception connus.

Personnellement, j'ai mes petites préférences et tout comme Oncle Tom - qui m'a gentiment refilé cette chaîne[2] - j'ai tendance à appliquer les standards de codage de symfony, que je trouve homogènes et cohérents. Mais ce sont là bien évidemment essentiellement des questions de goûts et de couleurs.

Notes

[1] Voire les trolls genre les tabulations ça pue, vive l'indentation à trois espaces...

[2] Salopard, ça va se payer ! ;-)


Ce billet intitulé Mes conventions de codage... a été rédigé par Nicolas Perriault et publié sur le blog Prendre un Café sous licence Creative Commons BY-NC-SA.

Juillet 2008 – Nexen.net: Vidéo PHP et MySQL, édition 53

Image pour le titre du contenu
Voici les 5 dernières vidéos PHP et MySQL.


Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.



N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.

Juillet 2008 – Lapin Blanc: Ne fermez pas vos tags à la fin des fichiers PHP

Pendant que NikO nous présente ses conventions de codage, parlons d’une autre bonne pratique concernant les tags de délimitation de blocs en PHP. Le langage PHP n’impose pas de fermer un bloc de code avec ?> si se bloc se trouve tout à la fin du fichier, et pour cause, mieux vaut l’omettre dans (...)

Juillet 2008 – Nexen.net: DomPDF

Image pour le titre du contenu
Proposer dans une application la capacité de produire un fichier PDF, est quelque chose de classique.
Par contre, pour consevoir automatiquement ce document, le développeur peut etre confronter à effectuer des calculs complexes pour positionner un texte sur la page.
Avec PHP, il était déjà possible de générer ce genre de document, mais si on utilise la bibliotheque PDF appelé DomPDF avec le module de AMFPHP de Flex, cela devient beaucoup plus facile, c'est ce que nous montre Richard Bates.

Juillet 2008 – Glagla.org: Téléchargez votre vin en direct des domaines !

C’est beau la technologie !

usbwine.com

Article original publié sur Glagla Dot Org. Tous droits réservés.

Téléchargez votre vin en direct des domaines !

Juillet 2008 – PHP Index: Zend Framework 1.6 Release Candidate 1

La version 1.6 de Zend Framework est disponible au téléchargement.

Parmi les principales évolutions, on trouve par exemple :

  • Intégration du framework javascript Dojo
  • SOAP : SOAP server, SOAP client, autodiscovery, WSDL access, WSDL generation
  • Aperçu du "Tooling Project" encore à l'étude
  • Tests unitaires Harness (controllers)
  • Support du format Lucene 2.3
  • Composant Paginator
  • Support Text/Figlet
  • ...

Pour plus d'information, vous pouvez consulter l'annonce sur le site Zend.

Juillet 2008 – Glagla.org: Liens inter-applications avec Symfony 1.1

Un important travail réalisé pour la sortie de Symfony 1.1 a été le retrait du pattern singleton du framework. On peut maintenant instancier plusieurs objet sfContext par exemple. Cela permet notamment de faire des liens inter-application a peu près proprement. Voici l’avancée de mon travail sur la question :

fichier lib/helper/crossAppLinkHelper.php

<?php
/**
 * @author Olivier Mansour
 */
 
/**
 * return an url for a given symfony application and an internal url
 * work with symfony 1.1
 * freely inspired from sfWebControlleur code
 *
 * @author Olivier Mansour
 * 
 * @param string $appname
 * @param string $url
 * @param boolean $absolute
 * @param string $env
 * @param boolean $debug
 * @return string
 */
function cross_app_url_for($appname, $url, $absolute = 'false', $env = null, $debug = 'false')
{
 
  if (sfConfig::get('sf_no_script_name'))
  {
  // wont work
  throw new sfException(__FUNCTION__.' : the cross app link helper will not work with sf_no_script_name to true');
  }
 
  // get the environment
  if (is_null($env))
  {
    $env = sfContext::getInstance()->getConfiguration()->getEnvironment();
  }
 
  // context creation
  if (!sfContext::hasInstance($appname))
  {
    $c = ProjectConfiguration::getApplicationConfiguration($appname, $env, $debug);
    sfContext::createInstance($c, $appname);
  }
 
  list($route_name, $parameters) = sfContext::getInstance($appname)->getController()->convertUrlStringToParameters($url);
  $request = sfContext::getInstance($appname)->getRequest();
 
  $url_root = $request->getRelativeUrlRoot();
  if ($absolute)
  {
    $url_root = 'http'.($request->isSecure() ? 's' : '').'://'.$request->getHost().$url_root;
  }
 
  //scriptname
  $scriptname = '';
  if (($env != 'prod') and ($env))
  {
  	$env_suf = '_'.$env;
  } 
  else
  {
   $env_suf = '';
  }
  if (!file_exists(sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.$appname.$env_suf.'.php'))
  {
  	//test with index ?
  	if (file_exists(sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.'index'.$env_suf.'.php'))
  	  $scriptname = 'index'.$env_suf.'.php';
  	else
      throw new sfException(__FUNCTION__.' : can\'t find a script name for appname : '.$appname.' and env : '.$env); 	 
  }
  else
  {
  	$scriptname = $appname.$env_suf.'.php';
  }
 
 
  $fragment = '';
  // strip fragment
  if (false !== ($pos = strpos($url, '#')))
  {
    $fragment = substr($url, $pos + 1);
    $url = substr($url, 0, $pos);
  }
 
  // generate url
  list($route_name, $parameters) = sfContext::getInstance($appname)->getController()->convertUrlStringToParameters($url);
 
  if (sfConfig::get('sf_url_format') == 'PATH')
  {
    // use PATH format
    $divider = '/';
    $equals  = '/';
    $querydiv = '/';
  }
  else
  {
    // use GET format
    $divider = ini_get('arg_separator.output');
    $equals  = '=';
    $querydiv = '?';
  }
  $web_url = $url_root.$querydiv.$scriptname.sfContext::getInstance($appname)->getRouting()->generate($route_name, $parameters, $querydiv, $divider, $equals);
 
  if ($fragment)
  {
    $web_url .= '#'.$fragment;
  }
 
  return $web_url;
}

Pour l’utiliser (par exemple, depuis une application nommée back) :

<?php echo cross_app_url_for('front' , '/module/action?id=5&tmp=ok#raoul'); ?>

Je ne l’ai pas beaucoup testé et a vrai dire je ne sais pas si on peut faire plus efficace. Le point particulier qui m’a poussé à écrire autant de code est que, si il est facile d’extraire les routes pour un contexte donnée, la méthode genUrl de sfWebController utilise un objet sfRequest pour obtenir l’url du contrôleur (back_dev.php par exemple) ce qui est bloquant dans mon cas.

Si vous avez des retours n’hésitez pas.

Vous pouvez télécharger le code cité plus haut : crossAppLinkHelper.php.zip

Article original publié sur Glagla Dot Org. Tous droits réservés.

Liens inter-applications avec Symfony 1.1

Juillet 2008 – PHP Index: Generating PDF Forms From a Flex Application With PHP

Sur le site de Zend, Richard Bates a récemment publié un tutoriel sur l'utilisation conjointe de AMFPHP et de dompdf pour créer des formulaires PDF sur une application Flex.

Ayant pu observé que la génération de fichier PDF à partir d'une application est considérée comme un standard par les utilisateurs alors que ce n'est pas forcément si simple pour les développeurs d'application web, il propose un tutoriel très complet pour répondre simplement à ce genre de problématique.

Juillet 2008 – PHPortail: 8 astuces pour bien développer une application web (24/07/08)

Loïc d'Anterroches a fait une liste de petits trucs pour aider à développer une application Web.

« Voici une petite liste de choses auxquelles il faut bien penser quand on développe une...

Juillet 2008 – Nexen.net: Actualité de développement PECL, edition 53

Image pour le titre du contenu
5 paquets ont été mis à jour cette semaine :

  • en pecl_http (0 visite) : support étendu de HTTP

  • en timezonedb (0 visite) : base de données de fuseaux horaires pour PHP

  • en amfext (0 visite) : extension ActionScript Message Format

  • en tcpwrap (0 visite) : interfarce TCP wrapper

  • en sphinx (0 visite) : extension pour sphinx, le moteur de recherche


PECL est la bibliothèque d'extensions C de PHP.

 



 

Juillet 2008 – Nexen.net: Statique usine VS publique constructeur

Image pour le titre du contenu
Le blog de Federico Cargnelutti a publié une comparaison des usines utilisant des méthodes de créer une instance d'une classe par faire un objet, appeler constructeur.
Il comprend certains avantages de la méthode et d'autres pour l'appel normal de créer un objet. Il parle également d'un certain nombre observations faites par Dagfinn Reiersol dans un blog public sur les constructeurs.
Une étude qui faut connaitre et qui vous sera très utile

Juillet 2008 – Nexen.net: PHP Melody

Image pour le titre du contenu
Cette application proposé par PHP Sugar, permet de personnalisé son site internet, en lui permettant d'avoir des sons, des videos.
Cette nouvelle forme de CMS permet d'avoir sur son site un ensemble d'actualité que vous désirez partager et provenant de d'autres sites. Comme ceci vous aurez la possibilité d'avoir une plus grande fréquentation .
La nouvelle version gère beaucoup de choses et propose un large choix dont vous pouvez vous rendre sur la page "DEMO" pour vous faire une idée.

Juillet 2008 – PHPortail: Symfony 1.1 (24/07/08)

Symfony 1.1 est publié en version stable et finale. La liste des évolutions et nouveauté du populaire cadre de développement est très intéressante :

* Une nouvelle architecture de Symfony...

Juillet 2008 – Prendre un Café: Partager la session utilisateur entre Flash/Flex et symfony avec AmfPHP

Pour les besoins d'un projet récent, j'ai eu besoin de valider la possibilité de gérer l'authentification et l'accès à la session symfony (côté serveur) depuis une interface générée par Adobe Flex (en Flash, donc côté client).

Pour cela, j'ai utilisé la librairie AmfPHP en version 1.9beta2, certes pas très récente mais suffisament fonctionnelle pour satisfaire à ce besoin précis. Voyons comment ça se passe concrètement. L'avantage de la démonstration ci-dessous est qu'elle ne nécessite pas d'installer Flex puisque AmfPHP fournit un navigateur de services (browser) qui nous suffira pour valider notre concept.

Installation du plugin sfGuard

Je pars du principe que tout le monde a une installation de symfony 1.1 nanti d'une application main, ainsi qu'un projet et un virtual host apache fonctionnels pointant sur local.mademo.org. Si ce n'est pas le cas, voila de quoi vous mettre à jour.

On commence par installer le plugin sfGuard, qui se chargera de la persistance des droits et permissions utilisateurs en base de données, et fournira les utilitaires d'authentification et de manipulation de la session côté serveur :

$ ./symfony plugin:install sfGuardPlugin
$ ./symfony propel-build-all
$ ./symfony cc

On charge quelques données de test dans notre base de données nouvellement mise à jour :

$ mkdir data/fixtures 
$ cp plugins/sfGuardPlugin/data/fixtures.yml.sample data/fixtures/fixtures.yml
$ ./symfony propel:data-load main

Ce jeu de données de test nous fournit par défaut un compte admin (mot de passe admin) qui nous servira à tester notre service d'authentification.

Ensuite, il nous faut modifier notre classe apps/main/lib/myUser.php gérant la session utilisateur afin qu'elle étende désormais la classe sfGuardSecurityUser, fournie par le plugin sfGuard :

<?php
// Fichier apps/main/lib/myUser.php
class myUser extends sfGuardSecurityUser
{
}

Installation et configuration d'AmfPHP

Nous allons installer la librairie AmfPHP dans le sous-répertoire web/ de notre projet[1], et aménager quelque peu notre arborescence pour accueillir les services AmfPHP :

$ cd /path/to/project
$ svn export https://amfphp.svn.sourceforge.net/svnroot/amfphp/tags/1.9beta2 web/amfphp
$ mkdir lib/amfphp-services
$ mv web/amfphp/services/amfphp lib/amfphp-services/

Ceci fait, nous allons éditer plusieurs fichiers d'amfphp afin de l'adapter à notre environnement symfony. Tout d'abord, commençons par éditer la valeur de la variable $servicesPath dans le fichier web/amfphp/globals.php :

<?php
// ...
$servicesPath = dirname(__FILE__).'/../../lib/amfphp-services/';

Enfin, il nous faut "patcher"[2] le fichier web/amfphp/core/amf/app/Filters.php, qui initialise la session PHP sans définir le nom de la session. Ici, nous utiliserons le nom de la session symfony par défaut, "symfony" (ligne 105 du fichier) :

102     //Fix for godaddy not allowing ini_get
103     $sessionName = "PHPSESSID";
104   }
105   session_name('symfony');
106   session_start();
107   $session_id = session_id();

Création d'un service permettant le partage de la session utilisateur

Voila, nous pouvons maintenant créer un service de gestion de l'authentification, que nous nommerons pompeusement UserSessionService et que nous enregistrerons dans le fichier lib/amfphp-services/UserSessionService.php :

<?php
require_once dirname(__FILE__).'/../../config/ProjectConfiguration.class.php';
 
/**
 * This class tests the symfony session within an AmfPHP context
 *
 */
class UserSessionService
{
  /**
   * Symfony context
   * @var sfContext
   */
  protected $context = null;
  
  /**
   * Symfony session
   * @var sfGuardSecurityUser
   */
  protected $user = null;
  
  /**
   * Public constructor
   *
   */
  public function __construct()
  {
    $configuration = ProjectConfiguration::getApplicationConfiguration('main', 'dev', true);
    $this->context = sfContext::createInstance($configuration);
    $this->user = $this->context->getUser();
  }
  
  /**
   * Checks wheter user is authenticated or not
   *
   * @return boolean
   */
  public function isAuthenticated()
  {
    return $this->getUser()->isAuthenticated();
  }
  
  /**
   * Authenticates user
   *
   * @param  string  $username
   * @param  string  $password
   * @return boolean True if user has been successfully authenticated
   */
  public function login($username, $password)
  {
    if ($this->isAuthenticated())
    {
      return true;
    }
    
    $user = sfGuardUserPeer::retrieveByUsername($username);
    
    if (!is_null($user) && $user->checkPassword($password))
    {
      $this->getUser()->signIn($user);
      return true;
    }
    
    return false;
  }
  
  /**
   * Signs out a user 
   *
   */
  public function logout()
  {
    return $this->getUser()->signOut();
  }
  
  /**
   * Retrieves the current symfony context
   *
   * @return sfContext
   */
  protected function getContext()
  {
    return $this->context;
  }
  
  /**
   * Retrieves the current symfony user session
   *
   * @return sfGuardSecurityUser
   */
  protected function getUser()
  {
    return $this->user;
  }
}

Pour tester notre service, utilisons le navigateur de service proposé par AmfPHP. Pour cela, il faut lancer un navigateur sur http://local.mademo.org/amfphp/browser/index.html :

Naviagateur de services AmfPHP

Via cette interface, elle même réalisée en Flex, on peut tester les méthodes publiques définies dans notre service, manipuler les arguments, et constater que nous arrivons à nous authentifier et que nous accédons bien à la même session utilisateur que dans symfony : login, logout et test du statut d'authentification.

En conclusion

On pourrait aller beaucoup plus loin dans cet exemple, en proposant par exemple une classe proxy en ActionScript 3 représentant un utilisateur du système (dans notre cas, une instance de la classe sfGuardUser), cette dernière reproduisant tout ou partie de ses méthodes et propriétés, et donc d'utiliser l'ORM Propel directement depuis Flash... Je vous laisse faire vos tests si le coeur vous en dit.

D'autre part, même si la librairie AmfPHP semble un peu passée au niveau architecture, elle reste néanmoins très efficace pour publier des services PHP dans Flash au travers du protocole AMF. J'ai eu vent d'autres librairies comme WebORB ou SabreAMF, mais je ne sais pas vraiment ce qu'elles valent... Des avis dans l'assistance ?

Notes

[1] Du coup, on expose certains scripts AmfPHP, mais la librairie n'est malheureusement que prévue pour fonctionner en ce sens...

[2] Oui, c'est terriblement crade, je ne comprend d'ailleurs pas qu'AmfPHP n'aie pas prévu ce cas de figure...


Ce billet intitulé Partager la session utilisateur entre Flash/Flex et symfony avec AmfPHP a été rédigé par Nicolas Perriault et publié sur le blog Prendre un Café sous licence Creative Commons BY-NC-SA.

Juillet 2008 – PHPortail: XAMPP pour Linux, Windows et OS-X (25/07/08)

Cette version contient :

* Apache : 2.2.9
* MySQL : 5.0.51b
* PHP : 5.2.6
* phpMyAdmin : 2.11.7
* mod_perl : 2.0.4
* OpenSSL : 0.9.8h
* eAccelerator : 0.9.5.3

Juillet 2008 – PHPortail: Expérience en TDD (25/07/08)

Stefan Priebsch relate son expérience en TDD (Test Driven Developement). En fait, la progression dans l'utilisation de TDD est la partie la plus intéressante de l'article. Il commence par ajouter...

Juillet 2008 – PHPortail: HTML Purifier 3.1.1 (25/07/08)

Cette version est une version de corrections de bogues et de sécurité. Cette version adresses deux vulnérabilités de sécurité, tous deux liés à CSS, et dont l'un s'applique seulement aux...

Juillet 2008 – PHPortail: Sécurité : Scrawlr (25/07/08)

Scrawlr, développé par le groupe de recherche en sécurité "HP Web Security Research Group", est l'abréviation de "SQL Injector and Crawler". Scrawlr va parcourir un site web tout en analysant...

Juillet 2008 – PHPortail: Sécurité : addslashes est encore trop utilisés! (25/07/08)

Mark Kimsal a fait une étude complète sur les différences de protections que proposent les fonctions addslashes, addcslashes et mysql_real_escape_string. C'est toujours la première qui est la...

Juillet 2008 – PHPortail: Intégrez votre application PHP avec Google Calendar (25/07/08)

Google Calendar permet aux développeurs d'application Web d'accéder aux contenus utilisateurs et aux événements via une interface REST. PHP, avec son extension SimpleXML et la bibliothèque de...

Juillet 2008 – PHPortail: Conception de formulaire Web : résultat de sondage (25/07/08)

Smashingmagazine a lancé un sondage sur les points de conceptions des formulaires Web, et ils en ont tiré un dossier très complet, en deux volets. Tous les aspects de la présentation d'un...

Juillet 2008 – Nexen.net: Actualité de développement PEAR, edition 212

Image pour le titre du contenu
7 paquets ont été mis à jour cette semaine :

  • en HTML_QuickForm_Controller (0 visite) : Extension de HTML_QuickForm pour réaliser des formulaires multi-pages

  • en HTTP_Request (0 visite) : Requêtes HTTP simples

  • en MIME_Type (0 visite) : Gestion des types MIME

  • en HTML_Progress (0 visite) : Une barre de progression pour les téléchargements de fichiers en XHTML.

  • en HTML_Progress2 (0 visite) : Comment ajouter une barre de chargement dans un document XHTML.

  • en HTML_Template_Sigma (0 visite) : Implémentation des gabarits intégrés avec compilation

  • en Date_Holidays_Brazil (0 visite) : Pilote pour calculer les dates feriées au Brésil


PEAR est la bibliothèque de composants PHP.

 



 

Juillet 2008 – Nexen.net: Actualité de développement PECL, edition 208

Image pour le titre du contenu
5 paquets ont été mis à jour cette semaine :

  • en pecl_http (0 visite) : support étendu de HTTP

  • en timezonedb (0 visite) : base de données de fuseaux horaires pour PHP

  • en amfext (0 visite) : extension ActionScript Message Format

  • en tcpwrap (0 visite) : interfarce TCP wrapper

  • en sphinx (0 visite) : extension pour sphinx, le moteur de recherche


PECL est la bibliothèque d'extensions C de PHP.

 



 

Juillet 2008 – Nexen.net: Alertes sécurité des applications PHP et MySQL, édition 212

Image pour le titre du contenu


PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.6 et 4.4.8; MySQL 5.0.51 (communauté) , 5.1.24-rc et 6.0.4.
Les mises à jour sont recommandées vers ces versions.



3 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Claroline, Drupal et WordPress



Juillet 2008 – Nexen.net: PHP 4.4.9 RC1 est prêt

Image pour le titre du contenu
PHP 4.4.9, le successeur final de PHP 4.4.8 a été publié en version RC1 sur le site de l'assurance qualité. C'est la toute dernière version de PHP 4, et elle ne contient que des corrections de sécurité importants et réaliste : en effet, certaines corrections de PHP 5 ne seront pas portées en PHP 4, sous peine de transformer PHP 4 en PHP 5 (et cette version existe déjà). 4 corrections sont recensées pour cette nouvelle mouture : la mise à jour en PCRE 7.7, et 3 pb de sécurité.
Bref, pour passer à la postérité et tester une dernière fois la branche des 4.4, allez sur le site de l'assurance qualité, et téléchargez la version 4.4.9RC1. Compilez avec vos extensions favorites, testez avec vos vieilles applications et signalez tout problème à Derick.
Et si cela ne vous tente pas, passez donc à PHP 5.

Juillet 2008 – Nexen.net: Generation de code avec le Zend Framework

Avec la sortie de la Release Candidate 1 du Zend Framework 1.6 est annoncé une version préliminaire des composants Zend_Tool qui incluront des classes pour la génération et la modification de code. Lorsque que le composant sera finalisé, il sera possible de générer la structure du projet avec une commande telle que : zf create project pour créer un contrôleur nommé foo zf create controller -n foo

Juillet 2008 – Nexen.net: Nombre de visage(s) dans une image

Image pour le titre du contenu
Robert eisele s'est penché sur la bibliothèque OpenCV (d'Intel) pour détecter les visages dans les images à partir d'une interface PHP.
L'article qu'il présente permet de trouver des visages dans une image avec le language PHP.
La bibliothèque OpenCV qui a été utilisé un modèle-outil de détection de formes

Juillet 2008 – Glagla.org: Blogmarks pour le 27/07/2008

Microsoft warns Web site owners to prep for IE 8

Although Beta 2 of Internet Explorer (IE) 8 isn’t due out until some time in August, Microsoft is cautioning Web site owners now that they need to be prepping now for possible problems the new, more standards-compliant browser may cause.

As part of this week’s IE June Security Update for IE8 Beta 1, Microsoft introduced a new tag, “IE EmulateIE7″ — which it is counting on to head off some of the incompatibilities the company is anticipating could occur, based on feedback it received from IE 8 Beta 1 testers.

Bon courage à tous les développeurs web !

(categories: )

Liens inter-applications avec Symfony 1.1

Un important travail réalisé pour la sortie de Symfony 1.1 a été le retrait du pattern singleton du framework. On peut maintenant instancier plusieurs objet sfContext par exemple. Cela permet notamment de faire des liens inter-application a peu près proprement. Voici l’avancée de mon travail sur la question :

(categories: )

Google Maps guide aussi les piétons

Google a ouvert à tous les internautes une fonctionnalité qu’il testait en bêta privée depuis plusieurs mois. Lorsqu’un utilisateur de Google Maps fait une recherche d’itinéraire inférieure à 10 kilomètres, le service de cartographie propose désormais un itinéraire pour les piétons, en plus du trajet pour les voitures.

(categories: )

Conventions de programmation : la nécessaire maturité - La Case de l’Oncle Tom

Tout développeur, que ce soit à l’école ou en apprenant sur le tas, écrit du code. J’espère n’avoir perdu personne à ce stade de l’explication ;-)

Inconsciemment on cherchera à utiliser un style d’écriture avec lequel on se sent à l’aise, qu’on pourra et saura relire facilement et dans le meilleur des cas, qui pourra être relu par une autre personne sans avoir à engager d’interprète.

Tout développeur tend donc à utiliser des conventions de programmation (coding standards), que ce soit en HTML, PHP, CSS, JavaScript ou même en Cobol. Et utiliser des conventions, c’est bien !

(categories: )

La réalité augmentée sur iPhone

Ce petit iPhone m’a pas fini de nous impressionner et de donner des idées aux développeurs. La prochaine révolution de son utilisation pourrait bien concerner la réalité augmentée

(categories: )

Royal Pingdom » Data center stories that will make you laugh or cry

The admin robot – reboot via CD-ROM eject

When an important server used for credit card transactions started crashing on a regular basis, and there was no budget in place to replace it, one tech jokingly suggested that they build a robot that could reboot the machine day and night. They ended up doing exactly that. A perfectly aligned piece of machinery ejected a CD-ROM sled exactly on the reset button of the problematic server as soon as it stopped responding to ping. (You have to wonder if MacGyver was involved…)

(categories: )

Commerce en ligne: eBay contraint de réviser son modèle | Rue89

eBay traverse une crise d’identité. La société qui a aidé à façonner le commerce en ligne 1.0 est confrontée actuellement à une dure réalité: le commerce sur le web ne ressemble plus à ce qu’il était il y a une décennie. Les enchères -le cœur de la société- ont perdu l’essentiel de leur pouvoir d’attraction. Et eBay doit se recomposer une image de marque pour préserver ses revenus et ses bénéfices.

(categories: )

blogmarks.net

Article original publié sur Glagla Dot Org. Tous droits réservés.

Blogmarks pour le 27/07/2008

Juillet 2008 – Apprendre-PHP.com: Sortie de WAMP MSS

Tous les développeurs PHP tournant sous windows doivent (ou devraient !) connaître WAMP, une application développée par Romain Bourdon permettant d'installer en quelques clics un espace de développement : PHP 5, MySQL 5, Apache et bien entendu quelques outils indispensables tels que...

Juillet 2008 – Glagla.org: Ce blog est en vacances

et moi également !

Déjà qu’il n’était pas d’une folle activité ! Reprise des hostilités en août après du bateau, des bbq, des la plage et un petit tour à l’hôpital (pour la plomberie trimestrielle).

wé \o/

Article original publié sur Glagla Dot Org. Tous droits réservés.

Ce blog est en vacances

Juillet 2008 – Nexen.net: PHP 5.3 alpha1

Image pour le titre du contenu
La version de PHP 5.3 en alpha 1, vient de sortir.
Cette nouvelle version permet de découvrir les nouvelles possibilités et pour ceux qui voudront tester cette nouvelle version, de pouvoir remonter les bugs éventuels que vous pourrez identifier.
Dans cette nouvelle version, apparaitra en autre PDO_MYSQLND (le pilote de MySQL pour PHP) qui a été annoncé.

Juillet 2008 – PHPortail: WordPress 2.6 (28/07/08)

La version 2.6 de WordPress est disponible, presque un mois avant la date prévue.

Cette version introduit un raccourci de publication Tumblr, l’historique des révisions des articles, la...

Juillet 2008 – PHPortail: PHP Melody (28/07/08)

PHP Sugar nous propose une application qui permet à un site internet d'avoir des sons et des vidéos.

La nouvelle version gère beaucoup de choses et propose un large choix dont vous pouvez vous...

Juillet 2008 – PHPortail: Nombre de visages dans une image (28/07/08)

Robert Eisele s'est intéressé à la bibliothèque OpenCV d'Intel. Cette bibliothèque permet de détecter les visages dans les images.

L'article qu'il présente permet de trouver des visages...

Juillet 2008 – PHPortail: Géolocalisation en PHP (28/07/08)

À l'aide de Net_GeoIP, un paquet PEAR, et des dernières basses de localisations de MaxMind, asvin vous permet de géolocaliser vos visiteurs en 5 lignes de Code. Et il promet aussi de revenir avec...

Juillet 2008 – PHPortail: PHPTV (28/07/08)

La première télévision web en français entièrement consacré à PHP a été officiellement lancée. Elle est une initiative de l'association française des utilisateurs de PHP produite par la...

Juillet 2008 – Nexen.net: Construire un Panneau de control en PHP

Image pour le titre du contenu
Et pourquoi pas ? C'est la question que s'est posé Nifty sur son blog, car souvent la réalisation de ce panneau, se trouve réaliser avec un gestionnaire CGI et Nanoweb, mais il est possible de le faire avec PHP-CGI Binaire.
Avec cette nouvelle approche, cette nouvelle version de conception vous permettra de réaliser vous même votre panneau de contrôl et de pouvoir utiliser de nombreuses possibilités qui sont offerte dont le SQLite PDO.

Juillet 2008 – Kamelot Blog: Après 7 ans, une page se tourne sur #phpFrance. Je remet mon statut de 500 à Dinesh.

Hello,

If you would like to confirm the "Manager Change" request for channel '#phpfrance',
thus giving it PERMANENTLY to user 'dinesh' who is a level 499 on #phpfrance,

then click on the following link to confirm (say YES) within SIX HOURS, after that it will be too late : 

http://cservice.undernet.org/live/forms/confirm_mgrchange.php?ID=xxxxx

if you dont want this request to be processed, just IGNORE this mail and DO NOT click on the above URL.

The Undernet Channel Service.

Successfull Confirmation! 

You have confirmed your 'Manager Change Request' for channel

Your request will be reviewed by CService Admins, Please allow 3-5 days for your request to be processed.

Je n'étais plus réellement présent depuis plus d'un an,dans un premier temps, fatigué des disputes prépubères des membres, puis d'avoir décroché et consacré mon temps à d'autres choses, je ne suis jamais réellement revenu.

10 d'irc sur ce channel qui m'aura accompagné dans mes débuts en PHP. Du temps où il existait une communauté php. Du temps où phpFrance était avant tout un site (Aujourd'hui c'est surtout un excellent et gros forum). Je retriendrais surtout mes discussion avec Damien, Ganf, Didou, Cyruss, flyingcow, ... et d'autres encores

Juillet 2008 – PHPortail: Sensio Labs supporte le projet Doctrine (29/07/08)

« Jonathan Wage, le développeur principal de Doctrine, rejoint les équipes de Sensio Labs aux Etats-Unis.

Doctrine est un projet Open-Source écrit en PHP permettant de manipuler une base de...

Juillet 2008 – PHPortail: PHPIDS 0.5.2 (29/07/08)

Tandis que la version 0.5.1 ajoutait plusieurs filtres pour des attaques pratiquement ésotériques ainsi que des identifiants pour les filtres, la version 0.5.2 se consacre à l'augmentation de...

Juillet 2008 – PHPortail: PHP 5.3 alpha1 (29/07/08)

La version de PHP 5.3 en alpha 1 vient de sortir.

Cette nouvelle version permet de découvrir les nouvelles possibilités et pour ceux qui voudront tester cette nouvelle version, de pouvoir...

Juillet 2008 – Nexen.net: Vidéo PHP et MySQL, édition 54

Image pour le titre du contenu
Voici les 5 dernières vidéos PHP et MySQL.


Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.



N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.

Juillet 2008 – Nexen.net: Acceleo 2.3 pour Eclipse

Image pour le titre du contenu
Acceleo est un générateur de code pour Eclipse qui vous permettra d'exploiter n'importe quel modèle UML. Ce générateur de code à la particularité d'être incrémental, c'est à dire que vous pouvez modifier le code généré sans perdre ses modifications.
Acceleo vous permettra de générer du langage ou un framework par exemple du UML vers PHP/smart/Pear ou vers PHP/Zend.

Juillet 2008 – Nexen.net: ImageMagick pour Windows

Image pour le titre du contenu

Après plusieurs heures de recherche sur le Web, me voici enfin avec la librairie graphique ImageMagick tournant sur mes différents serveurs sous Windows XP et Vista... Rien à voir donc avec une installation traditionnelle sous Linux, réglée avec les 2-3 commandes habituelles... Voici un aide mémoire pour vous et un petit guide pour vous, pour ne plus perdre de temps.

Juillet 2008 – PHP Québec: 8/1 18:30 PHPBeer - Montreal

L’équipe de PHP Québec vous invite à célébrez le 5ième anniversaires des légendaires PHP Beer.

Ce vendredi 1 Août, joignez vous à nous pour une autre légendaire édition de PHP Beer. Les PHP Beers sont un excellent moyen d'élargir votre réseaux et échanger sur divers sujet et peut être parler de PHP. Invitez vos amis collègues de travail à venir prendre un verre!

Venez nous y rejoindre vers 18:30 au Bar le St-Sulpice. Si vous ne nous trouvez pas vous pouvez contacter Yann Larrivée au 514-581-8497


Confirmer votre présence sur :
Upcoming : http://upcoming.yahoo.com/event/945161
FaceBook : http://www.facebook.com/editevent.php?guests&eid=19229919916


Ou : St-Sulpice
1680 Rue Saint-Denis, Quartier Latin
Montreal, Québec
Quand : 1 Août à 17:30


Événement avenir :
1 Août : PHP Beer Montreal
2 Août : BBQ PHP Québec
8 Août : Début de l'appel aux Conférenciers pour la conférence PHP Québec 2009
4 Septembre : Première rencontre mensuel de la saison 2009
12-14 Septembre : CodeFest 2.2

======================

The PHP Quebec team invites you to celebrate the 5th aniversary of the legendary PHP Beers!

This friday join us for a pint or two at the St-Sulpice. PHP Beers are a great way to do networking, meet with peers talk about random topics and maybe about PHP. Invite your friends, co-workers to have a pint with us.

We will be meeting a 6:30pm at the St-Sulpice. If you don't find us you can contact Yann Larriveé by calling 514-581-8497

Please confirm your presence on:
Upcoming : http://upcoming.yahoo.com/event/945161
FaceBook : http://www.facebook.com/editevent.php?guests&eid=19229919916

Where : St-Sulpice
1680 Rue Saint-Denis, Quartier Latin
Montreal, Québec
When : 1 Août à 17:30

Events to come:
August 1st : PHP Beer Montreal
August 2sc : BBQ PHP Québec
August 8th : Début de l'appel aux Conférenciers pour la conférence PHP Québec 2009
September 4th : Première rencontre mensuel de la saison 2009
Septembre 12-14th : CodeFest 2.2
Categories

Juillet 2008 – Nexen.net: Actualité de développement PECL, edition 209

Image pour le titre du contenu
5 paquets ont été mis à jour cette semaine :

  • en pecl_http (0 visite) : support étendu de HTTP

  • en oci8 (0 visite) : fonctions OCI8

  • en timezonedb (0 visite) : base de données de fuseaux horaires pour PHP

  • en amfext (0 visite) : extension ActionScript Message Format

  • en sphinx (0 visite) : extension pour sphinx, le moteur de recherche


PECL est la bibliothèque d'extensions C de PHP.