Gem les packages 3
Les utilisateurs de Ruby nous connaissent bien l’outils de gestion de paquet (ou librairies, c’est comme on veut) RubyGems. Cet outil permet d’installer des paquets ruby enrichissant le coeur de notre langage préféré.
Cependant la plus part des systèmes d’exploitations de la famille des “*nix” (comprendre les divers distribution linux, les divers bsd et autre opensolaris) bénéficient déjà une gestionnaire de paquet permettant l’installer des applications.
Bien souvent certaines gems (c’est ainsi que l’on désigne les paquet ruby disponible via RubyGems) sont porté dans le gestionnaire de paquet de système que nous utilisons. Alors pourquoi avoir deux gestionnaire de paquet pour ruby : celui du système et RubyGems ?
RubyGems à l’avantage d’être disponible sur toute les plateformes, et ne serait-ce que pour les utilisateurs de fenêtre ou de pomme, c’est indispensable pour une meilleur gestion de l’installation Ruby.
Mais je pense qu’il faut utiliser en priorité les paquets spécifique au système (pour OpenBSD il y a aujourd’hui dans -current environ 75 paquets ruby disponible). En effet, ces paquets sont là pour s’intégrer au mieux avec le système. Et bien qu’ils s’installent de toute façon au même endroit qu’avec RubyGems, certain patch ou autres flavor spécifique peuvent être mis en place pour le bien de l’installation et l’intégrité du système d’exploitation.
Alors RubyGems n’est pas inutile sur ces systèmes, loin de là, ne serait-ce que pour avoir la collection complète des applications ruby, mais j’utilise personnellement les paquets du système en priorité.
Et vous ?
ps: RubyGems offre d’autre fonctionnalité interessante mais ce n’est pas le sujet ici :-)
5e apéro rubyFrance
une semaine plus tard
Cet session fût très bonne. Pas loin de 30 personnes ont fait le déplacement pour cette “apéro” qui en fait ressemblait plus à une bonne présentation.
Le thème principal de ce lundi était l’agilité, l’extreme programming, les tests. En effet, des membres de l’association XP-France sont venus nous présenter l’agilité, le développement piloté par les tests le tout dans sous la forme d’un kata, une des pratiques de dojo.
Ensuite, Jean-François nous a présenter une toute nouvelle librairie ruby qui gagne à être connu: Arel également appelé ActiveRessource. Un librairie visant à permettre la création d’ORM. Disont pour résumé que cela enlèverais la couche “concaténation de chaine de caractères” dans ActiveRecord par exemple, et du coup nous aurions le moyen de construire plus joliement des requête SQL. A suivre donc.
Depuis quelque temps déjà je m’interesse aux méthodes agiles, à l’extreme programming, cette présentation à fini de me convaincre qu’il faut absoluement que j’aille en Dojo pour pratiquer le code, échanger avec d’autres personnes aguéri à ces techniques de tests et de façon de voir le code.
On en reparle plus tard ;-)
Wmii 3.6
Cette après-midi, je me suis lancer dans la compile de Wmii 3.6 histoire de bénéficier des quelques nouveautées.
Je ne suis pas déçu :) Et dans le plus voyant, il y a maintenant la possibilité de faire quelque ajustement de fenêtre. Le mode Float aussi gagne en facilité d’utilisation. Du coup, j’ai même du remettre un vrai fond d’écran (pas sur que je le vois souvent, mais bon).
Un gestionnaire de fenêtre à au moins essayer :)
j’ai encore pas mal de truc à découvrir sur wmii. Il faut notamment que je regarde de plus prêt le binding ruby
Et pourquoi pas Wmii iiiiiiiii 1
A force de placer mes fenêtres toujours au même endroit, avec la même taille (ou presque) et de repartir ces groupes sur les divers bureaux, je me suis dit qu’il étais peut-être temps de tester un autre gestionnaire de fenêtre.
Ion semblait un bon candidat, mais la configuration ne me donnais pas super envie, et les divers lectures au sujet de l’auteur et de la licence de l’application ont fini par me couper l’envie de l’adopté.
Alors j’ai continué à fouiller dans les gestionnaires de fenêtre accès clavier et simplicité. Sur la list misc@ d’OpenBSD il y avait eu une discussion sur le gestionnaire de fenêtre par défaut. Actuellement FVWM (premier du nom), certain voulais voir cwm prendre la place. Du coup, il fallait que je l’essaie.
Assez sympathique ma fois. Simple, avec quelque raccourci clavier rappelant Vi. Très rapide, et très agréable à utiliser.
Cependant, je n’etais pas encore convaincu. J’avais entendu parlé d’un autres gestionnaire qui pourrais remplacer Ion durant mes recherches: Wmii
Alors pour être dérouté, on peut l’être. C’est très interessant. Ici point de menu, d’icône, de boutons de fenêtre. Une petite barre, quelques touches et c’est parti. Un des concept est de ne pas avoir à gérer les fenêtre justement: on arrive sur une frame, une petite combinaison de touche et hop, un terminal en plein écran. On en lance un deuxième, pour voir, et voilà deux terminaux qui prenne chaucun une moitié d’écran, un troisième et … non, je vous laisse deviner. Une autre combinaison de touche plus loin et paf, c’est sur deux colonnes que ça se passe, royal. Plus la peine de placer les fenêtre ! :) Plus de place à force de lancer des applications ? Une petite combinaison et paf, je met la nouvelle appli sur une autre frame (on pourrais les apparentés à un bureau virtuel qui s’étend a mesure du besoin).
J’adore :)
Et pour ne rien gacher, je me rends compte qu’un figure du monde Ruby , Mauricio Fernandez aime et utilise (il me semble) lui aussi ce gestionnaire de fenêtre (il a d’ailleurs commencer à faire quelque script et autre bricole en ruby pour Wmii , mais c’est une autres histoire).
Et dans toute ces histoires de script et de config, je tombe sur encore une sommité du monde Ruby: Why qui apparemment aime et utilise Wmii ! (D’ailleurs, j’ai découvert qu’il utilisais DragonFlyBsd contrairement à tout les macaddict que l’on voit beaucoup dans le monde de Ruby sur les rails ;-) )
Finalement je ne suis pas trop surpris, je trouve que l’auteur de Wmii ressemble un peu à ces deux là. Anselm R Garbe est un doux dingue du petit code efficace, c’est d’ailleurs le concept du site dont il est fondateur sukless.org :
Dedicated to software which sucks less… The upper boundary on the size of the software we accept is 10,000 source lines of code (SLOC).
J’ai encore plein de chose à découvrir, mais si vous voulez essayé un gestionnaire de fenêtre innovant, je vous conseil d’essayer Wmii
ps: j’allais oublié. le peu d’intérêt d’un screenshot avec ce genre de gestionnaire de fenêtre explique le manque d’image de ce billet :)
Ruby vs Shell 2
Que je n’aime pas ce genre de comparaison. Ou plutôt ce que je n’aime pas c’est de chercher un vainqueur. En fait je voulais vous raconter une petite histoire informatique.
Un jour, chez mon actuel client, je me suis retrouvé face a un cas d’école: faire un programme pour réaliser une purge de la base de donnée, mais pas entièrement, juste quelque table fonctiono-transactionnelle.
Une bonne chose pour moi, un programme existe déjà dans le foutoir^la boite à outil de l’équipe en place. Ce programme va me permettre d’extraire la liste des tables dépendantes de celle que je veut purger. J’appel ce programme (réalisé dans un langage propriétaire, comme l’application) en passant en paramètre la table que je souhaite supprimer, et lui va aller déclencher les divers trigger en interceptant les erreurs pour pouvoir faire la liste de toutes les tables dépendantes. Bien, je répète l’opération pour toutes les tables que j’ai à nettoyer
A la sorti je me retrouve avec un gros fichier texte, contenant plusieurs fois le même nom de table à divers endroit du fichier, pas très pratique. Il faut que je nettoie tout ça. Apparemment mes collègues font ça à la main habituellement… Moi c’est hors de question. L’informatique c’est justement fais pour faciliter le travail non ?
Alors je lance cygwin (heureusement qu’il est autorisé chez mon client celui là, sinon j’aurais pleuré !!) et je regarde quelque manpage pour vérifier les commandes à utiliser. Je trouve mon bonheur, et le dieu pipe va grandement m’aider sur le coup:
cat fichierlistedetables | tr A-Z a-z | sort | uniq > listedetableuniquetrier- La commande cat permet de lire le contenu d’un fichier.
- Dieu pipe va ensuite transférer ce contenu à la commande tr qui elle va me mettre le contenu en minuscule (c’est plus pratique pour trier (c’est le A-Z a-z qui précise le type de transformation à appliquer au contenu).
- Dieu pipe intervient encore pour passer ce contenu minuscule à la commande sort qui va elle, comme sont nom l’indique, trier le contenu.
- Dieu pipe une dernière fois va passer le contenu minuscule trié à la commande uniq qui comme sont nom l’indique encore, va éliminer les doublons.
- Dieu pipe passe la main ici à la reine > qui va me permettre d’écrire le résultat de tout ça dans un fichier et non à l’écran.
Je me retrouve avec un fichier parfait pour faire ma purge.
C’est bien beau, mais une question trottais dans ma tête: Comment faire cela en Ruby ? Est-ce que j’y arriverais en une ligne aussi ?
Et bien comme d’hab, oui c’est faisable, et oui avec Ruby on peut le faire en une ligne.
Quel intérêt ? Dans le mien auccun, à part mon plaisir. Mais si ce script devais être re-utilisé, ou bien intégrer à un outil plus vaste, cela aurait tout de suite plus d’intérêt :)
Voilà ce que ça donne:
File.open("#{ARGV[0]}_usorted","a") {|content|
content << ((IO.readlines(ARGV[0])).collect {|line| line.downcase}).uniq
}Bon, en une ligne c’est un poil abusé et pas lisible c’est pour cela que je le présente sur plusieurs :), mais c’est faisable
Pour faire cela, une bonne lecture des objets Array, IO et File iront très bien :)

