Mettre en place une seedbox automatisée
Publié le 12/01/2013 à 00:00
Plus moins vite tu codes, moins plus vite ça plante.
Publié le 12/01/2013 à 00:00
Publié le 23/06/2012 à 00:00
Publié le 10/06/2012 à 00:00
Publié le 14/04/2012 à 00:00
Publié le 03/02/2012 à 00:00
Publié le 17/01/2012 à 00:00
Voici les slides du talk que j'ai donné lors du Meetup Paris.rb du 12 janvier 2012.
Publié le 17/01/2012 à 00:00
Publié le 07/12/2011 à 00:00
Publié le 24/09/2011 à 00:00
Il y a quelques temps, j'avais besoin de lancer un script ruby avec cron. Le souci, c'est que sur mon serveur, tout est à base de rvm. De fait, cron ne sait pas trouver ruby puisque rvm est chargé par mon fichier .bashrc.
La petite astuce pour que ça marche, c'est de dire à cron de charger mon environnement pour ce script spécifiquement :
0 * * * * /bin/bash -l -c 'ruby mon_script.rb'
En clair, l'option -l permet de charger l'environnement bash et l'option -c
indique la commande à exécuter.
Publié le 19/09/2011 à 00:00
Git permet d'afficher différentes informations en couleur. Cela se fait dans le
fichier de configuration, ~/.gitconfig.
[color] ui = true
Une des commandes concernées est git-diff. Cette coloration est bien pratique
mais peut avoir ses limites. En effet, lorsque la différence sur une ligne se
joue à quelques caractères seulement, il peut être difficile de détecter les
modifications.
Lorem ipsum dolor sit amet, consectetur adipisicing elit tempor incididunt ut labore et dolore magna aliqua. - quis nostrud exercitation ullamco labaris nisi + quis nostrud exercitation ullamco laboris nisi consequat. Duis aute irure dolor in reprehenderit cillum dolore eu fugiat nulla pariatur. Excepteur non proident, sunt in culpa qui officia deserunt
Une petite astuce pour les voir plus précisément est l'utilisation de l'option
--word-diff :
git diff --word-diff=color
Voici le résultat obtenu :
Lorem ipsum dolor sit amet, consectetur adipisicing elit tempor incididunt ut labore et dolore magna aliqua. quis nostrud exercitation ullamco labaoris nisi consequat. Duis aute irure dolor in reprehenderit cillum dolore eu fugiat nulla pariatur. Excepteur non proident, sunt in culpa qui officia deserunt
L'option prend différentes valeurs qui peuvent être utiles selon les circonstances.
Publié le 08/08/2011 à 00:00
Publié le 20/06/2011 à 00:00
Publié le 02/06/2011 à 00:00
Publié le 21/04/2011 à 00:00
En Ruby, il existe une méthode bien pratique nommée inject.
Elle s'utilise de la manière suivante :
puts (0..10).inject(0) do |somme, x| somme += x end # => 55
Dans l'exemple précédent, on part d'une valeur de 0 que l'on modifie à chaque tour. Le code suivant est équivalent :
somme = 0 (0..10).each do |x| somme += x end puts somme # => 55
De manière classique, on peut s'en servire pour générer un tableau ou une table de hash de la manière suivante :
@articles.inject({}) do |hash, article| hash[article.title] = article.body hash end
EDIT: Dans ce cas précis, il est préférable d'utiliser la méthode
each_with_object comme ceci :
@articles.each_with_object({}) do |article, hash| hash[article.title] = article.body end
Une autre utilisation interessante, est avec les booléens :
@plugins.inject(true) do |keep_going, plugin| keep_going &= plugin.some_method end
On obtient donc en fin de parcours, true si tous les appels ont retourné
true ou false si au moins un appel a retourné false.
Dans le cas où on veut stoper l'appel à inject dés qu'un appel retourne false, on peut utiliser l'instruction break :
@plugins.inject(true) do |keep_going, plugin| keep_going &= plugin.some_method or break(keep_going) end
Cela permet de ne pas faire les appels suivants dés le premier retour négatif.
Publié le 30/01/2011 à 00:00
Un comportement plutôt gênant sous OS X est la création des fichiers ._
(point underscore). C'est souvent un problème quand on veut créer une
archive .tar.gz ou avec certains SCM.
Voici une solution pour empêcher leur création.
Dans votre .profile, ajoutez la ligne suivante :
export COPYFILE_DISABLE=true
Publié le 28/12/2010 à 00:00
Chaque fois que j'installe un shell sous Mac OS X et que je le règle par
défaut gràce à chsh, l'application Terminal refuse de se lancer et me dit :
Vous n'êtes pas autorisé à lancer cette application.
L'administrateur a donné à votre shell une valeur illégale.
Pour régler ce petit souci, il suffit d'ajouter le chemin vers votre shell dans
le fichier /etc/shells :
# /etc/shells # List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these shells. /usr/local/bin/bash # bash installe avec homebrew /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh
C'est une erreur que l'on ne rencontre pas lorsque l'on utilise un terminal comme iTerm 2...
Publié le 12/12/2010 à 00:00
Il arrive qu'on ait besoin d'utiliser la sortie d'une commande comme si c'était un fichier. Voici une petite astuce pour ne pas passer par un fichier temporaire.
diff <(ls /un/dossier/au/pif) <(ls /un/autre/dossier/au/pif)
Et voilà avec cette syntaxe on a la différence entre deux dossiers sans utiliser de fichiers temporaires.
Publié le 04/11/2010 à 00:00
Sous Snow Leopard, l'installation de la gem mysql n'est pas toujours simple. Voici ce que j'utilise, sachant que mon MySQL est installé via le DMG fourni sur le site officiel.
export ARCHFLAGS="-arch i386 -arch x86_64"; sudo gem install mysql -v2.7 --no-rdoc --no-ri -- \ --with-mysql-dir=/usr/local/mysql \ --with-mysql-config=/usr/local/mysql/bin/mysql_config
Publié le 10/10/2010 à 00:00
Il y a quelques jours j'ai réinstallé un Snow Leopard sur un Mac Mini.
Lorsque j'ai lancé iTerm et TextMate, la police Monaco que j'utilise dans les deux n'était pas tout à fait comme d'habitude, plus fine et moins agréable.
Cela vient d'un bug Snow Leopard qui ne reconnait pas toujours les LCD : il les voit comme des écrans CRT et désactive l'anti-aliasing sur les polices !
Pour régler ce souci, tapez simplement ceci dans une console :
defaults -currentHost write -globalDomain AppleFontSmoothing -int 2
La prochaine fois que vous lancerez iTerm ou TextMate, ça devrait être bon.
Publié le 01/10/2010 à 00:00
Publié le 25/07/2010 à 00:00
Publié le 10/07/2010 à 00:00
Depuis la version 1.5 de Subversion, la résolution des conflits se fait de façon
interactive lorsque l'on utilise svn update.
svn update
Conflict discovered in 'some/file/located/somewhere.rb'.
Select: (p) postpone, (df) diff-full, (e) edit,
(h) help for more options:
Personnellement, je ne supporte pas ce nouveau mode. Je préfère de loin faire un
update complet et corriger les conflits à posteriori.
Pour le faire de manière ponctuelle l'option --non-interactive permet
d'obtenir ce comportement.
svn update --non-interactive
Pour le faire de manière permanente, éditez votre ~/.subversion/config et
ajoutez la ligne suivante dans la section [miscellany] :
[miscellany] interactive-conflicts = no
Publié le 28/04/2010 à 00:00
Publié le 09/03/2010 à 00:00
J'ai eu l'occasion de me prendre un petit moment la tête aujourd'hui sur comment utiliser des feuilles de styles SASS au sein de thèmes dans une application Rails.
Pour la gestion des thèmes, j'ai utilisé themesupport_ qui permet de créer, pour chaque thème, un dossier ayant l'arborescence suivante :
un_theme ├── images | └── preview.png ├── javascripts ├── stylesheets ├── views └── about.markdown
Ce que je cherchais à faire était de pouvoir mettre des fichiers SASS dans le
dossier stylesheets, mais que les CSS compilées soient placées dans
public/stylesheets.
Le plus simple moyen que j'ai trouvé pour faire ça, est d'ajouter le script
suivant dans config/initializers/theme_sass.rb :
# :template_location est normalement une String, on la convertie donc en Array Sass::Plugin.options[:template_location] = [[Sass::Plugin.options[:template_location], Sass::Plugin.options[:css_location]]] # Pour chaque thème, on ajoute son dossier stylesheets à la liste des sources SASS Theme.find_all.map(&:name).each do |theme| Sass::Plugin.options[:template_location] << ["#{RAILS_ROOT}/themes/#{theme}/stylesheets", Sass::Plugin.options[:css_location]] end
Publié le 25/01/2010 à 00:00
Depuis quelques jours maintenant, Firefox 3.6 est sorti. Cette nouvelle version apporte un certain nombre de nouveautés, dont certaines qui peuvent être déroutantes (<troll>le nouveau système de skins uselessfull par exemple ?</troll>).
Bref ! Une nouveauté est l'ouverture des onglets relatifs (ouverture d'un lien de la page courante dans un onglet) à côté de l'onglet courant et non plus à la fin de la liste. Tout cela n'aurait rien de bien gênant si cette fonctionnalité pouvait être désactivée grâce à une simple case à cocher...
Voici un moyen simple de revenir à l'ancien fonctionnement.
Ouvrez l'URL about:config.
Dans la zone de filtre saisissez insertRelated cela devrait laisser seulement une entrée :

