Planet Traduc

February 08, 2010

Isabelle Hurbain

08/02/10

(on sera prié d'excuser les typos, j'ai deux Rocheforts dans le sang)

Après le FOSDEM, on est aujourd'hui restés à Bruxelles. Là encore, on s'est basés sur le tour du guide, donc pas une grande originalité (d'autant plus qu'on était fatigués), mais une bonne petite balade.

Départ de la Grand'Place, on a enfin été voir le Mannekenpis - j'avais dans l'idée qu'il serait plus gros que ça, c'est tout petit ! Je me demande bien comment ce truc est arrivé au statut d'icône de la ville, voire de la Belgique... amusant.

Après bah... on a marché. On s'est arrêtés Place du Grand Sablon, on a déjeuné au Pain Quotidien (dont la carte est en fait assez différente de celle de Bruxelles). On a mangé un dessert chez Wittamer, c'était très bon, mais j'ai pas réussi à finir ! (Au grand bonheur de Pierre). J'ai acheté un piti cadeau pour ma moman - c'est pas du chocolat, mais ça m'a fait marrer. Maman, tu verras bien quoi que c'est ! :D

On a continué à se balader, on a vu une statut de Mercator (celui des cartes, là), le palais royal, une église qui ressemblait à un temple romain, des églises et une cathédrale, un bâtiment recouvert de lanternes chinoises... Et on a fini notre tour sur la grand'place, où on est passés chez Galler, pour acheter du consommable (yen a qui rentre en France). J'ai fait quelques photos, dont même quelques unes sympa.

On est rentrés à l'hôtel vers 16h30, et là je dois dire qu'on a loqué jusqu'au dîner (yen a même un qui a dormi). Pour le dîner, on a rejoint Valentine en ville, on a mangé à la Fin de siècle du côté de la Bourse : simple, efficace, très bon, et un choix de bières basique mais efficace (d'où les deux Rochefort du début de post).

Et là, bin on est rentrées, et je crois qu'on va aller dormir. Demain, Anvers !

by Isabelle Hurbain at February 08, 2010 11:24 PM

Guillaume Lelarge

FOSDEM 2010

FOSDEM est un événement européen qui s'est donné pour but de réunir tous les développeurs européens (et plus si affinités) de projets libres et opensource. C'est certainement le plus réputé à ce jour.

Chaque année, Andreas Scherbaum se charge d'organiser la présence de PostgreSQL à cet événement. Si ma mémoire ne se trompe pas, il y a quatre ans, nous n'avions qu'un stand, entièrement géré par PGde, le groupe d'utilisateurs allemands de PostgreSQL. Et encore, un stand partagé avec le groupe BSD. L'année d'après, nos amis BSD-istes nous ont proposé de partager leur salle de conférences. Et là, ce fut une explosion. Les deux années suivantes, nous avions notre propre stand, parfois composé de deux tables, une vingtaine de contributeurs principalement européens pour aider sur le stand, et une salle de conférences. L'année dernière, des américains étaient même venus, preuve de l'importance de cet événement.

Autant dire que le week-end du FOSDEM est devenu un moment important dans le monde PostgreSQL. Cette année en est la suite logique.

Une préparation exemplaire d'Andreas, un stand avec pas mal de goodies, des conférences très intéressantes et des discussions passionnantes avec les autres contributeurs.

Je n'ai assisté qu'à trois conférences, donc je ne pourrais rendre compte que de celles-ci. Tout d'abord, celle de Dave Page sur les nouveautés de la future 9.0 et la façon dont le développement s'est déroulé. La salle était bondée, beaucoup devaient, au choix, s'assoir par terre ou rester debout. Le contenu était intéressant et plutôt bien géré par Dave. Évidemment, c'est le type même des conférences difficiles car il est impossible de connaître suffisamment chaque fonctionnalité. Donc il est passé rapidement sur certaines, faute de les connaître mieux pour pouvoir les développer. Étant donné que je les connaissais déjà bien, ça ne m'a pas permis d'apprendre grand-chose. Néanmoins, c'était intéressant et le public a eu l'air de bien apprécier.

Ensuite, Heikki est intervenu pour parler du Streaming Replication, une fonctionnalité qu'il connaît particulièrement bien vu qu'il a revu le patch et qu'il l'a commité. Cette fois, j'ai appris deux/trois choses. J'ai eu la confirmation qu'il est possible d'avoir plusieurs esclaves. Par contre, la cascade de serveurs n'est pas au menu de la 9.0. Enfin, il est possible de fonctionner sans archivage des journaux de transactions mais cela peut amener des soucis de performances. En effet, en cas de grand flux de données, le système peut basculer de restauration de flux à une restauration de journaux complets. Ce qui rend le système plus robuste. Quant aux perspectives futures, elles sont nombreuses : sauvegarde des fichiers gérée automatiquement (sauvegarde sur le maître, envoi et restauration sur l'esclave), réplication synchrone, esclaves en cascade, archivage à partir des esclaves, etc. En tout, une conférence bien menée, très appréciée même si le public était moins nombreux. En rentrant à l'hôtel, j'ai pu discuté de cette fonctionnalité avec Heikki pour voir comment améliorer mon patch pour pgAdmin. Et j'ai peut-être une solution qui va me permettre de répondre au commentaire de Magnus.

Simon Riggs, arrivé juste à temps de l'aéroport, a pris la suite de Heikki pour une conférence sur le Hot Standby. Il a divisé sa conférence en trois parties : l'utilisation du Hot Standby, une démonstration, et quelques remarques sur le développement d'un patch de cette taille. Ça a certainement été la conférence la plus étonnante et la plus déstabilisante pour moi. J'y ai appris par exemple que les verrous étaient propagés sur l'esclave. Verrouiller une table sur le maître et elle sera aussi bloquée sur l'esclave tant que le verrou n'est pas enlevé. La démonstration était assez simple. Elle a été effectuée par Heikki car le portable de Simon refusait obstinément de fonctionner avec le rétro-projecteur et que le clavier de Heikki a la disposition finlandaise. La partie la plus intéressante de cette conférence était la dernière, celle sur le développement. Il a fallu trois ans pour réaliser ce patch. On le doit principalement à la volonté de Simon qui y a investi énormément de temps et d'argent. Il y a eu six sponsors majeurs et un étudiant est intervenu dans le cadre du Google Summer Of Code (GSoC). Simon a trouvé la communauté et les entreprises généralement peu motivées et peu réactives : peu de sponsors, peu d'aide de la communauté. Son constat me semble assez juste pour ce type de (très gros) patchs. En effet, il faut garder à l'esprit que son patch fait plus de 10000 lignes (ce qui est bien supérieur à la majorité des patchs actuels... c'est peut-être même le plus gros patchs de l'histoire de PostgreSQL). Son constat me semble donc légitime et mérite réflexion. On pourrait imaginer par exemple que PostgreSQL Europe et le SPI sponsorisent en partie ce type de patchs.

D'après ce que j'ai pu entendre, les autres conférences étaient aussi très intéressantes. Je n'en dirais pas plus, n'ayant pas pu y assister.

Mais le FOSDEM, ce n'est pas seulement les conférences. C'est aussi les discussions avec les contributeurs. Et cette année, quelques réunions.

Par exemple, j'ai été convié à une réunion de PostgreSQL Europe. Le but de cette réunion était de discuter de la tenue des prochaines élections pour le bureau de PostgreSQL Europe. Il a été décidé qu'il allait être possible de devenir membre de PostgreSQL Europe pour une durée de deux ans pour la (modique) somme de dix euros. Être membre permet de pouvoir voter pour élire le bureau, ce qui permet d'influer sur l'utilisation de l'argent par la communauté. Car le bureau a pour but de fournir des financements à des groupes d'utilisateurs qui voudraient monter des événements sur PostgreSQL. Par exemple, PostgreSQL Europe a très fortement aidé à la mise en place du PGDay 2009 fait en France. Il fera de même cette année pour la Hollande. Tous les détails devraient bientôt être disponibles sur le site web de l'association européenne, donc je n'entrerais pas plus dans les détails. Ce qui m'intéresse fortement, c'est que PostgreSQL Europe est une association qui fonctionne et qui travaille. Dès que cela sera possible, je deviendrais membre.

Autre exemple de discussion, celle que j'ai eu avec Dave Page et Magnus Hagander lors du l'attente particulièrement longue au restaurant du samedi soir. Nous avons discuté des développements en cours pour pgAdmin. Dave est toujours débordé par son boulot, donc il se trouve que je vais pour l'instant continuer en solo mes travaux sur la prochaine version de pgAdmin. Néanmoins, cette discussion m'a permis de trouver la solutions à plusieurs problèmes qui me bloquaient bien, donc certains de mes patchs vont rapidement être dans un état final, prêt à être commités. J'ai continué cette discussion le dimanche matin avec Dave lors du petit-déjeuner. Il se trouve qu'il a eu la même idée que moi pour une fonctionnalité qui devrait plaire à plus d'un.

Dernier exemple, la réunion pour le PGDay européen 2010. Elle a eu lieu dehors où il gelait mais où, au moins, on pouvait s'entendre (trop de bruit dans les couloirs, pas de salle dispo). Elle a réuni Dave Page, Magnus Hagander, Andreas Scherbaum, Jean-Paul Argudo, Koen et un autre hollandais dont j'ignore le nom. Les deux hollandais ont fait un point sur leurs démarches actuelles. Ils n'ont malheureusement pas pu beaucoup avancé. Une des raisons est que Koen a été très sollicité à son travail, ce qui lui a laissé bien peu de temps pour chercher un lieu convenable pour les conférences. On a discuté des pré-requis pour le lieu des conférences et de bien d'autres choses. On a notamment insisté sur le besoin d'une plus grande communication entre les différents organisateurs et PostgreSQL Europe. Certaines options envisagées me semblent très prometteuses. Du coup, je suis ressorti de cette réunion bien plus confiant qu'à mon arrivé.

Évidemment, il y a eu aussi quelques discussions avec les utilisateurs de PostgreSQL. Cependant, beaucoup moins qu'à Solutions Linux, ce qui est fort dommage. Vendre des goodies m'intéresse assez peu, on fait quand même un peu marchand de tapis. Donc un très grand merci à ceux qui sont venus nous poser des questions techniques, aussi et surtout quand ils nous ont collé :)

Que dire de plus... l'événement a de nouveau été un grand succès. J'y ai passé un très bon moment, bien que j'ai encore de gris progrès à faire pour être à l'aise à l'oral en anglais. Il n'empêche que le FOSDEM 2011 sera une étape obligatoire.

N'oubliez pas qu'il y aura au moins deux autres événements importants en Europe : Solutions Linux dans un mois, PGDay.eu en octobre. J'espère que nous aurons aussi la possibilité d'organiser quelque chose pour la sortie de la 9.0

by Guillaume Lelarge at February 08, 2010 03:07 PM

Isabelle Hurbain

06/02/10 et 07/02/10 : FOSDEM !

Et donc, c'était mon premier FOSDEM. Notre hôtel étant assez loin de l'ULB où la manifestation avait lieu, il a fallu se lever à des heures indues... genre 8h (huhu).

Première conf, quelques mots de bienvenue, remerciements, explications sur le réseau, « danse » du FOSDEM (où ils ont tenté d'appeler tout le monde sur scène, c'était... chargé). Première « vraie » conf, explications sur l'utilisation des outils et méthodes de l'opensource dans une grande entreprise (en l'occurrence, Aerospace). J'avoue, j'ai pas tout bien suivi : je venais de me rendre compte que ma machine faisait des kernel panics sur le réseau WiFi du FOSDEM. Moche. 3e conf, « evil on the Internet », plutôt marrante avec pas mal d'anecdotes, à propos de scams, spams et autres arnaques : pas très technique, mais sympa.

Du coup il était midi, donc on a été chercher des sandwiches, et on s'est dirigés vers la conf d'intro à coreboot, pour tomber sur une porte fermée : salle pleine ! Du coup on a été manger nos sandwiches au soleil qui nous a octroyé une apparition surprise.

La conf suivant sur systemtap, j'ai pas tout bien suivi non plus, une sombre histoire de Chimay bleue descendue avec le sandwich, bon. On a zappé les questions pour se précipiter dans la devroom Mozilla, où on a suivi deux confs tout à fait sympathiques, respectivement sur la « bidouillabilité » (avec un Nitot en grande forme et un Gaston Lagaffe qualifié de hacker ultime) et sur HTML5, histoire de se souvenir que c'est pas limité à la balise <video> (loin de là ;) ).

On a finalement été squatter dans la devroom OpenOffice.org, faute de trouver plus inspirant, et pour être honnête j'ai plus vu le client IRC sur mon téléphone (parce que ma babasse kernel-panicait, si vous vous souvenez bien) que les confs.

On a été embêter Gleu sur le stand Postgresql (ils ont des éléphants en peluche tout à fait choupis), on a été boire une Delirium avec wolog et Valentine au Delirium (en haut, c'est plus calme et moins enfumé, mais la carte des bières est nettement moins étoffée, c'est scandaleux :p), avant d'aller dîner avec wolog au t'Kelderke, sur la suggestion de Valentine (devant lequel on a croisé quelques Googlers et associés :) ). On a d'ailleurs très bien mangé, leurs carbonnades sont meilleures que les miennes, va falloir que je travaille là-dessus. Arrosée d'une Grimbergen triple parce que bon quand même quoi. En revenant à l'hôtel, je suis passée au noyau des backports sur mon portable, en espérant que ça règlerait le problème du WiFi le lendemain. Ce fut effectivement le cas ; je le signale donc pour les gens qui font tourner une Debian stable avec un chip wifi Intel, le 2.6.30 des backports règle visiblement certains problèmes sur le driver dudit chip.

Le lendemain matin, le petit déjeuner a été light, du moins en ce qui me concerne : un bol de fruits, un jus de pommes et un café : c'est le problème des carbonnades qui poutrent, c'est dur de s'arrêter avant d'avoir vraiment trop mangé :) On s'est un peu paumés pour retrouver le bus qui nous emmenait à l'ULB (c'était pas le même que la veille, les dessertes sont pas les mêmes le dimanche), mais on a fini par trouver un bus rempli de gens qui sont tous descendus au même endroit que nous. Un peu éprouvant, option RER B en heure de pointe - on a survécu.

La première conf à laquelle on a assisté le dimanche présentait RepRap, une imprimante 3D libre pouvant en partie s'auto-reproduire - c'était super rigolo, on s'est regardés tous les deux avec Pierre en se disant qu'yavait du potentiel pour imprimer des figurines et des décors :D

On a ensuite été voir un talk sur HBase, une implémentation libre du papier de Google sur BigTable. Plutôt intéressant, d'un point de vue introductif au machin. Pas vraiment le genre de trucs que je vais utiliser dans un futur proche, mais culturellement intéressant.

Ma conf préférée, probablement, de ces deux jours, a été la suivante : celle d'Andrew Tanenbaum à propos de Minix3. J'avoue, j'y allais plus par curiosité pour le bonhomme que par intérêt réel pour le sujet ; et faut quand même avouer qu'il est très, très bon. Trolleur de première aussi, hein, mais très, très bon. Je sais déjà qu'un des premiers trucs que je vais faire en rentrant sera de downloader une ISO de Minix pour faire mumuse avec. (Je suis très influençable).

On a ensuite été manger, et j'ai abandonné Pierre à la conf sur Hadoop (que j'avais plutôt envie de voir, tant pis) pour aller boire un kawa avec Yady, henna et bma des LinuxChix. On a discuté FOSDEM, féminisme et Tetris, et c'était vachement bien :) On s'est entre-temps aussi fait alpaguer par quelqu'un de WoMoz avec une caméra ; je sais pas trop où ça va finir ce truc (qu'est-ce que vous faites dans le free software et pourquoi). Wait'n'see.

La conf de Facebook qui causait de scalability était un peu superficielle, option « regardez comment on fait des trucs cools » - pas inintéressant, mais ça manquait un peu de poils.

J'attendais pas mal de la présentation CouchDB, j'ai été un peu déçue. Je pense que j'aurais pas compris grand'chose si j'avais pas su de quoi il parlait ; plutôt mitigé, comme impression. Il y avait du contenu, mais la présentation pêchait assez.

Pour finir, la dernière conf du FOSDEM parlait de la procédure pour créer un patch sur le noyau ; très vivant, chouette présentation, et j'ai même appris quelques trucs sur Git. (Ceux qui ont vu la présentation peuvent en déduire que mon git-foo n'est pas très étendu ;) ).

Et puis ben c'était fini, on était fatigués, on est rentrés, on a dîné à l'hôtel et on est restés dans la chambre pour la soirée (j'en ai profité pour bosser un peu, il faut bien des fois).

Bref, le FOSDEM, c'était bien ; je sais pas si on aura l'opportunité de revenir l'an prochain, mais ça sera probablement à envisager :D

by Isabelle Hurbain at February 08, 2010 10:10 AM

February 05, 2010

Isabelle Hurbain

05/02/10 - Bruxelles

Aujourd'hui, on avait comme plan d'aller à l'Atomium et au Centre Belge de la Bande Dessinée (abrégé en CBBD). On a commencé par se lever à 10h (pour fin du petit déj à 10h30, on l'a échappé belle !) et par aller petit déjeuner (normal). Et on s'est mis en route vers l'Atomium. La bouche de métro à côté de l'hôtel relaye pas mal de trucs : on avait donc une ligne directe pour l'Atomium, formidable.

