humani nil a me alienum puto

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

lundi 11 février 2008

raid(e) geek

On me pose beaucoup de question sur la geek attitude, ces derniers temps (et on remarquera que je n'ai pas commencé ma phase par "L'on", même si j'en avais très envie). Eh bien voici un magnifique exemple : du RAID avec 5 lecteurs de disquettes sous OS X. On remarquera que tous les ingrédients sont rassemblés : le truc est totalement inutile (justification : "Why ? Why not." ; tout est dit), c'est techniquement évolué (m'enfin, rien de système, le gars ne code pas de driver, il est sous OS X après tout), incompréhensible pour le quidam moyen (c'est quoi RAID ?), et très drôle pour les acolytes geeks (phénomène de reconnaissance dans l'appartenance à la caste sociale). Pour finir, après avoir réalisé cet exploit, notre bonhomme renchérit avec encore plus technico-débile : la même chose avec des lecteurs de musique. Magnifique spécimen ! (sortez le formol...)

mardi 5 février 2008

révise ton geekisme

Il aura fallu que je poste un billet geek (ça faisait longtemps), pour que je tombe sur la poste, côté bagoo (je cherche toujours à débloquer ma carte bancaire : c'est sur 30 jours glissants, le plafond, il va falloir attendre le 14 pour que je puisse m'en servir à hauteur de 1000€, c'est la merde ! Idem pour les retraits au guichets, mais sur 7 jours, sauf que comme le paiement est bloqué, je suis contraint de tout payer en liquide, que je retire, et qui me fait donc coller au second plafond, géniale l'affaire...), sur un article semi-crétin :

« Geek », qui se prononce « guik », est l’équivalent anglais de « fada » ou « allumé ». Bill Gates, fondateur de Microsoft et Steve Jobs, grand gourou d’Apple sont considérés comme les premiers geeks  de l’histoire. Car à l’origine, le mot geek désignait un mordu d’informatique qui passait ses journées à programmer sa machine au fond d’un garage. Aujourd’hui, il est utilisé pour définir plus largement tous les adeptes de nouvelles technologies et de gadgets électroniques, mais aussi de jeux vidéos ou de jeux de rôle en réseau, ou encore de science fiction. Les geeks ont généralement plusieurs ordinateurs, ne jurent que par les logiciels libres et fréquentent les soirées « First Jeudi », qui y sont consacrées (http://paris.firstjeudi.org*). Star Wars, le Seigneur des Anneaux et Matrix figurent au top des films cultes du geek, et Superman ou Conan le Barbare sont leurs héros préférés.
 
Enfin, si vous voulez connaître votre degré de « geekitude » (Geek attitude), voici un test en ligne :
http://patate.ressource-toi.org*.
 
* Coût de connexion selon fournisseurs d’accès

Je laisse même l'astérisque, c'est énorme. Du coup, j'ai refait le test ; je crois que j'avais obtenu à peu près le même score, avant, 2727. Bon, classer Bill Gates et Steve Jobs parmi les geeks, c'est extrêmement osé, mais en plus dire que ce sont les premiers, ça sent le pigisme payé au mot (bon sang, c'est pourtant pas difficile de copier wikipedia !) ; étrangement, ça parle ensuite de logiciel libre, et même des first jeudis ! (ça tombe bien, j'avais oublié de m'inscrire) Plus tard, ça retombe dans le n'importe quoi avec l'iphone...

Un vrai geek, il bave de plus en plus sur l'EeePC, sur lequel on peut mettre compiz (en changeant la distrib', mais bon), avec de jolies vidéos (avec une wiimote, ça troue le cul) et même des tests en live (c'est pas ça qui va faire baisser la popularité ahurissante du truc). Il se dit que c'est ballot, de devoir attendre, mais de toute façon, il n'en n'a pas une utilité immédiate (ferait mieux de lire !), et puis... sa carte bancaire (pardon, bleue, pas pareil) est bloquée à cause d'une entreprise de dé-geekification trop violente à son goût. Pas d'bol.

geek stuffs

Versac délirait sur une étude de la fréquence d'apparition des "dying in XXXing accident" sur google.

Ticapix délirait sur le hacking hardware de l'EeePC (ahurissant, encore un qui a vraiment beaucoup de temps à perdre).

Et voilà ma partie : openBSD. Le truc du geek suprême, paraît-il. Ah, mouais, déjà, pour embarquer le bidule, on tombe vite sur un os :

(root)             60MB
/usr               420MB (no X) or 550MB (with X)
/var               25MB
/tmp               50MB
swap               32MB

 Those are minimum suggested filesystem sizes for a full system install. The numbers include enough extra space to permit you to run a typical home system that is connected to the Internet, but not much else.
 Keep the following facts in mind, however:
These are minimum values. Disk space is relatively cheap now, trying to squeeze your system into the smallest possible disk is rarely worth the effort. For special purpose applications, the above numbers can be made smaller, but you will need to experiment with it.

Déjà, c'est mal barré. (et en pratique, je confirme, j'en suis à 85mo, j'en chie pour virer des trucs ; sous Linux, ça m'aurait pris deux coups de cuillère à pots pour arriver à 20mo pour un système très complet, mais au moins, là, on a des packages, et des dépendances, ça aide)

