le lundi 28 novembre

Partir en expédition

De longue date, je planifiais cette expédition. Depuis ces derniers jours, le besoin de partir prendre un autre air se faisait sentir. L'idée était de rattraper tout ce temps perdu à aller travailler pour des entreprises schyzophrènes.

La préparation de cette expédition a été murement réfléchie, et son parcours soigneusement choisi pour être le plus optimal possible (si l'on considère qu'il peut y avoir plusieurs niveaux d'optimalité). J'ai refais mentalement le trajet plusieurs fois, afin de m'assurer qu'il n'y aurais aucune faille. Il faut dire que ce n'est pas dans un endroit très saint que je vais. Le temps passé doit être minimal, en évitant les divers pièges que la société moderne prend soins de mettre chaque jour sur notre chemin.

Une fois la préparation du terrain effectuée, il a fallu se préparer physiquement. On ne va pas dehors sans un minimum de précaution. Il a fallu préparer l'ensemble des objets nécessaires au voyage, afin d'éviter tout déplacement inutile. Après m'être préparé minutieusement, m'être soigneusement habillé pour parrer les dangers de l'extérieur, j'étais fin prêt pour sortir.

Première étape, la Fnac. Je devais faire réparer mon appareil photo qui ne marche plus. Première déconvenue, Nikon applique un forfait 150 € pour toute réparation. Y compris quand ce n'est que la partie extérieur du déclencheur qui ne marche plus.

Deuxième étape, Darty. 150 € ? Ya un peu d'abus, là, je vais chez le concurent pour m'assurer qu'on ne me raconte pas des craques. Redirection vers le numéro de téléphone de Nikon pour plus d'informations, puisqu'eux, ils n'en savent rien.

Troisième étape, Go Sport. Je me suis dis qu'il fallait que je m'achète un petit sac pour ne pas avoir à subir les déblatérations des gorilles de Carrefour les rares fois ou je devrais mettre les pieds dans le magasin.

Dernière étape, le pressing. Il fallait récupérer quelques pièces d'habillement déguisement pinguoin.

Ce fut dur, mais je l'ai fait.

le lundi 21 novembre

Modèle de voie

Bon, pour mon simulateur de réseau ferroviaire, j'ai mis au point le système de voie qui servira à afficher les voies ferrées à l'écran.

Pour afficher correctement une voie avec tous les appareils de voie, le ballast et les traverses (ou n'importe quoi d'autre), il ne suffit pas de coller comme un mal propre quelques images en croisant les doigts pour que ça tienne. Et pour pouvoir représenter une traversée jonction double, il faut un petit moment de reflexion pour que tout rentre bien.

Le principe est d'utiliser des images transparentes savamment intercalées afin de produire l'effet recherché. Derrière ce charabia à tendance juridique se cache une idée très simple : on dessine d'abord le ballast, puis les traverses, puis enfin les rails. Pourquoi pas tout d'un coup ? En fait, pour pouvoir correctement dessiner les appareils de voie (les aiguillages), il ne faut pas que le ballast et les traverses soient redessinées par dessus les rails deja dessinés. Le probleme se pose également entre le ballast et les traverses

Une fois le probleme des traverses reglé, il faut voir si le système permet de représenter les appareils de voie complexe, comme les traversées jonctions simples et double, ainsi que les croisements en tout genre. Je suis partit du principe que "qui peut le plus peut le moins" et que si j'arrive a modéliser une traversée, le reste suivrait sans probleme.

Déjà, présentons la bête en taille réelle :

Une traversée jonction double

Deux voies se croisent et l'appareil permet indiferrement d'aller sur l'une ou l'autre des voies de sortie à partir de l'une ou l'autre des deux voies d'entrée.

A partir de mon idée de quadrillage, je me suis dit qu'il pouvait être fait la même chose. Voila deja le schéma de conception :

Schéma d'une traversée jonction double

Les pièces numérotées en noir sont les voies de passages. Les voies 14 et 16 sont des morceaux d'aiguillage simple. La voie 15 est un croisement à 45° de la voie 7. On s'aperçoit que les voies 17 et 18, qui forment la traversée (avec les voies 15 et 7) sont les mêmes que les 14 et 16. Si ça marche sur le schéma de principe, ça devrait fonctionner sur un schéma à l'échelle.

J'ai donc pris comme unité de quadrillage des images de 99 pixels sur 99. Cela permet d'avoir une diagonale mesurant l'équivalent de 140 pixels alignés (en considérant que les pixels sont carrés). Cela dit, en fait, une diagonale d'un carré de 99 pixels de coté comprend... 99 pixels ! C'est le genre de petites subtilités qui fait faire plein d'erreurs si on ne prend pas garde à la façon dont on raisonne... Cela donne, pour une vois simple :

Un tronçon de voie

Cela commence à se corcer lorsque l'on veut faire une vois en diagonale, parce qu'une bête rotation ne suffit pas. Et puis, il fallait que le cadre rose reste à la même position. De plus, il faut faire en sorte que les rails dépassent de ce cadre afin qu'ils soient reliés aux rails situés sur la diagonale. J'ai pensé très brievement à utiliser des hexagones, mais non, beaucoup trop complexe pour modéliser un réseau physique. J'ai donc dû calculer de combien de pixels les rails allaient déborder (Vive Pythagore). Au final, ça donne ça :

Une voie en diagonale

La troisième pièce, la plus dure à réaliser, est la courbe, nécessaire pour décrocher d'une voie verticale vers une voie en diagonale. Le plus chiant a été de bien faire coïncider les morceaux de rails avec des courbes harmonieuses et tengeantes à la droite de sortie.

Une voie en courbe

Une fois les éléments de base fabriqués, il ne reste qu'à les imbriquer les uns dans les autres, en les faisant pivoter si besoin est. Le résultat est particulièrement réussi :

Le résultat avec les voies assemblées

Une fois cette image obtenue, on peut enlever toutes les traces de conception, ce qui donne un résultat qui sera proche de la réalité :

Une traversée jonction double représentée à l'aide de morceaux de voies simples

le lundi 14 novembre

Suite du programme

Bon, alors :
- mardi : Cartes 2005
- mercredi : Cartes 2005 + un peu de Heavy Gear si je suis pas trop fatigué
- jeudi : Cartes 2005 + une fin d'après midi tranquille
- vendredi : dernier jour chez H&SK (derniers papiers...)

ensuite : LIBRE ! enfin.

H&SK, c'est fini

Et voila, c'est fait.

Je vais faire la période de préavis, j'ai eu quelques garanties. Et ensuite, et bien, je n'aurais enfin rien à penser.

Cela a été une épreuve, cela s'est passé comme je l'avais pensé. Bien pour ce genre de situation.

le jeudi 10 novembre

Hansel sans le contact

Houla, c'est la panique chez H&SK ! Ya eu un glitch de communication avec certains prestataires et la tensions est montée d'un seul coup. Bon, c'est un petit glitch de quelques milliers de volt avec un ampérage dans les mêmes valeurs, mais bon :-)

le lundi 7 novembre

CyberRail

CyberRail, c'est le nom de mon future simulateur/contrôleur de réseau férroviaire.

Hier soir, en panne d'inspiration pour occuper ma soirée[1], je me suis mis à écrire la couche communication de ce projet. Il s'agissait de faire une couche réseau simple et qui fonctionne par évenement.

Actuellement, quand vous voulez faire de la communication réseau de manière asynchrone, on vous parle tout de suite de thread et autres concepts de ce genre. La parrallélisation des tâches, c'est bien gentil, mais ça apporte une certaine complexité qui finalement masque les intérêts de cette technique. L'autre moyen utilisé est l'appel système poll(). Sa programmation est assez complexe, et à la fin, en général, on s'emmele les pinceaux plus qu'autre chose.

J'ai décidé d'écrire CyerRail en python, parce que c'est ma marrote du moment, parce que c'est simple à écrire, parce que c'est moins lourd que Java et plus lisible que le C. La bibliothèque python fournit tous les appels systèmes de la libc, et notamment l'api BSD socket, ainsi que l'api select (qui contient l'appel système poll()). tout l'interet de le faire en python est que la gestion d'erreur est triviale : il n'y a pas de code de retour, les erreurs sont gerées par des exceptions, il n'y a pas de taille de buffer, etc, etc...

