Affiche Anti Acta, manifestation du 9 Juin

Salut à tous,

Comme vous le savez certainement, il y a depuis quelque temps un grand mouvement de manifestation contre le traité ACTA et ce à travers toute l’europe. Étant moi même fortement opposé à l’adoption de ce traité, je milite à mon échelle et avec mes moyens. Habitant à Dijon, j’étais présent aux deux manifestations organisées les 11 et 25 février (en photographe amateur, j’y ai d’ailleurs pris quelques clichés présents sur ma galerie, voir ici [11/02] et ici [25/02]). Ces dernières ont eu un petit succès avec une centaine de personnes présentes. Malheureusement, une autre manifestation supposée avoir lieu le 14 avril a été simplement annulée, faute de monde…

Le flop cuisant du dernier rassemblement nous avait, entre personnes présentes, ammenés à réfléchir à différents moyens pour ramener du monde. C’est simple, le mouvement n’était pas assez visible. Un dernier évênement aura lieu un peu partout le 9 juin prochain. Nous avons plus de temps pour nous organiser et dans cette optique, j’ai réalisé une affiche pour cette manifestation, disponible sous licence CC-BY-SA.

Il ne reste plus qu’à organiser des opérations de collages et de tractages pour que cet évênement soit une réussite !

L’affiche a été réalisée à l’aide du logiciel Inkscape. Vous pouvez récupérer les sources SVG ici, pour réutiliser cette affiche pour une autre manifestation ! La police utilisée est disponible ici.

Si vous êtes un dijonnais utilisateur de Facebook, voici la page de l’évênement : https://www.facebook.com/events/267939609970068/.

PS : Si jamais vous utilisez cette affiche pour une autre manifestation Anti Acta, dites le moi en commentaire, afin de satisfaire ma curiosité :-) !

Aucun contenu relatif trouvé

flattr this!

création de paquet: landes-eternelles 1.6.3.0-4

Mise à jour du paquet landes-eternelles 1.6.3.0

Je dépose les sources sur AUR, vous les trouverez ICI

Je suis en attente d'un réponse pour mettre à disposition les binaires via le dépôt archlinux.fr


MODIFICATIONS

correctifs pour la création du paquet :

- correction pour l'architecture 32 bits
- retrait de la dépendance (makedepend) au paquet make en respect des  pratiques AUR 
qui impliquent l'installation préalable de base-devel et donc de make.

Article complet sur http://celmir.tuxfamily.org

Migrer ses clés SSH de putty vers ArchLinux et SSH Agent

OpenSSH

Aujourd'hui, je souhaiterais vous faire part de ma migration SSH de Windows/Putty vers une solution basée sur ArchLinux et SSH-Agent.

Comme beaucoup d'entre-vous, j'avais mon poste de travail sous Windows et j'utilisais intensivement Putty afin de gérer mes serveurs. Depuis peu, j'ai eu la chance de pouvoir migrer mon poste de travail sous ArchLinux. Il était important de pouvoir utiliser rapidement mon GNU/Linux pour me connecter à mes serveurs.

Exporter son trousseau de clé SSH depuis Putty :

La première étape consiste à démarrer l'utilitaire Putty Key Generator. Il est installé avec Putty si vous avez choisi une installation complète.

Boite de dialogue Putty Key Generator
Chargez votre clé privée dans cet utilitaire en utilisant le bouton Load.

Dans chaque fichier clé ppk est contenu votre trousseau clé public/privé, cela va nous permettre de sauvegarder notre clé publique en faisant un copié/collé de la boite nommée Public Key for pasting into Open SSH authorized keys. Creez un nouveau fichier à l'aide de votre éditeur favoris puis sauvegardez le sous id_rsa.pub ou id_dsa.pub selon le chiffrement de votre clé.

Pour exporter votre clé privée dans un format compatible avec votre client OpenSSH, cliquez sur le menu Conversions, puis sur Export OpenSSh key, une boite de dialogue vous propose de sauvegarder votre fichier, enregistrez le sous le nom id_rsa ou id_dsa.

Déployer sa clé SSH sur ArchLinux :

Commencez par installer le paquet openssh sur votre distribution :

yaourt -Sy openssh

Une fois ceci fait, placez votre clé privée et votre clé publique venant de Putty dans le répertoire ~/.ssh de votre utilisateur.

Exporter votre clé publique sur votre serveur :

cat .ssh/id_dsa.pub | ssh mlx@M1.foo.org \
                  "cat - >>.ssh/authorized_keys"

Verifiez également sur votre serveur que la configuration du service SSH (/etc/ssh/sshd_config) comporte les lignes suivantes :

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile	%h/.ssh/authorized_keys

Si besoin, rechargez la configuration du service SSH si vous l'avez modifiée :

/etc/rc.d/ssh reload

Normalement à votre connexion à votre serveur, vous devriez obtenir l'invite suivante :

Enter passphrase for key '/home/thomas/.ssh/id_rsa':

L'authentification de votre serveur est sécurisée mais vous devrez entrer la passphrase à chaque connexion. Sachant que normalement celle ci doit être plus compliquée que votre mot de passe, ce n'est pas le pied !!

L'agent-ssh, le gardien de vos clés :

Pour résoudre le problème précédent, nous allons utilisez un outil fourni avec le client ssh, j'ai nommé l'agent-ssh. Cet utilitaire va vous permettre de gérer plusieurs trousseaux de clés et surtout de vous éviter de retaper votre pass phrase à chaque connexion à votre serveur.

On commence par exécuter l'agent :

ssh-agent
> SSH_AUTH_SOCK=/tmp/ssh-test/agent.134; export SSH_AUTH_SOCK;
> SSH_AGENT_PID=135; export SSH_AGENT_PID;
> echo Agent pid 135;

Il suffit maintenant de faire un copié/collé des deux premières lignes pour exporter les variables requises pour le bon fonctionnement de l'agent-ssh.

SSH_AUTH_SOCK=/tmp/ssh-test/agent.134; export SSH_AUTH_SOCK;
SSH_AGENT_PID=135; export SSH_AGENT_PID;

Puis il faut dire à votre agent de s'occuper de votre trousseau de clé :

ssh-add
> Enter passphrase for /home/thomas/.ssh/id_rsa: 
> Identity added: /home/thomas/.ssh/id_rsa (/home/thomas/.ssh/id_rsa)

On peut maintenant vérifier que votre clé est bien gerer ssh-agent en tapant la commande suivante :

ssh-add -l
> fingerprint_de_votre_clé /home/thomas/.ssh/id_rsa (RSA)

Une fois ces commandes effectuées, vous n'aurez plus besoin de taper votre mot de passe, ni votre pass phrase dans un certain nombre de cas.

  • L'agent-ssh étant lancé depuis une fenêtre d'un terminal, il n'est pas accessible depuis un autre terminal
  • Vous êtes obligé de taper votre pass phrase au moins une fois par session

Manipulation autour de ssh-agent :

Afin d'accéder depuis l'ensemble de vos applications à votre ssh-agent, je vous conseille de l’exécuter automatiquement à l'initialisation de votre session. Pour ce faire placez le script suivant dans votre $HOME/.profile ou $HOME/.login selon votre préférence :

ssh-agent > /tmp/ssh.keys    # pour y mettre les variables environnement
.  /tmp/ssh.keys                # Exporter les variables
rm  /tmp/ssh.keys               # Faire le ménage après

Enfin, si vous ne souhaitez pas taper votre de passe du tout, j'ai fait ce bidouillage (à vos risques et périls!)

Modifiez votre fichier .profile afin d'obtenir :

