Archive

Archives de l'auteur

Repas de Noël pour les pauvres et isolés

Je suis allé voir le repas de Noël proposé par la paroisse de Saint Hippolyte aux gens pauvres et/ou isolés et j’ai fait des photos pour la paroisse.

Y’avait un repas plutôt varié et même des cadeaux pour tout le monde !

Pour les photographes ou avertis, beware the fisheye power dans une église ;)

Ici, la galerie de photos complète.

Categories: Non classé Tags:

Crèche vivante à la messe de Noël

Hier soir, lors de la célébration de la messe de Noël de mon quartier à l’Église Saint Hippolyte, il y a eu une crèche vivante qui racontait la même histoire que tous les ans (vous savez, celle que tout le monde connaît par cœur, avec le p’ti Jesus qui nait dans une étable…).

J’en ai profité pour faire des photos. :)

Non c’est pas du cosplay ! Quoique… c’en est une forme quand même… non ?

La galerie avec toutes les photos :)

Categories: Non classé Tags:

Bonnes fêtes !

Bonnes fêtes à tous !

/* FIXME:  insérer ici le blabla souhaitant tout ce qui va bien en de telles circonstances… */

Bientôt de nouvelles résolutions : moins procrastiner. Hein, quoi ? Comment ça, ça part mal ? Mais non ;)

J’ai fait de nouvelles photos pour les fêtes de fin d’année : je suis notamment sorti avec ma cousine ainsi qu’avec des amis d’Ephemere (Larry et Laurent, pour ne pas les citer…) pour voir les illuminations des galeries Farfouillettes (pas de très bon goût cette année) et des Champs Elysées (les arbres bleus, comme d’hab…).

La suite ici, sur mon site photo (tout beau, tout neuf, tout flashouillé, désolé pour ceux qui aiment pas).

J’ai peut-être pas assez trié, mais le temps, eh bah il est pas extensible :)

Categories: Non classé Tags:

Back to code : MPR

Si vous me connaissez, le titre vous a peut-être mis la puce à l’oreille.

En effet je me suis remis à coder, après des mois et des mois d’abstinence, alors que je faisais principalement de la photo. Non je ne vais pas devenir photographe pro : ma vocation est dans l’informatique, mes compétences principales aussi.

Bien évidemment je continue la photo comme hobby, mais j’ai recentré mes priorités. J’ai des rêves, j’ai des idées. Je rêve un jour de pouvoir les concrétiser. Hélas, ca demande du temps, beaucoup de temps. Je suis intraitable sur la partie « réalisation technique » et je ne supporte pas le travail mal fait, instable et peu fiable. Je suis un maniaque de la complétion et je ne peux pas imaginer qu’une de mes réalisations ne fasse pas au moins le café (les geeks comprendront).

Je me suis donc remis sur un projet fondamental qui végétait depuis trop longtemps, la brique de base de tous mes projets rêvés, celle qui selon moi est indispensable : MPR. MPR pour Meta-Portable Runtime (et non pas multi-purpose room) se veut être une couche d’abstraction pas simplement au dessus du système, mais carrément au dessus des bibliothèques system-dependant ou simplement fondamentales.

Prenons un exemple. Il est selon moi inconcevable de développer un logiciel quelconque s’il n’est pas multilingue dès le  départ. Qui dit « multilingue » dit « utilisation de strings Unicode ». Quelle implémentation de strings Unicode semble solide et multi-plateforme ? Celle d’IBM peut-être : ICU. Oui mais voilà, si un jour ICU n’est plus supporté ? Si un jour ICU pose fondamentalement un problème dans son utilisation ? Si un jour sa licence change et qu’ICU devient proprio ? Si je veux porter mon appli sur une plateforme totalement exotique (prenons la PlayStation 1 pas exemple) alors qu’ICU ne la prend pas en charge ?

Dans ce cas, je vais devoir utiliser autre chose qu’ICU pour cette plateforme, voire me désolidariser entièrement d’ICU. La première solution semble être la moins douloureuse, mais quid des interfaces de cette bibliothèque qui sont utilisées partout dans le projet à porter ? Il faut repasser sur tout ? Tout modifier ?

