Admin   |   Photos   |   Wiki   |   Projets   |   Github   |   Wishlist   |   CV

Silence, on dort


Il est minuit et demi, elle s’est endormie doucement, je l’écoute respirer, je la regarde se débattre avec ses rêves quelques secondes, puis je la vois changer d’ennemi, se battre contre cette stupide couette qui ne veut pas la suivre pendant son demi-tour. Heureusement qu’il fait chaud, ce soir encore je n’aurai pas un cm² de tissu !

Pendant qu’elle s’enfonçait dans son doux sommeil, j’ai décidé de redémarrer un serveur du boulot à distance, j’ai sursauté, j’ai ensuite angoissé, puis j’ai commencé à me voir demain matin y aller à 7 heures, histoire que les collègues ne sachent rien de ma bête tentative de mise à jour. J’ai repris du poil de la bête, j’ai imaginé des moyens de m’approprier la console à distance, mais ça ne fonctionnait pas, de nouveau l’angoisse, et puis son visage m’a rassuré. Tout est reparti. Ce visage, si calme, à croquer, il me fascine, ça fait des mois que ça dure, plus d’un an même, et impossible de s’en lasser.

Le calme avant la tempête, demain ce sera plus tendu, grand oral de l’année, une soeurette qui fait coucou avant de partir outre Manche, une visite au consulat, une jolie course de métro en perspective quoi :)

Il est vraiment temps que je dorme.

ZzZzz. Ou pas.


Impossible de dormir correctement cette nuit. Deuxième jour. Tu te tournes dans ton lit, tu comptes les moutons, tu fais un calin au ragondin, l’ennui quoi.

Bon, le monde va mal :

  • le pape serait un ancien nazi, mais bon, on s’en fout un peu, ils l’étaient tous à cette période, c’était une mode, comme les tamagochis dans le début des 90’s
  • la loi Hadopi est passée à l’Assemblée. Elle passera au Sénat, vu que le PS s’abstient. Reste le conseil constitutionnel, mais soyons réalistes, il y a peu de chances. Cela dit, avant que ce soit appliqué… Bref, Albanel devrait être condamnée à la Réclusion à la Honte Perpétuelle ; tant de mauvaise foi, de mensonges, d’incompétence, ça ne devrait pas être permis à un si haut niveau.
  • que le site soit en effet piraté ou non, ça la fout mal : Rachida Dati, qui est quand même ministre, insulte Elizabeth Guigou en direct sur le site internet du ministère de la justice : ahah et ahah. Quand même, fallait oser: Compte tenu de l’intelligence de Mme Guigou, celle-ci devrait déroger au principe archaïque selon lequel tout prédécesseur mésestime ses successeurs.
  • le monde entier est en crise ; il y a 50000 chomeurs de plus tous les mois en France ; et ça fait deux mois qu’on nous casse les coui*lles avec Continental, soit … 1000 péquins. Ok c’est super triste, mais c’est la vie les mecs, arrêtez de nous les briser et on passe à autre chose là. En plus on les prévient, et ils touchent des indemnités. Les 49000 autres ont pas cassé une sous-préfecture et mis le feu partout où ils pouvaient. Même combat pour Molex et autres hein.
  • ah et puis la grippe du cochon. Parlons-en. Encore un truc qui fait trembler dans les chomières. Heureusement qu’on regarde “C dans l’air” pour se rendre compte que les spécialistes savent que c’est chaotique et restent sceptiques face à tout ça.
  • Ferrari et Renault risquent de quitter la F1 ; wow ça doit être la crise ! Ah mais non, lisez bien : ils boudent parce qu’on veut limiter leur budget à 45 millions d’euros la saison prochaine, et comme actuellement ils dépensent beaucoup plus, ils ont peur de ne pas avoir le temps de se retourner. Ahah.
  • il est 7h et j’ai dormi 3h en tout. En pointillés. Et merde ; hop, au boulot :-)

HADOPI Again