Mais il y a pire encore. Comment gérer le multiboot avec ce machin user/developper friendly...

Multibooting is having several operating systems on one computer, and some means of selecting the which OS is to boot. It is not a trivial task! If you don't understand what you are doing, you may end up deleting large amounts of data from your computer. New OpenBSD users are strongly encouraged to start with a blank hard drive on a dedicated machine, and then practice your desired configuration on a non-production system before attempting a multiboot configuration on a production machine.

Heureusement, on propose une première solution ; ça vaut le détour :

Setting active partitions
 This is probably the most overlooked, and yet, sometimes the best solution for multibooting. Simply set the active partition in whatever OS you are currently using to be the one you want to boot by default when you next boot. Virtually every OS offers a program to do this; OpenBSD's is fdisk(8), similar named programs are in Windows 9x and DOS, and many other operating systems. This can be highly desirable for OSs or systems which take a long time to shut down and reboot -- you can set it and start the reboot process, then walk away, grab a cup of coffee, and come back to the system booted the way you want it -- no waiting for the Magic Moment to select the next OS.

OK, merci pour le conseil, je penserai au café ; du multiboot avec fdisk, vous en rêviez, openBSD l'a fait... Mais toujours très heureusement, il y a une seconde méthode. "Boot floppy",

If you have a system that is used to boot OpenBSD infrequently (or don't wish other users of the computer to note anything has changed), consider using a boot floppy. Simply use one of the standard OpenBSD install floppies, and create an /etc/boot.conf file (yes, you will also have to create an /etc directory on the floppy) with the contents:
     boot hd0a:/bsd

 to cause the system to boot from hard drive 0, OpenBSD partition 'a', kernel file /bsd. Note you can also boot from other drives with a line like: "boot hd2a:/bsd" to boot off the third hard drive on your system. To boot from OpenBSD, slip your floppy in, reboot. To boot from the other OS, eject the floppy, reboot.

Il suffisait d'y penser ! Là on se dit qu'on est arrivé chez les clowns. Pas du tout ! En effet, il reste une dernière méthode, absolument fabuleuse celle-là : "Windows NT/2000/XP NTLDR" (ouais, ça commence bien)

To multiboot OpenBSD and Windows NT/2000/XP, you can use NTLDR, the boot loader that NT uses. To multi-boot with NT, you need a copy of your OpenBSD Partition Boot Record (PBR). After running installboot, you can copy it to a file using dd(1), following a process similar to:
        # dd if=/dev/rsd0a of=openbsd.pbr bs=512 count=1
[...]
Now boot NT and put openbsd.pbr in C:. Add a line like this to the end of C:\BOOT.INI:
        c:\openbsd.pbr="OpenBSD"

 When you reboot, you should be able to select OpenBSD from the NT loader menu. There is much more information available about NTLDR at the NTLDR Hacking Guide.

Même pas peur !!!  (moi j'avais peur de devoir faire de la cuisine en hexa sur la tête de la flash, eh bein c'est parti ! >_<" )

vendredi 18 janvier 2008

developer unfriendly (user, n'en parlons même pas)

vlan configuration: off-topic
De : "Xxxx Nietzsche" <john.xxxxxxxxx@xxxxx.com>
  À : misc <misc@openbsd.org>
  Date : Aujourd'hui 14:49:55

Dear gentleman,

i am starting with vlan topic right now. I am in need to get two dell
powerconnect 2724 switches to implement 3 vlan. I know how to
configure the ports for desktops, but i am having a hard time
configuring the port(s) that should interconnect the switches itself.
Since the traffic in the ports (one in each switch) can handle traffic
for every 3 vlan (once there are desktops of the 3 vlan on each
switch), how should i configure those uplink ports?

Thanks a lot for your time and cooperation.

Best regards.

PS: Does anybody suggest a more specific mailing list on this regards.


Réponse une heure plus tard :

Re: vlan configuration: off-topic
De : Diana Exxxxxx <dexxxxxx@wrxxxx.com>
  À : misc <misc@openbsd.org>
  Date : Aujourd'hui 15:48:41

On Fri, 18 Jan 2008, John Nietzsche wrote:

> Dear gentleman,

Good thing you made this initial comment, it kept me from wasting my time
explaining how to do this task.

diana (who spent last night working on Cisco, Foundry and Netscreen gear.)

J'ai masqué à moitié (facile à recoller) le nom du premier parce que c'est encore plus drôle comme ça ; c'est vraiment son vrai nom...  Bref, bienvenue sur la mailing list (qui nécessite enregistrement, donc pas de lien, désolé) d'OpenBSD, là où règne la Theo de Raadt attitude entre les deux pelés et trois tondus qui utilisent encore ce système (qui fait réellement peur...).

lundi 24 décembre 2007

wii à la vision 3d

Un ami (l'une de mes plus vieille connaissance, de l'école primaire -- si ce n'est maternelle --, retrouvé après quelques années, merci copains d'avant :) ) m'a refilé ce lien, qui montre comment un universitaire a traficotté assez facilement sa Wii pour en faire un visionneur 3D. L'idée est simple, il s'agit d'inverser la wiimote avec le récepteur (changement de référentiel ?), et d'utiliser les infos de déplacement/éloignement, et inclinaisons diverses, pour synchroniser l'affichage vidéo 3D. L'effet est saisissant... "Head Tracking for Desktop Virtual Reality Displays using the Wii Remote", par Johnny Chung Lee de l'université de Carnegie Mellon, Human-Computer Interaction Institute (lien youtube).


jeudi 13 décembre 2007

Does someone understand code flow here?

        /*
         * This is subtle. Instead of calling do_follow_link() we do the
         * thing by hands. The reason is that this way we have zero link_count
         * and path_walk() (called from ->follow_link) honoring LOOKUP_PARENT.
         * After that we have the parent and last component, i.e.
         * we are in the same situation as after the first path_walk().
         * Well, almost - if the last component is normal we get its copy
         * stored in nd->last.name and we will have to putname() it when we
         * are done. Procfs-like symlinks just set LAST_BIND.
         */
        nd->flags |= LOOKUP_PARENT;
        error = security_inode_follow_link(path.dentry, nd);
        if (error)
                goto exit_dput;
        error = __do_follow_link(&path, nd);
        if (error) {
                /* Does someone understand code flow here? Or it is only
                 * me so stupid? Anathema to whoever designed this non-sense
                 * with "intent.open".
                 */
                release_open_intent(nd);
                return error;
        }

J'ai failli m'étouffer. Je crois qu'il est temps de se diriger calmement vers la salle Pleyel (c'est dans le kernel Linux, pour la 2.6.23.9, lignes 1795 à 1817 de fs/namei.c).

vendredi 7 décembre 2007

la solution pour les grèves à l'opéra

Toyota vient d'inventer un robot qui joue du violon (via /.). C'est le début du remplacement de l'orchestre, faudra juste penser aux machinistes ensuite. On finira par les chanteurs, à la rigueur (il faudra penser à du ion-polymère pour les batteries lors des soirées Wagner).  (en revanche, on essaiera de garder les jolies violoncellistes et contre-bassonistes, y'a un minimum à assurer)

