Geolocalisation

avr 11 2010 Published by admin under programmation

Il y a longtemps que je voulais jouer avec la Geolocalisation, j’ai donc monté ce mini-site afin de tester différentes méthodes de géolocalisation:

  • geoIP: librairie PHP
  • Google Maps v3: aucune magie ici (pas de la geolocalisation), mais il y a possibilité d’utiliser les fonctionnalité GPS de l’équipement. Le « sensor » GPS n’est pas utilisé sur mon site, mais google Maps est utilisé de 2 façons:
    • pour ajuster les résultats des autre méthodes de géolocalisation (la « pin » est déplaçable)
    • comme méthode par défaut: un outils de recherche à la google Maps (en extrêmement simple simple simple) est offert
  • Google Gears
  • la geolocalisation des navigateurs « qui ont de l’allure » (firefox, safari) (navigator.geolocation.getCurrentPosition()). Lire https://mozillalabs.com/blog/2008/10/introducing-geode/ pour plus d’info sur l’implémentation dans firefox
  • Google Ajax API: en plus d’avoir accès à pleins de fonctionalités comme Google Maps, Feeds, Search, Earth, google Friends, etc… cette API permet aussi faire de la localisation  (merci à Marc Grabanski)

En plus, j’ai utilisé 2 API « géolocalisées »:

Vous pouvez assayer le tout l’URL suivante: http://geo.fruitsoftware.com/

Amusez-vous!

One response so far

Merci Symfony

avr 11 2010 Published by admin under programmation

Il était une fois…

IL était une fois une équipe qui réalisa un site web pour un client. Tout se passa normalement au cours du développement.
Mais un jour, alors que nous devions mettre sur le serveur du client, nous apprîmes (oui, oui! apprîmes) que:

  • le serveur du client était en fait 2 serveurs,
  • ces 2 serveurs étaient « load-balancés » (pas de » sticky-tcpip » possible)
  • la gestion des sessions PHP était « basique » (file)
  • nous n’avions pas la possibilité de changer la configuration des 2 serveurs (pour utiliser memcached par exemple) ou du « load-balancer »

(je vous passe les détails de mauvaises communications entre les équipes techniques en jeu…)

Horreur!

Qu’allons-nous devenir?

Que faisons-nous?

OMG!

Heureusement…

…tel le petit poucet qui avait pris soin de mettre des pierres dans ses poches, nous avions développé notre site avec le framework Symfony (1.4).

Il est possible de changer très facilement la manière dont sont sauvegardées les sessions PHP avec Symfony, grâce au fichier factories.yml.

Il n’a donc pas fallu plus que 30 minutes pour changer la manière de gérer les sessions!

Merci à…

Notes

  1. Oui, je sais, j’ai mis un « S » majuscule à « Symfony », c’est pour m’habituer.
  2. « … et à la fin, ils firent pleins de projets Symfony. »

One response so far

Symfony 2.0 – Notes

mar 06 2010 Published by admin under programmation

Some thoughts about Symfony 2. I didn’t play with the sandbox yet, I just read the doc and browse the code (a little bit). So more to come…

routing « inheritence »

One main routing file that can include to other routing files

# hello/config/routing.yml
homepage:
  pattern:  /
  defaults: { _bundle: WebBundle, _controller: Default, _action: index }

hello:
  resource: HelloBundle/Resources/config/routing.yml

Components are actions, yeah!!

Everything is an action, and you can include an action into a template. That’s great, no need to define an action that just include a component (when you need some ajax but the first load is not ajax)

Generating Links

The generate() method takes the route name and an array of values as arguments.

Mmm, I hope there is another way to generate a route, using the controller name and action name (like the old « url_for »…). I think it’s part of the « kill the magic » cleanup…

Assets and links to images, css, js…

<img src="<?php echo $view->assets->getUrl('images/logo.png') ?>" />

You will be able to change the URL root path of your web app without breaking any links. I love it, but HTML integrators will complain… But I like it… and they will (have to?) live with that.

« imports » directive in Configuration file: cleaner configuration files!

#in config_prod.yml
imports:
  - { resource: config.yml }

No responses yet