Je ne résiste pas à transmettre ça, trouvé via padawan.info :

EDIT: Cette affiche fait référence à un dérapage de Christine Albanel, qui avait comparé la Quadrature du Net (un collectif réunissant des défenseurs des libertés individuelles) à 5 gus dans un garage. Voilà.

Question de vocabulaire


Christine Albanel, ministre des musées, a réussi à montrer au monde l’étendue de sa bêtise et de son ignorance en arrivant à faire passer la loi Internet et Création sur un vote de 16 députés qui se courraient après dans l’hémicycle. “Internet et Création”, mon fessier oui. On instaure ni plus ni moins que BigBrother on Internet, sous le prétexte falacieux de protéger les droits d’auteurs, en empêchant au passage les artistes souhaitant être distribués librement de le faire. On inaugure aussi une police administrative du net, qui pourra vous couper votre accès Internet après deux avertissements, mais, et c’est ça le plus croustillant, supposera que vous êtes coupables. En cas de contestation, vous devrez être équipé d’un logiciel propriétaire prouvant votre innocence ; selon toute vraissemblance, ce logiciel ne fonctionnera pas sous Mac ni sous Linux/Unix. Bullshit.

Les débats houleux ont bien montré à quelle point cette loi n’était pas préparée, et surtout à quel point ses défenseurs ne comprennent rien aux notions les plus basiques du monde informatique qu’ils prétendent réguler. On retiendra en particulier les pare-feux d’OpenOffice au ministère de la culture. Gourgandine va.

Enfin, l’action de notre gouvernement chéri va pousser au développement des techniques cryptographiques et c’est tant mieux. A ce point d’incompétence, il y a de quoi rougir de honte, se foutre des claques ou carrément se suicider direct. L’humanité vous le rendra. Ou pas.

BON. Autre question de vocab, un peu plus joyeuse. On ne dit pas “oh quelle jolie mise en abîme”, mais “oh le joli nouveau portable” :

J’ai craqué le week-end dernier pour un Samsung NC10, 4 à 6h d’autonomie selon utilisation, que je me suis dépêché de passer en Ubuntu Jaunty, et j’en suis RA-VI :-)

Sur ce, téléchargez-bien.

Happy non-birthday to you


She did it !

Et de derrière :

L’écran à l’arrière est énorme, tout est super intuitif, les photos déchirent, il fait des diaporamas musicaux, il y a des dizaines d’options pour les photos, je suis raviii ! Maintenant je vais prendre des photos partout, POUSSEZ-VOUUUS :-)

