Archives pour la catégorie ‘Développement’

Coral, un CDN gratuit pour votre site

Par Maxime, le 2 juillet 2010.

CDN est l’abréviation couramment utilisée pour Content Delivery Network, ce qui signifie en bon français Réseau de distribution de contenus. En clair, il s’agit d’un réseau d’ordinateurs dédiés à délivrer du contenu statique, à l’inverse du contenu généré dynamiquement par un site en fonction de sa base de données ou de l’utilisateur identifié.

Les fichiers mis à disposition sur un CDN sont en général les images d’un site, ses fichiers JavaScript, ses feuilles de style. L’avantage est double : D’une part ça soulage le serveur qui préfère occuper son temps à générer des pages dynamiques plus rapidement, d’autre part les CDN sont souvent géolocalisés et l’utilisateur récupère les fichiers sur le serveur le plus proche de chez lui, diminuant le temps de réponse global du site.

L’inconvénient est unique : Ça coûte cher. Mais une solution gratuite existe.

logo.jpg

CoralCDN se veut être la solution de CDN pour tous les gens qui ont envie de réduire leur trafic (très limité dans le cas d’un hébergement mutualisé par exemple) et d’accélérer le chargement de leurs pages, mais qui n’en ont pas les moyens.

Le système CoralCDN est on ne peut plus simple : Il suffit d’ajouter .nyud.net au nom de domaine dans l’adresse du fichier que l’on souhaite mettre en cache sur CoralCDN, et le tour est joué.

Exemple :

http://ootweet.com/images/ootweet.png

devenant…

http://ootweet.com.nyud.net/images/ootweet.png

… le fichier est automatiquement répliqué sur tous les serveurs de CoralCDN.

map-world-gen-1.png
260 serveurs à travers le monde. C’est mieux qu’une Dédibox à Bezons.

Vous l’aurez compris, pour l’utiliser sur votre site vous n’avez vraiment pas grand chose à modifier, alors autant en profiter si vous avez des problèmes pour boucler votre bande passante en fin de mois. Encore mieux, si vous êtes sur WordPress, vous n’avez qu’un plugin à installer pour profiter de CoralCDN dès maintenant :)

A noter que selon la FAQ, la taille des fichiers transférés sur le CDN est limitée à 50 Mo, pas besoin de tenter de mettre vos DivX en cache.

Une utilisation détournée mais néanmoins intéressante pour tous ceux qui travaillent derrière un proxy : Les domaines créés grâce à CoralCDN et son .nyud.net échappent la plupart du temps aux filtres de contrôle. Ainsi, si VDM est bloqué à votre boulot par exemple, vous pouvez vous y rendre en tapant l’URL suivante :

http://www.viedemerde.fr.nyud.net

A noter que ce proxy de fortune fonctionne sur les ports 80, 8080 et 8090.

Si vous tombez souvent sur des filtrages en visitant vos sites préférés, vous pouvez installer le bookmarklet Coralize (glissez-le dans votre barre personnelle) et cliquez dessus dès que le monstre proxy tentera une attaque sur votre humble personne.

Voilà pour l’astuce du jour mes petits pandas, je vais maintenant me plonger dans un bain de glaçons pendant que Friedrich joue avec le ventilateur.

Bookmarklet – Tout aimer sur Facebook

Par Maxime, le 17 juin 2010.

Hier, Facebook a ajouté la possibilité d’aimer les commentaires postés par les gens sur son site. Après avoir transformé la fonction « Devenir fan », c’est encore une nouvelle possibilité d’aimer, de s’aimer, vive l’amour sur Facebook.

you-like-this-facebook-t-shirt-1.jpg

Alors, c’est très bien de pouvoir aimer plein de choses, j’ai tant d’amour à donner. Mais si peu de temps pour une tâche répétitive ! Attendez… Un être humain, faire une tâche répétitive ? Autant laisser le Javascript s’en occuper pour moi.

C’est pourquoi j’ai créé ces bookmarklets dont l’unique fonction est de tout aimer sur Facebook. Trêve de blablas, la sauce est ici :

Pour installer ces bookmarklets, il suffit de les glisser dans votre barre de signets. Une fois sur une page de Facebook, cliquez dessus et vous aimerez tout en quelques secondes (il y a une sorte d’anti-flood Javascript sur Facebook à détourner).

