2+2=5, le blog d'un mec génial

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

lundi, août 25 2008

Même le Dimanche après-midi, Python est ton ami

Le Velib c'est bien, juste que sur des trajets habituels on a souvent genre beaucoup de mal à trouver une station qui a plus de 2 vélos. C'est à dire contenant juste un vélo cassé et ... un autre vélo cassé.

L'idée était d'utilise l'API REST du site Velib pour en faire une interface pour les téléphones sous Symbian S60. On mémorise le numéros des stations où l'on va souvent, et il va utiliser la connexion GPRS/3G du téléphone pour récupérer le nombre de vélos libres des stations enregistrées et l'afficher à l'écran. Et ce de n'importe où.

Exemple :

-- Portes de Vanves (14024) --
        Available : 17
        Free : 5

-- Guynemer (6009) --
        Available : 7
        Free : 27

-- Rue Alesia (14028) --
        Available : 7
        Free : 40

FBI WARNING : Explicit programming content following !! May be not suitable for people who like classic literacy !!

Le léger problème fut que l'API du système Velib retourne du XML et que pour faire du parsage XML sous PyS60 (c'est à dire Python 2.2.2, *vieux*) il faut utiliser cElementTree, et c'est un peu bourrin. Du coup j'ai codé un petit parseur XML tout pourri (en 33 lignes de code) mais qui permet de reconstituer l'arbre DOM du document.

Exemple avec l'option Debug activée :

XML DEF MATCH : <?xml version="1.0" encoding="UTF-8"?>
NODE : <station>
NODE :   <available>
TEXT : 17
END NODE : </available>
NODE :   <free>
TEXT : 5
END NODE : </free>
NODE :   <total>
TEXT : 24
END NODE : </total>
NODE :   <ticket>
TEXT : 1
END NODE : </ticket>
END NODE : </station>
{'station': {'available': '17', 'ticket': '1', 'total': '24', 'free': '5'}}
-- Portes de Vanves (14024) --
        Available : 17
        Free : 5

Là on voit le XML se faire parser à fur et à mesure et le dictionnaire représentant l'arbre DOM constitué.

Par contre, le code est tout moche. Le parseur doit pas marcher très très bien en dehors de ces documents là (notamment il ne connait pas les attributs et plein d'autres trucs, alors les xmlns n'en parlez pas hein!).

Code source : http://projects.robertlan.eu.org/ve... (login : anonymous/pas de mot de passe)

mercredi, juillet 23 2008

Une Orange. Et avec ça je vous met ? ...

... ah désolé, je ne rends pas la monnaie ! Mais comme vous êtes une bonne cliente, ça ira cette fois ci ! Et vos petits-enfants ? L'aîné est toujours en CAP camionnerie ?

Round 0 : le commencement

Tout commença un beau jour de Juin. Brutalement l'idée se jeta sur moi (c'est dingue comment une idée ça peut être violent, méfiez vous). Je devais changer de forfait. Il se trouva qu'en fait, Ten fermant ses portes, c'était ça où je perdais mon numéro. Vu que mon numéro, c'est un nombre premier, j'avais pas trop envie de le perdre voyez vous. C'est pas tout les jours qu'on a un nombre premier comme numéro de téléphone !

Génial, ni une ni deux, portabilité entrante choisie, numéro temporaire, un contrat de la taille des rouleaux de la Torah, avec la littérature kivabien qui vous explique oh combien Orange sailémeilleurs, queséquevousavezbienféd'allerchénou.

Deux personnes analysant minutieusement un contrat de chez Orange

Bienvenue donc dans le merveilleux monde d'Orange, celui où le ciel est bleu azur, où les oiseaux chantent, et où les lutins dansent autour du feu le soir venu. Hahahahaha ... quel naïf ... hahahahahahahaha !

Round 1 : la portabilité

Demandée le 31 mars, annoncée pour le 7 juin avec 10 juin dernier délai. Mais c'est merveilleux. Surtout quand le 10 juin rien ne se passe. Coup de téléphone toussa : "ah bah on va le faire". Rien. Ah si, ils m'ont dit qu'ils ont fait une demande à la cellule de portabilité, mais qu'il était impossible de leur téléphoner ou leur faxer quoi que ce soit. Genre ils habitent dans un bunker ou dans un couvent (voire les deux), sans aucune autre communication avec l'extérieur que des pigeons voyageurs leur apportant les ordres de portabilité.

La solution ? Envahir l'agence.

Là, le but est simple : amener le conseiller à faire en sorte d'appeler la hotline de chez eux, comme ça, c'est pas toi qui paye et tu peux attendre autant que tu veux.