Premier problème : on va pour prendre des tickets 3 jours (parce qu'on va se trimballer à la fac en tram demain et dimanche) et, visiblement, les automates refusent tout ce qui ressemble à une carte bleue. On a donc fini par aller au guichet pour pouvoir payer en liquide.

Après un petit coup de métro, nous voilà à l'Atomium. C'est rigolo, comme structure. On a pris des billets, et fait la première étape : monter tout en haut pour admirer le panorama. Il faisait un peu gris, mais c'était chouette quand même. On a ensuite déambulé dans les autres boules ouvertes au public : une expo temporaire sur l'expo universelle de 58 (plutôt amusant), y compris une vidéo impressionnante (bien que compressée avec les arpions) sur la construction de l'Atomium ; et une expo temporaire sur « le modernisme ludique en Belgique » (sic), plutôt rigolote aussi. Bref, plutôt sympa, mais assez bordélique et mal indiqué - on survit. N'ayant pas vraiment super faim (malgré l'heure tardive), on a chopé un bus pour repartir au centre ville, plutôt que de manger au restaurant de l'Atomium.

On est arrivé sur la place de Brouckère, où on a pas vu l'omnibus, mais où on a mangé à EXKI, opération salade après le dîner de la veille et le ptit déj tardif, ça nous a paru à tous les deux une bonne idée ! Et une part de cheesecake au spéculoos, parce que quand même faut pas déconner ; très bon d'ailleurs, même si ça tenait plus de la tarte au fromage blanc que du cheesecake (et oui, il y a une différence assez fondamentale.)

En sortant on a cherché à se diriger vers le CBBD, et on s'est d'ailleurs fait aider par un monsieur de la voirie qui nous voyait lutter avec notre plan (et qui n'a pas laissé passer une occasion de se moquer gentiment des ptits Français pas foutus de lire une carte :P).

On a alors visité le CBBD, qui a une collection plutôt sympa, même si elle manque d'explications écrites par endroit (doit y avoir un audioguide, bon.) J'ai bien aimé les « artefacts » du village des Schtroumpfs. Et j'ai décidément de graves lacunes en culture à bulles. L'absence de Geluck dans le musée m'a pas mal surprise - ou alors on l'a raté ? Un petit passage à la boutique, et on est repassés à l'hôtel.

On avait rendez-vous avec un copain à 19h (ou 19h30, on sait plus trop) pour sécher le beer event du FOSDEM de concert - on a été boire une bière au Roy d'Espagne sur la Grand'Place (une Gauloise pour ma part, j'ai regretté, pas terrible) et on a été manger à la Taverne du Passage, dans le Passage de la Reine - plutôt pas mal, la sauce au poivre est une tuerie, la crème brûlée un peu trop brûlée, le service un poil sec, mais globalement, plutôt pas mal. L'adresse semble être surtout intéressante pour sa carte des vins, mais on n'en a pas profité.

On est finalement rentrés à l'hôtel, plutôt fourbus - deux « musées » dans la journée, ça tue les guibolles, et je suis en train de finir une Gouden Carolus des plus sympathiques avant de mettre le réveil pour le FOSDEM demain - on a un tram à 9h22 :D

by Isabelle Hurbain at February 05, 2010 10:25 PM

February 04, 2010

Isabelle Hurbain

04/02/10 - Bruges

La journée a commencé par un test important : le buffet petit-déjeuner de l'hôtel. Rien à redire, à part que le kawa est space ; mais les œufs sont fluffys, ils ont des beans, et plein d'autres trucs, et tout est bon. Cool.

On avait tiré à pile ou face pour savoir si on irait à Bruges ou à Anvers en premier (les deux sont prévus) - et donc, on est allés aujourd'hui à Bruges. Une heure de train depuis Bruxelles, un train toutes les demi-heures, ça se fait bien !

Arrivés à Bruges, on descend du train et on sort de la gare pour tomber sur un énorme parking à vélos - impressionnant ! D'ailleurs, vu le nombre de fois qu'on a failli se prendre un vélo dans la ville, pas très étonnant.

On a alors marché jusqu'au centre-ville et la place du marché. Quelques calèches tirées par des chevaux, amusant ! Et les « infrastructures » (prises électriques en particulier) sur la place laissent à penser qu'en saison l'activité doit être bien plus importante de ce côté là. Le beffroi qui domine la place est impressionnant. Il y en a une maquette métallique devant, accompagnée de plans en braille en plusieurs langues. On a fini par comprendre que la maquette métallique était aussi à destination des non-voyants : plutôt malin.

On a alors commencé le tour conseillé par le guide et on s'est donc promenés de canaux en bâtiments historiques. J'ai plein de photos de reflets ;)

On s'est arrêtés pour manger dans un endroit au hasard et ça a été un peu une catastrophe. Le Tom Pouce à Bruges - vraiment pas conseillé, c'est médiocre en étant gentil. Je viens de jeter un œil sur les reviews sur Google Maps, et visiblement c'était pas de la malchance... regrettable.

On a continué le tour ; et là, le choc : on tombe en arrêt devant... le musée de la frite. Sisi. On a pas résisté, on est entrés ;) C'est rigolo tout plein comme petit musée : de l'histoire de la patate à la fabrication des frites, plein de ptits trucs intéressants. On y a même appris l'existence de l'ordre national du cornet d'or (sic) :D

En continuant notre visite, on s'est aussi arrêtés au musée de la dentelle, un pitit musée avec des jolies pièces, et des dentelières qui font des démonstrations. C'est toujours très impressionnant ! (Pierre n'a pas pu s'empêcher de faire une remarque sur le nombre de freebox qu'on pourrait recouvrir avec tous ces napperons ;) )

Bref, Bruges nous a laissé l'impression d'une très jolie ville.

On est ensuite rentrés en train, on s'est posés à l'hôtel, et on a eu bien du mal à ressortir pour aller dîner ! pardon souper ! On a quand même fini par se bouger, et bien nous en a pris : on est allés aux Armes de Bruxelles, sur la rue des Bouchers, et c'était impressionnant. Pâté de canard aux pistaches (avec gelée, probablement au porto, translucide et délicieuse, et petits oignons confits), soupe de poissons tout à fait maîtrisée (j'aime pas la soupe de poissons, mais elle était objectivement réussie), saumon grillé avec une des meilleures béarnaises que j'ai jamais mangées, poisson frit et bien frit, le tout avec des frites juste bien comme il faut... on a même pas eu le courage de prendre un dessert, ce qui est regrettable vu les crêpes Suzette flambées derrière nous, qui avaient l'air plus que sympathiques... (comme d'ailleurs les quelques pièces de viande qu'on a vu passer en salle. Croumch.). Bref, de quoi oublier l'échec du repas de midi !

On est finalement repassés par un chocolatier, où on a pris une boîte de chocolats Rogier (pas mal, pas transcendants) (faut qu'on passe chez Galler, de manière assez définitive), et à 250 bières, où on a pris une paire de Quintine - avant de rentrer les boire à l'hôtel (parce que c'est cozy, confortable et silencieux).

Bref, une journée fatiguante mais plutôt chouette !

by Isabelle Hurbain at February 04, 2010 11:03 PM

03/02/10 - C'est parti pour Bruxelles !

Avec Pierre, on a décidé d'aller au FOSDEM cette année, et d'en profiter pour visiter un peu les environs. En tant que fana de bière (surtout moi), de frites (surtout lui) et de chocolat (surtout nous), ça peut clairement pas être une mauvaise idée !

Pour de sombres histoires de coût, on s'est retrouvés à aller prendre l'avion pour Bruxelles à Genève (oui, bon, c'est pas des plus éco-friendy, je l'admets). On est partis en voiture, histoire de passer à Montélier au retour : Genève est à mi-chemin entre Zürich et Montélier, autant en profiter, c'est toujours ça de fait !

Pas grand chose à signaler, si ce n'est un hennissement sur l'aire d'autoroute sur laquelle on à l'habitude de s'arrêter (à Estevayer-le-Lac) - ça surprend ;) C'était juste un cheval dans une cahute à cheval remorquée par une voiture.

À l'aéroport, pareil, RÀS ; ah, si, le mec de la sécurité a complètement kiffé la chaussette de mon Typematrix « han, c'est pratique votre truc là » ;)

Vol sans histoire, on est arrivés à Bruxelles. Bon, on a dû arpenter à peu près tout l'aéroport entre la porte d'arrivée et les bagages ; cela dit, on est arrivés, on a trouvé notre valise, et on est partis. Train entre l'aéroport et la Gare du Nord, près de laquelle se trouve notre hôtel, marcher un petit peu sans se perdre, et arrivée à l'hôtel.

On loge au Crowne Plaza , on s'est dit qu'on dormait suffisamment peu à l'hôtel pour ne pas en profiter ;) La chambre est bien, semble un peu petite, mais le lit est très large, et ça c'est très appréciable !

On a soupé au restaurant de l'hôtel, tout était très bon. Une mention spéciale pour le thon à la plancha et pour le tiramisu au spéculoos :)

On a ensuite été se promener un peu, on est descendus jusque la Grand'Place, impressionnante même de nuit (on l'a pas encore vue de jour !) et on s'est arrêtés à 250 Bières, rue au Beurre - on y a acheté une bouteille de Bush triple ambrée, qu'on a bue à l'hôtel - une tuerie, soi dit en passant. Et dodo !

by Isabelle Hurbain at February 04, 2010 10:54 PM

February 02, 2010

Guillaume Lelarge

Hot Standby et Streaming Replication

Hier soir et ce soir, je me suis amusé à mettre en place ces deux fonctionnalités sur ma version de développement. Ça a été beaucoup plus simple que je ne le craignais. Mettre en place le Hot Standby, c'est aussi simple que la configuration du Warm Standby. Et ça marche sacrément bien. J'ai eu un peu plus de difficulté ce soir avec le Streaming Replication, mais principalement parce que je n'ai pas été très rigoureux dans les différentes manipulations (j'ai oublié le pg_stop_backup sur le serveur primaire, ce qui a eu pour conséquence une impossibilité de se connecter sur le secondaire). Bref. Mettre en place un Hot Standby avec du Streaming Replication, ça se fait très simplement. Et c'est redoutablement efficace. J'avoue que j'avais très peur du lag pour la réplication. Avec un wal_sender_delay à 200ms (la valeur par défaut), c'est pratiquement immédiat. J'ai ainsi restauré une grosse sauvegarde... et aucun lag. Dès que la restauration était terminée sur le primaire, mon secondaire était synchronisé. Cela étant dit, je n'ai pas restauré en une seule transaction. Mais quand même, je suis sacrément impressionné pour ces deux fonctionnalités : c'est simple et rapide à mettre en place, c'est fonctionnel et rapide en exécution. Évidemment, il va y avoir un bon debug à faire. Mais clairement, cette nouvelle version (9.0) a toutes les chances d'avoir un franc succès.

by Guillaume Lelarge at February 02, 2010 11:19 PM

January 25, 2010

Guillaume Lelarge

Petit résumé des deux dernières semaines sur pgAdmin - 2

La première semaine a été remplie de nombreuses corrections de bugs :

  • correction de l'affichage du composant date./heure ;
  • correction de l'appel à la fonction storenode de Slony-I 2.0.x ;
  • correction de la sélection de l'objet dans le navigateur quand un serveur est choisi avec l'argument en ligne de commande /s ;
  • correction de l'affichage d'un type doté d'un typmod spécifique ;
  • acceptation des adresses IPv6 ;
  • correction d'une erreur SQL lors de l'ajout/modification d'un paramètre sur une base de données, un utilisateur ou une fonction ;
  • correction d'un message d'erreur lors de la sauvegarde des favoris.

La deuxième semaine a concerné de nouvelles fonctionnalités, principalement pour la future 9.0.

  • Autorisation de la copie des informations sur les onglets « Propriétés », « Statistiques », « Dépendances » et « Dépendants de ».
  • Gestion de la nouvelle option INPLACE de VACUUM.

vacuuminplace.png

  • Support de la nouvelle instruction « ALTER TABLESPACE name SET/RESET ».

tablespacesetoptions.png

Sans compter que je viens de terminer un patch gérant les nouvelles options de VACUUM, à savoir COSTS et BUFFERS.

by Guillaume Lelarge at January 25, 2010 11:04 PM

January 22, 2010

Guillaume Lelarge

« Pro Git »

Une lecture informatique pour une fois. Un excellent bouquin qui se trouve aussi disponible en Creative Commons. Scott Chacon a fait un excellent boulot en écrivant ce livre : simple, didactique, professionnel, passionnant. À conseiller à tous ceux qui veulent connaître Git dans les moindres recoins sans se prendre la tête.

by Guillaume Lelarge at January 22, 2010 10:33 PM

January 21, 2010

Guillaume Lelarge

Oubliez la 8.5...

Et voilà, la core-team a décidé que la prochaine version sera en fait la __9.0__. Que dire. Il est clair qu'avec Hot Standby et Streaming Replication, ça vaut carrément ce saut de version. Encore une raison de plus pour tester à fond cette version, pour venir au FOSDEM, histoire de découvrir toutes ces nouveautés alléchantes... et d'éviter de relancer la vieille discussion sur le renommage du nom du projet :)

by Guillaume Lelarge at January 21, 2010 05:27 PM

January 15, 2010

Guillaume Lelarge

Streaming replication dans le CVS

Le Hot Standby a été ajouté en décembre par Simon Riggs. Heikki vient tout juste d'intégrer le Streaming Replication. Que dire de plus... la 8.5 est un bond en avant incroyable pour PostgreSQL. Il est d'ailleurs bien possible qu'elle en devienne la 9.0.

Raison de plus pour que pgAdmin fasse lui-aussi un gros bond en avant.

Je profite de ce billet pour dire que je ne travaillerais pas sur la traduction de la documentation avant que pgAdmin ne sorte en version beta. Tout simplement pour pouvoir travailler le plus possible sur pgAdmin tant que c'est possible. À la sortie de la beta de pgAdmin, je me consacrerais à la traduction du manuel de PostgreSQL. Cela étant dit, si d'autres veulent commencer avant, qu'ils m'envoient un mail :)

by Guillaume Lelarge at January 15, 2010 10:12 AM

January 14, 2010

Isabelle Hurbain

Srsly, 3 mois ? et considérations pythonesques sur l'EXIF

Je me rends compte avec horreur que ça fait presque trois mois que j'ai pas bloggé ici. C'est affreux. Rattrapons cela immédiatement.

Faut dire, j'ai été occupée ailleurs :

... débordée, quoi.

Bref. Au fait, bonne année, tout ça, on est encore en janvier, l'honneur est sauf.

Si je me décide à reprendre le clavier aujourd'hui, c'est pour partager un tout ptit bout de code très laid. Contexte : j'envisage fortement l'achat d'un truc un poil plus lumineux que mes objectifs courants pour le Pentax. Et comme je veux pas y passer les deux bras (un seul suffira), ça implique presque mécaniquement la focale fixe. Et comme je suis indécise, j'hésite entre deux focales : la 35 et la 50. Par conséquent, j'ai codouillé un ptit truc dans un coin pour savoir si j'avais plutôt tendance à tourner autour du 35 ou plutôt autour du 50. Me suis limitée à la cuisine, parce que c'est quand même là que je prends une majorité de photos, et si je prends un objectif qui me va pas à la cuisine, ça va me déprimer je le sens.

Attention, c'est (comme d'habitude) probablement très laid et strictement non flexible. Mais ça fait à peu près ce que je veux, donc si ça peut servir à quelqu'un... (je dois quand même pas être la seule à me poser ce genre de questions ? si ? bon.). C'est du Python, obviously, parce que le Python, c'est bien.

from PIL import Image
from PIL.ExifTags import TAGS
import os

def get_exif(fn):
    ret = {}
    i = Image.open(fn)
    info = i._getexif()
    for tag, value in info.items():
        decoded = TAGS.get(tag, tag)
        ret[decoded] = value
    return ret

path = "/home/isa/Photos/cuisine"
range35 = 0
range50 = 0
for root, dir, fnames in os.walk(path):
  for fname in fnames:
    fname = root + "/" + fname
    if os.path.basename(fname).lower().endswith("jpg"):
      try:
        exif = get_exif(fname)
        model = exif["Model"]
        if(model.startswith("PENTAX K-m")):
          (num1, num2) = get_exif(fname)["FocalLength"]
          focal = num1/num2
          if(focal >= 31 and focal <= 39):
            range35 = range35 +1
          elif(focal >= 46 and focal <= 54):
            range50 = range50 + 1
      except:
        pass

print "Range autour de 35 :"
print range35

print "Range autour de 50 :"
print range50

Et, pour ceux que ça intéresse, le résultat est sans appel :

Range autour de 35 :
951
Range autour de 50 :
437

Sur le 35 j'ai « le choix » entre la 1.4 de Sigma et la 2.8 macro de Pentax... ça sera probablement le macro, la mise au point à 40cm+ sur le Sigma me fait un peu peur. Ça m'emmerde un peu, au sens où je gagne pas tant que ça en luminosité. Bref... la photo est un domaine de frustration permanent :p (à moins d'être très riche et d'avoir un dromadaire pour porter le matériel).

PS : je vient de passer, avec un peu de retard, sur le Gculicious, ressource précieuse s'il en est, et d'y trouver un toolaize de stats EXIF pour compte Flickr. Pour le coup, j'ai à peu près le même nombre de photos dans les deux catégories... dameunède :p

by Isabelle Hurbain at January 14, 2010 07:33 PM

January 10, 2010

Guillaume Lelarge

Petit résumé des deux dernières semaines sur pgAdmin

Je continue à travailler sur pgAdmin. J'aime bien. Je suis assez à l'aise avec le code maintenant, ce qui est très agréable.

Deux nouvelles fonctionnalités dans ces deux semaines. La première, j'en avais déjà parlé, concerne la fenêtre de restauration. J'ai enfin pris mon courage à deux mains pour terminer ce patch. Il n'est pas encore intégré dans le code source de pgAdmin mais j'espère que ce sera le cas d'ici la fin du mois, Dave étant bien occupé. Voici une copie d'écran de l'onglet qui a pris une petite partie de ce week-end :

restore.png

Comme vous le voyez, il est maintenant possible de sélectionner plusieurs éléments de la sauvegarde pour restaurer tous ces éléments. Par exemple, vous pouvez vouloir restaurer uniquement le schéma X ainsi que la table Y d'un autre schéma, une séquence et une fonction d'un autre schéma. Bref, vous choisissez les objets que vous voulez parmi ceux disponibles dans la sauvegarde que vous avez sélectionnée. Plutôt cool :)

L'autre fonctionnalité est une nouveauté de la 8.5, développée par Dave Page. En 8.5, les applications pourront s'identifier à la connexion ou après coup grâce à un paramètre appelé application_name. Je ne connais pas encore d'applications qui le font... en dehors de pgAdmin. La vue système pg_stat_activity a été modifiée pour afficher cette information. J'ai donc modifié pgAdmin pour qu'il initialise ce paramètre pour ses connexions, et pour qu'il affiche cette nouvelle colonne dans la fenêtre d'état du serveur. Voici le résultat :

applicationname.png

Là-aussi, plutôt cool :)

En dehors de ça, j'ai beaucoup travaillé sur des rapports de bugs. Du coup, je viens d'enregistrer quatre correctifs de bugs.

by Guillaume Lelarge at January 10, 2010 10:11 PM

January 08, 2010

Guillaume Lelarge

PostgreSQL au FOSDEM

Et voilà, le planning pour le FOSDEM est publié. Ayant fait partie du comité de sélection des conférences avec trois autres personnes, je suis assez content du résultat.

En gros, c'est très tourné vers la 8.5 : Hot Standby, Streaming Replication (ancien SyncRep, toujours pas intégré), Exclusion constraints. Il y a aussi une conférence sur le développement de PostgreSQL (après tout, le FOSDEM est un événement à destination principalement des développeurs), une conférence sur des fonctionnalités futures et un retour d'expérience. Plutôt équilibré dans les sujets. Que du bon :)

Sans parler qu'il y aura les événements sociaux habituels le vendredi et le samedi soir.

N'hésitez pas à venir, ça promet d'être un FOSDEM exceptionnel. Pour ceux qui ne peuvent pas venir deux jours durant, notez que les conférences n'ont lieu que le samedi (en dehors d'une conférence de David Fetter le dimanche).

by Guillaume Lelarge at January 08, 2010 06:19 PM

Bilan de l'ancienne année, idées pour la nouvelle année

Commençons par le bilan de l'année passée.

