Astuces
Geany.
Faciliter l'écriture de code répétitif
Dans le cadre du développement d'une application de test pour Android, je dois peupler une classe Questionnaire
en utilisant un patron identique à
addQuestion( // 2
new Question(0, "Avant de franchir une porte, le cariste doit-il :", 1,
new Choix("accélérer", false),
new Choix("klaxonner", true),
new Choix("ralentir", true)
));
Soit je me tape du copier-coller avec remplissage des champs une centaine de fois pour chaque questionnaire, soit j'utilise geany et son plugin lua pour qu'il me présente une fenêtre me permettant de compléter les champs servant à remplir le patron. Ayant près d'un millier de questions à créer, je vais économiser quelques milliers de gestes et m'arranger pour l'ordinateur travaille d'avantage à ma place, voici le script rapidement codé :
numero = 0
theme = 0
titre =""
points = 2
function bool2string(a)
if a == "0" then
return "false"
else
return "true"
end
end
repeat
local dlg=dialog.new("Question", {"Valider", "Annuler"})
dlg:text("numero", numero, "numéro de question")
dlg:text("theme", theme, "Theme")
dlg:text("points", points, "nombre de points")
dlg:text("titre", titre, "titre")
dlg:text("choixa", "", "choix A")
dlg:text("choixb", "", "choix B")
dlg:text("choixc", "", "choix C")
dlg:checkbox("correcta", false, "Choix A ok")
dlg:checkbox("correctb", false, "Choix B ok")
dlg:checkbox("correctc", false, "Choix C ok")
local button, results = dlg:run()
if button == 1 then
if results['choixc'] ~= nil then
a = string.format([[
addQuestion( // %d
new Question(%d, "%s", %s,
new Choix("%s", %s),
new Choix("%s", %s),
new Choix("%s", %s)
));]], results['numero'], results['theme'], results['titre'], results['points'],
results['choixa'], bool2string(results['correcta']),
results['choixb'], bool2string(results['correctb']),
results['choixc'], bool2string(results['correctc']))
else
a = string.format([[
addQuestion( // %d
new Question(%d, "%s", %s,
new Choix("%s", %s),
new Choix("%s", %s)
));]], results['numero'], results['theme'], results['titre'], results['points'],
results['choixa'], bool2string(results['correcta']),
results['choixb'], bool2string(results['correctb']))
end
geany.copy(a .. "\n")
geany.paste()
numero = results['numero'] + 1
theme = results['theme']
titre = results['titre']
points = results['points']
end
until button ~= 1
L'astuce principale consiste à copier le contenu généré dans le presse-papier puis à le coller dans le document ouvert, ce qui permet de placer le morceau de code à l'emplacement du curseur.
Virtual Box
Réduire la taille des images virtuelles
Les disques virtuel au format VDI de Virtual Box grandissent de façon dynamique en fonction des données qui y sont écrites. Désinstaller un programme ou supprimer des fichiers ne réduit pas la taille des images disque car des données restent écrites dans les blocs libérés.
Pour pouvoir réduire les images, il faut tout d'abord, dans la machine virtuelle, remplir de 0 les blocs libres avec SDelete de SysInternal avec la commande sdelete -z
. Puis, dans la machine hôte, on compacte l'image disque avec la commande VBoxManage modifymedium <nom_fichier>.vdi --compact
.
Installer un pack d'extension
Après avoir téléchargé le pack sur le site d'Oracle, il faut l'installer avec la commande sudo VBoxManage extpack install <tarball_extension>
.