Cette simplification de l'api, ainsi que la notion d'objet, permet de se concentrer sur le fonctionnement réel du système, et donc de ne pas perdre de vue le but vers lequel on veut tendre. J'ai donc réussi hier soir à réalisé une petite bibliothèque multi-connexions ne fonctionnant qu'avec un seul thread (cela dit, le reste du programme devra peut-être tourner avec un autre thread en cas d'interface graphique ou autre...) quelque soit le nombre de connexion à gérer.

La bibliothèque communique avec le reste du programme par un système d'écouteurs : en cas de nouvelle connexion, des évenements sont envoyés à qui veut bien l'entendre et permettent un éventuel traitement par le reste du programme. J'ai également intégré deux niveaux d'évenements : ceux bas niveau (poll retourne, des octets sont envoyés ou reçu, une connexion s'est créée ou a été fermée), et ceux de haut niveau (liaison établie, une requète a été reçue, etc...).

Le seul problème est que la portabilité Windows n'est pas assurée. En effet, le problème est le suivant. Un appel externe à la bibliothèque demande l'envoie de données. Ces données sont ajoutées dans une file, et devraient être envoyées au porchain tour de boucle de poll. Malheureusement, poll n'a pas été avertit qu'il devait vérifier si des données peuvent être envoyées sur la socket. Résultat, poll ne peut pas prendre en compte les nouvelles données, et reste bloqué jusqu'à ce qu'un autre évenement vienne le réveiller. Comme cet évennement est completement indépendant des données à envoyer, on ne peut pas garantir que les données partiront, et encore moins qu'elles partiront tout de suite. L'astuce est donc de créer un tube (un pipe), et de mettre la sortie dans la liste des descripteurs que poll doit surveiller. Lorsque l'on veut envoyer des données, il suffira dont de mettre un caractère dans l'entrée du tube, ce qui aura pour effet de réveiller poll. On pourra donc rafraichir sa liste de descripteur, et donc lui permettre de surveiller la socket en écriture, et éventuellement écrire les données si cette socket est prete.

Le problème est que sous windows, l'appel poll est implémenté dans winsock, ce qui a pour effet qu'elle ne peut pas prendre en compte des descripteurs autres que des sockets, et donc pas notre malheureux tube qui permet de réveiller poll quand des données doivent être envoyées.

On pourra dire que je réinvente une ènième fois la roue, mais tout ce fatra me permettra de me concentrer sur les couches de plus haut niveau sans avoir à gerer le reste, et surtout, sans avoir a gérer les complexités d'une bibliothèque plus imposante, qui fait tout toute seule et qui, au final, ne possède pas la petite propriété qui fait que ça marche comme il faut.

Notes

[1] On n'a plus ni télévision ni téléphone (et donc pas d'ADSL) depuis les violences de samedi soir (mise à feu des encombrants et du local poubelles)

le samedi 5 novembre

Ma banlieue qui se déchire

J'ai peut-être été un peu sommaire avec l'entrée précédente, alors je vais être un peu plus bavard ici.

Cela fait maintenant 23 ans que je vis à Noisy le Grand, dans le sud de la Seine Saint Denis. J'ai pu assister à la descente aux enfers de mon quartier jusque dans les années 90 puis à sa lente remontée ces dernières années. J'ai pu assister à la descente aux enfers de mon collège, je n'y suis pas resté assez longtemps pour apprécier la suite des évenements. J'ai pu assister à la réussite de mon Lycée, coincé entre les quartiers du Pavée Neuf, du Mont d'Est de Noisy, et de la Résistance de Neuilly. Cette réussite est notamment du à l'esprit de tolérence et d'ouverture qui y reignait. Il me manque peut-être le recul d'une vie "à l'extérieur", mais j'étais quand même aux premières loges pour y voir comment ça se passait ici.

Les ennuis de mon quartiers se sont subitements interrompus le jour où l'on a changé de de syndic et de bailleur principal. À ce moment, de très gros travaux de réhabilitation ont été effectués (changement des portes, rénovation des halls, et de tous les locaux communs, peinture dans les escaliers, changement des ascenseurs, nouvel ensemmage des pelouses, télé par satellite). C'est à ce moment aussi que tous les locataires insolvables ont été expulsés. On pourrait croire que ce dernier point est néfaste, mais il a permis à tout le monde de comprendre que c'est avec les loyers des habitants que les gros travaux ont été effectués. Que faire des gens expulsés ? En général, personne ne se pose de question à leur sujet. C'est bien dommage, parce que c'est principalement cette population qui pose problème. Leur relogement devrait passé par une resocialisation complète, mais c'est le genre de chose plus facile à dire qu'à faire.

Depuis, ce n'est pas marrant tous les jours, mais ce cadre de vie a évité à mon quartier de devenir une espèce de zone de non-droit. Cela est également due à la faible population du quartier (celui-ci habrite moins de 700 logements, à comparer aux 3000, et autres 4000). Le sort du Pavé Neuf, acceuillant bien plus de monde et n'aillant pas bénéficié de la même impulsion que le Mont d'Est, est bien moins enviable : même si ce n'est pas encore la "zone", la délinquance y est bien plus présente qu'au Mont d'Est. Le résultat probable du regroupement massif d'une population accumulant les problèmes (problème de langue, manque d'intégration, chômage généralisé, pauvreté, etc.) se traduit en général par le développement d'une économie souteraine qui partage bien des attributs d'une mafia. Et Noisy le Grand n'est rien par rapport à d'autres villes de Seine Saint Denis.

