Prendre un Café

L'espace d'expression de Nicolas Perriault

Aller au contenu | Aller au menu | Aller à la recherche

mardi 2 juin 2009

Utiliser les fonctions GeoIP de PHP sous Ubuntu

Mon Dieu, les billets techniques refleuriraient-ils au printemps ? Si vous désirez récupérer des informations géographiques à partir de l’adresse IP (ou du hostname) d’un utilisateur, vous pouvez utiliser les fonctions fournies par l’extension PECL GeoIP.

Voici la procédure d’installation sur une Ubuntu 8.04:

$ sudo -s
# apt-get install build-essential php5-dev php5-cli libgeoip-dev libgeoip1 php-pear
# pecl install geoip

Si toiut s’est bien passé :

# echo "extension=geoip.so" >> /etc/php5/cli/php.ini

Si vous utilisez Apache comme serveur :

# echo "extension=geoip.so" >> /etc/php5/apache2/php.ini

Il faut également installer la base GeoIPCity de Maxmind :

# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# gunzip GeoLiteCity.dat.gz
# mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

Vous pouvez maintenant tester l’extension avec une ligne du genre[1] :

$ echo "<?php var_dump(geoip_record_by_name('209.202.168.**'));"|php

Ça donne ici :

array(11) {  ["continent_code"]=>
  string(2) "NA"
  ["country_code"]=>
  string(2) "US"
  ["country_code3"]=>
  string(3) "USA"
  ["country_name"]=>
  string(13) "United States"
  ["region"]=>
  string(2) "NC"
  ["city"]=>
  string(4) "Cary"
  ["postal_code"]=>
  string(5) "27511"
  ["latitude"]=>
  float(35.7********)
  ["longitude"]=>
  float(-78.7*******)
  ["dma_code"]=>
  int(560)
  ["area_code"]=>
  int(919)
}

Enjoy.

Notes

[1] J’ai volontairement masqué certaines informations pour d’évidentes raisons de confidentialité.

vendredi 8 mai 2009

Installer Redmine sous Ubuntu

Redmine est un gestionnaire de projet technique exploitant Ruby on Rails et très inspiré de Trac, mais qui le dépasse fonctionnellement sur plusieurs points, notamment avec une gestion multiprojets qui fait cruellement défaut à son inspirateur. Voyons comment installer et déployer la dernière version de la branche stable (0.8) sur une Ubuntu Hardy Heron LTS[1].

(Redmine Screenshot)

Toutes les opérations décrites ci-dessous se font en root, mais libre à vous d’utiliser sudo à chaque fois, ou une fois pour toutes en lançant la commande sudo -s.

En préambule, on installe les quelques paquets qui nous seront nécessaires[2] :

# apt-get install build-essential ruby ruby1.8-dev rake libopenssl-ruby \
  libmysql-ruby apache2-threaded-dev subversion git

Maintenant, on récupère les sources de Redmine[3], qu’on va installer dans /opt :

# svn co http://redmine.rubyforge.org/svn/branches/0.8-stable /opt/redmine-0.8
# ln -s /opt/redmine-0.8 /opt/redmine

On va ajouter les sources de la version 2.1.2 de rails[4] dans le répertoire vendor de l’application, afin de cloisonner autant que possible l’environnement qu’elle exploite :

# cd /opt/redmine
# wget -O rails.tar.gz http://github.com/rails/rails/tarball/v2.1.2
# tar xvzf rails.tar.gz && rm rails.tar.gz
# mv railsXXX vendor/rails

Créez maintenant une base de données (MySQL ou autre) dédiée à Redmine. Une bonne pratique est de créer également un utilisateur MySQL aux droits restreints à sa seule exploitation.

Ensuite, éditez le fichier config/database.yml afin de modifier les paramètres de connexion à la base de données précédemment créée.

On installe maintenant une version récente de rubygems, ce qui nous permettra d’installer passenger, une sorte de mod_rails permettant de déployer facilement des applications rails sur un serveur Apache :

# wget http://rubyforge.org/frs/download.php/56228/rubygems-1.3.3.tar.gz
# tar xvzf rubygems-1.3.3.tar.gz && rm rubygems-1.3.3.tar.gz
# ruby setup.rb
# rm -r rubygems-1.3.3

Vous pouvez maintenant lancer la tâche de création des tables :

# rake db:migrate RAILS_ENV="production"

Et remplir la base avec quelques données par défaut :