cat .profile
> export SSH_ASKPASS="/home/thomas/.ssh/add-passphrase.sh"
> ssh-agent > /tmp/ssh.keys    # pour y mettre les variables environnement
> .  /tmp/ssh.keys                # Exporter les variables
> rm  /tmp/ssh.keys               # Faire le ménage après
> ssh-add .ssh/id_rsa < /dev/null

Creez le fichier add-pasphrase.sh :

cat .ssh/add-passphrase.sh 
> #!/bin/sh
> cat /home/thomas/.ssh/key-passphrase

Puis créez le fichier key-passphrase en y insérant uniquement votre passphrase.

Mettez les autorisations qui vont bien aux deux derniers fichiers :

-rwx-- 1 thomas users add-passphrase.sh
-rw--- 1 thomas users key-passphrase

Normalement une fois ceci fait à la prochaine ouverture de session, plus aucun mot de passe ne doit vous être demandé. En effet, le seul moment où vous deviez taper votre passphrase (ssh-add), nous lui avons retourné le fichier /dev/null, ainsi il va consulter la variable SSH_ASKPASS qui contient un script lui retournant le mot de passe.

Bon c'est un peu alambiqué mais cela me semble un peu sécurisé et puis surtout bien pratique.

That's all folks !!

Accélérer le boot sous Fedora 16

Salut,

Encore un article sur Fedora 16, cela signifie qui n’y aura pas d’Archlinux aujourd’hui (mais ce n’est que partie remise).

Fedora 16 me satisfait vraiment beaucoup, actuellement je n’ai pas trouvé mieux en distrib non-minimaliste, pour mon laptop. Cependant, cette dernière nécessite quelques ajustements pour obtenir un résultat quasi-parfait. J’avais déjà traité dans un précédent article, de tweaks au niveau du combo CPU / GPU / RAM. Maintenant, je vais vous parler du boot.

Pour moi, c’est un peu le seul point noir de cette Fedora, car effectivement beaucoup de « services » (ils sont appelés comme ça, au niveau de SystemD) sont lancés par défaut au démarrage, alors qu’ils ne sont même pas utilisés (je pense à sendmail). Il faut donc les désactiver et ainsi on peux gagner quelques secondes. Pour le tutoriel, j’ai réactivé les services fautifs que j’avais précédemment enlevé. J’expliquerai aussi comment enlever Plymouth, pour ceux qui le souhaite.

Cet article devrait aussi fonctionner avec les distributions qui utilisent SystemD.

- Services -

Donc on allume notre PC, on espère que le boot sera long et quand vous vous êtes logué en graphique, vous lancez dans votre terminal favori, la commande:

systemd-analyze blame

Et là, on voit nettement quels sont les services qui prennent le plus de temps à s’initialiser, plus la valeur est haute, plus le service met du temps à être fonctionnel:

 60201ms sendmail.service
 22955ms iscsi.service
 10545ms udev-settle.service
  9069ms fedora-loadmodules.service
  8537ms var-lib-nfs-rpc_pipefs.mount
  8120ms systemd-vconsole-setup.service
  5353ms fedora-readonly.service
  4258ms udev-trigger.service
  3131ms media.mount
  3051ms mdmonitor-takeover.service
  3000ms sys-kernel-debug.mount
  2993ms dev-mqueue.mount
  2992ms sys-kernel-security.mount
  2991ms dev-hugepages.mount
  2981ms udev.service
  2759ms remount-rootfs.service
  2757ms systemd-remount-api-vfs.service
  2345ms systemd-sysctl.service
   786ms fedora-storage-init.service
   410ms NetworkManager.service
...

Dorénavant, il suffit de désactiver ces services (faites attention à ne pas en avoir besoin). Je sais que sendmail est utilisé par Thunderbird, mais je n’en suis pas à 100% sûr. Dans mon cas, j’ai juste touché aux services sendmail et iscsi et ça a suffit pour gagner environ 3 à 4 secondes.

Avant le "tweak"

On doit user de la commande systemctl pour faire le ménage dans ces services. J’ai donc procédé comme ceci:

sudo systemctl disable votre_service.service

Dans mon cas:

sudo systemctl disable iscsi.service
sudo systemctl disable sendmail.service

Faites de même avec les services qui vous posent problèmes. Voilà de précieuses secondes gagnés lors du boot. Je dois dire que c’est assez agréable.

Après le "tweak"

 - Plymouth -

Plymouth est l’écran qui est affiché lors du chargement de Fedora 16, où on voit le logo Fedora qui se remplit au fur et à mesure que votre système charge, pour enfin afficher le logo final quand tout est terminé.

Sachant que certains l’aiment et d’autres non, je vais expliquer comment l’enlever. De mon côté, je l’avais désactivé puis je l’ai réactivé peu après, car finalement je trouve ça joli. Donc, éditez votre fichier de configuration GRUB2, avec la commande:

sudo nano /etc/default/grub

Vous devriez obtenir quelque chose de la forme:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Fedora"
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_CMDLINE_LINUX="rd.md=0 rd.lvm=0 rd.dm=0 quiet SYSFONT=latarcyrheb-sun16 rhgb rd.luks=0  KEYTABLE=fr-pc LANG=fr_FR.UTF-8"

Enlevez le paramètre « rhgb » et Plymouth aura disparu au prochain redémarrage. Vous noterez aussi que j’ai rajouté la ligne « GRUB_SAVEDEFAULT », qui permet d’enregistrer le choix fait dans GRUB2 et de le mettre par défaut.

Ce n’est pas fini, maintenant vous devez update le grub.cfg, avec la commande:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Voilà, vous pouvez « reboot » votre ordinateur, en espérant que vous ayez gagné des secondes, bien évidemment.

Bye.

Des nouvelles fraîches

Bonjour,

Effectivement, cela fait pas mal de temps que je n’ai pas écrit d’articles sur le blog. Cela n’est pas parce que j’ai décidé de le délaisser et de l’abandonner, bien au contraire. Mais plutôt parce que j’ai eu un moment de relâchement, où j’ai drastiquement changé mes habitudes. Le blog est pour moi plus qu’important et je ne souhaite pas jeter l’éponge.

J’ai effectué un nombre importants de travaux informatiques, sur différents périphériques, et cela à occupé mon temps libre. Par ailleurs, j’ai brûlé beaucoup d’heures sur le RPG Skyrim et je n’ai pas vu le temps passer.

Pendant une période, je ne savais pas trop de quoi parler et puis tout d’un coup, j’ai eu de nombreuses idées d’articles et de projets. Je vais vous expliquer plus loin ces travaux.

Je mentionne aussi très souvent le fait que j’aimerais avoir plus de lecteurs, qui profitent de mes contenus mais le format de se blog (c’est-à-dire des articles à intervalles non-réguliers) n’est pas quelque chose de communs, comme d’autres blogs où il y a des news plusieurs fois par semaine. Cela je pense, m’empêche de vraiment faire mon trou. Je vous encourage à faire un peu de bouche à oreille autour de vous, peu importe si le public est novice ou confirmé.

J’ai donc décide d’écrire un article, qui vous permettra d’y voir un peu plus clair sur les sujets que je souhaite développer, dans les prochains mois. Les points cités sont survolés car j’écrirai des articles complets en les traitant au cas par cas.

- Laptop -

Il y a plusieurs mois, je m’étais mis à Fedora 16 avec GNOME 3 (en mode Fallback) mais non content de certaines choses, comme des programmes qui crashent ou sinon des widgets qui refusent de se lancer au démarrage, j’ai changé d’environnement. J’ai switché sur XFCE et je suis plus que satisfait de ce changement. J’ai pu obtenir un système très stable et qui répond parfaitement à mes besoins.

Mon setup Fedora 16 / XFCE

J’ai grandement modifié les services qui se lancent au démarrage, afin de gagner quelques secondes au boot (désactivation de Plymouth). Je me suis donc frotté à SystemD, pour la première fois et j’ai été assez étonné du fonctionnement.