Au bout d'une heure de communication, un type dit : "je comprend rien, ça devrait pas faire comme ça, tout est cassé, on répare ça et on vous appelle".

Owi !

Round 2 : on m'appelle

Eh non, toujours pas porté. Par contre Orange me fit un énorme cadeau. On était la dernière semaine de juin. Ce fut un jour béni ! Rendez-vous compte que la cellule de portabilité m'a appelé directement !!! OMG !!!!!!! Oui ! Je ne veux surtout pas voir la tête de mon karma ce jour-ci, ce serait indécent !

  • Voila, mon portage est toujours pas effectif, du coup je suis obligé d'avoir en permanence deux téléphones, mes pantalons en souffrent, et si il y a bien une chose que je déteste au monde, c'est de faire souffrir mes poches de pantalon. Donc, au nom de mes pantalons, PITIÉ AIDEZ MOI !!
  • Oui, alors, je vais vous refaire le dossier, attendez sept à dix jours ! Aucun problème, tout marchera nickelement bien, vous n'aurez plus de problème ! Cette fois ça marche !

Maintenant je vais vous apprendre un truc : c'est le décodage des phrases des techniciens Orange. Il se trouve que par un mystère étrange dû à des mutations génétiques provoquées par l'excès de punch frelaté offert par le comité d'entreprise, leur mesure de la réalité s'en trouve quelque peu affectée. Quand ils vous disent "Cette fois ça marche !", traduisez, "Ça devrait marcher si ce jour là vous aurez la chance de tomber sur un jour où 90% du personnel n'est pas tombé dans un coma éthylique profond".

Round 3 : rien

Apparemment, une conduite de gaz a du un peu fuir dans leurs locaux. On est le 11/07. J'appelle leur hotline.

  • Oui, voilà, le 1er juin on m'a dit que je serai porté le 7, et on est plus d'un mois après, et toujours rien. Donc j'en ai marre, personne peut me joindre c'est une horreur. Vous pouvez me dire à quelle adresse je peux envoyer mon tueur à gages ?
  • Euh, on va peut-être pas en arriver là hein, ce serait dommage !
  • Oui, surtout qu'un tueur à gages, ça coûte cher !

Bilan, quelques jours après, j'ai été porté. Morale : si vous n'arrivez pas à quelque chose, PENSEZ TUEUR À GAGES !!

Tonçonneuse portage

Round 4 : Monsieur, c'est quoi ce bout de jambon moisi qui traîne sur ma ligne de téléphone ? Nettoyez moi ça, je vous en prie !

Armé de mon super numéro, je me sens un autre homme, je me sens tout bien dans mon corps, tellement que même Superman il se sent comme ça quand il sauve les gentils. Tellement que je décide de profiter de mon génial forfait internet illimité pour m'envoyer 3/4 photos par mail pour les envoyer sur Facebook sans attendre de rentrer chez moi (que c'est beau la technologie, on peut être nolife en sortant de chez soi !).

Mais ... pourquoi j'ai 15€ de hors forfait ? ET CA MONTE !! Tout passe en hors forfait (sauf la hotline) ! Mais ... pourquoi quand je vais sur Orange World ça me redirige vers le portail moisi de chez Ten tellement qu'il est moisi qu'il se déplace tout seul ?

*GNIIIIIIIIIIIII*

  • Oui, alors voila, [blablablablablabla]
  • Vous pouvez me donner votre numéro de téléphone ?
  • Mais bien sûr, c'est le 06-machin-bidule-truc
  • Euh, vous avez bien dit 06-machin-bidule-truc ?
  • Oui !
  • Ah non Monsieur, ce numéro ne peut pas exister ! C'est impossible, Monsieur !
  • Euh, je vous appelle avec, et je reçois des appels ! Il marche !
  • Ah non Monsieur, c'est impossible !

Nokia : "To be or not to be THAT is the question"

Ils se rendent pas compte chez Orange que lancer une phrase comme ça, c'est un coup pour lancer les téléphones dans une quête métaphysique de leur existence. Le mien s'est arrêté à "Je téléphone donc je suis", coup de chance, ça a pas trop blessé son petit processeur.

Round 5 : Enfin un Mossieu sérieux