Double-cliquez dessus pour passer sa valeur à false.
C'est tout. Les nouveaux onglets devraient s'ouvrir maintenant en fin de liste.
EDIT: Je viens de trouver un lien avec quelques astuces supplémentaires
Publié le 01/01/2010 à 00:00
Publié le 01/01/2010 à 00:00
Publié le 28/12/2009 à 00:00
Dernièrement, lors de la copie de fichiers depuis le disque dur d'une amie, je me suis retrouvé avec de nombreux fichiers verrouillés. Verrouillés au sens OS X du terme.
Il est possible pour chaque fichier d'afficher ses infos et de décocher la case de verrouillage.
Mais lorsque cela concerne une centaine, ou un millier de fichiers, d'un coup, cocher une simple case peut devenir quelque peu fastidieux.
Pour effectuer cette action en ligne de commande, il suffit d'utiliser la ligne suivante :
chflags nouchg <fichiers>
Publié le 28/12/2009 à 00:00
Pour gérer l'upload de fichiers dans les applications Rails, une gem fréquemment utilisé est Paperclip. Récemment, lors du développement d'un projet, je me suis retrouvé confronté à un problème lors de l'envoie des fichiers. En effet, ça ne fonctionnait pas et je recevais un message d'erreur à chaque fois.

Après quelques recherches, j'ai fini par trouver que cette erreur venait du fait que mon application ne trouvait pas son chemin vers les outils d'ImageMagick dont Paperclip dépend au travers de Rmagick.
Pour résoudre ce problème, il suffit d'ajouter un initialiseur à l'application.
J'ai donc ajouté le fichier config/initializers/paperclip.rb contenant ceci :
Paperclip.options[:command_path] = '/usr/local/bin'
J'ai utilisé ce chemin car j'ai installé ImageMagick en utilisant Homebrew.
Publié le 21/11/2009 à 00:00
Publié le 14/11/2009 à 00:00
Lorsque l'on édite un fichier, il peut arriver qu'en plus de simples
modifications, certaines portions, voire le fichier entier, soient re-indentées.
Malheureusement, Subversion étant bête et discipliné, un svn diff montrera les
lignes modifiées mais également les lignes simplement indentées.
Cela peut devenir gênant lorsque, par exemple, tout le fichier s'en retrouve changé.
Pour ignorer ces différences d'espaces lors d'un diff, la commande à utiliser
est la suivante :
svn diff --extensions -bu
Publié le 14/11/2009 à 00:00
Si vous utilisez des fichiers dont le nom contient des accents sur un dépôt SVN, vous avez de grandes chances de rencontrer quelques soucis sous Mac, si vous avez installé Subversion avec MacPorts. Le problème vient de la différence de stockage des caractères unicode entre les plateformes Unix et OS X.
Voici comment résoudre ce problème. C'est très simple, il suffit d'installer une variante du port subversion.
port install subversion +unicode_path
Si tout s'est bien passé, vous ne devriez plus avoir de problèmes.
Publié le 27/09/2009 à 00:00
Lorsque l'on utilise un éditeur de texte particulier, on apprécie de pouvoir l'utiliser comme éditeur par défaut pour peu tout. Cela comprend également les messages de commit des outils tels que SVN ou Git.
Malheureusement, utiliser un éditeur graphique pour cela n'est pas toujours trivial.
La commande mate propose l'option -w qui permet de signifier que l'on veut attendre que TextMate en ait fini avec le fichier pour reprendre la main.
Il est vrai que TextMate intègre les fonctionnalités SVN et Git. Personnellement j'ai toujours préféré m'occuper de ces choses là en ligne de commande, chacun son truc...
Il y a plusieurs façons de dire à subversion d'utiliser tel ou tel éditeur, le
plus simple est de donner une valeur à la variable SVN_EDITOR :
export SVN_EDITOR="mate -w"
Pour rester dans l'utilisation habituelle de Git, on utilisera la commande suivante :
git config --global core.editor "mate -w"
Publié le 27/09/2009 à 00:00
Depuis plusieurs années maintenant, j'utilise pour lire mes mails le logiciel Thunderbird. Pratique et efficace, il n'en est pas moins doté de certains défauts plus que gênants...
L'un d'eux est que Thunderbird ne relève pas automatiquement les mails dans les sous dossiers. Cela devient très gênant lorsque l'on utilise un filtrage des messages à la source, autrement dit, côté serveur.
Il existe toutefois une solution. Il est possible de préciser, pour chaque dossier, que l'on souhaite que Thunderbird vérifie les nouveaux messages.
Pour ce faire, il suffit de faire un clic droit sur un dossier puis sur Propriétés....
Dans la fenêtre qui s'ouvre, cochez la case Surveillez les nouveaux messages dans ce dossier :