- Enregistrement -

Pas mal de lecteurs ont suggéré dans les commentaires du second épisode, de faire un enregistrement non seulement vocal mais aussi vidéo. Avec un outil très pratique qui est RecordMyDesktop (je ne suis pas familier avec ffmpeg), je pense réaliser le troisième épisode sur ma Fedora 16 sous XFCE. Vous pourrez ainsi profiter du changement et de la grande réactivité de cet environnement de bureau. Je table comme d’habitude, sur une durée de 15 minutes.

- Dockstar(s) -

Si vous suivez le blog (et le twitter), vous savez que j’ai mis la main sur un 2nd Dockstar acheté en occasion mais dans un excellent état. Pour la petite histoire, je m’étais acheté un Pogoplug mais le modèle censé être neuf, semblait être déjà utilisé. Je l’ai donc renvoyé.

J’en ai profité pour comme d’habitude y installer une Debian Squeeze dessus. Pourquoi une Debian? Parce que la grande force de cette distrib, est quelle ne nécessite pas de mise à jour fréquente. Elle peut fonctionner de manière stable, tout en étant totalement autonome.

Les Dockstars me permettent de réaliser pleins d’applications très utiles comme:

    • un serveur d’impression accessible sur le réseau local
    • un monitorage 24h/24 et 7j/j de mon onduleur EATON avec journal/logs
    • un « NAS » logiciel sur lequel je prévoie de brancher mon prochain disque dur externe USB2, qui sera partagé sur le réseau gigabits via un routeur
    • station autonome de téléchargement de fichiers

Actuellement, seul le serveur d’impression et le monitorage onduleur sont actifs et fonctionnels. Je vais mettre en place le reste au fur et à mesure. Vous retrouverez toutes les procédures sur le blog et les configs sur Github.

En tout cas, j’aime beaucoup « travailler » et tester des choses sur les Dockstars. Il est très intéressant de voir les possibilités offertes (quasiment infinies) par ce matériel.

- Divers -

Afin de fournir une connexion internet à mes Dockstars, sans descendre à l’étage inférieur (où se trouve la Box), j’ai paramétré un partage de connexion à partir du PC de bureau (avec IPtables) qui est relié en Wifi vers les périphériques en aval, branchés en Ethernet sur un routeur. Cela fonctionne parfaitement et me facilite la tâche pour mettre à jour mon matériel.

En parlant de matériel, vous pouvez consulter la page « Hardware« , qui liste tout le matériel que j’utilise. Cela peux aider des personnes, qui ne savent pas si tel ou tel matos, est pris en charge.

Pour finir, je me demande si il serait utile ou pas de créer une page Google+, afin de ramener un peu plus de monde sur le blog. Actuellement, je ne dispose pas encore de compte sur Google+, car je ne suis pas très branché réseau social, sauf Twitter que je trouve pratique. Donc, si vous estimez que cela peux être un plus, n’hésitez pas à en faire part dans les commentaires.

Voilà une synthèse des sujets, dont je vais vous parler, dans les prochains mois. J’espère que cela a éveillé votre curiosité et vous a incité à revenir, pour lire des choses intéressantes.

A bientôt, lecteurs!

création de paquet: landes-eternelles 1.6.3.0-3

Mise à jour du paquet landes-eternelles 1.6.3.0

binaire 64-bits disponible

Désormais je dépose les sources sur AUR, vous les trouverez ICI


MODIFICATIONS

correctifs pour la création du paquet :

- intégration des patch update 2 et 3
- boucle pour l'application des patchs

BINAIRE

Qualité testée avec namcap

landeseternelleslinux-1.6.3.0-3-x86_64.pkg.tar.xz


Je peux remettre des binaires grâce à l'augmentation de mon quota par Tuxfamily, merci tf :-)

Si vous voulez la version 32-bits faite-moi une demande ...

Article complet sur http://celmir.tuxfamily.org

Archbang sur un netbook HP mini

Ma petite sœur, avec laquelle nous partageons quelques équipements divers, s'est dégotée un netbook HP mini afin de relever ses mails et voir ses photos en vacance. Et me demanda aussitôt d'y installer un OS digne de ce nom, ainsi que les quelques programmes nécessaires à son usage. Jusqu'à présent j'étais plutôt circonspect sur ce genre de matériel : que faire avec un écran aussi ridicule, un processeur riquiqui et si peu de mémoire ?

Une fois viré le Windows starter qui encombrait le disque dur ma première tentation fut de tester la dernière mouture de Ubuntu. Après tout, cette interface Unity qui me fait tant hurler sur un PC de bureau, avait été conçue justement pour ce genre d'engin. Bah... vu le titre de ce billet vous aurez compris que je n'ai toujours pas été convaincu.

Donc retour aux fondamentaux : un environnement léger, simple, et qui se contente de faire ce qu'on lui demande. Ça tombe bien, la combinaison Arch - Openbox - Tint2 est faite pour ça et existe en version prêt-à-porter sous le nom de arcbang ! Ça fonctionne comme une baguette magique de nos vieux comptes de fées : d'un seul coup le vilain crapaud se transforme en vaillant destrier capable de vous emmener au bout du monde sans rechigner à la tache. Oui, bon, peut-être que je m'emporte un peu, mais la différence par rapport à la solution précédente est évidente.

