nyroBlog
Ban NyroBlog, by Nyro
Image by Nyro - ?

Tag: Programmation


Orange/LaPoste, même combat ?

J'étais tranquillement en train de rédiger un rapport pour l'UTBM, que je reçois un mail sur mon compte laposte.net. Une pub indiquant que le webmail a changé, qu'il est super bien, etc...

Comme je suis curieux, je clique bêtement pour arriver sur un site très pauvre en contenu : simplement 3 vidéos, de quoi les partager, et un lien vers un autre site expliquant ce qui est nouveau. Les vidéos sont un temps soit peu rigolotes, mais longues à charger (traverser l'Atlantique n'est pas une chose aisée apparemment).

Après visionnage tant bien que mal des 3 vidéos (oui, je n'ai pas grand chose à faire aujourd'hui), je regarde le site explicatif des nouveautés. Là encore, très peu de contenu : une vidéo présentant rapidement les nouveautés et une FAQ, vraissemblablement reprise du site laposte.net, puisqu'on y retrouve la question : "Comment paramétrer Outlook ?"

Mais dès la 1ère image du webmail, j'ai une sensation de déjà vue. La façon dont sont affiché les listings me rappellent étrangement un autre mail, mais je ne vois pas tout de suite lequel. Et puis à la dernière diapo, celui des préférences, ça me revient : il s'agit du webmail d'Orange.

Ni une ni deux, je me connecte sur les 2 webmails pour faire la comparaison. Aucun doute, il s'agit bel et bien du même webmail.
Préférences du webmail Orange Préférences du webmail Laposte
(Cliquez pour agrandir)

Dans ma lancée, je vais regarder du côté des sources javascript et CSS de laposte, pour en être totalement sûr. Il est tout à fait possible que ce webmail soit une application payante ou bien fourni par un quelconque service. Mais non, voici quelques extraits de ce que j'ai trouvé :

var ORANGE_EMAIL = "LaPoste.Net";
function SmsInbox()
{
 self.location = "http://r.wanadoo.fr/r/WGsmsrecus";
}

Et puis du côté des CSS, j'ai trouvé ceci, tout en tête de la principale feuille de style :

/* Recommandations pour les modifications ATOS en phase d'integration Next
   Indiquer les modifications par :
   ATOS - DEBUT MODIF
   ATOS - FIN MODIF
  + mettre en commentaire l'ancienne ligne */

Et à regarder dans la CSS, on ne trouve que 3 endroits avec ce genre de commentaires. Sans doute la raison pour laquelle les 2 webmails sont si proches.

Mais alors pourquoi tout ça ?

  1. Le coût : La Poste a toujours cherché à promouvoir son outil de messagerie car peu utilisé et donc non rentable. L'installation du webmail Orange par une entreprise tierce est une bonne affaire.
  2. Orange gagne donc de la pub "gratuite". En échange, le webmail affiche de nombreuses pubs pour Orange en haut et à droite.
  3. Les services mobiles. Les options d'alertes SMS et autres fonctionnalités mobiles sont pour l'instant non disponibles. C'est à tous les coups Orange qui va s'occuper de ça et gagner encore quelques sous de plus.

Et au final, je pense que la poste ne gagnera pas grand chose, ni grand monde. Le webmail bien que plus avancé que celui d'avant est selon moins très mauvais d'un point de vue ergonomique. L'affichage des pubs ralentit gravement l'affichage des pages, qui se rechargent d'ailleurs à chaque clique. Pas d'ajax pour recharger les pages ce qui gagnerait du temps. Forcément, il faut bien rafraichir les pubs.

L'email envoyé et leur campagne de pub m'avait l'air sympa et avec un bon budget derrière. Les 2 sites m'ont totalement déçu, avec aucun réel contenu.

De tout façon, quand David Asher arrivera avec la version 3 de Thunderbird et tout un tas de nouvelles idées, adieux les webmails...

jQuery : coup de boost dans le développement

J'en parlai dans mon dernier billet, jQuery UI ne se développait pas ou on entendait pas du tout parler...

Cela va changer puisque le développeur principal de jQuery, Paul Bakaus, vient de se faire embaucher par Liferay pour développer jQuey UI et plus généralement jQuery afin d'utiliser cette librairie dans les produits qu'ils vendent.

Donc il va bien y avoir une personne qui va travailler à temps plein sur jQuery, de quoi avancer le projet à grands pas !

Plus qu'à attendre les premiers résultats de cette nouvelle.

Pantacourt et T-shirt

