Technique

Quelle est mon IP publique ?

mardi 27 août 2013

Besoin d’outils de pour le développement web, comme de connaître l’adresse IP publique ou le user-agent qui est envoyé au serveur web: numeriforge.com/ip

Smarty {unserialize}

mardi 13 septembre 2011

SmartyPour désérialiser extraire, un tableau qui a été sérialisé dans une chaîne de caractère (string), il manque à Smarty la fonction {unserialize}

Heureusement il existe une astuce depuis Smarty 3:

Lire le reste de cet article »

Changer le user-agent de Chrome

samedi 13 novembre 2010

logo google chrome

Comme beaucoup de développeurs web, vous avez parfois besoin de faire passer votre navigateur pour un autre. Cela peut s’avérer très pratique pour simuler un site destiné à un iphone (webkit: le moteur de rendu de l’iphone est très proche de celui de chrome).
Pour cela vous avez le plugin User agent switcher. Mais si ce plugin fonctionne parfaitement sous Firefox, il ne semble pas fonctionner correctement sous Chrome.

Heureusement il existe une solution alternative à ce plugin

Lire le reste de cet article »

Récuperer ses mails dans le cache de Thunderbird

vendredi 15 janvier 2010

Logo ThunderbirdBonjour

Suite à la perte de mes mails sur le serveur de Free, j’ai réussi à en retrouver la quasi totalité grâce au cache de Thunderbird (le client de messagerie de Mozilla).

Voici la méthode :

  1. Aller dans Thunderbird et créer un dossier « Récupération » dans les « Dossiers Locaux »
  2. Quitter Thunderbird
  3. Aller dans le répertoire local de Thunderbird : ~/.thunderbird/********.default
    (sous Windows, c’est quelque chose comme :
    %AppData%\Thunderbird\Profiles\********.default )
    (sous Mac OS X, c’est quelque chose comme :
    ~/Library/Thunderbird/Profiles/xxxxxxxx.default )
  4. Copiez le fichier : ImapMail/imap.free.fr/INBOX
    dans le fichier : Mail/Local Folders/Récupération
  5. Relancez Thunderbird, et allez voir dans le dossier « Dossiers Locaux » -> « Récupération » qui contient maintenant une copie des mails qui étaient en cache.

J’espère que cette manipulation aura pu aider certains d’entre vous qui comme moi avez été victime de la perte de vos mails sur un serveur IMAP mal géré.

Serveur IMAP en place

mardi 12 janvier 2010

Voilà 6 mois que j’utilise mon adresse Free pour mes mails professionnel reportant sans cesse la mise en place de mon premier serveur de mail.

Mais Free m’a gentiment forcé la main après une interuption de service de 4 jours, et une perte temporaire (enfin j’espère, car pour le moment je n’ai toujours rien) de tous mes emails [1].

Toujours est-il que cet incident m’a poussé à prendre le taureau par les cornes. Ainsi c’est fait, mon premier serveur de mail est actif.

  • Connexion en IMAP avec les mails qui sont conservés sur le serveur
  • Connexion chiffrée en SSL uniquement (pas de connexion en clair)
  • Filtre antispam (light)
  • Backup quotidient
  • Webmail
  • 5 Go d’espace sur la baie SAN.

J’ai utilisé postfix pour la réception des mails, et courier-imap pour la connexion en IMAP. Enfin le webmail tourne sous roundcube.

L’installation c’est passée sans encombre, je pourrais bientôt proposer ce service aux clients de Numériforge.

Les commandes à retenir sous symfony

samedi 18 juillet 2009

Les initialisations

Les initialisations ne contiennent pas de paramètres, a part le nom des objets qui sont créés (projet, appli, module)

Générer un projet

$ ./symfony init-project room-on-line

Générer une application

$ ./symfony init-app accountancy

Avec symfony, un projet peut contenir plusieurs applications. Dans cet exemple j’ai créé une application de facturation nommée : accountancy

Générer un module

$ ./symfony init-module accountancy customer
$ ./symfony propel-generate-crud accountancy customer Customer

Les applications contiennes à leur tour des modules. Ici j’ai ajouté le module client (customer), dans l’application de facturation (accountancy)

La seconde ligne permet de générer les actions de lecture et de modification de la base. Je ne comprends pas pourquoi elles ne sont pas faites systématiquement comme en rails…

Le modèle de données

Ici j’utiliserai propel.

Éditer le modèle de données

Il faut éditer le fichier : config/schema.yml

propel:
customer:
id:            ~
pays_id: { type: integer, foreignTable: customer, foreignReference: id}
name:         { type: varchar(255), required: true }
shortname:    { type: varchar(255) }
adress:       { type: varchar(255) }
zipcode:      { type: varchar(5)   }
city:         { type: varchar(255) }
phone:        { type: varchar(15)  }
booking:
id:            ~
customer_id:   ~
date:         { type: date         }
valuation:
id:            ~
date:         { type: date         }
comment:      { type: longvarchar  }
invoice:
id:            ~
booking_id:    ~
customer_id:   ~
number:       { type: integer      }
paid_at:      { type: date         }
is_paid:      { type: boolean      }
is_cancelled: { type: boolean      }

Maintenant que le modèle de données à été édité, on va construire le modèle de données en fonction de ce fichier schema.yml.

Construire tout (les formulaires, le sql…)

$ ./symfony propel:build-all

Symfony est désormais prêt à utiliser ce modèle de données, mais il n’a pas encore appliqué le modèle à la base de données.

Injecter le code SQL dans la base de données

$ ./symfony propel:insert-sql

La base de données contient maintenant les tables du projet.

Générer des actions de test

$ ./symfony propel:generate-module accountancy customer Customer

Je viens de créer les actions CRUD (Create Read Update Delete) du module client (customer).

Ce module se trouve dans l’application accountancy, et stocke ses données dans la base Customer.

Vider le cache

$ ./symfony cc
Symfony génère énormément de fichier cache pour améliorer ses performances. Le problème c’est que ce cache doit régulièrement être vidé, notamment avant de faire un commit sur un serveur de source comme subversion.

Internationaliser

Générer ou mettre à jour un fichier de langue
$ ./symfony i18n:extract --auto-save --auto-delete accountancy fr
Mon fichier i18n français pour l’application accountancy a été regénéré avec les valeurs des templates.