PS: on me fait signaler que pour l’instant il y a 3 photos de couple et 45 de Batman… Bah quoi :-(

Vrak, le retour de la vengeance


Minitel 2.0


J’avais raté cet article sur les transformations d’Internet, mais vous pouvez aller lire si ça vous intéresse, c’est passionnant. D’ailleurs tout le monde en parle depuis une semaine ou deux.

On en retiendra une citation de Linus Torvalds (qui peut se la permettre) :

Les backups c’est pour les fillettes, les vrais hommes mettent leurs données sur un serveur FTP et laissent le reste du monde créer des miroirs.

Ces abrutis qui nous gouvernent.


Once again :

Franck Riester, député UMP, rapporteur à la commission des lois, déclare :

J’en viens au second objet de l’amendement : l’interopérabilité. Je n’y suis pas favorable. Il faut laisser au consommateur sa totale liberté de choix en fonction de son système d’exploitation. L’interopérabilité n’est pas nécessaire pour les consommateurs et elle est trop contraignante pour les éditeurs de logiciels.

Ce n’est même pas faux ou polémique, c’est grottesque, comme dirait l’autre.

Définition Wikipedia:

L’interopérabilité est la capacité que possède un produit ou un système, dont les interfaces sont intégralement connues, à fonctionner avec d’autres produits ou systèmes existants ou futurs et ce sans restriction d’accès ou de mise en œuvre.

Autrement dit, interopérabilité = liberté = choix = cool. Décidément, y’en a pas un pour rattrapper l’autre.

UMP 2.0 (beta)


Depuis quelques jours, les annonces fusent de toute part ; ça passe certainement inaperçu pour le citoyen lambda, mais l’UMP a décidé de sévir, en amplifiant le mouvement amorcé il y a quelques années avec la DADVSI et la LCEN.

Luc Besson part en croisade contre le visionnage de films sur Internet (sauf s’il s’en met plein les poches bien sûr). Frédéric Lefêvre, jamais à cours de conneries, enchaîne en l’appuyant. Voir le démontage en règle chez Maitre Eolas, c’est bien marrant. Extrait :

Je vous la refais en abrégé, en shorter comme on dit sur le Net sans foi ni loi :

—Que voulez-vous ?
— Une commission d’enquête.
— Mais il y a déjà une loi.
— Alors je veux changer la loi.
— Mais il y a une dimension internationale.
— Alors je veux un G20 du Net.

Débranchez-le, encore deux questions, et il demande l’usage de l’arme nucléaire.

Mieux, notre ministre des musées, Christine Albanel, a commencé avec sa merveilleuse loi HADOPI (en gros, on te tape deux fois sur les doigts si tu télécharges illégalement, ensuite on te coupe ton abo internet). Elle enchaine en voulant brider les spots wifi publics (comme ceux de McDo) en maintenant une “liste blanche” des sites UMP-autorisés. Elle ne sait sûrement pas qu’il existe des centaines de millions de sites qu’il faudrait qualifier, vive les futurs ratés… Voir conditions générales ici.

Authueil propose une analyse ici, qui a le mérite de replacer au centre du débat ce qui importe : les auteurs le pognon.

Enfin, tout ça nous prépare un joli Stalag 13 ; les plus faibles se feront pincer, les méchants non, et au milieu, la foule, vous, moi, on aura plus qu’à s’enfuir en Chine pour trouver un Internet à peu près potable et moins censuré. Dingue.

PS: en guise de PS optimiste, il faut réaliser que tous ces gens ont beaucoup de pouvoir, beaucoup de moyens, mais ils n’y connaissent tellement rien qu’ils seraient capables de se rater. Hihihi :-)

EDIT: voir la note de Tristan sur tout ça

zsh & wajig


Passé récemment sous zsh comme shell par défaut (merci Laurent), je trouve la complétion automatique de mes commandes wajig très lente. Pour mémoire, wajig est une surcouche plutôt sympa des apt* écrite en Python, et il me sert de gestionnaire de package principal sur mes Debian et Ubuntu depuis plus d’un an. La complétion automatique étant relativement rapide avec les commandes apt-get et compagnie, j’ai décidé de jeter un oeil aux scripts de complétion zsh pour wajig en particulier. J’en ai profité pour rajouter le switch -y/—yes qui manque à la complétion bien qu’étant une option parfaitement valide et documentée.

Les scripts de complétion se trouvent dans /usr/share/zsh/functions/Completion/Debian. J’ai repris le script _apt pour adapter la section install dans le script _wajig. Les deux se servent d’un 3e script commun nommé _deb_packages au cas où ça vous intéresse. Le bonheur c’est que sans connaître vraiment le langage ou les structures utilisées, comme c’est du script relativement lisible on peut tenter par des essais/erreurs de modifier ça… et on y arrive !

Voici le résultat sous forme de patch :

% diff _wajig.orig _wajig
11a12
>   '(-y —yes)'{-y,—yes}'[assume yes for any questions asked]' \
44,45c45,46
<         _alternative \
<           'packages:package:_deb_packages uninstalled' \
—-
>         _wanted \
>           'packages:package:_deb_packages "$expl_packages[@]" avail' \

Et les complétions sont redevenues rapides ; le fait de changer _alternative par _wanted m’indique d’abord une liste quand j’appuie sur TAB, plutôt qu’enchainer directement sur les options possibles.