"On n'arrête pas le progrès" ©

jeudi 6 décembre 2007

news for geeks

Classés par ordre de required technical skills :)  (si vous êtes gentils, y'a des trucs à la fin pour ceux qui ne comprennent que la ponctuation à ce type de billets ;)  ).

* Pour geeks embarqués :
  _ Ça bouge du côté de Novell. Après la prise de tête avec RH (bouh les râleurs à deux balles), l'on apprend que Concurrent revendra aussi la version temps réel de SUSE, dite SLERT (alors que jusque là ils ne revendaient que la RedHawk, mais étaient à l'origine des deux).
  _ Ça bouge beaucoup côté paravirtualisation ; comme je disais à mes étudiants, c'est clairement là que le front se trouve : OKLabs et son OKL4 (ouais, basé sur ce bon vieux L4 des familles) rattrape Trango (pour qui j'ai bossé, j'peux avouer maintenant ;) ) sur le support ARMv6 (ie ARM11), et publie son code en licence BSD, ce qui est méga cool. Pendant ce temps, TI investit dans l'autre concurrent français (à Trango) : VirtualLogix ; et on parle de gros sous...
  _ Deux autres fronts importants du Linux embarqué : les nouveaux devices innovents (par exemple le lecteur mobile de bouquins par Amazon, basé sur Access, tout un programme) ; et la connectivité poussé, soit une première partie de domotique, DLNA est le mot (enfin, le sigle) que tout le monde a à la bouche, ces derniers temps (encore une fois, on voit que Access sait où se trouve le marché, sont pas japonais pour rien -- s'ils pouvaient faire des trucs qui marchent, ce serait parfait :D ).
  _ Un dernier truc que je disais à mes étudiants : le Do-it-yourself ; petit article (6 pages) de rapides trucs et astuces sur la façon d'embarquer Linux, de développer (cscope dans emacs), d'intégrer (NFS, classique... pour Linux !). Au passage, rappelons que Linux marche une telle quantité d'archis que c'est parfois l'embarras du choix l'écueil (en l'occurrence, recherche d'un cpu 32bits tout bête, type PIC, mais rapide), en tout cas j'aurai trouvé au passage un provider trop pas cher.
  _ Pour geeks embarqués qui s'ennuient : comment accéder à la caméra intégrée au N800...
  _ edit: j'avais oublié : méthodes de l'embarqué pour CGI rapides : remplacer apache par Boa (que je n'ai jamais utilisé, mais réputé), et utiliser des cgi en C (faut avoir envie, la course aux printf). Mais ce n'est pas fini : ils utilisent du C compilé en JIT-like (flexibilité), avec le TCC du Belard (compilo C perso super-optimisé pour l'embarqué, il a pas peur :p ), qui a une option d'exécution directe. Après tout, il faut construire un arbre et l'exécuter, hein (c'est plus lent à construire que pour du shell, mais on gagne effectivement en temps d'exécution et en ressources). Gore ^^.

* Pour aspirants geeks :
  _ how about Linux swap space, où l'on pourra apprendre quelques trucs et astuces si l'on débarque un peu (genre créer une extension swap dans un fichier).
  _ Pour briller dans les dîners : le rm -rf /, c'est en fait très souvent désactivé par sécurité ; heureusement, Ubuntu est toujours là pour nous inciter à troller, puisque ça marche sans problème (cf le commentaire "It makes sense that the system is trying to protect it self. Self preservation is a sign of intelligence!" sous le premier post ; le contraire doit être vraie)

* Pour non geeks (at last) :
  _ Faire intéragir Kontact avec Google Apps, c'est cool (dommage qu'il faille encore une petite astuce pour la synchro du calendrier)
  _ Madriva 2008 est sortie en clé USB 4Go, clairement orientée pour utilisateurs windaube, avec des softs qui peuvent marcher sous la bête, et un système de boot basé sur boot.ini, de telle sorte qu'il est inutile de modifier le bios (il ne faut pas croire les machins uluberlus "sans passer par le bios", qui sont une mauvaise traduction et une très mauvaise connaissance du PC...). On trouvera la jolie page web, l'annonce plus sobre, et la revue par SVM. Véritable bureau mobile, possibilité d'enregistrer ses données dessus (visibles sous la daube), ça fait plaisir à voir ; 80€.
  _ Et pour finir, la révolution chez les n00bs/neuneu : l'offre n9uf "My easy" vient de sortir, 99€ ou 9,90€/mois, sans abonnement imposé, la EasyGate vise clairement le marché des gens qui n'y comprennent rien à l'informatique (99% de la population), et qui trouve ça très compliqué (95% à vu de nez ;) ). C'est clairement là que Linux peut intervenir, avec des environnement totalement intégrés, avec l'utilisateur pris par la main, et la mise à disposition d'application user friendly. Je vous laisse regarder leur site (où ils parlent clairement et explicitement des avantages de Linux, bien cité : boot rapide, pas de virus, pas de plantages.

dimanche 2 décembre 2007

pour rompre avec le laisser-aller

Ça manque d'informatique, dans le coin, vous ne trouvez pas ? :) Comme j'ai pris le soin de cultiver artistiquement les lecteurs geeks ces temps-ci, il est temps de cultiver geekement les amateurs d'art... Enfin, ça c'est la théorie, dans la pratique, je ne suis pas dupe non plus ;).

Commençons par des choses intéressantes : d'abord les classiques attributs en C pour gcc, que ceux qui connaissent trouvent banal (mes étudiants qui m'ont foutu la honte, y'avait une imprécision erratique sur mes slides >_< ), mais que bien des ingénieurs (et des chefs de projet) ne connaissent pas du tout (c'est la lose...). J'harangue tous mes lecteurs développeurs à apprendre aux moins les principaux attribute, qui servent tous les jours ou presque :

    * "format" indique le style de format, on pourra trouver une utilisation dans KonQueR, où se trouve une fonction glprintf, qui marche comme printf mais en sur l'espace 3D (pour les menus par exemple), et qui nécessite donc plus de paramètres. C'est pourquoi le premier argument indique "à la printf" (ou autre, mais c'est le plus pratique), le second à partir de quel argument l'on doit considérer le même type de format, qui s'arrête au troisième précisé. Ça permet d'avoir des warnings quand on va faire une bêtise au niveau de la correspondance avec les %s, %i, etc. Super pratique.

extern int   my_printf (void *my_object, const char *my_format, ...)
__attribute__ ((format (printf, 2, 3)));

    * Mon préféré : packed. Il permet de minimiser l'espace mémoire requis, c'est-à-dire qu'il évite l'alignement (je n'ai jamais vu d'alignement sur 4 octets, mais cela dépend entièrement de l'architecture, et donc on peut en imaginer n'importe quel autre, mais plutôt dans les puissances de 2 a priori :) ). De base, lorsque l'on déclare une structure ou une union, le compilateur aligne effectivement les données de manière en optimiser l'accès en mémoire. Par exemple, sur x86, powerQUICC ou ARM, la structure suivante serait sur 8 octets et non 4 sans le "packing".
struct my_packed_struct __attribute__ ((__packed__))
{
char c;
int i;
};
L'avantage ensuite est de pouvoir manier ça avec une union :
union
{
struct my_packed_struct;
char table[5];
};
Ensuite, on peut faire des trucs funs comme ça. Perso, j'utilise pour envoyer et recevoir sur le réseau, sans avoir à faire de casts atroces, et avec plus de flexibilité (ne pas forcément envoyer dans l'ordre ou en une seule fois, etc). Très pratique en fait pour matcher de la mémoire élégamment et remplir ses structures.

    * Dans un genre similaire, l'attribut "aligned" permet de changer l'alignement, de le forcer sur une autre valeur ; moins utile, il faut bien avouer.

    * Les autres à connaître (mais largement moins utilisés) : deprecated, unused, pure (attention ; moi j'aime po), ...

Ensuite, les trucs et astuces dans les instanciations (ouais, vocabulaire d'informaticien : initialisation, quoi) en C : designated inits. Cette fois-ci, c'est du standard, contrairement aux attributes et autres pragma ; en revanche, la compatibilité C/C++ n'est pas forcément de mise (le C++ n'est pas le C, de toute façon, on a beau le répéter, on trouve toujours de ces horreurs...). On connaît déjà bien en théorie les désignations par nom d'attributs d'une structure :

union foo { int i; double d; };
union foo f = { .d = 4 };
Mais ce qui est moins connu et qui poutre des mamans ours en slip, c'est l'initialisation des tableaux. Exemple :
int a[6] = { [4] = 29, [2] = 15, v3 };
Ce qui nous donnera { 0, 0, 15, v3, 29, 0 } en deux coups de cuillère à pot. Déjà, rien qu'avec ça, on est assez ébahi : ça commence à ressembler à de l'Ada :p. Mais gcc implémente un truc complètement plus puissant (vraiment comme Ada) :
int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
Ce qui troue l'anus. Fini les memset ou les horribles boucles for à chaud, qui initialisent au lancement de l'application en bouffant du CPU et du temps, alors que sacrédieu, on avait un tableau prédéfini à mettre dans le BSS (et parfois, quand on voulait absolument le mettre dans le rodata à coup de const, bien statique et intouchable, l'on voyait des gens s'échiner à écrire des milliers de valeurs dans un .h, et à la main, hein, pas avec un script tant qu'à faire :D ; pire encore, les "static" pour que tout soit garanti à 0 par défaut, oui oui, j'ai vu ça aussi...). Et puis, ce que je trouve super beau, c'est le mix des deux méthodes structure/tableau :
struct point ptarray[10] = { [2].y = yv2, [2].x = xv2, [0].x = xv0 };
Côté élégance, on retiendra ce qui suit, et qui peut marcher avec des enum :
int whitespace[256]
= { [' '] = 1, ['\t'] = 1, ['\h'] = 1,
['\f'] = 1, ['\n'] = 1, ['\r'] = 1 };

Puisqu'on est en pure geekerie, j'indique ces deux pages web super intéressantes du même site : le mécanisme d'appel système sous Linux, et les vecteurs auxilières du format ELF, c'est court et très bon :).