Seul petit bémol : le bouton droit du touchpad ne fonctionne pas (sous d'autres distributions non plus du reste). Quelques heures passées en tête à tête avec Mr Google n'y changent pas grand chose, si ce n'est ce post démesuré de 29 pages dans lequel on trouve un module psmouse patché qui semble fonctionner pour Ubuntu.

Avec l'aide diligente et efficace des maîtres archers du forum francophone de archlinux (grâce leur soit rendu ici) ceci fut promptement transformé en PKGBUILD dont je joint une archive ici. Si vous en avez l'usage commencez par mettre votre système à jour (pacman -Syu), redémarrez pour prendre en compte l'éventuelle nouvelle version du noyau, installez base-devel si ce n'est déjà fait, décompressez l'archive où bon vous semble, déplacez-vous dans le répertoire ainsi créé et tapez d'une main ferme et assurée la commande suivante :

makepkg -sirc

Pour la petite histoire j'ai changé d'avis sur les netbooks.

création de paquet: landes-eternelles 1.6.3.0-2

Mise à jour du paquet landes-eternelles 1.6.3.0

Désormais je dépose les sources sur AUR, vous les trouverez ICI


MODIFICATIONS

correctifs pour la création du paquet :

- correction des sommes de contrôle des sources
- correction de liens de téléchargement des sources
- suppression d'une commande echo
- correction pour le fichier licence

BINAIRE

Qualité testée avec namcap

pas de binaire fournit pour l'instant

Article complet sur http://celmir.tuxfamily.org

création de paquet: landes-eternelles 1.6.3.0-1

Mise à jour du paquet landes-eternelles 1.6.3.0

Désormais je dépose les sources sur AUR, vous les trouverez ICI


MODIFICATIONS

Informations de version disponible sur le forum officiel ICI

correctifs pour la création du paquet :

- remplacement dans les sources de editeur_sources par Editeur_Sources, idem pour client_sources

  for fic in *
  do
  sed -e 's#client_sources#Client_Sources#g' -i $fic
  done 

- remplacement du test sur l'architecture par la variable $CARCH
- retour de l'éditeur de carte

BINAIRE

Qualité testée avec namcap

pas de binaire, un quota placé aujourd'hui sur mon espace de téléchargement ne me le permet plus :-(

Article complet sur http://celmir.tuxfamily.org

Graphist Gallery 0.111 disponible

[English version (shorter)]

Bonjour à tous,

Il s’est écoulé beaucoup de temps depuis le lancement de la dernière version de Graphist Gallery (0.101). Voici enfin la version 0.111, qui amène un lot conséquent de nouveautés ! Une fois n’est pas coutume, rappelons brièvement le but de Graphist Gallery :

Graphist Gallery est un script permettant de créer simplement un site web galerie d’image, dynamique et fonctionnant sans base de données. Toute votre galerie s’articule autour d’une arborescence de dossier et de fichiers, ce qui vous permet de mettre en place un site web galerie rapidement, sans se soucier du code. Le but étant donc de gagner un maximum de temps et de permettre à l’utilisateur de gérer son contenu hors ligne, afin de tout envoyer sur le site via un accès FTP.

Cette version intègre donc beaucoup de nouveautés, utiles et faisant de Graphist Gallery un outil toujours plus performant. De surcroit, Graphist Gallery suit toujours son objectif principal : rester léger et simple ! Il est donc tout à fait indiqué pour un portfolio, un site web de présentations… Passons donc à la liste des modifications.

Les nouveautés :

Voyons donc les nouveautés.

  • Une des principales nouveautés est le multi-dossier contenu. En effet, vous pouvez maintenant  en avoir plusieurs séparés. Pour ce faire, il suffit de créer des nouveaux dossiers de cette manière : « 2dossier », « 3dossier »… Et d’ajouter, dans le fichier de votre template, une nouvelle fonction show_categories() (tout est expliqué dans la documentation). Vous pouvez voir un exemple parlant sur ma galerie personnelle, où les photographies et les dessins sont séparés.
  • Autre importante fonction, le commentaire par image. Il suffit de créer un fichier « .txt » portant exactement le même nom que votre image (ne pas oublier l’extension de l’image). Vous pouvez voir ce que ça donne ici (ne fonctionne qu’avec la vue d’image en liste – 0)
  • Les images peuvent maintenant être affichées seules.
    • Cette nouveauté est couplée à une autre fonctionnalité importante : l’affichage des données exif de vos photographies. Vous pouvez aussi choisir lesquelles afficher dans le fichier de configuration. Vous pouvez voir un exemple ici (ne fonctionne qu’avec la vue d’image en liste – 0).
  • Le thème par défaut a été modifié. Il est maintenant plus clair et l’affichage des images est meilleurs qu’auparavant (voir ici).
  • Les pages dans le menu ne s’affichent plus dans n’importe quel ordre, mais dans l’ordre alphabétique.
  • Comme à l’accoutumé, quelques bugs ont aussi été réglés.

Bien sûr, les fonctions habituelles de Graphist Gallery sont toujours présentes, comme le commentaire pour une série d’image, l’administration des pages, le multi-langage…

Installation et mise à jour :

Si vous êtes un nouvel utilisateur, suivez ces directives pour installer Graphist Gallery. La procédure est simple prend très peu de temps.

Si vous utilisez déjà Graphist Gallery, c’est très simple, il vous suffit de remplacer tous les dossiers et fichiers de votre installation actuelle par ceux de cette nouvelle version (sauf bien sûr vos dossiers de pages et de contenus). Attention toutefois, le fichier de configuration (config.php) a lui aussi changé. De fait, il vous faudra le rééditer après la mise à jour.

Utiliser Graphist Gallery 0.101 :

Vous souhaitez télécharger et utiliser Graphist Gallery ? Voici une liste de liens utiles, en espérant que cette version vous plaise :

De plus, si vous souhaitez voir une mise en situation concrète de ce script, vous pouvez aller voir ma galerie d’image personnelle.

 

flattr this!

La Metaprogrammation en Ruby

Voici (enfin !) mon premier billet en 2012 ! L'année passée, je vous avais promis quelques articles techniques (notamment sur la programmation). Aujourd'hui, c'est chose promise chose due : on va parler de métaprogrammation en Ruby.

Cet article sera accompagné d'un autre qui traitera de la fonction yield(). Et ces deux articles précéderont une série d'autres à propos du célèbre framework Ruby : Ruby On Rails.

Qu'est-ce que la metaprogrammation ?

J'imagine que beaucoup d'entre-vous ont ouvert de grands yeux à la lecture de ce mot barbare : "la métaprogrammation". En fait, cela n'a rien de bien compliqué : La métaprogrammation consiste à écrire des programmes qui décrivent eux-mêmes des programmes. Autrement dit, ça permet (entre autres) de générer du code directement au runtime. Comme vous allez pouvoir le constater, c'est vraiment très puissant.

La définition de Wikipedia énumère les différentes façons de procéder :

  • l'utilisation de générateur de code (ce que j'ai mentionné juste avant)
  • la programmation avec des templates
  • l'utilisation d'un protocole à méta-objets
  • l'utilisation de macros.

A quoi peut bien servir la metaprogrammation ?

La métaprogrammation peut servir à grandement simplifier la lecture du code (notamment via le principe Don't Repeat Yourself) ou dans le cas de Rails à simplifier la vie du développeur.

Deux petits exemples pour la route !

Admettons que l'on fasse un programme qui gère une base de données client et qui manipule donc plein de chaînes de caractères (String) qui peuvent signifier plein de choses (un numéro de téléphone, une adresse email, un numéro client, etc.). Nous aimerions qu'un objet String dispose de méthodes telephone?, email?, no_client? ... et peut-être même d'autres plus tard ! Comment faire ? Vous vous doutez bien de la réponse : avec la métaprogrammation !

Voici le code : (je vous expliquerai juste après son fonctionnement, donc pas de panique ;-) )

  #!/usr/bin/env ruby

class String
        @@string_checks = {
        'phone?' => %r{^0[\d]{2}\/[\d]{3}\.[\d]{2}\.[\d]{2}$},
            'email?' => %r{^.+@.+\.[a-z]{2,4}$},
            'no_client?' => %r{^[A-Z]{2}[\d]{4}-[\d]{4}-[\d]{4}$}
        }
        def method_missing(method_id)
                kind_of_string = method_id.to_s
                if @@string_checks.has_key?(kind_of_string)
                        if self =~ @@string_checks[kind_of_string]
                                true
                        else
                                false
                        end
                else
                        raise NoMethodError,
                                "Undefined method #{method_id} for \"#{self}\":String"
                end
        end
end

def humanize(bool)
        bool ? "Yes !" : "No !"
end

begin
        # Valid
        tel = "022/123.45.67".phone?
        email = "foo@foo.com".email?
        no_client = "CH1234-4242-4242".no_client?

        puts "Is 022/123.45.67 a valid phone number ? #{humanize(tel)}"
        puts "Is foo@foo.com a valid email address ? #{humanize(email)}"
        puts "Is CH1234-4242-4242 a valid client number ? #{humanize(no_client)}"

        puts "#################################################"

        #Invalid
        tel = "0033/123.12.12.12".phone?
        email = "www.foo.com".email?
        no_client = "42".no_client?

        puts "Is 0033/123.12.12.12 a valid phone number ? #{humanize(tel)}"
        puts "Is www.foo.com a valid email address ? #{humanize(email)}"
        puts "Is 42 a valid client number ? #{humanize(no_client)}"
end

Alors qu'est-ce que j'ai fait ?

Vous noterez tout d'abord que je définis une classe String qui est en fait une classe prédéfinie. En effet, en Ruby il est tout à fait possible de rajouter des choses dans les classes prédéfinies.

Il faut ensuite faire attention à la méthode method_missing que j'ai ajouté à la classe String. Que fait cette méthode ? Et bien si vous appelez une méthode non définie d'un objet String, Ruby va jeter un oeil dans cette méthode pour voir si on y définit quand même la méthode.  Et c'est justement là-dessus que je joue en récupérant l'id de la méthode et cherchant l'expression régulière correspondante au nom de la méthode appelée.

