Utiliser un trunk

Imaginons une seconde que vous utilisiez plusieurs VLAN dans votre réseau, et un gros trunk arrive sur votre interface (disons sur eth0). Dans notre hypothèse, vous voulez utilisez les VLAN 10 et 20 sur eth0. On va commencer par installer ce qu'il faut pour gérer nos VLAN :

aptitude install vlan

La seconde étape est de charger les modules pour le trunk :

modprobe 8021q

A partir de là, on va créer nos interfaces virtuelles :

vconfig add eth0 10
vconfig add eth0 20

Les interfaces sont créées (un ifconfig -a vous le confirmera), en eth0.10 et eth0.20. Libre à vous ensuite de rentrer votre configuration dans le /etc/network/interfaces.

Utiliser verbatim dans un document Beamer

Aujourd'hui, je me suis encore fait avoir : pour insérer un paragraphe en verbatim dans une frame (quand vous faites du LaTeX beamer), il est nécessaire d'ajouter l'option fragile à la frame. Exemple :

\begin{frame}[fragile]
  \frametitle{\color{white}\textbf{Migration v4 vers v6}}

  \begin{block}{Approche Comcast}
  \begin{verbatim}
-----------------
| IPv6          | DSlite    --
|         CGN ============ |  |
|               |           --
-----------------
  \end{verbatim}
  \end{block}

  \begin{block}{Approche FT}
  \begin{verbatim}
-----------------
|               | IPv6      -----------
|             ============ | NAT (A+P) |
|               |           -----------
-----------------
  \end{verbatim}
  \end{block}

\end{frame}

guiling.fr en IPv6

Ca faisait quelque temps que j'attendais ça ! Le serveur qui héberge (entre autres) ce blog est une Kimsufi d'OVH. Or le problème est qu'à la livraison, elles ont leur propre kernel 2.6.24.2-xxxx-std-ipv4-32, made in OVH. Pas de modules, rien, donc malheureusement pas d'IPv6.

FATAL: Could not load /lib/modules/2.6.24.2-xxxx-std-ipv4-32/modules.dep: No such file or directory