Un peu de nouvelles de Los Angeles, brut de pomme :

  • Fluidesign a déménagé depuis le début d'année. Nouvelle adresse, suivez le lien. Vue sur l'océan depuis la salle de réunion, grande classe pour commencer la semaine. Dans le même immeuble, deux étages plus bas, on trouve le fameux Habbo
  • J'en ai profité pour déménager pour ne pas me taper une heure ou plus de bus le soir... 10 minutes de bus pour aller au boulot, un peu moins pour la plage.
  • Fluidesign a ouvert son blog au grand public. Pas trop d'activité dessus, mais il est là quand même. Je n'aime pas du tout le graphisme, le précédent était plus sympa. Damned Designer!
  • Stage terminé depuis une semaine, je rempile pour 6 mois de plus chez Fluidesign avec énormément de boulot en ce moment.
  • le DUT SRC de Montbéliard fêtait ses 10 ans aujourd'hui à l'occasion de la journée des anciens, dommage que je sois à l'autre bout du monde. Rendez-vous pour les 15 ans !
  • Aujourd'hui peut-être promenade de 3 heures le long de la plage comme au premier jour. Pantacourt et T-shirt était de rigueur (d'où le titre du billet, juste pour narguer les lecteurs français qui sont dans le froid et que je vais rejoindre)
  • Retour en France pour 2 semaines vendredi prochain. Au programme : gala de gym dès l'arrivée, rendez-vous à l'ambassade pour obtenir un nouveau visa, soirées avec les amis, repas avec la famille, soutenance de stage, et encore plein d'autres choses.

Un peu de news logiciels, web, brut de pomme aussi :

  • jQuery sort en version 1.2.2; au menu 300% plus rapide pour la sélection d'éléments, fonctions au chargement de la page se font après le chargement des CSS, possibilité d'indiqué quel Mime-Type on veut lors d'une requête ajax, le scroll de la souris est maintenant gérer très facilement par un tout nouveau plugin. A quand des nouveautés dans jQuery UI ?
  • TinyMce sort sa version 3 en Release Candidate 2. Sortie prévue de la finale à la fin du mois. A mon avis elle n'arrivera qu'à la mi-février
  • Filezilla ajoute quelques fonctionnalités demandés : éditer les fichiers locaux par un clic droit > editer le fichier. Une nouvelle fonctionnalité absoluement démentiel a fait son apparition : la synchronisation entre les dossiers locaux et distants, avec retour visuel pour savoir si les fichiers ne sont présents que d'un côtés ou différent. Vous entrez dans un dossier d'un côté, l'autre se met à jour automatiquement. Un gain de temps énorme. Il me manque toujours une fonction indispensable pour moi : la configuration du double-clic. Après demande sur le forum, le développeur, botg, ne veut pas l'implanté car il considère que Filezilla n'est pas un explorateur de fichiers... Si vous voulez testez, pensez à mon convertisseur automatique et cmplet de config.
  • Veille info, mais je n'en avais pas parlé, et cela me tiens à coeur : Prism est un dernier né des labos de Mozilla et permet de mettre vos applis web dans une petite appli, différent de Firefox. Il utilise le moteur de Firefox 3, et est toujours en version beta. D'après ce que j'ai lu ici et là, la prochaine version ne saurait tardé. Je vois en Prism un moyen facile pour faire utiliser le moteur de Firefox à ses clients, et pourquoi pas proposer des administrations en XUL ?
  • Encore une vieille info : Android, la plateforme de l'open handset alliance issue du travail de google et open-source. 1er téléphone prévue pour la mi 2008, vraissemblablent un HTC.
  • Apple a sorti son MacBook Air : écran 13' qui rentre dans une enveloppe. Ok c'est super, tout petit et beau comme les autres produits Apple, mais c'est bien trop cher selon moi : 1699€. Autant s'acheter un macBook Pro pour 200€ de plus...

MySQL : Multiples tris et sous-requêtes

Un petit truc en MySQL qui j'en suis sûr servira à plus d'un.

Pour California Apparel News, cela fait plusieurs fois que j'utilise cette technique qui marche à merveille.

Le problème est le suivant : Comment récupérer les 10 derniers ajouts d'une table mais triés par ordre alphabétique ?

La solution qui vient tout de suite à l'esprit est :

SELECT * FROM table ORDER BY date DESC, titre ASC LIMIT 0,10

On récupère bien les 10 derniers résultats, mais ils ne sont en aucun cas triés par ordre alphabétique. En effet, le tri se fait d'abord sur la date dans l'ordre décroissant, puis sur le titre. Le tri sur le titre ne sera effectif que si on a des éléments à la même date. Un exemple de ce qui pourrait sortir de cette requête est :

  • 11/01/2008 - Il fait beau à Los Angeles
  • 09/01/2008 - Nuageux mais pas froid à LA
  • 03/01/2008 - Il pleut à Los Angeles
  • 03/01/2008 - Tempête sur Los Angeles