Après, je lève simplement une exception NoMethodFound si la méthode appelée n'est pas correct.

Finalement, je fais une méthode humanize ... qui n'a rien de spéciale :-) Elle ne fait que mettre en forme un booléan. Le reste n'est ensuite que des tests que vous pouvez vous amusez à lancer.

N'est-ce pas beau de pouvoir simplement appeler "foo@foo.com".email? pour vérifier s'il s'agit bien d'un email valide ?

Ainsi, il va gérer la méthode dynamiquement et directement au Runtime :-) De plus, si on veut par la suite ajouter d'autres vérifications pour une String, il suffit d'ajouter ce dont on a besoin dans la hash table @@string_checks.

Il y a également d'autres façons d'utiliser la métaprogrammation. On peut générer des méthodes sous forme de chaînes de caractères et utiliser la méthode class_eval pour l'évaluer. Regardons ça avec un petit exemple.

On aimerait créer une méthode attr_accessor_with_backup qui déclarerait un attribut et ses accesseurs correspondant (getter et setter) et qui garderait un backup de la valeur précédente.

 #!/usr/bin/env ruby

class Class
        # Store a backup of the previous value in attr_name_backup
        def attr_accessor_with_backup(attr_name)
          # Make sure it's a String
          attr_name = attr_name.to_s
          # Create a getter for attr_name and attr_name_backup
          attr_reader attr_name
          attr_reader attr_name+"_backup"
          # Generate setter for attr_name
          class_eval %Q{
                  def #{attr_name}=(value)
                        # backup previous value
                        @#{attr_name}_backup = #{attr_name}
                        # set the new value
                        @#{attr_name} = value
                  end
          }
        end
end

class WeNeedBackup
        attr_accessor_with_backup :foo
end

begin
        spock = WeNeedBackup.new
        spock.foo = "42"
        puts "foo => #{spock.foo} and foo_backup => #{spock.foo_backup}"
        spock.foo = "24"
        puts "foo => #{spock.foo} and foo_backup => #{spock.foo_backup}"
        spock.foo = "128"
        puts "foo => #{spock.foo} and foo_backup => #{spock.foo_backup}"
end

Cette fois on ajoute une méthode attr_accessor_with_backup dans la classe Class (classe dont toutes les classes Ruby sont des sous-classes), qui, rappelons-le, fait exactement comme la méthode prédéfinie attr_accessor en plus de stocker un backup de la valeur précédente de l'attribut.

Dans cette méthode on va alors créer des getters pour le nom de l'attribut (attr_name)  et son backup (attr_name_backup) qui contiendra la valeur précédente de attr_name.

Ensuite, il va nous falloir définir dynamiquement un setter pour l'attribut. On va donc utiliser la méthode class_eval et lui donner en argument une chaîne de caractères contenant le code de notre setter. Cette méthode s'occupera de sauvegarder la valeur courante de l'attribut dans l'attribut _backup et de mettre à jour la valeur de l'attribut.

Finalement, notre méthode attr_accessor_with_backup va générer les méthodes nécessaires directement au runtime.  N'est-ce pas monstrueusement puissant ?

Conclusion

Vous l'aurez sans doute constaté, la métaprogrammation permet de faire des tas de choses bien pratiques et peut ainsi simplifier la vie du développeur.

Le framework Rails utilise la métaprogrammation pour simplifier l'écriture du code par le développeur. Par exemple, il génère des helpers pour gérer les chemins aux ressources. Par exemple, pour accéder au controller products, il suffira d'appeler products_path ou products_url si on veut un chemin absolu. Si on veut accéder à l'action new du controller products, il suffira d'appeler new_product_path ou new_product_url. Ne vous inquiétez pas, nous reviendrons dessus beaucoup plus en détail très prochainement lorsque nous aborderons Rails.

J'espère que ce billet vous aura été utile ;-)

Applet emplacements pour tint2 (ou autres panels qui en seraient dépourvus)

J'avais proposé dans un précédent billet un petit script pour créer un menu emplacement en utilisant un lanceur de tint2 svn. J'en livre ici une version 0.2, toujours en bash.

Nouveautés :

  • code un peu moins crade (pour un programmeur du dimanche)
  • récupération des emblèmes de Thunar

Fonctionnalités :

  • prend en compte les signets enregistrés dans votre navigateur de fichier
  • compatible Nautilus, Thunar et PcmanFM
  • récupère les icônes des dossiers selon de votre thème (sauf PcmanFM)
  • prend en compte les périphériques externes montés dans /media

Dépendances :

  • mygtkmenu pour l'affichage
  • gvfs pour les icônes des signets de Nautilus
  • tdb-tools pour les icônes des signets de Thunar
  • zenity pour les messages

Installation :

  • récupérez le script ici
  • installez-le où vous voulez (/usr/local/bin par ex.)
  • rendez-le exécutable (chmod +X /chemin/vers/myPlacesMenu)
  • créez un .desktop dans votre .local/share/applications ou récupérez celui-ci
  • dans la section Launcher de tint2 indiquez le chemin du .desktop

Personnalisation : Pour le moment seul le choix du navigateur est disponible. Le positionnement du menu (X,Y) est en cours.

Les avantages du libre: une expérience personnelle :)

Je vous ai parlé dans mon dernier article d’un petit programme que j’ai écrit récemment et que j’ai publié sous licence BSD: dfc.

Si je vous en reparle aujourd’hui, ce n’est pas spécialement pour annoncer que le logiciel a fortement évolué depuis la dernière fois que j’en ai parlé sur ce blog (bien que ce soit le cas) mais c’est surtout que j’ai envie de parler de la bonne expérience que je suis en train de vivre grâce au libre.

Voici donc l’histoire:

Tout a commencé avec un script bash. Ce script, que m’avait fourni un de mes professeur à l’université, affichait les informations de la commande df(1) et y apportait un graphe montrant le taux d’utilisation des disques.

J’ai trouvé l’idée très sympa mais ai également trouvé le script limité et j’ai donc souhaité y ajouter des options. Or, l’état du code m’a assez vite effrayé et j’ai donc décidé de le ré-implémenter en C, langage que j’affectionne.

Je suis vite arrivé au résultat souhaité, à savoir afficher les principales informations fournies par df(1) et y ajouter un graphe. J’en ai parlé sur un forum et j’ai remarqué que les gens étaient plutôt intéressés par le concept. Puis, prenant particulièrement mon pied dans le développement de cet outil, j’ai décidé de lui ajouter des fonctionnalités et un peu d’agrément visuel par l’apport notamment de la couleur.

Après avoir amélioré ce programme, j’en ai parlé sur le forum anglophone de la distribution Archlinux. Les personnes l’ayant testé ont vite souhaité y voir plus de fonctionnalités, que je n’ai pas tardé à implémenter et ont également relevé plusieurs bugs que je me suis empressé de corriger.

J’en suis finalement arrivé à une version que je trouvais relativement mature et je me suis dit que plutôt que de garder cet outil pour moi, j’allais en parler un petit peu afin de pouvoir en faire profiter d’autres. C’est dans cet esprit que j’ai proposé une dépêche sur linuxfr dimanche passé et qui a été publiée le 1er avril (un lecteur de linuxfr a d’ailleurs cru à un poisson d’avril :P).

J’étais très loin d’imaginer l’enthousiasme que lèverait cette dépêche! Peu après la parution de l’article, j’ai été contacté par de nombreuses personnes. L’une proposant une amélioration, l’autre relevant un bug ou encore d’autres proposant des patchs (port du code vers FreeBSD notamment).

J’ai maintenant appris que dfc(1) sera vraisemblablement intégré dans les dépôts de la future Mageia, se trouve déjà dans les ports FreeBSD et s’apprête à rejoindre les dépôts de Frugalware et peut-être même ceux de Fedora!