L’énorme avantage quand vous aimez quelque chose est que votre nom ainsi qu’un lien vers votre profil apparaissent en dessous des éléments. Un excellent moyen d’améliorer son personal branding et de gagner beaucoup d’amis !

A vous la gloire. On dit merci qui mes petits pandas ?

Sauvegarder son Gmail grâce à Linux

Par Maxime, le 16 juin 2010.

Comme beaucoup de gens autour de moi, je suis parano de la sauvegarde. Certains le sont de naissance, d’autres parce qu’ils ont perdu beaucoup de données un jour (DTC !)… J’ai vécu les deux, et même avec Gmail (compte piraté il y a quelques années).

Pour mes e-mails, j’ai pendant très longtemps utilisé gmail-backup, qui faisait tout ce qu’on lui demandait de faire en voyant son nom. Seulement Gmail a mis à jour ses serveurs IMAP il y a peu de temps, rendant inutilisable gmail-backup.

Les serveurs IMAP de Gmail possédaient un bug depuis leur lancement. En récupérant les e-mails via IMAP par la méthode traditionnelle (RFC822), les e-mails n’étaient pas marqués comme lus. Cependant la RFC précise qu’ils devraient l’être. Ce bug a été corrigé il y a quelques semaines, et j’ai eu le bonheur de voir mes nouveaux e-mails marqués comme lus du jour au lendemain :)

3a45.png

Le script n’étant pas open-source et la dernière version datant d’il y a environ un an, je pense qu’il est raisonnable de penser que le développement de gmail-backup est mort. J’ai donc dû trouver un remplaçant.

Ce remplaçant s’appelle getmail. Au premier abord, drôle de remplaçant, puisqu’il est connu pour utiliser la RFC822. Son créateur maintient cependant que c’est lui qui a raison et non Google dans cette histoire d’e-mails marqués comme lus. Qu’à cela ne tienne, contrairement à gmail-backup, getmail est open-source, il suffit de modifier la récupération des e-mails et le problème est résolu.

Voici donc une longue introduction pour un petit tutorial sur comment sauvegarder votre Gmail sous Linux.

Télécharger et modifier getmail

A la main

A vrai dire c’est assez simple. Téléchargez tout d’abord les sources de getmail. Il faut jeter ensuite un oeil dans getmailcore/_retrieverbases.py pour y faire une modification. Trouvez la ligne suivante :

return self._getmsgpartbyid(msgid, '(RFC822)')

C’est cette fameuse RFC822 qui nous fait chier et qui met les e-mails téléchargés comme lus automatiquement. Remplacez-la par une commande PEEK :

return self._getmsgpartbyid(msgid, '(BODY.PEEK[])')

Vous vivrez ainsi heureux.

Paresseux

Vous vivrez tout aussi heureux en prenant ma version déjà modifiée.

Installer getmail

L’installation se fait ensuite comme à peu près tous les logiciels Python, à savoir avec deux lignes de commande dans la racine des sources getmail :

python setup.py build
python setup.py install

Configurer getmail

Maintenant que getmail est modifié et installé, il faut créer le fichier de configuration qui va indiquer à getmail quoi prendre et où prendre. Commencez par créer un dossier .getmail dans votre répertoire utilisateur, ainsi qu’un répertoire gmail et son fichier mbox pour stocker la sauvegarde.

mkdir ~/.getmail
mkdir ~/gmail
touch ~/gmail/gmail-backup.mbox

Dans ce répertoire, créons un fichier de configuration, appelé au hasard getmail.gmail, qui contiendra les informations suivantes :

[retriever]
type = SimpleIMAPSSLRetriever
server = imap.gmail.com
username = /* Votre e-mail Gmail */
password = /* Votre mot de passe Gmail */
mailboxes = ("[Gmail]/All Mail",)

[destination]
type = Mboxrd
path = ~/gmail/gmail-backup.mbox

[options]
read_all = false
verbose = 2
message_log = ~/.getmail/gmail.log

Remplacez évidemment username et password (je le dis quand même, on ne sait jamais).

Sauvegarder !

