Plus loin avec le sfDoctrineGuardPlugin : performances et astuce

Doctrine 1.2, Développement, PHP, Performances, Symfony, Symfony 1.4 Aucun commentaire

Nous aborderons dans cet article 2 thèmes :

Lire la suite de ce post »

Petits astuces pratiques avec Symfony (1.4)

Développement, PHP, Symfony 1.4 Aucun commentaire

Durant le développement complet d’un projet, on rencontre forcément quelques bonnes astuces à conserver pour le futur.
Voici quelques-unes d’entre elles.
Lire la suite de ce post »

Symfony : méfiez-vous des chemins relatifs

Développement, PHP, Symfony, Symfony 1.4 Aucun commentaire

Il se trouve que le client pour lequel j’ai travaillé a une configuration d’Apache un peu particulière, qui est constituée de 2 Apaches avec du reverse proxy et tutti quanti.

Du coup, le site Symfony n’a pas son propre virtualhost exposé directement sur le Web : on ne tape pas http://monsitesymfony.com pour y accéder mais http://apps.monentreprise.com/monsitesymfony/, car ils mutualisent leurs applications.

Conséquence : deux ou trois choses ne fonctionnaient pas du 1er coup concernant les uploads et prévisualisation des fichiers uploadés ou encore l’image d’un datepicker.

Pour s’affranchir de ce genre de problème, je vous conseille de toujours faire un passe de test sans utiliser le virtualhost, mais plutôt http://votreserveur/votresite/web/, de façon à détecter ce genre de problème.

Lire la suite de ce post »

Logs des requêtes Doctrine, comment les activer/désactiver ?

Doctrine 1.2, PHP, Symfony, Symfony 1.4 Aucun commentaire

Je cherchais l’information pour activer les logs des requêtes Doctrine lorsque je l’utilisais au travers d’une tâche, et non d’un module Symfony.
En fait c’est simple, il suffit juste de trouver soi-même l’information !

Dans l’ordre de priorité, Doctrine s’appuye d’abord sur un paramètre logging dans le database.yml, et s’il ne le trouve pas, il s’appuye sur la valeur du logging_enabled dans le settings.yml de votre application.

Toute l’information se trouve dans sfDoctrineDatabase qui instancie un profiler sfDoctrineConnectionProfiler.

database.yml :

dev:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn:      mysql:host=...;dbname=...
      username: ...
      password: ...
      logging: true

settings.yml :

dev:
  logging_enabled: false

Cache Doctrine avec SQLite

Doctrine 1.2, PHP, Symfony, Symfony 1.4 Aucun commentaire

Doctrine propose de stocker en cache soit la requête DQL compilée (évite de générer la requête SQL à chaque appel)  ou bien carrément le résultat de la requête (évite de faire travailler la BDD + échanges réseau).

L’implémentation permet de se brancher sur n’importe quelle système de stockage : Memcache, APC, base de données, fichier, session, mémoire, choisissez celui qui vous convient.
Lire la suite de ce post »

Installer Xdebug avec XAMPP

Développement, PHP, Xdebug Aucun commentaire

Un petit post pour expliquer l’installation de Xdebug avec Xampp.
C’est une choses très simple grâce à l’utilitaire PECL.
Pour info, le cas présent se fait sous Ubuntu 9.10 32 bits.
Mon installation de Xampp a été faite dans /opt/lampp.

1. Il faut installer Xampp (ma version est la 1.7.3a)
2. Il faut également installer le “Kit de développement” de Xampp (même version…)
3. Lancer la commande suivante :

sudo pecl install xdebug

Et hop, la librairie Xdebug est compilée !!
En gros, là, vous en êtes au même point que si vous aviez télécharger la DLL de Xdebug sous Windows, sauf que c’est un .so et non un .dll.

Le fichier compilé a été déposé dans “/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so”.

4. Ensuite, il faut dire à PHP que ce fichier existe ! Ca se passe dans le php.ini (j’utilise l’éditeur geany) :

sudo geany /opt/lampp/etc/php.ini

et ajouter les lignes

zend_extension="/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000

Voilà, c’est le minimum syndical, mais l’essentiel pour pouvoir faire du debugging pas à pas dans eclipse ou netbeans.

Un article intéressant à ce sujet : http://wiki.netbeans.org/HowToConfigureXDebug

MySQL Workbench – Astuce

MySQL, Workbench Aucun commentaire

MySQL Workbench est un outil génial permettant de créer un modèle physique de données d’un base MySQL.

Etant en pleine phase de conception et rédaction de spécifications fonctionnelles détaillées sur un projet, je l’utilise intensément. (c’est d’ailleurs pour ça que je ne publie plus trop d’articles ces derniers temps, je suis à fond sur les SFD).

Voici une petite astuce dans ce logiciel, suite à un problème rencontré…
Lire la suite de ce post »

Question du jour…

PHP Aucun commentaire

Qu’affiche le script suivant ?

$foo = array(true, '0'=>;false, true=>;false);
var_dump($foo[0]);

Réponse :
boolean false

Qu’est qu’une attaque “Session Fixation” ?

PHP, Sécurité Aucun commentaire

Description

Cette attaque vise à usurper l’identité d’un utilisateur connecté, en lui imposant un ID de session. Pourquoi ?
Lire la suite de ce post »

Petit rappel de la division euclidienne et utilisation du modulus en PHP

Développement Aucun commentaire

Wikipédia nous rappel le théorème de la division euclidienne pour des entiers positifs :

“Pour tous entiers a et b positifs, avec b non nul, il existe un unique couple d’entiers q et r tel que la relation a=bq+r soit vérifiée, et tel que r soit compris entre 0 et a-1 au sens large. L’entier q est appelé quotient de la division de a par b, et l’entier r reste de cette division.”

En PHP et en programmation en général, il est courant d’utiliser la valeur du reste de la division euclidienne pour déterminer si un nombre est divisible par un autre, notamment pour savoir s’il est pair ou impair (divisible par 2) :

a = b*2 + r, a est divisible par 2 si le reste r vaut 0.

Le script PHP suivant vous aidera à faire vos petits essais :

$b=2;
for ($a=1;$a<=10;$a++)
{
    echo "\n[a = bq+r, 0 < r <= a-1] (a=$a, b=$b => q=".(int)($a / $b)."r=".($a % $b).") => ".$a .' = '.$b.'*'.(int)($a / $b).' + '.($a % $b);
}
Icons by N.Design Studio. Designed By Ben Swift. Powered by WordPress, Search Optimization and Free WordPress Themes
Entries RSS Comments RSS Log in