Jezz blog

Jérôme Pouiller : contact | CV

dimanche 30 décembre 2007

XDMCP couplé à un VPN

Vous connaissez ma mefiance envers les soi-disantes révolutions qui ne font que reinventer la roue. J'ai lu récement cet article. J'ai donc décidé, de faire quelque chose :

  • de plus puissant
  • en quelques heures
  • fonctionnant avec des technologies d'il y a 20 ans
  • portable sous Windows, Mac, Linux, BSD, SGI, etc...
  • nécéssitant seulement un client lèger

Bref, j'ai décider que de taper

 echo "XDMCP = true" >> /etc/kde/kdm/kdmrc

Vous savez tous qu'il est possible à des clients graphiques de se connecter à un serveur X distant en exportant correctement la variable d'environnement DISPLAY et en ajoutant le bon cookie à la liste des cookies authorisés à se connecter. Cette technique est portable sous Windows avec le serveur X de MinGw. Elle est très rapide à mettre en place sur des réseaux locaux. Quand on veut la mettre en place sur des machines distante,s on se retrouve souvent confronté à des problèmes de NAT, les serveurs X étant souvent des machine de bureau. On peut contourner le problème en utilisant des tunnels. Les tunnels posent des problèmes de DNS et d'allocation de ports si on l'utilise intensivement. Il faut mieux utiliser un VPN. J'ai personnellement choisi OpenVPN car c'est portable et simple à mettre en place.

Une fois votre VPN installé, vous pouvez executer n'importe quelle application sur une machine distante et l'utiliser comme si elle était éxecutée en local. Mieux que ca, vous pouvez éxécuter des applications de plusieurs machines distantes simultanément. De plus, les informations transmises sont des instructions X. Cela signifie que du texte à afficher est transféré comme une chaîne de caractères et non comme du graphisme, comme pour VNC. De plus la connection est compressée par le VPN[1]. Par conséquent, vous n'utilisez pas beaucoup plus de bande passante qu'une simple connexion web.

On voudrait maintenant passer à l'étape supérieure: avoir l'ensemble de sa session à distance. XDMCP sert justement à ca. Avec XDMCP, on va demander à la machine distante de se connecter sur notre serveur X. {k,g,x}dm gèrent XDMCP. Il suffit d'ajouter XDMCP = true à leur fichier de configuration et d'authoriser tous les hôtes à se connecter (dans le fichier Xacces). Dans le cas d'un hôte ne possèdant pas de carte graphique, on supprimera les connexions locales de manière à tranformer {k,g,x}dm en simple service réseau. On démarre ensuite un serveur X ainsi:

 X -query 192.168.2.1 -from {votre IP}

Remarquez que le serveur XDMCP doit pouvoir résoudre un reverse DNS sur cette IP

Et vous obtenez un serveur X avec une fenêtre de login sur votre hôte distant. Vous avez maintenant un système complet, avec un client lèger (seul un serveur X est nécéssaire). Ca fonctionne sous Windows (OpenVPN et X sont portés). Vous pouvez encore éxécuter des applications locales [2]. C'est utilisable quotidiennement si vous avez une connexion internet haut débit. Et j'aurais pu faire ca il y a 20 ans[3] [4].

Ceci est actuellement installé sur sysmic.org. Une kubuntu avec un kdm en XDMCP est installé dans un chroot[5].

J'aimerais que quelqu'un teste ceci sur un terminal embarqué du type téléphone Nokia. Je cherche des volontaires...

Notes

[1] Utilisation de lzo sous OpenVpn

[2] En les lancant d'une autre session et en exportant correctement DISPLAY

[3] XDMCP à été inventé en 1989

[4] à l'exception qu'à l'époque les connexions haut débit était plutôt rares

[5] Histoire que le serveur de base reste propre. De plus, ca pourrait permettre de donner le choix entre plusieurs distributions

mercredi 1 novembre 2006

Hébergement de xulfr

Le serveur de sysmic.org héberge désormais aussi le célèbre site xulfr. La migration s'est bien passé. Le serveur tiens la charge. Je suis fier de pouvoir donner ma petite contribution à la communauté de Xul.