EDIT: une simple recherche Google montre que certains poussent pour que le “framework” de complétion apt pour zsh soit aussi utilisé pour wajig ; à creuser, j’éditerai ce billet si je trouve quelque chose d’intéressant…

Connaître sa RAM


J’apprendrai la prochaine fois à tourner 7 fois ma langue dans ma bouche avant de dire une bêtise ; non, le nombre de /dev/ram* ce n’est pas le nombre de barettes de RAM sur un Linux. Pour connaitre ce genre d’info, lshw ou dmidecode sont plus adaptés. En reformattant la sortie avec ruby, on obtient quelque chose de ce genre :

sudo dmidecode | ruby -ne '( a=[]; 12.times{a << gets.scan(/(?:Size|Speed|Type):\s*(.*)/).first }; puts a.compact.join("/") ) if $_.match /Memory Device$/' | uniq -c

Par charité, je vous fais la même en lisible :

sudo dmidecode | \
  ruby -ne '\
    ( a=[]; \
      12.times {
        a << gets.scan(/(?:Size|Speed|Type):\s*(.*)/).first \
      }; \
      puts a.compact.join("/") \
    ) if $_.match /Memory Device$/\
  ' | uniq -c

Sur mon NC10:

      1 2048 MB/DDR2/533 MHz (1.9 ns)
      1 No Module Installed/DDR2/533 MHz (1.9 ns)

Et sur un serveur du boulot:

      8 4096 MB/<OUT OF SPEC>/667 MHz (1.5 ns)
     24 No Module Installed/<OUT OF SPEC>/Unknown

(3615 Jmelapète)

Hope this helps..

Extension d'un disque LVM en environnement SAN


Alors ça ça ronfle comme titre ! Un SAN c’est super, c’est efficace, performant, tu peux étendre tes disques à chaud, gérer ton RAID au clic, faire de la haute dispo, te la raconter à la cafét’, bref c’est merveilleux. LVM aussi, c’est super : ça apporte pas mal de souplesse dans un environnement mouvant, et quand on fait de l’informatique professionnelle, c’est bien souvent le cas.

En gros, voici le topo : on a un volume logique (que certains appelleront abusivement “un(e) LUN”) ld_disk, mappé à un serveur server. Côté serveur, ce disque s’appellera directement (par comodité) ld_disk, donc via multipathd son nom sera /dev/mpath/ld_appli. Derrière on a monté directement l’artillerie LVM, sans partitionner (ce qui aurait été plus souple/facile/intelligent) : ce disque a été déclaré comme volume physique (PV), on a fait dessus un groupe de volumes (VG) vg_appli, sur lequel on a bêtement fait un seul volume logique (LV) sobrement appelé lv_appli. Ce volume fait initialement 300Go. Les besoins changent, et on vous demande de passer le tout à 500Go. L’OS est une RHEL 5, mais ça n’a pas d’importance a priori. Bon, on commence logiquement par étendre le disque logique côté SAN. Et on espère qu’on va pouvoir prendre en compte l’extension au niveau système sans perdre de données.

Mais comme trop de choses en ce bas monde, il est difficile de trouver des infos récentes sur le web. 99% des liens trouvés via Google vont dire que c’est impossible, ou que LVM ne le permet pas encore, qu’on n’a qu’à formatter ou recopier sur un autre disque. Quelques posts assez anciens (2004?) sur des forums dont j’ai perdu la référence hélas vont expliquer qu’il faut d’abord étendre la partition via fdisk. Seulement moi, je n’ai pas de partition, aïe.

Voici donc la marche à suivre :