L'idée a donc été d'installer un vrai noyau Debian (en l'occurence le 2.6.24-etchnhalf.1-686), avec, dans l'ordre :

  1. installation de grub
  2. écrasement de lilo par grub
  3. installation de linux-image-2.6.24
  4. update-grub (au cas où)
  5. reboot

Et là ça marche ! En plus OVH a la gentillesse d'offrir un /64 (ce qui sera largement assez pour une seule machine).

Merci donc à Geekou pour le soutien moral et ce blog pour la marche à suivre.

Listing de code sous LaTeX

Souvent, quand on fait des docs LaTeX, le réflexe pour citer du code est souvent d'utiliser verbatim. Or moi, je suis pas vraiment un adepte de verbatim, c'est pas très configurable, pas très joli, ça gère extrêmement mal les sauts de lignes, bref, j'étais vraiment pas fan. Ce que je vous propose après cette longue interruption dans l'écriture de ce blog, c'est d'utiliser le package listings, qui est très configurable et qui rend relativement bien.

Les langages supportés

Le package supporte une bonne cinquantaine de langages différents, en voilà une rapide sélection :

  • C (ANSI, Handel, Objective, Sharp), C++ (ANSI, GNU, ISO, Visual), Caml
  • Java (empty, AspectJ)
  • Matlab, Scilab, R
  • Python, Perl, PHP
  • TeX (AlLaTeX, common, LaTeX, plain, primitive)
  • XML

La forme

Les options sont vraiment nombreuses. Par exemple, vous pouvez numéroter les lignes (ici toutes les 5 lignes) :

\lstset{numbers=left, numberstyle=\tiny, stepnumber=5, numbersep=5pt}

Vous pouvez également rendre visibles les espaces et les tabulations :

\lstset{showspaces=true,showtabs=true,tab=\rightarrowfill}

Vous pouvez entourer le code d'un rectangle :

\begin{lstlisting}[frame=single] ... \end{lstlisting}

Vous pouvez même ajouter un arrière-plan :

\lstset{backgroundcolor=\color{red}}

Il y a 60 pages de documentation, alors je vais dans la section qui suit vous donner un exemple d'utilisation que j'utilise et qui rend plutôt pas mal.

Exemple d'utilisation

\usepackage{listings}

\lstset{language=[Visual]C++,basicstyle=\small,frame=leftline,captionpos=b,linewidth=175mm,breaklines=true, commentstyle=\color{green},stringstyle=\color{red},identifierstyle=\ttfamily,keywordstyle=\color{blue}}

\begin{lstlisting}[caption={Construction simplifiée du graphe DirectShow}]
CoCreateInstance(CLSID_FilterGraph,NULL, CLSCTX_INPROC_SERVER,IID_IGraphBuilder, (void**) &pGraph);
hr = pGraph->AddSourceFilter (wFileAddress, L"Source", &pSrcFilter);
\end{lstlisting}

N'hésitez pas à apporter votre contribution en proposant des modèles sympathiques !

La pile de Prince de LU : reverse engineering

Il y a des jours où on se lève et on veut se poser plein de questions. Par exemple, ce week-end, dans un moment de loose pougnage de projet de conception Java, eh bien je n'ai pas cessé de grignoter tout et n'importe quoi, du jambon à la coppa, du crumble aux prunes à un pamplemousse, des gateaux à l'avoine aux Prince de LU. Et là, innocemment, je me suis dit qu'une pile de BNPrince (thx flo pour l'edit), c'était tout simplement une pile Last in, First out.

Et là, Jeb me dit que je n'ai aucune preuve du sens de remplissage du paquet de Prince. C'est bien embêtant parce que c'est tout simplement vrai. Malheureusement, sur Internet, je n'ai pas pu trouver d'infos sur la fabrication des biscuits.

Que sait-on sur l'emballage de Prince ?

  1. la première étape pour ouvrir les Prince est d'enlever le chapeau de l'emballage en plastique sur lequel sont imprimés les dessins et les valeurs nutritionnelles ;
  2. la deuxième étape consiste à enlever le chapeau de la feuille d'alu pour rendre les biscuits atteignables ;
  3. pour donner de la solidité au tube, les biscuits sont entourés d'une espèce de carton ondulé blanc ;
  4. à l'intérieur de l'ensemble, on trouve les précieux biscuits.

Plusieurs hypothèses sont possibles :

  • les biscuits sont insérés dans le tube en carton (donc le tube en carton est fait avant) - problème : le plastique extérieur est mis d'un coup, a priori après l'insertion des biscuits. Or il n'y a pas de fond solide (ni en haut, ni en bas).
  • les biscuits sont sur un tapis à l'horizontale, posés sur le carton ondulé, puis sur la feuille de papier plastique. Une fois la pile complète, les couches extérieures sont pressées pour entourer la pile de biscuit, puis un automate replie le papier plastique et le colle.

La deuxième hypothèse est la plus probable, mais dans ce cas, tous les biscuits sont mis en pile en même temps, ce qui élimine l'idée d'une pile LIFO.

Bien sûr, si vous avez d'autres hypothèses, je suis preneur. L'idée que la pile de Prince ne puisse pas illustrer mes piles Java me met très mal à l'aise, et je vais être obligé de noyer mon chagrin jusqu'à ce que la pile soit vide.

Bon appétit !

Migration vers dotclear !

Jusque là, j'utilisais pivot, un moteur de blog sans base de données... et puis, j'en ai eu marre, le système n'est pas très bien maintenu, donc j'ai décidé de passer sur dotclear, basé sur une BdD en sqlite.

J'essaierai de garder tous les anciens commentaires, et j'essaierai aussi de bien rerouter les adresses et les flux.

Changer l'owner d'un symlink

Changer via un chown l'owner et le groupe d'un symlink n'a pas vraiment de sens, puisque les permissions sont ignorées quand on suit le lien. Du coup, si on veut vraiment changer ceci (et ça ne marchera que sur les systèmes qui le permettent), on doit utiliser chown -h.

-h, --no-dereference affect each symbolic link instead of any referenced file (useful only on systems that can change the ownership of a symlink)

(Merci à skisoo pour cette idée !)

Vim en éditeur subversion

Il arrive souvent que nano se retrouve comme éditeur par défaut pour les commits svn. Pour y remédier, il suffit de changer la variable d'environnement SVN_EDITOR pour qu'elle utilise le bon éditeur (nano, emacs, vim...).

En bon utilisateur de vim, je vous propose ceci :

echo SVN_EDITOR=vim >> ~/.bashrc
. ./bashrc

Vulnérabilité dans le noyau Linux

Très intéressante news qu'on peut lire ici, je vous laisse lire les détails (Linus lui-même a résolu le problème !)...

A priori, un moyen simple de résoudre le problème est le suivant :

echo 65536 > /proc/sys/vm/mmap_min_addr

Exécuter bashrc au ssh

Une erreur rapportée par shivan aujourd'hui :

(10:39:12) shivan: pourquoi mon shell quand je débarque depuis un ssh est pas le même que quand je suis en local (10:40:26) shivan: ou plutôt, pourquoi mon .bashrc n'est pas utilisé quand je débarque en ssh

Voilà une solution : dans ~/.bash_profile (s'il n'existe pas, créez-le), insérer :

if [ [ -f .bashrc ] ]
then    
. ./.bashrc
fi
BASH_ENV=~./bashrc
export BASH_ENV

- page 1 de 4