Voilà, à ce jour, le mieux que l'on puisse faire, mais c'est mieux que rien.
Publié le 05/08/2009 à 00:00
Publié le 05/04/2009 à 00:00
Voici deux petites astuces pour améliorer l'utilisation de ssh.
Pour obtenir la complétion des noms d'hôtes pour ssh et scp, il vous suffit d'installer le paquet bash-completion.
aptitude install bash-completion # Sous Debian et consorts brew install bash-completion # Sous Mac, avec homebrew port install bash-completion # Sous Mac, avec macport
Il est possible de créer des alias pour les hôtes sur lesquels on se ssh. Cela
se fait en éditant le fichier ~/.ssh/config :
Host somehost HostName some.host.with.long.name User someuser IdentityFile ~/.ssh/other_id_rsa
Ceci permet de se connecter à l'hôte some.host.with.long.name avec
l'utilisateur someuser en utilisant la clé ~/.ssh/other_id_rsa :
ssh somehost
Publié le 13/03/2009 à 00:00
Publié le 16/02/2009 à 00:00
Les diffs SVN peuvent parfois être longs et souvent pénibles à lire. Oui il y a
des + et des - mais ça ne fait pas tout. Un bon moyen de simplifier cette
lecture est l'utilisation de couleurs.
--break --
Un utilitaire bien sympathique, colordiff, permet justement de coloriser l'affichage des diffs. Packagé sous Debian ou disponible via Homebrew.
Voici comment l'utiliser pour les diffs SVN.
Pour une utilisation occasionnelle :
svn diff --diff-cmd colordiff
ou
svn diff | colordiff
Pour l'établir de manière globale, il suffit d'éditer le fichier
~/.subversion/config et d'ajouter dans la section [helpers] :
[helpers] diff-cmd = colordiff
EDIT: Pour afficher la sortie de colordiff dans less, il faut utiliser l'option
-R de ce dernier :
svn diff | less -R
Pour aller plus loin, un autre utilitaire permet de coloriser bien plus de choses, il s'agit de colorsvn.
Publié le 16/02/2009 à 00:00
Publié le 16/01/2009 à 00:00
En général, quand on me parle de remettre GRUB après une installation de Windows, la première chose à laquelle je pense est “bah tu mets un live-cd, tu montes ta partition /, tu te chroot et grub-install”.
En somme, ça se résume effectivement à ça. Mais, parfois, tout ne se passe pas
comme prévu. En effet, lors de ma dernière expérience, lorsque je montais la
partition / de ma Debian, aucune trace de hda ou sda. Rien du tout !
La raison, je ne la connais pas et, pour être honnête, je n'ai pas cherché
(création dynamique, quelque chose comme ça ?).
Bref, rien à faire, ils sont introuvables. Voici donc la solution dans ce cas :
Lancer le CD d'installation de Debian (marche probablement avec d'autre mais
c'est ce que j'ai fait donc...). Après le lancement, continuer jusqu'au moment
de la sélection du réseau, passer cette étape puis, un petit ALT-F2
(ou CTRL-ALT-F2), pour passer dans une console.
Ensuite, voici la marche à suivre (mon / se trouve dans /dev/sda6) :
$ mount /dev/sda6 /mnt
$ mount -o bind /dev /mnt/dev
$ mount -o bind /proc /mnt/proc
$ chroot /mnt
$ grub
Probing devices to guess BIOS drives. This may take a long time.
grub> root (hd0,5) # trouvé dans /boot/grub/menu.lst
grub> setup (hd0)
sortie de grub qui dit que tout s'est bien passé
grub> # CTRL+C pour sortir
$ update-grub
$ reboot
En ce qui me concerne, ça a fonctionné. Seul un dernier souci que j'ai eu, mes
partitions /home et de swap ont été échangées. Donc, au redémarrage, si un
problème se pose, pensez avant de tout envoyer valser à passer en console de
maintenance, à tester le montage de vos partitions pour voir ce qu'il y a dedans
et modifier votre /etc/fstab en conséquence...
Publié le 19/10/2008 à 00:00
Publié le 29/08/2008 à 00:00
Publié le 16/07/2008 à 00:00
Publié le 04/07/2008 à 00:00
Si, comme moi, vous êtes passe à la nouvelle version de VirtualBox, celle de
Sun, vous avez peut-être de petits problèmes avec vos anciennes VM Windows.
Voici comment résoudre le problème du BSoD juste après l'affichage du logo
Windows.
La manipulation est relativement simple. Il vous suffit d'aller des les réglages de votre VM. Puis, dans la partie General > Advanced > IDE Controller Type, de choisir PIIX3 a la place de PIIX4.

