VirtualBox : comment partager un dossier entre l’hôte et l’invité

Partager des données entre le système hôte et les systèmes invités est certainement l’une des premières fonctionnalités que vous voudrez mettre en place dans le cadre de la virtualisation.

S’il y a plusieurs moyens d’y arriver, le plus confortable, à long terme, est le partage d’un ou plusieurs répertoires.

Depuis la version 4 de VirtualBox, cette opération est devenue encore plus attractive. Une fois la machine virtuelle correctement configurée, on pourra ajouter ou supprimer des dossiers partagés dans l’interface de VirtualBox et ceux-cis seront montés automatiquement.

A titre d’exemple, cet article vous montre comment partager des dossiers entre votre système hôte (Linux ou Windows, peu importe) et Fedora 14, qui sera notre système invité. Si vous n’avez pas encore installé de machine virtuelle, vous pouvez lire mon article précédent sur le sujet : Virtualisation : les premiers pas.

Lire la suite »

Publicités

, , ,

3 Commentaires

Virtualisation : les premiers pas avec VirtualBox

Premier d’une série sur le pourquoi et le comment de la virtualisation, cet article vous montre étape par étape l’installation de Ubuntu 11.04 beta 1 dans le logiciel VirtualBox.

Que vous utilisiez Windows ou Linux pour suivre ce tutoriel n’a pas d’importance, VirtualBox fonctionne de manière identique sur les deux systèmes.

1. Installation de VirtualBox

Sous Windows, rendez-vous sur http://www.virtualbox.org/wiki/Downloads pour télécharger l’installeur de VirtualBox. Si vous êtes sous Linux, utilisez plutôt votre gestionnaire de package.

Lire la suite »

, , ,

Poster un commentaire

Refactoring: un exemple simple en Ruby

Bonjour,

Récemment, on m’a demandé « A quoi ça sert, le refactoring ? ». À cette question, ma réponse est toujours la même :

Une ligne de code, je l’écrit une fois, mais je la lit des dizaines de fois. Et peut-être que d’autres personnes la liront à leur tour des dizaines de fois. La logique veut donc qu’on juge la qualité d’un code à sa lecture.

Cet article est le premier d’une série consacrée au refactoring. Je prendrais des exemples concrets, tirés (ou adaptés) d’applications réelles et je montrerais comment en améliorer la lisibilité. La série ne sera pas centrée uniquement sur le langage Ruby. Il pourra y avoir de temps à autre des exemples en Java, Python, Php, etc.

L’exemple d’aujourd’hui est une classe très simple, qui explore la ligne de commande pour trouver quelle commande l’utilisateur souhaite lancer. Il est tiré de yabu, un utilitaire de sauvegarde pour linux.
Voici la classe CommandParser telle qu’elle existait:

Lire la suite »

, , ,

3 Commentaires

Coco, code coverage pour ruby 1.9

Un matin, je part à la recherche d’un outil de couverture de test pour un nouveau projet. Celui que j’utilise habituellement, Rcov ne fonctionne pas avec la version 1.9 de Ruby,  et son développement semble au point mort depuis quelques mois.

Je trouve rapidement plusieurs projets prometteurs, basé sur le fameux post de Aaron Patterson, mais aucun d’entre eux ne me satisfait totalement.

Ça y est, je suis énervé ! J’ai passé une demi-journée sur un truc qui aurait du prendre 5 minutes, et je n’ai toujours rien. Je décide donc d’écrire moi-même un outil de code coverage… On fait parfois des trucs bizarres sous le coup de l’énervement. Et une fois l’énervement dissipé, il faut se justifier, si possible avec une certaine dose de mauvaise foi :

  • Ruby 1.9 prend en charge la plus grosse partie du travail, l’outil se résumera à peu près à faire du rapport
  • Je pense que ça peut être fait rapidement (après tout, on parle de Ruby !)
  • Enfin, argument ultime, ça fait des années que je rêve de voir un outil de code coverage baptisé coco (et oui, ça me fait rire)

Lire la suite »

, ,

Poster un commentaire

En Ruby, toute déclaration renvoie une valeur

Admettons que vous écriviez un jeu. Vous voulez afficher un message, suivant que le joueur ai gagné ou perdu. Voici un script qui fait ça :


win = true

if win
  message = "Félicitation, vous avez gagné !"
else
  message = "Vous avez perdu..."
end

puts message

Ce genre de code est très courant. Il n’émouvra pas ceux qui ont l’habitude des langages dynamiques. Par contre, il fera peut-être tiquer les développeurs qui viennent d’un langage typé statiquement, comme Java, du fait que message n’est pas initialisé à une valeur connue avant le passage dans le if/else.

Quand on dit qu’en Ruby, toute déclaration renvoie une valeur, il faut lire : En Ruby, toute déclaration renvoie une valeur. Comme if est une déclaration, il y a de quoi contenter tout le monde:


win = true

message = if win
  "Félicitation, vous avez gagné !"
else
  "Vous avez perdu..."
end

puts message

,

Poster un commentaire

RSokoban 0.75.1

La dernière version est sortie. On peut maintenant jouer en mode graphique avec des niveaux d’une taille illimitée.

  • Tk GUI
    • niveau de taille illimitée
    • scrolling automatique
    • scrolling utilisateur
    • la fenêtre principale suit la taille du niveau
  • quelques bugs réparés

Vous trouverez les sources ici : https://github.com/lkdjiin/RSokoban

et le wiki là : https://github.com/lkdjiin/RSokoban/wiki

RSokoban 0.75.1

, , ,

Poster un commentaire

Documentation de la classe TkPhotoImage

Pour écrire des interfaces graphiques en Ruby, on a le choix : Shoes, FxRuby, wxRuby, ruby-GNOME2, RubyQt et j’en passe… Malgré cela, le seul toolkit inclus avec la majorité des distributions de Ruby (comme pour Python) est le mal-aimé Tcl/Tk.

J’avoue une tendresse particulière pour ce toolkit « ancestral », qui permet de réaliser des prototypes simplement et rapidement. Le grand problème de Tk avec Ruby, outre son look toujours affreux sur beaucoup de machines, c’est l’absence de documentation spécifique.

Pour un projet, j’avais besoin d’utiliser la classe TkPhotoImage, qui manipule des images couleurs. Regardez donc la page de documentation du binding Ruby consacrée à cette classe : http://ruby-doc.org/stdlib/libdoc/tk/rdoc/classes/TkPhotoImage.html
Pas une seule ligne ! Rien ! Nada !

Comme j’ai déjà utilisé Tk, soit avec Tcl, soit avec Python, ce n’est pas un problème insurmontable. En lisant la source de la classe TkPhotoImage et la documentation de Tcl/Tk sur le sujet (http://www.tcl.tk/man/tcl8.4/TkCmd/photo.htm), j’ai pu m’en sortir assez rapidement. Mais j’imagine facilement que quelqu’un n’ayant jamais utilisé Tk ne retrouvera pas ces petits.

Voici donc un début de documentation de la classe TkPhotoImage.
Lire la suite »

, ,

Poster un commentaire