L’utilisation de l’IMAP permet de tout télécharger en une fois lors de la première synchronisation. Avec du POP Gmail permet de ne récupérer que 500 e-mails à la fois environ.

Pour faire une première sauvegarde intégrale, tapez la commande suivante (prévoyez un café si vous avez beaucoup d’e-mails) :

/usr/bin/getmail -la -r getmail.gmail

Si cette première récupération s’est déroulée sans accrocs, vous pouvez mettre la commande suivante dans un crontab, qui va récupérer uniquement les nouveaux mails sur votre compte :

/usr/bin/getmail -ln -r getmail.gmail

Et voilà, vous n’aurez plus à craindre un tremblement de terre qui ferait imploser tous les datacenters de Google. Vos e-mails sont tous chez vous, et vous pouvez continuer à utiliser l’interface si pratique de Gmail en toute sécurité.

PS : Evidemment cela peut s’adapter à à peu près n’importe quel fournisseur de courrier électronique. J’ai titré Gmail car le patch de getmail était nécessaire pour que ça fonctionne en particulier avec le service de Google.

Twitter : La fin d’un modèle

Par Maxime, le 10 avril 2010.

Cette nuit aura été marqué par un tweet, puis un communiqué de presse : Twitter rachète Tweetie 2. Les conséquences de ce rachat sont simples, de prime abord : Le client devient gratuit (actuellement à 2,39 euros) et sera renommé Twitter for iPhone.

twitter_logo.jpg

Si la nouvelle pouvait se faire attendre, suite au développement d’un premier client officiel pour BlackBerry, elle va sûrement choquer beaucoup de développeurs de clients Twitter autour du monde, et nous n’avons pas fini d’en entendre parler. Pourtant, mes petits pandas, il va falloir vous y habituer : La fête est finie :)

A dire vrai, Echofon, Tweetdeck et consorts n’ont pas de soucis à se faire. S’ils sont intelligents ils devaient se douter que ça arriverait tôt ou tard. On ne lève pas 100 millions de dollars en laissant s’échapper 70 % de son trafic monétisable. Nous avons eu le problème de notre côté avec FML, la version anglaise de VDM, c’est pourquoi j’ai décidé d’en parler un peu aujourd’hui.

mss2.png

En effet, FMyLife est particulièrement populaire aux Etats-Unis comme vous le savez. Mais il l’est spécialement sur appareils mobiles, et a fortiori sur iPhone où nous comptabilisons près de la moitié de notre trafic global. C’est donc bien beau de paraître utopiste et de laisser tout le monde gagner de l’argent en faisant des applications payantes ou financées par la publicité, mais on ne pouvait pas se permettre d’en perdre pour que les autres en gagnent, à un moment on n’est pas Mère Térésa SARL.

C’est pourquoi en Décembre dernier nous étions passés sur une API fermée (cf. TechCrunch) où seulement les applications que nous choisissons ont un accès à notre contenu et à l’API en général. De cette manière nous avons sorti des clients officiels gratuits, financés par la publicité, tout comme le site Internet, et avons pu garder la main sur notre trafic et notre monétisation, tout en laissant libre cours aux développeurs la création d’applications non-concurrentes.

En conclusion, les applications Twitter existantes se devront d’innover et de créer de la valeur ajoutée au lieu de réinventer la roue du client Twitter.

9fs9.png

Ainsi je pense que dans les prochains mois, nous allons assister à l’ajout de nouvelles conditions dans l’API de Twitter. Elle ne deviendra sûrement jamais une API fermée, cependant l’apparition d’applications officielles (et de leur monétisation qui va avec, le marché de la publicité mobile étant très juteux) va couper l’herbe sous le pied aux applications qui n’auront aucune valeur ajoutée par rapport à l’application officielle.

Twitter pourra conserver son avance dans le monde des applications grâce à des fonctionnalités API utilisables uniquement par leurs applications officielles, ainsi que le fait de savoir d’avance les prochaines évolutions du service de microblogging et d’adapter leurs développements en conséquence (les comptes payants me viennent tout de suite à l’esprit).