Sincèrement, j’étais bien loin de m’imaginer tout cela lorsque j’ai commencé à taper quelques lignes de code il y a une quinzaine de jours sur mon portable…

Je souhaitais surtout relever à travers cet article le super esprit du libre qui a permis l’amélioration de dfc(1) en raisons de nombreuses contributions d’utilisateurs sous des formes variées. Et sincèrement, je souhaite tous les remercier. Bref, pour moi c’est une expérience personnelle extrêmement positive concernant les avantages du libre!

L’expérience Kernel 3.3

Bonjour,

Pas d’articles en ce moment, car j’ai un peu perdu la motivation nécessaire pour pondre des comptes-rendus, de mes expériences. Cependant, j’ai décidé de tester le kernel 3.3 qui est en testing, afin de me mettre au goût du jour et ainsi vous donner quelques précisions, sur mon opinion.

Par contre, je rencontre depuis, quelques soucis que je n’ai pas encore réussi à résoudre. Par exemple, lorsque j’essaie de démarrer mon navigateur Chromium, j’obtiens un message d’erreur très étrange:

Malheureusement, les « bugs » ne s’arrêtent pas là… Effectivement, je suis dans l’incapacité de pouvoir utiliser mon système de façon efficace, car avant que je règle le problème des couleurs de mon .Xresources, qui ont été complètement modifiées (cf image), je ne pouvais même pas me connecter en graphique:

Mais ce n’est pas fini, le kernel 3.3 a aussi engendré des coupures d’électricité et a mis mon onduleur en sécurité (pendant la compilation qui à duré 10h sur un 4 cœurs). Je ne peux donc plus l’utiliser et je pense être obligé de le mettre à la poubelle, car il ne veut même pas redémarrer. 200€ de gaché…

Pour finir, attendez vraiment avant de mettre à jour votre PC favori, parce que sinon vous risquez de rencontrer de gros soucis qui mettront votre ordinateur en danger. On pourra dire que ce kernel m’aura coûté les yeux de la tête.

Quant aux nouveautés, je n’ai pas eu l’occasion de tester cette nouvelle version efficacement. Je ne peux donc pas vous donner un avis sur la question.

Mon Tint2 (suite)

Le 5 mars dernier j'avais publié un premier billet sur mon utilisation de tint2 comme panneau / barre des tâches pour OpenBox. À l'usage deux petites choses manquaient encore à mon bonheur : un inhibiteur d'économiseur d'écran (pour les vidéos sur Internet) et une petite alarme facilement programmable.

Pour la première je connaissais déjà la commande xset du paquetage xorg-xset pour gérer l'économiseur d'écran et la gestion d’énergie de l’écran :

  • xset s off -dpms pour désactiver
  • xset s on +dpms pour rétablir

Mais cette commande permet bien d'autres choses (man xset pour connaître toutes les options) et notamment d'activer désactiver la cloche système

  • xset b pour désactiver
  • xset -b pour réactiver

Il suffit maintenant d'un petit script s'appuyant, comme d'habitude sur mygtkmenu, pour créer un petit lanceur à intégrer dans tint2 :

xsetMenu.jpg

J'ai mis le script, le lanceur et les icônes utilisées dans cette archive.

Pour l'alarme je voulais retrouver une applet que j'utilisais avec Gnome 2. Il y a deux paquetages qui semblent faire l'affaire dans AUR. Le premier, alarm-clock souffre d'un petit bug et l'icône ne s'affiche pas dans le systray. Pas de problème en revanche pour le presque homonyme alarm-clock-applet. Tout est très bien expliqué sur cette page.

À l'usage des anglophobes je précise que comme souvent la page web est en anglais mais l'application elle-même est bien francisée.

Travail personnel encadré – La conquête de l’espace

Bonjour à tous,

Travail personnel encadré. Derrière ce nom peu racoleur se cache en fait un exercice obligatoire en classe de première (puis terminale). Il s’agit d’un travail en groupe, portant sur un sujet de notre choix. Malheureusement, il y a ce « encadré », qui nous oblige à rester dans une voie bien précise, imposée, dans mon cas, la physique et la technique et les innovations inhérentes. Tout de même, cet exercice s’éloigne légèrement du bête travail scolaire qui nous est habituellement demandé et est une bonne occasion de travailler en groupe. Le TPE, comme on l’appelle, est pris en compte dans la note de BAC. Cependant, il y tient une place minime, ce qui, finalement, est vraiment dommage : cet exercice est bien plus révelateur du travail et de l’implication que peut fournir un élève qu’un examen idiot (je ne m’étendrai toutefois pas à ce sujet, du moins pas dans cet article).

Donc, deux de mes camarades et moi avons choisi du thème de la conquête de l’espace. Un sujet collant bien avec la physique et la technique, intéressant qui plus est. Après avoir effectué nos quelques recherches, rédigés nos parties, je me suis occupé de la réalisation d’un dossier, reprenant tout cela, l’ordre en plus. Je le propose donc au téléchargement pour tous les gens intéressés, sous les termes de la Licence Art Libre, évidemment. Ce dossier est bien sur une synthèse. Le sujet est très vaste et il est certain que quelques thèmes forts intéressants n’ont pas été traités.

Je me suis personnellement occupé des parties histoire et ouverture (qui, elles aussi, ont été amputées de quelques aspects, malheureusement). De plus, je me suis occupé de l’expérience avec un camarade. En effet, chaque groupe a dû réaliser une sorte d’expérimentation, plus ou moins réussie, collant avec le sujet traité. Nous avons, dans notre cas, opté pour le lancement d’une fusée à eau (j’aurai beaucoup aimé une réelle fusée à poudre, mais ce ne fut possible, d’un point de vue législatif, déjà), pour expliquer la propulsion, noramment. Ce fut quelque chose d’amusant, en tout cas. J’ai filmé quelques lancements et le résultat est disponible ici, sous LAL, en 720p (c’est très mauvais, par moment, mais j’aurai appris de mes erreurs lors du montage ! De plus, il n’y a pas de son, le micro de l’appareil utilisé était vraiment trop crade). Autre chose d’amusant, une petite étude de la « fusée lunaire » imaginée par Hergé, rédigée par la personne ne participant pas à l’expérience.

À propos du dossier en lui-même, je l’ai mis en page à l’aide d’Inkscape (qui n’est à l’origine pas fait pour cela, donc quelques passages furent assez délicats). Il m’a pris pas mal de temps et je suis globalement content du résultat.

Le dossier est disponible en PDF à cette adresse !

 

 

 

Aucun contenu relatif trouvé

flattr this!

dfc: un utilitaire affichant le taux d'utilisation des disques

J’ai écrit récemment, en C, un petit utilitaire qui affiche le taux d’utilisation des disques.

Pourquoi? Pour le fun surtout. Enfin, pour situer un peu l’histoire, il s’agit en fait à la base d’une implémentation en C de ce que fait un script bash que m’avait gentiment fourni un de mes professeurs à l’université. J’avais souhaité y apporter quelques changements mais j’avoue avoir un peu pris peur face à l’aspect du script bash.

Au final, j’y ai ajouté pas mal d’options et plusieurs autres sont prévues. Pour voir lesquelles, il suffit de consulter la roadmap sur le site officiel. Assez écrit, voilà à quoi cela ressemble:

1
2
3
4
5
FILESYSTEM TYPE     USED (*)      FREE (-) %USED       AVAILABLE           TOTAL MOUNTED ON
/dev/sdc1  ext4     [************--------]   57%    12989202432B    29941719040B /
/dev/sda7  ext2     [****----------------]   16%       84393984B       99997696B /boot
/dev/sda3  ext4     [*************-------]   63%   138229665792B   370028589056B /home
/dev/sda5  reiserfs [**************------]   68%     4315811840B    13489512448B /var