# on cherche et on note le(s) chemin(s) vers notre disque au sens SCSI (exemple: 3:0:0:0 et 4:0:0:0)
multipath -ll
# on met le volume offline
vgchange -a n vg_appli
# on rescanne le périphérique au niveau SCSI
echo "1" > /sys/class/scsi_device/3\:0\:0\:0/device/rescan
echo "1" > /sys/class/scsi_device/4\:0\:0\:0/device/rescan
# on relance la découverte coté multipathd
multipath -F
multipath -v2
# puis on étend au niveau de LVM ; exemple :
pvscan
#=> PV /dev/mpath/ld_appli   VG vg_appli   lvm2 [300,00 GB / 0    free]
pvresize /dev/mpath/ld_appli
pvscan
#=> PV /dev/mpath/ld_appli   VG vg_appli   lvm2 [500,00 GB / 200,00 GB free]
# on réactive le VG
vgchange -a y vg_appli
# et on étend le LV via la taille :
lvextend -L +200G /dev/vg_appli/lv_appli
#ou via le nombre d'extents :
lvextend -l +123456 /dev/vg_appli/lv_appli
# il reste à faire l'extension au niveau EXT3 (attention, ces deux étapes sont très longues)
e2fsck -f /dev/vg_appli/lv_appli
resize2fs /dev/vg_appli/lv_appli

Hope this helps!

F comme F*cking Firefox


Depuis que j’ai mon NC10, ça doit donc faire deux mois, je cherche comment faire pour que mes bookmarks ne passent pas à la trappe à chaque resizing de Firefox. Ou aléatoirement d’ailleurs. Parce que parfois ce renard imbécile étend la barre d’url on ne sait pourquoi, et réduit les dossiers personnels à une misérable double flèche, les rendant beaucoup moins accessibles.

En gros, je voulais que ça arrête de faire ça :

Mais que ça fasse ça (et tout le temps !) :

Après avoir essayé pas mal de trucs sans succès, j’ai trouvé l’inspiration ici ; et voici donc mon UserChrome.css qui fonctionne :

#bookmarksBarContent .bookmark-item {
  min-width: 70px !important;
  visibility: visible !important;
}

D comme Détente, et comme Desktop


Ce soir je m’ennuie seul à la maison, alors j’ai décidé de prendre soin de mon PC principal :

  • j’ai installé conky, après l’avoir vu dans cet article ; j’ai le même .conkyrc que le monsieur à une vache près, et c’est vrai que ça rend pas mal =) Réservé à mon PC principal, car autant ça rentre bien sur un 22", autant sur un NC 10 et son écran de 10" ça ne va pas le faire. J’ai bien sûr pushé mon .conkyrc sur mon espace github héhé^^
  • je me suis posé des questions sur mes sauvegardes ; en particulier je me demande si utiliser un service type Dropbox est intéressant (cf un article que j’ai croisé récemment ici)
  • j’ai hésité à passer en karmic ; le seul truc dont j’ai peur, comme d’habitude, c’est le support des pilotes Nvidia. En cours de réflexion…
  • … hey ! mais j’ai un serveur à sécuriser moi !

Redmine as a wiki engine


Ce post fait suite à celui-ci.

Tout d’abord, on installe Redmine classiquement ; je passe volontairement les aspects DNS (création d’un sous-domaine, en l’occurence wiki.jbbarth.com), Apache (création du vhost), et “système” (script de démarrage de Mongrel, user et port adéquats, ce genre de choses) :

cd /home/app/jbbarth/
svn co http://redmine.rubyforge.org/svn/trunk _redmine-0.8-wiki
ln -s _redmine-0.8-wiki wiki
cd wiki/
rake db:migrate
rake redmine:load_default_data
rake config/initializers/session_store.rb

Après démarrage, on procède à une configuration basique de Redmine :

  • modification du user/pass admin
  • configuration générale dans Administration > Settings
  • création d’un projet public “wiki”, identifiant “wiki” ; tous les trackers décochés, et tous les modules sauf le module “wiki”
  • dans ce projet, on configurera la “Start page”, et surtout on la créera/remplira (sous peine d’avoir des erreurs 404 dans la suite)

Là commencent les choses “sérieuses”. Que voulons-nous ?