Au niveau personnel, le plus important a été la naissance de mon neveu, Maxime. Un charmant petit bambin qui fait plein de sourire... quand il ne pleure pas. Bin, oui, c'est un bébé. J'ai continué mes visites fréquentes au cinéma de Chilly-Mazarin, mais avec moins d'assiduité que l'année dernière. Je voulais corriger ça mais la neige ne m'aide pas en ce début d'année 2010. J'ai continué aussi la lecture mais toujours moins que ce que je voudrais. L'autre événement perso très important cette année a été le voyage au Canada. J'en conserve un excellent souvenir.

Au niveau boulot, pas grand chose à dire. J'aime toujours autant mon boulot et je souhaite que ça continue ainsi. Il est à savoir qu'on cherche à embaucher ces temps-ci, donc les intéressés peuvent envoyer un mail à recrutement@dalibo.com pour nous faire parvenir leur CV.

Mais ce sont évidemment les projets libres qui m'ont beaucoup occupé cette année. J'ai arrêté la traduction du guide ABS en juin et j'ai démissionné de l'association traduc.org en décembre. Pourquoi ? parce que j'ai besoin de tout mon temps pour le projet PostgreSQL. Au début, je pouvais tout mener de front vu que le tout se limitait à la traduction du manuel (ce qui est pourtant un gros boulot en soi). Maintenant, je continue la traduction, je code sur différents projets relatifs à PostgreSQL mais je m'occupe aussi des événements (par exemple le PGDay 2009, mais aussi dernièrement le comité de sélection des conférences pour le FOSDEM). Bref, je me concentre uniquement sur PostgreSQL et ses logiciels associés. Donc j'ai continué la traduction du manuel, j'ai écrit un patch pour pgPool et plein de patchs pour pgAdmin. J'ai aussi participé à la promotion du logiciel en réalisant deux conférences, une aux JDLL et une aux PGDay 2009. La promotion de PostgreSQL passe aussi par l'écriture d'articles, ce que j'ai fait avec ce hors-série qui a été apparemment très apprécié. Toujours au niveau publication, j'ai effectué la relecture technique du livre « Installer et débuter avec PostgreSQL ». Enfin, j'ai participé à plusieurs événements PostgreSQL : FOSDEM, PGCon 2009 et PGDay 2009. Pour le PGCon, je n'étais que simple visiteur mais ça m'a permis de rencontrer des tas de personnes que je ne connaissais pas avant. Les deux autres, j'étais dans l'équipe d'organisation, ce qui fait qu'on n'en profite pas de la même façon. Mais c'est quand même intéressant.

Bref, une année bien occupée :)

Et quoi de prévu pour l'année prochaine ?

Au niveau personnel, il faudrait que je me fasse un voyage à l'étranger (en dehors de la Belgique prévu en février). Il faudrait aussi que je m'occupe enfin de ma salle de bain. Elle le mérite vraiment.

Au niveau PostgreSQL, j'ai plein de projets. Évidemment, je vais continuer la traduction du manuel. J'ai trois patchs dans ma tête pour PostgreSQL concernant le application_name, pg_dump et pg_restore. J'ai aussi plein de patchs prévu pour pgAdmin. J'irais au FOSDEM à coup sûr (d'où la Belgique) où je passerai un bon moment sur le stand comme la dernière fois. Il y a aussi de fortes chances que je sois très impliqué dans la mise en place du PGDay prévu à Amsterdam. Je prévois aussi au moins deux articles sur PostgreSQL dans GNU/Linux Magazine France pour aborder tous les points de la future 8.5. De temps en temps, je pense à un livre mais suis rapidement découragé du boulot que cela demanderait. En tout cas, je prévois de faire un équivalent du « Visual Tour » de pgAdmin pour toutes les modifications effectués pour la prochaine version de PostgreSQL (donc celle après la 8.5). Quant aux conférences, tout dépend des propositions :)

Voilà. Après tout ça, une excellente année 2010 à tous !

by Guillaume Lelarge at January 08, 2010 05:53 PM

December 29, 2009

Guillaume Lelarge

Suite - Documentation sur l'installation de PostgreSQL sous Windows

J'ai profité de cette soirée pour faire la documentation d'installation de PostgreSQL 8.4 sous Windows.

De nouveau, tout commentaire bienvenu.

De plus, j'ai fait la traduction de l'installeur. J'attends que Dave publie cette nouvelle version pour mettre à jour les copies d'écran.

by Guillaume Lelarge at December 29, 2009 09:43 PM

December 27, 2009

Guillaume Lelarge

Quelques nouvelles fonctionnalités pour pgAdmin

Oui, je bosse pas mal dessus actuellement.

En premier lieu, j'ai remplacé la liste déroulante habituelle par une liste déroulante avec icône pour la liste des connexions dans l'outil de requêtage. Cela permet d'afficher la couleur du serveur pour ceux qui personnalisent les couleurs de leurs serveurs (fonctionnalité apparue avec la 1.10). Cela donne ceci :

coloredcombobox.png

Ensuite, j'ai travaillé sur la fenêtre de maintenance pour améliorer l'interface, mais rien de vraiment passionnant.

Le travail a été plus complexe pour la fenêtre de restauration d'une sauvegarde. Comme pour la fenêtre de sauvegarde, j'ai ajouté les nombreuses options manquantes, ajouté le code de vérification de version, et enfin remplacé la liste des objets par un arbre, beaucoup plus frappant visuellement. Voici les copies d'écran des différents onglets :

frmRestore_1.png

frmRestore_2.png

frmRestore_3.png

frmRestore_4.png

frmRestore_5.png

Évidemment, on ne va pas garder l'onglet 4 et l'onglet 5, vu qu'ils ont la même fonction, bien que l'affichage soit différent. Dave et moi pensons que l'onglet 4 est bien meilleur, ne serait-ce que parce qu'il est équivalent à celui de la fenêtre de sauvegarde (pour garder une cohérence).

Actuellement, il reste deux bouts de code à écrire:

  • tout d'abord, gérer le cas où certains objets sont desélectionnés ;
  • ensuite, gérer la sauvegarde d'un seul objet.

Je ne suis pas sûr en plus qu'il faille conserver le bouton « View ». À partir du moment où le fichier a été sélectionné, il faudrait immédiatement le lire et indiquer les objets dans l'onglet 4. Demander à ce que l'utilisateur clique sur « View » me semble un peu bizarre.

Dernier point, j'ai travaillé sur le code de gestion des index. Le but est d'ajouter la possibilité de modifier la classe d'opérateur d'un élément d'un index. L'idée vient de Thomas qui m'en avait parlé il y a bien longtemps mais je n'avais jamais eu le temps de m'y mettre. Le patch est prêt, j'attends le commentaire de Dave. Sans commentaire, je l'enregistrerai dans le SVN d'ici jeudi prochain.

Je ne vais pas pouvoir conserver ce rythme très important encore longtemps. je pense donc passer à un rythme plus tranquille, du style un patch par semaine. Mais il faut dire que git permet de gérer les patchs très facilement, ce qui fait qu'on peut bosser sur plusieurs patchs en même temps... un vrai bonheur.

by Guillaume Lelarge at December 27, 2009 09:00 PM

Documentation sur l'installation de PostgreSQL sous Windows

Comme il y a beaucoup de demandes sur l'installation de PostgreSQL sous Windows, j'ai décidé d'écrire une documentation sur ce sujet. Pour l'instant, ce n'est qu'un premier jet, assez simpliste mais qui couvre, je crois, une bonne partie des points à savoir.

Je l'ai placé sur le site communautaire de Dalibo car ça m'était plus simple. Le blog communautaire ne facilite pas vraiment ce genre de rédactions, le wiki est plutôt dédié à l'activité de l'association, et la partie documentation concerne plutôt la documentation officielle.

Évidemment, le document n'est pas terminé et ne le sera certainement jamais. Suivant les questions et les réponses que je verrais sur les listes de discussion ou sur les forums, je modifierais cette documentation autant que possible.

Enfin, dernier point, il s'agit d'une documentation pour la version 8.3. Une autre verra le jour pour la version 8.4 dès la semaine prochaine.

Bref, c'est ici.

Tout commentaire bienvenu :)

by Guillaume Lelarge at December 27, 2009 04:34 PM

December 26, 2009

Guillaume Lelarge

« Résolution 819 »

Un excellent film avec de bons acteurs. Il permet de découvrir le travail des enquêteurs et des médecins légistes envoyés en ex-Yougoslavie par le Tribunal International de La Haye. C'est évidemment très émouvant grâce à des témoignages très forts, mais ne vous attendez pas à voir des tonnes d'hémoglobines. Les exactions ne sont pas vraiment montrés, seuls leurs résultats le sont: des charniers, des squelettes et des veuves. C'est vraiment dur à regarder.

Les acteurs sont très bons. Benoît Magimel en flic qui essaie de tenir le mieux possible mais qui ne peut s'empêcher de craquer par moment, Hippolyte Girardot en membre de la DGSE, aidant tant que possible l'enquêteur. À noter qu'il a (re)pris) ce rôle dans le film « Espion(s) ».

Bref, à voir et à méditer.

by Guillaume Lelarge at December 26, 2009 10:30 PM

« Monnayé »

Un bon Pratchett. On retrouve avec plaisir Moite von Lipwig, qui va passer de la Poste à la Banque. Voilà, c'est tout. Yep, l'histoire est à peu de chose près équivalente à « Timbré » (Going Postal en VO). Ce qui est peu. Mais c'est le seul reproche que je peux faire. Je me suis bien marré avec ce nouveau tome des Annales du Disque-Monde, les persos sont intéressants, on retrouve quelques anciens mais l'accent est vraiment mis sur Moite et Veterini. Bref, vivement le prochain (qui a l'air bien plus original).

by Guillaume Lelarge at December 26, 2009 05:36 PM

December 21, 2009

Guillaume Lelarge

« 2001, l'odyssée de l'espace »

Hmmm, il paraît que c'est une référence, un chef d'œuvre. J'avoue que je n'y ai pas compris grand-chose et que je me suis ennuyé ferme. Je n'ai même pas tenu jusqu'à la fin. J'ai loupé une occasion de ne pas dépenser mon argent.

by Guillaume Lelarge at December 21, 2009 10:50 PM

December 19, 2009

Guillaume Lelarge

Quelques news du côté pgAdmin

Pas mal de changement au niveau de pgAdmin ce mois-ci.

J'ai commencé en modifiant les champs de sélection de couleur. On utilisait auparavant un champ texte montrant le code couleur HTML et un bouton permettant d'accéder au dialogue natif de choix d'une couleur. Maintenant, on utilise seulement un bouton montrant la couleur sélectionnée. Ça donne ceci :

coloredbuttons.png

Ensuite j'ai commencé à ajouter le support de la 8.5 :

  • Support du DISTINCT pour les colonnes

distincts_column.png

  • Support de la clause WHEN des triggers

trigger_when.png

  • Support des colonnes au niveau des triggers

trigger_columns.png

Enfin, je me suis concentré sur la fenêtre de sauvegarde. Elle avait clairement besoin de beaucoup plus d'attention: interface déplorable et des options manquantes. Bref, ça a demandé d'augmenter considérablement le nombre d'onglets:

  • premier onglet: options du fichier de sauvegarde

backup1.png

  • deuxième onglet: options principales

backup2.png

  • troisième onglet: options moins importantes

backup3.png

  • quatrième onglet: choix des objets à sauvegarder (pour ce dernier, il a fallu créer un widget personnalisé, ce qui a été très intéressant à faire)

backup4.png

Le cinquième onglet affiche toujours le retour de la commande de sauvegarde.

Bref, beaucoup de nouveautés pour la future 1.12. La suite du programme ? continuer le support de la 8.5 (la gestion du nom de l'application est tout particulièrement en ligne de mire), continuer sur l'amélioration de l'interface (cette fois pour la fenêtre de restauration d'une sauvegarde et celle des opérations de maintenance), et la suite du travail sur la fenêtre d'état du serveur.

by Guillaume Lelarge at December 19, 2009 01:51 AM

December 18, 2009

Guillaume Lelarge

Quelques news

Hum, j'ai l'impression de n'écrire que des billets intitulés « Quelques news ». Désolé si je donne l'impression que j'abandonne mon blog. L'activité est plutôt intense actuellement, que ce soit boulot ou perso ou libre. Ce qui est plutôt bon :)

Donc, comme je n'ai pas trop de temps, voici une liste de news rapides:

  • J'ai commencé à utiliser Chrome (le navigateur de Google) et j'avoue être assez séduit. Il est rapide, plutôt bien foutu, rapide, élégant, super rapide mais il lui manque le / pour la recherche. Ai-je dit qu'il était super rapide ? :) Bref, il pourrait rapidement remplacer mon Firefox.
  • Thunderbird version 3 a l'air très intéressant. Du coup, je suis en plein test dessus. Je retournerais vers KMail en cas de déception.
  • J'ai démissionné de mon poste de trésorier chez traduc.org. J'ai aussi quitté le CA. Je reste encore membre, et je vais aider à la transition (vu que trois autres membres du bureau sont partis).
  • git est une tuerie. Je l'utilise de plus en plus pour mes développements sur pgAdmin. Il me facilite grandement la vie.
  • « Big Bang Theory », saison 2, est excellent.
  • Les nouvelles versions mineures de PostgreSQL et de Slony disposent d'un manuel traduit à jour.
  • Les applications de l'alpha 3 de PostgreSQL sont traduites. Il est fort probable que je commence la traduction du manuel dès l'ajout du tag de l'alpha 3.

by Guillaume Lelarge at December 18, 2009 02:46 PM

December 08, 2009

Guillaume Lelarge

Passage à XFCE

J'ai mis du temps à y passer, mais j'ai fini par faire le saut. Plus on utilise un DE, plus on utilise les applications intégrés et moins on a de facilités à passer à autre chose.

Deux jours après la sortie de Kubuntu 9.10, j'ai mis à jour mon système. Je n'ai pas de nouveau testé knetwork-manager, je suis resté avec la version Gnome. Une à deux semaines après, j'ai re-testé XFCE... et je ne suis pas retourné depuis à KDE.

Contrairement à ce que je pensais, j'ai tout ce qu'il me faut. En fait, je n'utilise pas beaucoup d'applications. J'ai conservé KMail pour les mails (étonnament, il est difficile de faire plus rapide et plus léger). J'ai conservé aussi Firefox pour le web (difficile de faire plus lourd... mais c'est aussi le plus fonctionnel). J'ai remplacé Kopete (IM) et Quassel (IRC) par pidgin. Il est léger, il se laisse gentiment oublier, parfait. J'ai remplacé amarok par rhythmbox, suffisant pour mes besoins. Et Konsole a laissé la place à Terminal qui est aussi bien, voire mieux.

Que dire de plus. C'est simple, rapide, robuste. J'aime.

by Guillaume Lelarge at December 08, 2009 09:39 PM

« Getting Things Done »

Cassons le suspens tout de suite. C'était moins intéressant que ce que j'espérais. Néanmoins, j'ai pu y piocher quelques méthodes d'organisation intéressante. Ça m'a aussi permis de voir que certaines méthodes proposées n'étaient clairement pas pour moi :)

/me toujours à la recherche d'une bonne méthode pour organiser son travail...

by Guillaume Lelarge at December 08, 2009 09:15 PM

appzer0

Des nouvelles de Tractopelle

Ntb-tractopelle-a-l-ile-de-re.jpg

Alors, où en est-on ? Tractopelle s'en sort-il dans la jungle d'Internet ?

Plutôt oui. L'administration du serveur est quasi-inexistante ; tout fonctionne tout seul ! :-) Quelque mises à jour de sécurité par ci par là, OpenSSH dernièrement.

Les statistiques sont là : http://poopy.fr/stats/