# rake redmine:load_default_data RAILS_ENV="production"

On installe donc passenger, qui au passage vous posera quelques questions très simples :

# gem install passenger

On installe le module apache pour prendre en charge passenger :

# passenger-install-apache2-module

Pour mapper un domaine - par exemple mon.domaine.tld - vers votre instance Redmine, il faut d’abord créer un VirtualHost apache dédié, par exemple dans le fichier /etc/apache2/sites-available/redmine :

<VirtualHost *>
  SetEnv RAILS_ENV production
  ServerName mon.domaine.tld
  DocumentRoot /opt/redmine/public
</VirtualHost>

Vous noterez que la racine publique du vhost pointe vers le dossier public de l’instance Redmine précédemment installée. N’oubliez pas non plus de déclarer le domaine dans votre fichier /etc/hosts :

127.0.0.1 mon.domaine.tld

On active maintenant le vhost et on relance Apache :

# a2ensite redmine
# /etc/init.d/apache2 restart

Une dernière petite chose, vous devez autoriser Apache à lire et écrire dans certains répertoires de l’instance Redmine, comme suit :

# cd /opt/redmine
# chown -R www-data:www-data files log tmp
# chmod -R ug+rw files log tmp
# chmod -R o-rw files log tmp

Voila, vous devriez avoir une instance totalement fonctionnelle de Redmine, accessible par le domaine que vous avez configuré.

En cadeau Bonux, le support de GMail et TLS pour l’envoi d’emails

Si vous désirez configurer l’envoi des emails en utilisant un (ou votre) compte GMail[5], voici la procédure :

Installez tout d’abord le support de TLS pour ActiveMailer :

# cd /opt/redmine
# ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git

Puis éditez le fichier config/email.yml :

production:
  delivery_method: :smtp
  smtp_settings:
    tls: true
    address: "smtp.gmail.com"
    port: '587'
    domain: "smtp.gmail.com"
    authentication: :plain
    user_name: "votreadresse@gmail.com"
    password: "votremotdepasse"

Relancez Apache pour que la modification soit effective.

Edit : Prise en compte de certaines remarques faites en commentaires.

Notes

[1] C’est la version qui propulse mon serveur.

[2] Ce sont les paquets qui m’ont été nécessaires, sur ma machine ; n’hésitez pas à remonter d’éventuels manques en commentaires.

[3] On installe ici la dernière branche stable disponible à l’heure où sont écrites ces lignes, la 0.8.

[4] Oui, il y a plus récent, mais Redmine 0.8 est conçu pour tourner avec cette version : autant limiter les risques d’incompatibilités.

[5] L’intérêt principal à mes yeux reste l’archivage de tous les éléments envoyés.

lundi 23 février 2009

Non, je ne suis pas mort (†)

Trop silencieux, ce blog, ces derniers temps ? Qu’à cela ne tienne, une bonne connerie des familles un Mars®, et ça repart.

Si vous possédez un groupe de musiques approximatives et vous ne savez pas comment le prénommer, et encore moins où puiser l’inspiration pour produire le packaging de votre premier futur album à succès, qu’à cela ne tienne ; Henry Michel - en plus de connaître les mêmes affres que ma personne suite à un brutal sevrage tabagique et m’avoir provoqué quelques barres de rires récemment - a la solution : le Wikipedia Names Your Band™.

La recette est ma foi fort simple :

  1. Rendez-vous sur Wikipedia et choisissez un article au hasard : le titre de la page sélectionnée aléatoirement sera le nom de votre groupe - non, ne me remerciez pas ;
  2. Retenez les quatre ou cinq derniers mots de la dernière citation affichée sur Random Quotes ; vous venez de successfullement choisir le nom de votre album, avec une réelle inventivité : bravo ;
  3. Rendez-vous maintenant sur la page des photos les plus intéressantes de FlickR[1] et sauvegardez l’image de grande taille correspondant à la troisième image de la page, afin d’obtenir l’illustration de la pochette.

Vous avez maintenant tous les ingrédients pour créer votre pochette de disque. Chez moi ça donne ça :

Pochette CD

N’hésitez pas à proposer vos créations originales en commentaires, qu’on fasse ensemble un peu sauter la soupape (qui en a bien besoin me concernant).

Notes

[1] sic

vendredi 23 janvier 2009

Y'a photo

