09/05/2013

Enable write on NTFS for free (Mac OS X Lion / Mountain Lion)


1. Download NTFS-3G and install it.

2. Download MacFuse and install it.

3. Download a patch and install it.

Done.

01/05/2013

Grub2 - EFI - Asus P8H67-M Pro (Debian Sid 64b)


Une mise à jour récente avait cassé le système de boot de ma Debian (écran noir avec curseur clignotant). Ma carte mère est une Asus P8H67-M Pro avec un bios non mis à jour (version 0806).

Voici ce que j'ai fait pour retrouver un système de boot fonctionnel.

Mettre à jour le bios de la CM avec la version 3806

Mettre la rom sur un stick USB formaté en FAT et depuis le BIOS, flasher : menu ADVANCED MODE >> TOOLS >> ASUS EZ FLASH UTILITY (merci à Asus pour cet utilitaire très pratique accessible directement depuis le Bios).

Lien pour récupérer le nouveau Bios

Créer un stick USB avec une netinstall Debian (lien pour AMD64)


Depuis un Mac (machine de secours) :
$ diskutil list
(repérer le device correspondant au stick)
$ diskutil unmountDisk /dev/disk1
(modifier /dev/disk1 pour le bon device)
$ dd if=debian-testing-amd64-netinst.iso of=/dev/disk1 bs=512
(adapter le path pour if= et of=)
$ diskutil eject /dev/disk1

Booter sur le stick USB de la debian en mode UEFI


Important de booter le stick USB en UEFI sinon vous n'aurez pas accès à /sys/firmware/efi/vars y compris en levant le module (modprobe efivars)

- Choisir le "rescue mode" (Options avancées, mode de récupération [de mémoire :/]).
- Lancer un shell sur la partition correspondant à la racine du système (/dev/sdax)
# mount -va
(pour lever /boot/efi qui ne sera pas monté par défaut)
# update-grub
# grub-install
# efibootmgr -v
(devrait montrer "debian")

Au reboot, grub devrait être présent.

Post rapide en espérant que ça aidera des debianistes ayant le même problème.

20/07/2012

VIM : Aujourd'hui, c'est TIPEX !


Tip Ex Vim

Comment automatiser à la volée certaines actions en fonction de son contexte de travail.

On pourrait bien évidemment mettre ces commandes dans son .vimrc mais, à l'usage, il est bien plus pratique de modifier les commandes en fonction des circonstances. :m + flèche vers le haut donnera les précédents mappings et il suffit juste d'en modifier un pour l'usage du moment (donc très rapide).

 

13/07/2012

VIM : macro


Vim possède une notion de macro. Grâce aux macros, on enregistre des actions qu'on peut réutiliser autant de fois qu'on le souhaite.

Classiquement :

  • On enregistre une macro avec q
  • On arrête une macro avec q
  • On utilise une macro avec @q

Si on met la macro dans un registre, ce que j'ai pour habitude de faire, on peut avoir par exemple :

  • On enregistre la macro dans le registre a par qa
  • On arrête la macro par q
  • On utilise la macro par @a

Dans l'exemple vidéo, on voit qu'il y a 29 lignes en bas à droite, donc on sait qu'il y a 15 noms de fleurs. Une fois exécutée notre enregistrement, il reste donc 14 noms de fleurs à traiter d'où le 14@a qui apparait à l'écran.

12/07/2012

VIM : Copier/Coller Depuis/Vers une ressource externe


Vim possède 26 registres.

Le registre * communique avec le système. C'est celui qu'on va utiliser pour faire du copier/coller

On accède au contenu d'un registre Vim en utilisant "

Donc, pour accéder au registre *, on tape "*

Voici comment utiliser ce registre pour :

  • copier un texte provenant d'une source externe dans Vim
  • coller ailleurs un texte copié depuis Vim

Et si ça ne fonctionne pas avec votre version de Vim, il vous reste à faire ça ou utiliser :set paste. Un petit résumé de la soirée d'un ami mac-vimiste :) Cela aura au moins eu le mérite de réactiver un peu ce blog.

Pfff... j'ai écrit au moins pour 2 ans, là !

11/07/2012

Compiling Vim 7.3 - Mac OS X Lion


Préambule

Si vous utilisez RVM, passez votre version de ruby sur celle par défaut (livrée avec le système) le temps de la compilation de Vim (surtout avec cette daube de RVM !). Rbenv is more Unix way ! Try it ! Use it ! Eat it !

 

1. Compiler gettext (Mac OSX Lion)

Si les messages de Vim en français vous importent peu, sautez directement au 2.