C’est la que se situe MPR. Si l’application est développée au dessus de MPR, celle-ci fait office de couche d’abstraction et dissocie le code important (le logiciel) des interfaces des bibliothèques utilisées (les bibliothèques système, les strings Unicode, etc…).

Une fois que l’on a compris ca, on se rend compte de l’immensité du projet MPR, mais surtout du nombre incroyable d’interfaces à écrire pour tout abstraire. Ne parlons même pas de la documentation. C’est beaucoup trop long, surtout compte tenue de la verbosité du C++. Je travaille donc actuellement sur un générateur de C++ qui parse en entrée un fichier ayant une syntaxe plus simple et bien moins verbeuse pour en sortir du beau C++ bien rangé, optimisé et documenté.

MPR devrait (je pense) être rendue publique dans quelques temps sous une première forme ne gérant que quelques fonctionnalités indispensables (strings Unicode, fichiers et streams, interfaçage avec Python, threads), et ce sous une licence permissive (genre BSD ou quelque chose de proche).

Je mettrai surement de temps en temps des bouts de code ici, histoire d’avoir des avis. Stay tuned ;)

Categories: Informatique, Programmation Tags: ,

Your account is disconnected.

14:20:08 – Your account is disconnected.
14:21:13 – Your account is disconnected.
14:26:39 – Your account is disconnected.
14:27:22 – Your account is disconnected.
15:29:14 – Your account is disconnected.
15:29:57 – Your account is disconnected.
15:45:56 – Your account is disconnected.
15:46:27 – Your account is disconnected.
15:47:38 – Your account is disconnected.
15:48:04 – Your account is disconnected.
15:48:58 – Your account is disconnected.
15:59:52 – Your account is disconnected.
16:01:12 – Your account is disconnected.
16:04:18 – Your account is disconnected.
16:16:58 – Your account is disconnected.
16:17:33 – Your account is disconnected.
16:32:42 – Your account is disconnected.
16:34:02 – Your account is disconnected.
17:12:26 – Your account is disconnected.
17:13:54 – Your account is disconnected.
17:19:50 – Your account is disconnected.
17:20:33 – Your account is disconnected.
17:26:56 – Your account is disconnected.
17:27:36 – Your account is disconnected.
17:29:29 – Your account is disconnected.
17:33:55 – Your account is disconnected.
17:35:23 – Your account is disconnected.
17:39:17 – Your account is disconnected.

Merci qui ? Merci Free !!

28 dé-synchros de Freebox depuis 3 heures 30, soit ~7,2 dé-synchros par heure. Une dé-syncho toutes les 7,1 minutes en moyenne (avec 2 minutes de perdues pour re-synchro à chaque fois)… et j’ai vu pire ces derniers jours…

Je m’excuse (ou plutôt je n’excuse pas mon FAI) pour toutes ces décos/reco qui durent depuis deux semaines et qui doivent pousser certaines personnes au suicide à force de voir et/ou d’entendre les notifications de leur messagerie instantanée.

Je suis en train de passer chez SFR (du côté obscur de la Force qui soutient Hadopi/Loppsi) pour bénéficier de l’offre fibre optique 100/50 Mbps. Bien évidemment ils ont repoussé la date d’inscription, histoire de me faire poireauter plus que nécessaire (3 semaines pour débloquer le débit d’une ligne déjà active, bravo d’avance SFR !!) donc vous devrez supporter ca encore pendant j’espère au maximum une semaine.

Categories: Informatique, Réseaux Tags: , , ,

Chibi Japan Expo 2009 (preview)

Je suis allé ce week-end couvrir la convention Chibi Japan Expo en tant que photographe officiel et photographe pour le club Ephemere.

C’était bien sur super, avec le lot habituel de cosplays franchement réussis, des concerts qui sonnent bien le japonais, des sourires partout, des gens qui assument leur passion tous ensemble… J’adore ca.

Je suis revenu avec près de 4000 photos (encore un paquet d’heures vont être nécessaires afin de tout trier). La lumière sur place dans les allées était catastrophique, avec une horrible teinte jaune et une puissance trop faible pour faire des photos correctes sans flash. Sur scène, il y avait le matériel pour avoir de bons résultats ; mais là encore la régie a fait n’importe quoi et a utilisé des éclairages soit trop violents, soit pas assez, soit avec des teintes horribles (genre bleu pétant sur la figure) soit en faisant varier constamment et rapidement l’intensité des projecteurs. Les photographes souffraient, changeant constamment de balance des blancs en sautant de 3000K à 10000K et en priant pour avoir une photo correctement exposée dans le lot. En bref, ca a été formateur :)