1) que l’accueil de Redmine se fasse sur la page de démarrage du wiki du projet “wiki”
Pour cela, nous allons éditer config/routes.rb, et remplacer l’accueil défini à la ligne “map.home” par :

  #map.home '', :controller => 'welcome'
  map.home '', :controller => 'wiki', :id => 'wiki'

Après redémarrage de l’instance, ça fonctionne !

2) suppression des liens inutiles pour un wiki ; en particulier la première tab “Overview/Aperçu”, et “Projects/Projets”, “My page/Ma page” et “Help/Aide” dans le menu en haut à gauche (nous n’aurons qu’un seul projet “wiki”)
Pour cela nous allons créer un thème à nous et cacher ces liens via du CSS, ce qui me parait bien suffisant : ils ne représentent aucun “danger”, c’est juste qu’ils perturbent la navigation dans le cadre d’une utilisation wiki-only. Voir donc ici pour la création d’un nouveau thème, et éventuellement ici pour des exemples de thèmes.
Nous créons donc un thème “wiki”, puis quelques lignes suffisent à la fin de public/themes/wiki/stylesheets/application.css :

/* Specific to wiki */
#top-menu .my-page, #top-menu .projects, #top-menu .help { display:none; }
#main-menu .overview { display:none; }

3) passage des patches cités dans l’article précédent

cd /home/app/jbbarth/wiki/
mkdir patches

a) passage de CodeRay à UltraViolet :

wget -P patches http://www.redmine.org/attachments/download/1698/syntax_highlighting.diff
patch -p0 < patches/syntax_highlighting.diff
wget -P patches http://www.redmine.org/attachments/download/1699/redcloth.diff
patch -p0 < patches/redcloth.diff
wget -P patches http://www.redmine.org/attachments/1700/ultraviolet_highlighter.zip
cd patches/
unzip ultraviolet_highlighter.zip
cat ultraviolet_highlighter/README.txt
apt-get install libonig-dev
gem install ultraviolet
cp -a ultraviolet_highlighter ../vendor/plugins/
cd ..

Les traductions ne sont pas bien passées, donc on édite à la main config/locales/en.yml et fr.yml, et on supprime les fichiers “.rej” correspondants.
b) pages parent automatiques :

wget -P patches http://www.redmine.org/attachments/download/2082/3108_automatic_parent_with_tests.diff
patch -p0 < patches/3108_automatic_parent_with_tests.diff

c) correction d’un petit bug de Redcloth :

wget -P patches http://www.redmine.org/attachments/download/1728/redcloth_arobas.diff
patch -p0 < patches/redcloth_arobas.diff

d) système de tagging :
Il y avait un patch proposé ici, mais il ne correspond pas vraiment à ce que je veux. Voici quand même une méthode pour l’appliquer sur une copie de travail SVN :

wget -P patches http://www.redmine.org/attachments/download/2060/wiki_page_categories_20090520.patch
sed -i -e 's#- redmine.orig/#- #g' -e 's#\+ redmine/#+ #g' -e 's#diff.*\.orig/\([^ ]*\).*#Index \1\n===============================================#g' patches/wiki_page_categories_20090520.patch
patch -p0 < patches/wiki_page_categories_20090520.patch
rake db:migrate

Après toutes ces modifs, on se rend compte que certains patches ne sont pas bien passés :

find . -iname "*.rej"

Normalement avec cet ordre de passage des patches, il n’y a que lib/redcloth3.rb dont on résoud les conflits à la main.

Voilà, hormis le système de tagging on a un wiki fonctionnel. Je ferai un nouveau post si je trouve quelque chose pour le support des tags. Il ne reste plus qu’à le remplir maintenant !

EDIT
- pour que l’activité du projet prenne en compte les changements du wiki par défaut : éditer lib/redmine.rb, et modifier autour de la ligne 155/156:

-  activity.register :wiki_edits, :class_name => 'WikiContent::Version', :default => false
+  activity.register :wiki_edits, :class_name => 'WikiContent::Version', :default => true