Pendant de longues années, les hommes politiques de tout bord n'ont pas pretés attention aux différents signaux envoyés par tous les observateurs de ce qu'on apelle "citées", doux euphémisme pour qualifier ces abbérations. Après tout, les gens qui vivent dedans ne votent pas, par désinterêt ou tout simplement parce qu'il n'en n'ont pas le droit. Alors à quoi bon améliorer leur sort ? De toute façon, il n'y a plus de sous. La nature humaine étant ce qu'elle est, un mode de financement alternatif[1] a fait son apparition. (Au moment où j'écris ces lignes, un hélicoptère vient de passer tous feux éteinds) Évidemment, ce nouveau circuit financier s'affranchie completement des lois de la République, et trouve sa main d'oeuvre parmis tous les gens désoeuvrés de ces quartiers.

Et le problème est là : la jeunesse des banlieues est confronté à un choix : soit elle tente de sortir de ce guéppier, bercée par les discours républicains loins des réalités, soit elle rentre dans le système. Et dans cet univers, le système, c'est la délinquance.

Les solutions de l'époque auraient été de dissoudre ces grands ensembles, et de respecter les promesses de liberté et d'égalité claironnés à qui veut bien l'entendre, voir même (et c'est là le plus dur), d'instiller une certaine fraternité entre les Français-qui-ressemble-à-des-Français, et les Français-issus-de-l'immigration. Mais c'est dur d'accepter qu'une partie de son salaire aille à plus pauvre que soit (et oui, c'est ça la fraternité, c'est payer des impôts pour les autres), et pire ! qu'une partie de celui-ci serve à des gens qui de toute façon ne travailleront jamais. Il faut dire que rien n'incite au travail dans ce bas monde. C'est tellement dur d'accepter de payer pour les autres que la plupart des gens préfèrent ignorer ce qui se passe dans ces quartiers, ou pensent à des solutions simples plus proche de la barbarie que de l'ouverture. Laissez faire, puis taper de temps en temps quand ça fait trop désordre au 20 heure, je considère en effet que c'est de la barbarie.