mardi 22 août 2006

Tricky shell

Je viens de m'apercevoir que la syntaxe suivante fonctionnait parfaitement en shell :

 true && foo() { echo ok; } || foo() { echo ko; }

Je ne sais pas si je dois trouver ça beau ou pas. Ca a un arrière goût de fonctionnel, mais pas assez pour que ça soit utilisable.

lundi 7 août 2006

Add kListViewSearchLineWidget to Twinkle addressbook

I have written a quick and dirty patch which add a kListViewSearchLineWidget (a filtering bar) to addressbook form of Twinkle (see picture).

twinkle-patched Why this patch is dirty?

  1. Because it force twinkle to be dependent of kdelibs.
  2. Because of Qt designer (or KDE widgets plugin) have a bug with kListViewSearchLineWidget class. It don't call correctly constructor of this class. So I have to go round adding this widget in init() method.

You will find:

Nom de domaine en UTF8

Une expérience intéressante de jd. Néanmoins, je ne suis pas d'accord avec les résultats de son expérience. Tout d'abord, http://www.domainsite.com[1] est compatible IDN. Ensuite, la compatibilité IDN se fait au niveau client et non au niveau des serveurs (cela poserait trop de problème d'encodage)[2]. Il suffit d'enregistrer un nom directement en Punycode pour que cela fonctionne avec n'importe quel domain register.

PS pour Julien: Un cercle suscrist (tel que Å) s'appelle un "rond en chef"

Notes