- la même option permet que les recherches prennent en compte les entrées du wiki sur le projet courant
- pour cacher la liste déroulante de sélection des projets dans la recherche : édition de public/themes/wiki/stylesheets/application.css, ajout de :

select#scope { display:none; }

EDIT2
J’ai changé l’ordre de passage des patches pour avoir le moins de choses possibles à résoudre à la main.

Need a wiki ?


En ce moment j’ai trop d’articles techniques à publier, souvent trop en bazar, ou trop long pour être publiés dans une demi-colone de ce blog. De plus je risque de quitter mon boulot dans quelques mois, et tout ce que j’ai pû documenter là-bas sera perdu pour moi si je ne le récupère pas avant. Bref, j’ai besoin d’un wiki, simple d’utilisation, avec suivi des révisions, formatage en Textile, un peu comme celui de Remine.

Une contrainte supplémentaire, qu’il soit en Ruby on Rails, éventuellement Merb. Pas par idéologie, croyance en REST, ou quelconque connerie de ce genre (et certains en tiennent une couche à ce niveau quand on voit la liste rails-france), mais plutôt parce que j’en ai marre de maintenir 50 technos hétérogènes sur mon serveur. Mon blog, mon gestionnaire de projets tournent déjà en Rails. Ce sera bientôt le cas du site chanmasters.com que je réécris en ce moment. Bientôt le cas également de ma gallerie de photos, qui tourne déjà avec des scripts ruby mais pas administrable en mode web. Donc dommage pour Dokuwiki qui a priori me convenait parfaitement…

J’ai essayé Instiki sans être réellement convaincu, je ne saurais pas bien expliquer pourquoi. Et puis, j’aurais des modifs à faire dessus pour qu’il me convienne (templates trop épurées à mon goût, affichage “geeky” de certains champs, etc…). Ce qui implique un petit peu d’exploration du code, cf la suite. Je n’ai pas trouvé d’autres projets très actifs en Rails et qui me convienne (liste ici)…

En fait, le wiki de Redmine me convient parfaitement. Facile à “hacker” (je commence à connaître un peu le code même si je suis loin d’être un gourou comme les 3 ou 4 grands contributeurs réguliers), maintenu, communauté active, support de textile entre autres, jolis diff, etc. Nickel, à 4 petites choses près :

  1. le support Textile est un peu foireux parfois ; voir ici
  2. la coloration syntaxique est hideuse, j’aimerais bien remplacer CodeRay par autre chose ; voir ici
  3. j’aimerais bien que les hiérarchies soient faites automatiquement, quitte à rendre l’arborescence un peu profonde, pas grave ; voir ici
  4. j’aimerais bien un système de tags avec un nuage sur le côté ; voir ici, ici et ici

Bref, ça sent bon, et le choix est tout fait ; je documenterai dans le prochain article l’installation et la configuration de Redmine pour me servir de wiki :-)

Synchronisation git pour Redmine


J’avais évoqué ici la synchronisation de dépôts Git (en l’occurrence Github mais ça n’a pas d’importance).

Mais voilà, ça ne fonctionnait plus tout à fait après migration de serveur, et ce n’était pas très clair pour moi honnêtement. Alors j’ai de nouveau regardé sur le wiki de Redmine et trouvé cet article qui décrit les choses très bien.

Seule différence, j’utilise les branches sous Git, et ce mode ne synchronise que la branche principale (“master”, ce que l’on appellerait le “trunk” sous subversion).

Initialisation de mon dépôt:

cd /var/redmine/git_repositories/
git clone —bare git@github.com:jbbarth/project.git project
cd project
git remote add origin git@github.com:jbbarth/project.git
git fetch -v

Ajout de ceci en CRON:

#sync of my github repos for redmine
*/10 * * * * /var/redmine/git_repositories/sync_repositories.sh >/dev/null