Le temps de fonctionnement depuis le dernier redémarrage (la présence de l'onduleur aide beaucoup à cet « uptime » !) :

root@Tractopelle:~# uptime
 15:00:52 up 55 days, 23:12,  1 user,  load average: 0.00, 0.00, 0.00

Les fichiers journaux grossissent doucement :

root@Tractopelle:~# ls -lh /var/log/httpd/access_log           
-rw-r--r-- 1 root root 4.0M 2009-12-04 16:26 /var/log/httpd/access_log
root@Tractopelle:~# ls -lh /var/log/httpd/error_log 
-rw-r--r-- 1 root root 1.3M 2009-12-08 12:15 /var/log/httpd/error_log
root@Tractopelle:~# ls -lh /var/log/httpd/poopy.fr/
total 11M
-rw-r--r-- 1 root root  11M 2009-12-08 14:59 access.log
-rw-r--r-- 1 root root 667K 2009-12-08 14:56 error.log

Comme on peut s'en douter, de nombreux « logs » de tentatives d'intrusion via SSH sont présents :

root@Tractopelle:~# dmesg | tail
SSH_brute_forceIN=eth0 OUT= MAC=00:24:21:2a:8e:b6:00:07:cb:34:aa:a2:08:00 SRC=64.62.148.198 DST=192.168.0.12 LEN=60 TOS=0x00 PREC=0x00 TTL=53 ID=13594 DF PROTO=TCP SPT=37528 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0 
SSH_brute_forceIN=eth0 OUT= MAC=00:24:21:2a:8e:b6:00:07:cb:34:aa:a2:08:00 SRC=218.107.139.2 DST=192.168.0.12 LEN=60 TOS=0x00 PREC=0x00 TTL=39 ID=62320 DF PROTO=TCP SPT=16348 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0 
SSH_brute_forceIN=eth0 OUT= MAC=00:24:21:2a:8e:b6:00:07:cb:34:aa:a2:08:00 SRC=218.107.139.2 DST=192.168.0.12 LEN=60 TOS=0x00 PREC=0x00 TTL=39 ID=62322 DF PROTO=TCP SPT=16348 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0 
SSH_brute_forceIN=eth0 OUT= MAC=00:24:21:2a:8e:b6:00:07:cb:34:aa:a2:08:00 SRC=218.107.139.2 DST=192.168.0.12 LEN=60 TOS=0x00 PREC=0x00 TTL=39 ID=62324 DF PROTO=TCP SPT=16348 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0 
SSH_brute_forceIN=eth0 OUT= MAC=00:24:21:2a:8e:b6:00:07:cb:34:aa:a2:08:00 SRC=77.79.88.215 DST=192.168.0.12 LEN=60 TOS=0x00 PREC=0x00 TTL=50 ID=61998 DF PROTO=TCP SPT=40626 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0 
SSH_brute_forceIN=eth0 OUT= MAC=00:24:21:2a:8e:b6:00:07:cb:34:aa:a2:08:00 SRC=77.79.88.215 DST=192.168.0.12 LEN=60 TOS=0x00 PREC=0x00 TTL=50 ID=22720 DF PROTO=TCP SPT=40693 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0 
SSH_brute_forceIN=eth0 OUT= MAC=00:24:21:2a:8e:b6:00:07:cb:34:aa:a2:08:00 SRC=77.79.88.215 DST=192.168.0.12 LEN=60 TOS=0x00 PREC=0x00 TTL=50 ID=61999 DF PROTO=TCP SPT=40626 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0 
SSH_brute_forceIN=eth0 OUT= MAC=00:24:21:2a:8e:b6:00:07:cb:34:aa:a2:08:00 SRC=77.79.88.215 DST=192.168.0.12 LEN=60 TOS=0x00 PREC=0x00 TTL=50 ID=22721 DF PROTO=TCP SPT=40693 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0 
SSH_brute_forceIN=eth0 OUT= MAC=00:24:21:2a:8e:b6:00:07:cb:34:aa:a2:08:00 SRC=77.79.88.215 DST=192.168.0.12 LEN=60 TOS=0x00 PREC=0x00 TTL=50 ID=62000 DF PROTO=TCP SPT=40626 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0 
SSH_brute_forceIN=eth0 OUT= MAC=00:24:21:2a:8e:b6:00:07:cb:34:aa:a2:08:00 SRC=77.79.88.215 DST=192.168.0.12 LEN=60 TOS=0x00 PREC=0x00 TTL=50 ID=22722 DF PROTO=TCP SPT=40693 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0 

Le très simple pare-feu fait bien son travail, aucun souci en somme. On s'ennuierait presque !

by app zer0 at December 08, 2009 02:16 PM

December 05, 2009

Guillaume Lelarge

Prévisions pour décembre 2009

Rien vu le mois dernier, pas sûr de faire mieux ce mois:

  • « À l'origine », samedi 5 décembre ;
  • « Rapt », mercredi 9 décembre ;
  • « Hadewijch », lundi 14 décembre ;
  • « Vincere », samedi 19 décembre ;
  • « Persécution », lundi 28 décembre ;
  • « La Route », dimanche 3 janvier.

by Guillaume Lelarge at December 05, 2009 05:08 PM

November 24, 2009

Guillaume Lelarge

« Manhattan »

Je l'avais acheté depuis un bon moment mais je ne m'étais pas encore décidé à le regarder. J'avais un peu peur de m'ennuyer. Bête appréhension. En fait, j'ai trouvé ce Woody Allen très amusant. Je me suis bien marré. On retrouve tous les discours habituels de Woody dans son quartier si familier qu'il faudra bien un jour que j'aille le visiter en vrai. Bref, un très bon film.

by Guillaume Lelarge at November 24, 2009 10:48 PM

Un peu de traduction pour changer

Après un peu de code sur pgAdmin dont je n'ai pas encore parlé, j'ai fait aujourd'hui un peu de traduction.

Les messages modifiés des versions 7.4 à 8.4 ont été mis à jour. J'ai aussi commencé la traduction de la version 8.5, vu que Peter a ouvert (depuis un bon moment pour être franc) la traduction de la branche en cours de développement. C'est la première fois qu'il le fait, donc autant en profiter pour s'avancer dans ce travail.

Pour la traduction de la documentation de la 8.5, j'attends la fin du commitfest en cours. J'espère pouvoir fournir une traduction de la 8.5 alpha 3 (et de alpha suivantes).

J'ai aussi profité de cette soirée pour regarder les modifications de la documentation Slony entre les versions 1.2.16 et 1.2.17. Rien, que dalle, nada. Au moins, cette mise à jour a été rapide. Mais ça conforte ma mauvaise impression sur ce projet.

by Guillaume Lelarge at November 24, 2009 10:46 PM

November 21, 2009

Guillaume Lelarge

Le PDF du manuel français de PostgreSQL 8.4.1 est enfin disponible

Oui, je sais, ça fait pratiquement cinq mois que ce PDF aurait dû être disponible. Malheureusement, la génération posait problème et travailler sur cette génération, bien que cela ne soit pas complexe, est très ennuyant. On ne peut travailler que par étapes basiques :

  • on lance la génération,
  • en cas d'erreur, on supprime le chapitre suivant,
  • on relance la génération,
  • en cas de nouvelle erreur, on supprime le chapitre suivant,
  • on relance la génération,
  • en cas de succès, on remet l'ancien chapitre, et on supprime une sous-partie du chapitre,
  • on relance la génération,
  • etc... jusqu'à trouver la position de l'erreur,
  • et on recommence tout le processus jusqu'à l'absence de tout problème.

Bref, comme vous pouvez le comprendre, c'est très ennuyant, même si c'est pas forcément difficile à faire.

Voilà, voilà, j'arrête de me plaindre.

Après une heure de travail, le PDF est enfin disponible :)

by Guillaume Lelarge at November 21, 2009 06:18 PM

Gestion du drag-and-drop dans pgAdmin

J'ai commencé cette semaine à ajouter la gestion du drag-and-drop dans pgAdmin. Je me suis occupé pour l'instant de l'outil de requêtage.

Vous prenez un fichier dans l'explorateur, vous le traînez jusqu'au champ de saisie de la requête. Vous verrez que votre curseur change indiquant la possibilité d'y laisser le fichier :

pgadmin_dragandrop_1.png

En lâchant le bouton de la souris, pgAdmin va chercher à charger le contenu de ce fichier. Il vous posera évidemment la question de la sauvegarde de la requête précédente (le cas échéant) :

pgadmin_dragandrop_2.png

Si vous n'annulez pas l'opération, le contenu du fichier sera intégré dans le champ de saisie des requêtes :

pgadmin_dragandrop_3.png

Cool, non ? :)

(ce qui est encore plus cool, c'est de travailler de nouveau sur le code de pgAdmin... je suis en plein dedans, et c'est génial)

by Guillaume Lelarge at November 21, 2009 01:09 PM

November 11, 2009

Guillaume Lelarge

« The third victim »

C'est le meilleur livre (policier) que j'ai lu depuis (très) longtemps. Je suis totalement bluffé. J'ai absolument adoré. Lisa Gardner a une façon de présenter ses personnages, de les faire vivre qui est captivante. On sent aussi qu'elle s'est beaucoup renseigné sur ce type d'affaire (les tueries d'enfants dans les écoles). J'aime beaucoup sa façon de montrer comment les différents protagonistes de cette histoire réagissent (les parents des victimes, mais aussi les parents du tueur, les flics, les habitants de la ville ainsi que les « notables »), Ça rend le roman encore plus prenant, encore plus réel... bref, c'est tout simplement excellent :)

Il est clair pour moi que je vais vite aller acheter ses autres romans chez WH Smith.

by Guillaume Lelarge at November 11, 2009 04:49 PM

November 09, 2009

Guillaume Lelarge

Salve de remerciements pour le PGDay 2009

Pour rétablir un peu la vérité, merci à:

  • C-S et Jean-Christophe Arnu: la proposition de Jean-Christophe Arnu d'utiliser les locaux de Télécom Paristech, comme le proposait son employeur et Télécom Paristech, nous a permis d'éviter une dépense d'au moins 20000 euros tout en disposant de salles de conférence entièrement rénovés et bien pourvus côté vidéo et sono ;
  • Télécom Paristech, Talel Abdessalem, et les équipes de Télécom Paristech pour nous avoir fourni des locaux en si bon état ;
  • Ivanne et Sidonie, pour leur talent (y compris dans le chant :) ), leur joie... et un devis moitié moins important que tous les traiteurs professionnels tout en fournissant une prestation que je ne suis pas certain de retrouver chez un traiteur professionnel ;
  • toutes les personnes du staff qui ont consacré du temps à enregistrer les visiteurs, à tenir les stands, à surveiller les salles de conférence, à aider le traiteur (Andreas Scherbaum, Cédric Villemain, Christophe Chauvet, Damien Clochard, Dave Page, David Fetter, Jean-Paul Argudo, Greg Stark, Guillaume Lelarge, Guillaume Smet, Guillaume de Rorthais, Koen Martens, Magnus Hagander, Marc Cousin, Pascal Brognez, Stéphane Kanshine, Stéphane Schildknecht) ;
  • aux personnes ne faisant pas parti du staff mais qui ont quand même beaucoup aidé (je pense principalement à Hiroshi Saito) ;
  • aux 40 conférenciers qui, d'après ce que j'ai entendu dire, ont tous fourni des prestations de qualité ;
  • un remerciement spécial à Guillaume Smet, d'Open Wide pour tout le boulot impressionnant qu'il a abattu ;
  • et enfin, un énorme remerciement à toutes les personnes qui sont venus voir les conférences (sans eux, tout ce travail aurait été vain).

by Guillaume Lelarge at November 09, 2009 09:10 PM

November 08, 2009

Guillaume Lelarge

Prévisions pour novembre 2009

J'ai l'impression de n'avoir rien vu au ciné le mois dernier, ça ne risque pas de s'arranger car novembre n'a pas l'air de fourmiller de films sympas :

  • « Les herbes folles », lundi 16 novembre ;
  • « Micmacs à tire-larigot », samedi 21 novembre ;
  • « Le dernier pour la route », mercredi 25 novembre.

by Guillaume Lelarge at November 08, 2009 03:45 PM

PGDay 2009, un bilan positif

Je voulais écrire des billets sur chaque journée, avec le déroulement de la journée, les actions en tant que membre du staff, mais aussi les conférences que j'aurais pu voir. Parce que, oui, j'avais la stupidité de croire que j'aurais pu aller à une conférence... J'avais la grande naïveté de croire que je pourrais faire quelque chose d'autres que du staff.

En fait, j'ai eu trop de boulot. Préparer les salles de conférences, préparer les stands d'enregistrement avant l'arrivée des visiteurs, mettre en place le stand de PostgreSQL.eu, s'assurer que le traiteur pouvait bosser comme il voulait, s'assurer que l'accueil et le service de sécurité de Telecom Paristech ne pétaient pas un plomb, sans parler de vérifier que chaque personne du staff était à son poste et de donner du boulot à chaque personne du staff. Et j'allais oublier ma propre conférence. Bref, un sacré paquet de boulot.

Les seuls moments de tranquillité ont été passés avec certains visiteurs, en discutant avec eux de ce qu'ils ont pu voir, de leurs impressions suite aux conférences, de comment ils ont ressenti l'événement, de ce qu'ils pensait des buffets. L'autre moment de tranquillité a été avec Magnus Hagander, Dave Page et Raphael Enrici pour la réunion de développement sur pgAdmin. C'était intéressant d'être tous réunis. Enfin, c'est la première fois que je rencontrais Hiroshi Saito, ce qui a été un grand plaisir. Tout d'abord parce qu'il nous a filé un énorme coup de main, mais aussi parce que j'ai pas mal bossé avec lui et que c'est toujours plaisant de rencontrer finalement une personne avec qui on a passé autant de temps sur IRC..

Que dire de plus... cet événement nous a pris beaucoup de temps et d'énergie. Le résultat est plutôt à la hauteur de mes espérances. Nous avons quand même faire deux erreurs. Il aurait fallu filmer les conférences et il aurait fallu qu'on ait notre propre réseau wifi. En dehors de cela, ça a été plutôt une réussite. Je souhaite bon courage aux prochains qui ne doivent pas s'attendre à la quantité de boulot qui les attend. Je ne peux que les pousser à commencer dès maintenant.

PS : J'ai fait une erreur personnelle. Faire une conférence. Je travaillais encore sur mes slides le soir précédent ma conférence. Et même si les critiques n'étaient pas mauvaises, je ne me suis pas senti très bon.

by Guillaume Lelarge at November 08, 2009 07:30 AM

November 03, 2009

Guillaume Lelarge

PGDay 2009, J - 3

Je crois qu'on est fin prêt. Les personnes ayant le plus travaillé sur ce projet commencent à venir dès demain : Magnus, Dave, Andreas et quelques autres encore. Sans parler évidemment des français.

En gros, il ne reste plus qu'à s'assurer que le wifi fonctionne, que les goodies, flyers et autres gadgets sont bien arrivés. Il faudra ensuite remplir les sacs pour que l'enregistrement puisse se faire rapidement, histoire de passer directement aux choses sérieuses.

On devrait atteindre les 200 visiteurs, ce qui serait pas mal. Au-dessus, je suis ravi. Vers 200, je suis simplement content. On verra bien.

En tout cas, ça promet d'être très intéressant. Dommage que je ne sois pas simple spectateur, certaines conférences ont l'air passionnantes. En tant que membre du staff, je sais bien que je n'en verrais pas beaucoup. Et je louperais à coup sûr celle qui avait ma préférence, vu que ma conférence a lieu à la même heure. Mais bon, c'est le jeu. C'est pas bien grave. Et puis je pourrais toujours harceler Heikki de questions avant ou après sa conf :)

En tout cas, attendez-vous à un compte-rendu jour par jour (ça ne sera pas dur, ça ne fait que deux comptes-rendus :) )... ou alors demi-journée par demi-journée.

En tout cas, vivement vendredi matin.

by Guillaume Lelarge at November 03, 2009 10:46 PM

October 31, 2009

Guillaume Lelarge

« OSS 117, Rio ne répond plus »

J'ai beaucoup aimé. Évidemment, l'effet de surprise n'est plus présent mais il n'empêche qu'on passe un bon moment avec Jean Dujardin et Louise Monot. Sans être un chef d'œuvre, on se marre bien :)

by Guillaume Lelarge at October 31, 2009 06:22 PM

October 24, 2009

Guillaume Lelarge

Et si on reprenait un peu sur pgAdmin...

Ça fait un bon moment que je n'ai pas parlé de pgAdmin. La dernière fois, c'était le 20 juillet pour parler de mon premier patch sur la 1.11. Ce dernier ajoutait quelques statistiques pour certains objets (bases de données, index et fonctions).

Que s'est-il passé depuis ? Il n'y a pas eu une très grosse activité pour être franc. Néanmoins, il y a quand même eu des patchs proposés et intégrés.

Un utilisateur s'est plaint, avec raison, qu'il ne pouvait pas utiliser les savepoints avec l'éditeur de requêtes de pgAdmin. C'était tout à fait vrai. À la moindre erreur, pgAdmin exécutait de lui-même un ROLLBACK. Du coup, j'ai ajouté une option permettant de désactiver au besoin ce comportement. Cela passe par un paramètre supplémentaire dans la configuration :

pgadmin_1.11_1.png

mais aussi par un menu spécial directement dans l'éditeur de requêtes :

pgadmin_1.11_2.png

J'ai aussi continué mon travail sur la fenêtre d'état du serveur. Les lignes des processus sont maintenant colorisées :

pgadmin_1.11_3.png

suivant un code couleur modifiables dans la fenêtre de préférence.

Il est aussi possible de sélectionner un processus exécutant une requête et d'ouvrir l'outil de requêtage avec cette requête en cliquant sur le bouton adéquat. Un clic...

pgadmin_1.11_5.png

... et hop, outil de requêtage ouvert avec la requête sélectionnée :

pgadmin_1.11_4.png

Les informations sur les verrous dépendent de la base de connexion pour le décodage du nom des tables verrouillées. Il est donc maintenant possible de sélectionner la base à partir de laquelle sera exécutée la requête de vérification des verrous :

pgadmin_1.11_6.png