[1] Un petit whois sur ®.com (Notez au passage que la commande whois supporte bien l'IDN) permet de voir que domainsite.com est le domain register

[2] On remarque au passage que Mozilla gère bien l'IDN, mais pas Konqueror

jeudi 3 août 2006

Upade of par multibyte encoding patch

Follow up to bug report #310495 in debian bug tracking system, I have updated my previous patch for par.

As suggested by some Debian mainteners, I have changed structure of my directory:

lundi 3 juillet 2006

L'œuf et la poule

Est-ce que c'est l'œuf qui a trouvé la poule ou la poule qui a trouvé l'œuf?

Comprendra qui pourra....

vendredi 30 juin 2006

Documentation sur le développement de systèmes embarqués

J'ai rassemblé et un peu remis en formes quelques notes que j'avais au sujet de la programmation embarquée avec gcc la GNU toolchain. Vous trouverez le résultat ici

jeudi 22 juin 2006

Add multibyte characters support in "par"

Some of you know command "par". Par is a powerfull text reformater. It is especially used in text editors like vim. But, par don't support multibyte characters (typically UTF8 encoding). I have made a patch to support multibyte and double-width characters. Now, you can reformat a text like :

/***********************/
/* English is a West Germanic language heavily influenced, in */
/* comparison with other Germanic languages, by French and Latin. */
/* On appelle français (et française au féminin) les habitants de la France */
/*  */
/* [ Ανήκει επίσης στο βαλκανικό γλωσσικό δεσμό. ] */
/* [   ] */
/* [ Русский язык — язык русских, государственный язык России и ] */
/* [ Белоруссии, ранее — язык межнационального общения СССР ] */
/*  */
/* اللغة العربية هي لغة سامية، مشتقة عن السريانية (نسب */
/* ة الى سورية) والآرامية والعبرية و الأكادية، و هي لغة العرب، سكان شبه الجزيرة */
/*                           */
/*************************/

after ":'<,'>!par 42rj":

/***************************************/
/* English is a West Germanic language */
/* heavily  influenced, in  comparison */
/* with   other  Germanic   languages, */
/* by  French  and Latin.  On  appelle */
/* français (et  française au féminin) */
/* les habitants de la France          */
/*                                     */
/* [ Ανήκει  επίσης   στο  βαλκανικό ] */
/* [ γλωσσικό δεσμό.                 ] */
/* [                                 ] */
/* [ Русский  язык  — язык  русских, ] */
/* [ государственный   язык   России ] */
/* [ и  Белоруссии,   ранее  —  язык ] */
/* [ межнационального общения СССР   ] */
/*                                     */
/* اللغة العربية  هي لغة  سامية، مشتقة */
/* عن  السريانية  (نسب  ة  الى  سورية) */
/* والآرامية والعبرية و الأكادية، و هي */
/* لغة العرب، سكان شبه الجزيرة         */
/*                                     */
/***************************************/

Notice that par has automatically detected prefix and suffix and changes of paragraph. Change of text direction[1] is not a problem. It has also resized non-textual lines ("r" option) and justified text ("j" option).

You can find :

Don't forget to correctly set $LANG environment variable to notice par which encoding you want.

Notes

[1] Arabic language is read from right to left

jeudi 15 juin 2006

Up!

Ca fait 7 mois que j'ai quasiment disparu du net... C'est fou comme le temps passe vite. Cette fois, j'en ai eu marre, j'ai pris un véritable hébergement dédié. Cette fois, c'est du solide, sysmic.org restera up pour longtemps

mardi 6 juin 2006

L'histoire se répete

J'aime bien faire des comparaisons entre les nouvelles technologies et les anciennes (vous avez remarqué hein?). Ca me permet de remarquer qu'il existe peu de choses révolutionnaires. Ca me permet aussi de prédire leur avenir. Aujourd'hui : Mozilla

Allons, cherchons un sur quel projet le développement de Mozilla est calqué... Mozilla est portable car on s'est permis de refaire toutes les fonctions. En fait, on a tellement bien fait les choses que l'on peut utiliser son moteur pour bien d'autres choses que son but original. Au lieu de simplement se limiter à son rôle, on a commencé à étendre ses fonctionnalités de manière phénoménale. Certains disent que c'est génial car portable, puissant, extensible, uniforme, etc..., d'autre remarquent qu'ils avaient besoin d'un navigateur, pas d'un OS... Allons, à quoi ca vous fait penser?

Emacs! Et oui, il y a beaucoup de similitudes entre ses projets... Le "tout-texte" est remplacé par le "tout-xml" mais , on garde les principes de base. Cela nous permet de faire des pronostiques sur l'avenir de Mozilla : Un projet qui a encore de grand jours devant lui et qui gardera son fanclub même après sa chute.

dimanche 4 juin 2006

Les effets de mode

Ah ! J'attendais avec impatience la sortie d'une interface web dépassant les limites du raisonnable pour illustrer mes propos. J'ai trouvé JotForm. Il s'agit d'un éditeur de formulaires en DHTML générant du Html/Js. Tout d'abord, soyons clair : je ne remet pas en cause l'utilité d'avoir un éditeur de formulaire.

Maintenant, imaginons combien de temps il a fallu à cette équipe pour créer JotForm. Pas mal de temps hein? La preuve, ils ont fait un site web complet pour vanter les mérites de leur éditeur. Combien de temps faut-il pour faire un outil similaire en client lourd? Le plus gros est déjà fait dans le toolkit graphique. Bref, il faut tellement peu de développement, que ça serait presque passé inaperçu (et si ça se trouve, à existe déjà).

Regardons les fonctionnalités. Ok, c'est impressionnant car nous sommes dans un environnement web... Mais si avait été en natif, est-ce que ça aurait été impressionnant? Glisser-déplacer, placement à la souris... Rien de transcendantal. En fait, on remarque même que c'est limité : pas de gestion sur plusieurs colonnes, etc... Envoyez un bug report sur le placement en plusieurs colonnes... Imaginez le développement que coûterait cette fonctionnalité. Comparez avec un client lourd.

L'interface. Jolie, non? Je ne veux pas d'une interface jolie. Je veux une interface uniforme entre mes application. Où sont mes raccourcis clavier? Comment je fais pour les configurer si il y en a? Et les icônes uniformes dans mon bureau qui me sont devenus intuitifs? Et les couleurs très fortes en contraste que j'avais configuré à cause de mes problèmes de vue? Et le comportement des widgets que je connais bien? Et la gestion du focus sous la souris, etc... Actuellement, faire une application web, c'est un comme programmer avec la xlib, on réinvente la roue, on utilise pas les standards. Si il y a des innovations en matière de widgets, vous n'en profitez pas. Bref même si votre application en parfaite, elle est destinée à mourir dans un an ou deux car elle ne bénéficiera pas des nouveautés.

Vous me direz "c'est portable!". Non! c'est portable sur les architectures possédant un navigateur web! Et encore, seulement IE/Firefox. En gros, c'est beaucoup moins portable que PyGtk ou même C/Gtk et je ne parle pas de Mono ou Java. Sans compter que vous connaissez les problèmes que pose la compatibilité entre les navigateurs...

Enfin, regardons maintenant les fonctionnalités... Ok, impressionnant parce que ça fonctionne dans le navigateur[1]. Allez vous l'utiliser? Peu de chance. Il s'agit d'un outil de développement. Vous n'avez rien à faire que ce soit une application web (Pas comme un webmail ou votre calendrier que vous aimez consulter de n'importe où). Vous n'allez pas payer plus cher quelque chose qui a moins de fonctionnalités que son équivalent en lourd?

Bref, une application web, certes, ça peut être utile[2]. Mais, il ne faut pas oublier tous les inconvénients : coûts de développement, pas de cohérence de l'interface utilisateur entre les applications web, pas de bibliothèques standard pour le web, ergonomie limité, difficulté d'extension, difficulté de compatibilité entre les navigateurs... Ces problèmes seront surement moins important le jour ou il existera un toolkit graphique standard pour le web. Malheureusement, en raison du manque de cohérence entre les différents acteurs du marché et de la difficulté technique d'une telle entreprise[3], ce jour n'est pas pour demain.

Pour conclure sur une règle encore plus générale. Une IHM ne se choisit pas par effet de mode ou par un designer. Chaque interface à ces avantage et ces inconvénients :

  • Ligne de commande: scriptable, rapide à faire, rapide à utiliser, ...
  • Ncurse: facilement utilisable à distance par ssh, ...
  • Graphique: ergonomique, user friendly, ...
  • Xul/Java: déploiement facilité, facilité d'accès aux données centralisées, ...
  • Web: disponible n'importe où, ...
  • ...

Notes

[1] Un peu comme les fractales dans vim, c'est un joli jouet

[2] Un webmail par exemple

[3] Il faut plus de 5 ans pour déboguer complètement un toolkit graphique

mardi 28 février 2006

I am back!

Ca y est, mon site revient en ligne. Bon, je ne garantie pas un uptime extraordinaire pour le moment. Laissez-moi le temps de faire mon petit bazar.

dimanche 12 février 2006

Easter-Eggs

Easter-Eggs, c'est ma boite... ou plutôt, LA boite. Celle dont je rêvais. Celle que j'aurais pu créer.

Tout d'abord, elle se situe à Montparnasse. Ca n'a l'air de rien, mais, c'est absolument génial d'être à 10min, des endroits ou sortir de son appartement, de ses amis, des restaurants, du cadre parisien, etc... J'en connais beaucoup qui travaillent en banlieue et qui n'ont pas tout ces avantages.

Easter-Eggs ne fait pas de régie, il fait du forfait et du support, mais pas de régie. C'est très important, sinon, l'argument précédant tombe à l'eau. Cela permet aussi d'avoir une équipe soudée que l'on voit tous les jours.

L'équipe est composé de 12 personnes. Comme je l'ai souvent clamé, je ne voulais pas travailler dans une grosse structure. Je déteste l'aspect impersonnel et rigide de ce genre de boite. Je préfère une entreprise où on peut facilement s'arranger, s'adapter, changer, où on est au courant de toutes les informations, etc... sans passer par une hiérarchie stricte.

Je suis embauché chez Easter-Eggs à tant que développeur système. Exactement ce que je voualit. Je travaille en ce moment sur un système de reconnaissance de l'écriture embarqué pour les aveugles. En plus d'être techniquement intéressant, il est très valorisant pour moi (vous savez que j'y attache une importance).

Jusqu'à présent, j'ai vu beaucoup de missions très intéressantes chez Easter-Eggs. Même si ils en font, il y a peu de développement Web, et autres technologies ennuyeuses[1]. En fait, Easter-Eggs vends son expertise technique. Ca signifie que les missions sont de courtes durées Ca n'est pas comme une SSII traditionnelle qui vends avant tout de l'ingénierie, de la conception et des ressources. Elles visent plutôt les projets complexes par leurs tailles mais sans complexité à fine granularité. Dans ce genre d'entreprise, le moyen de faire un boulot intéressant, c'est de devenir chef (IMHO).

Jusqu'à présent, ces critères sont difficiles à obtenir mais, en cherchant n peu, on peu trouver des boites similaires. Mais Easter-Eggs possède aussi un esprit, des symboles, des idées dont ils sont fiers et qu'il ne vendent pas (rien que de respecter ses idées et de refuser de les vendre c'est déjà énorme). Et parmis ces idée : le Libre, l'égalité des chance, la démocratie, l'humanitaire, etc... Et là, je suis au delà de mes espérances...

Easter-eggs appartient à ses employés. Ce sont eux qui la font vivre prennent les décision (à la majorité). Toutes les semaines : conseil d'administration(enfin, réunion de la boite :-) ). Tous les ans, on élit le gérant et tous le monde est payé au même salaire. Cela donne à chacun une responsabilité, une motivation et une confiance... Bref, une bonne ambiance de travail (Rien à voir avec ce que j'ai vu ailleur).

Cette entreprise auto-gérée basée sur la confiance fonctionne car ses membre sont bien choisi et ils ont un point commun : ils appartiennet au monde du libre. Ils sont tous capable de donner sans chercher à recevoir et c'est ça qui fait que ça marche.

Magnifique entreprise et magnifique expérience sociale. Je suis fier d'en faire partie.

Notes

[1] IMHO

Beaucoup de changements

Une fois n'est pas coutume, un billet pur raconter ma vie...

Comme vous avez pu le remarquer, mon blog est down depuis plus d'un mois et demi. Effectivement, il a été difficile pour moi de le maintenir.

J'ai trouvé du travail chez Easter-Eggs. J'en suis très fier car c'est exactement la boite que je cherchais (et, sans me vanter, je pense que je suis exactement la personne qu'ils leur fallait :-) ). Je reviendrais sur mon travail chez Easter-Eggs. J'y travaille depuis le 2 Janvier. J'ai donc cherché une collocation pas trop loin, pas trop chère, pas trop mal, et tout... Je suis passé par appartager.com (ça marche pas trop mal), j'ai gallèré comme il se doit quand cherche un appartement sur Paris. J'ai vu plusieur choses intéressantes, mais, jamais parfaite, même si parfois, ça m'aurait bien plu de faire une colloc avec eux. J'ai vraiment croisé des gens avec qui j'aurais aimé garder contact [1]. Et finalement, au bout de deux semaine de recherches intensive et de squat chez différents amis [2] je suis tombé sur un appartement, assez grand, bien équipé, pas cher, à 10min de Montparnasse, sur la ligne 13, à Malakoff, à 5min de chez Géraud, Titoune et Kleuk [3]. Au début, c'était un peu bisare [4]. Finalement, ça fait bientôt un mois que j'y suis et je m'adapte bien, sutout depuis que j'ai mes meubles et que j'ai pendu ma crémaillère. Ca m'a permis d'officialiser mon logement. Alors que j'avais encore quelques doutes au début, je le trouve vraiment chouette maintenant. Bref, avec tout ça, mon serveur, s'est retrouvé un peu délaissé (chez mes parents, puis, à Paris sans connexion internet, puis avec des problèmes hardware, puis de Wifi, puis de passerelle, etc...)

Je vais faire un post spécialement pour Easter-Eggs, parce qu'elle vaut le coup...

Notes

[1] spéciale dédicace à Karine, aux gens de la Motte Picquet et de Chatillon

[2] Merci Carine et, Paul, Sophie et Manu (qui m'ont supporté presque une semaine), ainsi que Titoune (qui en plus sait bien recevoir), Greg, Marco, Pilou, Géraud, Raymond, Titi, Sabrina, Gus (que je connais à peine), et je crois que j'en oublie

[3] qui s'en vont tous quand j'arrive :-(

[4] Surtout que je n'ai comme affaire qu'un matelas et mon sac de voyage pendant deux semaines