Et le petit script qui va bien:

#!/bin/sh

base=$(dirname $0)
[ "$base" == "." ] && base=$(pwd)

cd $base
for repo in $(ls -F |fgrep "/"); do
  cd $base/$repo
  git fetch origin
  for branch in $(ls refs/remotes/origin/); do
    git reset —soft refs/remotes/origin/$branch
  done
done

Youpi!

Passage à xfce


Envie de changement sur mon NC10, je suis donc passé à XFCE, plus léger que GNOME, et, maintenant que je l’ai sous les yeux, aussi plus joli :-)

J’avais plusieurs problèmes à première vue :
- dans un terminal xfce, screen ne voyait plus la touche “retour arrière” ; après un peu de recherches, j’ai trouvé cet article, et ça remarche.
- les touches Fn liées au son ne fonctionnent pas ; via la page d’aide de la communauté, je suis tombé sur cet article, et en particulier sur le script Python fait par son auteur. La commande proposée amixer—sset Master 100% fonctionne bien, reste que j’aimais bien la petite notification en transparence. Bref, je ne vais pas reprendre tout le boulot du monsieur vu que pour mon utilisation, tout fonctionne à part ça ; d’autant que c’est un peu lourd et non packagé. J’essayerai d’éditer ce post dès que je trouve la soluce pour rétablir l’ancien comportement sous Gnome :-)

EDIT: bon bah, les fn keys pour le son fonctionnent. Ca m’énerve un peu parce que je ne sais pas ce que j’ai fait pour, mais je profite ; xfce est un pur bonheur!

Upgrade Intrepid->Jaunty


J’ai upgradé hier ma Ubuntu Intrepid vers une Jaunty, qui commence à être suffisamment bien supportée ; au passage, j’avais tenté de faire ça il y a deux mois, et le support des pilotes Nvidia était lamentable, je n’avais aucun affichage correct, j’étais donc revenu sous Intrepid.

sudo vi /etc/apt/sources.list #puis :%s/intrepid/jaunty/g, et :wq!
wajig update && wajig dist-upgrade

A peine une demie-heure plus tard tout marchait impec’ ;-)

Seul bémol, Jaunty supporte ext4 et ma partition racine n’était pas passée en ext4 toute seule (on s’en serait doutés).

J’ai inauguré un petit truc bien sympa, le boot depuis une clé USB live (en lenny, comme ça je m’en resservirai au boulot) :

sudo -s
mkdir /tmp/usbkey && cd /tmp/usbkey
apt-get install live-helper
lh_config -d lenny -b usb-hdd -p xfce-desktop —packages wajig screen ruby
lh_build #patienter quelques minutes
umount /dev/sdf1
dd if=binary.img of=/dev/sdf bs=1M

Et reboot sur la clé usb ! Tout marche au poil, sauf que le clavier est en Qwerty :

dpkg-reconfigure console-data

Là commence le passage en ext4 ; mes partitions à migrer étaient /dev/sda2, 5 et 6, mais ça ne s’invente pas : fiez vous au /etc/fstab et au besoin, montez temporairement chaque disque sur /mnt. Mon “/” étant sur /dev/sda2

mount /dev/sda2 /mnt
vi /mnt/etc/fstab
#(remplacement de ext3 par ext4 sur les partitions à migrer)

Et l’opération qui suit est donc à répéter pour chacune de vos partitions :

tune2fs -O extents,uninit_bg,dir_index /dev/sda2
fsck.ext4 -pf /dev/sda2

Un reboot plus tard, everything is ok ;-)

Lenteurs DNS Livebox


Sous mon PC principal (Ubuntu/wrath), les résolutions DNS sont assez lentes. J’ai trouvé des solutions ici, immédiatement mises en oeuvre :

# echo "supersede domain-name-servers 80.10.246.2, 80.10.246.129;" >> /etc/dhcp3/dhclient.conf
# /etc/init.d/networking restart #ou un reboot pour être sûr..