% cd
% mkdir -p src/tarball && cd src
% curl http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.1.1.tar.gz -so tarball/!#:^:t
% tar xvzf !$
% cd !$:t:r:r
% curl https://trac.macports.org/export/79617/trunk/dports/devel/gettext/files/stpncpy.patch -so stpncpy.patch
% patch -p0 < !$
% ./configure --disable-dependency-tracking --disable-debug --without-included-gettext --without-included-glib --without-included-libcroco --without-included-libxml --without-emacs --without-git --without-cvs
% make
% sudo make install
% sudo rm -rf /usr/local/share/doc/gettext/examples/

 

2. Compiler Vim (Mac OSX Lion)

% cd
% mkdir -p src/tarball && cd src

Créer les 2 fichiers ci-dessous dans src

Fichier apply_patches_vim73 :

rep="vim73-patches";
total_patches=$(ls -al ../$rep/7.3.* | wc -l)
for i in $(seq $total_patches); do
  echo "Application du patch $i";
  patch -p0 < ../$rep/7.3.$(printf "%.3d" $i);
done

Fichier configuration_vim73

export CONF_OPT_X="--without-x"
export CONF_OPT_GUI="--disable-gui"
export CONF_OPT_PYTHON="--enable-pythoninterp"
export CONF_OPT_RUBY="--enable-rubyinterp"
export CONF_OPT_CSCOPE="--enable-cscope"
export CONF_OPT_MULTIBYTE="--enable-multibyte"
export CONF_OPT_COMPBY="--with-compiledby='Votre nom '"
% curl ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2 -so tarball/!#:^:t
% bzip2 -dc !$ | tar xvf -
% mkdir vim73-patches && cd !#:^
% ftp ftp://ftp.vim.org/pub/vim/patches/7.3/
      ftp> prompt
      ftp> mget *
      ftp> quit
% cd ../vim73
% sh ../apply_patches_vim73
% source ../configuration_vim73
% env|grep CONF
% cd src
% make distclean
% make
% sudo make install

 

Créer un lien vi

% cd /usr/local/bin
% sudo ln -s ./vim vi

 

Modifier son .bashrc

export PATH=/usr/local/bin:$PATH

 

Ressourcer son .bashrc

% . ~/.bashrc

 

Done.

 

06/06/2011

Crappy sound whith flash on x86_64 (64b) Debian Wheezy


Linus give us a solution here.

So, make your mymemcpy.so and prepend the launch of your browser with LD_PRELOAD=/path/to/mymemcpy.so

25/05/2011

Compile ruby 1.9.2 using RVM on Debian Wheezy


UPDATE 18/07/11 : seems no longer needed with ruby-1.9.2-p290

Thin needs openssl support but sslv2 is broken on Debian Wheezy.
So we need a patch to disable sslv2
I made it from this one :

diff --git a/ext/openssl/extconf.rb b/ext/openssl/extconf.rb
index 55e4142..1ab64fa 100644
--- a/ext/openssl/extconf.rb
+++ b/ext/openssl/extconf.rb
@@ -33,6 +33,14 @@ if with_config("debug") or enable_config("debug")
   end
 end
 
+## 
+## From openssl 1.0, SSLv2 becomes disable by default.
+## If you want to use SSLv2 in ruby, you need config with --enable-opensslv2.
+##
+if enable_config("opensslv2")
+  $defs << "-DENABLE_OPENSSLV2"
+end
+
 message "=== Checking for system dependent stuff... ===\n"
 have_library("nsl", "t_open")
 have_library("socket", "socket")
diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c
index eb7ae29..3155d81 100644
--- a/ext/openssl/ossl_ssl.c
+++ b/ext/openssl/ossl_ssl.c
@@ -107,9 +107,11 @@ struct {
     OSSL_SSL_METHOD_ENTRY(TLSv1),
     OSSL_SSL_METHOD_ENTRY(TLSv1_server),
     OSSL_SSL_METHOD_ENTRY(TLSv1_client),
+#if defined(ENABLE_OPENSSLV2)
     OSSL_SSL_METHOD_ENTRY(SSLv2),
     OSSL_SSL_METHOD_ENTRY(SSLv2_server),
     OSSL_SSL_METHOD_ENTRY(SSLv2_client),
+#endif
     OSSL_SSL_METHOD_ENTRY(SSLv3),
     OSSL_SSL_METHOD_ENTRY(SSLv3_server),
     OSSL_SSL_METHOD_ENTRY(SSLv3_client),
Use with :
rvm install 1.9.2 --patch path/to/my_patch

02/07/2010

irb and console rails vim powered


 

Utiliser vim avec l'irb ou la console Rails, ça vous tente ?

Pourquoi n'est-ce pas natif ? c'est tellement pratique voire indispensable qu'on est en droit de se poser la question :)


Installer 'interactive_editor'

gem install interactive_editor

 

Modifier son .irbrc

On ajoute un p'tit require à son .irbrc :

require 'rubygems' # si ligne absente de votre .irbrc
require 'interactive_editor'

et... c'est tout ! On peut enfin travailler confortablement avec l'irb ou une console Rails. Magique, je dis... :)

 