Et les options disponibles pour la version actuelle (1.1.3):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Usage: dfc [OPTIONS(S)]
Available options:
  -a  print all fs from mtab
  -h  print this message
  -g  size in Gio
  -G  size in Go
  -k  size in Kio
  -K  size in Ko
  -m  size in Mio
  -M  size in Mo
  -n  do not print header
  -s  sum the total usage
  -t  hide filesystem type
  -v  print program version
  -w  use a wider bar

Ce qui peut donner, en combinant plusieurs options (résultat de dfc -wags):

1
2
3
4
5
6
7
8
9
10
11
12
FILESYSTEM TYPE     USED (*)                                    FREE (-) %USED AVAILABLE   TOTAL MOUNTED ON
rootfs     rootfs   [*****************************---------------------]   57%     12.1G   27.9G /
/dev       devtmpfs [--------------------------------------------------]    0%      3.8G    3.8G /dev
run        tmpfs    [*-------------------------------------------------]    0%      3.8G    3.8G /run
/dev/sdc1  ext4     [*****************************---------------------]   57%     12.1G   27.9G /
shm        tmpfs    [*-------------------------------------------------]    0%      3.8G    3.8G /dev/shm
tmpfs      tmpfs    [*-------------------------------------------------]    0%      6.0G    6.0G /tmp
/dev/sda7  ext2     [********------------------------------------------]   16%      0.1G    0.1G /boot
/dev/sda3  ext4     [********************************------------------]   63%    128.7G  344.6G /home
/dev/sda5  reiserfs [***********************************---------------]   68%      4.0G   12.6G /var
/dev/sdb1  ext4     [*************************************-------------]   73%     81.3G  297.8G /mnt/Videos
SUM:                [*********************************-----------------]   65%    255.7G  728.2G

Pour les détails concernant l’utilisation, il suffit de consulter la manpage dfc(1).

Pour les archers, j’ai crée un paquet sur AUR ici. On retrouve également le paquet sur le dépôt archlinuxfr puisque je fais maintenant partie des mainteneurs.

Je profite de l’occasion pour prévenir les quelques personnes utilisant mon dépôt rolinh qu’il sera fermé puisque les paquets se trouvant actuellement dessus vont finir sur le dépôt archlinuxfr où je continuerais de les maintenir.

Pour ceux n’étant pas utilisateurs d’Archlinux mais qui sont quand même intéressés par dfc, il est toujours possible de l’installer manuellement. Pour cela, il suffit de télécharger la dernière archive contenant les sources (ici), de la décompresser, puis, depuis le répertoire obtenu, de lancer les commandes suivantes via le terminal: make pour le construire et make install (en root) pour l’installer (par défaut, il s’installe dans /usr/local).

Installation de QEMU/KVM geré par Libvirt sous Archlinux

Bonjour,
virtualisation

Un petit billet pour coucher sur l'écran la procédure d'installation de QEMU-KVM allié à une GUI virt-manager sous ArchLinux.

QEMU est un logiciel de virtualisation fonctionnant sous GNU/Linux qui permet d'émuler un ou plusieurs systèmes d'exploitations sur votre ordinateur hôte.

KVM est un fork de QEMU apportant le support du module KVM qui améliore sensiblement la vitesse de virtualisation. Même si dans cet article, nous allons utiliser à proprement parler le logiciel KVM, j'utiliserai quand même l’appellation QEMU/KVM.

D'abord, une petite vérification de la capacité de votre processeur à utiliser correctement le module KVM :

egrep '^flags.*(vmx|svm)' /proc/cpuinfo >/dev/null && echo OK || echo KO

Si vous avez OK, vous pouvez passer aux étapes suivantes, sinon il faudra vous contenter de QEMU tout seul.

Voici les paquets dont nous avons besoin et leur intérêts :

  • qemu-kvm : le logiciel qui va vous permettre d'émuler vos machines.
  • virt-manager : une GUI pour gérer vos machines virtuelles.
  • dnsmasq : Forwader DNS et serveur DHCP léger, indispensable pour fournir du réseau à vos machines émulées.
  • virtinst : CLI permettant de gérer le provisionning des machines virtuels.
  • libvirt : API pour dialoguer avec vos machines virtuelles (openvz,kvm,qemu,virtualbox,xen,etc..)

Maintenant, il suffit de les installer avec votre gestionnaire de paquet favoris :

yaourt -Sy qemu-kvm virt-manager dnsmasq virtinst libvirt

Afin de pouvoir utiliser notre application en tant qu'utilisateur, il est necessaire de vous mettre dans le groupe KVM :

sudo usermod gamoth -aG kvm

Pour ceux qui ont la chance de supporter le module KVM (cf ligne de commande plus haut), il est temps de le charger :

sudo modprobe -v kvm

Et selon la marque de votre processeur de charger également l'un des deux modules suivants :

sudo modprobe -v kvm_intel
sudo modprobe -v kvm_amd

Ensuite, il est necessaire de lancer le daemon vous permettant de communiquer avec vos machines virtuelles :

sudo /etc/rc.d/libvirtd start

Les paramétrages précédents ne sont valables que pour la session en cours. Aussi, pour éviter ces manipulations à chaque utilisation de votre solution de virtualisation, je vous conseille de modifier le rc.conf :

sudo nano /etc/rc.conf :
MODULES=(kvm kvm_amd ...)
DAEMONS=(libvirtd ...)

Ensuite, il vous suffit de lancer la commande pour pouvoir bénéficier de votre travail:

virt-manager

Pour plus d'information sur l'utilisation de l'outil en lui-même, je vous renvoie vers ce billet très complet de NicoLargo.

A tantôt tout le monde !

Quelques nouvelles

Cela fait près de deux mois que je n’ai pas écrit d’article. Néanmoins, ce blog est bien loin d’être mort. J’étais simplement passablement occupé entre mes examens universitaires et divers autres projets et occupations.

J’ai récemment apporté un léger changement à ce blog. Certains auront peut-être remarqué que la bulle au survol du lien vers le flux RSS affiche maintenant une information en français et que le champ de recherche en haut à droite comporte la mention “Rechercher…” et non plus “Search…”. J’avais omis ces détails lorsque j’avais déployé et traduit Octopress pour ce blog. Cependant, ce ne sont pas ici les seules modifications apportées. En effet, la recherche sur le site s’effectue maintenant par le biais de DuckDuckGo et non plus Google. Pourquoi cela? Et bien par respect pour votre vie privée. Vous n’êtes sans doutes pas sans savoir que Google est omniprésent sur le web est arrive à concentrer une quantité faramineuse de données sur vous et cela notamment via son moteur de recherche. Bref, je ne tiens pas à alimenter leur base de données de votre profil au travers de ce blog et c’est ce qui m’a poussé à effectuer ce changement. J’avais entendu parler de DuckDuckGo la première fois via LinuxFr. Dans un premier temps, j’ai simplement été intrigué puis SebSauvage est venu en remettre une couche qui a achevé de me convaincre de lui donner une chance. Cela fait donc plusieurs mois que je l’utilise et comme je l’ai trouvé convainquant, j’ai trouvé qu’il ferait un bon remplaçant à Google pour ce site.

Ceci dit, vous me direz que c’est aberrant de parler du respect de votre vie privée et de continuer d’utiliser Google Analytics. Inutile de vous dire que lui aussi va disparaitre et ce probablement au profit de Piwik. Seulement voilà, pour l’instant il ne me donne aucunes statistiques et je n’ai pas eu le temps de me pencher sur le problème afin de savoir pourquoi.