Vu cette sublime réussite, il fallait bien rappeler quelques jours plus tard.

  • Alors, oui, votre problème c'est que la personne savait pas vraiment comment faire ! (traduction: vous êtes tombé sur un attardé du bulbe, mais vous êtes vraiment un sale demeuré d'avoir eu l'idée d'appeler un samedi alors, même mon chat il sait qu'il faut pas et pourtant mon chat il est pas finaud ! mais là vous êtes tombés sur le beau gosse d'Orange, félicitations ! vais vous résoudre ça en deux cuillères à pot que même John Doe il va rien comprendre)
  • Ah ! (ça c'est pour faire un subtile retour à la ligne)
  • Alors, vous avez reçu un SMS pendant le portage ?
  • Oui, il disait "Bienvenue chez Orange France"
  • [fou rire du conseiller] (faut penser à la ressortir celle là) En fait c'est pas sensé dire ça ! C'est sensé dire échec.

Et là il m'annonça une chose qui a boulversé ma vie :

  • En fait je vais vous annoncer que votre dossier est géré par une chaîne de soutien de portabilité !

QUEL HONNEUR ! Une chaîne de soutien de portabilité !! Vous savez j'ai rien fait hein ! Je ne mérite pas tant !

Une chaîne de portabilité

Comme le disait une certaine personne qui se reconnaîtera : "méchants oranges" :)

lundi, juin 23 2008

Au secouuuurs, le mossieu il a les cheveux verts !

Dimanche 22 juin 2008. Un doux soir d'été, où un ciel majorelle se mariait à la brise soufflant légèrement sur les douces joues du métro qui freina brusquement en crissant des pneus (haha, ça casse bien l'ambiance hein ?).

