Le Blog du Geek Joyeux

Plus moins vite tu codes, moins plus vite ça plante

Annonce

Ce blog n’est plus actif. Retrouvez mes articles sur le Blog Tinci.

Installer la gem mysql sous Snow Leopard

| Commentaires

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.

1
2
3
4
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

Problème de police trop fine sous Snow Leopard

| Commentaires

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.

Travailler en case-sensitive sous Mac

| Commentaires

HFS+, le système de fichiers utilisé par Mac OS X depuis un bout de temps déjà est, par défaut, case-insensitive. Il est toutefois possible, aujourd’hui, de choisir d’utiliser une version case-sensitive lorsque l’on installe OS X.

La plupart du temps, ça n’est pas spécialement gênant. Quand il s’agit de travailler cela peut vite devenir handicapant.

Désactiver la résolution interactive des conflits dans Subversion

| Commentaires

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] :

1
2
[miscellany]
interactive-conflicts = no

Rails - Utiliser Sass avec theme_support

| Commentaires

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é theme_support 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 :

1
2
3
4
5
6
7
# :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

Continuer d’ouvrir ses onglets en fin de liste sous Firefox 3.6

| Commentaires

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 :

Firefox 3.6 about:config - insertRelatedTabsAfterCurrent

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

Utiliser GetText côté Javascript avec Rails

| Commentaires

En travaillant sur une petite application Rails, j’ai utilisé GetText pour l’internationalisation. Jusque là, pas de problème… Sauf au moment où j’ai voulu traduire un message côté client (autrement dit Javascript).

Je ne voulais pas faire d’appel AJAX pour chaque chaine à traduire.

Tout naturellement, j’ai cherché un plugin simple qui fasse le travail mais n’ai rien trouvé qui me convienne.

J’ai donc créé mon propre plugin, gettext_json.

Voici comment l’utiliser.

Utiliser Paperclip avec Rails sous Mac

| Commentaires

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.

Erreur Paperclip

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 :

1
Paperclip.options[:command_path] = '/usr/local/bin'

J’ai utilisé ce chemin car j’ai installé ImageMagick en utilisant Homebrew.

Deverouiller un groupe de fichiers sous Mac

| Commentaires

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>

SSH automatique sur une machine au travers d’une autre

| Commentaires

Parfois, pour se connecter en SSH sur une machine, il est nécessaire de passer au préalable par une passerelle.

Connexion au travers d'une autre machine

Cela implique, en général, le processus suivant :

localhost$ ssh user1@machine1
Welcome to machine1
machine1$ ssh user2@machine2
Welcome to machine2
machine2$

Cela peut être simplifié de plusieurs manières.

Problème des noms de fichiers avec accents dans Subversion sous OS X

| Commentaires

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.

Ignorer les changements d’espaces dans un diff SVN

| Commentaires

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

Utiliser TextMate pour les messages de commit SVN ou Git

| Commentaires

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…

Pour SVN

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 Git

Pour rester dans l’utilisation habituelle de Git, on utilisera la commande suivante :

$ git config --global core.editor "mate -w"

Relever automatiquement les mails des sous dossiers dans Thunderbird

| Commentaires

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 :

Thunderbird properties

Voilà, à ce jour, le mieux que l’on puisse faire, mais c’est mieux que rien.

Comment se passer de <div class=”clear”></div> ?

| Commentaires

Dans mon travail de tous les jours, en tant que développeur web, je me retrouve confronté au problème dit de la guillotine lorsque j’utilise des éléments en float.

Pour illustrer mes propos voici un petit exemple de code et son résultat :

Code xHTML :

1
2
3
4
<div id="container">
  <div class="content"></div>
  <div class="content"></div>
</div>

Code CSS :

1
2
3
4
5
6
7
8
9
10
11
12
#container {
  border:       1px solid #000000;
  padding:      10px;
}

.content {
  background:   #999;
  float:        left;
  height:       100px;
  width:        100px;
  margin-right: 10px;
}

Voici le résultat obtenu :

Float with problem

En effet, dans 99% des cas, ce n’était pas le but recherché.

ssh complétion et alias

| Commentaires

Voici deux petites astuces pour améliorer l’utilisation de ssh.

Complétion des noms d’hôtes

Pour obtenir la complétion des noms d’hôtes pour ssh et scp, il vous suffit d’installer le paquet bash-completion.

1
2
3
aptitude install bash-completion # Sous Debian et consorts
brew install bash-completion     # Sous Mac, avec homebrew
port install bash-completion     # Sous Mac, avec macport

Alias

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 :

~/.ssh/config
1
2
3
4
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

Changer facilement la configuration proxy de SVN

| Commentaires

Comme de nombreux développeurs, je suis très souvent amené à utiliser SVN (Subversion). Comme de nombreux développeurs toujours, je suis amené à partir en mission chez différents clients qui ont chacun leur proxy. Pour peu qu’on en ait déjà un au boulot ou chez soi, ça devient vite fatiguant de jongler entre ces différentes configurations.

Voici donc une petite astuce toute bête pour se rendre la vie facile.