Liste des articles pour l'auteur : Hubert

postheadericon Build your own dynamic DNS with GANDI API

Recently as I wanted to move from Adsl to optical fiber, I had to change my ISP.
Unfortunately, my new ISP does not provide a static IP as the old one did.

So I had to figure out how to keep a few things working with an dynamic ip address:
- I host a few web sites
- I use OpenDNS as parental filter
- On a distant site, I use the source IP address on the firewall for NAT translation

In this article, I will speak about detecting the change of the IP address and how to update it in the domain name registrar: Gandi.

Lire la suite...

postheadericon Tracer le temps de connexion des utilisateurs via Google Analytics

Il m'a été demandé récemment, dans le cadre du développement d'une interface d'administration, d'envoyer quotidiennement un email de reporting.

Cet email devait contenir, entre autres, pour chacun des utilisateurs connectés, le temps effectivement passé sur le site.

Il m'a semblé alors intéressant d'utiliser Google Analytics car il est capable de calculer cette information de manière relativement précise.

Trois étapes sont nécessaires :
- mettre en place une variable personnalisée (Google Analytics) pour extraire les données spécifique à un utilisateur donné
- Se connecter à Google Analytics en Php
- Récupérer le temps de connexion lié à la variable personnalisée précédemment mise en place.

Lire la suite...

postheadericon Symfony Form utilisation avancée des Validateurs

Dans le cadre d'un projet Symfony, je me suis heurté à une problématique d'apparence simple : l'utilisateur doit pouvoir changer ses informations personnelles, dont son mot de passe.

La difficulté est apparue au moment de mettre en place les validateurs de formulaire.

Lire la suite...

postheadericon Doctrine 2 et Zend Framework

Fidèle utilisateur de doctrine depuis plusieurs années, j'ai réussi à l'imposer dans mon entreprise en tant que 'best practice' dans le développement Php au quotidien.

La grande majorité de nos projets sont fait en Zend Frameork (ZF), principalement pour l'utilisation de ZendAmf. Nous avons donc logiquement utilisé Doctrine en complément de ZF.

Avec l'avènement de Doctrine 2, nous nous intéressons au changement Doctrine 1.x vers Doctrine 2.

Lire la suite...

postheadericon Doctrine - cohérence du charset

Sur un projet professionnel, j'ai été confronté à deux erreurs qui m'ont donné beaucoup de fil à retordre et je souhaite, ici, faire un retour d'expérience à ce sujet.

Contexte

Il s'agit d'un environnement ZendFramework couplé à Doctrine.
Plus précisément, on se trouve dans un service ZendAmf.
Le service en question expose une méthode permettant de changer son mot de passe.
Pour changer le mot de passe, j'utilise le code suivant :

$user = Doctrine::getTable('User')->findOneByEmail($email);
$user->password = $newPassword;
$user->save();

Et là, c'est le drame : le serveur MySQL me renvoi l'erreur suivante :
SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

Lire la suite...

postheadericon Synology : régénération d'un certificat SSL

NAS Synology 409+

Suite à la mise à jour de mon Synology avec le dernier firmware, le certificat SSL du NAS a disparu.
Je décris ci dessous les différentes étapes nécessaires à la re-génération d'un certificat SSL.

Lire la suite...

postheadericon Linux : ls amélioré

En ligne de commande sous linux, comment faire pour lister les dossier avec leur poids respectifs ?
En effet, la commande ls -l ne me donne que le poids des fichiers.
D'un autre côté, la commande du ne me donne que le poids d'un répertoire donné.

du --si --max-depth=1 ./

donnera la liste des répertoires du dossier courant avec leur poids respectifs.

Lire la suite...

postheadericon Flush DNS

Afin de vider le cache DNS d'un mac sous OSX on utilisera la commande :

dscacheutil -flushcache

L'équivalent sous windows serait :
ipconfig /flushdns

postheadericon Symfony : enlever index.php au début des urls

Dans symfony, le controller est le point d'entrée d'une application (du site).
De fait toutes les URLS sont de la forme http://mon_contolleur.php/mon_url

Afin de rendre les urls un peu plus sexy, on voudrait bien retirer mon_controlleur.php pour avoir juste http://mon_url

Rien de plus simple : dans le fichier apps/frontend/config/settings.yml, on ajoute

prod:
  .settings:
    no_script_name:   true

postheadericon MySQL : modification de l'encodage de la connexion

Il arrive malheureusement trop souvent que l'on doive traiter avec des bases de données qui ne sont pas encodées en UTF8.
Et lorsque l'on souhaite récupérer les données, on se retrouve avec plein de caractères bizarres comme : é en lieu et place des caractères accentués (é dans le cas présent).

Un remède consiste à modifier l'encodage de la connexion au serveur MySql :

SET NAMES 'latin1';

Lire la suite...