-------------------------------------------------------------------------------- LJNB http://journal.bidon.ca PubliŽ ˆ chaque 3e vendredi du mois ƒdition 2002.02 -------------------------------------------------------------------------------- L'avenir [...] n'est jamais que du prŽsent ˆ mettre en ordre. Tu n'as pas ˆ le prŽvoir mais ˆ le permettre. -Antoine de Saint Exupery LJNB est un mensuel traitant d'informatique. Pour vous abonner ou dŽsabonner, consultez: http://journal.bidon.ca/parcourrier.html Table des matires ------------------ - Mot d'un Žditeur...........................................................bgm - Nouvelles en bref.....................................................editeurs - La demoscene au QuŽbec...............................................LastCall_ - DŽfi..................................................................editeurs - Intro au cadre juridique de la vie privŽe.............................AntoineM - ƒvŽnements ˆ surveiller...............................................editeurs - Solutions aux problmes de Meta-data dans les file systems.............limitln - Votre dose de Perl.........................................................MPM +------------------+ --| Mot d'un Žditeur |---------------------------------------------------(bgm)-- +------------------+ Bonjour, Merci ˆ tout ceux qui ont lž et commentŽ notre premire Ždition. Vous avez ŽtŽ nombreux et vos commentaires constructifs. Les Ç plugs È ont beaucoup aidŽ et vous nous avez aidŽ ˆ rejoindre un auditoire relativement large et intŽressŽ par les objectifs de ce journal. Du moins, pour une premire Ždition :-) ƒvidemment, ceci n'est que le dŽbut et nous continuerons d'tre rŽceptifs ˆ vos rŽactions, qu'elles soient positives ou nŽgatives. N'oubliez pas de prendre quelques minutes pour nous envoyer vos commentaires par courrier (e-mail) ˆ editeurs@journal.bidon.ca ou par ce formulaire web semi-anonyme: http://journal.bidon.ca/intercom/ Pendant que j'y suis, petite clarification sur les objectifs de ce journal: - Nous avons l'intention, de temps ˆ autres, de reprendre des articles qui ont ŽtŽ publiŽs par d'autres journaux. Nous ne cherchons pas compŽtitionner avec les autres publications du mme genre, dont phrack (www.phrack.org). Au contraire, lorsque nous trouvons d'excellents articles, nous trouvons qu'une rediffusion est un bon moyen de donner plus de visibilitŽ ˆ des excellents articles qui passent inarperus. Nous avons aussi modifŽ la section dŽfi. Au lieu de lancer deux dŽfis par mois (un de programmation, l'autre d'encryption), nous avons dŽcidŽ qu'il serait peut-tre plus simple d'en lancer un seul par Ždition. Nous ignorons combien de personnes s'attaquent aux dŽfis (nous avons reus relativement peu de solutions lors de la premire Ždition), alors vos commentaires sur les types de problmes seraient apprŽciŽs (i.e. trop difficile, trop facile, trop plate, etc.) M'enfin, assez dŽblatŽrŽ, je vais devenir bureaucrate. Bonne lecture! bgm (aka mathieu) Pour rejoindre les Žditeurs: editeurs at bidon.ca Pour me rejoindre: bgm at bidon.ca +-------------------+ --| Nouvelles en bref |---------------------------------------------(editeurs)-- +-------------------+ Cette section publie des nouvelles de milieux communautaires ou acadŽmiques reliŽes au thme de ce journal. Si vous avez une nouvelle intŽressante ˆ contribuer, contactez-nous: editeurs@journal.bidon.ca - 1er fŽvrier 2002 [contribuŽ par Benoit] La subvention de la Fondation Canadienne pour l'Innovation (FCI) de l'UdeS conjointe avec l'UniversitŽ de MontrŽal sous l'Žgide du RŽseau QuŽbŽcois de Calcul Haute Performance a ŽtŽ accordŽe dans son intŽgralitŽ (environs 10.000.000 $ CAN). Cela signifie que le projet Mamouth : une petite grappe de calcul de 1024+ processeurs est d'actualitŽ. L'argent arrive en juin et Mamouth verra le jour ˆ l'horizon 2003 *pas avant l'ŽtŽ 2003*. Il sera installŽ au 6eme etage de la faculte de gŽnie (pas encore construit mais les travaux de consolidation de la facultŽ commencent ces jours ci ...) Par ailleurs, Sherbrooke va hŽberger la confŽrence HPCS2003, c'est ˆ dire High Performance Computing Systems and Applications. [NDLR: La grappe de calcul (cluster) fonctionnera avec Linux. Il y a dŽjˆ une (plus modeste) grappe de calcul au dŽpartement de Physique de l'U de S (roulant elle aussi Linux) et vous pourrez rencontrer quelques gurus en clustering de Sherbrooke samedi le 16 fŽvrier lors du Festival d'Utilisation de Linux organisŽ par le Gulus (voir section "ŽvŽnements ˆ venir"] +------------------------+ --| La demoscene au QuŽbec |---------------------------------------(LastCall_)-- +------------------------+ Dans cet article, je vais m'attarder sommairement sur une description de la demoscene et sur sa prŽsence au QuŽbec. J'ai donc pour but principal de promouvoir la demoscene qui est trop mŽconnue ˆ mon avis dans notre belle province (je ne parle pas du resto). Personnellement, je ne suis pas un membre actif de cette scne, mais j'en suis un grand fan. Qu'est-ce que la demoscene? øøøøøøøøøøøøøøøøøøøøøøøøøøøø C'est simplement un terme pour reprŽsenter les gens, groupes et organisations associŽs avec les dŽmos. "Demo" vient de dŽmonstration dans le sens de "Manifestation publique spectaculaire". Dans le cas prŽsent, il s'agit d'une prŽsentation multimŽdia sur ordinateur. Trois spŽcialitŽs sont donc reliŽes dans la fabrication d'une dŽmo : programmation, graphisme, musique assistŽe par ordinateur. La demoscene n'est pas un phŽnomne rŽcent : Elle date du dŽbut des annŽes 1980. Elle est beaucoup plus populaire en Europe qu'en AmŽrique et n'est pas exclusivement "old school". Au QuŽbec, elle possde donc un public restreint et de rares membres. Cependant, nous avons la chance d'avoir un demoparty nord-amŽricain (par ailleurs, le seul) ici ˆ MontrŽal. Bon lˆ je vous ai vu sauter sur votre chaise : "demoparty c'est quoi?". DŽcidŽment j'ai pas fini d'expliquer des termes, la demoscene Žtant un monde "fermŽ" avec ses propres patois; je vais donc faire un mini-lexique. Mini-lexique øøøøøøøøøøøø Demoscene Terme anglophone (sujet principal de cet article). Parfois "scene" tout court est utilisŽ. Demosceners Gens qui s'impliquent activement dans la demoscene. Demoparty C'est tout simplement une compŽtition o les "demosceners" prŽsentent leurs dŽmos. Exemples : Assembly, NAID, COMA. Trackers Formats de musiques prŽfŽrŽs de la demoscene. MOD, XM, S3M et etc. Ces formats sont tous formŽs de "samples" agencŽs et rŽpŽtŽs pour faire une pice musicale. Samples Bouts de fichiers WAV composŽs de notes, sons, effet sonores et mme parfois de paroles. chiptune Un genre de tracker caractŽrisŽ par la simplicitŽ des samples utilisŽs qui sonne comme si c'Žtait composer avec le processeur sonore de quelque chose de vieux (lire AMIGA). old school De la vieille Žcole, gŽnŽralement des dŽmos programmŽs en ASM ou sur un AMIGA, de la musique chiptune et des graphiques en ASCII. COMA øøøø Comme mentionnŽ plus haut, les demosceners d'AmŽrique du nord se rassemblent pŽriodiquement ˆ MontrŽal pour un demoparty du nom de COMA. OrganisŽ par le groupe Absurdus (principalement par unkelben), Coma a dŽbutŽ en 1999 et sa troisime Ždition fut le 16 novembre 2001. Des groupes du QuŽbec, de l'Ontario et d'ailleurs au Canada et aux ƒtats-Unis se rassemblent pour cette compŽtition qui est dŽcidŽment plus une fte qu'autre chose, du moins c'est ce que j'ai constatŽ en assistant ˆ COMA2 en Septembre 2000. La formule n'est pas trop complexe : les demosmakers amnent leurs ordinateurs pour prŽparer leurs dŽmos ˆ la dernire minute avant la compŽtition. En mme temps ils discutent entre eux. Aussi quelques mini-compŽtitions sont organisŽes, tel que la composition d'un tracker ou d'un dessin en 10 minutes avec quelques contraintes intŽressantes (samples prŽ choisis, utilisation d'un vieux programme DOS avec 16 couleurs). De plus, des dŽmos sont constamment jouŽes sur Žcran gŽant (qui sert aussi ˆ la prŽsentation du concours). Des "Wild Compos" (carrŽ- ment du n'importe quoi!) produites par les demosceners y sont aussi prŽsentŽes. Les prix aux gagnants (outre le prestige) sont gŽnŽralement intŽressants, car COMA bŽnŽficie de bonnes commandites. Le public a le droit de vote, et un jury dŽcidŽ ˆ l'avance est aussi prŽsent. Les compŽtitions sont divisŽes en 4 thmes: Graphiques, Musiques, Animations 3D et dŽmos. Si le moindrement la demoscene vous intŽresse et que vous voulez soit y participer ou y assister, le 20$ demandŽ pour l'entrŽe en vaut la peine, plaisir garanti. Ë ma connaissance, le seul ŽvŽnement similaire ˆ COMA s'Žtant dŽroulŽ au QuŽbec est NAID '96. Ce demoparty Žtait d'une envergure un peu plus grande que COMA et on en retrouve encore quelques rares traces sur Internet. Entrevue avec unkelben øøøøøøøøøøøøøøøøøøøøøø Je me suis permis de jouer ˆ l'interviewer par courriel avec unkelben. J'ai appris qu'il n'est pas le seul derrire COMA, Apsod Žtant son partenaire. J'aimerais en profiter pour remercier unkelben de la qualitŽ de ses rŽponses et de son demoparty. > Qu'est-ce qui t'a poussŽ ˆ crŽer COMA au dŽpart ? --> En fait, mon ami Apsod voulait faire un concours de programmation ˆ son cŽgep et il m'en a parlŽ. En discutant, nous avons fini par dŽvelopper l'idŽe d'un mini dŽmoparty. Nous nous Žtions dit que a serait cool de rassembler des gens motivŽs par la crŽation informatico-artistique autour d'un ŽvŽnement de ce type puisque depuis Naid'96, il n'y avait plus de dŽmoparty dans le coin. > Au niveau implication des gens que penses-tu de la demoscene au QuŽbec ? --> Au point de vue du nombre de gens intŽressŽs, c'est plut™t faible. La dŽmoscene en AmŽrique du Nord n'est pas tellement connue. Par contre, en fonction du peu de participants, on a toujours des productions assez surprenantes en qualitŽ. > Quel sont les diffŽrences notables entre la demoscene en AmŽrique et en Europe? --> Pour une raison que je ne pourrais expliquer, la demoscene en Europe est devenue trs populaire au fil des annŽes. Elle attire ˆ chaque annŽe un lot de nouveaux artistes et les dŽmoparties ne cessent de grossir. Ce phŽnomne ne se produit pas ici, la scne a toujours ŽtŽ petite et dispersŽe et s'atrophie plus qu'elle ne cro”t. Ë mon avis, c'est qu'elle n'est pas suffisament connue. Je suis persuadŽ que des centaines de gens pourraient s'y intŽresser mais c'est une chose difficile ˆ "dŽcouvrir", en gŽnŽral, il faut y tre initiŽ par quelqu'un d'autre. > As-tu des informations quelconques sur le passŽ de la demoscene au QuŽbec avant NAID? --> Je ne pense pas qu'il y ait eu quoi que ce soit en termes de dŽmoparties avant Naid. Par contre, il y avait un rŽseau assez fertile de BBS dŽdiŽs ˆ la dŽmoscene. Ce rŽseau Žtait d'ailleurs beaucoup plus efficace que l'internet ne l'est actuellement pour diffuser cet esprit. Pour ce qui est des productions, il est encore possible d'obtenir tous les dŽmos prŽsentŽs aux Naids. > Va-t-il y avoir un COMA4? --> Organiser Coma est quelque chose de plut™t chiant et une fois l'ŽvŽnement passŽ, Apsod et moi prenons des vacances plus ou moins longues selon notre humeur. Bref, pour l'instant nous n'y pensons pas vraiment. Si nous dŽcidons d'en faire un quatrime, ce sera probablement de nouveau ˆ la polytechnique. D'ailleurs, j'invite quiconque serait intŽressŽ ˆ contribuer ˆ nous Žcrire. C'est pas dit que je vais rŽpondre sur le champ, mais leur offre sera sŽrieusement considŽrŽe. [ NDLR: unkelben@ca.inter.net et apsod@hotmail.com! ] Groupes locaux øøøøøøøøøøøøøø Les gagnants de la premire place des demos ˆ COMA2 et COMA1 Žtaient Creative Impact. Ce groupe est QuŽbŽcois (rŽgion de MontrŽal) et leurs dŽmos sont de trs bon calibre. Ils ont commercialisŽ leur groupe et oprent dans le domaine de la crŽation de sites webs et de dŽmonstrations 2D/3D. Dans un autre ordre d'idŽe, The Project, qui ont gagnŽ une premire place ˆ COMA3 avec leur dŽmo, est un groupe ˆ but non lucratif et surtout ludique. Je vous invite ˆ aller voir au bas de l'article pour les URLs de ces groupes et de tŽlŽcharger leurs dŽmos. Ë bien y penser, il n'y a pas que les groupes qui gagnent des premiers prix dans les demoparty qui composent la demoscene. N'importe qui crŽant une dŽmo, un tracker ou un dessin dans son sous-sol en fait partie, tant qu'il le prŽsente aux gens. Je suis certain qu'il y a mme quelques personnes qui font parties de la demoscene et qui ne le savent mme pas eux mmes... :-) Maintenant que vous savez TOUT sur la demoscene (insŽrer rire ironique ici) je suis prt ˆ parier que certains d'entre vous y sont intŽressŽs. Pour ma part, je vais t‰cher d'annoncer les ŽvŽnements que je vois ayant rapport avec la demoscene au QuŽbec (en l'occurrence le demoparty COMA). Pour plus de renseignements et SURTOUT des tŽlŽchargements de dŽmos voici une petite liste de URLs: http://coma.absurdus.org/ http://www.ojuice.net/ http://www.scene.org/ ftp://ftp.se.scene.org/pub/demos/scene.org/ http://www.creative-impact.ca/ http://www.theprojectowns.com Si vous avez des questions posez-les ˆ quelque part (lire forum ou liste de diffusion des Žditeurs de LJNB) et je vais surement y rŽpondre. - LastCall_ aka Jonathan +------+ --| DŽfi |----------------------------------------------------------(editeurs)-- +------+ Chaque mois, nous vous proposerons des dŽfis sur des sujets variŽs, puis, le mois suivant, nous publierons les solutions les plus intŽressantes parmis celles que nous aurons reu, tout dŽpendant de la simplicitŽ ou originalitŽ du code source, ou des rŽsultats. Envoyez-nous vos solutions par courrier ˆ editeurs@journal.bidon.ca avec les mots "dŽfi: nom_du_dŽfi" dans le sujet. Consultez la section dŽfi sur notre site web (http://journal.bidon.ca/defi/) pour plus de dŽtails (surtout ˆ propos des contraintes) et pour des mise ˆ jour (prŽcisions, indices, etc.) s'il y a lieu. Ces dŽfis devraient tre vus comme un Žquivalent ˆ des mots croisŽs dans un journal conventionnel, i.e. une source de divertissement. ++ (200202_01) Les sous-ensembles: - ProposŽ par: LastCall_ - Objectif: Faire une liste des sous ensembles d'un ensemble de n ŽlŽments. Le rŽsultat inclu un ensemble vide {} et les sous-ensembles {2,3} et {3,2} sont les mmes, l'ordre n'a pas d'importance. - Par exemple: {1,2,3} --dŽcomposŽ--> {}, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3} Ainsi, {1,2,5,9} (n = 4) retourne 16 sous-ensembles, soit 2^n. ƒvidemment, la solution doit fonctionner avec les ensembles de tailles variŽes, de 1 ˆ (par exemple) 100 ŽlŽments. - Pour simplifier la correction, nous vous suggŽrons de reprŽsenter le contenu d'un ensemble en entrŽe par un fichier avec une suite de nombres sŽparŽs par des espaces. Par exemple: liste1.txt = "1 2 4 8 10 22 43 78" reprŽsente l'ensemble {1, 2, 4, 8, 10, 22, 43, 78}. - Assurez-vous que pour un ensemble de n ŽlŽments, la solution gŽnre 2^n sous- ensembles, i.e. pow(2, n). [NLDR: Oui, a semble facile, mais codez-le avant de l'affirmer. C'est pas si difficile, mais il y a une belle attrappe que vous dŽcouvrirez en l'Žcrivant. Ce n'est pas "juste une couple de for".] ++ Contraintes gŽnŽrales s'appliquant ˆ tous les dŽfis de programmation: - Langages acceptŽs: C, C++, Perl, Python, Java - Inscrire en commentaire la ligne de compilation (mme si c'est bidon) et votre adresse e-mail dans l'entte de votre programme. - Librairies C/C++ permises: ncurses, Xlib, GTK, QT, Mesa / OpenGL. - Svp ne pas utiliser de dŽpendances que nous aurons probablement pas sur notre systme, surtout si la solution est en Perl/Python/Java. (plus de dŽtails: http://journal.bidon.ca/defi/contraintes.html) +-------------------------------------------+ --| Intro au cadre juridique de la vie privŽe |---------------------(AntoineM)-- +-------------------------------------------+ L'Žtat nous Žpie-t-il? ætes-vous observŽs prŽsentement? Est-ce que vos conversations tŽlŽphoniques sont sous Žcoute? Est-ce que vos paroles sont enregistrŽes ˆ distance? N'tes-vous pas en droit de vous attendre ˆ une certaine expectative[*] de vie privŽe? Le citoyen est-il protŽgŽ? [NDLR: [*] Expression/buzzword juridique] Il faut voir que l'article 8 de la Charte Canadienne des droits et LibertŽs procure une certaine protection au citoyen contre les fouilles, les perquisitions et les saisie abusives. Afin d'effectuer une Žtude mieux ciblŽe de la situation, cet article se limitera ˆ la question des perquisitions vu certaines contraintes. La charte protge le citoyen contre les perquisitions abusives. Pour pouvoir bŽnŽficier de cette protection, il faut d'abord avoir une expectative de vie privŽe dans les lieux en questions. Dieu merci pour l'individu, il semblerait que les tribunaux aient adoptŽ une interprŽtation qui semble gŽnŽreuse. Effectivement, nous sommes en droit de nous attendre ˆ une certaine intimitŽ ailleurs que dans notre maison. Par exemple, le fait de se faire filmer dans une chambre d'h™tel constitue une perquisition. Il est Žgalement appropriŽ de prŽciser que la perquisition peut tre relative tant ˆ un objet tangible, qu'ˆ une matire intangible. Pour pouvoir faire une perquisition, il faut un mandat. Si aucun mandat ne fut Žmis, alors ˆ ce moment il y a violation de l'article 8 de la Charte sous possiblement quelques rŽserves. Ce mandat doit avoir ŽtŽ Žmis par une personne impartiale et indŽpendante suite ˆ la communication de preuve. On pourrait donc penser que dans ces circonstances, les individus sont bien protŽgŽs dans notre sociŽtŽ, n'est-ce pas? Erreur, cette protection que je viens de vous dŽcrire n'est pas absolue. Elle est plut™t relative, excessivement relative. Je ne prŽtend pas qu'il s'agit d'un Žcran de fumŽe destinŽ ˆ nous aveugler et ˆ distraire notre attention des enjeux important, mais tout simplement que la lŽgislation prŽsente ne me satisfait pas. Premirement, il faut voir que la charte ne rend pas illŽgal le fait d'Žcouter, ˆ l'aide d'un appareil Žlectronique une conversation dans un endroit o l'individu a une expectative de vie privŽe. Elle ne fait que prohibŽ la prŽsentation de cette preuve devant les cours. Ce qui m'importe personnellement, c'est de pouvoir tre chez moi et ne pas me faire Žcouter ou visionner. Je ne fais rien de mal dans mon appartement, mais je ne veux pas me faire espionner. Ma prŽoccupation va au delˆ de la rŽception en preuve des ŽlŽments rŽcoltŽs ˆ mon insu. L'acte de violer mon intimitŽ devrait tre un acte rŽprŽhensible en soi. Ensuite, il faut voir que cette protection que procure la Charte Canadienne des droits et libertŽs ne fait que procurer une protection ˆ l'individu contre l'Žtat. C'est-ˆ-dire qu'entre individus, il n'y mme pas cette contrainte procŽdurale. Par exemple, un policier pourrait cacher une camŽra dans mon appartement, mais ne pourrait pas amener le contenu en preuve dans un procs s'il na pas obtenu de mandat auparavant. Par contre un dŽtective privŽ pourrait cacher une camera et faire valloir son contenu en preuve. Finalement, deux entitŽs viennent justifier une parano•a qui jusqu'ici aurait pu para”tre farfelue. Les deux problmes prŽsentŽs ci-haut sont d'ampleur considŽrable, mais ne la sont pas autant que celui-ci. Pour violer le vie privŽe des gens, il faut plus que l'intention, il faut avoir les moyens. Il n'y a nul besoin de se protŽger d'un danger inexistant. Le premier problmes rŽside dans les Services Canadiens du Renseigne- ment de SŽcuritŽ (SCRS)[1]. La t‰che de cette entitŽ est de cueillir et analyser des renseignements sur des canadiens ou sur des Žtrangers qui pourraient constituer une menace pour le Canada. Ils ont donc les moyens de violer l'expectative de vie privŽe des particuliers et ils ont Žgalement l'avantage de pouvoir obtenir des mandats de perquisition par des juges inconnus (pour les protŽger). Il est donc difficile pour un individu de vŽrifier s'ils ont effectivement reu des mandats. Le deuxime problme est le Centre de SŽcuritŽ des TŽlŽcommunications (CST)[2]. Ils ont sans aucun doute la technologie et les moyens pour espionner et violer l'intimitŽ des citoyens. De plus, ils n'ont aucune loi habilitante et aucun budget n'est votŽ. Ils ont donc carte de blanche. Ils sembleraient tre carrŽment au delˆ de la loi[**]. [NDLR: [**] Par contre, nous savons que le budget du CST est de 107 millions dollars[3].] Bref, c'est une question de prioritŽ entre la protection de l'intŽrt commun et l'intimitŽ des citoyens. PrŽfŽrez-vous mettre sous les barreaux un tueur qui est filmŽ sans mandat pendant qu'il commet son crime ou prŽfŽrez-vous qu'on vous visionne dans vos dŽbats amoureux? Antoine Melanon RŽfŽrences mentionnŽes dans le texte: [1] : http://www.csis-scrs.gc.ca/ [2] : http://www.cse-cst.gc.ca/ [3] : http://www.forces.ca/fr/archive/speeches/2001/oct01/05oct01finance_s_f.htm Lecture suggŽrŽe: - Police, techniques modernes d'enqute ou de surveillance et droit de la preuve. Sous la direction du professeur Pierre Patenaude. 2e Ždition. Les ƒditions Revue de droit, UniversitŽ de Sherbrooke. 2000. [NDLR: Si vous avez des questions ou commentaires ˆ envoyer ˆ l'auteur, Žcrivez ˆ editeurs@journal.bidon.ca et nous lui achemineront le message.] +-------------------------+ --| ƒvŽnements ˆ surveiller |---------------------------------------(editeurs)-- +-------------------------+ Samedi 16 fŽvrier: - [Sherb] Festival d'Utilisation du Gulus de 12h00 ˆ 16H00: Paralllement aux traditionnelles installations de Linux offertes au public (par des bŽnŽvoles), il y aura des prŽsentations sur "Linux dans les Entreprises", "LaTeX / LyX", et les grappes de calcul (clusters) Linux (qui servira d'intro ˆ un futur ŽvŽnement du Gulus) - Francophone - Gratuit et ouvert ˆ tous. + DŽtails: http://www.gulus.org/ Mardi 19 fŽvrier: - [Mtl] Linux-QuŽbec @17H00: PrŽsentation "Linux dans les entreprises" par Dominic Duval. Contrairement ˆ d'habitude, la prŽsentation aura lieu au CRIM (550 rue Sherbrooke O., bur 110) - Francophone - Gratuit et ouvert ˆ tous. + DŽtails: http://www.linux-quebec.org/Rencontres.html Vendredi 1er mars: - [Mtl] 2600 MontrŽal @17H00: RŽunion mensuelle. Discussions informelles reliŽes ˆ l'informatique. Dans la cafŽ du 1000 Gauchetire (mŽtro Bonaventure), prs du Dunkin Donuts. - Bilingue - Gratuit et ouvert ˆ tous. + DŽtails: http://www.mtl2600.org/reunions/ - [Qc] 2600 QuŽbec @18H00: RŽunion mensuelle. Discussions informelles reliŽes ˆ l'informatique. Le lieu est ˆ confirmer, voir le site web. - Francophone - Qc - Gratuit et ouvert ˆ tous. + DŽtails: http://qc2600.bidon.ca/ ou http://qc.mtl2600.org/ Samedi 2 mars: - [Mtl] Linux-QuŽbec @13H30: RŽunion mensuelle ayant pour but de faire le point et de faire avancer les projets et activitŽs organisŽes par le groupe lui- mme ou d'autres groupes locaux. Aprs quelques discussions, la rŽunion se termine avec une rŽpartition de t‰ches. Local A-480 de l'ƒcole Polytechnique (MŽtro UniversitŽ de MontrŽal, ligne bleue) - Bilingue - Qc - Gratuit et ouvert ˆ tous. + DŽtails: http://www.linux-quebec.org/ (Forum: sections gŽnŽral et annonces) Jeudi 7 mars: - [Mtl] Perl Mongers @18H00: PrŽsentation sur un sujet reliŽ ˆ Perl (pas encore annoncŽ, consultez leur site web). Chez HBE Software, au 460 Ste-Catherine O, Suite 210 (mŽtro McGill) - Bilingue - Gratuit et ouvert ˆ tous. + DŽtails: http://montreal.pm.org/ Vendredi 8 mars: - [Mtl] Montreal LUG @19H00: PrŽsentation sur un sujet reliŽ ˆ Linux (pas encore annoncŽ, consultez leur site web) et discussion gŽnŽrale sur Linux. Au CŽgep Vanier (mŽtro C™te Vertu), local F223 - Anglophone - Gratuit et ouvert ˆ tous. + DŽtails: http://www.mlug.ca/ (contient un plan dŽtaillŽ pour les directions) Mercredi 13 mars: - [Mtl] Linux-QuŽbec @19H00: Michel Dagenais, professeur ˆ l'ƒcole Polytechnique de MontrŽal, dŽcrira plusieurs systmes de fichiers (ext2, ext3, Reiserfs, Intermezzo) ainsi que divers disques virtuels (LVM, MD, ENBD). Probablement au local B-316.1 de la Polytechnique. - Francophone - Gratuit et ouvert ˆ tous. + DŽtails: http://www.linux-quebec.org/Rencontres.html - [Qc] Linuq @19H00: Les outils de surveillance de serveurs et de rŽseaux. Dans les locaux de l'UniversitŽ Laval - Francophone - Pour les Žtudiants, cožte 5$ par annŽe pour tre membre, sinon 20$/annŽe. + DŽtails: http://www.linuq.org/ Vous avez un ŽvŽnement ˆ signaler? Contactez-nous: editeurs@journal.bidon.ca +------------------------------------------------------------+ --| Solutions aux problmes de Meta-data dans les file systems |-----(limitln)-- +------------------------------------------------------------+ A K A Soft updates vs Journalling file systems ---------------------------------------------------------- Par Vincent Labrecque limitln@psyfreaks.ca Introduction ------------ Un des problmes qui est addressŽ depuis quelques annŽes dans la recherche sur les FS, la sauvegarde de l'integritŽ du mŽtadata, est quelque chose qui touche l'utilisation du systme assez directement. Ce n'est pas une question d'optimiser 4 picosecondes par annŽe, c'est pour regler ce qui arrive si votre petit frre dŽcide d'appuyer sur le bouton `Power' de votre ordinateur, ou si votre /sys/arch/i386/conf/MY_HACKED_KERNEL dŽcide de crasher en beautŽ. Quelques solutions ont ŽtŽ proposŽes ˆ ce problme, j'analyserai dans ce papier deux techniques, parce qu'elles sont les plus utilisŽes presentement: Soft updates et les journaling FS. Soft updates est un changement au niveau de l'implŽmentation du file-system, la structure sur le disque est la mme et on utilise divers algorithmes pour palier le problme de synchronisation entre les mises ˆ jour du mŽtadata. ‚a a ŽtŽ dŽveloppŽ par Gregory R. Ganger, Marshall Kirk McKusick, Craig A. N. Soules et Yale N. Patt, et je suggre fortement la lecture du papier qu'ils ont Žcrit sur le sujet [1]. McKusick a implementŽ softdep pour FFS dans FreeBSD, code qui a ŽtŽ integrŽ dans OpenBSD et NetBSD aussit™t qu'il changea sa license (qui Žtait ˆ l'origine etait trop restrictive). Les FS de journaling, ou logging FS, utilisent une autre approche. On utilise un 'log', soit comme un fichier sur le disque (ex: FFS-file) ou sur un pŽriphŽ- rique indŽpendant (un autre disque, de la mŽmoire non-volatile, etc). On enregistre les opŽrations dans le log et pour rŽcupŽrer un Žtat cohŽrent du systme, on rejoue le journal ˆ l'envers jusqu'ˆ l'obtention de quelque chose qui fasse du sens. (par exemple, juste aprs une opŽration complte). Le problme est que ces systmes sont souvent plus lents et requirent parfois le changement de la structure des fichiers sur le disque. Des exemples de systmes basŽs sur cette mŽthode sont JFS, ReiserFS, ext3, etc. Je suis personnellement biaisŽ vers Soft Updates, car c'est une solution beaucoup plus ŽlŽgante (IMHO) et que c'est plus efficace dans la majoritŽ des benchmarks. En plus de permettre de mounter un FS qui n'a pas ŽtŽ unmountŽ sans besoin d'outil comme fsck(1), ca ne requiert aucune modification sur le format sur le disque. MalgrŽ ces avantages, la plupart des fans de linux semblent s'axer vers des FS de journaling, avec log sur le mme disque. Peut- tre parce que la solution n'a pas encore ŽtŽ implementŽe pour leur ext2fs, mais je vais tenter de dŽcrire les deux systmes le mieux possible pour que vous puissiez faire votre propre opinion et peut-tre mme l'implementer? :-) Description gŽnŽrale du problme -------------------------------- Dans un FS, l'information comme la taille des fichiers, leurs noms, les blocs o un inode pointe, etc, est trs importante. Si une entrŽe de rŽpertoire pointe vers un inode mal initialisŽe (disons que l'OS a crashŽ en plein milieu de l'allocation), ou que cet inode pointe vers des blocs qui n'ont pas ŽtŽs marquŽs comme utilisŽs, a fait un peu de trouble. La plupart des systmes utilisent dŽjˆ, pour Žviter les problmes, un ordre particulier dans leurs operations pour prŽparer leur metadata. Par exemple, on va prŽparer les blocs sur le disque en premier, puis on prŽpare l'inode qui y pointe, puis finalement on prŽpare le direntry qui pointe vers cet inode. Un des problmes vient du fait que pour Žviter l'usage abusif du disque, on cache l'information, puis on Žcrit les blocs qui ont ŽtŽ modifiŽs (marquŽs 'dirty') sur le disque une fois toutes les N secondes. Si l'ordinateur est arretŽ sans que l'OS ait eu le temps de flusher ses caches, le FS peut tre laissŽ dans un Žtat incohŽrent, o des direntries pointent vers des inodes pas allouŽs, etc. La solution traditionnelle est l'outil fsck, (qui vient bien sžr de FileSystem ChecK, pas f-ck) qui est roulŽ quand l'OS part pour vŽrifier tous les FS qui n'ont pas ŽtŽs marquŽs 'clean'. (quand on unmount la partition correctement, par exemple en faisant 'shutdown(1)', le systme marque la partition comme 'clean'.) Le problme avec cette solution est que fsck ne peut pas toujours rŽparer les problmes et qu'il est souvent lent et augmente de beaucoup le temps requis pour remettre le systeme 'up'. Maintenant que le problme est connu, regardons les solutions. Description plus approfondie des deux types de systmes ------------------------------------------------------- = Soft Updates = Avec Soft Updates, la solution se rŽsume en deux points: avoir un ordre strict d'opŽrations et de s'assurer d'avoir constemment un Žtat cohŽrent sur le disque. De plus, le systme ammne des performances meilleures que FFS normal. (prs de la vitesse de FFS-async (mount -o async [...])) Pour garder la cohŽrence, on utilise une liste de dŽpendances associŽe ˆ chaque objet. Que sont les objets? Si on regarde les dŽpendances au niveau des blocs sur le disque, on peut facilement arriver a un deadlock. Par exemple, si on relie un inode sous le nom X dans le rŽpertoire B, puis qu'on efface le fichier Y dans le mme rŽpertoire, la logique nous dit qu'on doit effacer l'entrŽe de Y dans B avant de libŽrer le bloc, tandis que la crŽation nous oblige ˆ Žcrire le bloc avant de le faire le lien dans B. En gros, on a : [libre][nom] <--dependences--> < nom, inode > Original: {Inode block} {Directory block} [*][Inode #4 ] < -- , #0 > [ ][Inode #5 ] < B , #5 > [*][Inode #6 ] < C , #7 > [ ][Inode #7 ] Create(A) {Inode block} {Directory block} [ ][Inode #4 ] <- < A , #4 > [ ][Inode #5 ] < B , #5 > [*][Inode #6 ] < C , #7 > [ ][Inode #7 ] Delete(B) {Inode block} {Directory block} [ ][Inode #4 ] <- < A , #4 > [*][Inode #5 ] -> < -- , #0 > [*][Inode #6 ] < C , #7 > [ ][Inode #7 ] La solution? On regarde les dŽpendances ˆ un niveau plus bas encore. Mme maintenant qu'on a les dŽpendances ˆ un niveau acceptable, le problme de dŽpendances circulaire existe toujours. Par exemple (exemple volŽ gratuitement du paper[1] de Ganger et al): En memoire Sur le disque 1 - Aprs la mise ˆ jour du metadata : {Inode block} {Directory block} {Inode block} {Directory block} [ ][Inode #4 ] <- < A , #4 > [*][Inode #4] < --, #0 > [*][Inode #5 ] -> < -- , #0 > [ ][Inode #5] < B , #5 > [*][Inode #6 ] < C , #7 > [*][Inode #6] < C , #7 > [ ][Inode #7 ] [ ][Inode #7] 2 - On Žcrit une version sure du directory block sur le disque, une dŽpendance s'en va. {Inode block} {Directory block} {Inode block} {Directory block} [ ][Inode #4 ] <- < A , #4 > [*][Inode #4] < --, #0 > [*][Inode #5 ] < -- , #0 > [ ][Inode #5] < --, #0 > [*][Inode #6 ] < C , #7 > [*][Inode #6] < C , #7 > [ ][Inode #7 ] [ ][Inode #7] 3 - Ensuite, on Žcrit le bloc d'inode pour indiquer que l'inode 4 est/va tre utilisŽ et que l'inode 5 est libre. {Inode block} {Directory block} {Inode block} {Directory block} [ ][Inode #4 ] < A , #4 > [ ][Inode #4] < --, #0 > [*][Inode #5 ] < -- , #0 > [*][Inode #5] < --, #0 > [*][Inode #6 ] < C , #7 > [*][Inode #6] < C , #7 > [ ][Inode #7 ] [ ][Inode #7] 4 - On Žcrit le nouveau directory block maintenant que les inodes sont correctement initialisŽes. {Inode block} {Directory block} {Inode block} {Directory block} [ ][Inode #4 ] < A , #4 > [ ][Inode #4] < A, #4 > [*][Inode #5 ] < -- , #0 > [*][Inode #5] < --, #0 > [*][Inode #6 ] < C , #7 > [*][Inode #6] < C , #7 > [ ][Inode #7 ] [ ][Inode #7] On montre D += A, puis D -= B, ce qui est en gros l'exemple dŽcrit prŽcedem- ment. Premirement, on Žcrit le bloc du rŽpertoire avec l'entrŽe de B en moins. Ensuite, on Žcrit le bloc des inodes avec l'entrŽe de A marquŽe comme utilisŽe et celle de B comme Žtant libre. Les deux n'ayant aucune dŽpendance, si le systme est arretŽ, le pire qui puisse arriver est que l'inode de 4 soit marquŽe comme utilisŽe mme si aucune entrŽe de rŽpertoire n'y pointe. (voir plus loin pour la solution) Enfin, on Žcrit le bloc de rŽpertoire avec l'entrŽe de A. Tadam! Ë toutes les Žtapes, le systme est dans un Žtat consistant, ce qui Žtait le but visŽ. Pour chaque changement d'un ŽlŽment de metadata (crŽations d'un inode, ajout d'une entrŽe dans un rŽpertoire), on garde la version 'avant' et 'aprs'. Un bloc peut tre Žcrit ˆ n'importe quel moment, en autant qu'on roll- back toutes les dŽpendances avant de le faire. Pendant l'Žcriture sur le disque (les disques ne sont pas encore assez rapide pour que ce soit une opŽration atomique), le bloc est verrouillŽ pour empcher les applications de voir l'Žtat 'undone'. (si le systme est arretŽ, le fait qu'une application voyait un Žtat qui n'Žtait pas le mme que celui sur le disque ne change rien) Se rappeller que ces opŽrations de roll-back sont faites uniquement quand le OS flush ses caches, ce qui permet d'optimiser beaucoup les choses. Parfois deux opŽrations inverses vont s'annuler, etc. Le systme essaie aussi de clusterer (regrouper) les Žcritures sur le disque pour rŽduire les accs au disque. Le disque Žtant toujours dans un Žtat cohŽrent, l'usage de fsck est inutile. Le systme peut tre repartit sans problme. (si l'information sur le disque (ex: le superblock) n'a pas ŽtŽ endomagŽe, bien sžr!) Pour le problme des inodes qui sont libres mais marquŽes comme utilisŽes, le systme peut rouler un background-fsck. Ce programme utiliserait le temps libre de la machine pour recalculer les inodes utilisŽes et corriger les problmes pendant que le systme roule. ‚a permet d'avoir un systme fonctionnel immŽdia- tement, quite a perdre quelques bytes sur le disque tout de suite aprs le dŽmarrage. Pas si mal quand mme :-) Ce programme n'a pas encore ŽtŽ implŽmentŽ, mais il est (je crois) en dŽvelop- pement et devrait tre disponible Žventuellement. Pour plus de dŽtails, lire le "Soft updates: A Solution to the Metadata Update Problem in File Systems."[1] C'est trs intŽressant et a va plus en dŽtails dans la thŽorie, en plus d'expliquer l'implŽmentation sur FFS et les problmes rencontrŽs. = Journaling File Systems = Leur solution au problme est de garder un log de toutes les operations effectuŽes sur du metadata, pour pouvoir, quand le systme redŽmarre, remonter dans le log jusqu'ˆ un Žtat cohŽrent. Pour a, on utilise des marqueurs qui indiquent les operations qui ont ŽtŽ effectuŽes sur le disque. Le problme avec a, c'est que pour que ce soit efficace, le log doit tre gardŽ sur un mini-disque ultra-rapide dŽdiŽ au log, ou dans un espace de RAM non-volatile. Mme si les logs sont Žcrits en streams (flots de donnŽes), donc en Žliminant le besoin des seeks (accs ˆ l'information), si c'est sur le mme disque, il va seeker constemment quand mme. La seule (IMO) chose un peu plus cool, dans ext3 [3], c'est qu'il sauve aussi les changements de data, pas seulement de metadata. Ca veut dire que les donnŽes vont tre dans un Žtat consistant, pas seulement l'arborescence du systme de fichiers. Bon, le systme est assez simple, alors ma couverture s'arrte ici. La lecture des benchmarks Softdep VS Journaling[2] est instructive, je vous recommande fortement sa lecture. ‚a inclue en mme temps une introduction aux deux systmes qui est peut-etre meilleure que la mienne :-) (a montre plus d'exemples, a c'est sur.) Conclusion ---------- Euh, utilisez votre cerveau pour conclure comme vous voulez! References ---------- [1] Soft updates: A Solution to the Metadata Update Problem in File Systems: http://www.ece.cmu.edu/~ganger/papers/softupdates.pdf [2] Journaling Versus Soft Updates: Asynchronous Meta-data Protection in File Systems: http://www.usenix.org/publications/library/proceedings/usenix2000/ (suite) general/full_papers/seltzer/seltzer_html/index.html [3] Ext3: http://www.redhat.com/support/wpapers/redhat/ext3/index.html Vincent Labrecque limitln@psyfreaks.ca +--------------------+ --| Votre dose de Perl |-------------------------------------------------(MPM)-- +--------------------+ Suite ˆ une conversation entre LastCall_ et l'organisateur des rŽunions "Montreal Perl Mongers", l'idŽe d'Žlargir un peu l'auditoire en passant par LJNB est apparue. Le prŽsent article sera donc une rubrique synchronisŽe avec les principaux sujets des rŽunions. Vous y retrouverez donc des bouts de codes intŽressants ainsi que des concepts dans le monde fascinant du langage Perl. Le tout sera signŽ par "Les Missionnaires Perl de MontrŽal" aka "MPM", car les diffŽrents sujets sont prŽsentŽs par des auteurs diffŽrents. LastCall_ essayera donc de vous rŽsumer le tout le mieux possible. Voici donc votre dose de Perl mensuelle :-) Perl/Tk par Stephen Talko øøøøøøøøøøøøøøøøøøøøøøøøø Perl/Tk est une interface orientŽe objet au 'toolkit' GUI de John Ousterhout. Originairement conu pour tre utilisŽe avec TCL, Tk propose des faons simples de gŽnŽrer des interfaces graphiques par un langage interprtŽ. En exemple nous avons inclu une petite application qui affiche 2 boutons, dont un avec une image : #!/usr/bin/perl # Utilisation du module Tk use Tk; # Utilisation du sous-module JPEG use Tk::JPEG; # CrŽation de la fentre de notre application $mw = MainWindow->new; # Affectation du titre de la fentre de notre application $mw->title("JPEG FILE"); # Chargement de l'image en format JPEG $test = $mw->Photo(-file => "test.jpg"); # CrŽation du bouton avec image $mw->Button(-text => "FINANCE",-image => $test)->pack(); # CrŽation du bouton de sortie de l'application $but = $mw->Button(-text => "EXIT",-command => sub { exit } ); $but->pack(); # Boucle principale qui permet ˆ l'application de ne pas quitter # tant que l'utilisateur n'a pas fermŽ la fentre ou cliquŽ # sur le bouton EXIT. MainLoop(); Le code de Perl/Tk Žtant plut™t explicatif, nous vous conseillons de tŽlŽcharger l'ensemble des exemples ˆ l'adresse suivante : http://montreal.pm.org/tech/2001.12.06.talko/ Ces exemples sont trs complets et couvrent une bonne partie des objets utlisables avec Tk. N'oubliez pas que vous devrez peut-tre tŽlŽcharger le module Tk (ppm dans Windows ou sur CPAN.org). Cette dose de Perl vous ˆ ŽtŽ prŽsentŽe par : Les Missionnaires Perl de MontrŽal (MPM) http://montreal.pm.org/ -------------------------------------------------------------------------------- LJNB http://journal.bidon.ca PubliŽ ˆ chaque 3e vendredi du mois ƒdition 2002.02 --------------------------------------------------------------------------------