Et voilà le tour est joué !
Publié le 04/06/2008 à 00:00
Publié le 24/04/2008 à 00:00
Pendant un instant, j'ai crus qu'il n'était pas possible d'utiliser plusieurs fois un même fichier VDI avec VirtualBox.
En effet lorsque je copiais simplement une machine virtuelle, VirtualBox me disait que cette machine était déjà enregistrée.
Cette idée allant à l'encontre du principe même de la virtualisation, je me suis penché sur le problème.
Il se trouve que VirtualBox est livré avec un l'utilitaire VBoxManage qui
permet différentes actions sur les fichiers VDI dont le clonevdi qui justement
répond au besoin de copie des machines virtuelles.
La commande suivante permet de créer un clone de MachineEnEntree :
VBoxManage clonevdi MachineEnEntree.vdi MachineEnSortie.vdi
Publié le 24/04/2008 à 00:00
Si vous êtes intéressé par un man en couleurs, voici un moyen de l'obtenir.
Commencez par installer most. Most est un pager assez sympa dans le style de more et less.
sudo aptitude install most
Pour faire un simple test.
man -P most commande
Si ça vous plaît et que vous comptez le garder voici la marche à suivre.
sudo update-alternatives --config pager
Choisissez most
Si most vous plaît mais que les couleurs vous insupportent vous pouvez les
désactiver en réglant la variable d'environnement MOST_SWITCHES
(dans votre .bashrc / .zshrc par exemple)
export MOST_SWITCHES="-C"
Publié le 24/04/2008 à 00:00
Publié le 24/04/2008 à 00:00
Publié le 31/03/2008 à 00:00
Publié le 31/03/2008 à 00:00