J'ai aussi enregistré un patch permettant de conserver l'état de maximisation des fenêtres pgAdmin (auparavant, on ne restaurait que la taille, mais pas l'état de maximisation).

Dave Page, pour sa part, a intégré deux patchs intéressants bien que pas très « visuel ». Le premier permet de mettre en cache les types de données, pour accélérer l'ajout de colonnes dans une table. Le second ajoute deux scripts (SELECT et EXEC) pour les fonctions et procédures stockées.

Autant dire qu'il reste encore beaucoup de boulot à faire avant la prochaine version majeure. Cependant, je ne suis pas sûr que je pourrais vraiment m'y mettre avant la fin du PGDay 2009, surtout que j'ai une conférence à préparer :)

by Guillaume Lelarge at October 24, 2009 05:33 PM

October 23, 2009

Guillaume Lelarge

Une license sur blog.postgresql.fr

Depuis un petit moment, je cherche à ce que les billets et articles sur le blog de l'association PostgreSQLfr disposent d'une seule et même license. Après quelques mois de relance des différents auteurs, c'est enfin chose faite.

Nous utilisons donc la license Creative Commons BY-NC-SA 3.0.

Quatre auteurs n'ont pas répondu à mes mails, leurs billets (5 en tout) ont été mis hors-ligne. Si jamais ils souhaitent accepter la publication sous cette license, qu'ils m'envoient un mail pour que je change l'état de publication de leur billet. S'ils préfèrent que je supprime leurs articles, qu'ils me l'indiquant là-aussi.

by Guillaume Lelarge at October 23, 2009 04:19 PM

October 20, 2009

Isabelle Hurbain

Message de service pour o< cuisine

Hop,

j'ai passé o< cuisine sous Dotclear 2 (il était temps, me direz vous) et la conséquence directe pour les gens qui suivent le RSS c'est qu'il faut en mettre l'adresse à jour, la précédente ne marche plus.

Je l'ai signalé sur le blog, mais léger problème de poule et d'œuf – faut aller sur le blog pour le voir, et le RSS qui change d'adresse ne transmet pas l'info. Bref, pour ceux qui me supportent à ces deux endroits, mettez à jour vos RSS.

Fin du message de service.

by Isabelle Hurbain at October 20, 2009 05:09 PM

October 16, 2009

Guillaume Lelarge

Conférence sur la haute disponibilité aux JDLL 2009

(billet écrit dans le train, publié après... il me faut une clé 3G+ rapidement...)

Et voilà, je suis dans le train de retour vers Paris (Massy plus exactement).

Ma conférence avait lieu dans le petit amphithéâtre. Elle a duré environ une heure. L'audience était bien plus nombreuse que ce que j'espérais. Je n'ai pas compté mais je pense ne pas trop me tromper en disant qu'ils étaient une trentaine.

Cette conférence avait pour sujet la haute disponibilité avec PostgreSQL. En fait, j'ai repris les slides de la conférence de Jean-Paul Argudo, conférence qu'il avait donné lors de Solutions Linux 2009 (ses slides sont disponibles sur le site communautaire de Dalibo). Je n'ai fait qu'étoffer ses slides avec quelques outils supplémentaires et des informations provenant de ma propre expérience. J'en ai aussi profité pour mettre à jour certaines informations.

La conférence était divisée en trois parties : les solutions de pooling de connexion (2), les solutions de réplications (9) et les solutions de répartition de charge (2). Seul regret, ça faisait un peu catalogue à la Prévert. Mais bon, je pense qu'au moins tous les outils ont été présentés, même si chaque présentation était (très) rapide.

Pour une fois, j'ai bien respecté le temps mis à ma disposition. Il y a eu quelques questions à la fin. Des bonnes questions, et j'espère que mes réponses étaient convaincantes.

Pour ceux qui n'ont pas eu la possibilité de venir, Jean-Paul refera cette présentation lors du PGDay 2009 à Paris. N'hésitez pas à venir, le nombre d'intervenants est absolument incroyable et leur qualité est indéniable.

by Guillaume Lelarge at October 16, 2009 08:09 PM

October 15, 2009

Guillaume Lelarge

David Fetter chez Parinux

David Fetter vient au PGDay 2009 à Paris. Il restera quelques jours de plus pour faire une conférence (en anglais) chez nos amis de Parinux.

Pour ceux qui ne le connaissent pas, c'est un contributeur important dans le monde de PostgreSQL. Il est connu pour son attachement à Perl, aux fonctions Windows et CTE, mais il est surtout connu pour la reprise et la rédaction de « PostgreSQL Weekly News » (traduite en français chaque semaine par Nicolas Bougain).

J'ai assisté à plusieurs conférences de David et c'est toujours très plaisant. Il aime beaucoup Perl mais malgré ce goût douteux pour un langage incompréhensible, c'est un gars adorable avec plein d'humour. N'hésitez pas à venir le voir le 10 novembre. Je sais que, moi, j'y serais.

PS : J'allais oublier. Merci à Dimitri Fontaine pour avoir proposé à Parinux d'inviter David. Une excellente idée !

by Guillaume Lelarge at October 15, 2009 08:46 PM

September 10, 2009

appzer0

Se faire son serveur à la maison : 12 - Mettre en place un service rsync

Sync-crickets.jpg Tractopelle propose déjà à son public un service de synchronisation de fichiers via un service rsync. Il permet aux désireux d'être toujours « up-to-date» de pouvoir synchroniser leur copie locale avec un dépôt sans avoir à tout re-télécharger. Tractopelle possède un service rsync pour rester à jour avec les dépôts des dernières versions de Slackware.

On va voir comment mettre ça en place. Ça tombe bien , une fois de plus, c'est très simple ! rsync fait déjà bien évidemment partie de Slackware. La configuration se passe bien entendu dans /etc. Le principe consiste à créer un « module », en fait une section désignant un répertoire-dépôt local, puis à lancer ""rsync'' en mode démon.

Le « module » désigne en fait le chemin dans l'adresse rsync que les clients devront invoquer. Ici, nous créons le répertoire /home/ftp/slackware, créerons la section slackware dans /etc/rsyncd.conf. Ainsi, les clients synchroniseront via rsync://poopy.fr/slackware.

Voici la configuration que j'ai choisie :

root@Tractopelle:~# cat /etc/rsyncd.conf
motd file = /etc/rsyncd.motd
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock

[slackware]
path = /home/ftp/slackware
uid = nobody
gid = nogroup
read only = yes
list = yes
root@Tractopelle:~# cat /etc/rsyncd.motd
-- Welcome to Poopy.fr, an RSYNC Slackware mirroring server, France (81)

Le fichier rsyncd.motd permet d'afficher un message (bienvenue, infos techniques...) aux clients lors de la connexion. On enregistrera tout ce qui se passe dans un journal, /var/log/rsyncd.log (attention, les logs peuvent prendre de la place !). On spécifie également par commodité un fichier .pid unique pour le processus rsync ainsi qu'un verrou unique. La config' de rsync est très souple ; man rsync est votre ami !

Ici, on crée une section [slackware] : on dit à rsync que ce module se situe dans /home/ftp (là où notre répertoire slackware se trouve), que rsync doit se lancer avec des droits ultra restreints (utilisateur nobody et groupe nogroup), le tout en lecture seule évidemment (read only = yes). Le dernier paramètre permet aux clients de lister les fichiers à télécharger et donc de se faire des index.

On n'a plus qu'à lancer rsync en mode démon :

root@Tractopelle:~# rsync --daemon

Ajoutons une ligne à notre /etc/rc.d/rc.local afin que ''rsync"" se lance en mode démon à chaque éventuel redémarrage de la machine :

root@Tractopelle:~# echo '/usr/bin/rsync --daemon' >> /etc/rc.d/rc.local

by app zer0 at September 10, 2009 02:07 PM

September 09, 2009

appzer0

Se faire son serveur à la maison : 11 - Un peu de ménage

800px-Balais.jpg Vous trouverez ci-dessous l'historique des commandes entrées quand j'ai fait mon ménage de post-mise à niveau. Le principe est simple : lister les fichiers dont l'extension est .new, invoquer pour chaque fichier un diff -u entre l'ancien et le nouveau afin de voir si des différences notables sont présentes et décider enfin si l'on efface l'ancien (on devra alors renommer le nouveau pour lui enlever son .new) ou le nouveau.

Note : on remarquera aisément que bien que j'aie invoqué de nombreuses commandes sur chaque fichier .new, beaucoup de ces fichiers sont inutilisés (rc.bluetooth, rc.wireless) ; ces commandes sont donc « superflues », néanmoins la procédure est plus propre. Le but est de se débarrasser de tous les .new.

Attention, certains fichiers sont vitaux pour votre système, je pense à shadow, group, passwd, les fichiers hosts*... Ne les écrasez donc surtout pas et mettez-les à jour en ajoutant par exemple les nouveaux groupes dans group et passwd entre autres.

Nettoyage de /etc

root@Tractopelle:~# cd /etc
root@Tractopelle:etc# diff -u hosts.allow hosts.allow.new 
root@Tractopelle:etc# rm hosts.allow.new
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# diff -u profile profile.new 
root@Tractopelle:etc# rm profile.new 
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# diff -u named.conf named.conf.new 
root@Tractopelle:etc# rm named.conf.new 
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# diff -u irssi.conf irssi.conf.new 
root@Tractopelle:etc# rm irssi.conf
root@Tractopelle:etc# mv irssi.conf.new irssi.conf
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# diff -u passwd passwd.new 
root@Tractopelle:etc# rm passwd.new 
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# diff -u lftp.conf lftp.conf.new 
root@Tractopelle:etc# rm lftp.conf
root@Tractopelle:etc# mv lftp.conf.new lftp.conf
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# diff -u shadow shadow.new 
root@Tractopelle:etc# rm shadow.new
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# diff -u nscd.conf nscd.conf.new 
root@Tractopelle:etc# rm nscd.conf
root@Tractopelle:etc# mv nscd.conf.new nscd.conf
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# rm sensors3.conf
root@Tractopelle:etc# mv sensors3.conf.new sensors3.conf
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# diff -u dnsmasq.conf dnsmasq.conf.new 
root@Tractopelle:etc# rm dnsmasq.conf
root@Tractopelle:etc# mv dnsmasq.conf.new dnsmasq.conf
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# diff -u DIR_COLORS DIR_COLORS.new 
root@Tractopelle:etc# mv DIR_COLORS.new DIR_COLORS
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# diff -u group group.new 
root@Tractopelle:etc# mv group.new group
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# diff -u vsftpd.conf vsftpd.conf.new 
root@Tractopelle:etc# rm vsftpd.conf.new 
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# diff -u updatedb.conf updatedb.conf.new 
root@Tractopelle:etc# mv updatedb.conf.new updatedb.conf
root@Tractopelle:etc# ls *.new
root@Tractopelle:etc# mv wpa_supplicant.conf.new wpa_supplicant.conf
root@Tractopelle:etc# ls *.new
/bin/ls: cannot access *.new: No such file or directory

Nettoyage de /etc/rc.d

root@Tractopelle:etc# cd rc.d/
root@Tractopelle:rc.d# ls *.new
root@Tractopelle:rc.d# diff -u rc.M rc.M.new 
root@Tractopelle:rc.d# mv rc.M.new rc.M
root@Tractopelle:rc.d# ls *.new
root@Tractopelle:rc.d# diff -u rc.S rc.S.new 
root@Tractopelle:rc.d# mv rc.S.new rc.S
root@Tractopelle:rc.d# ls *.new
root@Tractopelle:rc.d# diff -u rc.font rc.font.new 
root@Tractopelle:rc.d# rm rc.font.new 
root@Tractopelle:rc.d# rm rc.font.orig 
root@Tractopelle:rc.d# ls *.new
root@Tractopelle:rc.d# diff -u rc.hald rc.hald.new 
root@Tractopelle:rc.d# cat /etc/rc.d/rc.hald.new 
root@Tractopelle:rc.d# diff -u rc.hald rc.hald.new 
root@Tractopelle:rc.d# mv rc.hald.new rc.hald
root@Tractopelle:rc.d# ls *.new
root@Tractopelle:rc.d# diff -u rc.bluetooth rc.bluetooth.new 
root@Tractopelle:rc.d# mv rc.bluetooth.new rc.bluetooth
root@Tractopelle:rc.d# ls *.new
root@Tractopelle:rc.d# diff -u rc.inet1.conf rc.inet1.conf.new 
root@Tractopelle:rc.d# rm rc.inet1.conf.new 
root@Tractopelle:rc.d# ls *.new
root@Tractopelle:rc.d# mv rc.wireless.n rc.wireless
root@Tractopelle:rc.d# mv rc.wireless.new rc.wireless
root@Tractopelle:rc.d# ls *.new
root@Tractopelle:rc.d# diff -u rc.local rc.local.new
root@Tractopelle:rc.d# rm rc.local.new 
root@Tractopelle:rc.d# ls *.new
root@Tractopelle:rc.d# diff -u rc.inet1 rc.inet1.new 
root@Tractopelle:rc.d# mv rc.inet1.new rc.inet1
root@Tractopelle:rc.d# ls *.new
/bin/ls: cannot access *.new: No such file or directory

Il doit rester quelques .new dans les répertoires où l'on a édité des fichiers, par exemple, /etc/httpd :

root@Tractopelle:etc# cd /etc/httpd/
root@Tractopelle:httpd# ls *.new
httpd.conf.new
root@Tractopelle:httpd# vim httpd.conf.new 
root@Tractopelle:httpd# rm httpd.conf.new 
root@Tractopelle:httpd# ls */*.new
extra/httpd-autoindex.conf.new  extra/httpd-info.conf.new  extra/httpd-vhosts.conf.new
root@Tractopelle:httpd# rm extra/*.new

J'ai mis au total 41 minutes pour mettre la Slackware à niveau + 12 minutes pour nettoyer les .new, c'est pas mal ! 8-D

by app zer0 at September 09, 2009 08:38 PM

September 07, 2009

appzer0

Se faire son serveur à la maison : 10 - Mise à niveau : passer à Slackware 13.0 via SSH

billiard-balls.jpg Slackware 13.0 étant enfin sortie avec son lot de nouveautés, on ne va pas résister longtemps à la tentation de faire une mise à niveau, ou upgrade, vers Slackware 13.0 de notre beau Tractopelle. Votre serviteur a tenté l'aventure (en priant intérieurement pour que cela se fasse sans mal).

Conclusion ? Tractopelle tournait sous Slack 13.0, services Web/FTP/MySQL compris au bout de 41 minutes ! Le tout depuis la connexion SSH.

Slack is magic, vous dis-je ! 8-D

Note : Nous allons avoir besoin du dépôt officiel de Slackware. Tractopelle étant également un miroir de slackware.at, je dispose en permanence d'une copie locale des paquets officiels. Vous pouvez passer par le DVD de Slackware mais cela implique d'intervenir physiquement sur la machine, ce qui n'est pas censé être possible ! X-[ On doit également faire les choses manuellement, pas question de mettre à niveau Slackware avec slackpkg ou autre, on va suivre (presque) scrupuleusement le fichier UPGRADE.TXT qu'on trouve à la racine de l'arborescence Slackware.

Sauver les meubles

Toute intervention sur le système requiert une sauvegarde. C'est le moment ou jamais de mettre nos données en lieu sûr ! On créera des archives compressées de ma configuration, /etc, des bases de données journaux systèmes et autres données changeantes, /var, puis de l'ensemble des sites Web hébergés, /home. On prendra soin de copier ces sauvegardes par exemple sur un autre ordinateur (via scp par exemple) ou un autre disque dur. J'ai personnellement effectué :

Sur le serveur Tractopelle:

root@Tractopelle:~# tar cfvz backup_tractopelle_var.tar.gz /var
root@Tractopelle:~# tar cfvz backup_tractopelle_etc.tar.gz /etc
root@Tractopelle:~# tar cfvz backup_tractopelle_home_www.tar.gz /home/www/

Sur mon poste de travail Poopy (quitter la session SSH si elle est encore ouverte):

root@Poopy:~# mkdir /backups_tractopelle
root@Poopy:~# scp root@Tractopelle:/root/backup_tractopelle_*.tar.gz /backups_tractopelle

Les instructions dans UPGRADE.TXT

Ce fichier est évidemment la référence, mais on va diverger un peu de la procédure habituelle. Pour commencer :

SURTOUT PAS DE TELINIT 1 !

Ça va, c'était assez voyant, là ? La commande telinit 1 passe le système en mode mono-utilisateur SANS réseau. On perdrait alors notre connexion SSH et il ne nous resterait plus que nos yeux pour pleurer ! T_T

Arrêter le maximum de services

La procédure consiste à s'assurer qu'on ne perde pas notre connexion SSH car on va tout de même pas mal chambouler le système. On doit donc arrêter le maximum de services, surtout les services qui modifient le système de fichiers ou qui lancent de multiples commandes, notamment les tâches cron, les synchronisations diverses via rsync, les services publics comme NFS (très important, NFS peut bloquer votre système si les clients et serveurs ne sont pas arrêtés proprement) FTP et HTTP, MySQL... L'historique des commandes ci-dessous montrent bien que je ne maîtrise pas tout et que de nombreux services n'ont même pas besoin d'être arrêtés, voire ne sont même pas utilisés ! C'est l'occasion de voir quels sont les programmes superflus sur le serveur (il y en a une tripotée).

Commençons par le plus important, NFS. Si vous arrêtez NFS côté serveur, vos montages NFS côté client vous être en attente de synchronisation, ce qui va vous bloquer la navigation (et par là même le complètement automatique de la ligne de commande). Arrêtons donc le service côté client :

root@Poopy:~# /etc/rc.d/rc.nfsd stop
root@Poopy:~# /etc/rc.d/rc.rpc stop

Note : L'arrêt de RPC n'est pas obligatoire normalement (NFS s'en occupe) mais sait-on jamais !

Puis, arrêtons le maximum de services sur le serveur. On remarque que j'ai dû, via ps aux, retrouver les PID des programmes rsyncd, vsftpd et crond pour ensuite les « tuer » via kill -9, ces programmes ne disposant pas de fichier de service dans /etc/rc.d :

root@Tractopelle:~# cd /etc/rc.d/
root@Tractopelle:rc.d# ./rc.httpd stop
root@Tractopelle:rc.d# ./rc.mysqld stop
root@Tractopelle:rc.d# ./rc.nfsd stop
root@Tractopelle:rc.d# ./rc.rpc stop
root@Tractopelle:rc.d# ./rc.messagebus stop
root@Tractopelle:rc.d# ./rc.dnsmasq stop
root@Tractopelle:rc.d# ./rc.alsa stop
root@Tractopelle:rc.d# ./rc.syslog stop
root@Tractopelle:rc.d# ./rc.yp stop
root@Tractopelle:rc.d# ./rc.bind stop
root@Tractopelle:rc.d# ./rc.sysvinit stop
root@Tractopelle:rc.d# ps aux
root@Tractopelle:rc.d# kill -9 2883 # PID de rsyncd
root@Tractopelle:rc.d# kill -9 2884 # PID de vsftpd
root@Tractopelle:rc.d# kill -9 2821 # PID de crond

Mettre à niveau la Slackware

Passons maintenant dans l'arborescence de Slackware puis appliquons la procédure du fichier UPGRADE.TXT. D'abord, la mise à niveau de la gestion des paquets plus l'installation de xz (le nouveau compresseur permettant de prendre en charge le nouveau format de paquets, le .txz (archive tar + xz)), puis la mise à niveau des fondations du système :

root@Tractopelle:rc.d# cd /home/ftp/slackware/slackware-13.0/slackware/
root@Tractopelle:slackware# upgradepkg a/pkgtools-13.0-noarch-3.tgz
root@Tractopelle:slackware# upgradepkg a/tar-1.22-i486-2.tgz
root@Tractopelle:slackware# installpkg a/xz-4.999.8beta-i486-1.tgz
root@Tractopelle:slackware# upgradepkg a/findutils-4.4.2-i486-1.txz
root@Tractopelle:slackware# upgradepkg a/glibc-solibs-2.9-i486-3.txz

On peut maintenant lancer la mise à niveau de l'ensemble des paquets, à savoir toutes les catégories sauf e/, f/, x/ et xap/. Le paramètre --install-new va installer les nouveaux paquets qui ont fait leur entrée dans Slackware 13.0 :

root@Tractopelle:slackware# upgradepkg --install-new {a,ap,d,k,l,n,t,tcl}/*.t?z

Vous vous souvenez qu'on avait installé quelques paquets de x/ pour la gestion de la bibliothèque GD par PHP ? Mettons-les également à niveau :

root@Tractopelle:slackware# upgradepkg  x/*.t?z

On y est ! Slackware 13.0 est installée sur le serveur ! Ne nous précipitons pas : un nouveau noyau est installé et on doit vérifier si LILO est bien configuré pour le prendre en compte :

root@Tractopelle:slackware# vim /etc/lilo.conf

Une fois ceci vérifié, lançons LILO pour prendre en compte le changement de noyau :

root@Tractopelle:slackware# lilo -v
LILO version 22.8, Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2006 John Coffman
Released 19-Feb-2007 and compiled at 12:43:17 on Nov 29 2008.

Warning: LBA32 addressing assumed
Reading boot sector from /dev/sda
Using BITMAP secondary loader
Calling map_insert_data
Mapping bitmap file /boot/slack.bmp
Calling map_insert_file

Boot image: /boot/vmlinuz -> vmlinuz-huge-smp-2.6.29.6-smp
Added Linux *

Writing boot sector.
/boot/boot.0800 exists - no boot sector backup copy made.
One warning was issued.

Si l'on est en paix avec soi-même, que les sauvegardes ont bien été faites, on peut redémarrer le serveur à tête reposée.

Note : Nous allons avoir un peu de ménage à faire par la suite, notamment comparer les anciens fichiers de configuration avec les nouveaux (les fichiers .new) et décider lesquels garder/écraser. Voyez le billet suivant pour avoir plus de détails.

root@Tractopelle:slackware# reboot

by app zer0 at September 07, 2009 10:23 PM

September 05, 2009

Isabelle Hurbain

Mon bouquin de cuisine idéal

Ça fait quelques jours/semaines que je réfléchis à mon bouquin de cuisine idéal. Alors je crois que je vais mettre ça en vrac ici, en espérant pouvoir enfin penser à autre chose :)

  • Il est joli. J'aime bien avoir des photos avec les recettes que je lis, pour voir à quoi ça ressemble au final.
  • Il peut passer en cuisine. Ça veut en particulier dire qu'il ne craint pas d'avoir une goutte de flotte ou de sauce sur une des pages, on essuie et c'est fini. Oui, ça implique probablement une plastification quelconque et c'est probablement pas donné.
  • Il peut passer de manière PRATIQUE en cuisine. Le carnet à spirale ou le classeur me paraissent pour ça pas mal – rien de plus pénible qu'un bouquin qui veut pas rester ouvert à la bonne page rontudju.
  • Il raconte des choses – je trouve un peu tristounets les livres qui se contentent d'énumérer des recettes, j'aime bien avoir un « feeling » d'« auteur » derrière (je sais pas si c'est très clair).
  • Les recettes en sont libres : aucun remords à les recopier telles quelles sur un blog cuisine si ça me chante.
  • Il est personnalisable/modulaire : je peux en virer les recettes qui me plaisent pas (genre des huîtres aux concombres) et les remplacer par d'autres trucs. Et réorganiser tout ça. Et je peux trouver des « recharges/recettes » à l'unité, à pas très cher, en ligne et livrable en Suisse (parce que je suis vilement égoïste) pour la version imprimée, et en PDF gratuit pour la version électronique.
  • Il est indexé par ingrédient (comment ça, c'est difficile à concilier avec le point précédent ? M'en fous, c'est moi qui rêve.)
  • Il a une certaine unité graphique malgré le concept de « recharges ».

Et le pire, c'est que je me dis que tout ça, c'est pas bien difficile à faire, en tous cas d'y tendre, qu'il ne me manque qu'une lamineuse (et qu'en pratique je pourrais me contenter de pochettes plastiques pour l'instant), une charte graphique et une imprimante couleur (et j'peux même probablement aller faire imprimer en face).