dimanche 4 novembre 2007

minix bouge encore !

Minix 3: a new reliable - www.minix3.org - operating system. Smaller than Linux. Try it. It's free!

Ceci est l'intitulé... d'un google ads ! Pas de la blague (sur mon gmail, en tête de tous les messages, ça fait geek-de-base, faut bien avouer), je ne sais pas dans quel but une université hollandaise se paie une telle pub, tout le monde connaît Minix, ses déboires, son histoire avec Linux (ou comment le pragmatisme marche plus que la théorisation à outrance), tout autant que Tanenbaum ; qu'ont-ils donc à gagner ? Enfin, tellement surpris étais-je, que j'ai cliqué dessus, pari réussi ^^  (m'enfin, du coup, ça leur fait perdre du fric :s ).

Les comparaisons à Linux et BSD sont assez nombreuses mais bien vagues, du style "c'est aussi bien", "aussi mature", on croirait lire une plaquette publicitaire... Moi ce que je vois surtout c'est que les screenshots donnent envie de pleurer, hein. En tout cas, Minix est libre ("licence" -- ces universitaires, très peu de précautions prises, c'est plutôt franchement succinct -- entre la BSD et la GPL, à vu de nez), c'est toujours bien d'avoir un système libre de plus. Mais bon, je préférerai le Hurd, aussi haute soit l'estime que je porte à ce brave Tanenbaum (dont il faut posséder les trois ouvrages -- à commencer par "Operating Systems"), qui depuis plus de 20 ans s'acharne sur son beau micro-noyau ultra-modulaire pour un résultat... heu... non, c'est pas encore Linux, sans dec'.

- page 3 de 20 -