Enfin, concernant Tweetie 2 for Mac (qui n’est pas concernée par le rachat, contrairement à ce qu’on peut lire sur le NY Times ou dans certains autres blogs — lisez le vrai communiqué), Loren Brichter nous annonce que le développement est toujours « en cours ». Je sens qu’on va avoir du mal à avoir une version non-bêta rapidement (cf. N’achetez pas Tweetie).

Faille SQL : LoL Guru, je LIKE.

Par Maxime, le 29 mars 2010.

Aujourd’hui a été annoncé en grandes pompes (…) le nouveau site du groupe PlayWeb, dirigé de main de maître par Romain Casolari (on sent que c’est le même, vu les sites), alias Chauffeur de Buzz, j’ai nommé LoL Guru. Le nom fait déjà frémir, cependant la description vaut le détour :

Bienvenue sur mon site, je suis LoL Guru ®, né le 21 décembre 1891, je suis considéré comme le Gourou du Divertissement !!! Je blogue, mets à jour ce site depuis le début du XXe siècle pour partager avec vous les news, photos, vidéos, sites Internet, jeux et coloriages en ligne, prochaines et dernières sorties de DVD, jeux vidéo, logiciels, applications, …

Amusez-vous bien LOL

Moi quand on me propose de m’amuser, je dis jamais non.

Mais… J’ai des loisirs un peu différents.

En tant que développeur, le backoffice d’un site si énorme m’intriguait. Je l’imaginais déjà rempli d’algorithmes, une interface à la Minority Report pour taper plus vite que son ombre, de l’autocompletion en AJAX en veux-tu en voilà…

akaa.png
Paie ta déception.

Ouais bon, on repassera. Je vous reprends encore quelques minutes de votre temps, mes petits pandas, pour vous expliquer comment j’en suis arrivé là.

Il ne faut pas très longtemps, même pour un con comme moi, pour trouver l’adresse de l’administration du site. En effet, un aller simple sur http://fr.lolguru.com/admin/connexion.asp nous laissait apparaître un joli formulaire d’identification.

Ayant peu d’espoir mais ne pouvant repartir sans avoir testé, je me lance et écris une apostrophe comme identifiant, ainsi qu’en mot de passe. Je m’attendais à me faire rejeter bien comme il faut, avec une alerte automatique au GIGN. Quand je vois simplement l’erreur suivante :

[Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans la chaîne dans l’expression "login like ’’’ and password like ’’’".

Je n’ai donc pas pu accéder à l’administration du site. Cependant deux points m’intriguent :

  • L’utilisation de la syntaxe SQL LIKE pour l’identification autorise le wildcard %. Très dangereux pour un système d’identification.
  • Mes apostrophes n’ont en plus pas été échappées par un antislash, ce qui a provoqué l’erreur SQL. Très très dangereux…

L’idée de mettre le wildcard % comme identifiant ainsi que mot de passe rendrait donc la requête SQL suivante : login like ‘%’ and password like ‘%’, ce qui sélectionnerait donc n’importe quel identifiant stocké dans la base. Et effectivement, j’ai été identifié comme administrateur (voir capture d’écran ci-dessus).

axcv.png
Faut toujours deux preuves.

Ne cherchez plus à aller sur cette page, elle a été supprimée / renommée depuis. Encore mes talents de prestidigitateur.

Pour résumer, voici 4 erreurs à ne pas reproduire sur votre site :

  • Ne pas utiliser la syntaxe SQL LIKE en dehors de cas très particuliers (comme la recherche dans une table).
  • Ne pas afficher les erreurs SQL lorsque son site est en production (ou au moins, pas les requêtes complètes…).
  • Ne pas oublier d’échapper les données injectées dans une requêtes.
  • Eviter d’avoir un répertoire administration avec un nom évident si on n’est pas sûr de sa sécurité.

Si vous ne savez pas protéger correctement votre administration et que vous êtes sur Apache, vous pouvez tout aussi bien utiliser la méthode de la protection par .htaccess/.htpasswd.

Au-delà de cette faille, j’ai été surpris par l’austérité de ce backoffice. Rempli de cases austères tel un formulaire de l’administration pénitencière, avec des couleurs hasardeuses et des fautes d’orthographe, ça ne donne pas vraiment envie de travailler et produire du contenu.

Et vous, est-ce que l’administration de votre blog/site est agréable ? Est-ce que ça a de l’importance pour vous ?