(Bon que 4 résultats, je ne me souviens pas d'autres choses niveau météo ici)

On a les bons résultats, mais pas triés correctement. Alors c'est sûr, on pourrait écrire une fonction PHP pour trier les résultats et c'est bouclé. Mais une fonction de tri n'est jamais évidente à écrire et trier dès la requête augmentera les performances.

La solution est d'utiliser une sous-requête dans la clause FORM; la sous-requête récupèrera les 10 derniers résultats, la requête principal les triera par ordre alphabétique. La requête complète :

SELECT * FROM (SELECT * FROM table ORDER BY date DESC LIMIT 0,10) AS subSelect ORDER BY titre ASC

Noter le AS subSelect qui est indispensable, comme indiquée dans la doc.

Le résultat sera :

  • 11/01/2008 - Il fait beau à Los Angeles
  • 03/01/2008 - Il pleut à Los Angeles
  • 09/01/2008 - Nuageux mais pas froid à LA
  • 03/01/2008 - Tempête sur Los Angeles

La différence entre les 2 résultats est minime, mais vous avez compris !

Nous voilà donc avec nos résultats tout bien trié comme on le voulait !

J'ai utilisé ça à 2 endroits :

En espérant que vous aurez l'occasion d'utiliser cette petite technique qui gagne du temps.

Tutoriel : Transférer son site

Comme j'ai transférer mes 2 sites la semaine dernière, le sujet est tout chaud pour moi.

Avant de m'atteler à la tâche, j'ai chercher un petit tuto comme celui-ci, qui m'aurait permis de noter tous les points à ne pas oublier. Comme je n'ai pas trouver, je l'écris pour qu'un tel article existe !

Introduction

Commençons par poser le problème, histoire que tout le monde comprenne de quoi on parle.
Lorsqu'on veut publier un site internet sur la toile, on a besoin de 2 choses : un nom de domaine et un espace disque (serveur ou simple hébergement. Le terme serveur sera utilisé par la suite) dans lequel on stockera les fichiers du site.

Le nom de domaine est l'adresse avec laquelle vous accéder au site internet; nyrodev.info pour ce blog par exemple. Ce nom de domaine doit diriger votre visiteur sur vers votre serveur pour ainsi accéder au fichier. Votre serveur est accessible avec une addresse IP unique sur la toile. La liaison entre le nom de domaine se fait grâce aux DNS. Les DNS sont des ordinateurs sur la toile que n'importe qui peut interroger pour connaître l'adresse IP attribué à un nom de domaine.

Le serveur est là où sont stockés vos fichiers. Il s'agit ni plus ni moins que d'un ordinateur avec des logiciels spéciaux d'installés. Un serveur peut contenir plusieurs sites. Ce qui veut dire que plusieurs noms de domaines pointeront sur ce même serveur. L'affichage des bons fichiers se fera par le biais d'un panel de logiciel bien paramétrer pour chaque site. Cette partie ne sera pas traité dans ce billet. Dans la plupart des cas, les serveurs dédiés proposent des outils d'administration qui configure automatiquement tous ces logiciels serveurs pour vous à la création d'un nouveau site.

Notre but est de changer de serveur. Nous devrons donc transférer les fichiers du site (images, pages html, etc...), les base de données éventuelles et bien plus encore. Au final, nous changerons l'adresse IP sur laquelle point le nom de domaine pour utiliser le nouveau serveur.

Voyons donc quelles actions doivent être réaliser et dans quel ordre pour que tout se passe bien, en perdant un minimum de visiteurs durant le transfert.

Dans la suite du billet :
  • domaine.com : le nom de domaine à transférer
  • Serveur A : ancien serveur, sur lequel le nom de domaine pointe actuellement
  • Serveur B : nouveau serveur

1. Préparer le terrain

La première étape de ce transfert est de préparer le serveur B à recevoir le nouveau site. Créer le site dans votre administration afin de lui allouer un espace. Vous pouvez lui attribuer tout de suite domaine.com, ce sera toujours ça de gagner, avec les paramétrages des serveurs de mail, de FTP, etc... Cela ne pose pas problèmes[1] puisque domaine.com pointe toujours sur l'ancien serveur.

Ensuite, vous pouvez créer tous vos emails et redirection d'emails que vous avez sur le serveur A de façon à ne perdre aucun email. Pour les base de données, créez simplement les base de données sans les tables, cette partie fera l'objet d'une autre partie.

2. Transférer les fichiers

A ce stade là, vous pouvez transférer vos fichiers statiques. Ne transférer pas dès maintenant les fichiers uploadés par les visiteurs car le site est encore accessible, et donc des uploads peuvent encore avoir lieu.

Si vous avez un accès en SSH sur votre serveur A, pourquoi ne pas créer une archive tar.gz pour tout regrouper dans un seul fichier compressé, pour gagner du temps ?
Déplacer vous dans votre répertoire contenant vos fichiers, et pour créer l'archive :
tar cvzf dossier.tar.gz dossier
Récupérer ce fichier par FTP, et transférer le sur le serveur B, sur lequel vous devrez aussi avoir un accès SSH. Dans le dossier où vous avez uploadé cette archive, décompressez vos fichiers :
tar xvzf dossier.tar.gz
Ces fichiers contiendront peut-être des configurations pour accéder à la base de donnée, des fichiers .htaccess avec des répertoires absolus, etc... Autant de configurations qui seront sans doute différent sur le nouveau serveur. Modifier les maintenant.

Si vous n'avez par accès en SSH, rapatriez simplement tous vos fichier par votre FTP normalement. Vous pouvez faire les changements de configurations avant de les transférer.

De plus, pensez aux droits des dossiers dans lesquels vos scripts écrivent vos fichiers.

A ce stade là, vous devez avoir votre site prêt à fonctionner, en ajoutant simplement vos bases de données.

3. Fermeture temporaire du site

Pour être sûr de ne perdre aucune donnée durant le transfert, nous allons empêché complètement l'accès au site sur le serveur A, avant de transférer tous les fichiers dynamiques et les base de données.

Nous allons fermer la totalité du site avec un simple fichier .htaccess, interdisant tout et redirigeant sur une simple page texte pour dire que le site déménage. Le fichier .htaccess est :
Deny from all

    Allow from all

ErrorDocument 403 http://www.domain.com/transfert.php
Et créer votre fichier transfert.php qui explique que c'est temporaire et ne devrait pas durer plus de 24h.

4. Transfert des derniers éléments

Une fois le site fermé, vous pouvez transférer vos fichiers dynamiques, uploadés par vos utilisateurs. Vous pouvez être sûr qu'il n'y en aura plus de nouveaux.

Passons au transfert de la base de donnée.

Si vous n'avez pas d'accès à SSH, utilisez simplement phpMyAdmin pour exporter votre base sur le serveur A et l'importer dans le serveur B.

Mais si vous accès en SSH, il est préférable de procéder différemment pour 2 raisons : l'export de phpMyAdmin est parfois buggé, et si votre base de donnée est trop grosse, phpMyAdmin donnera des erreurs dues au timeout du PHP.

Donc nous avons besoin ici de deux ligne de commandes. La première pour exporter dans un fichier texte :
mysqldump --host=localhost --user=LOGIN --password=PASSE --add-drop-table NOMBASE > base.sql
Transférer ensuite le fichier base.sql sur le serveur B, et exécutez cette commande :
mysql -h localhost -u LOGIN --password=PASSE BASE < base.sql
Votre site doit maintenant être totalement opérationnel sur le serveur B. Si vous pouvez, un petit test ne fera pas de mal, pour être bien sûr.

5. Modifier le DNS

Enfin, il ne vous reste plus qu'à effectuer les modifications de votre nom de domaine pour qu'il pointe sur le serveur B, en modifiant l'adresse IP des DNS de ce dernier. Et puis patienter pour tester si tout est ok. Pour teste plus rapidement si tous vos paramètres sont bons et si tout se passe bien, je vous conseille fortement d'utiliser les serveur DNS d'Open DNS sur votre ordinateur (et pourquoi pas les garder par la suite ?). L'avantage d'Open DNS est qu'ils sont très rapide à se mettre à jour, et que vous pouvez le forcer à rafraîchir son cache. Faites-le donc pour votre site 15 à 20 minutes après avoir effectuer vos changements.

S'ils pointent sur la nouvelle IP, rafraichissez les DNS de votre ordinateur. Pour Windows: Démarrez > Exécuter > cmd. Puis la ligne de commande :
ipconfig /flushdns

Et tester dans votre navigateur préférer pour voir si tout est bon, ce qui est devrait être le cas.

Durant les jours qui suivent, vous devrez récupérer des emails sur les deux serveurs, en attendant que les DNS soient à jour partout.

Voilà, j'espère que ce tutoriel vous sera utile. Bien sûr il existe différentes méthodes à chaque étape. J'ai simplement présenter celles que j'ai utiliser et qui ont marcher parfaitement pour moi.
Si vous avez des remarques, questions, feedbacks, les commentaires sont là pour ça !

Merci à Niko qui m'a conseillé lors de mes transferts.

[1] : Le seul problème qu'il peut y avoir (et qui m'est arrivé) et si sur le serveur B, vous avez d'autres sites qui envoient des mails sur domaine.com. En effet, le serveur ne perdra pas de temps à l'envoyer à l'extérieur, puisque pour lui, ce nom de domaine lui appartient. Ce n'est un problème que si on ne le sait pas. Comme vous allez au final récupérer vos emails sur ce serveur, vous les aurez quoiqu'il arrive plus tard. Un petit webmail pour vérifier tout ça durant le transfert et tout est bon.

English Version of this post