Les solutions actuelles qui permettraient de mettre fin à cette situation sont tellement loin des réalités de la France d'en haut qu'elles ne seront jamais mises en application. Commençons par la fin : le but est de mettre fin à cette mafia nouvelle génération. Les enquètes de police et les lois n'ont jamais montré leur efficacité dans ce domaine jusqu'à maintenant (le grand banditisme a toujours existé, à ce qu'il me semble, et tend même à se développer). Tout au plus une certaine forme de régulation molle sur le phénomène. Il ne s'agit pas d'incompétence, mais la difficulté de la tâche n'est pas compatible avec la rudimentarité des moyens. Que faire dans ce cas ? Décréter l'état d'urgence ? Je ne pense pas que cela change quoique ce soit, si ce n'est les abus manifestes (comme ceux de la vidéo). Donner plus de moyens ? C'est peut-être une piste, en privilégiant l'investigation, les enquètes riguoureuses et transparentes (et non pas les forces de repressions qui ne sont qu'un pansement sur une hémoragie). Malheureusement, cela augmente d'autant les risques de bavure et la transformation en un État policier.

Une autre approche consisterait à supprimer son objectif. La délinquance urbaine vend entre autre de la drogue. En légalisant la vente de drogue (ou plus précisement en la nationalisant), on coupe l'herbe sous le pied des dealers, et c'est une précieuse manne financière qui disparait. On peut aussi agir sur la main d'oeuvre : rendre plus interessant le travail légal. Encore un voeux pieux, quand on voit comment ça fonctionne dans les entreprises.