26/06/2010

vim and screen 256 colors - MacOS X Snow Leopard


Nature du problème

Je souhaite utiliser des thèmes 256 couleurs avec Vim et plus spécifiquement le thème railscasts que j'utilisais sous Linux (thème d'origine TextMate utilisé par Ryan Bates pour ses screencasts). Vim et iTerm sont capables d'utiliser des thèmes 256 couleurs. Concernant iTerm, il suffit de choisir 'xterm-256color' dans la section 'Terminal Profiles'. Quant à Vim, il suffit d'ajouter set t_Co=256 à son .vimrc.

Attention, le Terminal livré avec Leopard ne supporte toujours pas un mode 256 couleurs. De toute façon, vous avez tout à gagner à passer à iTerm si ce n'est pas déjà fait (full screen, profiles à gogo suivant l'activité, etc...)

Le réel problème vient de la version de screen livrée avec Leopard qui ne supporte pas le mode 256 couleurs. Evidemment, comme j'utilise à outrance 'screen', c'est plus qu'ennuyeux de se retrouver avec un Vim en mode dégradé (surtout lorsqu'on épluche du code Rails à gogo comme c'est mon cas depuis plus d'une semaine). J'ai donc craqué et pris le temps de recompiler 'screen' avec le support du mode 256 couleurs.


Choix des sources

A défaut de faire correctement son boulot pour les utilitaires et logiciels en ligne de commande, Apple propose, sans doute pour se faire pardonner, des pages sur les logiciels Open Source utilisés pour le Mac. Je suis donc parti des sources de 'screen' pour Mac OS X version 10.6.4.

Je récupère également les sources du 'screen' correspondant à la version '10.6.2' car il manque 3 patches à la version '10.6.4' pour qu'on puisse le compiler correctement en ligne de commande. Les autres patches sont inutiles car les fichiers précédemment concernés ont déjà été modifiés (ils sont __APPLE__ powered ^^).


Lignes de commande en mode Canal+

J'ai choisi d'utiliser des commandes qui paraitront un peu 'cryptées' pour la plupart. Compiler un programme n'a rien de passionnant, alors autant apporter un peu de fun 'bash' pour le faire. Il suffit de copier les lignes qui suivent en respectant l'ordre et sans rien taper de plus entre chaque commande pour que ça se passe parfaitement (copier-coller roxe des mamans ours). Une ligne est fortement exagérée (celle du 'cd') et j'avoue que je ne l'aurais jamais tapée si ce n'était pour l'exemple et par nostalgie (cette ligne me rappelle la belle époque du Obfuscated Perl Contest).


Compilation et installation de 'screen'

cd
mkdir -p src/tarball && cd !#:2:h
wget http://www.opensource.apple.com/tarballs/screen/screen-19.tar.gz -O tarball/!#:^:t
wget !*:gs/9/6
tar xvzf !$:gs/6/9
mkdir !$:t:r:r/patches
tar xvzf !w:$ -C !$ --strip-components=2 *.diff
cd !mk:$:h/!#:$:h:gs/-19/
patch -p0 < ../patches/Makefile.in.diff
patch -p0 < ../patches/config.h.in.diff
patch -p0 < ../patches/configure.diff
./configure --enable-locale --enable-telnet --enable-colors256 --enable-rxvt_osc --prefix=/usr/local --disable-dependency-tracing
make
sudo make install

Modification du .screenrc

Il suffit d'ajouter ces lignes à son .screenrc (comme indiqué dans l'en-tête de railscasts.vim)

attrcolor b ".I"
termcapinfo xterm-color 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
defbce "on"
term screen-256color-bce
xterm-color doit correspondre à la réponse de echo $TERM

Utiliser son nouveau 'screen'

Je ne préfère pas toucher à l'installation d'Apple car je n'ai pas envie qu'une prochaine mise à jour vienne me compliquer la vie ^^. Pour utiliser des programmes recompilés (et donc, déjà existants sur le système), j'opte généralement pour l'utilisation de mon ~/bin. Il n'existe pas par défaut, il faut donc le créer si vous ne l'avez pas déjà fait.

mkdir ~/bin

Depuis son ~/bin, on fait simplement un lien vers son 'screen'.

ln -s /usr/local/bin/screen-4.0.3 screen

Si ce n'est pas déjà fait, on ajoute enfin son ~/bin à son PATH (dans son .bashrc ou son .bash_profile) en s'assurant qu'il sera bien le premier à être interrogé.

if [ -d ~/bin ]; then
    export PATH=~/bin:$PATH
fi

which screen doit vous dire que le système utilisera bien le screen nouvellement installé.

That's all.