Dans un tout autre registre, j’ai mis en place un ChiliProject pour mes divers projets de programmation. Pour ceux n’étant pas au courant, ChiliProject est un fork au développement dynamique de Redmine qui se révèle être extrêmement simple à déployer (au contraire de ce dernier…). Il s’agit donc d’une plateforme complète comprenant notamment un visualiseur de dépôts (git dans mon cas), un wiki, une page de nouvelles, un bug tracker, etc. Bref, un outil vraiment complet pour gérer des projets que je vous invite à retrouver ici.

D’ailleurs, je partage cet outil avec mon ami Gilliek qui vient ce soir même de finir la version 1.0 de son projet de gestion de DVDs en mode web nommé MyDVD. Il s’agit d’une application Rails permettant de recueillir des informations à propos des films de sa DVDthèque (bandes-annonces, synopsis, etc.) et de les visionner dans un navigateur web grâce à HTML5. L’idée est donc de stocker ses films sur un ordinateur faisant office de serveur de films les rendant ainsi accessibles depuis n’importe quel appareil disposant d’un navigateur internet dans sa maison. Je précise maison car je doute que beaucoup de monde dispose d’une bande passante suffisante chez lui pour permettre le streaming sur internet. Néanmoins, ceci est bien évidemment possible si cette condition est remplie. Les prochains développement concerneront le support des langues (pour le moment, seul le français est disponible) et une fonction de recherche améliorée.

De mon côté, je profite également de ChiliProject pour ma bibliothèque de widgets pour Awesome (Precious), pour le gestionnaire de copies LinCopier qui a profité de l’occasion pour se débarrasser de SourceForge.Net et enfin pour Rubyckup, un outil de backups pour serveurs écrit en Ruby.

Mon Tint2

Avec mon Archbang (ArchLinux et Openbox) j'ai choisi d'utiliser tint2 en guise de panneau / barre des tâches, notamment pour sa capacité à gérer non seulement les bureaux multiples mais aussi mon double écran. J'ai installé la version svn disponible dans AUR qui permet l'utilisation de lanceurs.

Sans plus tarder en voici un aperçu (cliquez pour agrandir) :

Sur mon deuxième écran apparaît un panneau analogue, mais dépourvu de systray, dont les barres des tâches ne contiennent que les icônes des applications concernées par ce moniteur.

Grâce aux lanceurs j'ai pu bricoler quelques applets dont tint2 est actuellement dépourvu :

  • Un menu des applications favorites
  • Un menu emplacements
  • Une corbeille
  • Une icône pour afficher le bureau
  • Un terminal à la quake-like qui se cache dès qu'il perd le focus
  • Une icône pour quitter / se déconnecter

Considérations préalables sur la configuration de tint2.

La configuration de tint2 est contenue dans le fichier ~/.config/tint2/tint2rc. Il existe un utilitaire de configuration graphique (tintwizard) mais la version dont je dispose ne semble pas encore gérer les lanceurs. Quoiqu'il en soit vous trouverez sur le web de nombreux tutoriels et exemples de configuration, notamment sur le wiki du site de l'application.

Pour ceux qui voudraient en voir d'avantage voici un accès à mon tint2rc.

Considérations préalables sur les menus OpenBox.

Des menus applications et emplacements sont accessibles par un clic droit sur le bureau. Il est possible de "traverser" tint2 et de continuer à bénéficier de ces menus en fixant à 1 l'option wm_menu dans tint2rc. C'est particulièrement intéressant quand une application est maximisée.

Considérations préalables sur les lanceurs de tint2

Un lanceur dans le fichier tint2rc est un simple lien vers un fichier .desktop conforme à la norme freedesktop.org. Par exemple :

launcher_item_app = /home/vince/.local/share/applications/menuapp.desktop

Menu applications favorites

Plutôt que de saturer mon panneau de lanceurs j'ai regroupé mes applications favorites dans un menu créé avec myGtkMenu (disponible en version 1.3.6 dans AUR). Les menus sont stockés dans de simples fichiers texte que l'on créera en s'inspirant du fichier exemple /etc/mygtkmenu.conf.

Illustration :


Mon fichier de configuration - le fichier .desktop

Menu emplacement

L'idée est de récupérer les signets de Nautilus (avec les éventuelles icônes liées) ainsi que les périphériques montés dans mtab pour constituer, via un script bash, un menu affiché par myGtkMenu. Outre myGtkMenu ce script dépend de gvfs pour lire les metadata et récupérer les icônes rattachées aux dossiers avec Nautilus. Pour les utilisateurs de Thunar il est possible de faire la même chose en utilisant la commande tdbdump du paquet tdb-tools. Le fichier concerné est ~/.cache/Thunar/metafile.tdb.

Illustration:

Script menu emplacements - Le fichier .desktop

La corbeille

À la suite d'un bug décrit ici la gestion de la corbeille ne fonctionne plus correctement pour les périphériques externes. Ceci touche également Nautilus de telle sorte que l'action "Vider la corbeille" ne concerne en fait que le répertoire personnel.

En guise de mesure de contournement j'utilise les commandes trash-list et trash-empty du paquet trash-cli. Le script proposé ici était initialement inclus dans le script précédent (menu emplacements) mais la commande trash-list est assez longue à produire un résultat d'où un temps de latence d'au moins 1/2 seconde. J'ai donc préféré dissocier les deux actions.

Illustration :

À noter que l'icône en regard du menu "Vider la corbeille" change en fonction de l'état ce celle-ci (vide ou remplie) mais pas celle du lanceur tint2 (si quelqu'un pouvait me suggérer une solution...).

Le script corbeille - Le fichier .desktop

Afficher le bureau

Cette fonction est assurée par l'action ToggleShowDesktop d'Openbox, que l'on peut exécuter par une combinaison de touches mémorisée dans ~/.config/openbox/rc.xml. Chez moi c'est Super-L et d.
    <keybind key="W-d">
      <action name="ToggleShowDesktop"/>
    </keybind>
L'astuce (qui sera utilisée également pour le lanceur suivant) et de simuler la frappe clavier grâce à la commande xte du paquet xautomation (dépot community)
  Exec=xte "keydown Super_L" "key d" "keyup Super_L"

Le fichier .desktop

Un terminal intégré

Stjerm est un terminal léger façon quake-like qui apparaît à la simple pression d’une touche (paramétrable, F12 par défaut) et disparaît de même (ou quand il perd le focus) tout en continuant sa tâche. Il sait gérer les onglets et le plein écran et utilise un simple fichier texte (~/.Xdefaults) pour sa cofiguration par défaut (taille, position, bordure....). Stjerm intégré dans tint2, c'est de la balle : l'essayer c'est l'adopter !

Illustration :

Lancer le programme une fois configuré par autostart.sh et utiliser la même astuce xautomation que précédemment pour le lanceur dans tint2 :

Exec=xte "key F12"

Mon fichier de configuration de stjerm

Oblogout

Avec Archbang vient un script, fork de oblogout, tel qu'on le trouve dans Crunchbang (dépôt AUR). Il suffit donc de créer un .desktop contenant la commande
Exec=oblogout

Calendrier

Last but not least l'horloge de tint2 peut servir de lanceur. Et même de lanceur double puisque l'on peut affecter une action aussi bien au bouton droit qu'au bouton gauche. Pour ma part j'utilise osmo de la manière suivante :

clock_lclick_command = ~/.config/scripts/showosmo
Le script en question n'ayant pour seule fonction de refermer la fenêtre au lieu d'en ouvrir une deuxième si l'on reclique sur l'horloge. Le script :
#!/bin/bash
if [ ! $(pgrep -x osmo) ]; then
osmo &
else
killall osmo
fi

Illustration:
Calendrier

En conclusion (très provisoire)

Tout ceci reste grandement améliorable mais finalement... je n'en suis pas si loin de mon regretté panneau Gnome 2. Par certains aspects je trouve même ma solution actuelle supérieure. :-D