On en est à tenter de décourager le travail illégal. (L'hélicoptère au dessus se trouve être un équipement des pompiers, que je salue pour leur remarquable courage ! Pour la petite histoire, ça cramme fort derrière le Pavé Neuf, hier c'était les poubelles en bas) Si la piste du travail légal n'est pas exploitable, il faut bien leur trouver quelque chose à faire, qui soit plus rentable que la vente de drogue. C'est la condition pour l'arrêt de ces traffics.

Dans tous les cas, il n'y a pas de solution miracle, il faudra y consacrer des moyens à perte si l'on veut que tout cela cesse un jour.

Pour finir, sachez que ça brule en bas de chez moi, et que d'apres Adrien, les "racailles" locales n'ont qu'une seule idée en tête : que Noisy le Grand passe à la télé. C'est tout aussi désespérant que les déclarations de Nicolas Sarkozy.

Notes

[1] Vous voyez, pas besoin d'être journaliste pour manier l'euphémisme !

Vive Sarkozy

Pan ! Pan !

Démonstration en images

le mercredi 2 novembre

La fête des morts

(rires d'outretombe)

Il doivent être content les gens en bas (ou en haut, c'est selon le référentiel) de ne plus avoir à supporter un patronintrensigeant.

le mardi 1 novembre

Compagnon bitume

Bon, vu qu'on me demande de diriger des parties de Bitume, et que je suis une quiche en calcul mental, et que je suis tres fort en trucs futils, je me suis dis (sur une idée de FX) que j'allais faire une jolie interface en pyqt (parce que c'est la techno à la mode dans ma chambre) qui me permettrait de cliquoter un peu partout, et surtout de me décharger de tous ces calculs qui me prennent plus la tête qu'autre chose...

De là est né le Compagnon Bitume, qui me permet d'introduire des persos à la volée, de lancer les dés avec un aléatoire ne dépendant pas de l'usure des dés ou de leur fabriquant, de lancer des D7 et des D9 si j'en ai envie, et d'implémenter les règles bizarres de FX sans douleurs (alors si tu est entre 2,5 mètre et 4,3 mètre de la cible en mouvement, tu prend la racine carrée de la somme du jet, que tu multiplie par l'exponentiel de la difficulté indiquée table 3 des nouvelles règles). Clic clic et c'est fini.

On passe en test cet après midi. Sinon, le code blablabla sous GPL blablabla je sais pas ou le mettre blablabla demandez moi.