Et si mon rêve était à portée de main ? J'ai même un domaine dans un coin qui pourrait servir à ça, pour mettre des jolies fiches à libre disposition... pour l'impression/fabrication c'est une autre histoire... mais bon :p

(J'ai la sombre impression que rédiger ce billet m'a pas vraiment calmée et que j'ai envie de faire ce truc.)

by Isabelle Hurbain at September 05, 2009 04:25 PM

September 02, 2009

appzer0

Se faire son serveur à la maison : 9 - Sécuriser phpMyAdmin avec SSL

cadenas On va maintenant mettre en place un aspect particulier de la sécurité, à savoir la création de certificats ainsi que le chiffrage de la connexion via SSL.. Cela s'avère en fait très simple à mettre en œuvre. On doit, dans l'ordre :

  • créer un certificat SSL pour poopy.fr
  • Auto-signer ce certificat
  • mettre en place SSL dans Apache.

Note : Votre serviteur mettant SSL en place en live, vous aurez aussi droit aux couacs en temps réel !

X-(

C'est parti. Première étape, créer une clé SSL .

Note : On peut chiffrer sur 1024 bits (c'est d'ailleurs recommandé pour être compatible avec tous les navigateurs comme Netscape Navigator 3 ou les anciens IE, autant dire des antiquités), ici on chiffre sur 4096 bits.

Le fichier résultant sera ici poopy.key :

root@Tractopelle:~# openssl genrsa -out poopy.key 4096

La commande va générer quelques caractères et autres choses occultes.

Deuxième étape, on crée le certificat pour poopy.fr, poopy.crt, d'une validité de 2 ans (730 jours). Quelques questions vont nous être posées :

root@Tractopelle:~# openssl req -new -x509 -days 730 -key poopy.key -out poopy.crt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Midi-Pyrenees
Locality Name (eg, city) []:Toulouse
Organization Name (eg, company) [Internet Widgits Pty Ltd]:poopy.fr
Organizational Unit Name (eg, section) []:phpmyadmin
Common Name (eg, YOUR name) []:phpmyadmin.poopy.fr
Email Address []:contact@poopy.fr

Note : Le -x509 signifie qu'on génère un certificat X.509 Certificate Signing Request (CSR).

Copions ces fichiers dans le répertoire d'Apache puis rendons-les confidentiels en les assignant à l'utilisateur apache et en restreignant les permissions :

root@Tractopelle:~# cp poopy.{key,crt} /etc/httpd/
root@Tractopelle:~# cd /etc/http/
root@Tractopelle:httpd# chown apache:apache poopy.key poopy.crt
root@Tractopelle:httpd# chmod 0600 poopy.key poopy.crt

Passons à Apache à présent. Éditons tout d'abord /etc/httpd/httpd.conf et ordonnons à Apache d'écouter sur le port 443 en plus du 80 :

Listen 80
Listen 443

Éditons ensuite le fichier /etc/httpd/extra/httpd-vhosts.conf et ajoutons-lui un nouveau NameVirtualHost pour écouter sur le port de SSL, le 443, en plus du port 80 :

NameVirtualHost *:80
NameVirtualHost *:443

Puis ajoutons dans ce même fichier ce qui nous intéresse le plus, les VirtualHosts pour phpMyAdmin. On va donc créer :

  • un VirtualHost pour phpmyadmin.poopy.fr en HTTP (sur le port 80), lequel va rediriger automatiquement via la directive Redirect vers
  • un deuxième VirtualHost qu'on va créer en même temps, qui sera sur HTTPS (donc port 443).
<VirtualHost *:80>
    ServerName phpmyadmin.poopy.fr
    Redirect / https://phpmyadmin.poopy.fr
</VirtualHost>

<VirtualHost *:443>
    ServerName phpmyadmin.poopy.fr
    DocumentRoot "/var/phpmyadmin"
    SSLEngine On
    SSLCertificateFile /etc/httpd/poopy.crt
    SSLCertificateKeyFile /etc/httpd/poopy.key
</VirtualHost>

Le premier VHost redirige la racine (symbolisée par la barre oblique « / »), donc phpmyadmin.poopy.fr vers du HTTPS, donc sur le 443. Le deuxième VHost, surveillant le 443, prend alors le relais et active le SSL (SSLEngine On) qui va utiliser nos deux fichiers (certificat + clé) pour chiffrer la connexion.

On redémarre Apache :

root@Tractopelle:httpd# /etc/rc.d/rc.httpd restart

Ne sautez pas sur votre navigateur tout de suite ! Du moins pas pour aller sur phpMyAdmin ! La Freebox va bloquer le port 443 à coup sûr ! Pensons à aller router le 443 en TCP vers l'adresse de notre serveur avant tout et redémarrons la box. router_443_ssl

certif_pma Rendons-nous à présent sur phpmyadmin.poopy.fr ; votre navigateur devrait vous alerter que la connexion chiffrée ne peut être validée car le certificat est auto-signé. Vous devrez alors ajouter une exception et/ou valider le certificat comme digne de confiance (vous vous faites confiance, n'est-ce pas ?!).

phpmyadmin_ssl Une fois le certificat accepté, on peut se connecter à phpMyAdmin de façon sécurisée. Youpi.

by app zer0 at September 02, 2009 04:08 AM

September 01, 2009

appzer0

Se faire son serveur à la maison : 8 - Un peu de sécurité

On commence à avoir pas mal de services sur ce serveur et l'on ne s'est pas beaucoup soucié des impacts sur la sécurité... -_-' pirate

On va donc remédier aux quelques « faiblesses » de notre installation, à savoir : mettre en place un tout petit firewall pour les accès SSH, puis se débarrasser des accès root/anonyme dans MySQL.

Se protéger des attaques « brute force » dans SSH

Voici un mini-script, utilisant iptables, qui permet de refuser les connexions aux IP qui tentent de se connecter plus de 3 fois en 1 minute au protocole SSH (donc généralement des robots essayant de pénétrer votre machine). Ce script sera placé sour /etc/rc.d/rc.firewall, Slackware prenant en charge par défaut un script rc.firewall éventuel dans son système d'initialisation :

#!/bin/sh

firewall_start() {

echo "Activation du pare-feu..."

# Filtre des attaques SSH par "force brute"
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j LOG --log-prefix "SSH_brute_force"
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP

# On accepte, ce qui sort
iptables -P OUTPUT ACCEPT

# Pour éviter les mauvaises suprises, on va autoriser l'accès à la loopback :
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

echo "Pare-feu activé."
}

firewall_stop() {

iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

echo " Pare-feu désactivé."
}

firewall_restart() {
firewall_stop
sleep 2
firewall_start
}

case "$1" in
'start')
firewall_start
;;
'stop')
firewall_stop
;;
'restart')
firewall_restart
;;
'status')
iptables -L
iptables -t nat -L
iptables -t mangle -L
;;
*)
echo "Utilisation : rc.firewall {start|stop|restart|status}"
esac

Le script est écrit de telle façon qu'on puisse démarrer/arrêter/redémarrer/voir l'état du pare-feu en appelant par exemple : /etc/rc.d/rc.firewall status, à la manière de tous les autres « rc.d ».

Rendons le script exécutable, lançons le pare-feu et oublions- le :

chmod +x /etc/rc.d/rc.firewall
/etc/rc.d/rc.firewall start

Les accès à MySQL

L'installation par défaut de MySQL n'est pas totalement satisfaisante sur le plan de la sécurité : un compte anonyme , une base « test » pas vraiment utile et un utilisateur root que certains méchants sur le Net essaieront de compromettre forcément sont encore présents. J'ai compilé 2 solutions : 1 sur Developpez et une autre sur AviGNU (merci Olivier).

Connectons-nous à MySQL en root :

root@Tractopelle:~# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 106
Server version: 5.0.67-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Note : la touche Suppr./Del ne fonctionne pas dans le shell de MySQL. Utilisez la touche Retour Arrière/BackSpace.

Passons sur la base de données d'administration nommée mysql :

mysql> use mysql
Database changed

Regardons ce qu'on a pour l'utilisateur root :

mysql> select User,Host,Password from user where User='root';
+------+-------------+-------------------------------------------+
| User | Host        | Password                                  |
+------+-------------+-------------------------------------------+
| root | localhost   | *4A7FB8C0716BA92CEE1F7343C502352FF16CC5B9 | 
| root | Tractopelle |                                           | 
| root | 127.0.0.1   |                                           | 
+------+-------------+-------------------------------------------+

Horreur ! 3 comptes root ! Dont deux sans mot de passe ! x_x

Bien que les accès ne se font qu'en local (via l'interface loopback, pointant sur nous-même, à savoir 127.0.0.1), on va se débarrasser de ces comptes superflus et faire confiance à notre loopback en gardant uniquement le root de localhost. Pendant qu'on y est, on va purement et simplement supprimer tous les utilisateurs qui n'ont pas de mot de passe et supprimer tous les utilisateurs anonymes ! Regardons ce qu'on a :

mysql> select User,Host,Password from user;
+------+-------------+-------------------------------------------+
| User | Host        | Password                                  |
+------+-------------+-------------------------------------------+
| root | localhost   | *4A7FB8C0716BA92CEE1F7343C502352FF16CC5B9 | 
| root | Tractopelle |                                           | 
| root | 127.0.0.1   |                                           | 
|      | localhost   |                                           | 
|      | Tractopelle |                                           | 
+------+-------------+-------------------------------------------+

OMG ! O_o

Rien de vraiment inquiétant en réalité. Les utilisateurs anonymes ont des permissions très limitées par défaut. Qu'à cela ne tienne, virons tout ce beau monde !

mysql> DELETE FROM mysql.user WHERE User='';
Query OK, 2 rows affected (0.04 sec)
mysql> DELETE FROM mysql.user WHERE Password='';
Query OK, 2 rows affected (0.00 sec)
mysql> select User,Host,Password from user;
+------+-----------+-------------------------------------------+
| User | Host      | Password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *4A7FB8C0716BA92CEE1F7343C502352FF16CC5B9 | 
+------+-----------+-------------------------------------------+

On n'a plus que root sur localhost avec un mot de passe chiffré. On recharge les privilèges, ce qui nous évite de relancer MySQL :

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

Allons plus loin et renommons root pour quelque chose de plus personnel (finies les tentatives de connexion en root) ! Par exemple :

mysql> RENAME USER root@localhost TO superbasededonneesman@localhost;

La crédibilité du nom d'utilisateur est laissé à la discrétion du lecteur. -_-''

On quitte MySQL et on se reconnecte pour s'assurer que tout s'est bien passé :

root@Tractopelle:~# mysql -u superdatabaseman -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 147
Server version: 5.0.67-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> 

Finissons le travail en supprimant la base nommée test :

mysql> DROP DATABASE test;

... Et débarrassons-nous des permissions de cette base qui trainent encore dans le système :

mysql> DELETE FROM mysql.db WHERE Db=’test’ OR Db=’test_%’

Note : comme le fait justement remarquer Thom1 en commentaire, toutes ces étapes peuvent être effectuées d'un seul coup grâce au script mysql_secure_installation, en standard avec MySQL. J'ai voulu montrer les aspects inhérents à la sécurité avec MySQL (et puis ne pas mettre les mains dans le cambouis sous Slackware, c'est dommage !). On pourra bien évidemment à l'avenir se passer de cette partie rébarbative lors par exemple, de la mise à jour en Slackware 13.0 de notre serveur, hmm ? ^__^

mysql> exit

On est OK ! :-D

by app zer0 at September 01, 2009 08:56 AM

August 30, 2009

Isabelle Hurbain

Réflexions sur les geeks

Je connais pas mal de gens qui se sentent presque insultés (voire insultés tout court) quand on les associe au terme geek. Quand je vois le glissement sémantique qui s'est opéré, du moins en France, sur ce terme, ces dernières années, quelque part, je comprends. J'ai l'impression que le geek, de nos jours, c'est quelqu'un qui passe du temps derrière son PC, point. Y compris (et surtout, presque) si c'est pour causer sur MSN ou jouer à WoW (bien qu'il y ait à mon avis de vrais « geeks WoW », j'y reviendrai). Je dois dire que ça me chagrine un peu, parce que dans mon vocabulaire personnel, le geek est éminemment respectable — quelque part, c'est un peu mon idéal…

Donc, j'en viens à la question : dans mon vocabulaire personnel, qu'est-ce qu'un geek ? Déjà, c'est difficile à définir. Je suis capable de faire des ensembles dans mes amis et connaissances et de décider arbitrairement si quelqu'un fait à mon avis partie des geeks selon ma définition ou pas. Je vais pas faire dans le nominatif, c'est pas l'objet :)

Primo, pour moi, le geek a une connotation forte d'expertise. Quel que soit le sujet choisi, d'ailleurs – le geek sur son ou ses sujets est pas forcément imbattable, mais si on lui pose une colle, ça va l'énerver, il va vérifier, chercher, et après il saura. Il sait et sait faire beaucoup de choses et sait où chercher pour le reste. Ça va à mon avis avec : c'est aussi quelqu'un de curieux, intéressé par les domaines connexes comme éloignés de son domaine. Après tout, si des gens trouvent ça marrant, doit y avoir une raison.

Ça me permet une belle transition sur mon deuxième point : l'enthousiasme. Être expert dans un domaine qui t'ennuie, chez moi, c'est pas être geek. Exemple typique : un mec qui pond du code à ongueur de journée au boulot, qui y est raisonnablement (voire très) compétent (parce qu'il a pas mal d'expérience par exemple) mais à qui ça ne viendrait pas à l'idée le faire ça sur son temps libre (puisqu'il fait déjà ça 35-40h par semaine, faut pas déconner), n'est pour moi pas un geek. Enfin, pas sur ce domaine-là en tous cas. Pour le geek, son domaine de prédilection l'éclate profondément, c'est même probablement une des raisons pour lesquelles il est devenu expert dedans : ça l'amuse.

Pour finir, ya aussi une composante qui se retrouve, j'ai l'impression, dans beaucoup : un certain désir d'optimisation, une envie fréquente de « scratch one's itch », de se faciliter la vie et d'éliminer les trucs agaçants. Ça, c'est peut-être plus vrai chez les geeks codeurs que chez les autres, mais je manque de stats ;)

Bref, tout ça pour dire que si je te « traite de geek », prends-le bien, c'est probablement parce que je t'admire (hum, ni l'inverse ni l'implication dans l'autre sens ne sont vraies, hein). Et les définitions précédentes impliquent qu'on peut être un geek sur beaucoup de domaines. Y compris WoW, d'ailleurs. Bon, le geek MSN, j'ai encore à rencontrer, hein. Je suppose que, dans l'absolu, ça peut exister ;) Mais le geek cuisine, le geek photo et le geek LEGO existent, je les ai rencontrés :)

Et pour finir, un peu d'introspection : suis-je geek, selon ma propre définition ? Je crois pas. Je crois que je fail lamentablement sur les trois points. Je ne me vois pas d'expertise quelconque (j'ai plutôt une tendance à avoir de vagues notions de quelques trucs), je m'enthousiasme pour beaucoup de choses mais ça retombe souvent assez vite, quant au désir d'optimisation, je me suis retrouvée, ne serait-ce que la semaine dernière, à faire une centaine de copier-collers à la main plutôt que de dégainer un éditeur de texte et de bricoler un script probablement trivial (la flemme, sans doute). Et, quelque part, ça m'attriste un peu.

Après, au vu des constatations sur le sens actuel du mot, je peux comprendre que ça chagrine un peu. À l'heure qu'il est, j'ai pas vraiment mieux. Si vous avez, je prends :)

by Balise at August 30, 2009 10:26 AM

August 26, 2009

Isabelle Hurbain

Ça fait longtemps que j'ai pas causé bouquins, non ?

bon bah on va corriger ça... J'oublie probablement des trucs ; tant pis ! Sans ordre particulier, c'est du vrac.

  • La Servante écarlate, de Margaret Atwood, est un bouquin d'anticipation qui décrit, à travers le parcours de Defred (Offred dans la VO, si je ne m'abuse), une « servante écarlate », une société « post-catastrophe » réorganisée. C'est la première génération après la catastrophe (je ne me souviens pas qu'elle soit explicitée) ; Defred se souvient de sa « vie d'avant » proche de notre société actuelle. Après la catastrophe, la société a été réorganisée pour faire face aux problèmes de natalité. Plusieurs « castes » se déclinent : les Commandants, qui dirigent plus ou moins tout ce beau monde ; les Épouses, femmes des précédents ; les Marthas, qui font la popotte et le ménage ; les Yeux, espions du gouvernement intégrés dans la société ; les Éconofemmes, qui ont épousé des hommes de faible rang et qui doivent donc endosser tous les autres rôles (sic) ; et, donc, les Servantes, qui ont un rôle reproducteur auprès des Commandants (et de leurs épouses) dans une cérémonie plutôt glauque. On ne peut pas dire qu'il se passe grand-chose dans ce roman, mais c'est un bouquin que je trouve très prenant et difficile à lâcher. Ya un film qui en a été adapté, il faudra que je le voie, à l'occasion.
  • La Trilogie Twain, de Martin Winckler, composée de Un pour deux, L'un ou l'autre et Deux pour tous raconte plusieurs histoires centrées autour de René et Renée Twain, jumeaux qui tiennent une agence de détectives/protection rapprochée dans la bonne ville de Tourmens dont le vilain maire s'appelle Francis Esterhazy, en 2010, par là... Bon, et je sais pas quoi en dire de plus sans spoiler dans tous les sens, donc je vais rien dire de plus. Mais c'est marrant, ça se lit bien et ça pirouette dans tous les sens. Moi, je me régale avec ce genre de trucs :)
  • Le troisième tome des Notes de Boulet s'intitule La viande c'est la force et est toujours aussi jubilatoire :) Le titre revient régulièrement dans nos conversations :)
  • Le troisième Maliki (bon à force d'avoir des trois partout je vais me croire dans Rama moi), Mots Roses au Clair de Lune, est chouette aussi, c'est joli, c'est drôle, et pis j'aime bien Maliki.
  • La méthode Google : que ferait Google à votre place ?, de Jeff Jarvis, traînait au Mont-du-Chat quand nous y sommes allés, j'ai presque tout lu sauf les 50 dernières pages (parce qu'on est repartis avant et que je voulais pas le piquer à Janine, je le finirai à l'occase :) ) se divise en deux parties : la première décrit ce qui, selon l'auteur, fait que Google marche (vaste programme) et la seconde applique ces éléments à tout un tas de businesses divers et généralement variés (de l'université aux compagnies aériennes en passant par les banques). Rien de révolutionnaire dans tout ça, mais c'est marrant et ça fait réfléchir au concept « mais au fait, c'est quoi mon business ? ». Une lecture plutôt saine, j'ai trouvé. La traduction apporte pas mal de notes de contexte pour un lecteur français, ce qui est appréciable, mais laisse passer quelques fautes et quelques « voire même » (brr).
  • Strangers in Paradise, de Terry Moore : j'ai acheté les six tomes pocket de cette excellente série de comics que je ne sais pas trop comment décrire… amitié, amour et mafia ? mouais... C'est beau, c'est drôle, c'est émouvant, c'est triste, c'est passionnant... c'est SIP. Attention, ya quelques scènes de violence assez trash. Mais si vous avez l'occasion, c'est 2000 pages de comics qui passent bien. Un peu bordélique vers le début de la 2ème moitié cependant. Et comme ça j'aurai enfin lu la fin de Strangers in Paradise. Une version collector, Omnibus est sortie, elle a l'air jolie... mais nettement plus chère que l'édition pocket ;) Terry Moore travaille apparemment en ce moment sur une série qui s'appelle Echo, il faudrait que j'aille voir ce que ça donne.
  • The Time Traveler's Wife, d'Audrey Niffenegger, est une histoire d'amour entre Clare et Henry. Celui-ci souffre d'une maladie génétique rare (heureusement :) ) qui le fait « sauter » dans le passé ou le futur, de manière relativement imprévisible (il compare ça, plusieurs fois, à une forme d'épilepsie). J'ai beaucoup aimé le concept et le traitement du livre (raconté alternativement par Clare et Henry), moins la fin — mais je ne sais pas comment ça aurait pu être fait différemment. Et j'ai appris, après l'avoir lu, qu'un film était sorti aux US ce mois-ci (le mois prochain en Suisse alémanique, si j'ai bien suivi). Pas exactement une coïncidence, le bouquin était celui du bookclub ici — mais je pense que j'irai voir le film !