Je vous pose ces deux rapides previews, la suite venant la semaine prochaine :

_DSC7254_DSC5560

Je dois aussi avertir les personnes qui ont assisté à la convention que la grippe A/H1N1 s’est propagée durant celle-ci. Inutile de paniquer, c’est qu’une simple grippe, mais si vous avez le moindre signe de faiblesse/toux/rhume/fièvre, consultez votre médecin généraliste et faites passer le mot. ;-)

Categories: Conventions, Photo Tags: ,

Sujet simplifié de la bistromathique

Plusieurs personnes me contactent (comme tous les ans, je trouve ca rigolo) pour avoir des infos sur la bistromathique. Aujourd’hui, au milieu des Tek1 en panique, j’ai eu un étudiant en commerce qui m’a demandé plus de renseignements sur le  sujet de la bistro. Histoire que ca profite à tout le monde je vais répondre ici :

Alors, la bistro c’est pas un programme très simple à faire, du moins ca ne se code pas en une soirée. C’est demandé à des Epitech 1ère puis 2è année et des Epita 1ère année d’ingénierie. Ca demande de l’acharnement (chercher continuellement à faire plus performant, plus rapide, etc…). J’ai passé un mois dessus en me concentrant quasi à plein temps pour arriver à un truc fonctionnel et rapide.

Globalement il s’agit de faire une calculatrice qui fonctionne sur des nombres très grands (des millions de caractères) et sur toutes les bases jusqu’à 255 si je me souviens bien.

On prend un gros fichier en paramètre du programme avec un grand calcul, genre 123451821*4894/(12354+4813) , mais avec des nombres bien plus grands et des milliers d’opérations (genre on a des fichiers de plusieurs gigas à traiter) et on doit trouver le résultat le plus rapidement possible.

C’est à coder en C pur, C99 autorisé, toutes optimisations du compilateur autorisées aussi.

On doit donc tout d’abord lire le fichier d’input pour le stocker en ram, puis le parser (avec les 5 operations +-*/% et les deux parenthèses). On doit bien évidemment gérer les priorités. Une fois ceci fait, il faut résoudre le calcul et l’afficher (ou l’enregistrer dans un fichier).

Voila pour le sujet, bonne chance si vous voulez travailler dessus. C’est un projet passionnant et extrêmement formateur, mais il demande un peu de temps et de recherches.

Bistromathique

J’avais fait un bel article sur mon ancien blog, avec toutes les idées que j’avais eues à la fin du projet d’Ing1 : Bistromathique. Comme plusieurs personnes m’ont demandé des infos sur le projet, je vais refaire cet article ici à partir des bribes trouvées dans la base de données que j’ai gardée.

Nous avons planché sur plusieurs projets en langage C depuis le début de l’année, mais un seul a réellement retenu mon attention : il s’agit de la Bistromathique. Qu’est ce que cela ? Il s’agit d’une calculatrice capable de travailler sur des grandes bases (ici on a implémenté jusqu’à la base 249) et sur des nombres entiers signés potentiellement infinis (nous nous sommes limités à une expression ayant pour taille maximale 4 294 967 295 caractères).

J’ai commencé par travailler sur une représentation en tableaux de caractères (tableaux d’entiers 8 bits non signés : des unsigned char* sur archi 32 bits), en implémentant l’addition, la soustraction et la multiplication scolaire, ainsi qu’un algorithme proche de celui de Knuth pour la division et le modulo. J’ai utilisé les tableaux en Big Endian pour faciliter les opérations commençant sur les poids faibles, et pour éliminer rapidement les 0 non-significatifs. De plus, le décalage à gauche étant plus souvent utilisé que le décalage à droite, cette représentation de chiffres était doublement intéressante.

Ma première grosse optimisation a été de récupérer les buffers déjà alloués pour les stocker dans une chaine de buffers vides. Mine de rien, j’ai multiplié par au moins 50 la vitesse de ma bistro avec cette astuce ! En effet, j’allouais pour chaque opérande de mon expression, ce qui faisait des milliers de mallocs ! Grâce à cette technique, sans même me casser la tête à trier les buffers vides dans la liste chainée, je suis descendu entre 10 et 25 mallocs sur tout le programme ! (Mes tests étaient composés d’expressions de 10 Mo et d’opérandes de 1 ko à 10 ko.)