Comme certains l’ont sans doute constaté récemment, ce blog est très silencieux ces derniers temps. En effet, outre un travail qui m’accapre au quotidien, je me suis pris d’affection pour la photographie. Je me suis payé un reflex, un Canon 450D[1], dont je suis très satisfait pour le moment.

Un peu auparavant, J’avais tenté l’aventure du compact avancé sous la forme du Panasonic LX3, mais j’avais vraiment envie de quelque chose de très complet, tant au niveau des réglages que de l’ergonomie, et surtout la possibilité d’utiliser plusieurs types d’objectifs différents avec le même boitier. J’ai donc revendu le LX3 à Maurice et il semble qu’il a fasse depuis un excellent usage ;-)

Bref, je vous fait donc part de quelques clichés réalisé récemment avec cet appareil[2].

Notes

[1] Je me suis par ailleurs équipé d’un objectif 50mm f1/8 en plus du 18/55 livré en kit.

[2] Pour info, certains on été retouchés avec l’excellentissime Lightroom d’Adobe

Lire la suite...

dimanche 28 décembre 2008

QOTD

Quasiment tout le monde a peur de perdre son boulot et fait ce que demande l’actionnaire (produire plus, vendre plus…), même si chacun de nous commence à réaliser que notre société n’est pas durable. On le sait, il est beaucoup plus difficile d’expliquer quelque chose à quelqu’un s’il est payé pour ne pas le comprendre.

Tristan Nitot

Voila, tout est dit, rien à ajouter.

PS : Oui oui, le contenu intéressant revient bientôt sur ce blog.

PPS : Oups, j’ai oublié de fêter le quatrième anniversaire de ce blog. Alors bon anniversaire, blog.

mercredi 24 décembre 2008

Announcing the Guitar Tune Of The Day Weblog

I must admit it, I am a guitarist. Not a good one, but I like playing the instrument, and listening to good guitar players. So I’ve just opened a little blog, the Guitar Tune Of The Day blog which aims to present a song I like, every day if I can.

Oh, and happy end of year people.

mercredi 10 décembre 2008

QOTD

Je suis pas super fan des gros lieux communs faciles et généralistes, mais :

Ma conclusion de cette journée est qu’on ne peut pas laisser le web aux “entrepreneurs”, c’est pas possible.

Christian Fauré, à propos de "LeWeb" (sic)

En fait, ça serait totalement drôle si ce n’était pas aussi vrai, et triste.

Edit : Olivier a pas tort, on peut y adjoindre les consultants experts[1] autoproclamés. Désolé, je suis pas particulièrement politiquement correct ces derniers temps, ça doit être la fatigue.

Edit2 : Pfff, décidemment… On peut bien évidemment aussi ajouter les politiques (mais comment aie-je pu les oublier ?)

Notes

[1] Et en tant qu’ancien consultant, je sais particulièrement de quoi je parle, propulsé expert du jour au lendemain sans même une formation sur la techno…

jeudi 4 décembre 2008

Fayotage

[13:13:07] Glooze: hey, doctrine + sf, ca roxxe quand même :p
[13:13:29] NiKo: génial, tu peux faire un billet pour le dire steup ? :D
[13:13:48] Glooze: dès que j’aurai trouvé un pdf de la doc !
[13:13:54] NiKo: un pdf oO
[13:14:05] NiKo: tu connais pomme P -> PDF
[13:14:13] Glooze: Ouais mais non
[13:14:29] Glooze: j’suis pas sous mac tout le temps (notamment mon portable il est sous ubuntu)
[13:14:32] NiKo: ahhh ok môssieur veut un beau livre relié cuir, bien sûr
[13:14:39] NiKo: ben sous ubuntu c’est natif
[13:14:43] NiKo: imprimer -> pdf
[13:14:47] NiKo: depuis firefox
[13:14:50] Glooze: et pis surtout une doc sur 8 pages, ça me fait aller sur chaque et imprimer
[13:14:51] Glooze: :o
[13:14:59] Glooze: Alors une doc plus grosse :p
[13:15:30] NiKo: si tu fais pas de billet, je faillote sur mon blog en faisant un gros copier coller de cette discussion
[13:15:32] NiKo: </menace>
[13:15:36] Glooze: Y a eu des tas de changements (en mieux d’ailleurs) pour la 1.2, donc mon definitive guide (acheté môssieur) il est plus trop utile :p
[13:15:44] Glooze: Mais vas-y, faillote !
[13:15:47] NiKo: ça marche

- page 1 de 70