bon, et si j'allais travailler moi ?

by Isabelle Hurbain at August 26, 2009 09:27 AM

August 22, 2009

appzer0

Se faire son serveur à la maison : 7 - Mise en place d'un service FTP

cern Veut-on mettre à disposition du public certains fichiers qu'on aurait plaisir à partager, par exemple en rapport avec sa distribution favorite, des films de nos dernières vacances ou bien des logiciels libres ?

On va pour cela mettre en place un serveur de FTP anonyme ultra sécurisé grâce à vsftpd, le démon « Very Secure FTP », inclus en standard dans Slackware.

Configurons simplement

On a donc en tête de proposer un FTP anonyme en lecture seule. On remarque d'emblée que Slackware dispose déjà d'un répertoire /home/ftp, ce qui est vraiment sympa, non ? @_@ On va donc bien évidemment se choisir ce répertoire comme répertoire de dépôt pour le FTP public.

Note : Si l'on préfère choisir un autre répertoire par défaut, on doit changer la $HOME de l'utilisateur ftp ainsi par exemple :

root@Tractopelle:~# usermod -d /le/repertoire/perso/choisi ftp

(Merci Thom1)

Tout se passe dans le fichier /etc/vsftpd.conf, lequel est copieusement commenté et expliqué, et que j'ai modifié à ma guise. On autorise ici les utilisateurs anonymes mais ne leur donnons aucun droit, vsftpd sera exécuté par l'utilisateur non-provilégié ftp, le serveur tournera en mode standalone (et non en service inetd, c'est la directive "LISTEN") sur le port 20, qu'on aura pris soin d'autoriser en TCP vers Tractopelle dans les réglages du mode routeur de la Freebox :

anonymous_enable=YES
local_enable=NO
write_enable=NO
local_umask=022
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
idle_session_timeout=300
nopriv_user=ftp
ftpd_banner=Poopy.fr FTP Service, France (81).
ls_recurse_enable=YES
listen=YES

Vérifions les droits de /home/ftp avant toute chose. On se rendra compte que ftp/ appartient à root:root. Le but est de donner l'appartenance de ce répertoire à ftp:ftp et d'ajouter le bit "x" (via chmod +x) aux répertoires pour en permettre l'accès. Il nous faut au final quelque chose dans ce goût-là :

root@Tractopelle:~# ls -l /home/
dr-xr-xr-x 3 ftp    ftp    80 2009-08-22 01:25 ftp/

Une fois ceci fait, lançons vsftpd en arrière-plan :

root@Tractopelle:~# vsftpd &

Ajoutons un fichier inutile afin de tester le listing du répertoire en FTP :

root@Tractopelle:~# echo 'Coucou' > /home/ftp/coucou.txt

On teste ? 8-)'''

Rendons-nous tout simplement sur ftp://poopy.fr, ou bien pour rester sur la ligne de commande, tapons :

root@Tractopelle:~# ftp poopy.fr

...et connectons-nous en « anonymous » en donnant comme mot de passe une adresse de courriel (même bidon). On devrait voir notre fichier « coucou.txt ».

C'est fini !

Si l'on désire que vsftpd se lance à chaque démarrage de l'ordinateur, ajoutons à /etc/rc.d/rc.local la commande suivante et rendons le fichier rc.local exécutable :

root@Tractopelle:~# echo '/usr/sbin/vsftpd &' >> /etc/rc.d/rc.local
root@Tractopelle:~# chmod +x /etc/rc.d/rc.local

Ça fonctionne pour Tractopelle, en tout cas : ftp://poopy.fr/ :-3

by app zer0 at August 22, 2009 09:55 PM

July 29, 2009

Isabelle Hurbain

Aurais-je trouvé un moyen satisfaisant de bouger mon gras ?

Ceux qui ont une idée de ce que je fais dans la vraie vie le savent : ces dernières semaines, on m'a beaucoup entendu dire/vu écrire « bon, hop, je file à la gym ». Ceux qui me connaissent un peu savent à quel point ça peut être étonnant venant de moi ;)

Depuis un peu plus d'un an et demi, j'habite quasimment en face d'une Coop. Et, au-dessus de cette Coop, ya un machin qui s'appelle Jazzercise. Jazzercise, c'est un truc qu'est pas connu du tout en France (yen a pour ainsi dire pas) mais qui l'est plutôt aux US, apparemment (ça vient de là-bas). Le principe du cours de base : une bonne partie aérobic/danse/tapage dans le vide, un peu de boulot musculaire (bras, jambes, abdos), souvent avec des tites haltères, un peu de stretching. Le tout sur une heure avec, aux trois quarts de la séance, THE ULTIMATE TREAT : distribution de petites serviettes humides réfrigérées vaguement parfumées. Ya aussi un cours dit de « body sculpting » (sic) avec moins d'aérobic/danse/tapage dans le vide et plus de travail musculaire.

Et donc, je viens de faire ma dixième séance. Sur trois semaines et demi. Je crois que c'est un record toutes catégories en ce qui me concerne. Pourquoi spécialement ça ? J'en sais rien, mais j'ai quelques indices quand même.

  • C'est en face de la maison. Ça veut dire que pour une séance d'une heure, je peux être partie 1h15 de chez moi.
  • Ya des séances un peu n'importe quand, matin, midi, soir.
  • Les instructrices sont sympa. L'objectif avoué est de s'amuser et de pousser un peu, pas de mourir sur place au bout de 10 minutes (bon, heu, j'ai encore un peu du mal à pas mourir sur place. Mais c'est mon choix ;) ).
  • Elles filent toujours une version « low impact » des mouvements un peu trash pour les genoux et les chevilles, ce qui est appréciable : vu mon poids et mon manque de muscle dans les cuisses, sauter comme elle fait la madame sur l'estrade, c'est non.
  • Le cours est pas évident mais accessible. Ya une marge de progression sans être délirant, quoi.
  • Les gens du cours sont de tous âges (bon heu, pas TOUS âges, mais plein d'âges) et de tous niveaux. Bon, je me leurre pas, je fais partie des gros nuls encore, mais petit un je suis la dernière a avoir rejoint le truc et petit deux chuis pas la seule :p
  • C'est très con, mais les instructrices sont AUSSI des filles normales. Enfin, musclées et en forme et tout, mais NORMALES.
  • La musique est pas mal.
  • Le truc est complet, avec travail en cardio et en muscu, et étirements.
  • C'est suffisamment similaire d'une séance à l'autre pour pas être paumé, et suffisamment différent pour pas se lasser.
  • « The Ultimate Treat » (c'est moi qui l'appelle comme ça hein) est particulièrement motivant en été ;) (Je soupçonne qu'il le soit aussi en hiver après avoir sauté dans tous les coins, hein).
  • J'ai quasiment pas de courbatures le lendemain.
  • Ça fait aussi office de cours d'allemand/suisse allemand :p

Inconvénient

  • c'est pas exactement donné.

Bref, c'est plutôt cool. Et j'y retourne vendredi midi ;)

by Isabelle Hurbain at July 29, 2009 05:34 PM

July 27, 2009

Isabelle Hurbain

Sortie de « Bien démarrer avec Google Chrome »

Bon, celui-ci a mijoté longuement, mais il est enfin sorti ! « Bien démarrer avec Google Chrome », publié sous forme d'ebook par DigitBooks (dont j'ai déjà parlé ici) dans la collection Focus, est disponible .

Il couvre l'utilisation de Chrome, le navigateur web de Google (il m'est extrêmement difficile, à présent, d'écrire Chrome et non &chrome; – les ravages du DocBook :) ), aussi bien pour les publics néophytes que plus avancés, et couvre également l'utilisation des outils utiles aux développeurs web.

Je profite lâchement de ce billet : comme je n'ai pas fait de remerciements dans le Focus, je me permets de remercier ici publiquement Dominique Buraud (fondatrice de DigitBooks et éditrice de cet opus, pour sa patience d'ange et ses encouragements. Voilà !

by Balise at July 27, 2009 06:56 PM

July 21, 2009

Isabelle Hurbain

Bon anniversaire et joyeux Noël

Depuis quelques heures, je suis en possession de mon cadeau d'anniversaire et de Noël. Oui, je suis toujours née en octobre. Mais il faut savoir négocier :)

Je suis donc l'heureuse propriétaire de mon premier appareil photo numérique reflex : un Pentax K-m (aussi appelé K-2000, non il ne parle pas, par contre j'ai pas encore vérifié s'il avait des lumières rouge devant), vendu en double kit 18-55/50-200, genre là : http://www.amazon.fr/Pentax-K-m-Num%C3%A9rique-Stabilisation-Reduction/dp/B001GMAHH2/ref=sr_1_2?ie=UTF8&s=electronics&qid=1248083543&sr=8-2.

Depuis mon tout premier appareil photo (et j'étais pas vieille à l'époque, on parlait pas de photo numérique ou alors à peine, l'appareil photo Logitech qui faisait du noir&blanc :)) je rêvais d'un truc qui me permette de « tout » faire et de tout régler comme dans les bouquins de photo :). Le reflex c'était toujours un peu le rêve inaccessible… bien que j'apprécie grandement mon compact Fuji F11, impeccable quand on n'est pas d'humeur à se trimballer le gros machin.

Le bridge Panasonic Lumix FZ-20 que j'ai racheté à gleu il y a quelques années maintenant (heu, 2 ? 3 ? chéplus :)) m'a calmée pendant quelque temps : j'avais un truc complètement débrayable et dont je pouvais passer le focus en manuel. Mais il a l'air décidé à me lâcher sous peu – un transport postier après l'avoir oublié du côté de Metz ne lui a pas bien plu et le moteur semble avoir une propension certaine à faire « clac clac », voire à ne pas faire sortir l'objectif. Il a bien refait 400 photos depuis, hein, mais l'angoisse chaque fois que je l'allume est bien là.

Et puis... le diaph se ferme pas assez à mon goût (limitation à f/8) et j'ai remarqué que j'avais du mal à faire un focus propre sur un viseur numérique. Bon, et puis il faut bien le dire, le concept d'avoir plusieurs objectifs plaît assez à mon côté geek (c'est comme ça, hein).

Bref, ça fait quelques mois que je tanne la peau à Pierre pour investir, que je dis que je vais monter une souscription pour mon anniv, tout ça. Et comme je suis très sage, ben j'ai eu mon cadeau d'anniversaire et de Noël en super avance :)

Je visais au départ les Olympus 420-520-620 (selon ce qui était trouvable au moment où je l'achèterais), et puis j'ai eu le Pentax en main à Mediamarkt, je l'ai trouvé plutôt plus intuitif, les objectifs du bi-kit étaient séparés autour de 50 et pas 40, c'était des cartes SD et pas xD, et globalement il était plutôt mieux noté un peu partout.

Après déballage et premiers essais, chuis plutôt contente :p (ravie serait probablement un terme plus adapté).

Bon, et maintenant j'ai trois mois pour trouver un cadeau d'anniv qui poutre autant pour mon ptit mari ;) Ça va pas être facile…

by Balise at July 21, 2009 10:44 AM

July 07, 2009

appzer0

Se faire son serveur à la maison : 6 - Accéder à ses fichiers via NFS

12u Notre beau Tractopelle est à peu près opérationnel, mais on aimerait pouvoir commencer à placer des fichiers dessus, installer des répertoires dans notre espace perso, le tout en restant confortablement installé devant notre PC client habituel (Poopy).

On va devoir pour cela mettre en place un serveur NFS sur Tractopelle afin d'être en mesure de monter un système de fichiers distant (un répertoire sous le /home de Tractopelle) dans notre système de fichiers local sur Poopy (/home/web, /home/www, /home/tractopelle, /home/monsiteweb ou que sais-je...). Comment ça marche en gros, NFS ? Eh bien, le service nfsd va s'occuper "d'exporter" un répertoire de Tractopelle, lequel sera visible par un PC client, ici Poopy.

Poopy a un utilisateur régulier, appzer0 (moi, quoi). J'aimerais que les fichiers créés ou modifiés sur Tractopelle m'appartiennent, quand même ! Comment faire, alors qu'appzer0 n'existe pas sur cet ordi ?

Eh bien, on doit retrouver les mêmes ID sur les 2 PC, tout simplement (si j'ose dire).

Créons dès à présent le répertoire de l'utilisateur sur Tractopelle :

root@Tractopelle:/home$ mkdir -p /home/www/appzer0

Créer un utilisateur invité sur le serveur

Généralement sous Slackware, une fois fraîchement installée, je crée d'emblée mon utilisateur (appzer0), celui-ci se retrouve affublé d'un identifiant d'utilisateur, l'UID, et d'un identifiant de groupe (le GID). Chaque fois, appzer0 se retrouve avec un UID de 1000 et fait partie du groupe users, dont le GID est 100.

appzer0@Poopy:~$ id
uid=1000(appzer0) gid=100(users)

L'idéal serait donc de créer un utilisateur fictif sur Tractopelle, dont les ID seraient les mêmes qu'appzer0. Cet utilisateur ne doit pas avoir de shell sur Tractopelle, on va donc le restreindre à utiliser un shell qui n'existe pas, /bin/false. Ce shell n'existe pas en effet ; ajoutons-le donc au système avant tout !

echo '/bin/false' >> /etc/shells

Maintenant, créons, toujours sur Tractopelle, l'utilisateur fictif invite (ou guest, ou internaute, etc.) via adduser (ou en une seule ligne via useradd avec les bons paramètres) :

root@Tractopelle:/home$ adduser

Le tout est de bien s'assurer que les ID seront (UID et GID) bien exactement les mêmes sur les 2 PC.

J'ai donc créé un utilisateur, "invite", ne possédant pas de shell, mais ayant les mêmes ID que mon utilisateur habituel (UID 1000 et GID 100) :

root@Tractopelle:~# cat /etc/passwd | grep invite
invite:x:1000:100:,,,:/home/invite:/bin/false

Bon ça va, on a compris là !

OK, passons à NFS lui-même. Côté serveur. Tout se passe dans le fichier de configuration de nfsd, /etc/exports. On voit ci-dessous ce que j'ai entré sur une seul et même ligne :

root@Tractopelle:~# cat /etc/exports | grep Poopy
/home/www/appzer0 Poopy(no_subtree_check,rw,sync,root_squash,anonuid=1000,anongid=100)

Dans l'ordre donc : le répertoire auquel je veux accéder depuis mon PC Poopy, suivi d'un espace et du nom de l'ordi qui doit y accéder (cela peut être une adresse IP) puis _sans aucune espace__ entre le PC et la parenthèse ouvrante (c'est important)(si, si) les options à appliquer.

Je ne saurai que trop vous conseiller la page de manuel de exports pour connaitre les options disponibles. Ce sont les options que j'utilise systématiquement car elles offrent un comportement "normal" et transparent à l'utilisation, à mes yeux évidemment.

Une attention toute particulière aux options anonuid et anongid, lesquelles font en sorte que les fichiers manipulés via cette connexion NFS appartiendront à l'utilisateur d'UID 100 et de GID 1000 (donc appzer0 sur Poopy ET invite sur Tractopelle !).

On est ici dans un contexte de confiance (réseau local). Ajoutons donc Poopy aux hôtes autorisés à se connecter et à utiliser des services réseau.

On ajoute l'IP ou le nom d'hôte à autoriser - j'ai mis l'IP de Poopy personnellement, vu qu'elle est fixe, précédée du ou des services réseau autorisés ; « ALL: » désignant tous les services réseau. J'ai également ajouté l'IP de myxine (oui, j'ai une confiance aveugle en mon réseau local ;( )

root@Tractopelle:~# cat /etc/hosts.allow
#
# hosts.allow	This file describes the names of the hosts which are
#		allowed to use the local INET services, as decided by
#		the '/usr/sbin/tcpd' server.
#
# Version:	@(#)/etc/hosts.allow	1.00	05/28/93
#
# Author:	Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org
#
#
ALL:192.168.0.10
ALL:192.168.0.11

# End of hosts.allow.

Avant de lancer quoi que ce soit, repassons sur le poste client, Poopy, afin de configurer NFS de ce côté.

En fait, on va simplement créer le répertoire dans lequel on veut monter le répertoire partagé (j'ai choisi personnellement web_tractopelle), renseigner le fichier /etc/fstab afin que le montage NFS soit automatique ou plus aisé puis exécuter le service nfsd ; on sera alors paré :

root@Poopy:~# mkdir /home/appzer0/web_tractopelle
root@Poopy:~# cat /etc/fstab | grep Tractopelle
Tractopelle:/home/www/appzer0 /home/appzer0/web_tractopelle nfs    hard,intr,user   0   0

On notera que le système de fichiers est simplement nfs et qu'on retrouve 2 options propres à NFS. Je vous renvoie au manuel pour les options disponibles. On peut également et comme à l'accoutumée spécifier une IP plutôt qu'un nom d'hôte, suivi de deux-points, du chemin du répertoire « exporté » puis du chemin du point de montage désiré.

On n'a plus qu'à rendre et exécutable et à lancer le service nfsd :

root@Poopy:~# chmod +x /etc/rc.d/rc.nfsd
root@Poopy:~# /etc/rc.d/rc.nfsd start

Avant de monter le partage, lançons le service sur Tractopelle (sans serveur, les clients seraient bien seuls, comme au restaurant).

root@Tractopelle:~# chmod +x /etc/rc.d/rc.nfsd
root@Tractopelle:~# /etc/rc.d/rc.nfsd start

Repassons sur Poopy et montons le partage avec par exemple :

root@Poopy:~# mount -a

Seul /dev/pts devrait se plaindre qu'il est déjà monté. Passons en simple utilisateur et créons un fichier par exemple :

appzer0@Poopy:~# cd /home/appzer0/web_tractopelle
appzer0@Poopy:~# echo 'coucou !' > coucou.txt
appzer0@Poopy:~# ls -al

On devrait faire tout cela sans encombres en tant qu'utilisateur normal ayant un UID 1000 et de GID 100. On procèdera donc de même pour chaque machine devant accéder au serveur via NFS.

On peut enfin travailler ! 8-D

by app zer0 at July 07, 2009 11:04 PM

July 03, 2009

appzer0

Se faire son serveur à la maison : 5 - initialiser MySQL et installer phpMyAdmin

Mise en place de MySQL mysql

Allons-y gaiement et activons le serveur de bases de données. Les bases se trouveront dans /var/lib/mysql. On peut changer ce comportement en se choisissant et en éditant un fichier de configuration dimensionné correctement.

J'ai choisi le fichier /etc/my-medium.cnf. Bien que certainement surdimensionné, j'ai suffisamment de mémoire RAM pour me permettre cette audace. :-)

On copie donc ce fichier en le renommant my.cnf, pour en faire le fichier de configuration par défaut de MySQL.

cp /etc/my-medium.cnf /etc/my.cnf

Je conserve la configuration par défaut, à savoir /var/lib/mysql ; libre à vous de personnaliser cela et de décider par exemple que les bases de données iront plutôt dans /home/mysql ou /home/bases_donnees (pour cela créez le répertoire désiré puis changez le paramètre "datadir=" dans my.cnf).

On lance le script livré avec MySQL, mysql_install_db, pour initialiser les bases et ses mécanismes internes :

mysql_install_db

Puis, comme le script nous le rappelle d'ailleurs, on change l'appartenance du répertoire contenant les bases à l'utilisateur fictif "mysql" et à son groupe nommé également "mysql" :

chown -R mysql:mysql /var/lib/mysql

Plaçons maintenant un mot de passe pour le super-utilisateur de MySQL, "root" (ça va, vous suivez toujours ? On parle ici de l'utilisateur "root" de MySQL, celui qui a tous les droits sur toutes les bases de données, pas le "root" du système Linux) :

mysqladmin -u root -p 'votremotdepasse'

On n'a plus qu'à rendre exécutable le fichier de contrôle du service MySQL /etc/rc.d/rc.mysqld puis le démarrer :

chmod +x /etc/rc.d/rc.mysqld
/etc/rc.d/rc.mysqld start

Les messages que renvoient MySQL sur la ligne de commande ont la fâcheuse tendance à polluer l'affichage du terminal et à ne pas nous rendre la min, du moins visuellement. Un appui sur [Entrée] suffit à réafficher l'invite du shell. ;-)

Installation de phpMyAdmin

NOTE : l'approche consistant à installer phpMyAdmin dans un répertoire sous /home/www comme s'il était un utilisateur a amené certains problèmes liés à la sécurité. J'ai donc réécrit cet article pour que phpMyAdmin soit installé sous /var afin de sécuriser les accès.

La plupart des admins sont habitués à phpMyAdmin et c'est bien normal (ça ne nous dispense pas de pratiquer la ligne de commande, hein !) ; on ne déroge pas à la règle et on va s'installer ça en supplément.

Note : phpMyAdmin ne fait PAS partie de Slackware, on va devoir pour ce faire installer un paquet supplémentaire, voire en fabriquer un soi-même (eh oui, sous Slack on sait tout faire) !

Méthode simple

Si votre racine Apache se trouve dans /var, votre serviteur vous a concocté un paquet tout chaud tout beau de phpMyAdmin 3.2.1 à installer avec installpkg ici : http://poopy.fr/appzer0/telechargem...

installpkg phpmyadmin-3.2.0-noarch-1_SBo.tgz

Si votre racine est différente, on passe à la méthode Même-Pas-Peur !

Méthode Même-Pas-Peur

Vous êtes encore là ? Bieeeeenn ! On va se procurer de quoi générer un paquet aux petits oignons sur slackbuilds.org.

  • Créons un répertoire pour y mettre tout ce beau monde,
  • Téléchargeons l'ensemble des fichiers de slackbuilds.org,
  • Téléchargeons ensuite les sources de phpMyAdmin (l'URL se trouve dans le fichier .info)
  • Lançons enfin le script de création du paquet phpmyadmin.SlackBuild en positionnant la variable DOCROOT - comme il est spécifié dans le README - en accord avec votre racine Web (dans notre exemple, ce sera bien évidemment /var) :
mkdir -p /home/paquets/phpmyadmin
cd /home/paquets/phpmyadmin
wget ftp://slackbuilds.org/12.2/network/phpmyadmin/*
wget http://downloads.sourceforge.net/phpmyadmin/phpMyAdmin-3.2.0-all-languages.tar.bz2
chmod +x phpmyadmin.SlackBuild
DOCROOT=/var ./phpmyadmin.SlackBuild

Le paquet sera créé après coup dans /tmp. Il n'y a plus qu'à

installpkg /tmp/phpmyadmin-3.2.0-noarch-1_SBo.tgz

Configurons une phrase de passe secrète dans le fichier /var/phpmyadmin. Il faut renommer le fichier config.sample.inc.php en config.inc.php :

root@Tractopelle:phpmyadmin# mv config.sample.inc.php config.inc.php

Et on l'édite pour modifier cette ligne :

$cfg['blowfish_secret'] = 'votre_phrase_secrète_ici'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Créons ensuite un lien pointant vers le répertoire de phpMyAdmin3.2.0 :

ln -s /var/phpmyadmin-3.2.0 /var/phpmyadmin

Puis créons une directive pour le répertoire /var/phpmyadmin dans /etc/httpd/httpd.conf :

<Directory "/var/phpmyadmin">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Et enfin un VirtualHost pour Apache :

<VirtualHost *:80>
    ServerName phpmyadmin.poopy.fr
    DocumentRoot "/var/phpmyadmin"
    ErrorLog "/var/log/httpd/phpmyadmin/error.log"
    CustomLog "/var/log/httpd/phpmyadmin/access.log" combined
</VirtualHost>

On n'oublie pas de créer les ifchiers pour les logs dans le répertoire ad-hoc et de redémarrer Apache :

root@Tractopelle:~# mkdir /var/log/httpd/phpmyadmin
root@Tractopelle:~# touch /var/log/httpd/phpmyadmin/{access,error}.log
root@Tractopelle:~# /etc/rc.d/rc.httpd restart

Rendons-nous à présent sur http://phpmyadmin.poopy.fr... MAGIE !

Le seul accès configuré pour MySQL est, rappelons-nous, celui de "root".La sécurité, c'est important, d'autant plus sur un serveur public. On fera donc en sorte, soit de restreindre les accès à phpMyAdmin en public en utilisant les règles d'accès d'Apache, les .htaccess, soit en utilisant HTTPS, par exemple. On veillera aussi à créer des utilisateurs pour MySQL avec moins de privilèges que "root" ! Mais on y avait déjà pensé, n'est-ce pas ? ;)

Note : phpMyAdmin vous signalera que PHP ne supporte pas mcrypt ; c'est normal (hélas) sous Slackware 12.2, PHP n'étant pas compilé avec libmcrypt. Ce "défaut" a été réglé dans les versions ultérieures de Slackware (la 13.0 devrait sortir cet été 2009, on fera une belle mise à jour de notre Slackware, via un nouveau billet sur ce blog ,bien sûr !).

Notre serveur MySQL est configuré ! :-)

by app zer0 at July 03, 2009 06:56 AM

June 28, 2009

appzer0

Se faire son serveur à la maison : 4 - En avant avec Apache

C'est quand qu'on fait du Web ? Ben on y va là, justement. On a déjà Apache qui est installé. On va donc configurer un peu son /etc/httpd/httpd.conf pour choisir notre racine Web entre autres. wwweb

On aura au préalablement choisi un répertoire où mettre nos sites Web. Personnellement, j'ai choisi de faire ceci :

mkdir /home/www

On va passer en revue quelques petites choses à savoir ainsi qu'à modifier ou ajouter au fichier httpd.conf.

Tout d'abord, quelle est la racine de notre/nos site(s) Web?

DocumentRoot "/home/www"

Si l'on dispose d'un nom de domaine configuré pour pointer sur notre IP, on le spécifie. Dans le cas contraire on ne spécifie que notre IP. On n'oublie pas le numéro du port qui est à 80 par défaut :

ServerName poopy.fr:80

Donnons également une adresse de contact, on est administrateur maintenant !

ServerAdmin contact@poopy.fr

Une directive nomméeDirectoryIndex, dans la section dir_module, permet de dire quel nom de fichier par défaut Apache doit interpréter en priorité s'il n'est pas spécifié dans l'adresse URL. Comme on va faire du PHP, on va spécifier, pour rester classique, de chercher d'abord un fichier "index.html", puis un "index.php" si le .html n'existe pas :

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

On va s'ajouter les 2 lignes pour activer PHP, à savoir inclure le fichier de configuration de PHP (qui doit déjà figurer parmi les commentaires) puis ajouter un "AddType application" afin de passer tous les fichiers en ".php" et ".inc" à PHP. On peut s'ajouter une extension exotique ".bla" si ça nous chante mais on va rester classique là aussi :

Include /etc/httpd/mod_php.conf
AddType application/x-httpd-php .php .inc

J'ajoute également par habitude une priorité au français lorsqu'Apache a plusieurs choix possibles. C'est la directive LanguagePriority, définissant une priorité de langues par ordre décroissant :

LanguagePriority fr en da nl et de el it pt ltz ca es sv

Une directive Directory est déjà présente normalement. Elle définit les droits d'accès d'Apache aux répertoires. La racine est évidemment interdite à tous par défaut :

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

On va donc copier cette section pour en faire une dédiée à notre /home/www, bien moins restrictive celle-là, afin de permettre aux visiteurs de voir nos sites :

<Directory "/home/www">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

On ira bien sûr consulter la documentation d'Apache afin d'en apprendre un peu plus sur ces options pour ne pas offrir tout son disque dur au monde entier ! ^_^

On enregistre, on ferme. Bon, comment sait-on si ça fonctionne, notre histoire ? On va devoir lancer Apache (si joliment appelé httpd) en rendant simplement exécutable le fichier de contrôle du service : /etc/rc.d/rc.httpd :

chmod +x /etc/rc.d/rc.httpd

Ce pour qu'Apache se lance automatiquement à chaque démarrage de Tractopelle. Magique Slackware. Puis on va lancer notre Apache car il ne tourne toujours pas :

/etc/rc.d/rc.httpd start

Apache ne devrait pas broncher si notre configuration est correctement écrite.

Testons, testons !

Ouvrons notre navigateur Web préféré et rendons-nous sur http://Tractopelle ! On devrait avoir un magnifique "It works!" nous flatter l'œil. Si l'on n'a pas le résultat escompté, essayons tout de même via l'IP : http://192.168.0.12 par exemple puis revoyons la configuration du réseau le cas échéant.

Créons un petit accueil pour notre racine Web :

echo "Bienvenue sur Tractopelle ! Rien à voir pour le moment !" > /home/www/index.html

Et admirons le résultat.

Et PHP alors ?

En effet, PHP interprète-t-il le code de façon transparente ? Balançons la fonction phpinfo() dans un fichier "info.php" :

echo "<?php phpinfo(): ?>" > /home/www/info.php

Puis rendons-nous sur http://Tractopelle/info.php. L'énorme page de la configuration de PHP devrait s'afficher, comme par magie. Non, en fait, c'est magique. :-D

On a notre service HTTP, PHP est activé, c'est la classe.

by app zer0 at June 28, 2009 10:36 PM

June 27, 2009

appzer0

Se faire son serveur à la maison : 3 - Mise à jour du système

slack logo Une Slackware, c'est (très) bien, mais une Slackware à jour avec les mises à jour de sécurité (contenues dans patches/ dans l'arborescence officielle de Slackware), c'est (vachement) mieux (allez encore un petite parenthèse). Pour ça, on a notre ami slackpkg qui va nous mettre tout ça à jour et automatiquement s'il vous plaît.

Sa configuration se trouve sous /etc/slackpkg, où l'on aura à éditer le fichier mirrors pour se choisir un dépôt de paquets proche de chez nous et à jour. J'utilise par habitude et parce qu'il le vaut bien© le miroir slackware.at. Pour cela on décommente donc la ligne 54 du fichier, section Slackware 12.2 :

#Australia, 45mbit, 100Mbit
#ftp://mirror.veridas.net/pub/slackware/slackware-12.2/
#Austria, 100Mbit
ftp://ftp.slackware.at/slackware-12.2/
#Austria, 
#http://gd.tuwien.ac.at/opsys/linux/slackware/slackware-12.2/
#ftp://gd.tuwien.ac.at/opsys/linux/slackware/slackware-12.2/

On enregistre, on ferme et on lance slackpkg :

root@Tractopelle:~# slackpkg update

Cela va nous mettre à jour les différentes listes du serveur, puis :

slackpkg upgrade-all

Vu qu'une Slackware stable ne subit aucun changement une fois sortie, tous le schangements seront des mises à jour de sécurité. Mettons donc tout à jour en acceptant la liste d'updates proposés.

On a maintenant un système à jour, donc un peu plus sécurisé.

Néanmoins, on va se rendre compte qu'à l'usage certaines bibliothèques vont se révéler nécessaires, notamment si on décide d'utiliser PHP et de générer des graphiques pour les statistiques, des galeries photo, etc.

Pour cela, on a besoin de la bibliothèque graphique pour PHP, j'ai nommé GD. Certaines dépendances de GD requièrent des bibliothèques pour... X ! Ça tombe bien, on n'a rien installé vu qu'on n'en voulait pas. Une petite recherche sur le Net nous apprend qu'il va falloir installer 10 paquets pour résoudre ce problème de dépendance. Notre ami slackpkg arrive alors à la rescousse :

root@Tractopelle:~# slackpkg install xtrans libXdmcp libXau libX11 libXt libSM libICE libXpm libxcb

Nous qui ne voulions pas de X11, on en aura quand même un petit bout.

by app zer0 at June 27, 2009 01:36 PM

June 25, 2009

appzer0

Se faire son serveur à la maison : 2 - Configuration basique

Bon, c'est bien joli tout ça mais ça manque d'un peu de graisse.

Les IP privées

FTP cable La Freebox d'ici étant configurée pour donner des IP allant de 192.168.0.10 192.168.0.50, on va s'assurer que chaque machine aura toujours la même IP privée de type 192.168.x.x, ce en associant l'adresse MAC (adresse matérielle) des interfaces réseau à une IP qu'on a choisie.

Poopy a par exemple l'IP 192.168.0.10 ; on veut son adresse matérielle :

appzer0@Poopy:~$ su
Mot de passe: 
root@Poopy:appzer0# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:15:58:8a:92:xx
          inet addr:192.168.0.10  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::215:58ff:fe8a:921b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:61627 errors:0 dropped:0 overruns:0 frame:0
          TX packets:50193 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:69568657 (66.3 MiB)  TX bytes:5132365 (4.8 MiB)
          Interrupt:23 Base address:0x4000 

On récupère donc la valeur de HWaddr, à savoir 00:15:58:8a:92:xx et on a notre adresse MAC.

On procède de même pour myxine, à laquelle on réservera l'IP 192.168.0.11.

La logique voudrait que Tractopelle traîne sur notre réseau local. J'ai supposé qu'il avait l'adresse 192.168.0.12, alors j'ai tenté une connexion SSH :

appzer0@Poopy:~$ su
Mot de passe: 
root@Poopy:appzer0# ssh 192.168.0.12
root@192.168.0.12's password: 
Linux 2.6.27.7-smp.
root@Tractopelle:~# 

On est root sur Tractopelle ! Un petit :

root@Tractopelle:~# ifconfig eth0 | grep HWaddr
eth0      Link encap:Ethernet  HWaddr 00:24:21:2a:8e:xx

On a nos 3 adresses MAC, on va pouvoir leur assigner des IP réservées.

On va pour ce faire dans l'administration de la Freebox chez Free pour configurer le mode routeur et assigner des baux DHCP permanents aux cartes réseau de chaque machine :

On valide, on redémarre la Freebox, on vérifie nos IP, tout devrait rouler comme sur des... rouleaux ?

Marre des IP, on veut des noms !

Ce serait plus sympa avec des noms en effet, et puis

ssh Tractopelle

c'est quand même beaucoup plus classe que ssh 192.168.0.12. On va donc renseigner le fichier /etc/hosts et ne plus se soucier de ces IP. Par exemple, sur Poopy :

root@Poopy:appzer0# cat /etc/hosts
#
# hosts		This file describes a number of hostname-to-address
#		mappings for the TCP/IP subsystem.  It is mostly
#		used at boot time, when no name servers are running.
#		On small systems, this file can be used instead of a
#		"named" name server.  Just add the names, addresses
#		and any aliases to this file...
#
# By the way, Arnt Gulbrandsen <agulbra@nvg.unit.no> says that 127.0.0.1
# should NEVER be named with the name of the machine.  It causes problems
# for some (stupid) programs, irc and reputedly talk. :^)
#

# For loopbacking.
127.0.0.1		localhost
127.0.0.1		Poopy.rockizdead.lan Poopy

192.168.0.12		Tractopelle.rockizdead.lan Tractopelle
192.168.0.11		myxine.rockizdead.lan myxine
# End of hosts.

Donc, dans l'ordre, adresse IP, nom d'hôte canonique puis alias, le tout séparé par des espaces ou des tabulations, comme l'explique si bien le

man hosts

Note : on m'a dit qu'on pouvait utiliser les services de DNS des *Box pour s'affranchir des fichiers 'hosts' mais je n'ai pas testé cette solution.

Tentons un 'ssh Tractopelle' ou un 'ping myxine' pour s'en convaincre. Tout va bien. On se retrouve avec un réseau local qui ressemble fortement à ça :

by app zer0 at June 25, 2009 08:32 AM