J’ai ensuite transformé le programme pour qu’il utilise des tableaux d’entiers 32 bits non signés (unsigned long* ou unsigned int* sur archi 32 bits) et j’ai adapté l’addition et la soustraction. Voyant que les résultats étaient plus lents sur ceux-ci, j’ai abandonné cette voie de recherche (mauvaise pioche, j’aurais du continuer) : en effet, cette implémentation nécessite 3 parcours linéaires pour les additions et soustractions, mais accélère considérablement les multiplications !

Ensuite, pour accélérer ma multiplication, j’ai travaillé sur l’algorithme de Karatsuba. Malgré mes efforts sur la gestion mémoire, je n’ai pas pu empêcher l’allocation de deux structures de nombres et des chaines de caractères les accompagnant à chaque récursion de l’algorithme, ce qui a multiplié par 12 le nombre d’appels systèmes de mon programme sur mes tests. La conséquence de cela a été qu’en utilisant Karatsuba plutôt que la multiplication naïve, je doublais le temps de calcul.

Pressé par le temps, je me suis rabattu sur une optimisation de la multiplication naïve en utilisant seulement pour elle la représentation en tableaux d’unsigned long. Le gros point faible est qu’à chaque multiplication, je fais trois conversions : deux pour passer les deux opérandes en unsigned long*, et une pour repasser le résultat en unsigned char*. Malgré cela, mes résultats sur la multiplication naïve on été fulgurants (division par 9 à 18 du temps de calcul)

J’ai ensuite été contraint à rendre mon travail, timeout projet oblige.

Mes idées restantes si j’avais encore eu du temps :

  • Repasser entièrement sur des tableaux d’unsigned long, tellement plus rapides pour les opérations complexes (multiplication, division et modulo).
  • Retravailler Karatsuba notamment en allouant sur la pile plutôt que sur le tas à l’aide des tableaux dynamiques apportés par le C99 auquel nous avions droit
  • Trouver une astuce pour calculer rapidement l’heuristique de mon algorithme de Knuth modifié avec la nouvelle représentation des nombres.
  • Pouvoir gérer l’expression originale comme un buffer utilisable, donc pour cela déterminer les parties d’expression traitées pour utiliser cet espace mémoire obsolète : celui-ci était alloué à 10 Mo minimum, ca aurait été un gain considérable !
  • Permettre deux représentations de nombres en parallèle avec conversion éventuelle selon le type d’opération à effectuer pour accélérer les calculs type addition/soustraction seulement lorsque les opérandes viennent de l’expression originale)

Au final, je peux dire que ce projet m’a énormément appris, tant sur la gestion mémoire que sur de nouveaux algos (parseur LL d’expression mathématique, Karatsuba, Knuth…) ou sur l’expérience du debug (maintenant je ne peux plus travailler en C sans Valgrind tellement c’est utile).

Note : Je ne peux pas donner mon code source ici, simplement parce que d’autres épitéens ont des chances de tomber sur cette page alors qu’ils ont le projet à coder. Si certaines personnes veulent voir mon travail, qu’elles me contactent.

Nouveaux travers de Seven

Eh oui, le système est tout neuf et on va retrouver tous les bugs rigolos. Je suis en train d’écrire ce billet et il m’en arrive un nouveau à propos de la copie de fichiers qui déconne.

Chapitre 1 : les 0 éléments restants à copier.

En effet, je fais un gros backup de mon dossier d’images qui contient très majoritairement mes photos (182 Go, 53 842 fichiers) et ce gros neuneu de Seven m’annonce une copie de 9 372 éléments, finissant bien évidemment avec une barre de progression pleine, 0 éléments restants à copier en continuant pourtant son travail de copie…

Au bout de 20 secondes il pige son erreur, seulement à moitié et finit par me mettre une barre de non-progression (celle qui indique qu’il sait pas vraiment où il en est).