Non en fait, on va pas y aller par quatre chemins, comme je sais que les personnes qui étaient avec moi ne lisent jamais ce blog (le reste non plus d'ailleurs :) ), je peux me permettre de fracasser au burin sans regarder la priorité à droite.

Une soirée toussa comme ça (que c'est qu'elle était très bien en plus - ça c'est pour montrer que ce qui est ici c'est du second degré ou saipaforcémenvraisépourrirepatapé pour les plus conspour ceux qui auraient pas compris), qui accompagnait forcément des concerts. Hors, il n'y a rien de plus drôle qu'un concert. Absolument rien.

Un groupe arrive. De la musique reggae. Rien à dire c'était super sympa. En plus, il est fortement distrayant de voir une demi-douzaine de personnes imiter avec une grande précision la pendule comtoise.

Han, comment le métronome y danse bien !

Un autre groupe arrive. Mais là. C'était l'apothéose. Le mossieu qui chante, il arrive, il a les cheveux verts. Genre, j'imagine bien le dialogue :

Mossieu aux cheveux verts. Eh, j'ai eu une super idée en finissant mon flambi tout à l'heure, et si je me tentais les cheveux en bleu !

Un ami du mossieu aux cheveux verts. Ah ouaiiii !! C'est trop in ! Ça fait le trop rebelle qui est trop rebellé ! LOL ! En plus ça fait trop la classe, les filles elles adorent les mecs rebellés qu'ils expriment leur tristesse de leur petit coeur fondant !!! [1]

M. T'as trop raison ! Et puis le bleu ça fait trop beauuuu ! C'est la couleur de l'espérance et tout !! Et l'espoir saitrobien !! (vous m'en mettrez 1kg, oui ce sera tout, vous rendez la monnaie ?)

U. Euh nan ! C'est le vert ! En plus c'est trop vrai, c'est Monsieur Jean qui l'a dit, et il a toujours raison Monsieur Jean.

M. Ah bah vert alors ! En plus mon papa il a une bombe de vert pour ses jantes en alu comme ça, rien à payer, ça fait trop rebelle ! Tu viens, on va au square !

U. Nan, jpeux pas, tu sais bien, j'ai mon cours d'échasses !

Ce qui est bien et ce qui est mal

Encore, ça, bon. Ça peut passer. Nan. Le pire. C'est que quand on est comme ça, on fait gaffe. Surtout quand on a un concert à jouer. Parce que le chanteur en question a amorcé une crise d'épilepsie sur scène. Devant tous ces gens qui ne faisaient RIEN pour l'aider !! Mais c'est non assistance à personne en danger ! Chais pas, donnez lui ses gouttes, mais faites quelque chose !! Il commence à gesticuler de plus en plus il va se blesser le pauvre, déjà qu'il a assez de malheurs comme ça !!

On a toujours pas su dans quelle langue il chantait, les paris sont ouverts. Peut-être serait il un alien qui tenterait de nous faire passer un message ?! Mais mais ... JE LE SAVAIS !!!

Notes

[1] C'est vrai, ya rien de plus injuste que d'avoir la possibilité d'étudier au Lycée Montaigne, saivrai, on est trop tristes :'( , chais pas yen a qui ont de la chance, ils sont nés dans le 16° quoi et qui ont un forfait Neo que moi j'ai que SMS illimités soirs et week-end, je suis le plus triste des hommes, vais le clamer sur tous les toits que mon petit coeur il est tout brisé.

dimanche, juin 22 2008

HOUSTON ON EN TIENS UN !!!!!!

Si c'est pas du beau ça !!!

vendredi, juin 20 2008

Reconstitution du crime

Vous savez ce genre de machins, qui s'annonçent sans problèmes, bien préparés, que c'est que même si vous attrapez Ebola entre temps vous pourriez déchirer quand même des moutons asmatiques. Que c'est que quand vous voyez les autres sortir ils disent "c'est trop SIMPLEEEEE sa maman !", puis comme de par hasard, il y aura toujours une personne qui sortira en disant "NE PRENEZ JAMAIS L'ÉLECTROLYSE, C'EST HORRIBLE, J'EN SUIS TOUT REMUÉ DANS MOI MÊME !". Et, comme de par hasard, lors du tirage au sort, il ce qui en sortira sera toujours l'électrolyse. À croire que les petits papiers se liguent, qu'ils se vengent de tous leurs confrères que vous avez jeté sans compassion.

Et, comme de par hasard, vous avez oublié votre blouse. Mais bien sûr, le type qui est passé avant vous et qui a eu le sujet sur les condensateurs, sujet aussi facile à faire que de peler une banane (on a dit sans couteau !), vous prêtera généreusement sa blouse en ajoutant "Tiens, j'en ai pas besoin, j'ai les condensateurs, MOI !". Tu me redis ça, je te balances des loutres épileptiques sur ta gueule.

"I LOVE TP", LES MASOS CONTRE ATTAQUENT

Bien sûr, le sujet commence. TROP SIMPLE que même que mon chien il peut le faire ! Et bien sûr, la lutte continue. Maintenant, c'est le diiode. Ce truc a repéré que la copie était en dessous du bécher (c'est un machin genre pot de bébé avec des graduations, parce que les graduations à 10^-2 mL ça sert à rien pour la purée à la carotte), et il prépare son coup. Une fois collé au bécher, prêt faire du toboggan jusque dans le bécher, il se met spontanément, et contre toute attente, à se glisser entre le bécher et la petite bouteille pour finir un vol plané sur la feuille à rendre. Pour le brevetbac. Coef 7. Par contre, lui, il a pas mal quand on lui balance des loutres. Même épileptiques.

Reconstitution du crime, à l'américaine

Et figurez vous, le diiode, à part avoir un nom imprononçable, est jaune. Très jaune. Et très tâchant. Ca fait un gros machin jaune sur la feuille tip top tendance.

Et après, top content.

dimanche, juin 15 2008

La révélation du bain-marie

Ce midi, au programme : petit salé aux lentilles. Bien sûr, en conserve, faut pas déconner. Sur l'étiquette, dans les conseils de préparation, je lis "Faire chauffer au bain-marie 15 minutes". Réflexe : Wikipédia.

Le bain-marie est une technique de chauffage qui
utilise un récipient rempli à moitié d'un liquide
[...] et dans lequel on place le récipient contenant
le liquide ou préparation à chauffer.

La question : comment dois-je faire pour que le niveau d'eau de la première casserole après l'introduction de la seconde casserole soit à la moitié du volume de cette dernière.

Physique et bain-marie

Paf, je sors du papier, calculette, bilan des forces, poussée d'archimède, ce qui se révèle facile puisqu'on projette tout sur l'axe (Oz), le seul axe. J'en déduis que, vu la masse du plat (840g) et vu la masse de la casserole (480g), le volume d'eau déplacé se retrouve être obligatoirement 1.320L, hors la moitié du volume de la seconde casserole est 0.71L, ce qui fait que le niveau d'eau atteindra toujours 93% du volume de la seconde casserole.

Révélation, choc, terreur.

dimanche, juin 8 2008

Paye ton trajet

Samedi 7 juin, 18h20. "Zut", m'écriais-je, "je suis en retard". N'ayant pas de ticket, j'emporte 2€, et file à la station la plus proche, St Placide.

Pouf, pas de guichet. Soit disant pour améliorer la qualité du service rendu à la clientèle. Youhou, ça commence bien. Direction les deux machines.

Première machine : une femme qui essaye de prendre un carnet de tickets avec un billet de 20€ et son billet ne passe pas et se fait refuser. Bien sûr elle retentera 5 fois. Sur la machine de gauche : un type qui s'obstine à payer 2 tickets avec des pièces de 10 centimes et de 5 centimes. MAIS BORDEL JE SUIS EN RETARD MOI !

2 minutes plus tard, la machine de la personne qui prenait des billets se syndique. Elle fait la tête et refuse désormais de délivrer des tickets et des reçus, elle se rabat donc sur la machine de droite.

30 secondes plus tard, la machine de la personne qui prenait un ticket avec des pièces de 10 centimes affiche un splendide message d'erreur "Vous avez mis trop de pièces, nous ne pouvons pas accepter votre demande". Forcément, la personne a trouvé la bonne idée de rester médusé devant l'écran pendant 35 secondes. ENVIE DE MEUTRE.

Paf, et voici la personne avec son billet qui se pointe et me double. Elle fait sa demande, et au moment où on lui demande d'insérer sa monnaie ... bah elle ne trouve pas le machin où on met le billet. Bah oui, yavait qu'un distributeur sur deux qui le faisait. 35 secondes de médusage en règle additionnel.

ET VOILA. Je peux demander mon billet, pouf pouf, tout se passe nickellement bien, il me rend la monnaie, rêve, bohneur, toussa. Derrière moi, deux personnes qui veulent un ticket et qui se décident finalement à prendre un taxi en dissertant sur le sens du mot hebdomadaire à savoir si il voulait dire "Semaine" ou "Jour". Je regarde l'écran vidéo d'à côté : 18h30. YOUPI YÉ YOUPI YA, même pas parti et déjà en retard.

Armé de mon précieux, je descend les marches vers le saint Graal : le portillon. Et là, je peut comtempler le sublime métro de mon quai qui est juste entrain de partir sous mes yeux. Temps d'attente ? Je sais plus, mais ça m'a paru long...

Conclusion : pour une soirée pleine de péripéties, ne cherchez pas bien loin, achetez un ticket de métro.

mardi, mai 27 2008

Petit programme en assembleur qui bouffe tout votre CPU

Actuellement j'écris pas mal de billets casse pieds. Je veux dire par là qu'ils sont beaucoup trop centrés sur l'informatique, et qu'un individu lambda qui voudrait lire ce blog n'a pas du tout envie de le lire. C'est pour ça que je n'ai pas voulu publier ce billet. Finalement, je le met quand même, parce qu'on sait jamais.

Souvent, pour tester des trucs (décharge de batterie, ou utilisation de hotbabe, tout ça), on est amené à utiliser la commande UNIX yes, qui en effet bouffe 100% du processeur, en écrivant que des y sur la console où il est lancé.

Seulement, j'ai trouvé ça un peu bourrain, et qu'il devait sûrement avoir une technique plus directe pour utiliser 100% du processeur. Le programme assembleur x86 ci dessous permet ça :

section .text
        global _start
_start: jmp _start

Eh oui, comme quoi, c'est simple :)

Le gros du programme est situé dans la dernière ligne. Ça dit que quand on va dans _start, il faut aller voir dans _start. Ce qui fait une belle boucle infinie, qui va utiliser tout le processeur.

Les deux lignes du dessus sont là pour dire que _start existe (_start est la section qu'on va exécuter au démarrage du programme), afin d'éviter un warning du linker.

À compiler avec nasm.

mercredi, avril 30 2008

Dell XPS M1530, bios A08 et touchpad

Encore un autre billet aujourd'hui, décidément. En fait, j'ai voulu mettre à jour le bios de mon nouveau laptop de A07 à A08. Dans le descriptif de la mise à jour, Dell annonce que ça permet de supporter les nouveaux processeurs Intel mais aussi de résoudre des problèmes de touchpad.

"Youhou !" me dis-je. Vais avoir un ordi encore mieux que c'est qu'il était. Pouf pouf, je prépare la disquette Freedos pour faire la mise à jour, je l'uploade sur mon serveur TFTP pour la faire booter sur le réseau, j'installe la mise à jour, tout content toussa et je redémarre.

Résultat : ça a révolutionné mon touchpad ! Avant il marchait, maintenant ... il marche plus.

Solution ? Ajouter i8042.nomux=1 aux arguments du kernel dans /boot/grub/menu.lst Un redémarrage et c'est bon !

Source : http://ubuntuforums.org/showthread....

Ubuntu et Wine

Dans les dernières version d'Ubuntu, une fonctionnalité de sécurité a été ajoutée, histoire d'éviter d'attaquer les adresses mémoire du noyau depuis l'userland via mmap histoire de se protéger de futures failles de sécurité. Seulement, cela pose quelques problèmes à Wine surtout quand il s'agit d'émuler des exécutables DOS qui ont besoin d'accéder à ces adresses mémoires.

Pour cela, il suffit de faire un sysctl -w vm.mmap_min_addr = 0 puis de changer dans /etc/sysctl.conf la ligne correspondante en vm.mmap_min_addr = 0

Vive le bac !

Extrait du corrigé du sujet de physique 2005 en Polynésie Française :

Si nous avions choisi t0 très supérieur à tau,
la durée d'éclairage, justement égale à t0,
aurait été beaucoup plus longue. La minu-
terie perd alors de son intérêt car la lampe
reste alors longtemps allumée et c'en est fini
des économies d'énergie.

Clap clap. Dans le genre réponse à 2 balles, clap clap. Plus je fais des annales de bac, plus je me rend compte que moins le bac vaut.

samedi, avril 26 2008

Changer le pas des touches de volume sous KDE (KMilo)

KMilo, inclu dans kdeutils, est le service qui gère les touches multimédias sous KDE : quand vous appuyez sur les touches Volume +/Volume -, il va parler à kmix pour lui demander de changer le volume et affichera une petite fenêtre en OSD affichant le volume changé.

Son problème ? Il change le volume de 10% en 10%, ce qui est un peu trop. Actuellement, aucune doc sur internet ne montre comment configurer KMilo, pour trouver ses options de configuration il faut chercher dans son code source.

Solution : éditer ~/.kde/share/config/kmilodrc et ajouter les lignes suivantes :

[generic monitor]
volumeStepFast = 5

Maintenant, les touches de volume auront un pas de 5%. Vous pouvez aussi voir du côté des options volumeDeviceIdx, muteDeviceIdx, extraDeviceIdx, volumeStepSlow et enabled.

samedi, avril 12 2008

Pulseaudio et Wifi, que du bon

Avant, je branchais tout le temps mon ordinateur portable à l'ampli par le fameux câble mini-jack => RCA, seulement comme il s'agit d'un ordinateur portable, je me prenais tout le temps les pieds dedans, ce qui à la fois réveillait tous les voisins, mais a complètement bousillé le câble.

Histoire de résoudre ce problème, tout d'abord je me suis procuré un nouveau câble (eh oui :) ) et ensuite, j'ai branché l'ampli directement sur mon ordinateur fixe qui, étant fixe, ne bouge pas (wah.)

Ensuite, j'ai utilisé pulseaudio qui transmet tout le son de mon Macbook vers mon fixe par Wifi ce qui me permet de virer tout câble. C'est pas beau ? :)

Wifi Pulseaudio et NFS

Le pire c'est que ça marche achtement bien, ça bouffe seulement de 150 à 200ko/s ce qui est complètement envisageable (ma Fonera plafonne à 2Mo/s en pointe).

Ce qui fait le plus classe c'est que mon Macbook n'utilise AUCUN câble, à part l'alim, vu que mon serveur de fichier partage mon disque dur externe sur le réseau : tout passe par Wifi :D

mardi, avril 8 2008

Notification du suivi d'une commande Dell en temps réel

Voila, j'ai commandé non pas un Dell XPS 1330, mais un Dell XPS 1530 (en gros, c'est un 15", c'est quazi la seule différence). Bien sûr, qui dit commande par internet, dit clic sur rafraichir toutes les 35 secondes sur la page de suivi.

XKCD

Histoire de rire, j'ai codé vite fait un petit script ruby qui va télécharger la page de suivi Dell, la parser, récupérer l'état, et la comparer avec le MD5 de la dernière valeur. Si la valeur change, il enverra un mail à une adresse déterminée, grâce à Net::SMTP (oui oui, c'est du Ruby, vous avez bien lu).

Ce script est lancé en cron toutes les 30 minutes et envoie l'e-mail directement à mon téléphone portable qui le reçoit immédiatement en Push. Je suis donc averti en temps réel depuis n'importe où de chaque changement d'état de la commande. Sympa, non ? :)

Le script est dispo ici (licence BSD) : http://alexis.robertlan.eu.org/file.... Attention, le code est parfois un peu crade.

vendredi, avril 4 2008

BLBARC pour Android

Si vous suivez ce blog, vous savez donc que je développe un petit logiciel pour l'aide aux aveugles avec des codes barres : BLBARC. Voulant développer une version mobile de ce programme, il m'a fallu choisir la plateforme de développement :

  • iPhone ? C'est SATAN. Et pour coder dessus, il faut déjà en avoir un (le SDK officiel n'existe pas). Et il n'y a pas de synthèse vocale dessus.
  • Windows Mobile ? C'est SATAN^2. Et pour coder dessus, c'est un cauchemard.
  • PythonCE sous Windows Mobile ? SATAN enrobé de BIEN. Si vous voulez déployer un truc avec ça, je vous souhaite de posséder un gros flacon de Prozac.
  • Symbian ? Ca ressemble à du SATAN, en moins pire. Et il faut en avoir un.
  • Python pour S60 ? J'ai vu l'API, berk, SATAN. Et il faut en avoir un.
  • J2ME ? Ressemble à du bien, mais en vrai SATAN : déjà si vous voulez stocker des trucs, allez vous pendre. Ensuite, si il vous prend l'idée de développer votre propre petit moteur de base de donnée pour combler l'autre débris, vous allez découvrir la superbe API d'accès aux fichiers, et là, je ne sais même pas si vous aurez le temps d'aller chercher la corde avant que les gentils médecins en blouse blanche ne viennent. Ensuite, si vous voulez faire de la synchro avec l'ordinateur, il ne vous restera plus qu'à vous gazer.
  • Android ? MAIS OUI, C'EST LE BIEN !!!

Résultat, après une petitegrosse soirée à coder : BLBARC sous Android

Là, ça va juste se connecter en XMLRPC sur le serveur BCDB (après avoir porté kxmlrpc pour Android : merci à ce monsieur, puis après avoir porté certaines classes de BLBARC pour Swing), vérifier si le client est à jour par rapport au serveur, et télécharger le titre de l'article associé au code barre depuis le serveur (ici, qui va récupérer les données depuis son plugin Amazon, mais ça, c'est côté serveur).

C'est encore très hacky, et il reste beaucoup de boulot à faire : déjà passer le balai, finir de porter tous les trucs, faire une interface pour voir les détails d'un article, implémenter un système de stockage en local sur le téléphone, détecter la connexion DATA (oui c'est un peu con de se connecter en XMLRPC si ya pas le net), implémenter la synchro avec la base de l'ordinateur et pourquoi pas implémenter un scan du code barre avec l'appareil photo intégré (il existe des libs java qui implémentent l'algo de détection à partir de l'image de la caméra).

Reste que Android n'est pas encore prêt pour les synthèses vocales et l'accessibilité, mais c'est encore en développement, et à mon avis, connaissant Google, société DU BIEN, ça m'étonnerait qu'ils ne gèrent pas ça dans une future release.

jeudi, mars 20 2008

Et OSX aussi est "worse than failure"

Histoire de garder la parité, voilà une très très belle capture. Elle est principalement belle parce qu'elle arrive à chaque installe de MacOSX 10.5 (Leopard).

Installation de OSX, Worse than failure !

Windows, worse than failure

Je crois que je dois être trop nul, mais je n'arrive décidément pas à installer Windows Live Messenger sur un XP SP2 fraîchement installé.

En même temps, quand l'installateur vous donne un truc comme ça, on se demande qui, de nous deux, est le plus débile :p

Installation de MSN, Worse than failure !

mercredi, mars 19 2008

Greasemonkey

Comme vous le savez sûrement, Greasemonkey est une extension Firefox qui permet d'injecter du code Javascript dans des pages que l'on choisit, pour les personnaliser.

Histoire de rire, en une ligne de javascript (sans compter les headers), j'ai fait un script qui, dans Facebook, remplace le nom/prénom d'une personne au choix par "Satan". C'est très marrant de voir des "Send Satan a gift" ou "Satan wrote ..." :D

// ==UserScript==
// @name        ALEXIS = SATAN
// @namespace   http://alexis.robertlan.eu.org/
// @description Alexis is satan, and backwards
// @include     http://www.facebook.com/*
// ==/UserScript==

document.childNodes[1].innerHTML = document.childNodes[1].innerHTML.replace(/Alexis Robert/g, 'Satan').replace(/Alexis/g, 'Satan');

samedi, mars 15 2008

Reverse-engineering d'un malware

Vendredi soir, MSN clignote : un de mes contacts m'envoie un virus qui se transmet tout seul par MSN. Histoire de rire, je me met à vouloir le désassembler.

Ayant fraîchement installé un Windows XP sans rien dessus, je me suis dit : allez, on va flinguer cette installation, je réinstallerai.

Premièrement : le virus était un .com. En fait, c'était un simple PE, il aurait pu s'appeller .exe, maibon. Ensuite, l'exécutable était packé avec un logiciel indétectable, je regarde rapidement, je vois pas trop comment faire. La seule idée que j'avais à ce moment là (mes souvenirs de reverse-engineering étant très très loin) était de lancer le virus puis de dumper la zone mémoire occupée par ce programme. Un joli utilitaire me l'a permis, mais étrangement, je n'arrivais à rien, et ce programme ne faisait rien qu'afficher une photo (du créateur?), d'afficher dans la barre de titre une référence au film Le Clown, faire des trucs bizarre avec des fichiers .zip, apparemment inclus dans le contenu du programme, et installer un autre programme. Je dumpe alors l'autre programme, lui même packé de la même façon, avec rien d'intéressant en désassemblant. De plus, impossible de corriger les headers, et le virus auto-détecte quand j'essaye de le tracer pour corriger les headers du fichier dumpé et coupe son exécutable principal histoire d'empêcher la tâche. Pareil... Je m'avoue vaincu ?

Dix minutes après, je réessaye de dumper, et étrangement, l'exécutable est différent, il comprend une URL : http://ymq.a.wrs.mc***.com/17PHolmes.*** (je n'indique pas l'URL complète pour des raisons légales). Et ça, c'est un exécutable PE tout ce qu'il y a de plus conforme.

Je récupère cet exécutable. Je lance un éditeur hexa, ho, un header UPX ! Je lance GetTyp2, il me répond UPX 3.02. Seulement, UPX ne veut pas le unpacker. Je lance ça avec OllyDbg, et remarque qu'en réalité, l'auteur avait déplacé l'entrypoint vers une partie qui permettait de tromper le type qui voulait dumper son programme. Hop, à la bonne adresse, je place un breakpoint sur le JMP qui va bien, et je dump l'adresse mémoire sur laquelle il pointait. PAF, un .exe valide, créé avec MS Visual C++ 6.0. Après un désassemblage avec IDA, je trouve trop d'infos, beaucoup trop. Apparemment, c'est un virus qui se met à jour entièrement automatiquement, et qui transmet des informations sur l'ordi (puissance CPU, et deux trois autres), tout ça par HTTP, avec des scripts PHP (sur quazi la même URL). Seulement, voulant en savoir plus, je me trouve confronté à une routine qui envoie les débugueurs dans une boucle infinie. Étant 00h45, je décide de me coucher.

Il s'agit ici d'un virus très bien conçu, créé par un type qui savait ce qu'il voulait : il y a des traces de cryptage RSA dans le code, et apparemment il décypte et ré-encrypte certaines parties de son code à la volée, ce qui explique la difficulté de réussir à le dumper. Seulement, il a fait quelques erreurs, et j'ai pu réussir à casser sa protection (bon, pas beaucoup, il faut savoir que la dernière fois que j'avais fait du reverse-engineering c'était quand j'avais 12 ans, donc bon, je suis relativement mauvais là dedans, me reste juste des souvenirs :) ).

MàJ. Une liste des logiciels utilisés (entre autres) est disponible ici : http://del.icio.us/alexissoft/rever.... Sera mise à jour en ajoutant d'autres programmes de reverse-engineering au fur et à mesure. Il doit manquer 1 ou 2 utilitaires quand même, mais bon

mardi, mars 11 2008

Macbook sous Debian

Ça y est, j'ai fait ma crise anti-Apple. Ca devait arriver, depuis longtemps. C'est arrivé avec la sortie du SDK pour l'iPhone, j'ai vraiment réalisé qu'Apple se fiche complètement de la tête de ses clients, et s'intéresse seulement à les verrouiller pour tout exploiter financièrement en faisant croire qu'ils sont très ouverts. "Don't be evil", comme qui dirait. De plus, je galère sous OSX pour développer : chaque librairie à installer est un défi, si elle y est.

En gros, j'ai viré toute trace d'OSX sur mon Macbook, et ait installé Debian sid dessus, sans table de partition GPT, que du MBR. Et bien, ça passe nickel. L'EFI râle un peu au début, mais fait un fallback sur la table de partition MBR en émulation BIOS, et démarre sur Grub comme un charme.

La configuration de Debian a été un peu difficile sur les bords, surtout concernant le touchpad. Maintenant ça marche super bien, même si c'est quand même bordélique, je posterai à l'occasion mes fichiers de config' sur le répertoire idoine de mon subversion qui est un peu outdated. En gros, débutants, éviter ;)

Macbook/Debian sid

Bizarrement, j'accroche VRAIMENT à Debian. Autant toutes mes tentatives d'Ubuntu se sont soldé par un échec, j'ai vraiment accroché au principe du "tu fais un peu ce que tu veux" et "tu configure comme tu veux", alors que je croyais être attaché au tout qui marche instantanément.

Du coup, j'ai installé un miroir Debian sur mon iPod histoire d'avoir toujours la possibilité d'installer un paquet qui me manque. Très geek quand même :) Ah, et j'ai même fait un paquet, qui est sur http://mentors.debian.net : tavu, un petit programme qui permet d'avoir des notifications knotify à distance via XMPP.

En tout cas, je suis vraiment content d'avoir enfin pu lâcher OSX définitivement. De toute façon, si je ne vais pas en prépa l'année prochaine, je vendrai mon Macbook pour m'acheter cette bête : le Dell XPS M1330 qui a le mérite de fonctionner sans aucun problème sous Linux. Oui parce que j'ai pas tout dit : j'ai quand même pas réussi à faire tourner la mise en veille, ce qui est fâcheux quand on s'en sert en cours.

- page 1 de 9