jul is a nolife

To content | To menu | To search

Keyword - Google

Entries feed - Comments feed

Friday, April 6 2007

Rails vite fait : empêcher les bots de créer des sessions

Quand le traffic d'un site augmente; il y a fort à parier que googlebot, msnbot et d'autres viennent y jeter un coup d'oeil. Le problème est que ces bots ne connaissent pas les cookies, et font générer une nouvelle session à rails à chacune de leurs visites. Ce qui peut vite devenir un cauchemar pour le répertoire tmp/sessions.

Pour éviter cela, on peut empêcher les bots de créer une session, il suffit de déterminer si le visiteur est un bot et de désactiver les sessions. Dans le contrôleur :


 session :off, 
  :if => Proc.new { |request| request.user_agent =~ /(Baidu|Gigabot|Googlebot|Exabot|QihooBot|crawler|Crawler|Spider|Nutch|psbot|Seekbot|MJ12bot|IRLbot|libwww-perl|lwp-trivial|msnbot|SiteUptime|Slurp|WordPress|ZIBB|ZyBorg)/i }

Il s'agit bien sur d'une liste non exhaustive des bots existants. Vous pouvez en trouver d'autres en étudiant un peu les logs de votre site.

Source (en) : http://gurge.com/blog/2007/01/08/turn-off-rails-sessions-for-robots/

Thursday, May 18 2006

Application de Google Maps

Google propose aux développeurs une API très pratique pour son Google Maps . J’en ai fait une application pratique et professionnelle pour les éditions O’Reilly .

L’idée était de permettre aux visiteurs et éventuels lecteurs de trouver rapidement et facilement les libraires ayant un livre donné autour de chez eux.

Par exemple, les Nancéens pourront facilement trouver VoIP à 200% chez leurs libraires locaux!

Ce système, utilisant notre base interne, propose une probabilité de la présence d’un livre chez un libraire.

Le principal problème de l’API Google Maps et qu’il ne permet pas de placer une position sur une carte directement à partir d’une adresse . Il faut donc déterminer par nos propres moyens les latitudes/longitudes des endroits que l’ont veut placer. Bien qu’il existe un outil pour faire cela simplement quand il s’agit d’adresses américaines, c’est une autre paire de manches pour nous européens.

Dans un premier temps, il nous a fallu déterminer les positions de chacun des libraires avec qui nous travaillons, puis j’ai du convertir des positions des communes de la Poste qui étaient dans le système de projection Lambert II vers le système de Google (gws84).

J’ai fait cette conversion relativement facilement grâce au logiciel open source Proj4 . Vous comprendrez le “relativement” en voyant la commande qui permet cela:

cs2cs -f '%.3f' +proj=lcc +lat_0=46.8 +lat_1=45.898918 +lat_2=47.696014 +lon_0=2.3372291 \ 
+k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +ellps=clrk80 \
+towgs84=-168,-60,320,0,0,0,0 +to +proj=latlong +datum=WGS84 +ellps=WGS84 +no_defs -s

Cette commande prennant les x,y des coordonnées Lambert II dans le pipe unix et retournant les coordonnées pour google.

Un second problème et la compatibilité des navigateurs. Avec firefox, aucun problème, on peut coder comme on le sent. Pour ceux voulant permettre une compatibilité avec IE, il faudra y penser dès le départ et adapter le code en conséquence.

Pour le reste, l’API Google Maps reste simplissime d’utilisation et configurable au plus haut point: icones des points et des ombres personnalisées, choix des contrôleurs dans l’interface ou encore récupération des événements de l’utilisateur.