Cerise sur le gateau : il fait chuter constamment la vitesse de transfert (il était à plus de 20 Mo/s au début ; le temps d’écrire ce pavé, il est tombé à 7.91, 7.88, 7.79…). Il est pourtant évident vue la vitesse de copie des images qu’il va bien plus vite qu’indiqué, et à vitesse constante…

seven-1

seven-2Pitoyable…

Chapitre 2 : je ne partagerai pas MON imprimante !

Autre souci : le partage d’imprimantes. On va encore taper sur Petit mou cette fois-ci. Voyez plutôt :

Mon PC fixe est maintenant sous Seven. Le système a détecté lors de l’install que je pouvais gérer le 64 bits donc il s’est installé dans ce mode. Les drivers sont donc aussi dans la mesure du possible en 64 bits, comme c’est le cas pour mon imprimante.

Eh oui seulement le portable de ma mère, lui, tourne sous un bon vieil XP 32 bits, et il peut pas charger le driver via le réseau pour installer mon imprimante (en réseau, c’est le but du partage d’imprimante) car il cherche un driver 32 bits ; Seven ne possèdant que la version 64.

Cherchons un peu, on trouve dans « Périphériques et imprimantes » mon imprimante (vrai !). De là, on saute sur les propriétés de l’imprimante et on trouve un magnifique onglet gris nommé « Partage ». En bas, on voit un superbe bouton intitulé « Pilotes supplémentaires… ». Ca sent bon le succès tout ca !… mais je tiens à vous rassurer : si j’écris ca dans les travers de Seven c’est qu’il y a un… travers.

seven-5

Clicouillons donc… On me propose d’installer en plus du pilote x64 un pilote Itanium dont je n’ai rien à faie et un pilote  x86 ! Joie ! On coche et valide… Bim ! « Veuillez fournir un pilote d’imprimante ». Avec un bouton « Parcourir ». Il veut un fichier INF. Rien que ca…

seven-3

seven-4

Bien évidemment, chez Canon, ils te filent un exécutable bien empaqueté, tout joli, qui fait le boulot à ta place, vérifie lors de son exécution le type de système que tu as pour t’installer uniquement le bon driver sur ta bécane (x64 dans mon cas) et rien d’autre… Je fais comment pour installer mon driver x86 moi ?

Cher lecteur, si tu as une idée, elle est la bienvenue car je n’ai pour l’instant pas trouvé de réponse à cette question.

Jordan Rudess, pianiste de génie

J’aime la musique. Ca les gens autour de moi le savent. Je ne peux pas passer plus de quelques heures sans musique sous peine de grave déprimer et ressembler à un hamster apathique souffrant d’une rage de dents.

Je ne sais plus comment j’ai découvert le groupe Dream Theater mais c’est un groupe que j’ai mis du temps à apprécier, et pour tout vous dire : je n’accroche pas sur tous leurs albums. Leur style a évolué avec le temps, passant de choses que j’aime à d’autres dont je suis moins fan. De temps en temps j’ai une bonne surprise avec eux.

Ce groupe a quand même une particularité : celle d’être composé de musiciens hors pair, doués comme pas deux sur leurs instruments respectifs, comme John Petrucci le guitariste qui doit être une des rares personnes à déclencher un  orgasme auditif chez moi (« le chant dans mon pantalon » que je lis dans les spams sur ma boîte GMail), un des meilleurs guitaristes au monde, tous styles confondus. Il fera peut-être l’objet d’un autre billet si l’humeur m’en dit.

Parlons plutôt de Jordan Rudess, pianiste (claviste en fait, il fait tout ce qui est synthé aussi) chez Dream Theater. Ce gars est grave doué. Il est capable de prouesses avec son piano comme j’en entends rarement, autant au niveau mélodique que technique (il doit taper sur les touches à la vitesse d’un pivert parkinsonien épileptique).

Je ne vais pas vous faire patienter plus longtemps pour vous faire découvrir un morceau de son dernier album solo sorti en 2009 intitulé Notes on a Dream, qui reprend des airs des précédents albums de Dream Theater. En fait presque tous les morceaux de cet album valent leur pesant de cacahuètes. Si ça vous plait, foncez vous procurer la suite :D

Notes on a dream - Hollow Years

Je vous met sa page Wikipedia qui explique son histoire, sa vie, son œuvre si vous voulez de la lecture.

http://fr.wikipedia.org/wiki/Jordan_Rudess