fixes git merge shit

This commit is contained in:
Wxcafé (Clément Hertling) 2015-09-03 20:14:09 +02:00
parent 3f93c895de
commit 7dfdecec73
49 changed files with 0 additions and 12641 deletions

View File

@ -1,6 +0,0 @@
# A sample Gemfile
source "https://rubygems.org"
gem 'guard'
gem 'guard-livereload'
# gem "rails"

View File

@ -1,57 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
celluloid (0.16.0)
timers (~> 4.0.0)
coderay (1.1.0)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
eventmachine (1.0.4)
ffi (1.9.6)
formatador (0.2.5)
guard (2.11.1)
formatador (>= 0.2.4)
listen (~> 2.7)
lumberjack (~> 1.0)
nenv (~> 0.1)
notiffany (~> 0.0)
pry (>= 0.9.12)
shellany (~> 0.0)
thor (>= 0.18.1)
guard-livereload (2.4.0)
em-websocket (~> 0.5)
guard (~> 2.8)
multi_json (~> 1.8)
hitimes (1.2.2)
http_parser.rb (0.6.0)
listen (2.8.5)
celluloid (>= 0.15.2)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
lumberjack (1.0.9)
method_source (0.8.2)
multi_json (1.10.1)
nenv (0.2.0)
notiffany (0.0.3)
nenv (~> 0.1)
shellany (~> 0.0)
pry (0.10.1)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
slop (~> 3.4)
rb-fsevent (0.9.4)
rb-inotify (0.9.5)
ffi (>= 0.5.0)
shellany (0.0.1)
slop (3.6.0)
thor (0.19.1)
timers (4.0.1)
hitimes
PLATFORMS
ruby
DEPENDENCIES
guard
guard-livereload

View File

@ -1,34 +0,0 @@
# A sample Guardfile
# More info at https://github.com/guard/guard#readme
## Uncomment and set this to only include directories you want to watch
# directories %w(app lib config test spec feature)
## Uncomment to clear the screen before every task
# clearing :on
## Guard internally checks for changes in the Guardfile and exits.
## If you want Guard to automatically start up again, run guard in a
## shell loop, e.g.:
##
## $ while bundle exec guard; do echo "Restarting Guard..."; done
##
## Note: if you are using the `directories` clause above and you are not
## watching the project directory ('.'), the you will want to move the Guardfile
## to a watched dir and symlink it back, e.g.
#
# $ mkdir config
# $ mv Guardfile config/
# $ ln -s config/Guardfile .
#
# and, you'll have to watch "config/Guardfile" instead of "Guardfile"
guard 'livereload' do
watch(%r{app/views/.+\.(erb|haml|slim)$})
watch(%r{app/helpers/.+\.rb})
watch(%r{public/.+\.(css|js|html)})
watch(%r{config/locales/.+\.yml})
watch(%r{.+\.(css|js|html)})
# Rails Assets Pipeline
watch(%r{(app|vendor)(/assets/\w+/(.+\.(css|js|html|png|jpg))).*}) { |m| "/assets/#{m[3]}" }
end

Binary file not shown.

Binary file not shown.

View File

@ -1,262 +0,0 @@
Title: Archlinux made simple
Date: 2012-10-05 14:48
Author: Wxcafe
Category: OSes
Slug: archlinux-made-simple
Archlinux est réputée être une distribution Linux très complexe a
installer et a maintenir.
Je vais tenter ici de vous convaincre que ce n'est pas le cas, et
qu'elle peut se monter très intéressante et très instructive a installer
tout autant qu'a utiliser.
Il convient tout d'abord de rappeler a quels principes obéit Arch:
1. Le KISS : Keep It Simple and Stupid, Archlinux tente de faire des
programmes simples et utilisables par tous. Avec comme base de
simplicité les utilisateurs de LFS... Mais il n'empêche qu'avec un peu
de bonne volonté, la configuration n'est pas si compliquée!
2. La philosophie UNIX : chaque programme est prévu pour ne remplir
qu'une seule tâche. Bien entendu, cela ne concerne que les programmes
conçus pour sinsérer dans la philosophie UNIX, et les installations de
dépendances avec le gestionnaire de paquet d'Arch fonctionnent
superbement bien.
De plus, posons les bases d'Arch : le gestionnaire de paquets s'appelle
pacman, et les commandes de base sont :
- recherche d'un paquet :
pacman -Ss paquet
- installation d'un paquet :
sudo pacman -S paquet
- désinstallation d'un paquet :
sudo pacman -R paquet
- mise a jour de tous les paquets installés :
sudo pacman -Syu paquet
Archlinux est une distribution dite "rolling release", ce qui signifie
qu'il n'y a pas de version a proprement dites, et que les paquets se
mettent a jour en permanence, sans jamais changer la "version" d'Arch.
Il n'y a d'ailleurs qu'une seule version de l'installeur sur le site,
puisqu'une version plus ancienne n'aurait aucun sens.
Arch n'offre pas d'interface graphique par défaut : après avoir installé
le système, vous n'aurez qu'une invite de commande. Heureusement, je
vais ici vous guider a travers l'installation d'une interface graphique
(mate, le fork de gnome 2)
L'installation d'Arch se fait par le réseau, veillez a avoir une
connection WiFi ou filaire a proximité avant de suivre ce guide.
Ce guide utilise SystemV, alors qu'Arch va prochainement passer sous
systemd. N'ayant pas encore eu le temps dexpérimenter assez avec ce
dernier, je ferais un tutoriel pour passer votre Arch a systemd bientôt.
Bon, passons a l'explication de l'installation proprement dite :
Tout d'abord, téléchargeons l'iso d'arch la plus récente :
wget http://mir.archlinux.fr/iso/2012.09.07/archlinux-2012.09.07-dual.iso
Ensuite, gravons cette image sur un disque USB :
dd if=archlinux-2012.09.07-dual.iso of=/dev/sdX
Après reboot de la machine sur l'iso en question et choix de
l'architecture, nous sommes accueillis par un shell root.
La première chose a faire est de paramétrer le clavier :
loadkeys fr
Puis nous pouvons passer a l'installation proprement dite.
Partitionnement :
cfdisk # cfdisk est suffisamment clair pour ne pas nécessiter d'explications
formatage des partitions :
mkfs.ext4 /dev/sda1 # partition root
pacman -Syu btrfs-progs && mkfs.btrfs /dev/sda2 # partition home
mkswap /dev/sda3 && swapon /dev/sda3 # partition de swap
Montons les partitions nouvellement créées, puis installons le système :
mount /dev/sda1 /mnt
mkdir /mnt/home && mount /dev/sda2 /mnt/home
dhclient eth0 # si vous utilisez une connection filaire, sinon voire http://wiki.archlinux.fr/Wifi#Configuration
pacstrap /mnt base base-devel
genfstab -p /mnt > /mnt/etc/fstab
Allons prendre un café le temps que ça charge, puis installons les
quelques paquets nécessaires a notre installation et au premier
démarrage:
pacstrap /mnt syslinux btrfs-progs wireless_tools dhclient
Maintenant, passons sur notre install toute fraîche d'Arch :
arch-chroot /mnt bash
configurons les bases :
echo HOSTNAME > /etc/hostname
ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
date MMJJhhmmAAAA
hwclock --systohc
vim /etc/locale.gen # Décommentez les lignes correspondant au français : fr_FR.UTF-8 et fr_FR.ISO-8859-1
echo 'LANG="fr_FR.UTF-8"' > /etc/locale.conf
locale-gen
mkinitcpio -p linux
Enfin, vérifions que syslinux est correctement configuré :
vim /boot/syslinux/syslinux.cfg # il devrait y avoir "append root=/dev/sda1"
Si tout est correct, installons syslinux, et paramétrons un mot de passe
root :
syslinux-install_update /dev/sda -mia
passwd root
Et voila, l'installation est terminée! Plus qu'a quitter la session et a
redémarrer l'ordinateur!
exit
umount /mnt/home
umount /mnt
reboot
Fini!
Prenons une petite pause. La partie suivante de ce tutoriel consister en
un paramétrage des principaux services nécessaires a l'utilisation d'un
OS, disons, moyen :
- Installation de MATE, le gestionnaire de bureau (voir
[http://mate-desktop.org/][])
- Installation de sudo et de networkmanager pour faire fonctionner les
composants essentiels du système sans avoir a tout activer a la main a
chaque démarrage
- Installation de SLiM comme gestionnaire de login graphique, pour
présenter une interface plus accueillante que la console, et
configuration de celui-ci
- Installation des principaux logiciels utiles non inclus dans mate ni
base (yaourt, chromium, thunderbird, etc...).
Ce guide est bien sur optionnel, si vous souhaitez utiliser Arch avec un
gestionnaire de bureau autre que mate, ou sans, vous pouvez vous arrêter
ici.
Bon, reprenons.
Nous sommes donc sur une demande de mot de passe. Entrez donc le mot de
passe paramétré plus haut pour le root, puis retapez la commande
utilisée plus tôt pour vous connecter a internet.
Il convient d'ajouter le dépôt de MATE pour installer ce dernier, puis
d'effectuer l'action en question :
vim /etc/pacman.conf
Ici, ajoutez les lignes suivantes :
[mate]
Server = http://repo.mate-desktop.org/archlinux/$arch
Installons maintenant les paquets :
pacman -Syu mate mate-extras dbus dbus-core alsa networkmanager sudo
Ajoutons un compte utilisateur pour utiliser les composants du système
sans tout crasher a chaque fois :
useradd -g users -G wheel,audio,optical,lp,scanner,log,power,floppy,storage,games,video -m -s /bin/bash *votrenom*
passwd *votrenom*
su *votrenom*
Il faut maintenant éditer le fichier \~/.xinitrc pour préciser a X.org
ce que l'on veut utiliser :
echo "exec ck-launch-session mate-session" > ~/.xinitrc
Profitons en pour ajouter les démons système au lancement :
vim /etc/rc.conf
Ajoutez donc `dbus, alsa. hwclock` et `networkmanager` dans la section
DAEMONS (entre les parenthèses, après crond normalement)
DAEMONS=(syslog-ng network crond dbus alsa hwclock networkmanager)
Pour éviter un reboot, il est ici possible de faire un
su
Puis un
/etc/rc.d/dbus start && /etc/rc.d/alsa start && /etc/rc.d/networkmanager start
Sinon, il est possible de juste redémarrer.
Une fois cela fait, profitez de ce moment pour vous autoriser vous même
a utiliser sudo. Loggez vous en root, et :
vim /etc/sudoers
Décommentez la ligne qui commence par \# %wheel ALL=(ALL)
Sauvegardez le fichier, puis, après un `su *votrenom*`, tentez de faire
un sudo ls /
Normalement, vous devriez avoir un listing du dossier /
Bon, maintenant, pourquoi ne pas tenter de lancer MATE?
C'est simple comme bonjour :
startx
Et PAF! Voila un MATE desktop flambant neuf a configurer!
Avant de faire ça, retournez sur un TTY (CTRL+ALT+Fx), loggez vous,
puis installez SLiM (`sudo pacman -Syu slim`).
Configurons le:
echo "exec dbus-launch mate-session" > ~/.xinitrc && vim /etc/slim.conf
Éditez la ligne
"`sessions xfce4,icewm-session,wmaker,blackbox`" de facon a
ce qu'elle ressemble a "`sessions mate-session`"
Puis ajoutez slim dans /etc/rc.conf, dans la section DAEMONS.
Normalement, tout devrait fonctionner!
Ah oui, et pour installer thunderbird, firefox, chromium, etc...
sudo pacman -Syu chromium thunderbird xchat firefox rhythmbox pidgin transmission-gtk vlc
Voila! Et comme dirait [@Spartition][], c'est sale, mais qu'est-ce que c'est
bon!
A plus~
[@Spartition]: https://twitter.com/spartition
[http://mate-desktop.org/]: http://mate-desktop.org/

View File

@ -1,36 +0,0 @@
Title: Débuts, présentation, etc...
Date: 2012-08-18 20:27
Author: Wxcafe
Category: Notes
Slug: debuts-presentation-etc
Bonjour!
Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur
Twitter, mais aussi sur IRC (Je traîne pas mal sur
irc.freenode.net/\#\#nolife et \#debian-fr)
J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je
fais partie de ce genre de personne qui sont capables d'investir tout
leur temps et leur énergie a sintéresser a un sujet en particulier, et
qui ne peuvent pas vivre sans leurs passions, avec une petite différence
cependant, qui est que je mintéresse a plusieurs choses :
l'informatique, qui est un champ tellement large qu'on peut passer une
vie a apprendre des choses dessus, et plus particulièrement à
l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres
{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les
trolls seront a partir de maintenant indiqués avec le tag [tr]] du
libre, je préfère utiliser de l'open-source si c'est possible},
programmation en C, python et java, etc...) , mais aussi a
lélectronique.
Dans un tout autre registre, je mintéresse aussi
beaucoup aux différents aspects du féminisme et des égalités sexuelles
(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) ,
et a la culture dite "geek" en général.
Je tenterai de poster ici le plus souvent possible, mais j'ai de gros
problèmes en terme de régularité de post, donc ne vous inquiétez pas si
vous ne voyez rien pendant deux semaines.
Merci beaucoup de votre attention, et a bientôt!

View File

@ -1,84 +0,0 @@
Title: GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère
Date: 2012-08-22 20:33
Author: Wxcafe
Category: Teaching
Slug: gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere
GNU/Linux est un vaste et extraordinaire territoire technologique, mais
je ne vais pas m'attarder ici sur les aspects profondément techniques de
ce territoire pour faire plutôt une sorte d'introduction a ce qu'est
vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de
connaissances en informatique.
GNU/Linux, que jabrégerai ici en Linux pour plus de simplicité, est un
Système d'Exploitation. Un système d'exploitation est, pour simplifier,
un ensemble d'outils informatiques qui vous permettent d'utiliser votre
ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation
de système d'exploitation (Operating System en anglais) est OS. Les 4
principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et
Solaris. Les trois derniers sont issus d'un autre système, plus ancien,
nommé UNIX.
De ce fait, on pourrait penser que Linux remplace complètement Windows
une fois installé, et comprend une interface graphique, et toutes sortes
d'utilitaires permettant a l'utilisateur d'utiliser le système (sous
Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer.
Pour l'interface graphique, pensez a... Pensez que votre système affiche
autre chose que des lignes de commande.) Or non, une fois installé,
Linux en lui même ne vous afficherait aucune interface graphique, et
s'il est effectivement livré avec des utilitaires, ils ne sont que des
programmes en ligne de commande. Autant les utilisateurs avancés sauront
s'en servir, et pourront argumenter que c'est plus efficace ou plus
rapide, autant les utilisateurs basiques préfèrent une interface
graphique. Alors comment en obtenir une?
Ici, il convient de faire une précision importante. Si il n'existe
qu'une seule version de Windows, ou de Mac OS, il existe en fait
plusieurs centaines de "versions" différentes de Linux. Appelées
distributions, ces dernière sont développées par des groupes
complètement séparés, et se basent sur le fait que Linux soit
entièrement placé sous licence libre (ce qui leur permet de l'utiliser a
leur guise, a condition que leur travail soit lui aussi placé sous
licence libre). De ce fait, de nombreuses distributions existent et se
développent en parallèle. On peut ainsi citer [Debian][], qui est l'une
des distributions les plus importantes, ou encore [Ubuntu][], qui est
l'une des plus connues et des plus simples a utiliser.
Ainsi, ces distributions intègrent une interface graphique. Cependant,
grâce a la liberté dont bénéficient les développeurs sous Linux, il
existe de nombreuses interfaces graphiques différentes : [Unity][], la
nouvelle interface d'Ubuntu; [GNOME][] , une interface qui vise a la
simplicité; ou encore [KDE][], une interface utilisateur ressemblant a
Windows 7.
Ainsi, le choix astronomique de distributions Linux a bien un sens :
chacune d'entre elle intègre des outils différents. Par exemple, Debian
intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend
particulièrement stable. Ubuntu intègre Unity, ce qui en fait une
distribution particulièrement intuitive. Linux Mint intègre Cinnamon,
qui est une version dérivée de GNOME 3, ce qui permet encore une autre
expérience. Et Arch Linux n'intègre pas d'interface graphique du tout,
ce qui permet a l'utilisateur de choisir entre les multiples interfaces
existantes.
Ce qu'il est important de retenir de cela, c'est que Linux est un OS
complètement libre, ce qui signifie que n'importe qui peut modifier et
utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi,
Linux est un OS qui est véritablement créé par des passionnés, pour tous
et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué
a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus.
Cependant, Linux donne la possibilité a l'utilisateur de le rendre
affreusement complexe, mais aussi de le rendre adapté a ses besoins,
quels que soient ceux ci. Et c'est la que réside l'incroyable puissance
de ce Système d'Exploitation. Il est extraordinairement adaptable.
N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas
technophiles. Ils pourraient adorer, et peut être même le devenir :)
A bientôt!
[Debian]: http://debian.org
[Ubuntu]: http://ubuntu.com
[Unity]: unity.ubuntu.com
[GNOME]: gnome.org
[KDE]: http://kde.org/

View File

@ -1,158 +0,0 @@
Title: Introduction a bash en tant que language de programmation.
Date: 2012-09-08 18:15
Author: Wxcafe
Category: Programmation
Slug: introduction-a-bash-en-tant-que-language-de-programmation
Linterpréteur de commandes bash (Bourne Again SHell)
est possiblement le shell le plus connu, notamment grâce a son
intégration en tant que shell par défaut dans les distributions Linux
les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva -
Mageia, etc...).
Cependant, il n'est souvent connu qu'en tant quinterpréteur de
commande. Alors qu'en réalité, le bash est un langage de programmation
(presque) complet! Ainsi, il intègre les structures de contrôle
habituelles ( pour mémoire, les structures de contrôle comprennent les
conditions (les ifs), les boucles (les while), et les choix (les case),
entre autres.), et est donc ce que l'on pourrait appeler un langage de
script, interprété, de la même façon que python, a la difference près
qu'il contient un prompt (un système d'entrée de commande interactif)
bien plus complet et développé que python.
Cependant, les programmes en bash ne sont executables que dans un
environnement de type UNIX, et donc pas sous Windows (cygwin
(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous
windows. Il faut malgré tout convenir que cet environnement est bien
plus compliqué a manipuler, et globalement ne permet pas d'acceder a des
portages de qualité satisfaisante.)
Ainsi, il est possible de créer des fichiers .sh, contenant des
instructions bash mises a la suite (de la même façon qu'un script BATCH
Windows .bat), et faisant appel autant aux commandes internes de bash,
aussi bien que les commandes externes mises en place par les programmes
installés sur le système, exactement comme dans une invite de commande.
Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit
panda roux directement dans la boite magique, tandis qu'un if
[condition] suivi d'un then (quelque chose) lancera le fameux quelque
chose suscité si la condition est vérifiée. Un peu comme en C, quoi.
De cette façon, et avec quelques informations et connaissances, il est
facile de comprendre le fonctionnement de la programmation en bash.
Quelques exemples commentés:
#!/bin/bash
# La ligne du dessus est très importante, c'est elle qui dit a bash quel doit être
# l'interpreteur des commandes écrites dans ce script. Ici, on dit a bash d'interpréter
# lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire
# executer du python, par exemple, en mettant #!/usr/bin/python a la place.
echo "this is a test of bash as a simple script manager" # echo est une commande d'affichage de message.
echo "what's your name, user?"
read your_name # la commande read permet de demander a l'utilisateur de donner une
# information, stockée dans la variable en paramètre.
echo $your_name "is your name" # echo permet aussi d'afficher la valeur de variables.
# Ici, on renvoie la variable remplie précédemment, suivie d'un message.
exit # cet appel a exit n'est pas obligatoire, mais donne un aspect plus
# propre au code. Il ne quittera pas la session de terminal, cependant.
Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite
d'être clair quand aux capacités et a la simplicité du bash en tant que
language de programmation. Alors en effet, nous n'avons ici absolument
pas utilisé les capacités de bash en lui même, et n'avons fait que le
renvoyer a des programmes externes (sauf read, il est vrai). Voyons
maintenant la syntaxe de bash quand il s'agit d'utiliser les structures
de contrôle:
#!/bin/bash
echo "welcome to this second bash program. would you please kindly enter the name of the machine you're running this on?"
read host_name
if [ $host_name == $HOSTNAME ] ## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système.
then echo "you told the truth!"
fi ## le fi est la commande fermant le if, tout comme le EndIf en basic. C'est un peu vieillot, mais important en bash.
if [ $host_name != $HOSTNAME ] ## l'opérateur != est l'inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes.
then echo "you lied!"
fi
exit
Voila un petit programme permettant d'apprendre la syntaxe du if en
bash. comme vous pouvez le voir, le language est plutôt lite, et la
structure if n'est pas très difficile a prendre en main.
Passons maintenant au while:
#!/bin/bash
echo "what is your name?"
read name
while [ 1 < 10 ] ## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.
do echo "i love" $name
done
exit
Ce petit programme permet d'observer les bases de while (qui est la
boucle de base en bash).
Le troisième opérateur de bash est case. Voyons:
#!/bin/bash
echo "please enter a number between one and five"
read number
case $number in
1)
echo "the choosen number was one"
;;
2)
echo "the choosen number was two"
;;
3)
echo "the choosen number was three"
;;
4)
echo "the choosen number was four"
;;
5)
echo "the choosen number was five"
;;
*)
echo "this number is not correct"
;;
esac
exit
case est un opérateur plus complexe a utiliser a bon escient, et sert a
faire des ifs multiples sans avoir a taper des dizaines de lignes de
code.
(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre
que le code vérifie chacune des conditions : le 1) est validé si la
valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc..
le \*) désigne toutes les valeurs, et est donc validé si aucune autre
valeur n'a précédemment acceptée.
Quelques notions manquent ici:
- les nombres aléatoires sont générés par un appel a la variable
\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a
16 bits donc). il est possible de faire des invocations a des nombres
aléatoires plus grands, mais les méthodes permettant de faire cela sont
plus complexes, et je ne les aborderai donc pas ici.
- comme vous avez pu le constater, les variables sont désignées en tant
que telles par l'utilisation d'un symbole \$ au début de leur nom.
Ainsi, echo number renverra "number", tandis que echo \$number renverra
le résultat de la variable \$number.
être utilisées dans un programme bash.
- comme vous avez pu le constater, les commandes doivent tenir en
théorie en une ligne. Cependant, le caractère \\ permet de retourner a
la ligne en faisant considérer a bash qu'il s'agit de la même ligne.
Globalement, il faut admettre que bash n'a pas vocation a être un
langage de programmation extrêmement développé. Sans framework
graphique, avec peu de manières d'utiliser de grandes variables, ou
encore une gestion de la mémoire risible, bash n'a rien d'un langage de
développement professionnel.
Cependant, le simple fait qu'il soit considéré comme un langage de
programmation a part entière font de lui un langage de script d'une
puissance incontestable, et sa simplicité et sa grande popularité font
de lui un langage de choix pour apprendre la programmation simplement et
sans trop se prendre la tête.
J'espère que cet article aura été utile a certain-e-s, et je vous
souhaite bonne chance dans votre découverte de la programmation (n'allez
pas voir ceux qui font de l'orienté objet, c'est des méchants :3)

View File

@ -1,177 +0,0 @@
Title: La cryptographie avec PGP et principalement GnuPG
Date: 2012-11-19 00:36
Author: Wxcafe
Category: Tutoriel
Slug: la-cryptographie-avec-pgp-et-principalement-gnupg
PGP (pour [pretty good privacy][]) est un système de
chiffrement asymétrique (pour plus d'information sur le chiffrement
asymétrique, voir [ici][]) utilisant en général les algorithmes RSA
et/ou DSA, et pouvant servir a chiffrer tout fichier, mais aussi a
signer des emails. Le système de signature consiste a s'identifier en
tant que la personne que l'on est, en certifiant de son identité, et
repose sur un système dit de *Web of Trust*.
Ce concept de Web of Trust est simple: si je valide le code vous
identifiant (votre clé), en certifiant que vous êtes qui vous êtes et
que je vous connais, et que d'autres personnes m'ont déjà
personnellement validé, les autres utilisateurs seront enclins a croire
que vous êtes en effet la personne que vous prétendez être. Bien
entendu, les utilisateurs validant trop de clés rapportées comme fausses
voient la valeur de leurs signatures baissée, et toutes les clés signées
par ces utilisateurs voient leur crédibilité baisser.
Inversement, les "bons utilisateurs" voient la valeur de leurs
signatures augmentée, ce qui augmente la crédibilité des clés qu'ils ont
signées.
Ceci dit, un email peut être a la fois signé et chiffré, de façon a être
sûr, non seulement que lexpéditeur de l'email est bien celui qu'il dit
être, mais aussi que l'email n'a pas été modifié entre l'envoi et
la réception (en effet, avec un chiffrement de type RSA/DSA, une
modification du corps de l'email rend ce dernier illisible, la clé
publique ne  correspondant plus a la phrase de passe du message), ce qui
offre bien évidemment des avantages non négligeables dans un
environnement ou la protection des échanges est importante (soit a peu
près partout sur internet, si vous tenez a votre vie privée. Pensez a
[quitter Gmail][] aussi, par exemple).
Il est cependant a noter que les clés publiques sont généralement
situées sur un serveur de clés publiques, tel pgp.mit.edu ou encore
subkeys.pgp.net (certaines personnes préfèrent garder leur clés hors des
serveurs de clés publiques, craignant une compromission de ces serveurs.
Dans le cas d'utilisateurs normaux (c'est a dire n'échangeant pas de
secrets classés secret-défense par email), la protection offerte par les
serveurs de clé publiques est suffisante)
L'une des implémentations les plus connues et utilisées de PGP est sans
conteste GPG ([GNU Privacy Guard][]) , qui comme son nom l'indique fait
partie du projet GNU, et qui (`<troll>` de façon surprenante pour un
programme GNU`</troll>`) est extrêmement efficace et claire.
Après ces explications techniques, voici venue le
moment intéressant/utile, a savoir l'application. Le chiffrement et la
signature de mails doivent cependant attendre un petit peu, étant donné
qu'il vous faut d'abord créer votre clé et la placer sur un serveur de
clés publiques, de façon à ce que votre destinataire puisse vous
identifier lorsqu'il recevra le mail, mais aussi a configurer votre
client mail pour utiliser gpg (je baserai les explications de cet
article sur Thunderbird, mais des explications efficaces sont trouvables
facilement sur les interwebs).
Tout d'abord, générons une clé GPG :
gpg --gen-key
GPG va vous demander les méthodes de chiffrement que vous voulez
utiliser, le plus sur est de laisser la valeur par défaut. La question
suivante est de savoir quelle taille votre clé doit faire, il est
préférable de choisir la taille la plus importante possible (4096). GPG
veut ensuite savoir quand votre clé doit expirer. La méthode simple est
bien évidemment de ne jamais la faire expirer, il est cependant plus
intéressant dans une logique de sécurité de régler cette durée a six
mois/un an.
Des informations personnelles vous sont ensuite demandées,
concernant votre nom (mettez le vrai, tel qu'il apparaît sur votre carte
d'identité, si vous souhaitez utiliser votre véritable identité), votre
adresse mail (mettez la plus utilisée, vous pourrez en rajouter plus
tard), et un mot de passe pour la clé (utilisez un mot de passe
sécurisé!! Il est conseillé d'utiliser au moins 8 caractères, dont majuscules,
minuscules, caractères spéciaux et nombres (vous pouvez utiliser la
commande `makepasswd`, qui génère automatiquement un mot de
passe)
GPG va maintenant prendre un peu de temps pour générer le couple clé
publique/clé privée, vous devriez profiter de ce temps pour effectuer
des opérations autres sur votre ordinateur : taper des textes, lancer
des films, écouter de la musique... De façon à augmenter les chances
d'obtenir un nombre bien aléatoire (le générateur d'aléatoire se base
sur la RAM pour obtenir des bits au hasard)
Une fois cela fini, vous obtenez un couple clé publique/clé privée, que
vous ne pouvez pas visualiser entièrement pour l'instant. Il est
cependant possible (et recommandé) de les exporter pour les sauvegarder
via une commande:
gpg --armor --export --output=pubkey.gpg
pour la clé publique, et
gpg --armor --export-secret-keys --output=seckey.gpg
pour la clé privée. Il est possible et même souhaitable de copier ces
clés sur une clé USB, une carte SD, ou un autre support de stockage
résistant, de façon a avoir une solution de sauvegarde, au cas ou vous
perdiez ces clés sur ce PC.
Cela fait, listons les informations sur votre clé publique :
$ gpg --list-keys --fingerprint
pub 4096R/27D81AC8 2012-11-17
Key fingerprint = 6345 A91A FF89 97E0 13D0 96A9 9E2A 1917 27D8 1AC8
uid Clément Hertling (Wxcafe)
uid [jpeg image of size 14692]
sub 4096R/9ED7F77F 2012-11-17
La partie `pub` indique que c'est une clé publique, `4096R` indique que c'est
une clé RSA sur 4096 bits. La partie `27D81AC8` est
l'identifiant de la clé publique, `Key fingerprint = 6345 A91A FF89 97E0 13D0
96A9 9E2A 1917 27D8 1AC8` est appelé fingerprint de la clé. Les champs
`uid` sont des manières d'identifier la clé et la personne associée a
celle-ci, et enfin le champ `sub` est indicateur d'une subkey, système
uniquement pris en charge par GPG et non inclus dans les premières
versions de PGP, donc non-implémentées dans nombre de clients pgp.
Passons maintenant a la mise en place de cette clé publique sur un
serveur de clés : nous utiliserons ici le serveur pgp.mit.edu.
gpg --keyserver pgp.mit.edu --send-keys *ID de la clé a uploader*
Maintenant que votre clé publique a été uploadée, vous pouvez l'utiliser
pour signer et chiffrer vos emails!
Installons donc l'extension Enigmail pour Thunderbird, permettant de
chiffrer/signer vos emails de façon transparente. Il conviendra de
paramétrer cette extension, via le menu OpenPGP dans Thunderbird, puis
Setup Wizard (l'option entre Help et About OpenPGP). Normalement,
Enigmail détecte votre installation de gpg automatiquement, si cependant
ce n'était pas le cas, vous pouvez utiliser la clé exportée tout a
l'heure (pubkey.gpg) en l'important (import key from file).
Selon les options que vous avez utilisées, vos emails seront
automatiquement signés et/ou chiffrés a l'envoi. Gardez cependant a
l'esprit que si tout le monde peut lire les mails signés, il n'en est
pas de même pour les mails chiffrés, pour lesquels il est nécessaire de
posséder la clé publique du correspondant en question, et de posséder
soi même une clé privée, donc d'utiliser OpenPGP aussi.
Concernant les signatures de clés, elles fonctionnent de manière très
simple :
Vous devez télécharger la clé de votre correspondant, via un
gpg --keyserver pgp.mit.edu --search-keys *ID de la clé de votre correspondant*
(a noter que cette commande fonctionne aussi en cherchant une adresse
email ou un nom. Cependant, en cherchant via l'identifiant de la clé,
vous êtes sur de trouver votre correspondant. Globalement, l'email est
lui aussi assez sûr en terme de recherche de clés, tandis que le nom
donne rarement un résultat). L'étape suivante est de vérifier que votre
correspondant est bien la personne qui est spécifiée sur sa clé. Pour
cela, il convient d'avoir déjà vu physiquement cette personne et si
possible d'avoir vu une pièce d'identité lui appartenant, et d'avoir une
confirmation de cette personne que la clé que vous voyez lui appartient
bien.
Ceci fait, vous pouvez signer la clé via un
gpg --sign *ID de la clé a signer*
puis la renvoyer au serveur via
gpg --keyserver pgp.mit.edu --send-key *ID de la clé a signer*
Voila, la clé de votre correspondant est signée!
Ce tutoriel sur PGP/GPG est terminé, et votre sécurité est améliorée
grâce a cette superbe invention qu'est la cryptographie!
[pretty good privacy]: http://fr.wikipedia.org/wiki/Pretty_Good_Privacy
[ici]: http://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique
[quitter Gmail]: http://www.hauteresolution.net/pourquoi-je-vais-quitter-gmail/
[GNU Privacy Guard]: http://fr.wikipedia.org/wiki/GNU_Privacy_Guard

View File

@ -1,75 +0,0 @@
Title: La programmation expliquée simplement
Date: 2012-08-27 00:22
Author: Wxcafe
Category: Teaching
Slug: la-programmation-expliquee-simplement
Salut!
Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire
récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé
pas mal de temps assez occupé.
Enfin, après un certain temps a farfouiller au millieu des connecteurs
SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques
durs, je suis de retour pour un court article.
Du coup, je m'étais dit que j'allais reprendre sur le thème de
l'informatique expliquée au grand public, en tentant d'aller un peu plus
loin que la dernière fois sur le thème de la programmation
Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur.
Si a peu près tout le monde sait que "les ordinateurs, ils ne
comprennent que les 1 et les 0!", peu de gens savent comment cela
fonctionne en détail.
Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà
des notions de base en informatique. Ainsi, vous savez surement que les
ordinateurs fonctionnent avec des programmes, qui sont composés de
code.
Ainsi, il faut comprendre que le code (source) est "compilé" en un
fichier "binaire". Un fichier binaire est un fichier comprenant les
instructions telles quexécutées par le processeur, et donc absolument
illisible pour un humain.
La compilation est le processus qui transforme le code source en
binaire executable. Les binaires ont, sous Windows, l'extension .exe,
tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension
particulière.
Ceci étant dit, il faut comprendre que certains langages sont plus
proches que d'autres du langage processeur, les langages les plus
proches sont dits de "bas niveau". Les langages les plus éloignés sont
donc dits de haut niveau.
Par exemple, l'assembleur est l'un des languages de plus bas niveau,
tandis que python par exemple est un langage de plus haut niveau. Les
langages de haut niveau sont souvent bien plus simples a comprendre et a
apprendre que les langages de bas niveau
Ainsi, en C, un langage de niveau relativement bas, pour afficher
"hello world" sur l'écran, le code nécessaire est :
#include
void main() {
printf("hello world");
return 0;
}
le même programme en python s'écrit :
print "hello world"
et n'a pas besoin d'être compilé , puisqu'il peut être intepreté
directement.
Python utilise en effet un système similaire a Java en ayant un
interpréteur dit "runtime" ou "temps réel", qui interprète le programme
sans le compiler. Java utilise un système légèrement différent, puisque
le code a besoin d'être compilé, mais est interpreté par un interpréteur
et non par le processeur.
Cette méthode permet le fameux "code once, run everywhere", ce qui
signifie que le même code est exécutable sur quasiment tous les systèmes
d'exploitation (en fait, tous ceux sur lesquels linterpréteur est
disponible.)
Voila, je vous laisse sur le fonctionnement de Java et de Python, et je
vais me coucher.
A bientôt!

View File

@ -1,108 +0,0 @@
Title: La séparation des églises et de l'état, une idée qu'elle est bonne?
Date: 2012-12-13 03:08
Author: Wxcafe
Category: Ranting
Slug: la-separation-des-eglises-et-de-letat-une-idee-quelle-est-bonne
Aujourd'hui, et depuis 1901 (j'ai révisé mon histoire récemment), il
existe une loi dite de séparation des églises et de l'état, qui consiste
a faire en sorte que l'état n'ait rien a voir avec les differentes
églises, pour de sombres histoires d'indépendance et de laïcité.
(principes qui sont aujourd'hui en voie de disparition, mais ce n'est
pas le propos qui nous occupe ici). Cela dit, cette bonne idée
politique, si elle a évité a ses auteurs de nombreux tracas, et leur a
surement permis de conserver une tête en état de fonctionnement bien
reliée a leur colonne vertébrale, ne vous interesse que moyennement, et
vous voudriez retourner répondre a vos mails sur Gmail et micro-blogguer
(quel mot horrible...) sur twitter?
Ça tombe bien, vous abordez justement le sujet véritable de cet article
(non, mon blog n'est pas devenu un histoblog, désolé aux déçus...), a savoir
la centralisation qui se met progressivement en place sur internet depuis
quelques années : Twitter, Google, Facebook, Micro$oft, Apple, tous ces
acteurs du web (et pas que, pour certains...) ont commencé a prendre
pour manie de centraliser vos données : pour prendre un exemple simple,
si vous utilisez Gmail (qui depuis quelque temps, lit aussi vos mails
pour accorder la publicité, dites adieu a votre vie privée), vous avez
un compte Google Talk, probablement aussi un Google+.
L'outil le plus pratique aujourd'hui pour aggreger des flux RSS est
Google Reader, et vous l'utilisez aussi probablement. Votre téléphone
est un android? Ah, un Nexus? Vous avez donc toutes les applications
google installées, et Chrome mobile comme navigateur par défaut, qui est
synchronisé avec la version qui tourne sur votre PC (via les serveurs de
Google, bien sur).
Depuis peu, les recherches sur le moteur de recherche
sont elles aussi ajoutées a votre profil, enregistrées a jamais par
Google (qui n'est pas touchée, en tant que société américaine, par la
"loi des 10 ans" francaise.). Vous commencez a voir le truc? Non, ne
jetez pas ce telephone, enfin! (je refuse de rembourser tout smartphone
ayant été perdu a cause de cet article) J'ai pris ici comme exemple
Google, parce que c'est celui qui propose le plus de services, mais
Apple avec iCloud, iTunes et son iPhone fait pareil, tout comme M$ avec
WP8 et Skydrive.
Twitter et Facebook n'ont de rôle dans ce sujet qu'en ce que vous leur
fournissez des informations dont ils s'empressent de devenir seuls
propriétaires (cf les Conditions d'Utilisation de ces deux services),
puis de les revendre a des annonceurs faisant de la publicité
ciblée. Le problème est simple a apprehender, vous ne voulez pas que
l'un de ces services connaisse trop de choses sur vous (et ils recoupent
très bien les informations venant de sources differentes), car il est
évident qu'ils les vendent a des entreprises peu scrupuleuses quand
a leurs engagements de confidentialité, quand a leurs securité
aussi; mais surtout parce que depuis le 11 Septembre 2001 et le
Patriot Act, toute entreprise américaine **doit**fournir toutes ses
informations au gouvernement américain **sans aucune intervention d'un
juge, ou de quelque institution de controle que ce soit.**
Ce qui est, comme vous pouvez le comprendre, relativement
problématique. (pour ceux qui a ce point se disent "je n'ai rien a
cacher, donc je m'en fous si le gouvernement américain sait tout de
moi", je vous conseille d'aller lire [cet article][] de Jean Marc
Manach, plein de bon sens...) Pour éviter cela, vous avez plusieurs
possibilités: utiliser des services concurrents pour tout (Facebook
Mail, Skydrive, Twitter et Google Reader par exemple), tout en vous
souvenant que comme ces entreprises sont toutes américaines, le
gouvenrnement américain détient tout de même vos informations, et que ca
lui prendra juste un peu plus de temps.
Vous pouvez aussi n'utiliser que des entreprises francaises,
mais cela ne regle que le problème du Patriot Act, et pas celui de
la revente de vos données. Et puis essayez de trouver un service équivalent
a Google Reader et fourni par une entreprise française, on en reparlera.
Non, la véritable alternative, c'est d'héberger vos services vous
même, d'avoir votre propre serveur sur lequel vous possedez le plus
de services possibles, et d'utiliser des concurents ou des services
libres au maximum pour les autres, ceux qui ne sont pas distribuables
(par exemple, les cartes sont difficiles a mettre en commun,
or plusieurs alternatives existent: Google Maps, `<troll>`Apple
Maps`</troll>`, Bing Maps, OpenStreetMaps, etc...).
Beaucoup de ces services sont cependant très facilement
décentralisables, surement parce qu'ils ont a la base étés conçus comme
des services décentralisés. Ainsi les emails, le web, le chat (via XMPP)
par exemple sont basés sur un système décentralisé.
De plus, votre serveur peut vous servir a beaucoup d'autres des
choses que vous feriez habituellement sur votre ordinateur
personnel: conserver une présence sur IRC, compiler du code, faire
du rendu vidéo, etc... En bref, un serveur peut vous servir
a effectuer toutes les opérations que vous effectuez sur votre
ordinateur sans les inconvénients de la consommation éléctrique
ni du bruit, mais vous permet aussi de ne dépendre aucunement
d'une entreprise américaine, et cependant de disposer de tous les
services utiles offerts par ces dernières.
Un serveur peut de plus vous permettre de controller parfaitement
tous ces services, sans aucune limitation d'aucune sorte,
voire de vous créer une page web. Bien entendu, il est bien plus
utile d'avoir un serveur si vous avez aussi un nom de domaine.
Heureusement, ils sont peu chers et souvent fournis avec le serveur.
Dans de prochains articles, je vous expliquerai comment louer puis
configurer votre serveur pour qu'il serve de serveur mail (IMAP/SMTP),
web, base de données, et proxy. Cela dit, comme c'est un serveur sous
linux, vous pouvez l'utiliser pour a peu près n'importe quoi.
Voila, a bientôt!
[cet article]: http://www.internetactu.net/2009/03/12/la-vie-privee-un-probleme-de-vieux-cons/

View File

@ -1,44 +0,0 @@
Title: Le Quenya - Épisode ø
Date: 2012-09-18 19:07
Author: Wxcafe
Category: Language
Slug: le-quenya-episode-o
Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusquà il y
a peu...), le nom que donnait Tolkien au dialecte principal parlé par
les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des
Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte
avant de commencer cet article que l'une des œuvres les plus
impressionnantes de Tolkien, si ce n'est la plus grande, est
l'impressionnant travail linguistique passé sur les différentes langues
présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya,
la langue des nains, qui est appelé le khazalide, etc.
En effet, a contrario des "langues" développées dans d'autres œuvres littéraires
telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot
de français (ou d'anglais) a un mot de sa "langue", les langues de
l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des
racines logiques, des systèmes de grammaire et de conjugaison propres,
une logique inhérente dans la prononciation ou l'orthographe, et ainsi
de suite.
Un véritable rêve de linguiste donc, puisque ces langues sont
pratiquement entièrement documentées par Tolkien lui même (voir
l'appendice E du SdA, particulièrement instructif a ce sujet.)
J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster
ici des résumés des cours que je suis ( disponibles [ici][] , une
traduction en français est disponible [la][] en pdf ), et des infos ici
toutes les deux semaines.
Si ce sujet vous intéresse, le compte twitter @Quenya101 poste
régulièrement des informations sur le sujet, et pour plus d'infos sur le
sujet, vous pouvez en trouver [par ici][].
Et en tant que première leçon, vous pouvez apprendre que ce mot que vous
avez prononcé comme le Kenya tout le long de cet article se prononce en
fait [Kwenïa], ou bien Qwenya!
[ici]: http://folk.uib.no/hnohf/qcourse.htm
[la]: http://www.ambar-eldaron.com/telechargements/integraleshelge.pdf
[par ici]: olk.uib.no/hnohf/quenya.htm

View File

@ -1,94 +0,0 @@
Title: Les différentes couches d'un système d'exploitation
Date: 2012-09-06 23:29
Author: Wxcafe
Category: Teaching
Slug: les-differentes-couches-dun-systeme-dexploitation
Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques
années (plus ou moins, parce que j'ai toujours un Windows en dual boot,
principalement pour les jeux (possiblement plus pour longtemps, avec
l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou
moins bien mon système. Or il y a plusieurs choses a savoir sur les
systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est
le système de couches.
Un système d'exploitation (de type UNIX, \<troll\>enfin un vrai système quoi.
\</troll\>) incorpore plusieurs systèmes de couches.
Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique,
c'est a dire que tous les composants sont intégrés au kernel. Ce qui
signifie que rien ne peut être ajouté au noyau sans recompiler celui ci.
Or, quand on sait que le noyau comprend entre autres les drivers du
matériel et des systèmes de fichier, cela peut poser des problèmes quand
a la taille du kernel et a la licence libre de ce dernier.
Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui
signifie que des modules peuvent être chargé a tout moment en cours
dexécution, ce qui permet l'utilisation de nouveaux systèmes de
fichiers a chaud, ou l'insertion de matériel et l'installation de
drivers sans interrompre lexécution du système (Windows utilise un
système de fausse installation de drivers pour le matériel externe, et
un système de pré-installation des drivers pour les périphériques dits
"plug and play")
Après le noyau intervient le système. Or, au tous premiers instants du
boot, les systèmes GNU/Linux utilisent un système permettant de limiter
l'utilisation de ressources systèmes si elles ne sont pas nécessaires,
et incorpore ainsi un système dit de "runlevels"
Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce
runlevel permet de tester le bon démarrage du système sans avoir a
effectuer de manipulation pour le ré-éteindre
Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté
étant donné que ce runlevel donne accès a un système en étant
automatiquement loggé en tant que root, avec tous les autres
utilisateurs désactivés, de même que tous les systèmes de réseaux
Le runlevel 2 est appelé mode multi user, et vous mets en face d'un
système classique. en ligne de commande, mais avec tous les systèmes de
réseau désactivés.
Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux
activés.
Le runlevel 4 n'est pas officiellement défini, et est censé être
activable en fonction des besoins de l'utilisateur. Sur la plupart des
distributions grand public, ce runlevel est lié au...
Runlevel 5! Multi-user, networking, with working GUI! c'est le système
tel que vous le connaissez, avec l'interface graphique et le système de
login graphique.
Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine
quand il devient le runlevel courant.
(Il est a noter que Debian, et donc toutes les distribs qui en sont
dérivées, ne font pas de distinction entre les differents runlevels du 2
au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login
et une interface graphique, et un mode réseau fonctionnel, bref avec des
fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)
Il est possible de changer de runlevel grâce a la commande runlevel
(oui, c'est évident...)
Les systèmes Linux utilisent aussi un système dit de SandBox , qui en
informatique est un système permettant d'isoler les processus les uns
des autres. Ainsi, la pile réseau, qui est le système auquel les
différents processus envoient les différents paquets qui doivent sortir
de la machine , et qui redistribue ces paquets, est isolée du reste du
système, en cela qu'aucun des autres processus ne peuvent modifier cette
pile hors du runlevel 1 ou 2.
De la même façon, le navigateur chrom/ium fait fonctionner tous les
onglets, ainsi que toutes les extensions, dans des processus différents.
Certaines distributions linux implémentent un système de cette sorte
pour toutes les applications, ou seulement pour certaines. ainsi Chakra
Linux a un système d'installation d'applications dans des disques
virtuels, ce qui permet une sécurité totale du processus.
Voila, j'espère vous en avoir appris un peu sur le fonctionnement des
différentes couches de linux, et j'espère que cet article vous poussera
a tester un peu votre système et a vous amuser avec les différents
runlevels

View File

@ -1,123 +0,0 @@
Title: Les systèmes de fichiers
Date: 2012-09-25 10:28
Author: Wxcafe
Category: Teaching
Slug: les-systemes-de-fichiers
Un système de fichiers. Vous en avez surement déjà entendu parlé si vous
avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous
connaissez surement NTFS, EXT4, ou encore FAT32.
Ces différents noms désignent en effet des systèmes de fichiers. Mais
qu'est-ce qu'un système de fichiers?
Pour comprendre cela, il faut déjà savoir ce qu'est exactement un
fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la
plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio
([kibioctet][]), en fonction du système de fichier utilisé.), qui est
donc composé de bits, interprétés différemment en fonction du type de
fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il
n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent,
ou il commence ni où il s'arrête (je schématise un peu, mais c'est
l'idée).
Ainsi, le système de fichier donne un cadre et un standard à
l'arborescence des fichiers. Par exemple, le système de fichier ext4
utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de
disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio
et mesurer la taille des fichiers en blocs de cette façon. Les systèmes
de fichiers nécessitent l'inclusion de drivers dans le noyau pour
pouvoir être pris en compte.
Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs,
reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu
près tout type de partition récente.
Il convient de bien faire la différence entre le système de fichier et
l'arborescence des fichiers. Si l'arborescence des fichiers est en fait
une entité virtuelle englobant la racine / et tous les fichiers et
dossiers contenus dedans, le système de fichier permet a votre système
GNU/Linux de distinguer les différents fichiers composants cette
arborescence.
Détaillons maintenant les types de fichiers les plus répandus:
- FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table,
soit la définition d'un système de fichier), remplissent leur rôle le
plus simplement possible. Ne permettant (historiquement) que des noms de
8 caractères (plus extension de trois caractères), ni chiffrement, ni
système de distinction d'utilisateurs (DOS étant un système
mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32,
utlisants respectivement des blocs de 16 et 32 Kio.
- NTFS :. Le NTFS (pour New Technology File System, rapport a Windows
NT) est un système de fichier qui est apparu avec Windows XP, et qui
était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a
FAT différentes capacités dont le chiffrement, les liens symboliques, la
compression et les quotas pour les volumes, permettant de limiter la
taille maximum occupée dans une partition.
- ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012.
Ne différant pas énormément de NTFS, je le mentionne principalement
parce qu'il est prévu qu'il soit le défaut pour Windows 8.
Il apporte principalement la redondance, c'est a dire que chaque
fichier possède une somme de contrôle en 64 bits stockée dans un fichier
séparé pour éviter les corruption de disque.
- Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers
les plus utilisés sous linux pour le grand public. (Je traiterai ici
d'ext4, puisque c'est le plus récent.) Il dispose de toutes les
fonctions que l'on peut attendre d'un système de fichiers moderne, ni
plus ni moins. Ainsi, ext4 est un système de fichiers journalisé,
acceptant les capacités jusquà 1 Exioctet, et utilise l'allocation dite
"par extent", ce qui signifie que la création d'un fichier réserve
automatiquement les zones contiguës de façon a réduire la fragmentation.
- ReiserFS : ce système de fichiers, créé par le (légèrement mégalo)
programmeur Hans Reiser, est a retenir pour avoir été le premier système
de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des
4 milliards. Le but de ce système est de créer un système polyvalent, a
la fois système de fichiers et base de donnée (de part sa grande
capacité en terme de nombre de fichiers et de l'utilisation d'un
journal.)
- Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi
l'allocation par extent, mais possède de plus un système de
sous-volumes, qui permet daccéder a plusieurs arborescences de fichiers
montées en même temps (système pratique et utile pour faire des
snapshots de systèmes.). Il permet aussi de redimensionner a chaud la
taille des partitions, en les agrandissant ou en les rétrécissant, est
compatible avec [LVM][], a un système de checking intégré (btrfsck), et
utilise un algorithme de compression appelé LZ4, qui accélère les accès
aux fichiers compressés d'environ 30% par rapport a LZO, le système
utilisé dans ext4.
- HFS+ : le système de fichier présent sur tous les macs a des capacités
relativement standards, et ressemble énormément a l'ext3. Il supporte
cependant les liens directs vers les dossiers, fonction rare sur les
systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau
dans les années a venir
- ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux
et \*BSD, est, tel Btrfs, a la fois un système de fichier et un
remplaçant/compatible avec LVM, C'est un système de fichiers conçu
principalement pour les serveurs, et il intègre ainsi un système de
redondance des données pour éviter les corruptions, un mode RAID-Z
(apparenté au RAID5), des checks dintégrité en continu, des snapshots,
etc...
Comme on a pu le voir, les systèmes de fichiers disponibles sont
légions. Cependant, le plus adapté a Linux et a une utilisation grand
public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier
n'est pas aujourd'hui proposé par défaut sur les distributions les plus
utilisées, au profit de l'ext4, qui commence a accuser son âge...
Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au
fonctionnement du système, sont en fait de première importance, et ce
choix ne devrait pas être laissé au hasard, et être mis a jour
régulièrement (pour éviter les failles de sécurité...)
Bon courage, et bon choix pour votre prochain système.
[kibioctet]: http://fr.wikipedia.org/wiki/Kibioctet#Multiples_normalis.C3.A9s
[LVM]: http://fr.wikipedia.org/wiki/LVM

View File

@ -1,81 +0,0 @@
Title: L'informatique a l'école
Date: 2012-10-15 20:34
Author: Wxcafe
Category: Ranting
Slug: linformatique-a-lecole
Après avoir lu [cet article][] paru sur écrans.fr, et au vu des
nombreuses réflexions que j'ai eu sur ce sujet au cours des années, je
commence a me demander si la réponse logique ne serait pas d'enseigner
les bases de l'informatique (bases délectronique, de programmation et
de logique formelle) dès le collège.
En effet, l'exemple qui me revient toujours est celui des technoprêtres
de warhammer 40 000, dans un univers ou la technologie est ritualisée et
incomprise même des plus savants, qui se contentent de reproduire ce qui
existe, et parfois par chance de retrouver un schéma explicatif lisible
par une machine, et qu'ils ne comprennent pas eux mêmes, ou toute
technologie est ointe d'onguents sacrés, entourée d'encens avant d'être
péniblement actionnée par des assistants ne comprenant rien a cette
technologie (ayant lu [Hackers - Heroes of the Computer Revolution][] de
Steven Levy, c'est l'ambiance que l'on retrouve quand l'auteur décrit
l'ambiance près des machines IBM au MIT, au début de l'ouvrage), et il
me semble que de plus en plus la société se rapproche de cela.
Cette culture de lingénierie, qui existait beaucoup lors des débuts de
l'informatique (telle que décrite par exemple par Steve Wozniak dans son
livre [iWoz][]) disparait pour laisser place a une culture de la
consommation et de l'utilisation de contenus existants, et même a une
certaine peur de la compréhension de la technologie. Ceux qui s'y
intéressent sont considérés comme marginaux (combien de hackers créent
des outils sur lesquels seront construits tous les systèmes du siècle a
venir, tels des Dennis Ritchie en puissance? Combien d'entre eux ne sont
pas intégrés a la société dite "normale"?), et on peut souvent observer
les réactions de peur que lancent les actions des hackers, ne serait-ce
que dans les journaux (combien de journaux 'mainstream' ont-ils parlés
des hackers en bien, c'est a dire tels qu'ils sont réellement, depuis
les années 80?) ou a la télévision.
Ainsi, la culture et la connaissance de ces appareils que
sont les ordinateurs, qui aujourd'hui se trouvent du fond de nos
poches a dans l'espace en passant par lintérieur des pacemakers
jusquà être une composante indispensable de la société, se perdent et
rendent ainsi la compréhension de ces appareils impossible (j'ai eu
la désagréable surprise récemment de voir un camarade de classe
me poser ingénument la question "Ah, mais en fait, quand tu installes
Linux, ça change le fond d'écran et les icônes?". Au-delà du niveau,
la misère de cette question est que cette personne n'avait probablement
aucune idée de la façon dont fonctionnait son ordinateur, a part
pour le fond d'écran en question et pour les fameuses icônes.) pour
le grand public, et cet évolution crée de fait une sorte d'oligarchie de
techno-comprenants, seuls capables de manier et de créer la technologie.
C'est pour cela qu'il me semble intéressant, important, peut être même
requis, d'inclure au programme du collège puis du lycée des cours
délectronique et d'informatique tels que décrits plus haut, de façon a
ce que les élèves comprennent le monde qui les entoure. Car c'est la le
but du cycle scolaire secondaire, me semble-t-il, et non pas de former
des futurs travailleurs. Sinon, pourquoi y aurait-il des cours de
musique, d'arts plastiques, ou encore de philosophie? Si le but du cycle
secondaire est bien d'ouvrir l'esprit des élèves sur le monde et sur ce
qui les entoure, alors les cours sur l'informatique s'imposent comme une
évidence, puisque ceux-ci nous entourent aujourd'hui bien plus que quoi
que soit d'autre...
Ces cours seraient susceptibles de sinsérer en un mélange entre des
cours de technologie (qui aujourd'hui sont bien plus orientés physique
et machines-outils qu'informatique ou électronique, alors que la
technologie d'aujourd'hui et vraisemblablement de demain aussi est
l'informatique) et de physique, pour le côté électronique, et de façon a
donner enfin aux cours de physique un intérêt quelconque, sortir au delà
de la théorie et de l'abstraction complète que sont actuellement ces
cours et passer un peu dans la réalisation, avec des arduinos par
exemple.
Vous aussi, intéressez vous a cela, de façon a ce que les jeunes ne
finissent pas par ne rien comprendre a ce qui est aujourd'hui l'une des
composante les plus importantes du monde tel qu'il est programmé.
[cet article]: http://t.co/5PTfe6zu
[Hackers - Heroes of the Computer Revolution]: http://en.wikipedia.org/wiki/Hackers:_Heroes_of_the_Computer_Revolution
[iWoz]: http://en.wikipedia.org/wiki/IWoz

View File

@ -1,34 +0,0 @@
Title: Update a propos du blog
Date: 2012-09-18 16:57
Author: Wxcafe
Category: Notes
Slug: update-a-propos-du-blog
Bonsoir! Un petit post pour faire un peu le point sur ce blog.
Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais
que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y
avoir un tantinet réfléchi, ceci est du a deux points principaux :
- Tout d'abord, le manque d'inspiration, tout simplement. C'est assez
compliqué de trouver des sujets intéressants liés a l'informatique, et
qui méritent un article. Je vous invite d'ailleurs a me suggérer des
sujets via les commentaires ou twitter ([@Wxcafe][])
- Ensuite, le délai de 8 jours est trop court pour me permettre de faire
les recherches nécessaires, tout en manageant mes cours et mon temps
libre.
A cause de cela, j'ai pris la décision de changer le rythme de parution
des articles a un \*minimum\* d'un post tous les 10 jours. Bien entendu,
si j'ai de l'inspiration en trop, plus de posts sont envisageables.
Voila. A part ca, je tiens a vous remercier de me lire (c'est assez
étonnant de voir ca...), et je précise que je vais ajouter une page
About Me, qui bien entendu rassemblera des informations sur moi, ma vie,
mon oeuvre :P
Ceci dit, je vais bosser un peu sur le prochain article.
A plus tard!
[@Wxcafe]: https://twitter.com/wxcafe

View File

@ -1,1271 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Wxcafé - Wxcafe</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/archlinux-made-simple/">Archlinux made simple</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-10-05T14:48:00+02:00">
<i class="icon-calendar"></i> Fri 05 October 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/"><i class="icon-folder-open"></i>OSes</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Archlinux est réputée être une distribution Linux très complexe a
installer et a maintenir.</p>
<p>Je vais tenter ici de vous convaincre que ce n'est pas le cas, et
qu'elle peut se monter très intéressante et très instructive a installer
tout autant qu'a utiliser.</p>
<p>Il convient tout d'abord de rappeler a quels principes obéit Arch:</p>
<ol>
<li>
<p>Le KISS : Keep It Simple and Stupid, Archlinux tente de faire des
programmes simples et utilisables par tous. Avec comme base de
simplicité les utilisateurs de LFS... Mais il n'empêche qu'avec un peu
de bonne volonté, la configuration n'est pas si compliquée!</p>
</li>
<li>
<p>La philosophie UNIX : chaque programme est prévu pour ne remplir
qu'une seule tâche. Bien entendu, cela ne concerne que les programmes
conçus pour sinsérer dans la philosophie UNIX, et les installations de
dépendances avec le gestionnaire de paquet d'Arch fonctionnent
superbement bien.</p>
</li>
</ol>
<p>De plus, posons les bases d'Arch : le gestionnaire de paquets s'appelle
pacman, et les commandes de base sont :</p>
<ul>
<li>
<p>recherche d'un paquet :</p>
<div class="highlight"><pre><span class="n">pacman</span> <span class="o">-</span><span class="n">Ss</span> <span class="n">paquet</span>
</pre></div>
</li>
<li>
<p>installation d'un paquet :</p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">paquet</span>
</pre></div>
</li>
<li>
<p>désinstallation d'un paquet :</p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">R</span> <span class="n">paquet</span>
</pre></div>
</li>
<li>
<p>mise a jour de tous les paquets installés :</p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">Syu</span> <span class="n">paquet</span>
</pre></div>
</li>
</ul>
<p>Archlinux est une distribution dite "rolling release", ce qui signifie
qu'il n'y a pas de version a proprement dites, et que les paquets se
mettent a jour en permanence, sans jamais changer la "version" d'Arch.
Il n'y a d'ailleurs qu'une seule version de l'installeur sur le site,
puisqu'une version plus ancienne n'aurait aucun sens.</p>
<p>Arch n'offre pas d'interface graphique par défaut : après avoir installé
le système, vous n'aurez qu'une invite de commande. Heureusement, je
vais ici vous guider a travers l'installation d'une interface graphique
(mate, le fork de gnome 2)</p>
<p>L'installation d'Arch se fait par le réseau, veillez a avoir une
connection WiFi ou filaire a proximité avant de suivre ce guide.</p>
<p>Ce guide utilise SystemV, alors qu'Arch va prochainement passer sous
systemd. N'ayant pas encore eu le temps dexpérimenter assez avec ce
dernier, je ferais un tutoriel pour passer votre Arch a systemd bientôt.</p>
<p>Bon, passons a l'explication de l'installation proprement dite :</p>
<p>Tout d'abord, téléchargeons l'iso d'arch la plus récente :</p>
<div class="highlight"><pre><span class="n">wget</span> <span class="n">http</span><span class="o">:</span><span class="c1">//mir.archlinux.fr/iso/2012.09.07/archlinux-2012.09.07-dual.iso</span>
</pre></div>
<p>Ensuite, gravons cette image sur un disque USB :</p>
<div class="highlight"><pre><span class="n">dd</span> <span class="k">if</span><span class="o">=</span><span class="n">archlinux</span><span class="o">-</span><span class="mf">2012.09.07</span><span class="o">-</span><span class="n">dual</span><span class="p">.</span><span class="n">iso</span> <span class="n">of</span><span class="o">=/</span><span class="n">dev</span><span class="o">/</span><span class="n">sdX</span>
</pre></div>
<p>Après reboot de la machine sur l'iso en question et choix de
l'architecture, nous sommes accueillis par un shell root.</p>
<p>La première chose a faire est de paramétrer le clavier :</p>
<div class="highlight"><pre><span class="n">loadkeys</span> <span class="n">fr</span>
</pre></div>
<p>Puis nous pouvons passer a l'installation proprement dite.
Partitionnement :</p>
<div class="highlight"><pre><span class="n">cfdisk</span> <span class="err">#</span> <span class="n">cfdisk</span> <span class="n">est</span> <span class="n">suffisamment</span> <span class="n">clair</span> <span class="n">pour</span> <span class="n">ne</span> <span class="n">pas</span> <span class="n">n</span><span class="err">é</span><span class="n">cessiter</span> <span class="n">d</span><span class="err">&#39;</span><span class="n">explications</span>
</pre></div>
<p>formatage des partitions :</p>
<div class="highlight"><pre><span class="n">mkfs</span><span class="p">.</span><span class="n">ext4</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda1</span> <span class="err">#</span> <span class="n">partition</span> <span class="n">root</span>
<span class="n">pacman</span> <span class="o">-</span><span class="n">Syu</span> <span class="n">btrfs</span><span class="o">-</span><span class="n">progs</span> <span class="o">&amp;&amp;</span> <span class="n">mkfs</span><span class="p">.</span><span class="n">btrfs</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda2</span> <span class="err">#</span> <span class="n">partition</span> <span class="n">home</span>
<span class="n">mkswap</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda3</span> <span class="o">&amp;&amp;</span> <span class="n">swapon</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda3</span> <span class="err">#</span> <span class="n">partition</span> <span class="n">de</span> <span class="n">swap</span>
</pre></div>
<p>Montons les partitions nouvellement créées, puis installons le système :</p>
<div class="highlight"><pre><span class="n">mount</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda1</span> <span class="o">/</span><span class="n">mnt</span>
<span class="n">mkdir</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">home</span> <span class="o">&amp;&amp;</span> <span class="n">mount</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda2</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">home</span>
<span class="n">dhclient</span> <span class="n">eth0</span> <span class="err">#</span> <span class="n">si</span> <span class="n">vous</span> <span class="n">utilisez</span> <span class="n">une</span> <span class="n">connection</span> <span class="n">filaire</span><span class="p">,</span> <span class="n">sinon</span> <span class="n">voire</span> <span class="n">http</span><span class="o">:</span><span class="c1">//wiki.archlinux.fr/Wifi#Configuration</span>
<span class="n">pacstrap</span> <span class="o">/</span><span class="n">mnt</span> <span class="n">base</span> <span class="n">base</span><span class="o">-</span><span class="n">devel</span>
<span class="n">genfstab</span> <span class="o">-</span><span class="n">p</span> <span class="o">/</span><span class="n">mnt</span> <span class="o">&gt;</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">fstab</span>
</pre></div>
<p>Allons prendre un café le temps que ça charge, puis installons les
quelques paquets nécessaires a notre installation et au premier
démarrage:</p>
<div class="highlight"><pre><span class="n">pacstrap</span> <span class="o">/</span><span class="n">mnt</span> <span class="n">syslinux</span> <span class="n">btrfs</span><span class="o">-</span><span class="n">progs</span> <span class="n">wireless_tools</span> <span class="n">dhclient</span>
</pre></div>
<p>Maintenant, passons sur notre install toute fraîche d'Arch :</p>
<div class="highlight"><pre><span class="n">arch</span><span class="o">-</span><span class="n">chroot</span> <span class="o">/</span><span class="n">mnt</span> <span class="n">bash</span>
</pre></div>
<p>configurons les bases :</p>
<div class="highlight"><pre><span class="n">echo</span> <span class="n">HOSTNAME</span> <span class="o">&gt;</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">hostname</span>
<span class="n">ln</span> <span class="o">-</span><span class="n">s</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">zoneinfo</span><span class="o">/</span><span class="n">Europe</span><span class="o">/</span><span class="n">Paris</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">localtime</span>
<span class="n">date</span> <span class="n">MMJJhhmmAAAA</span>
<span class="n">hwclock</span> <span class="o">--</span><span class="n">systohc</span>
<span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">locale</span><span class="p">.</span><span class="n">gen</span> <span class="err">#</span> <span class="n">D</span><span class="err">é</span><span class="n">commentez</span> <span class="n">les</span> <span class="n">lignes</span> <span class="n">correspondant</span> <span class="n">au</span> <span class="n">fran</span><span class="err">ç</span><span class="n">ais</span> <span class="o">:</span> <span class="n">fr_FR</span><span class="p">.</span><span class="n">UTF</span><span class="o">-</span><span class="mi">8</span> <span class="n">et</span> <span class="n">fr_FR</span><span class="p">.</span><span class="n">ISO</span><span class="o">-</span><span class="mi">8859</span><span class="o">-</span><span class="mi">1</span>
<span class="n">echo</span> <span class="err">&#39;</span><span class="n">LANG</span><span class="o">=</span><span class="s">&quot;fr_FR.UTF-8&quot;</span><span class="err">&#39;</span> <span class="o">&gt;</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">locale</span><span class="p">.</span><span class="n">conf</span>
<span class="n">locale</span><span class="o">-</span><span class="n">gen</span>
<span class="n">mkinitcpio</span> <span class="o">-</span><span class="n">p</span> <span class="n">linux</span>
</pre></div>
<p>Enfin, vérifions que syslinux est correctement configuré :</p>
<div class="highlight"><pre><span class="n">vim</span> <span class="o">/</span><span class="n">boot</span><span class="o">/</span><span class="n">syslinux</span><span class="o">/</span><span class="n">syslinux</span><span class="p">.</span><span class="n">cfg</span> <span class="err">#</span> <span class="n">il</span> <span class="n">devrait</span> <span class="n">y</span> <span class="n">avoir</span> <span class="s">&quot;append root=/dev/sda1&quot;</span>
</pre></div>
<p>Si tout est correct, installons syslinux, et paramétrons un mot de passe
root :</p>
<div class="highlight"><pre><span class="n">syslinux</span><span class="o">-</span><span class="n">install_update</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda</span> <span class="o">-</span><span class="n">mia</span>
<span class="n">passwd</span> <span class="n">root</span>
</pre></div>
<p>Et voila, l'installation est terminée! Plus qu'a quitter la session et a
redémarrer l'ordinateur!</p>
<div class="highlight"><pre> <span class="n">exit</span>
<span class="n">umount</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">home</span>
<span class="n">umount</span> <span class="o">/</span><span class="n">mnt</span>
<span class="n">reboot</span>
</pre></div>
<p>Fini!</p>
<p>Prenons une petite pause. La partie suivante de ce tutoriel consister en
un paramétrage des principaux services nécessaires a l'utilisation d'un
OS, disons, moyen :</p>
<ul>
<li>
<p>Installation de MATE, le gestionnaire de bureau (voir
<a href="http://mate-desktop.org/">http://mate-desktop.org/</a>)</p>
</li>
<li>
<p>Installation de sudo et de networkmanager pour faire fonctionner les
composants essentiels du système sans avoir a tout activer a la main a
chaque démarrage</p>
</li>
<li>
<p>Installation de SLiM comme gestionnaire de login graphique, pour
présenter une interface plus accueillante que la console, et
configuration de celui-ci</p>
</li>
<li>
<p>Installation des principaux logiciels utiles non inclus dans mate ni
base (yaourt, chromium, thunderbird, etc...).</p>
</li>
</ul>
<p>Ce guide est bien sur optionnel, si vous souhaitez utiliser Arch avec un
gestionnaire de bureau autre que mate, ou sans, vous pouvez vous arrêter
ici.</p>
<p>Bon, reprenons.</p>
<p>Nous sommes donc sur une demande de mot de passe. Entrez donc le mot de
passe paramétré plus haut pour le root, puis retapez la commande
utilisée plus tôt pour vous connecter a internet.</p>
<p>Il convient d'ajouter le dépôt de MATE pour installer ce dernier, puis
d'effectuer l'action en question :</p>
<div class="highlight"><pre><span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">pacman</span><span class="p">.</span><span class="n">conf</span>
</pre></div>
<p>Ici, ajoutez les lignes suivantes :</p>
<div class="highlight"><pre><span class="k">[mate]</span>
<span class="na">Server</span> <span class="o">=</span> <span class="s">http://repo.mate-desktop.org/archlinux/$arch</span>
</pre></div>
<p>Installons maintenant les paquets :</p>
<div class="highlight"><pre><span class="n">pacman</span> <span class="o">-</span><span class="n">Syu</span> <span class="n">mate</span> <span class="n">mate</span><span class="o">-</span><span class="n">extras</span> <span class="n">dbus</span> <span class="n">dbus</span><span class="o">-</span><span class="n">core</span> <span class="n">alsa</span> <span class="n">networkmanager</span> <span class="n">sudo</span>
</pre></div>
<p>Ajoutons un compte utilisateur pour utiliser les composants du système
sans tout crasher a chaque fois :</p>
<div class="highlight"><pre><span class="n">useradd</span> <span class="o">-</span><span class="n">g</span> <span class="n">users</span> <span class="o">-</span><span class="n">G</span> <span class="n">wheel</span><span class="p">,</span><span class="n">audio</span><span class="p">,</span><span class="n">optical</span><span class="p">,</span><span class="n">lp</span><span class="p">,</span><span class="n">scanner</span><span class="p">,</span><span class="n">log</span><span class="p">,</span><span class="n">power</span><span class="p">,</span><span class="n">floppy</span><span class="p">,</span><span class="n">storage</span><span class="p">,</span><span class="n">games</span><span class="p">,</span><span class="n">video</span> <span class="o">-</span><span class="n">m</span> <span class="o">-</span><span class="n">s</span> <span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">bash</span> <span class="o">*</span><span class="n">votrenom</span><span class="o">*</span>
<span class="n">passwd</span> <span class="o">*</span><span class="n">votrenom</span><span class="o">*</span>
<span class="n">su</span> <span class="o">*</span><span class="n">votrenom</span><span class="o">*</span>
</pre></div>
<p>Il faut maintenant éditer le fichier \~/.xinitrc pour préciser a X.org
ce que l'on veut utiliser :</p>
<div class="highlight"><pre><span class="n">echo</span> <span class="s">&quot;exec ck-launch-session mate-session&quot;</span> <span class="o">&gt;</span> <span class="o">~/</span><span class="p">.</span><span class="n">xinitrc</span>
</pre></div>
<p>Profitons en pour ajouter les démons système au lancement :</p>
<div class="highlight"><pre><span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">rc</span><span class="p">.</span><span class="n">conf</span>
</pre></div>
<p>Ajoutez donc <code>dbus, alsa. hwclock</code> et <code>networkmanager</code> dans la section
DAEMONS (entre les parenthèses, après crond normalement)</p>
<div class="highlight"><pre><span class="n">DAEMONS</span><span class="o">=</span><span class="p">(</span><span class="n">syslog</span><span class="o">-</span><span class="n">ng</span> <span class="n">network</span> <span class="n">crond</span> <span class="n">dbus</span> <span class="n">alsa</span> <span class="n">hwclock</span> <span class="n">networkmanager</span><span class="p">)</span>
</pre></div>
<p>Pour éviter un reboot, il est ici possible de faire un</p>
<div class="highlight"><pre><span class="n">su</span>
</pre></div>
<p>Puis un</p>
<div class="highlight"><pre> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">rc</span><span class="p">.</span><span class="n">d</span><span class="o">/</span><span class="n">dbus</span> <span class="n">start</span> <span class="o">&amp;&amp;</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">rc</span><span class="p">.</span><span class="n">d</span><span class="o">/</span><span class="n">alsa</span> <span class="n">start</span> <span class="o">&amp;&amp;</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">rc</span><span class="p">.</span><span class="n">d</span><span class="o">/</span><span class="n">networkmanager</span> <span class="n">start</span>
</pre></div>
<p>Sinon, il est possible de juste redémarrer.<br />
Une fois cela fait, profitez de ce moment pour vous autoriser vous même
a utiliser sudo. Loggez vous en root, et :</p>
<div class="highlight"><pre> <span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">sudoers</span>
</pre></div>
<p>Décommentez la ligne qui commence par # %wheel ALL=(ALL)<br />
Sauvegardez le fichier, puis, après un <code>su *votrenom*</code>, tentez de faire
un sudo ls /<br />
Normalement, vous devriez avoir un listing du dossier /<br />
Bon, maintenant, pourquoi ne pas tenter de lancer MATE?<br />
C'est simple comme bonjour :</p>
<div class="highlight"><pre> <span class="n">startx</span>
</pre></div>
<p>Et PAF! Voila un MATE desktop flambant neuf a configurer!<br />
Avant de faire ça, retournez sur un TTY (CTRL+ALT+Fx), loggez vous,
puis installez SLiM (<code>sudo pacman -Syu slim</code>).<br />
Configurons le:</p>
<div class="highlight"><pre><span class="n">echo</span> <span class="s">&quot;exec dbus-launch mate-session&quot;</span> <span class="o">&gt;</span> <span class="o">~/</span><span class="p">.</span><span class="n">xinitrc</span> <span class="o">&amp;&amp;</span> <span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">slim</span><span class="p">.</span><span class="n">conf</span>
</pre></div>
<p>Éditez la ligne
"<code>sessions xfce4,icewm-session,wmaker,blackbox</code>" de facon a
ce qu'elle ressemble a "<code>sessions mate-session</code>"<br />
Puis ajoutez slim dans /etc/rc.conf, dans la section DAEMONS.<br />
Normalement, tout devrait fonctionner!<br />
Ah oui, et pour installer thunderbird, firefox, chromium, etc...</p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">Syu</span> <span class="n">chromium</span> <span class="n">thunderbird</span> <span class="n">xchat</span> <span class="n">firefox</span> <span class="n">rhythmbox</span> <span class="n">pidgin</span> <span class="n">transmission</span><span class="o">-</span><span class="n">gtk</span> <span class="n">vlc</span>
</pre></div>
<p>Voila! Et comme dirait <a href="https://twitter.com/spartition">@Spartition</a>, c'est sale, mais qu'est-ce que c'est
bon!<br />
A plus~</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/les-systemes-de-fichiers/">Les systèmes de fichiers</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-25T10:28:00+02:00">
<i class="icon-calendar"></i> Tue 25 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Un système de fichiers. Vous en avez surement déjà entendu parlé si vous
avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous
connaissez surement NTFS, EXT4, ou encore FAT32.</p>
<p>Ces différents noms désignent en effet des systèmes de fichiers. Mais
qu'est-ce qu'un système de fichiers?</p>
<p>Pour comprendre cela, il faut déjà savoir ce qu'est exactement un
fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la
plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio
(<a href="http://fr.wikipedia.org/wiki/Kibioctet#Multiples_normalis.C3.A9s">kibioctet</a>), en fonction du système de fichier utilisé.), qui est
donc composé de bits, interprétés différemment en fonction du type de
fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il
n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent,
ou il commence ni où il s'arrête (je schématise un peu, mais c'est
l'idée). </p>
<p>Ainsi, le système de fichier donne un cadre et un standard à
l'arborescence des fichiers. Par exemple, le système de fichier ext4
utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de
disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio
et mesurer la taille des fichiers en blocs de cette façon. Les systèmes
de fichiers nécessitent l'inclusion de drivers dans le noyau pour
pouvoir être pris en compte. </p>
<p>Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs,
reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu
près tout type de partition récente.</p>
<p>Il convient de bien faire la différence entre le système de fichier et
l'arborescence des fichiers. Si l'arborescence des fichiers est en fait
une entité virtuelle englobant la racine / et tous les fichiers et
dossiers contenus dedans, le système de fichier permet a votre système
GNU/Linux de distinguer les différents fichiers composants cette
arborescence.</p>
<p>Détaillons maintenant les types de fichiers les plus répandus:</p>
<ul>
<li>
<p>FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table,
soit la définition d'un système de fichier), remplissent leur rôle le
plus simplement possible. Ne permettant (historiquement) que des noms de
8 caractères (plus extension de trois caractères), ni chiffrement, ni
système de distinction d'utilisateurs (DOS étant un système
mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32,
utlisants respectivement des blocs de 16 et 32 Kio.</p>
</li>
<li>
<p>NTFS :. Le NTFS (pour New Technology File System, rapport a Windows
NT) est un système de fichier qui est apparu avec Windows XP, et qui
était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a
FAT différentes capacités dont le chiffrement, les liens symboliques, la
compression et les quotas pour les volumes, permettant de limiter la
taille maximum occupée dans une partition.</p>
</li>
<li>
<p>ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012.
Ne différant pas énormément de NTFS, je le mentionne principalement
parce qu'il est prévu qu'il soit le défaut pour Windows 8.
Il apporte principalement la redondance, c'est a dire que chaque
fichier possède une somme de contrôle en 64 bits stockée dans un fichier
séparé pour éviter les corruption de disque.</p>
</li>
<li>
<p>Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers
les plus utilisés sous linux pour le grand public. (Je traiterai ici
d'ext4, puisque c'est le plus récent.) Il dispose de toutes les
fonctions que l'on peut attendre d'un système de fichiers moderne, ni
plus ni moins. Ainsi, ext4 est un système de fichiers journalisé,
acceptant les capacités jusquà 1 Exioctet, et utilise l'allocation dite
"par extent", ce qui signifie que la création d'un fichier réserve
automatiquement les zones contiguës de façon a réduire la fragmentation.</p>
</li>
<li>
<p>ReiserFS : ce système de fichiers, créé par le (légèrement mégalo)
programmeur Hans Reiser, est a retenir pour avoir été le premier système
de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des
4 milliards. Le but de ce système est de créer un système polyvalent, a
la fois système de fichiers et base de donnée (de part sa grande
capacité en terme de nombre de fichiers et de l'utilisation d'un
journal.)</p>
</li>
<li>
<p>Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi
l'allocation par extent, mais possède de plus un système de
sous-volumes, qui permet daccéder a plusieurs arborescences de fichiers
montées en même temps (système pratique et utile pour faire des
snapshots de systèmes.). Il permet aussi de redimensionner a chaud la
taille des partitions, en les agrandissant ou en les rétrécissant, est
compatible avec <a href="http://fr.wikipedia.org/wiki/LVM">LVM</a>, a un système de checking intégré (btrfsck), et
utilise un algorithme de compression appelé LZ4, qui accélère les accès
aux fichiers compressés d'environ 30% par rapport a LZO, le système
utilisé dans ext4.</p>
</li>
<li>
<p>HFS+ : le système de fichier présent sur tous les macs a des capacités
relativement standards, et ressemble énormément a l'ext3. Il supporte
cependant les liens directs vers les dossiers, fonction rare sur les
systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau
dans les années a venir</p>
</li>
<li>
<p>ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux
et *BSD, est, tel Btrfs, a la fois un système de fichier et un
remplaçant/compatible avec LVM, C'est un système de fichiers conçu
principalement pour les serveurs, et il intègre ainsi un système de
redondance des données pour éviter les corruptions, un mode RAID-Z
(apparenté au RAID5), des checks dintégrité en continu, des snapshots,
etc...</p>
</li>
</ul>
<p>Comme on a pu le voir, les systèmes de fichiers disponibles sont
légions. Cependant, le plus adapté a Linux et a une utilisation grand
public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier
n'est pas aujourd'hui proposé par défaut sur les distributions les plus
utilisées, au profit de l'ext4, qui commence a accuser son âge...</p>
<p>Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au
fonctionnement du système, sont en fait de première importance, et ce
choix ne devrait pas être laissé au hasard, et être mis a jour
régulièrement (pour éviter les failles de sécurité...)</p>
<p>Bon courage, et bon choix pour votre prochain système.</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/le-quenya-episode-o/">Le Quenya - Épisode ø</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-18T19:07:00+02:00">
<i class="icon-calendar"></i> Tue 18 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/"><i class="icon-folder-open"></i>Language</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusquà il y
a peu...), le nom que donnait Tolkien au dialecte principal parlé par
les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des
Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte
avant de commencer cet article que l'une des œuvres les plus
impressionnantes de Tolkien, si ce n'est la plus grande, est
l'impressionnant travail linguistique passé sur les différentes langues
présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya,
la langue des nains, qui est appelé le khazalide, etc. </p>
<p>En effet, a contrario des "langues" développées dans d'autres œuvres littéraires
telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot
de français (ou d'anglais) a un mot de sa "langue", les langues de
l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des
racines logiques, des systèmes de grammaire et de conjugaison propres,
une logique inhérente dans la prononciation ou l'orthographe, et ainsi
de suite. </p>
<p>Un véritable rêve de linguiste donc, puisque ces langues sont
pratiquement entièrement documentées par Tolkien lui même (voir
l'appendice E du SdA, particulièrement instructif a ce sujet.)</p>
<p>J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster
ici des résumés des cours que je suis ( disponibles <a href="http://folk.uib.no/hnohf/qcourse.htm">ici</a> , une
traduction en français est disponible <a href="http://www.ambar-eldaron.com/telechargements/integraleshelge.pdf">la</a> en pdf ), et des infos ici
toutes les deux semaines.</p>
<p>Si ce sujet vous intéresse, le compte twitter @Quenya101 poste
régulièrement des informations sur le sujet, et pour plus d'infos sur le
sujet, vous pouvez en trouver <a href="olk.uib.no/hnohf/quenya.htm">par ici</a>.</p>
<p>Et en tant que première leçon, vous pouvez apprendre que ce mot que vous
avez prononcé comme le Kenya tout le long de cet article se prononce en
fait [Kwenïa], ou bien Qwenya!</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/update-a-propos-du-blog/">Update a propos du blog</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-18T16:57:00+02:00">
<i class="icon-calendar"></i> Tue 18 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Bonsoir! Un petit post pour faire un peu le point sur ce blog.<br />
Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais
que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y
avoir un tantinet réfléchi, ceci est du a deux points principaux :</p>
<ul>
<li>
<p>Tout d'abord, le manque d'inspiration, tout simplement. C'est assez
compliqué de trouver des sujets intéressants liés a l'informatique, et
qui méritent un article. Je vous invite d'ailleurs a me suggérer des
sujets via les commentaires ou twitter (<a href="https://twitter.com/wxcafe">@Wxcafe</a>)</p>
</li>
<li>
<p>Ensuite, le délai de 8 jours est trop court pour me permettre de faire
les recherches nécessaires, tout en manageant mes cours et mon temps
libre.</p>
</li>
</ul>
<p>A cause de cela, j'ai pris la décision de changer le rythme de parution
des articles a un *minimum* d'un post tous les 10 jours. Bien entendu,
si j'ai de l'inspiration en trop, plus de posts sont envisageables.</p>
<p>Voila. A part ca, je tiens a vous remercier de me lire (c'est assez
étonnant de voir ca...), et je précise que je vais ajouter une page
About Me, qui bien entendu rassemblera des informations sur moi, ma vie,
mon oeuvre :P</p>
<p>Ceci dit, je vais bosser un peu sur le prochain article.</p>
<p>A plus tard!</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/introduction-a-bash-en-tant-que-language-de-programmation/">Introduction a bash en tant que language de programmation.</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-08T18:15:00+02:00">
<i class="icon-calendar"></i> Sat 08 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/"><i class="icon-folder-open"></i>Programmation</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Linterpréteur de commandes bash (Bourne Again SHell)
est possiblement le shell le plus connu, notamment grâce a son
intégration en tant que shell par défaut dans les distributions Linux
les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva -
Mageia, etc...).</p>
<p>Cependant, il n'est souvent connu qu'en tant quinterpréteur de
commande. Alors qu'en réalité, le bash est un langage de programmation
(presque) complet! Ainsi, il intègre les structures de contrôle
habituelles ( pour mémoire, les structures de contrôle comprennent les
conditions (les ifs), les boucles (les while), et les choix (les case),
entre autres.), et est donc ce que l'on pourrait appeler un langage de
script, interprété, de la même façon que python, a la difference près
qu'il contient un prompt (un système d'entrée de commande interactif)
bien plus complet et développé que python. </p>
<p>Cependant, les programmes en bash ne sont executables que dans un
environnement de type UNIX, et donc pas sous Windows (cygwin
(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous
windows. Il faut malgré tout convenir que cet environnement est bien
plus compliqué a manipuler, et globalement ne permet pas d'acceder a des
portages de qualité satisfaisante.)</p>
<p>Ainsi, il est possible de créer des fichiers .sh, contenant des
instructions bash mises a la suite (de la même façon qu'un script BATCH
Windows .bat), et faisant appel autant aux commandes internes de bash,
aussi bien que les commandes externes mises en place par les programmes
installés sur le système, exactement comme dans une invite de commande.
Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit
panda roux directement dans la boite magique, tandis qu'un if
[condition] suivi d'un then (quelque chose) lancera le fameux quelque
chose suscité si la condition est vérifiée. Un peu comme en C, quoi. </p>
<p>De cette façon, et avec quelques informations et connaissances, il est
facile de comprendre le fonctionnement de la programmation en bash.
Quelques exemples commentés:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash </span>
<span class="c"># La ligne du dessus est très importante, c&#39;est elle qui dit a bash quel doit être </span>
<span class="c"># l&#39;interpreteur des commandes écrites dans ce script. Ici, on dit a bash d&#39;interpréter </span>
<span class="c"># lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire </span>
<span class="c"># executer du python, par exemple, en mettant #!/usr/bin/python a la place.</span>
<span class="nb">echo</span> <span class="s2">&quot;this is a test of bash as a simple script manager&quot;</span> <span class="c"># echo est une commande d&#39;affichage de message.</span>
<span class="nb">echo</span> <span class="s2">&quot;what&#39;s your name, user?&quot;</span>
<span class="nb">read </span>your_name <span class="c"># la commande read permet de demander a l&#39;utilisateur de donner une </span>
<span class="c"># information, stockée dans la variable en paramètre. </span>
<span class="nb">echo</span> <span class="nv">$your_name</span> <span class="s2">&quot;is your name&quot;</span> <span class="c"># echo permet aussi d&#39;afficher la valeur de variables. </span>
<span class="c"># Ici, on renvoie la variable remplie précédemment, suivie d&#39;un message. </span>
<span class="nb">exit</span> <span class="c"># cet appel a exit n&#39;est pas obligatoire, mais donne un aspect plus </span>
<span class="c"># propre au code. Il ne quittera pas la session de terminal, cependant.</span>
</pre></div>
</td></tr></table>
<p>Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite
d'être clair quand aux capacités et a la simplicité du bash en tant que
language de programmation. Alors en effet, nous n'avons ici absolument
pas utilisé les capacités de bash en lui même, et n'avons fait que le
renvoyer a des programmes externes (sauf read, il est vrai). Voyons
maintenant la syntaxe de bash quand il s'agit d'utiliser les structures
de contrôle:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash </span>
<span class="nb">echo</span> <span class="s2">&quot;welcome to this second bash program. would you please kindly enter the name of the machine you&#39;re running this on?&quot;</span>
<span class="nb">read </span>host_name
<span class="k">if</span> <span class="o">[</span> <span class="nv">$host_name</span> <span class="o">==</span> <span class="nv">$HOSTNAME</span> <span class="o">]</span> <span class="c">## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système. </span>
<span class="k">then </span><span class="nb">echo</span> <span class="s2">&quot;you told the truth!&quot;</span>
<span class="k">fi</span> <span class="c">## le fi est la commande fermant le if, tout comme le EndIf en basic. C&#39;est un peu vieillot, mais important en bash. </span>
<span class="k">if</span> <span class="o">[</span> <span class="nv">$host_name</span> !<span class="o">=</span> <span class="nv">$HOSTNAME</span> <span class="o">]</span> <span class="c">## l&#39;opérateur != est l&#39;inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes. </span>
<span class="k">then </span><span class="nb">echo</span> <span class="s2">&quot;you lied!&quot;</span>
<span class="k">fi </span>
<span class="nb">exit</span>
</pre></div>
</td></tr></table>
<p>Voila un petit programme permettant d'apprendre la syntaxe du if en
bash. comme vous pouvez le voir, le language est plutôt lite, et la
structure if n'est pas très difficile a prendre en main.</p>
<p>Passons maintenant au while:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4
5
6
7</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash</span>
<span class="nb">echo</span> <span class="s2">&quot;what is your name?&quot;</span>
<span class="nb">read </span>name
<span class="k">while</span> <span class="o">[</span> 1 &lt; 10 <span class="o">]</span> <span class="c">## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.</span>
<span class="k">do </span><span class="nb">echo</span> <span class="s2">&quot;i love&quot;</span> <span class="nv">$name</span>
<span class="k">done</span>
<span class="nb">exit</span>
</pre></div>
</td></tr></table>
<p>Ce petit programme permet d'observer les bases de while (qui est la
boucle de base en bash).</p>
<p>Le troisième opérateur de bash est case. Voyons:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash</span>
<span class="nb">echo</span> <span class="s2">&quot;please enter a number between one and five&quot;</span>
<span class="nb">read </span>number
<span class="k">case</span> <span class="nv">$number</span> in
1<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was one&quot;</span>
;;
2<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was two&quot;</span>
;;
3<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was three&quot;</span>
;;
4<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was four&quot;</span>
;;
5<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was five&quot;</span>
;;
*<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;this number is not correct&quot;</span>
;;
<span class="k">esac</span>
<span class="nb">exit</span>
</pre></div>
</td></tr></table>
<p>case est un opérateur plus complexe a utiliser a bon escient, et sert a
faire des ifs multiples sans avoir a taper des dizaines de lignes de
code.<br />
(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre
que le code vérifie chacune des conditions : le 1) est validé si la
valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc..
le *) désigne toutes les valeurs, et est donc validé si aucune autre
valeur n'a précédemment acceptée.</p>
<p>Quelques notions manquent ici:<br />
- les nombres aléatoires sont générés par un appel a la variable
\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a
16 bits donc). il est possible de faire des invocations a des nombres
aléatoires plus grands, mais les méthodes permettant de faire cela sont
plus complexes, et je ne les aborderai donc pas ici.<br />
- comme vous avez pu le constater, les variables sont désignées en tant
que telles par l'utilisation d'un symbole \$ au début de leur nom.
Ainsi, echo number renverra "number", tandis que echo \$number renverra
le résultat de la variable \$number.<br />
être utilisées dans un programme bash.<br />
- comme vous avez pu le constater, les commandes doivent tenir en
théorie en une ligne. Cependant, le caractère \ permet de retourner a
la ligne en faisant considérer a bash qu'il s'agit de la même ligne.</p>
<p>Globalement, il faut admettre que bash n'a pas vocation a être un
langage de programmation extrêmement développé. Sans framework
graphique, avec peu de manières d'utiliser de grandes variables, ou
encore une gestion de la mémoire risible, bash n'a rien d'un langage de
développement professionnel.<br />
Cependant, le simple fait qu'il soit considéré comme un langage de
programmation a part entière font de lui un langage de script d'une
puissance incontestable, et sa simplicité et sa grande popularité font
de lui un langage de choix pour apprendre la programmation simplement et
sans trop se prendre la tête.</p>
<p>J'espère que cet article aura été utile a certain-e-s, et je vous
souhaite bonne chance dans votre découverte de la programmation (n'allez
pas voir ceux qui font de l'orienté objet, c'est des méchants :3)</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/les-differentes-couches-dun-systeme-dexploitation/">Les différentes couches d'un système d'exploitation</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-06T23:29:00+02:00">
<i class="icon-calendar"></i> Thu 06 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques
années (plus ou moins, parce que j'ai toujours un Windows en dual boot,
principalement pour les jeux (possiblement plus pour longtemps, avec
l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou
moins bien mon système. Or il y a plusieurs choses a savoir sur les
systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est
le système de couches.</p>
<p>Un système d'exploitation (de type UNIX, \&lt;troll>enfin un vrai système quoi.
\&lt;/troll>) incorpore plusieurs systèmes de couches.</p>
<p>Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique,
c'est a dire que tous les composants sont intégrés au kernel. Ce qui
signifie que rien ne peut être ajouté au noyau sans recompiler celui ci.
Or, quand on sait que le noyau comprend entre autres les drivers du
matériel et des systèmes de fichier, cela peut poser des problèmes quand
a la taille du kernel et a la licence libre de ce dernier. </p>
<p>Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui
signifie que des modules peuvent être chargé a tout moment en cours
dexécution, ce qui permet l'utilisation de nouveaux systèmes de
fichiers a chaud, ou l'insertion de matériel et l'installation de
drivers sans interrompre lexécution du système (Windows utilise un
système de fausse installation de drivers pour le matériel externe, et
un système de pré-installation des drivers pour les périphériques dits
"plug and play")</p>
<p>Après le noyau intervient le système. Or, au tous premiers instants du
boot, les systèmes GNU/Linux utilisent un système permettant de limiter
l'utilisation de ressources systèmes si elles ne sont pas nécessaires,
et incorpore ainsi un système dit de "runlevels"</p>
<p>Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce
runlevel permet de tester le bon démarrage du système sans avoir a
effectuer de manipulation pour le ré-éteindre</p>
<p>Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté
étant donné que ce runlevel donne accès a un système en étant
automatiquement loggé en tant que root, avec tous les autres
utilisateurs désactivés, de même que tous les systèmes de réseaux</p>
<p>Le runlevel 2 est appelé mode multi user, et vous mets en face d'un
système classique. en ligne de commande, mais avec tous les systèmes de
réseau désactivés.</p>
<p>Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux
activés.</p>
<p>Le runlevel 4 n'est pas officiellement défini, et est censé être
activable en fonction des besoins de l'utilisateur. Sur la plupart des
distributions grand public, ce runlevel est lié au...</p>
<p>Runlevel 5! Multi-user, networking, with working GUI! c'est le système
tel que vous le connaissez, avec l'interface graphique et le système de
login graphique.</p>
<p>Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine
quand il devient le runlevel courant.</p>
<p>(Il est a noter que Debian, et donc toutes les distribs qui en sont
dérivées, ne font pas de distinction entre les differents runlevels du 2
au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login
et une interface graphique, et un mode réseau fonctionnel, bref avec des
fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)</p>
<p>Il est possible de changer de runlevel grâce a la commande runlevel
(oui, c'est évident...)</p>
<p>Les systèmes Linux utilisent aussi un système dit de SandBox , qui en
informatique est un système permettant d'isoler les processus les uns
des autres. Ainsi, la pile réseau, qui est le système auquel les
différents processus envoient les différents paquets qui doivent sortir
de la machine , et qui redistribue ces paquets, est isolée du reste du
système, en cela qu'aucun des autres processus ne peuvent modifier cette
pile hors du runlevel 1 ou 2.</p>
<p>De la même façon, le navigateur chrom/ium fait fonctionner tous les
onglets, ainsi que toutes les extensions, dans des processus différents.
Certaines distributions linux implémentent un système de cette sorte
pour toutes les applications, ou seulement pour certaines. ainsi Chakra
Linux a un système d'installation d'applications dans des disques
virtuels, ce qui permet une sécurité totale du processus.</p>
<p>Voila, j'espère vous en avoir appris un peu sur le fonctionnement des
différentes couches de linux, et j'espère que cet article vous poussera
a tester un peu votre système et a vous amuser avec les différents
runlevels</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/la-programmation-expliquee-simplement/">La programmation expliquée simplement</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-08-27T00:22:00+02:00">
<i class="icon-calendar"></i> Mon 27 August 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Salut!<br />
Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire
récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé
pas mal de temps assez occupé. </p>
<p>Enfin, après un certain temps a farfouiller au millieu des connecteurs
SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques
durs, je suis de retour pour un court article.<br />
Du coup, je m'étais dit que j'allais reprendre sur le thème de
l'informatique expliquée au grand public, en tentant d'aller un peu plus
loin que la dernière fois sur le thème de la programmation<br />
Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur.
Si a peu près tout le monde sait que "les ordinateurs, ils ne
comprennent que les 1 et les 0!", peu de gens savent comment cela
fonctionne en détail. </p>
<p>Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà
des notions de base en informatique. Ainsi, vous savez surement que les
ordinateurs fonctionnent avec des programmes, qui sont composés de
code.<br />
Ainsi, il faut comprendre que le code (source) est "compilé" en un
fichier "binaire". Un fichier binaire est un fichier comprenant les
instructions telles quexécutées par le processeur, et donc absolument
illisible pour un humain. </p>
<p>La compilation est le processus qui transforme le code source en
binaire executable. Les binaires ont, sous Windows, l'extension .exe,
tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension
particulière.<br />
Ceci étant dit, il faut comprendre que certains langages sont plus
proches que d'autres du langage processeur, les langages les plus
proches sont dits de "bas niveau". Les langages les plus éloignés sont
donc dits de haut niveau. </p>
<p>Par exemple, l'assembleur est l'un des languages de plus bas niveau,
tandis que python par exemple est un langage de plus haut niveau. Les
langages de haut niveau sont souvent bien plus simples a comprendre et a
apprendre que les langages de bas niveau </p>
<p>Ainsi, en C, un langage de niveau relativement bas, pour afficher
"hello world" sur l'écran, le code nécessaire est :</p>
<div class="highlight"><pre><span class="cp">#include </span>
<span class="kt">void</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="n">printf</span><span class="p">(</span><span class="s">&quot;hello world&quot;</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
<p>le même programme en python s'écrit :</p>
<div class="highlight"><pre><span class="n">print</span> <span class="s">&quot;hello world&quot;</span>
</pre></div>
<p>et n'a pas besoin d'être compilé , puisqu'il peut être intepreté
directement. </p>
<p>Python utilise en effet un système similaire a Java en ayant un
interpréteur dit "runtime" ou "temps réel", qui interprète le programme
sans le compiler. Java utilise un système légèrement différent, puisque
le code a besoin d'être compilé, mais est interpreté par un interpréteur
et non par le processeur. </p>
<p>Cette méthode permet le fameux "code once, run everywhere", ce qui
signifie que le même code est exécutable sur quasiment tous les systèmes
d'exploitation (en fait, tous ceux sur lesquels linterpréteur est
disponible.)</p>
<p>Voila, je vous laisse sur le fonctionnement de Java et de Python, et je
vais me coucher.<br />
A bientôt!</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere/">GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-08-22T20:33:00+02:00">
<i class="icon-calendar"></i> Wed 22 August 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>GNU/Linux est un vaste et extraordinaire territoire technologique, mais
je ne vais pas m'attarder ici sur les aspects profondément techniques de
ce territoire pour faire plutôt une sorte d'introduction a ce qu'est
vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de
connaissances en informatique.</p>
<p>GNU/Linux, que jabrégerai ici en Linux pour plus de simplicité, est un
Système d'Exploitation. Un système d'exploitation est, pour simplifier,
un ensemble d'outils informatiques qui vous permettent d'utiliser votre
ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation
de système d'exploitation (Operating System en anglais) est OS. Les 4
principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et
Solaris. Les trois derniers sont issus d'un autre système, plus ancien,
nommé UNIX.</p>
<p>De ce fait, on pourrait penser que Linux remplace complètement Windows
une fois installé, et comprend une interface graphique, et toutes sortes
d'utilitaires permettant a l'utilisateur d'utiliser le système (sous
Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer.
Pour l'interface graphique, pensez a... Pensez que votre système affiche
autre chose que des lignes de commande.) Or non, une fois installé,
Linux en lui même ne vous afficherait aucune interface graphique, et
s'il est effectivement livré avec des utilitaires, ils ne sont que des
programmes en ligne de commande. Autant les utilisateurs avancés sauront
s'en servir, et pourront argumenter que c'est plus efficace ou plus
rapide, autant les utilisateurs basiques préfèrent une interface
graphique. Alors comment en obtenir une?</p>
<p>Ici, il convient de faire une précision importante. Si il n'existe
qu'une seule version de Windows, ou de Mac OS, il existe en fait
plusieurs centaines de "versions" différentes de Linux. Appelées
distributions, ces dernière sont développées par des groupes
complètement séparés, et se basent sur le fait que Linux soit
entièrement placé sous licence libre (ce qui leur permet de l'utiliser a
leur guise, a condition que leur travail soit lui aussi placé sous
licence libre). De ce fait, de nombreuses distributions existent et se
développent en parallèle. On peut ainsi citer <a href="http://debian.org">Debian</a>, qui est l'une
des distributions les plus importantes, ou encore <a href="http://ubuntu.com">Ubuntu</a>, qui est
l'une des plus connues et des plus simples a utiliser.</p>
<p>Ainsi, ces distributions intègrent une interface graphique. Cependant,
grâce a la liberté dont bénéficient les développeurs sous Linux, il
existe de nombreuses interfaces graphiques différentes : <a href="unity.ubuntu.com">Unity</a>, la
nouvelle interface d'Ubuntu; <a href="gnome.org">GNOME</a> , une interface qui vise a la
simplicité; ou encore <a href="http://kde.org/">KDE</a>, une interface utilisateur ressemblant a
Windows 7.</p>
<p>Ainsi, le choix astronomique de distributions Linux a bien un sens :
chacune d'entre elle intègre des outils différents. Par exemple, Debian
intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend
particulièrement stable. Ubuntu intègre Unity, ce qui en fait une
distribution particulièrement intuitive. Linux Mint intègre Cinnamon,
qui est une version dérivée de GNOME 3, ce qui permet encore une autre
expérience. Et Arch Linux n'intègre pas d'interface graphique du tout,
ce qui permet a l'utilisateur de choisir entre les multiples interfaces
existantes.</p>
<p>Ce qu'il est important de retenir de cela, c'est que Linux est un OS
complètement libre, ce qui signifie que n'importe qui peut modifier et
utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi,
Linux est un OS qui est véritablement créé par des passionnés, pour tous
et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué
a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus.
Cependant, Linux donne la possibilité a l'utilisateur de le rendre
affreusement complexe, mais aussi de le rendre adapté a ses besoins,
quels que soient ceux ci. Et c'est la que réside l'incroyable puissance
de ce Système d'Exploitation. Il est extraordinairement adaptable.</p>
<p>N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas
technophiles. Ils pourraient adorer, et peut être même le devenir :)</p>
<p>A bientôt!</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/debuts-presentation-etc/">Débuts, présentation, etc...</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-08-18T20:27:00+02:00">
<i class="icon-calendar"></i> Sat 18 August 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Bonjour!</p>
<p>Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur
Twitter, mais aussi sur IRC (Je traîne pas mal sur
irc.freenode.net/##nolife et #debian-fr)</p>
<p>J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je
fais partie de ce genre de personne qui sont capables d'investir tout
leur temps et leur énergie a sintéresser a un sujet en particulier, et
qui ne peuvent pas vivre sans leurs passions, avec une petite différence
cependant, qui est que je mintéresse a plusieurs choses :
l'informatique, qui est un champ tellement large qu'on peut passer une
vie a apprendre des choses dessus, et plus particulièrement à
l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres
{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les
trolls seront a partir de maintenant indiqués avec le tag [tr]] du
libre, je préfère utiliser de l'open-source si c'est possible},
programmation en C, python et java, etc...) , mais aussi a
lélectronique. </p>
<p>Dans un tout autre registre, je mintéresse aussi
beaucoup aux différents aspects du féminisme et des égalités sexuelles
(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) ,
et a la culture dite "geek" en général.</p>
<p>Je tenterai de poster ici le plus souvent possible, mais j'ai de gros
problèmes en terme de régularité de post, donc ne vous inquiétez pas si
vous ne voyez rien pendant deux semaines.</p>
<p>Merci beaucoup de votre attention, et a bientôt!</p></div>
</div>
<hr />
<div class="pagination">
<ul>
<li class="prev"><a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe2.html">&larr; Previous</a></li>
<li class="">
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html">1</a>
</li>
<li class="">
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe2.html">2</a>
</li>
<li class="active">
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe3.html">3</a>
</li>
<li class="next disabled"><a href="#">&rarr; Next</a></li>
</ul>
</div>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,244 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Wxcafé - Language</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/le-quenya-episode-o/">Le Quenya - Épisode ø</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-18T19:07:00+02:00">
<i class="icon-calendar"></i> Tue 18 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/"><i class="icon-folder-open"></i>Language</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusquà il y
a peu...), le nom que donnait Tolkien au dialecte principal parlé par
les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des
Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte
avant de commencer cet article que l'une des œuvres les plus
impressionnantes de Tolkien, si ce n'est la plus grande, est
l'impressionnant travail linguistique passé sur les différentes langues
présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya,
la langue des nains, qui est appelé le khazalide, etc. </p>
<p>En effet, a contrario des "langues" développées dans d'autres œuvres littéraires
telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot
de français (ou d'anglais) a un mot de sa "langue", les langues de
l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des
racines logiques, des systèmes de grammaire et de conjugaison propres,
une logique inhérente dans la prononciation ou l'orthographe, et ainsi
de suite. </p>
<p>Un véritable rêve de linguiste donc, puisque ces langues sont
pratiquement entièrement documentées par Tolkien lui même (voir
l'appendice E du SdA, particulièrement instructif a ce sujet.)</p>
<p>J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster
ici des résumés des cours que je suis ( disponibles <a href="http://folk.uib.no/hnohf/qcourse.htm">ici</a> , une
traduction en français est disponible <a href="http://www.ambar-eldaron.com/telechargements/integraleshelge.pdf">la</a> en pdf ), et des infos ici
toutes les deux semaines.</p>
<p>Si ce sujet vous intéresse, le compte twitter @Quenya101 poste
régulièrement des informations sur le sujet, et pour plus d'infos sur le
sujet, vous pouvez en trouver <a href="olk.uib.no/hnohf/quenya.htm">par ici</a>.</p>
<p>Et en tant que première leçon, vous pouvez apprendre que ce mot que vous
avez prononcé comme le Kenya tout le long de cet article se prononce en
fait [Kwenïa], ou bien Qwenya!</p></div>
</div>
<hr />
<section id="content" class="body">
<h1>Pages</h1>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,567 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Wxcafé - Notes</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/SSL-ou-la-securite-sur-internet/">SSL ou la sécurité sur l'internet</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2014-05-30T08:25:00+02:00">
<i class="icon-calendar"></i> Fri 30 May 2014
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p><em>Disclaimer: Ce billet est écrit après le visionnage de la conférence de Moxie
Marlinspike suivante: <a href="https://www.youtube.com/watch?v=ibF36Yyeehw">More Tricks for Defeating SSL</a>,
présentée a la DefCon 17 (en 2011), et la lecture du billet suivant:
<a href="http://www.thoughtcrime.org/blog/lavabit-critique/">A Critique of Lavabit</a>,
ce qui peut avoir l'effet de rendre légèrement parano. Si vous considérez que
c'est le cas ici, veuillez ne pas tenir compte de ce billet (et vous pouvez dès
a présent dire coucou aux différentes personnes qui écoutent votre connection)</em></p>
<p>Si vous venez ici souvent (vous devriez), et que vous utilisez SSL pour vous
connecter a ce site (vous devriez, vraiment, dans ce cas), vous avez peut être
remarqué quelque chose récemment : il se trouve que le certificat qui permet de
desservir ce site a changé.</p>
<p>Cela fait suite aux évènements évoqués dans le <em>Disclaimer</em>, mais aussi a des
doigts sortis d'un endroit particulier du corps de l'admin/auteur de ce "blog",
qui a pris <strong>enfin</strong> les 5 minutes nécessaires a la compréhension superficielle
du fonctionnement de SSL, et les 10 nécessaires a la mise en place d'un système
fonctionnel utilisant cette compréhension récemment acquise.</p>
<p>Bref, le certificat a changé. Mais de quelle façon, vous demandez vous peut
être (ou pas, mais bon, je vais expliquer de toute façon). Et bien c'est très
simple : il existait auparavant un certificat pour <code>wxcafe.net</code>, un pour
<code>paste.wxcafe.net</code>, un pour <code>mail.wxcafe.net</code>, etc... Bref, un certificat
différent pour chaque sous-domaine.</p>
<p>Il s'avère que c'est a la fois très peu pratique a utiliser (les utilisateurs
doivent ajouter chaque certificat a leur navigateur séparément, chaque
changement de sous-domaine conduit a un message d'erreur, etc) et pas plus
sécurisé que d'avoir un seul certificat wildcard. J'ai donc généré un certificat
pour <code>*.wxcafe.net</code> hier, et il sera dorénavant utilisé pour tous les
sous-domaine de <code>wxcafe.net</code>; et un certificat pour <code>wxcafe.net</code>, qui ne matche
pas <code>*.wxcafe.net</code>, et qui sera donc utilisé... bah pour <code>wxcafe.net</code>.</p>
<p>Il serait préférable de faire des redirections automatiques des adresses http
vers les adresses https, cependant, étant donné que le certificat est
self-signed, il me semble préférable que l'arrivée sur le site ne commence pas
par une page firefox disant "Something's Wrong!", et ces redirections ne seront
donc pas mises en place.</p>
<p>De plus, après la lecture de l'article de blog sur Lavabit dont le lien est plus
haut, il semble intéressant (et assez important) de faire en sorte que le
serveur utilise en priorité (et si possible, uniquement) des ciphers supportant
PFS, soit EDH et EECDH (Ephemeral Diffie-Helmann et la version Elliptic Curves
de ce même algorithme). Cela permet de faire en sorte que toutes les
communications avec ce serveur soient future-proof, c'est a dire que, même si
quelqu'un récupérait la clé privée, elle ne serait pas utile pour déchiffrer les
communications passées.</p>
<p>Bon, maintenant que les explications basiques sont faites, voyons
l'implémentation : <br />
Pour générer la clé, tout d'abord, il convient d'utiliser les commandes
suivantes: </p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">openssl</span> <span class="n">genrsa</span> <span class="o">-</span><span class="n">out</span> <span class="n">example</span><span class="p">.</span><span class="n">key</span> <span class="mi">4096</span>
<span class="cp"># nous utilisons ici une clé de 4096 bits, la taille est laissée a votre appréciation</span>
<span class="n">sudo</span> <span class="n">openssl</span> <span class="n">req</span> <span class="o">-</span><span class="n">new</span> <span class="o">-</span><span class="n">key</span> <span class="n">example</span><span class="p">.</span><span class="n">key</span> <span class="o">-</span><span class="n">out</span> <span class="n">example</span><span class="p">.</span><span class="n">csr</span>
<span class="cp"># OpenSSL va ici vous demander de nombreuses informations, &quot;Common Name&quot; devant contenir le FQDN</span>
<span class="n">sudo</span> <span class="n">openssl</span> <span class="n">X509</span> <span class="o">-</span><span class="n">req</span> <span class="o">-</span><span class="n">days</span> <span class="mi">1095</span> <span class="o">-</span><span class="n">in</span> <span class="n">example</span><span class="p">.</span><span class="n">csr</span> <span class="o">-</span><span class="n">signkey</span> <span class="n">example</span><span class="p">.</span><span class="n">key</span> <span class="o">-</span><span class="n">out</span> <span class="n">example</span><span class="p">.</span><span class="n">crt</span>
<span class="cp"># enfin, nous générons la clé, d&#39;une durée de vie de 3 ans</span>
</pre></div>
<p>Bien entendu, si vous voulez utiliser une clé wildcard, il vous faut préciser
<code>*.example.com</code> comme common name.
Une fois la clé générée, il faut dire aux différents services de l'utiliser, et
de n'utiliser que des ciphers PFS. La méthode dépend donc du service.
Je vais lister ici les methodes pour quelques services que j'utilise :</p>
<h3>apache :</h3>
<div class="highlight"><pre><span class="cp"># /etc/apache2/mods_enabled/ssl.conf</span>
<span class="cp"># [...]</span>
<span class="n">SSLProtocol</span> <span class="n">all</span> <span class="o">-</span><span class="n">SSLv2</span> <span class="o">-</span><span class="n">SSLv3</span>
<span class="n">SSLHonorCipherOrder</span> <span class="n">on</span>
<span class="n">SSLCipherSuite</span> <span class="s">&quot;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \</span>
<span class="s"> EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \</span>
<span class="s"> EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&quot;</span>
<span class="cp"># [...]</span>
<span class="cp"># /etc/apache2/sites-enabled/default-ssl</span>
<span class="cp"># [...]</span>
<span class="n">SSLEngine</span> <span class="n">on</span>
<span class="n">SSLCertificateFile</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span>
<span class="n">SSLCertificateKeyFile</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span>
<span class="cp"># [...]</span>
</pre></div>
<h3>nginx :</h3>
<div class="highlight"><pre><span class="cp"># /etc/nginx/nginx.conf </span>
<span class="cp"># [...]</span>
<span class="n">ssl_protocols</span> <span class="n">TLSv1</span> <span class="n">TLSv1</span><span class="mf">.1</span> <span class="n">TLSv1</span><span class="mf">.2</span><span class="p">;</span>
<span class="n">ssl_prefer_server_ciphers</span> <span class="n">on</span><span class="p">;</span>
<span class="n">ssl_ciphers</span> <span class="s">&quot;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \</span>
<span class="s"> EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \</span>
<span class="s"> EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&quot;</span><span class="p">;</span>
<span class="cp"># [...]</span>
<span class="cp"># /etc/nginx/sites-enabled/default-ssl</span>
<span class="cp"># [...]</span>
<span class="n">ssl</span> <span class="n">on</span><span class="p">;</span>
<span class="n">ssl_certificate</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span>
<span class="n">ssl_certificate_key</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span>
<span class="cp"># [...]</span>
</pre></div>
<h3>prosody (jabber) :</h3>
<div class="highlight"><pre><span class="cp"># tout d&#39;abord, lancez la commande suivante :</span>
<span class="n">sudo</span> <span class="n">openssl</span> <span class="n">dhparam</span> <span class="o">-</span><span class="n">out</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">prosody</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">dh</span><span class="o">-</span><span class="mf">2048.</span><span class="n">pem</span> <span class="mi">2048</span>
<span class="cp"># ensuite, pour chaque VirtualHost dans /etc/prosody/prosody.conf :</span>
<span class="n">ssl</span> <span class="o">=</span> <span class="p">{</span>
<span class="n">dhparam</span> <span class="o">=</span> <span class="s">&quot;/etc/prosody/certs/dh-2048.pem&quot;</span><span class="p">;</span>
<span class="n">key</span> <span class="o">=</span> <span class="s">&quot;/etc/certs/example.com.key&quot;</span><span class="p">;</span>
<span class="n">certificate</span> <span class="o">=</span> <span class="s">&quot;/etc/certs/example.com.crt&quot;</span><span class="p">;</span>
<span class="p">}</span>
<span class="cp"># la cipher suite de prosody utilise par défaut EDH et EECDH</span>
</pre></div>
<h3>postfix (email) :</h3>
<div class="highlight"><pre><span class="cp"># /etc/postfix/main.cf</span>
<span class="cp"># [...]</span>
<span class="n">smtpd_tls_cert_file</span> <span class="o">=</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span>
<span class="n">smtpd_tls_key_file</span> <span class="o">=</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span>
<span class="n">tls_preempt_cipherlist</span> <span class="o">=</span> <span class="n">yes</span>
<span class="n">smtpd_tls_eecdh_grade</span> <span class="o">=</span> <span class="n">strong</span>
<span class="n">smtdp_tls_mandatory_ciphers</span> <span class="o">=</span> <span class="n">high</span>
<span class="n">smtpd_tls_mandatory_exclude_ciphers</span> <span class="o">=</span> <span class="n">aNULL</span><span class="p">,</span> <span class="n">eNULL</span><span class="p">,</span> <span class="n">MD5</span><span class="p">,</span> <span class="n">LOW</span><span class="p">,</span> <span class="mi">3</span><span class="n">DES</span><span class="p">,</span> <span class="n">EXP</span><span class="p">,</span> <span class="n">PSK</span><span class="p">,</span> <span class="n">SRP</span><span class="p">,</span> <span class="n">DSS</span>
<span class="n">smtpd_tls_security_level</span> <span class="o">=</span> <span class="n">encrypt</span>
<span class="n">smtpd_tls_mandatory_protocols</span> <span class="o">=</span> <span class="o">!</span><span class="n">SSLv2</span><span class="p">,</span> <span class="o">!</span><span class="n">SSLv3</span>
<span class="n">smtpd_use_tls</span> <span class="o">=</span> <span class="n">yes</span>
<span class="cp"># [...]</span>
</pre></div>
<h3>dovecot (imap) :</h3>
<div class="highlight"><pre><span class="cp"># /etc/dovecot/dovecot.conf </span>
<span class="cp"># [...]</span>
<span class="n">ssl_cert</span> <span class="o">=</span> <span class="o">&lt;/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span>
<span class="n">ssl_key</span> <span class="o">=</span> <span class="o">&lt;/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span>
<span class="n">ssl_cipher_list</span> <span class="o">=</span> <span class="n">HIGH</span><span class="o">+</span><span class="n">kEDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">+</span><span class="n">kEECDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">:!</span><span class="n">PSK</span><span class="o">:!</span><span class="n">SRP</span><span class="o">:!</span><span class="mi">3</span><span class="n">DES</span><span class="o">:!</span><span class="n">aNULL</span>
</pre></div>
<p>Voila. Pour d'autres protocoles/services, je vous invite a RTFM^W vous reporter
au manuel approprié.</p>
<p>Cela étant dit, je conseille a tout le monde d'aller voir la conférence dans le
disclaimer, et tant qu'a faire la conférence du même hacker <a href="https://www.youtube.com/watch?v=8N4sb-SEpcg">SSL and the future
of Authenticity</a> qui parle de son
implémentation d'une technologie "remplaçant" le système de CAs qui existe
actuellement.</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/redesign-du-blog/">Redesign du blog, etc</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2013-06-12T19:14:00+02:00">
<i class="icon-calendar"></i> Wed 12 June 2013
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Comme vous avez pu le remarquer, ce blog a "un peu" changé récemment.</p>
<p>Du coup, expliquons. J'ai récemment monté <a href="http://serverporn.fr">serverporn</a>, et ai par la même
occasion découvert <a href="http://getpelican.com">pelican</a>. J'ai tout de suite accroché a ce générateur de
site statique en python, du fait de son efficacité, de sa facilité d'utilisation
et de sa grande customisation. En gros, pelican est un logiciel qui prend des
fichiers markdown ou reStructuredText, les passe a la moulinette d'un "thème"
constitué de templates pour les fichiers html et l'organisation du projet et
d'une partie "statique" contenant le css, et les autres fichiers nécessaires au
projet, et en fait des pages html. </p>
<p>Globalement, un thème est constitué ainsi :</p>
<div class="highlight"><pre><span class="n">th</span><span class="err">è</span><span class="n">me</span>
<span class="err">├──</span> <span class="k">static</span>
<span class="err"></span> <span class="err">├─</span> <span class="n">css</span>
<span class="err"></span> <span class="err"></span> <span class="err">└─</span> <span class="p">[</span><span class="n">css</span> <span class="n">files</span><span class="p">]</span>
<span class="err"></span> <span class="err">├─</span> <span class="n">img</span>
<span class="err"></span> <span class="err"></span> <span class="err">└─</span> <span class="p">[</span><span class="n">image</span> <span class="n">files</span><span class="p">]</span>
<span class="err"></span> <span class="err">└─</span> <span class="n">js</span>
<span class="err"></span> <span class="err">└─</span> <span class="p">[</span><span class="n">javascript</span> <span class="n">files</span><span class="p">]</span>
<span class="err">└──</span> <span class="n">template</span>
<span class="err">├─</span> <span class="n">base</span><span class="p">.</span><span class="n">html</span>
<span class="err">├─</span> <span class="n">index</span><span class="p">.</span><span class="n">html</span>
<span class="err">├─</span> <span class="n">page</span><span class="p">.</span><span class="n">html</span>
<span class="err">├─</span> <span class="p">[...]</span>
<span class="err">└─</span> <span class="n">article</span><span class="p">.</span><span class="n">html</span>
</pre></div>
<p>Sachant que les fichiers .html sont en réalité des fichiers suivant la syntaxe
django, et utilisent des variables particulières telles <code>{{ article.content }}</code>,
par exemple. La syntaxe complète est très bien documentée dans la <a href="http://docs.getpelican.com/en/3.2/themes.html#templates-and-variables">doc</a> de
pelican.</p>
<p>L'un des grands avantages de pelican est aussi la facilité qu'il offre quand a
la mise a jour du blog.<br />
En effet, il offre un système de Makefiles permettant, grâce a de nombreuses
cibles de compilation, de régénérer le site entier, de ne générer que les
fichiers modifiés depuis la dernière génération, de générer uniquement les
fichiers n'existant pas la dernière fois, etc...
La gestion du projet en devient donc très simple, puisque après avoir écrit un
article, il suffit de faire un <code>make html</code> pour mettre a jour le blog.</p>
<p>De plus, le système de wordpress commençait a ne plus me convenir, du fait du
manque de customisation, du fait que ça soit du PHP (beurk), etc. La, avec
pelican, je contrôle bien plus ce qui est mis sur le serveur (puisque c'est moi
qui ait modifié les templates et le css), c'est lisible (puisque c'est du
python, par opposition au PHP...), et c'est plus "efficace". Le markdown est
très pratique, je peux utiliser mon éditeur de texte de prédilection pour faire
les articles, je n'ai pas besoin d'un accès continu au net, bref, c'est plus
efficace.</p>
<p>En ce qui concerne les points négatifs : </p>
<ul>
<li>
<p>Perte des commentaires:
Je vous propose de vous référer a l'article de Gordontesos <a href="http://gordon.re/hacktivisme/la-necessite-des-commentaires.html">ici</a> quand a
mon avis sur ce sujet.</p>
</li>
<li>
<p>Perte du bouton flattr:
Il va bientôt être remis, c'est juste un manque de temps de ma part, mais vu
que toutes les pages passent par les mêmes templates, c'est assez facile a
faire.</p>
</li>
<li>
<p>Perte du spam:
Pourquoi c'est dans les points négatifs, ca?</p>
</li>
<li>
<p>Temps d'adaptation et d'appréhension du système:
Oui, pendant encore un certain temps, il y aura des glitchs plus ou moins
réguliers sur le blog, c'est parce que j'apprend a me servir de ce système
et que j'apprend du css et du html. Ca arrive, ca passera, mais dans tous
les cas ca me permet d'apprendre plein de choses, donc je mets plutôt ca
dans la catëgorie positive.</p>
</li>
</ul>
<p>Voila, c'est mon retour d'expérience sur pelican. A plus. </p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/update/">Update</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2013-01-05T18:32:00+01:00">
<i class="icon-calendar"></i> Sat 05 January 2013
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Juste une petite note pour annoncer le prochain article, consacré a la
fabrication d'une PirateBox basée sur un Raspberry Pi. Voila, a bientôt
sur le blog!</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/update-a-propos-du-blog/">Update a propos du blog</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-18T16:57:00+02:00">
<i class="icon-calendar"></i> Tue 18 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Bonsoir! Un petit post pour faire un peu le point sur ce blog.<br />
Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais
que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y
avoir un tantinet réfléchi, ceci est du a deux points principaux :</p>
<ul>
<li>
<p>Tout d'abord, le manque d'inspiration, tout simplement. C'est assez
compliqué de trouver des sujets intéressants liés a l'informatique, et
qui méritent un article. Je vous invite d'ailleurs a me suggérer des
sujets via les commentaires ou twitter (<a href="https://twitter.com/wxcafe">@Wxcafe</a>)</p>
</li>
<li>
<p>Ensuite, le délai de 8 jours est trop court pour me permettre de faire
les recherches nécessaires, tout en manageant mes cours et mon temps
libre.</p>
</li>
</ul>
<p>A cause de cela, j'ai pris la décision de changer le rythme de parution
des articles a un *minimum* d'un post tous les 10 jours. Bien entendu,
si j'ai de l'inspiration en trop, plus de posts sont envisageables.</p>
<p>Voila. A part ca, je tiens a vous remercier de me lire (c'est assez
étonnant de voir ca...), et je précise que je vais ajouter une page
About Me, qui bien entendu rassemblera des informations sur moi, ma vie,
mon oeuvre :P</p>
<p>Ceci dit, je vais bosser un peu sur le prochain article.</p>
<p>A plus tard!</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/debuts-presentation-etc/">Débuts, présentation, etc...</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-08-18T20:27:00+02:00">
<i class="icon-calendar"></i> Sat 18 August 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Bonjour!</p>
<p>Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur
Twitter, mais aussi sur IRC (Je traîne pas mal sur
irc.freenode.net/##nolife et #debian-fr)</p>
<p>J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je
fais partie de ce genre de personne qui sont capables d'investir tout
leur temps et leur énergie a sintéresser a un sujet en particulier, et
qui ne peuvent pas vivre sans leurs passions, avec une petite différence
cependant, qui est que je mintéresse a plusieurs choses :
l'informatique, qui est un champ tellement large qu'on peut passer une
vie a apprendre des choses dessus, et plus particulièrement à
l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres
{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les
trolls seront a partir de maintenant indiqués avec le tag [tr]] du
libre, je préfère utiliser de l'open-source si c'est possible},
programmation en C, python et java, etc...) , mais aussi a
lélectronique. </p>
<p>Dans un tout autre registre, je mintéresse aussi
beaucoup aux différents aspects du féminisme et des égalités sexuelles
(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) ,
et a la culture dite "geek" en général.</p>
<p>Je tenterai de poster ici le plus souvent possible, mais j'ai de gros
problèmes en terme de régularité de post, donc ne vous inquiétez pas si
vous ne voyez rien pendant deux semaines.</p>
<p>Merci beaucoup de votre attention, et a bientôt!</p></div>
</div>
<hr />
<section id="content" class="body">
<h1>Pages</h1>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,412 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Wxcafé - Programmation</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/introduction-a-bash-en-tant-que-language-de-programmation/">Introduction a bash en tant que language de programmation.</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-08T18:15:00+02:00">
<i class="icon-calendar"></i> Sat 08 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/"><i class="icon-folder-open"></i>Programmation</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Linterpréteur de commandes bash (Bourne Again SHell)
est possiblement le shell le plus connu, notamment grâce a son
intégration en tant que shell par défaut dans les distributions Linux
les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva -
Mageia, etc...).</p>
<p>Cependant, il n'est souvent connu qu'en tant quinterpréteur de
commande. Alors qu'en réalité, le bash est un langage de programmation
(presque) complet! Ainsi, il intègre les structures de contrôle
habituelles ( pour mémoire, les structures de contrôle comprennent les
conditions (les ifs), les boucles (les while), et les choix (les case),
entre autres.), et est donc ce que l'on pourrait appeler un langage de
script, interprété, de la même façon que python, a la difference près
qu'il contient un prompt (un système d'entrée de commande interactif)
bien plus complet et développé que python. </p>
<p>Cependant, les programmes en bash ne sont executables que dans un
environnement de type UNIX, et donc pas sous Windows (cygwin
(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous
windows. Il faut malgré tout convenir que cet environnement est bien
plus compliqué a manipuler, et globalement ne permet pas d'acceder a des
portages de qualité satisfaisante.)</p>
<p>Ainsi, il est possible de créer des fichiers .sh, contenant des
instructions bash mises a la suite (de la même façon qu'un script BATCH
Windows .bat), et faisant appel autant aux commandes internes de bash,
aussi bien que les commandes externes mises en place par les programmes
installés sur le système, exactement comme dans une invite de commande.
Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit
panda roux directement dans la boite magique, tandis qu'un if
[condition] suivi d'un then (quelque chose) lancera le fameux quelque
chose suscité si la condition est vérifiée. Un peu comme en C, quoi. </p>
<p>De cette façon, et avec quelques informations et connaissances, il est
facile de comprendre le fonctionnement de la programmation en bash.
Quelques exemples commentés:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash </span>
<span class="c"># La ligne du dessus est très importante, c&#39;est elle qui dit a bash quel doit être </span>
<span class="c"># l&#39;interpreteur des commandes écrites dans ce script. Ici, on dit a bash d&#39;interpréter </span>
<span class="c"># lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire </span>
<span class="c"># executer du python, par exemple, en mettant #!/usr/bin/python a la place.</span>
<span class="nb">echo</span> <span class="s2">&quot;this is a test of bash as a simple script manager&quot;</span> <span class="c"># echo est une commande d&#39;affichage de message.</span>
<span class="nb">echo</span> <span class="s2">&quot;what&#39;s your name, user?&quot;</span>
<span class="nb">read </span>your_name <span class="c"># la commande read permet de demander a l&#39;utilisateur de donner une </span>
<span class="c"># information, stockée dans la variable en paramètre. </span>
<span class="nb">echo</span> <span class="nv">$your_name</span> <span class="s2">&quot;is your name&quot;</span> <span class="c"># echo permet aussi d&#39;afficher la valeur de variables. </span>
<span class="c"># Ici, on renvoie la variable remplie précédemment, suivie d&#39;un message. </span>
<span class="nb">exit</span> <span class="c"># cet appel a exit n&#39;est pas obligatoire, mais donne un aspect plus </span>
<span class="c"># propre au code. Il ne quittera pas la session de terminal, cependant.</span>
</pre></div>
</td></tr></table>
<p>Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite
d'être clair quand aux capacités et a la simplicité du bash en tant que
language de programmation. Alors en effet, nous n'avons ici absolument
pas utilisé les capacités de bash en lui même, et n'avons fait que le
renvoyer a des programmes externes (sauf read, il est vrai). Voyons
maintenant la syntaxe de bash quand il s'agit d'utiliser les structures
de contrôle:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash </span>
<span class="nb">echo</span> <span class="s2">&quot;welcome to this second bash program. would you please kindly enter the name of the machine you&#39;re running this on?&quot;</span>
<span class="nb">read </span>host_name
<span class="k">if</span> <span class="o">[</span> <span class="nv">$host_name</span> <span class="o">==</span> <span class="nv">$HOSTNAME</span> <span class="o">]</span> <span class="c">## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système. </span>
<span class="k">then </span><span class="nb">echo</span> <span class="s2">&quot;you told the truth!&quot;</span>
<span class="k">fi</span> <span class="c">## le fi est la commande fermant le if, tout comme le EndIf en basic. C&#39;est un peu vieillot, mais important en bash. </span>
<span class="k">if</span> <span class="o">[</span> <span class="nv">$host_name</span> !<span class="o">=</span> <span class="nv">$HOSTNAME</span> <span class="o">]</span> <span class="c">## l&#39;opérateur != est l&#39;inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes. </span>
<span class="k">then </span><span class="nb">echo</span> <span class="s2">&quot;you lied!&quot;</span>
<span class="k">fi </span>
<span class="nb">exit</span>
</pre></div>
</td></tr></table>
<p>Voila un petit programme permettant d'apprendre la syntaxe du if en
bash. comme vous pouvez le voir, le language est plutôt lite, et la
structure if n'est pas très difficile a prendre en main.</p>
<p>Passons maintenant au while:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4
5
6
7</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash</span>
<span class="nb">echo</span> <span class="s2">&quot;what is your name?&quot;</span>
<span class="nb">read </span>name
<span class="k">while</span> <span class="o">[</span> 1 &lt; 10 <span class="o">]</span> <span class="c">## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.</span>
<span class="k">do </span><span class="nb">echo</span> <span class="s2">&quot;i love&quot;</span> <span class="nv">$name</span>
<span class="k">done</span>
<span class="nb">exit</span>
</pre></div>
</td></tr></table>
<p>Ce petit programme permet d'observer les bases de while (qui est la
boucle de base en bash).</p>
<p>Le troisième opérateur de bash est case. Voyons:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash</span>
<span class="nb">echo</span> <span class="s2">&quot;please enter a number between one and five&quot;</span>
<span class="nb">read </span>number
<span class="k">case</span> <span class="nv">$number</span> in
1<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was one&quot;</span>
;;
2<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was two&quot;</span>
;;
3<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was three&quot;</span>
;;
4<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was four&quot;</span>
;;
5<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was five&quot;</span>
;;
*<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;this number is not correct&quot;</span>
;;
<span class="k">esac</span>
<span class="nb">exit</span>
</pre></div>
</td></tr></table>
<p>case est un opérateur plus complexe a utiliser a bon escient, et sert a
faire des ifs multiples sans avoir a taper des dizaines de lignes de
code.<br />
(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre
que le code vérifie chacune des conditions : le 1) est validé si la
valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc..
le *) désigne toutes les valeurs, et est donc validé si aucune autre
valeur n'a précédemment acceptée.</p>
<p>Quelques notions manquent ici:<br />
- les nombres aléatoires sont générés par un appel a la variable
\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a
16 bits donc). il est possible de faire des invocations a des nombres
aléatoires plus grands, mais les méthodes permettant de faire cela sont
plus complexes, et je ne les aborderai donc pas ici.<br />
- comme vous avez pu le constater, les variables sont désignées en tant
que telles par l'utilisation d'un symbole \$ au début de leur nom.
Ainsi, echo number renverra "number", tandis que echo \$number renverra
le résultat de la variable \$number.<br />
être utilisées dans un programme bash.<br />
- comme vous avez pu le constater, les commandes doivent tenir en
théorie en une ligne. Cependant, le caractère \ permet de retourner a
la ligne en faisant considérer a bash qu'il s'agit de la même ligne.</p>
<p>Globalement, il faut admettre que bash n'a pas vocation a être un
langage de programmation extrêmement développé. Sans framework
graphique, avec peu de manières d'utiliser de grandes variables, ou
encore une gestion de la mémoire risible, bash n'a rien d'un langage de
développement professionnel.<br />
Cependant, le simple fait qu'il soit considéré comme un langage de
programmation a part entière font de lui un langage de script d'une
puissance incontestable, et sa simplicité et sa grande popularité font
de lui un langage de choix pour apprendre la programmation simplement et
sans trop se prendre la tête.</p>
<p>J'espère que cet article aura été utile a certain-e-s, et je vous
souhaite bonne chance dans votre découverte de la programmation (n'allez
pas voir ceux qui font de l'orienté objet, c'est des méchants :3)</p></div>
</div>
<hr />
<section id="content" class="body">
<h1>Pages</h1>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,646 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Wxcafé - Teaching</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/ssl-starttls/">SSL - STARTTLS</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2015-05-16T02:00:00+02:00">
<i class="icon-calendar"></i> Sat 16 May 2015
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Le chiffrement SSL pour les services en ligne est un problème relativement
récent, par rapport a l&rsquo;histoire d&rsquo;Internet. Sa mise en place pose
problème : les protocoles existants ne s&rsquo;accommodent qu&rsquo;assez mal de recevoir
soudainement un flot de données chiffrées, mais développer de nouveaux
protocoles est complexe et n&rsquo;apporte rien d&rsquo;intéressant. Pour palier a ce
problème, deux solutions sont apparues.</p>
<p>Le première consiste à faire écouter les services sur un
autre port, dans un tunnel SSL. De cette façon, le service existant écoute
normalement, mais il ne répond pas directement aux requêtes. A la place, un
tunnel SSL est mis en place, et les requêtes et les réponses passent dans le
tunnel (ou elles apparaissent donc chiffrées pour l&rsquo;extérieur). Cela permet de
proposer un service chiffré en modifiant de façon minimale le programme, au prix
de devoir aussi changer tous les clients, et de devoir les orienter sur un autre
port.</p>
<p>L&rsquo;autre approche qui a été utilisée est une approche d&rsquo;<em>upgrade</em>. La
communication commence en mode non chiffré, puis le client demande l&rsquo;upgrade de
la connexion vers le mode chiffré s&rsquo;il le supporte, les deux machines
machines font un <em>handshake</em> SSL et la communication continue a travers le
tunnel SSL. Le service peut continuer a écouter sur son port habituel, et seuls
les clients capables de passer en SSL le feront, ce qui permet de faire la &ldquo;mise
a jour&rdquo; en douceur.</p>
<p>Il est souvent demandé quelle est la meilleure méthode pour mettre en place un
service &ndash; laisser un port pour le SSL et un pour le trafic non chiffré, ou bien
un seul, avec <code>STARTTLS</code>, qui <em>upgrade</em> les connexions si nécessaire.<br />
La réponse est que <code>STARTTLS</code> est plus interessant, pour plusieurs raisons. Tout
d&rsquo;abord, il permet de n&rsquo;utiliser qu&rsquo;un seul port : ça permet de simplifier la
configuration du firewall. En plus de ça, il permet aux clients &ldquo;anciens&rdquo; (ceux
qui ne supportent pas SSL, donc ceux qui devraient être changés) de toujours se
connecter, même si cela signifie que leurs informations seront transmises en
clair. Surtout, il permet d&rsquo;éviter aux utilisateurs d&rsquo;avoir a configurer leurs
clients. Si le client supporte le chiffrement, il l&rsquo;activera de lui même s&rsquo;il
voit qu&rsquo;il est disponible.<br />
Bref, mettez en place du <code>STARTTLS</code>, et pas du SSL. C&rsquo;est mieux pour la sécurité
de tout le monde.</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/les-systemes-de-fichiers/">Les systèmes de fichiers</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-25T10:28:00+02:00">
<i class="icon-calendar"></i> Tue 25 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Un système de fichiers. Vous en avez surement déjà entendu parlé si vous
avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous
connaissez surement NTFS, EXT4, ou encore FAT32.</p>
<p>Ces différents noms désignent en effet des systèmes de fichiers. Mais
qu'est-ce qu'un système de fichiers?</p>
<p>Pour comprendre cela, il faut déjà savoir ce qu'est exactement un
fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la
plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio
(<a href="http://fr.wikipedia.org/wiki/Kibioctet#Multiples_normalis.C3.A9s">kibioctet</a>), en fonction du système de fichier utilisé.), qui est
donc composé de bits, interprétés différemment en fonction du type de
fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il
n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent,
ou il commence ni où il s'arrête (je schématise un peu, mais c'est
l'idée). </p>
<p>Ainsi, le système de fichier donne un cadre et un standard à
l'arborescence des fichiers. Par exemple, le système de fichier ext4
utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de
disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio
et mesurer la taille des fichiers en blocs de cette façon. Les systèmes
de fichiers nécessitent l'inclusion de drivers dans le noyau pour
pouvoir être pris en compte. </p>
<p>Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs,
reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu
près tout type de partition récente.</p>
<p>Il convient de bien faire la différence entre le système de fichier et
l'arborescence des fichiers. Si l'arborescence des fichiers est en fait
une entité virtuelle englobant la racine / et tous les fichiers et
dossiers contenus dedans, le système de fichier permet a votre système
GNU/Linux de distinguer les différents fichiers composants cette
arborescence.</p>
<p>Détaillons maintenant les types de fichiers les plus répandus:</p>
<ul>
<li>
<p>FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table,
soit la définition d'un système de fichier), remplissent leur rôle le
plus simplement possible. Ne permettant (historiquement) que des noms de
8 caractères (plus extension de trois caractères), ni chiffrement, ni
système de distinction d'utilisateurs (DOS étant un système
mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32,
utlisants respectivement des blocs de 16 et 32 Kio.</p>
</li>
<li>
<p>NTFS :. Le NTFS (pour New Technology File System, rapport a Windows
NT) est un système de fichier qui est apparu avec Windows XP, et qui
était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a
FAT différentes capacités dont le chiffrement, les liens symboliques, la
compression et les quotas pour les volumes, permettant de limiter la
taille maximum occupée dans une partition.</p>
</li>
<li>
<p>ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012.
Ne différant pas énormément de NTFS, je le mentionne principalement
parce qu'il est prévu qu'il soit le défaut pour Windows 8.
Il apporte principalement la redondance, c'est a dire que chaque
fichier possède une somme de contrôle en 64 bits stockée dans un fichier
séparé pour éviter les corruption de disque.</p>
</li>
<li>
<p>Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers
les plus utilisés sous linux pour le grand public. (Je traiterai ici
d'ext4, puisque c'est le plus récent.) Il dispose de toutes les
fonctions que l'on peut attendre d'un système de fichiers moderne, ni
plus ni moins. Ainsi, ext4 est un système de fichiers journalisé,
acceptant les capacités jusquà 1 Exioctet, et utilise l'allocation dite
"par extent", ce qui signifie que la création d'un fichier réserve
automatiquement les zones contiguës de façon a réduire la fragmentation.</p>
</li>
<li>
<p>ReiserFS : ce système de fichiers, créé par le (légèrement mégalo)
programmeur Hans Reiser, est a retenir pour avoir été le premier système
de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des
4 milliards. Le but de ce système est de créer un système polyvalent, a
la fois système de fichiers et base de donnée (de part sa grande
capacité en terme de nombre de fichiers et de l'utilisation d'un
journal.)</p>
</li>
<li>
<p>Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi
l'allocation par extent, mais possède de plus un système de
sous-volumes, qui permet daccéder a plusieurs arborescences de fichiers
montées en même temps (système pratique et utile pour faire des
snapshots de systèmes.). Il permet aussi de redimensionner a chaud la
taille des partitions, en les agrandissant ou en les rétrécissant, est
compatible avec <a href="http://fr.wikipedia.org/wiki/LVM">LVM</a>, a un système de checking intégré (btrfsck), et
utilise un algorithme de compression appelé LZ4, qui accélère les accès
aux fichiers compressés d'environ 30% par rapport a LZO, le système
utilisé dans ext4.</p>
</li>
<li>
<p>HFS+ : le système de fichier présent sur tous les macs a des capacités
relativement standards, et ressemble énormément a l'ext3. Il supporte
cependant les liens directs vers les dossiers, fonction rare sur les
systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau
dans les années a venir</p>
</li>
<li>
<p>ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux
et *BSD, est, tel Btrfs, a la fois un système de fichier et un
remplaçant/compatible avec LVM, C'est un système de fichiers conçu
principalement pour les serveurs, et il intègre ainsi un système de
redondance des données pour éviter les corruptions, un mode RAID-Z
(apparenté au RAID5), des checks dintégrité en continu, des snapshots,
etc...</p>
</li>
</ul>
<p>Comme on a pu le voir, les systèmes de fichiers disponibles sont
légions. Cependant, le plus adapté a Linux et a une utilisation grand
public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier
n'est pas aujourd'hui proposé par défaut sur les distributions les plus
utilisées, au profit de l'ext4, qui commence a accuser son âge...</p>
<p>Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au
fonctionnement du système, sont en fait de première importance, et ce
choix ne devrait pas être laissé au hasard, et être mis a jour
régulièrement (pour éviter les failles de sécurité...)</p>
<p>Bon courage, et bon choix pour votre prochain système.</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/les-differentes-couches-dun-systeme-dexploitation/">Les différentes couches d'un système d'exploitation</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-06T23:29:00+02:00">
<i class="icon-calendar"></i> Thu 06 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques
années (plus ou moins, parce que j'ai toujours un Windows en dual boot,
principalement pour les jeux (possiblement plus pour longtemps, avec
l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou
moins bien mon système. Or il y a plusieurs choses a savoir sur les
systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est
le système de couches.</p>
<p>Un système d'exploitation (de type UNIX, \&lt;troll>enfin un vrai système quoi.
\&lt;/troll>) incorpore plusieurs systèmes de couches.</p>
<p>Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique,
c'est a dire que tous les composants sont intégrés au kernel. Ce qui
signifie que rien ne peut être ajouté au noyau sans recompiler celui ci.
Or, quand on sait que le noyau comprend entre autres les drivers du
matériel et des systèmes de fichier, cela peut poser des problèmes quand
a la taille du kernel et a la licence libre de ce dernier. </p>
<p>Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui
signifie que des modules peuvent être chargé a tout moment en cours
dexécution, ce qui permet l'utilisation de nouveaux systèmes de
fichiers a chaud, ou l'insertion de matériel et l'installation de
drivers sans interrompre lexécution du système (Windows utilise un
système de fausse installation de drivers pour le matériel externe, et
un système de pré-installation des drivers pour les périphériques dits
"plug and play")</p>
<p>Après le noyau intervient le système. Or, au tous premiers instants du
boot, les systèmes GNU/Linux utilisent un système permettant de limiter
l'utilisation de ressources systèmes si elles ne sont pas nécessaires,
et incorpore ainsi un système dit de "runlevels"</p>
<p>Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce
runlevel permet de tester le bon démarrage du système sans avoir a
effectuer de manipulation pour le ré-éteindre</p>
<p>Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté
étant donné que ce runlevel donne accès a un système en étant
automatiquement loggé en tant que root, avec tous les autres
utilisateurs désactivés, de même que tous les systèmes de réseaux</p>
<p>Le runlevel 2 est appelé mode multi user, et vous mets en face d'un
système classique. en ligne de commande, mais avec tous les systèmes de
réseau désactivés.</p>
<p>Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux
activés.</p>
<p>Le runlevel 4 n'est pas officiellement défini, et est censé être
activable en fonction des besoins de l'utilisateur. Sur la plupart des
distributions grand public, ce runlevel est lié au...</p>
<p>Runlevel 5! Multi-user, networking, with working GUI! c'est le système
tel que vous le connaissez, avec l'interface graphique et le système de
login graphique.</p>
<p>Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine
quand il devient le runlevel courant.</p>
<p>(Il est a noter que Debian, et donc toutes les distribs qui en sont
dérivées, ne font pas de distinction entre les differents runlevels du 2
au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login
et une interface graphique, et un mode réseau fonctionnel, bref avec des
fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)</p>
<p>Il est possible de changer de runlevel grâce a la commande runlevel
(oui, c'est évident...)</p>
<p>Les systèmes Linux utilisent aussi un système dit de SandBox , qui en
informatique est un système permettant d'isoler les processus les uns
des autres. Ainsi, la pile réseau, qui est le système auquel les
différents processus envoient les différents paquets qui doivent sortir
de la machine , et qui redistribue ces paquets, est isolée du reste du
système, en cela qu'aucun des autres processus ne peuvent modifier cette
pile hors du runlevel 1 ou 2.</p>
<p>De la même façon, le navigateur chrom/ium fait fonctionner tous les
onglets, ainsi que toutes les extensions, dans des processus différents.
Certaines distributions linux implémentent un système de cette sorte
pour toutes les applications, ou seulement pour certaines. ainsi Chakra
Linux a un système d'installation d'applications dans des disques
virtuels, ce qui permet une sécurité totale du processus.</p>
<p>Voila, j'espère vous en avoir appris un peu sur le fonctionnement des
différentes couches de linux, et j'espère que cet article vous poussera
a tester un peu votre système et a vous amuser avec les différents
runlevels</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/la-programmation-expliquee-simplement/">La programmation expliquée simplement</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-08-27T00:22:00+02:00">
<i class="icon-calendar"></i> Mon 27 August 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Salut!<br />
Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire
récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé
pas mal de temps assez occupé. </p>
<p>Enfin, après un certain temps a farfouiller au millieu des connecteurs
SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques
durs, je suis de retour pour un court article.<br />
Du coup, je m'étais dit que j'allais reprendre sur le thème de
l'informatique expliquée au grand public, en tentant d'aller un peu plus
loin que la dernière fois sur le thème de la programmation<br />
Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur.
Si a peu près tout le monde sait que "les ordinateurs, ils ne
comprennent que les 1 et les 0!", peu de gens savent comment cela
fonctionne en détail. </p>
<p>Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà
des notions de base en informatique. Ainsi, vous savez surement que les
ordinateurs fonctionnent avec des programmes, qui sont composés de
code.<br />
Ainsi, il faut comprendre que le code (source) est "compilé" en un
fichier "binaire". Un fichier binaire est un fichier comprenant les
instructions telles quexécutées par le processeur, et donc absolument
illisible pour un humain. </p>
<p>La compilation est le processus qui transforme le code source en
binaire executable. Les binaires ont, sous Windows, l'extension .exe,
tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension
particulière.<br />
Ceci étant dit, il faut comprendre que certains langages sont plus
proches que d'autres du langage processeur, les langages les plus
proches sont dits de "bas niveau". Les langages les plus éloignés sont
donc dits de haut niveau. </p>
<p>Par exemple, l'assembleur est l'un des languages de plus bas niveau,
tandis que python par exemple est un langage de plus haut niveau. Les
langages de haut niveau sont souvent bien plus simples a comprendre et a
apprendre que les langages de bas niveau </p>
<p>Ainsi, en C, un langage de niveau relativement bas, pour afficher
"hello world" sur l'écran, le code nécessaire est :</p>
<div class="highlight"><pre><span class="cp">#include </span>
<span class="kt">void</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="n">printf</span><span class="p">(</span><span class="s">&quot;hello world&quot;</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
<p>le même programme en python s'écrit :</p>
<div class="highlight"><pre><span class="n">print</span> <span class="s">&quot;hello world&quot;</span>
</pre></div>
<p>et n'a pas besoin d'être compilé , puisqu'il peut être intepreté
directement. </p>
<p>Python utilise en effet un système similaire a Java en ayant un
interpréteur dit "runtime" ou "temps réel", qui interprète le programme
sans le compiler. Java utilise un système légèrement différent, puisque
le code a besoin d'être compilé, mais est interpreté par un interpréteur
et non par le processeur. </p>
<p>Cette méthode permet le fameux "code once, run everywhere", ce qui
signifie que le même code est exécutable sur quasiment tous les systèmes
d'exploitation (en fait, tous ceux sur lesquels linterpréteur est
disponible.)</p>
<p>Voila, je vous laisse sur le fonctionnement de Java et de Python, et je
vais me coucher.<br />
A bientôt!</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere/">GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-08-22T20:33:00+02:00">
<i class="icon-calendar"></i> Wed 22 August 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>GNU/Linux est un vaste et extraordinaire territoire technologique, mais
je ne vais pas m'attarder ici sur les aspects profondément techniques de
ce territoire pour faire plutôt une sorte d'introduction a ce qu'est
vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de
connaissances en informatique.</p>
<p>GNU/Linux, que jabrégerai ici en Linux pour plus de simplicité, est un
Système d'Exploitation. Un système d'exploitation est, pour simplifier,
un ensemble d'outils informatiques qui vous permettent d'utiliser votre
ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation
de système d'exploitation (Operating System en anglais) est OS. Les 4
principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et
Solaris. Les trois derniers sont issus d'un autre système, plus ancien,
nommé UNIX.</p>
<p>De ce fait, on pourrait penser que Linux remplace complètement Windows
une fois installé, et comprend une interface graphique, et toutes sortes
d'utilitaires permettant a l'utilisateur d'utiliser le système (sous
Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer.
Pour l'interface graphique, pensez a... Pensez que votre système affiche
autre chose que des lignes de commande.) Or non, une fois installé,
Linux en lui même ne vous afficherait aucune interface graphique, et
s'il est effectivement livré avec des utilitaires, ils ne sont que des
programmes en ligne de commande. Autant les utilisateurs avancés sauront
s'en servir, et pourront argumenter que c'est plus efficace ou plus
rapide, autant les utilisateurs basiques préfèrent une interface
graphique. Alors comment en obtenir une?</p>
<p>Ici, il convient de faire une précision importante. Si il n'existe
qu'une seule version de Windows, ou de Mac OS, il existe en fait
plusieurs centaines de "versions" différentes de Linux. Appelées
distributions, ces dernière sont développées par des groupes
complètement séparés, et se basent sur le fait que Linux soit
entièrement placé sous licence libre (ce qui leur permet de l'utiliser a
leur guise, a condition que leur travail soit lui aussi placé sous
licence libre). De ce fait, de nombreuses distributions existent et se
développent en parallèle. On peut ainsi citer <a href="http://debian.org">Debian</a>, qui est l'une
des distributions les plus importantes, ou encore <a href="http://ubuntu.com">Ubuntu</a>, qui est
l'une des plus connues et des plus simples a utiliser.</p>
<p>Ainsi, ces distributions intègrent une interface graphique. Cependant,
grâce a la liberté dont bénéficient les développeurs sous Linux, il
existe de nombreuses interfaces graphiques différentes : <a href="unity.ubuntu.com">Unity</a>, la
nouvelle interface d'Ubuntu; <a href="gnome.org">GNOME</a> , une interface qui vise a la
simplicité; ou encore <a href="http://kde.org/">KDE</a>, une interface utilisateur ressemblant a
Windows 7.</p>
<p>Ainsi, le choix astronomique de distributions Linux a bien un sens :
chacune d'entre elle intègre des outils différents. Par exemple, Debian
intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend
particulièrement stable. Ubuntu intègre Unity, ce qui en fait une
distribution particulièrement intuitive. Linux Mint intègre Cinnamon,
qui est une version dérivée de GNOME 3, ce qui permet encore une autre
expérience. Et Arch Linux n'intègre pas d'interface graphique du tout,
ce qui permet a l'utilisateur de choisir entre les multiples interfaces
existantes.</p>
<p>Ce qu'il est important de retenir de cela, c'est que Linux est un OS
complètement libre, ce qui signifie que n'importe qui peut modifier et
utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi,
Linux est un OS qui est véritablement créé par des passionnés, pour tous
et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué
a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus.
Cependant, Linux donne la possibilité a l'utilisateur de le rendre
affreusement complexe, mais aussi de le rendre adapté a ses besoins,
quels que soient ceux ci. Et c'est la que réside l'incroyable puissance
de ce Système d'Exploitation. Il est extraordinairement adaptable.</p>
<p>N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas
technophiles. Ils pourraient adorer, et peut être même le devenir :)</p>
<p>A bientôt!</p></div>
</div>
<hr />
<section id="content" class="body">
<h1>Pages</h1>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,582 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Wxcafé - Tutorial</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/opensmtpd-debian/">OpenSMTPd comme serveur mail sous debian</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2014-11-07T13:04:00+01:00">
<i class="icon-calendar"></i> Fri 07 November 2014
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafé</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/"><i class="icon-folder-open"></i>Tutorial</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>J'avais dit il y a un certain temps que j'allais écrire un tutoriel expliquant
comment gérer ses mails soi-même. Il se trouve que j'ai récemment décidé de
changer le serveur qui héberge (entre autres) ce blog, et que ce dernier héberge
aussi mes emails. J'ai donc totalement changé d'infrastructure quand a la
gestion de mon système de mails.</p>
<p>Ainsi, j'ai décidé de passer de Postfix a OpenSMTPd, changement que je voulais
effectuer depuis un certain temps. <a href="https://opensmtpd.org">OpenSMTPd</a> est un
projet originaire d'<a href="http://openbsd.org">OpenBSD</a> qui a pour but de fournir un
serveur SMTP fiable, simple, rapide, et surtout sécurisé (les même buts que ceux
qu'a le projet OpenBSD, globalement).</p>
<p>Pour rappel, le système d'emails fonctionne d'une façon très simple : votre MUA
(Mail User Agent, ou client email) contacte le MTA (Mail Transport Agent, ou
serveur SMTP) de votre fournisseur email, qui contacte le MTA du fournisseur du
destinataire, qui lui même contacte le MDA (Mail Delivery Agent) qui délivre le
mail au destinataire.</p>
<p>Si vous avez bien suivi, vous pouvez voir que je n'ai pas parlé de récupération
ni de lecture des mails. C'est pour une raison simple, qui est que ces taches
sont remplies par d'autres services encore (IMAP/POP pour la récupération depuis
le serveur, des yeux pour la lecture).</p>
<p>Or ce qui nous intéresse ici, ce n'est pas simplement d'envoyer et de recevoir
des emails mais bien aussi de pouvoir les récupérer et les lire, et c'est pour
ça que ce tutoriel ne parlera pas que d'OpenSMTPd mais aussi de
<a href="http://dovecot.org/">Dovecot</a> qui fait office de serveur IMAP et
<a href="http://www.ijs.si/software/amavisd/">amavis</a>/<a href="http://spamassassin.apache.org/">spamassassin</a>
pour filtrer les mails entrants et sortants.
Le schéma suivant explique la façon dont les mails sont gérés sur le système</p>
<div class="highlight"><pre> <span class="err">╭────────────────╮</span> <span class="err">╭──────────╮</span>
<span class="err">│╭──────────────</span><span class="o">&gt;</span><span class="err">│────</span><span class="o">&gt;</span> <span class="n">to</span> <span class="n">filter</span> <span class="err">───</span><span class="o">&gt;</span><span class="err">│─╮</span> <span class="err"></span>
<span class="n">mail</span> <span class="n">in</span> <span class="err">││</span> <span class="err"></span> <span class="err"></span> <span class="err"></span> <span class="n">amavis</span> <span class="err"></span>
<span class="err">───────────</span><span class="o">&gt;</span><span class="err">│╯</span> <span class="n">OpenSMTPd</span> <span class="err">╭──│</span><span class="o">&lt;</span><span class="err">───</span> <span class="n">from</span> <span class="n">filter</span><span class="o">&lt;</span><span class="err">───│</span><span class="o">&lt;</span><span class="err"></span> <span class="err"></span>
<span class="err"></span> <span class="err"></span> <span class="err"></span> <span class="err">╰──────────╯</span>
<span class="n">mail</span> <span class="n">out</span> <span class="err"></span> <span class="err"></span> <span class="err"></span> <span class="err">╭──────────╮</span>
<span class="o">&lt;</span><span class="err">───────────│</span><span class="o">&lt;</span><span class="err">────────────┴─</span><span class="o">&gt;</span><span class="err">│─────</span><span class="o">&gt;</span> <span class="n">to</span> <span class="n">MDA</span> <span class="err">─────</span><span class="o">&gt;</span><span class="err">│─────────</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">to</span> <span class="n">user</span><span class="err">&#39;</span><span class="n">s</span>
<span class="err"></span> <span class="err"></span> <span class="err"></span> <span class="n">dovecot</span> <span class="err"></span> <span class="n">mailbox</span>
<span class="err">╰────────────────╯</span> <span class="err">╰──────────╯</span>
</pre></div>
<p>Normalement, ceci devrait être a peu près clair.
Pour expliquer vite fait, les emails entrants (venant des utilisateurs mais
aussi d'autres correspondants) sont transmis a OpenSMTPd, qui envoie tout a
<code>amavis</code>, qui vérifie a la fois les spams et les malwares pour les mails
venants de l'exterieur, et qui signe avec DKIM pour les mails venants de
nos utilisateurs, puis qui rentransmet les mails filtrés/signés a OpenSMTPd,
qui a ce moment-ci trie en fonction de la destination : les mails gérés
par le domaine vont via dovecot dans les boites mail des destinataires
locaux, les mails exterieurs vont directement vers le MTA du serveur
distant.</p>
<p>Voyons comment mettre cela en place. Tout d'abord, il faut décider de la façon
dont les différents services vont communiquer.</p>
<p>Déjà, amavis étant configuré par défaut pour écouter (en SMTP) sur le port
10024 et répondre sur le port 10025 quand il s'agit de filtrer et
écouter sur le port 10026 et répondre sur le port 10027 quand il s'agit de
signer, nous allons profiter de cette configuration et donc lui parler en SMTP
sur ces ports.</p>
<p>Quand a Dovecot, nous allons lui transmettre les emails en LMTP (Local Mail
Transfer Protocol), non pas sur un port mais via un socket (dans ce cas précis,
<code>/var/run/dovecot/lmtp</code>).</p>
<p>Ainsi, pour reprendre le schéma présenté plus haut :</p>
<div class="highlight"><pre> <span class="err">╭───────────────╮</span> <span class="err">╭───────────╮</span>
<span class="err">│╭─────────────</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">SMTP</span> <span class="p">(</span><span class="mi">10026</span><span class="p">)</span> <span class="err">──</span><span class="o">&gt;</span><span class="err">│─╮</span> <span class="err"></span>
<span class="n">SMTP</span> <span class="n">in</span> <span class="err">││</span> <span class="err"></span> <span class="err"></span> <span class="err"></span> <span class="n">amavis</span> <span class="err"></span>
<span class="err">────────</span><span class="o">&gt;</span> <span class="mi">25</span><span class="err">│╯</span> <span class="n">OpenSMTPd</span> <span class="err">╭──│</span><span class="o">&lt;</span><span class="err">──</span> <span class="n">SMTP</span> <span class="p">(</span><span class="mi">10027</span><span class="p">)</span> <span class="o">&lt;</span><span class="err">──│</span><span class="o">&lt;</span><span class="err"></span> <span class="p">(</span><span class="n">sign</span><span class="p">)</span> <span class="err"></span>
<span class="err"></span> <span class="err"></span> <span class="err"></span> <span class="err">╰───────────╯</span>
<span class="n">SMTP</span> <span class="n">out</span> <span class="err"></span> <span class="err"></span> <span class="err"></span>
<span class="mi">25</span> <span class="o">&lt;</span><span class="err">────────│</span><span class="o">&lt;</span><span class="err">───────────╯</span> <span class="err"></span>
<span class="err">╰───────────────╯</span>
</pre></div>
<p>Pour les mails sortants; et</p>
<div class="highlight"><pre> <span class="err">╭───────────────╮</span> <span class="err">╭────────────╮</span>
<span class="err">│╭─────────────</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">SMTP</span> <span class="p">(</span><span class="mi">10024</span><span class="p">)</span> <span class="err">──</span><span class="o">&gt;</span><span class="err">│─╮</span> <span class="err"></span>
<span class="n">SMTP</span> <span class="n">in</span> <span class="err">││</span> <span class="err"></span> <span class="err"></span> <span class="err"></span> <span class="n">amavis</span> <span class="err"></span>
<span class="err">────────</span><span class="o">&gt;</span> <span class="mi">25</span><span class="err">│╯</span> <span class="n">OpenSMTPd</span> <span class="err">╭──│</span><span class="o">&lt;</span><span class="err">──</span> <span class="n">SMTP</span> <span class="p">(</span><span class="mi">10025</span><span class="p">)</span> <span class="o">&lt;</span><span class="err">──│</span><span class="o">&lt;</span><span class="err"></span><span class="p">(</span><span class="n">filter</span><span class="p">)</span> <span class="err"></span>
<span class="err"></span> <span class="err"></span> <span class="err"></span> <span class="err">╰────────────╯</span>
<span class="err"></span> <span class="err"></span> <span class="err"></span> <span class="err">╭────────────╮</span>
<span class="err"></span> <span class="err">╰─</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">LMTP</span> <span class="p">(</span><span class="n">socket</span><span class="p">)</span> <span class="err"></span><span class="o">&gt;</span><span class="err">│───────────</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">to</span> <span class="n">user</span><span class="err">&#39;</span><span class="n">s</span>
<span class="err"></span> <span class="err"></span> <span class="err"></span> <span class="n">dovecot</span> <span class="err"></span> <span class="n">mailbox</span>
<span class="err">╰───────────────╯</span> <span class="err">╰────────────╯</span>
</pre></div>
<p>Pour les mails entrants.</p>
<p>Maintenant que la théorie est claire, mettons en place tout cela. Je me baserai
ici sur le fait que vous utilisiez une plateforme Debian ou OpenBSD. Pour
d'autres plateformes, la configuration devrait être sensiblement la même</p>
<p>(Vous aurez besoin de certificats SSL pour ce guide, même self-signés.
Si vous ne savez pas comment en créer, vous pouvez aller voir <a href="http://wxcafe.net/posts/05/30/14/SSL-ou-la-securite-sur-internet/">ce
post</a>)</p>
<p>Tout d'abord, commençons par installer les programmes nécessaires :</p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">opensmtpd</span> <span class="n">dovecot</span> <span class="n">dovecot</span><span class="o">-</span><span class="n">pigeonhole</span> <span class="n">amavisd</span><span class="o">-</span><span class="n">new</span> <span class="n">dovecot</span><span class="o">-</span><span class="n">managesieved</span>
<span class="n">sudo</span> <span class="n">pkg_add</span> <span class="n">dovecot</span> <span class="n">dovecot</span><span class="o">-</span><span class="n">pigeonhole</span> <span class="n">amavisd</span><span class="o">-</span><span class="n">new</span>
</pre></div>
<p>Continuons en configurant OpenSMTPd tel que nous avons vu plus haut :</p>
<p><code>/etc/smtpd.conf</code></p>
<div class="highlight"><pre><span class="err">#</span> <span class="nx">This</span> <span class="nx">is</span> <span class="nx">the</span> <span class="nx">smtpd</span> <span class="nx">server</span> <span class="nx">system</span><span class="na">-wide</span> <span class="nx">configuration</span> <span class="nx">file.</span>
<span class="err">#</span> <span class="nx">See</span> <span class="nx">smtpd.conf</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="nb">for</span> <span class="nx">more</span> <span class="nx">information.</span>
<span class="err">##</span> <span class="nx">Certs</span>
<span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nx">certificate</span> <span class="s2">&quot;/etc/certs/exem.pl.crt&quot;</span>
<span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nb">key</span> <span class="s2">&quot;/etc/certs/exem.pl.key&quot;</span>
<span class="err">##</span> <span class="nx">Ports</span> <span class="k">to</span> <span class="nb">listen</span> <span class="k">on</span><span class="p">,</span> <span class="ow">and</span> <span class="nx">how</span> <span class="k">to</span> <span class="nb">listen</span> <span class="k">on</span> <span class="nx">them</span>
<span class="nb">listen</span> <span class="k">on</span> <span class="nx">eth0</span> <span class="nb">port</span> <span class="mi">25</span> <span class="nx">tls</span> <span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nb">hostname</span> <span class="nx">exem.pl</span> <span class="nb">auth</span><span class="na">-optional</span>
<span class="nb">listen</span> <span class="k">on</span> <span class="nx">eth0</span> <span class="nb">port</span> <span class="mi">465</span> <span class="nx">tls</span><span class="na">-require</span> <span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nb">hostname</span> <span class="nx">exem.pl</span> <span class="nb">auth</span> <span class="nx">mask</span><span class="na">-source</span>
<span class="nb">listen</span> <span class="k">on</span> <span class="nx">eth0</span> <span class="nb">port</span> <span class="mi">587</span> <span class="nx">tls</span><span class="na">-require</span> <span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nb">hostname</span> <span class="nx">exem.pl</span> <span class="nb">auth</span> <span class="nx">mask</span><span class="na">-source</span>
<span class="err">##</span> <span class="nx">Aliases</span>
<span class="nb">table</span> <span class="nx">aliases</span> <span class="nb">file</span><span class="p">:/</span><span class="nx">etc</span><span class="p">/</span><span class="nx">aliases</span>
<span class="err">#</span> <span class="nx">coming</span> <span class="nb">from</span> <span class="nx">amavisd</span><span class="p">,</span> <span class="nb">checked</span> <span class="nb">for</span> <span class="nx">spam</span><span class="p">/</span><span class="nx">malware</span>
<span class="nb">listen</span> <span class="k">on</span> <span class="nx">lo</span> <span class="nb">port</span> <span class="mi">10025</span> <span class="kt">tag</span> <span class="nx">Filtered</span>
<span class="err">#</span> <span class="nx">coming</span> <span class="nb">from</span> <span class="nx">amavisd</span><span class="p">,</span> <span class="nx">signed</span> <span class="k">with</span> <span class="nx">DKIM</span>
<span class="nb">listen</span> <span class="k">on</span> <span class="nx">lo</span> <span class="nb">port</span> <span class="mi">10027</span> <span class="kt">tag</span> <span class="nx">Signed</span>
<span class="err">##</span> <span class="nx">Receiving</span>
<span class="err">#</span> <span class="k">if</span> <span class="nx">the</span> <span class="p">(</span><span class="nx">incoming</span><span class="p">)</span> <span class="nx">mail</span> <span class="nx">has</span> <span class="nx">been</span> <span class="nx">through</span> <span class="nx">amavisd</span><span class="p">,</span> <span class="nx">then</span> <span class="nx">we</span> <span class="nx">can</span> <span class="nx">deliver</span> <span class="nx">it</span>
<span class="nb">accept</span> <span class="nx">tagged</span> <span class="nx">Filtered</span> <span class="nb">for</span> <span class="nb">any</span> <span class="nx">alias</span> <span class="o">&lt;</span><span class="nx">aliases</span><span class="o">&gt;</span> <span class="nx">deliver</span> <span class="k">to</span> <span class="nx">lmtp</span> <span class="s2">&quot;/var/run/dovecot/lmtp&quot;</span>
<span class="err">#</span> <span class="nx">we</span> <span class="nx">directly</span> <span class="nx">tranfer</span> <span class="nx">incoming</span> <span class="nx">mail</span> <span class="k">to</span> <span class="nx">amavisd</span> <span class="k">to</span> <span class="nx">be</span> <span class="nb">checked</span>
<span class="nb">accept</span> <span class="nb">from</span> <span class="nb">any</span> <span class="nb">for</span> <span class="nx">domain</span> <span class="s2">&quot;exem.pl&quot;</span> <span class="nx">relay</span> <span class="nx">via</span> <span class="s2">&quot;smtp://localhost:10024&quot;</span>
<span class="err">#</span> <span class="nx">we</span> <span class="nx">have</span> <span class="k">to</span> <span class="nx">put</span> <span class="nx">these</span> <span class="n">lines</span> <span class="k">in</span> <span class="nx">this</span> <span class="k">order</span> <span class="k">to</span> <span class="nx">avoid</span> <span class="nx">infinite</span> <span class="nx">loops</span>
<span class="err">##</span> <span class="nx">Sending</span>
<span class="err">#</span> <span class="k">if</span> <span class="nx">the</span> <span class="p">(</span><span class="nx">outgoint</span><span class="p">)</span> <span class="nx">mail</span> <span class="nx">has</span> <span class="nx">been</span> <span class="nx">through</span> <span class="nx">amavisd</span><span class="p">,</span> <span class="nx">then</span> <span class="nx">we</span> <span class="nx">can</span> <span class="nx">deliver</span> <span class="nx">it</span>
<span class="nb">accept</span> <span class="nx">tagged</span> <span class="nx">Signed</span> <span class="nb">for</span> <span class="nb">any</span> <span class="nx">relay</span>
<span class="err">#</span> <span class="nx">we</span> <span class="nx">tranfer</span> <span class="nx">the</span> <span class="nx">outgoing</span> <span class="nx">mail</span> <span class="k">to</span> <span class="nx">amavisd</span> <span class="k">to</span> <span class="nx">be</span> <span class="nx">signed</span>
<span class="nb">accept</span> <span class="nb">for</span> <span class="nb">any</span> <span class="nx">relay</span> <span class="nx">via</span> <span class="s2">&quot;smtp://localhost:10026&quot;</span>
<span class="err">#</span> <span class="nx">same</span><span class="p">,</span> <span class="nx">we</span> <span class="nx">have</span> <span class="k">to</span> <span class="nx">put</span> <span class="nx">these</span> <span class="n">lines</span> <span class="k">in</span> <span class="nx">this</span> <span class="k">order</span> <span class="ow">or</span> <span class="nx">infinite</span> <span class="nx">loops...</span>
</pre></div>
<p>Expliquons un peu ce fichier de configuration :</p>
<ul>
<li>Tout d'abord, le paragraphe nommé "Certs" contient les déclaration
d'emplacement des certificats SSL.</li>
<li>Ensuite, le paragraphe contenant les ports externes sur lesquels nous écoutons :
port 25 avec TLS optionel et ports 465 et 587 avec TLS obligatoire</li>
<li>Les alias sont définis juste après</li>
<li>Le paragraphe suivant contient les ports locaux sur lesquels nous écoutons :
10025 (port de sortie du filtre de amavis) dont on taggue les mails sortants
comme "Filtered" et 10027 (port de sortie des mails signés par amavis) dont on
taggue les mails sortants comme "Signed"</li>
<li>Nous avons ensuite le paragraphe qui traite les mails rentrants. Si le mail
traité est taggué comme Filtered, alors il a été vérifié par amavis, et on
peut donc le transmettre au destinataire. Sinon, c'est qu'il n'a pas encore
été vérifié par amavis, donc on lui transmet pour analyse (sur le port 10024
donc). Il est important de mettre les déclarations dans ce sens, car la
première règle qui matche l'état du paquet est appliquée. Ici, la deuxième
ligne matchant tous les mails arrivant et la première seulement ceux filtrés,
inverser leur sens voudrait dire que les mails seraient toujours renvoyés a
amavis</li>
<li>Enfin, le dernier paragraphe traite les mails sortants. De la même façon que
pour le paragraphe précédent, si le mail sortant est déjà taggué comme Signed
on le transmet au MTA du destinataire, sinon il n'a pas encore été signé par
DKIM par amavis et on le transmet donc a amavis pour qu'il le signe. Le
problème de l'ordre des lignes se pose encore, pour la même raison qu'au
dessus.</li>
</ul>
<p>Nous allons maintenant configurer dovecot. Comme nous l'avons vu, dovecot doit
écouter en LMTP via la socket <code>/var/run/dovecot/lmtp</code> et transmettre les
emails a la boite email de l'utilisateur. Il serait aussi interessant
qu'il nous permette de récuperer les mails. Pour cette configuration, on ne
mettra en place que du IMAPS. Cependant, si vous voulez mettre en place du
POP3[s], différents guides sont trouvables facilement sur internet.</p>
<p><code>/etc/dovecot/dovecot.conf</code></p>
<div class="highlight"><pre><span class="cp">## Dovecot configuration file</span>
<span class="cp"># basic config</span>
<span class="n">info_log_path</span> <span class="o">=</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">log</span><span class="o">/</span><span class="n">dovecot</span><span class="o">-</span><span class="n">info</span><span class="p">.</span><span class="n">log</span>
<span class="n">log_path</span> <span class="o">=</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">log</span><span class="o">/</span><span class="n">dovecot</span><span class="p">.</span><span class="n">log</span>
<span class="n">log_timestamp</span> <span class="o">=</span> <span class="s">&quot;%Y-%m-%d %H:%M:%S &quot;</span>
<span class="n">mail_location</span> <span class="o">=</span> <span class="n">maildir</span><span class="o">:%</span><span class="n">h</span><span class="o">/</span><span class="n">mail</span>
<span class="cp"># authentication</span>
<span class="n">passdb</span> <span class="p">{</span>
<span class="n">driver</span> <span class="o">=</span> <span class="n">pam</span>
<span class="p">}</span>
<span class="n">userdb</span> <span class="p">{</span>
<span class="n">driver</span> <span class="o">=</span> <span class="n">passwd</span>
<span class="p">}</span>
<span class="cp"># the protocols we use</span>
<span class="n">protocols</span> <span class="o">=</span> <span class="n">imap</span> <span class="n">lmtp</span> <span class="n">sieve</span>
<span class="cp"># ssl config</span>
<span class="n">ssl_cert</span> <span class="o">=</span> <span class="o">&lt;/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">exem</span><span class="p">.</span><span class="n">pl</span><span class="p">.</span><span class="n">cert</span>
<span class="n">ssl_key</span> <span class="o">=</span> <span class="o">&lt;/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">exem</span><span class="p">.</span><span class="n">pl</span><span class="p">.</span><span class="n">key</span>
<span class="n">ssl_cipher_list</span> <span class="o">=</span> <span class="n">HIGH</span><span class="o">+</span><span class="n">kEDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">+</span><span class="n">kEECDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">:!</span><span class="n">PSK</span><span class="o">:!</span><span class="n">SRP</span><span class="o">:!</span><span class="mi">3</span><span class="n">DES</span><span class="o">:!</span><span class="n">aNULL</span>
<span class="n">ssl</span> <span class="o">=</span> <span class="n">yes</span>
<span class="cp">## configuring services </span>
<span class="cp"># disables imap login without SSL (yes dovecot is dumb that way)</span>
<span class="n">service</span> <span class="n">imap</span><span class="o">-</span><span class="n">login</span> <span class="p">{</span>
<span class="n">inet_listener</span> <span class="n">imap</span> <span class="p">{</span>
<span class="n">port</span><span class="o">=</span><span class="mi">0</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="n">service</span> <span class="n">lmtp</span> <span class="p">{</span>
<span class="n">unix_listener</span> <span class="n">lmtp</span> <span class="p">{</span>
<span class="n">mode</span> <span class="o">=</span> <span class="mo">0666</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="cp">## configuring protocols</span>
<span class="cp"># the dovecot lda, we set it to use sieve</span>
<span class="n">protocol</span> <span class="n">lda</span> <span class="p">{</span>
<span class="n">mail_plugins</span> <span class="o">=</span> <span class="err">$</span><span class="n">mail_plugins</span> <span class="n">sieve</span>
<span class="p">}</span>
<span class="n">protocol</span> <span class="n">lmtp</span> <span class="p">{</span>
<span class="n">postmaster_address</span> <span class="o">=</span> <span class="n">whoever</span><span class="err">@</span><span class="n">exem</span><span class="p">.</span><span class="n">pl</span>
<span class="n">mail_plugins</span> <span class="o">=</span> <span class="err">$</span><span class="n">mail_plugins</span> <span class="n">sieve</span>
<span class="p">}</span>
<span class="n">plugin</span> <span class="p">{</span>
<span class="n">sieve</span> <span class="o">=</span> <span class="o">~/</span><span class="p">.</span><span class="n">dovecot</span><span class="p">.</span><span class="n">sieve</span>
<span class="n">sieve_dir</span> <span class="o">=</span> <span class="o">~/</span><span class="n">sieve</span>
<span class="p">}</span>
</pre></div>
<p><strong>ATTENTION: Sous OpenBSD, remplacez</strong></p>
<div class="highlight"><pre><span class="n">passdb</span> <span class="p">{</span>
<span class="n">driver</span> <span class="o">=</span> <span class="n">pam</span>
<span class="p">}</span>
</pre></div>
<p><strong>par</strong></p>
<div class="highlight"><pre><span class="n">passdb</span> <span class="p">{</span>
<span class="n">driver</span> <span class="o">=</span> <span class="n">bsdauth</span>
<span class="p">}</span>
</pre></div>
<p><strong>pour identifier les utilisateurs système</strong></p>
<p>Ici aussi, voyons comment ce fichier est structuré :</p>
<ul>
<li>Tout d'abord, les configurations de base : ou iront les logs, comment formater
leur datation, et l'endroit ou seront stockés les mails des utilisateurs.</li>
<li>Nous configurons ensuite la gestion de l'authentification des utilisateurs.
Ici nous identifions les utilisateurs avec le fichier /etc/passwd et leurs
mots de passe avec PAM (ou BSDAuth)</li>
<li>Nous configurons ensuite les protocoles que nous servons. Ici, nous voulons de
l'IMAPS, du LMTP local et Sieve (qui sert pour trier les messages).</li>
<li>Nous configurons le SSL</li>
<li>Le section suivante contient la configuration des services. Nous avons en
premier lieu le service IMAP, dont la configuration sert uniquement a
désactiver IMAP. En effet, dovecot ne permet d'activer IMAPS qu'en activant
IMAP avec. Comme nous ne voulons pas d'IMAP sans SSL, nous le désactivons.
La configuration de lmtp sert a attribuer des permissions plus correctes au
fifo qu'il utilise</li>
<li>Nous configurons maintenant les protocoles, pour faire fonctionner Sieve</li>
<li>enfin, nous configurons le plugin sieve en lui indiquant quel fichier et
quel dossier utiliser pour sa configuration.</li>
</ul>
<p>Enfin, il nous reste a configurer amavis. Comme expliqué, amavis va nous servir
a deux choses : signer les emails sortants, et filtrer les emails entrants. Il
doit donc écouter sur les port 10026 pour les signatures et 10024 pour le
filtrage, et répondre respectivement sur les ports 10027 et 10025 (le tout, en
SMTP. Comme toutes les transactions se font sur le loopback, il n'y a aucun
risque a utiliser des protocoles non chiffrés.
Pour OpenBSD, pensez a copier la configuration par défaut depuis
<code>/usr/local/share/examples/amavisd-new/amavisd.conf</code> et ajoutez les
modifications nécessaires a la fin du fichier.</p>
<p><code>/etc/amavis/conf.d/99-local.conf</code> (debian)
<code>/etc/amavis.conf</code> (OpenBSD)</p>
<div class="highlight"><pre><span class="n">use</span> <span class="n">strict</span><span class="p">;</span>
<span class="err">$</span><span class="n">enable_dkim_verification</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="err">$</span><span class="n">enable_dkim_signing</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="n">dkim_key</span><span class="p">(</span><span class="s">&quot;exem.pl&quot;</span><span class="p">,</span> <span class="s">&quot;main&quot;</span><span class="p">,</span> <span class="s">&quot;/etc/certs/dkim.key&quot;</span> <span class="p">);</span>
<span class="err">@</span><span class="n">dkim_signature_options_bysender_maps</span> <span class="o">=</span> <span class="p">(</span>
<span class="p">{</span> <span class="sc">&#39;.&#39;</span> <span class="o">=&gt;</span>
<span class="p">{</span> <span class="n">ttl</span> <span class="o">=&gt;</span> <span class="mi">21</span><span class="o">*</span><span class="mi">24</span><span class="o">*</span><span class="mi">3600</span><span class="p">,</span> <span class="n">c</span> <span class="o">=&gt;</span> <span class="err">&#39;</span><span class="n">relaxed</span><span class="o">/</span><span class="n">simple</span><span class="err">&#39;</span> <span class="p">}</span>
<span class="p">}</span>
<span class="p">);</span>
<span class="err">$</span><span class="n">inet_socket_port</span> <span class="o">=</span> <span class="p">[</span><span class="mi">10024</span><span class="p">,</span> <span class="mi">10026</span><span class="p">];</span>
<span class="err">$</span><span class="n">policy_bank</span><span class="p">{</span><span class="err">&#39;</span><span class="n">MYNETS</span><span class="err">&#39;</span><span class="p">}</span> <span class="o">=</span> <span class="p">{</span>
<span class="n">originating</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">,</span>
<span class="n">os_fingerprint_method</span> <span class="o">=&gt;</span> <span class="n">undef</span><span class="p">,</span>
<span class="p">};</span>
<span class="err">$</span><span class="n">interface_policy</span><span class="p">{</span><span class="err">&#39;</span><span class="mi">10026</span><span class="err">&#39;</span><span class="p">}</span> <span class="o">=</span> <span class="err">&#39;</span><span class="n">ORIGINATING</span><span class="err">&#39;</span><span class="p">;</span>
<span class="err">$</span><span class="n">policy_bank</span><span class="p">{</span><span class="err">&#39;</span><span class="n">ORIGINATING</span><span class="err">&#39;</span><span class="p">}</span> <span class="o">=</span> <span class="p">{</span>
<span class="n">originating</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">,</span>
<span class="n">allow_disclaimers</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">,</span>
<span class="n">virus_admin_maps</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="s">&quot;root\@$mydomain&quot;</span><span class="p">],</span>
<span class="n">spam_admin_maps</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="s">&quot;root\@$mydomain&quot;</span><span class="p">],</span>
<span class="n">warnbadhsender</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">,</span>
<span class="n">forward_method</span> <span class="o">=&gt;</span> <span class="err">&#39;</span><span class="n">smtp</span><span class="o">:</span><span class="n">localhost</span><span class="o">:</span><span class="mi">10027</span><span class="err">&#39;</span><span class="p">,</span>
<span class="n">smtpd_discard_ehlo_keywords</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="err">&#39;</span><span class="mi">8</span><span class="n">BITMIME</span><span class="err">&#39;</span><span class="p">],</span>
<span class="n">bypass_banned_checks_maps</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="mi">1</span><span class="p">],</span>
<span class="n">terminate_dsn_on_notify_success</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">,</span>
<span class="p">};</span>
<span class="cp">#------------ Do not modify anything below this line -------------</span>
<span class="mi">1</span><span class="p">;</span> <span class="err">#</span> <span class="n">ensure</span> <span class="n">a</span> <span class="n">defined</span> <span class="k">return</span>
</pre></div>
<p>A nouveau, expliquons ce fichier :
- le premier paragraphe définit que nous voulons qu'amavis signe les emails
sortants, vérifie la signature DKIM des emails rentrants, et l'endroit ou se
trouve la clé privée servant a signer les emails.
- le second définit les options DKIM que nous souhaitons utiliser comme défaut.
Je vous invite a consulter la <a href="https://tools.ietf.org/html/rfc4871">RFC 4871</a>
- nous définissons ensuite les ports sur lesquels nous allons écouter, puis les
paramètres que nous utiliserons pour les emails venant de nos utilisateurs :
ils seront traités comme "originating" et nous ne vérifierons pas l'OS duquel
ils viennent.
- nous savons que les emails venants du port 10026 sont sortants, nous les
traitons donc comme tel
- le paragraphe suivant décrit le traitement que nous faisons subir aux emails
sortants : tout d'abord, nous réaffirmons qu'ils viennent bien de notre
serveur. Nous autorisons les disclaimers (voire encore une fois la <a href="https://tools.ietf.org/html/rfc4871">RFC
4871</a>. Nous déclarons l'adresse a
prévenir en cas de spam/virus venants de notre système, et que nous voulons
être prévenus. Nous déclarons ou envoyer les mails une fois signés et filtrés,
puis qu'il est nécessaire de convertir les emails au format 7 bits avant de
les envoyer au MTA, que nous autorisons tous les types et noms de fichiers, et
les notifications de succès d'envoi. Et voila!</p>
<p>Vous avez pu remarquer qu'a aucun moment nous ne configurions ni la signature
des emails sortants ni le filtrage des emails entrants. Ces paramètres sont en
fait inclus par défaut dans amavis.</p>
<p>Il nous reste cependant quelques opérations a faire, encore.
Tout d'abord, il nous faut générer notre clé DKIM. Pour cela, il existe
différentes méthodes, j'ai personnellement utilisé opendkim (<a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy">un
tutorial</a>)
mais de nombreuses autre méthodes existent.
Il nous reste encore a configurer spamassassin :</p>
<div class="highlight"><pre><span class="cp">#rewrite_header Subject *****SPAM*****</span>
<span class="cp"># report_safe 1</span>
<span class="n">required_score</span> <span class="mf">2.0</span>
<span class="cp"># use_bayes 1</span>
<span class="cp"># bayes_auto_learn 1</span>
<span class="cp"># bayes_ignore_header X-Bogosity</span>
<span class="cp"># bayes_ignore_header X-Spam-Flag</span>
<span class="cp"># bayes_ignore_header X-Spam-Status</span>
<span class="n">ifplugin</span> <span class="n">Mail</span><span class="o">::</span><span class="n">SpamAssassin</span><span class="o">::</span><span class="n">Plugin</span><span class="o">::</span><span class="n">Shortcircuit</span>
<span class="cp"># shortcircuit USER_IN_WHITELIST on</span>
<span class="cp"># shortcircuit USER_IN_DEF_WHITELIST on</span>
<span class="cp"># shortcircuit USER_IN_ALL_SPAM_TO on</span>
<span class="cp"># shortcircuit SUBJECT_IN_WHITELIST on</span>
<span class="cp"># shortcircuit USER_IN_BLACKLIST on</span>
<span class="cp"># shortcircuit USER_IN_BLACKLIST_TO on</span>
<span class="cp"># shortcircuit SUBJECT_IN_BLACKLIST on</span>
<span class="n">shortcircuit</span> <span class="n">ALL_TRUSTED</span> <span class="n">off</span>
<span class="cp"># shortcircuit BAYES_99 spam</span>
<span class="cp"># shortcircuit BAYES_00 ham</span>
<span class="n">endif</span> <span class="err">#</span> <span class="n">Mail</span><span class="o">::</span><span class="n">SpamAssassin</span><span class="o">::</span><span class="n">Plugin</span><span class="o">::</span><span class="n">Shortcircuit</span>
</pre></div>
<p>Comme vous pouvez le voir, les modifications se résument globalement a baisser
le required_score pour ma part.</p>
<p>Pour finir, activez les services nécessaires : opensmtpd, dovecot, amavisd, et
spamassassin, et tout devrait fonctionner parfaitement</p>
<p>Bon courage pour votre hosting de mail ensuite...</p></div>
</div>
<hr />
<section id="content" class="body">
<h1>Pages</h1>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Wxcafé</title><link href="file:///home/wxcafe/code/blog-source/output/" rel="alternate"></link><link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.language.xml" rel="self"></link><id>file:///home/wxcafe/code/blog-source/output/</id><updated>2012-09-18T19:07:00+02:00</updated><entry><title>Le Quenya - Épisode ø</title><link href="file:///home/wxcafe/code/blog-source/output/posts/le-quenya-episode-o/" rel="alternate"></link><updated>2012-09-18T19:07:00+02:00</updated><author><name>Wxcafe</name></author><id>tag:,2012-09-18:home/wxcafe/code/blog-source/output/posts/le-quenya-episode-o/</id><summary type="html">&lt;p&gt;Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusquà il y
a peu...), le nom que donnait Tolkien au dialecte principal parlé par
les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des
Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte
avant de commencer cet article que l'une des œuvres les plus
impressionnantes de Tolkien, si ce n'est la plus grande, est
l'impressionnant travail linguistique passé sur les différentes langues
présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya,
la langue des nains, qui est appelé le khazalide, etc. &lt;/p&gt;
&lt;p&gt;En effet, a contrario des "langues" développées dans d'autres œuvres littéraires
telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot
de français (ou d'anglais) a un mot de sa "langue", les langues de
l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des
racines logiques, des systèmes de grammaire et de conjugaison propres,
une logique inhérente dans la prononciation ou l'orthographe, et ainsi
de suite. &lt;/p&gt;
&lt;p&gt;Un véritable rêve de linguiste donc, puisque ces langues sont
pratiquement entièrement documentées par Tolkien lui même (voir
l'appendice E du SdA, particulièrement instructif a ce sujet.)&lt;/p&gt;
&lt;p&gt;J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster
ici des résumés des cours que je suis ( disponibles &lt;a href="http://folk.uib.no/hnohf/qcourse.htm"&gt;ici&lt;/a&gt; , une
traduction en français est disponible &lt;a href="http://www.ambar-eldaron.com/telechargements/integraleshelge.pdf"&gt;la&lt;/a&gt; en pdf ), et des infos ici
toutes les deux semaines.&lt;/p&gt;
&lt;p&gt;Si ce sujet vous intéresse, le compte twitter @Quenya101 poste
régulièrement des informations sur le sujet, et pour plus d'infos sur le
sujet, vous pouvez en trouver &lt;a href="olk.uib.no/hnohf/quenya.htm"&gt;par ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Et en tant que première leçon, vous pouvez apprendre que ce mot que vous
avez prononcé comme le Kenya tout le long de cet article se prononce en
fait [Kwenïa], ou bien Qwenya!&lt;/p&gt;</summary></entry></feed>

View File

@ -1,265 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Wxcafé</title><link href="file:///home/wxcafe/code/blog-source/output/" rel="alternate"></link><link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.notes.xml" rel="self"></link><id>file:///home/wxcafe/code/blog-source/output/</id><updated>2014-05-30T08:25:00+02:00</updated><entry><title>SSL ou la sécurité sur l'internet</title><link href="file:///home/wxcafe/code/blog-source/output/posts/SSL-ou-la-securite-sur-internet/" rel="alternate"></link><updated>2014-05-30T08:25:00+02:00</updated><author><name>Wxcafe</name></author><id>tag:,2014-05-30:home/wxcafe/code/blog-source/output/posts/SSL-ou-la-securite-sur-internet/</id><summary type="html">&lt;p&gt;&lt;em&gt;Disclaimer: Ce billet est écrit après le visionnage de la conférence de Moxie
Marlinspike suivante: &lt;a href="https://www.youtube.com/watch?v=ibF36Yyeehw"&gt;More Tricks for Defeating SSL&lt;/a&gt;,
présentée a la DefCon 17 (en 2011), et la lecture du billet suivant:
&lt;a href="http://www.thoughtcrime.org/blog/lavabit-critique/"&gt;A Critique of Lavabit&lt;/a&gt;,
ce qui peut avoir l'effet de rendre légèrement parano. Si vous considérez que
c'est le cas ici, veuillez ne pas tenir compte de ce billet (et vous pouvez dès
a présent dire coucou aux différentes personnes qui écoutent votre connection)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Si vous venez ici souvent (vous devriez), et que vous utilisez SSL pour vous
connecter a ce site (vous devriez, vraiment, dans ce cas), vous avez peut être
remarqué quelque chose récemment : il se trouve que le certificat qui permet de
desservir ce site a changé.&lt;/p&gt;
&lt;p&gt;Cela fait suite aux évènements évoqués dans le &lt;em&gt;Disclaimer&lt;/em&gt;, mais aussi a des
doigts sortis d'un endroit particulier du corps de l'admin/auteur de ce "blog",
qui a pris &lt;strong&gt;enfin&lt;/strong&gt; les 5 minutes nécessaires a la compréhension superficielle
du fonctionnement de SSL, et les 10 nécessaires a la mise en place d'un système
fonctionnel utilisant cette compréhension récemment acquise.&lt;/p&gt;
&lt;p&gt;Bref, le certificat a changé. Mais de quelle façon, vous demandez vous peut
être (ou pas, mais bon, je vais expliquer de toute façon). Et bien c'est très
simple : il existait auparavant un certificat pour &lt;code&gt;wxcafe.net&lt;/code&gt;, un pour
&lt;code&gt;paste.wxcafe.net&lt;/code&gt;, un pour &lt;code&gt;mail.wxcafe.net&lt;/code&gt;, etc... Bref, un certificat
différent pour chaque sous-domaine.&lt;/p&gt;
&lt;p&gt;Il s'avère que c'est a la fois très peu pratique a utiliser (les utilisateurs
doivent ajouter chaque certificat a leur navigateur séparément, chaque
changement de sous-domaine conduit a un message d'erreur, etc) et pas plus
sécurisé que d'avoir un seul certificat wildcard. J'ai donc généré un certificat
pour &lt;code&gt;*.wxcafe.net&lt;/code&gt; hier, et il sera dorénavant utilisé pour tous les
sous-domaine de &lt;code&gt;wxcafe.net&lt;/code&gt;; et un certificat pour &lt;code&gt;wxcafe.net&lt;/code&gt;, qui ne matche
pas &lt;code&gt;*.wxcafe.net&lt;/code&gt;, et qui sera donc utilisé... bah pour &lt;code&gt;wxcafe.net&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Il serait préférable de faire des redirections automatiques des adresses http
vers les adresses https, cependant, étant donné que le certificat est
self-signed, il me semble préférable que l'arrivée sur le site ne commence pas
par une page firefox disant "Something's Wrong!", et ces redirections ne seront
donc pas mises en place.&lt;/p&gt;
&lt;p&gt;De plus, après la lecture de l'article de blog sur Lavabit dont le lien est plus
haut, il semble intéressant (et assez important) de faire en sorte que le
serveur utilise en priorité (et si possible, uniquement) des ciphers supportant
PFS, soit EDH et EECDH (Ephemeral Diffie-Helmann et la version Elliptic Curves
de ce même algorithme). Cela permet de faire en sorte que toutes les
communications avec ce serveur soient future-proof, c'est a dire que, même si
quelqu'un récupérait la clé privée, elle ne serait pas utile pour déchiffrer les
communications passées.&lt;/p&gt;
&lt;p&gt;Bon, maintenant que les explications basiques sont faites, voyons
l'implémentation : &lt;br /&gt;
Pour générer la clé, tout d'abord, il convient d'utiliser les commandes
suivantes: &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;openssl&lt;/span&gt; &lt;span class="n"&gt;genrsa&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="mi"&gt;4096&lt;/span&gt;
&lt;span class="cp"&gt;# nous utilisons ici une clé de 4096 bits, la taille est laissée a votre appréciation&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;openssl&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;csr&lt;/span&gt;
&lt;span class="cp"&gt;# OpenSSL va ici vous demander de nombreuses informations, &amp;quot;Common Name&amp;quot; devant contenir le FQDN&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;openssl&lt;/span&gt; &lt;span class="n"&gt;X509&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;days&lt;/span&gt; &lt;span class="mi"&gt;1095&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;csr&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;signkey&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;crt&lt;/span&gt;
&lt;span class="cp"&gt;# enfin, nous générons la clé, d&amp;#39;une durée de vie de 3 ans&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bien entendu, si vous voulez utiliser une clé wildcard, il vous faut préciser
&lt;code&gt;*.example.com&lt;/code&gt; comme common name.
Une fois la clé générée, il faut dire aux différents services de l'utiliser, et
de n'utiliser que des ciphers PFS. La méthode dépend donc du service.
Je vais lister ici les methodes pour quelques services que j'utilise :&lt;/p&gt;
&lt;h3&gt;apache :&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;# /etc/apache2/mods_enabled/ssl.conf&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="n"&gt;SSLProtocol&lt;/span&gt; &lt;span class="n"&gt;all&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;SSLv2&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;SSLv3&lt;/span&gt;
&lt;span class="n"&gt;SSLHonorCipherOrder&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;
&lt;span class="n"&gt;SSLCipherSuite&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \&lt;/span&gt;
&lt;span class="s"&gt; EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \&lt;/span&gt;
&lt;span class="s"&gt; EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&amp;quot;&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="cp"&gt;# /etc/apache2/sites-enabled/default-ssl&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="n"&gt;SSLEngine&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;
&lt;span class="n"&gt;SSLCertificateFile&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;crt&lt;/span&gt;
&lt;span class="n"&gt;SSLCertificateKeyFile&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;nginx :&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;# /etc/nginx/nginx.conf &lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="n"&gt;ssl_protocols&lt;/span&gt; &lt;span class="n"&gt;TLSv1&lt;/span&gt; &lt;span class="n"&gt;TLSv1&lt;/span&gt;&lt;span class="mf"&gt;.1&lt;/span&gt; &lt;span class="n"&gt;TLSv1&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;ssl_prefer_server_ciphers&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;ssl_ciphers&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \&lt;/span&gt;
&lt;span class="s"&gt; EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \&lt;/span&gt;
&lt;span class="s"&gt; EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="cp"&gt;# /etc/nginx/sites-enabled/default-ssl&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="n"&gt;ssl&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;ssl_certificate&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;crt&lt;/span&gt;
&lt;span class="n"&gt;ssl_certificate_key&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;prosody (jabber) :&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;# tout d&amp;#39;abord, lancez la commande suivante :&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;openssl&lt;/span&gt; &lt;span class="n"&gt;dhparam&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;prosody&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dh&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2048.&lt;/span&gt;&lt;span class="n"&gt;pem&lt;/span&gt; &lt;span class="mi"&gt;2048&lt;/span&gt;
&lt;span class="cp"&gt;# ensuite, pour chaque VirtualHost dans /etc/prosody/prosody.conf :&lt;/span&gt;
&lt;span class="n"&gt;ssl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;dhparam&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;/etc/prosody/certs/dh-2048.pem&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;/etc/certs/example.com.key&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;/etc/certs/example.com.crt&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="cp"&gt;# la cipher suite de prosody utilise par défaut EDH et EECDH&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;postfix (email) :&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;# /etc/postfix/main.cf&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="n"&gt;smtpd_tls_cert_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;crt&lt;/span&gt;
&lt;span class="n"&gt;smtpd_tls_key_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;
&lt;span class="n"&gt;tls_preempt_cipherlist&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;yes&lt;/span&gt;
&lt;span class="n"&gt;smtpd_tls_eecdh_grade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;strong&lt;/span&gt;
&lt;span class="n"&gt;smtdp_tls_mandatory_ciphers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;high&lt;/span&gt;
&lt;span class="n"&gt;smtpd_tls_mandatory_exclude_ciphers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;aNULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;eNULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MD5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;LOW&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;DES&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;EXP&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PSK&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SRP&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;DSS&lt;/span&gt;
&lt;span class="n"&gt;smtpd_tls_security_level&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;encrypt&lt;/span&gt;
&lt;span class="n"&gt;smtpd_tls_mandatory_protocols&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;SSLv2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;SSLv3&lt;/span&gt;
&lt;span class="n"&gt;smtpd_use_tls&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;yes&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;dovecot (imap) :&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;# /etc/dovecot/dovecot.conf &lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="n"&gt;ssl_cert&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;crt&lt;/span&gt;
&lt;span class="n"&gt;ssl_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;
&lt;span class="n"&gt;ssl_cipher_list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;kEDH&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;kEECDH&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="n"&gt;PSK&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="n"&gt;SRP&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;DES&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="n"&gt;aNULL&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Voila. Pour d'autres protocoles/services, je vous invite a RTFM^W vous reporter
au manuel approprié.&lt;/p&gt;
&lt;p&gt;Cela étant dit, je conseille a tout le monde d'aller voir la conférence dans le
disclaimer, et tant qu'a faire la conférence du même hacker &lt;a href="https://www.youtube.com/watch?v=8N4sb-SEpcg"&gt;SSL and the future
of Authenticity&lt;/a&gt; qui parle de son
implémentation d'une technologie "remplaçant" le système de CAs qui existe
actuellement.&lt;/p&gt;</summary></entry><entry><title>Redesign du blog, etc</title><link href="file:///home/wxcafe/code/blog-source/output/posts/redesign-du-blog/" rel="alternate"></link><updated>2013-06-12T19:14:00+02:00</updated><author><name>wxcafe</name></author><id>tag:,2013-06-12:home/wxcafe/code/blog-source/output/posts/redesign-du-blog/</id><summary type="html">&lt;p&gt;Comme vous avez pu le remarquer, ce blog a "un peu" changé récemment.&lt;/p&gt;
&lt;p&gt;Du coup, expliquons. J'ai récemment monté &lt;a href="http://serverporn.fr"&gt;serverporn&lt;/a&gt;, et ai par la même
occasion découvert &lt;a href="http://getpelican.com"&gt;pelican&lt;/a&gt;. J'ai tout de suite accroché a ce générateur de
site statique en python, du fait de son efficacité, de sa facilité d'utilisation
et de sa grande customisation. En gros, pelican est un logiciel qui prend des
fichiers markdown ou reStructuredText, les passe a la moulinette d'un "thème"
constitué de templates pour les fichiers html et l'organisation du projet et
d'une partie "statique" contenant le css, et les autres fichiers nécessaires au
projet, et en fait des pages html. &lt;/p&gt;
&lt;p&gt;Globalement, un thème est constitué ainsi :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;th&lt;/span&gt;&lt;span class="err"&gt;è&lt;/span&gt;&lt;span class="n"&gt;me&lt;/span&gt;
&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;├─&lt;/span&gt; &lt;span class="n"&gt;css&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;└─&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;css&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;├─&lt;/span&gt; &lt;span class="n"&gt;img&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;└─&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;└─&lt;/span&gt; &lt;span class="n"&gt;js&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;└─&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;javascript&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="n"&gt;template&lt;/span&gt;
&lt;span class="err"&gt;├─&lt;/span&gt; &lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;
&lt;span class="err"&gt;├─&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;
&lt;span class="err"&gt;├─&lt;/span&gt; &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;
&lt;span class="err"&gt;├─&lt;/span&gt; &lt;span class="p"&gt;[...]&lt;/span&gt;
&lt;span class="err"&gt;└─&lt;/span&gt; &lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Sachant que les fichiers .html sont en réalité des fichiers suivant la syntaxe
django, et utilisent des variables particulières telles &lt;code&gt;{{ article.content }}&lt;/code&gt;,
par exemple. La syntaxe complète est très bien documentée dans la &lt;a href="http://docs.getpelican.com/en/3.2/themes.html#templates-and-variables"&gt;doc&lt;/a&gt; de
pelican.&lt;/p&gt;
&lt;p&gt;L'un des grands avantages de pelican est aussi la facilité qu'il offre quand a
la mise a jour du blog.&lt;br /&gt;
En effet, il offre un système de Makefiles permettant, grâce a de nombreuses
cibles de compilation, de régénérer le site entier, de ne générer que les
fichiers modifiés depuis la dernière génération, de générer uniquement les
fichiers n'existant pas la dernière fois, etc...
La gestion du projet en devient donc très simple, puisque après avoir écrit un
article, il suffit de faire un &lt;code&gt;make html&lt;/code&gt; pour mettre a jour le blog.&lt;/p&gt;
&lt;p&gt;De plus, le système de wordpress commençait a ne plus me convenir, du fait du
manque de customisation, du fait que ça soit du PHP (beurk), etc. La, avec
pelican, je contrôle bien plus ce qui est mis sur le serveur (puisque c'est moi
qui ait modifié les templates et le css), c'est lisible (puisque c'est du
python, par opposition au PHP...), et c'est plus "efficace". Le markdown est
très pratique, je peux utiliser mon éditeur de texte de prédilection pour faire
les articles, je n'ai pas besoin d'un accès continu au net, bref, c'est plus
efficace.&lt;/p&gt;
&lt;p&gt;En ce qui concerne les points négatifs : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Perte des commentaires:
Je vous propose de vous référer a l'article de Gordontesos &lt;a href="http://gordon.re/hacktivisme/la-necessite-des-commentaires.html"&gt;ici&lt;/a&gt; quand a
mon avis sur ce sujet.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Perte du bouton flattr:
Il va bientôt être remis, c'est juste un manque de temps de ma part, mais vu
que toutes les pages passent par les mêmes templates, c'est assez facile a
faire.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Perte du spam:
Pourquoi c'est dans les points négatifs, ca?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Temps d'adaptation et d'appréhension du système:
Oui, pendant encore un certain temps, il y aura des glitchs plus ou moins
réguliers sur le blog, c'est parce que j'apprend a me servir de ce système
et que j'apprend du css et du html. Ca arrive, ca passera, mais dans tous
les cas ca me permet d'apprendre plein de choses, donc je mets plutôt ca
dans la catëgorie positive.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voila, c'est mon retour d'expérience sur pelican. A plus. &lt;/p&gt;</summary></entry><entry><title>Update</title><link href="file:///home/wxcafe/code/blog-source/output/posts/update/" rel="alternate"></link><updated>2013-01-05T18:32:00+01:00</updated><author><name>Wxcafe</name></author><id>tag:,2013-01-05:home/wxcafe/code/blog-source/output/posts/update/</id><summary type="html">&lt;p&gt;Juste une petite note pour annoncer le prochain article, consacré a la
fabrication d'une PirateBox basée sur un Raspberry Pi. Voila, a bientôt
sur le blog!&lt;/p&gt;</summary></entry><entry><title>Update a propos du blog</title><link href="file:///home/wxcafe/code/blog-source/output/posts/update-a-propos-du-blog/" rel="alternate"></link><updated>2012-09-18T16:57:00+02:00</updated><author><name>Wxcafe</name></author><id>tag:,2012-09-18:home/wxcafe/code/blog-source/output/posts/update-a-propos-du-blog/</id><summary type="html">&lt;p&gt;Bonsoir! Un petit post pour faire un peu le point sur ce blog.&lt;br /&gt;
Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais
que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y
avoir un tantinet réfléchi, ceci est du a deux points principaux :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Tout d'abord, le manque d'inspiration, tout simplement. C'est assez
compliqué de trouver des sujets intéressants liés a l'informatique, et
qui méritent un article. Je vous invite d'ailleurs a me suggérer des
sujets via les commentaires ou twitter (&lt;a href="https://twitter.com/wxcafe"&gt;@Wxcafe&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ensuite, le délai de 8 jours est trop court pour me permettre de faire
les recherches nécessaires, tout en manageant mes cours et mon temps
libre.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A cause de cela, j'ai pris la décision de changer le rythme de parution
des articles a un *minimum* d'un post tous les 10 jours. Bien entendu,
si j'ai de l'inspiration en trop, plus de posts sont envisageables.&lt;/p&gt;
&lt;p&gt;Voila. A part ca, je tiens a vous remercier de me lire (c'est assez
étonnant de voir ca...), et je précise que je vais ajouter une page
About Me, qui bien entendu rassemblera des informations sur moi, ma vie,
mon oeuvre :P&lt;/p&gt;
&lt;p&gt;Ceci dit, je vais bosser un peu sur le prochain article.&lt;/p&gt;
&lt;p&gt;A plus tard!&lt;/p&gt;</summary></entry><entry><title>Débuts, présentation, etc...</title><link href="file:///home/wxcafe/code/blog-source/output/posts/debuts-presentation-etc/" rel="alternate"></link><updated>2012-08-18T20:27:00+02:00</updated><author><name>Wxcafe</name></author><id>tag:,2012-08-18:home/wxcafe/code/blog-source/output/posts/debuts-presentation-etc/</id><summary type="html">&lt;p&gt;Bonjour!&lt;/p&gt;
&lt;p&gt;Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur
Twitter, mais aussi sur IRC (Je traîne pas mal sur
irc.freenode.net/##nolife et #debian-fr)&lt;/p&gt;
&lt;p&gt;J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je
fais partie de ce genre de personne qui sont capables d'investir tout
leur temps et leur énergie a sintéresser a un sujet en particulier, et
qui ne peuvent pas vivre sans leurs passions, avec une petite différence
cependant, qui est que je mintéresse a plusieurs choses :
l'informatique, qui est un champ tellement large qu'on peut passer une
vie a apprendre des choses dessus, et plus particulièrement à
l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres
{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les
trolls seront a partir de maintenant indiqués avec le tag [tr]] du
libre, je préfère utiliser de l'open-source si c'est possible},
programmation en C, python et java, etc...) , mais aussi a
lélectronique. &lt;/p&gt;
&lt;p&gt;Dans un tout autre registre, je mintéresse aussi
beaucoup aux différents aspects du féminisme et des égalités sexuelles
(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) ,
et a la culture dite "geek" en général.&lt;/p&gt;
&lt;p&gt;Je tenterai de poster ici le plus souvent possible, mais j'ai de gros
problèmes en terme de régularité de post, donc ne vous inquiétez pas si
vous ne voyez rien pendant deux semaines.&lt;/p&gt;
&lt;p&gt;Merci beaucoup de votre attention, et a bientôt!&lt;/p&gt;</summary></entry></feed>

View File

@ -1,198 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Wxcafé</title><link href="file:///home/wxcafe/code/blog-source/output/" rel="alternate"></link><link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.programmation.xml" rel="self"></link><id>file:///home/wxcafe/code/blog-source/output/</id><updated>2012-09-08T18:15:00+02:00</updated><entry><title>Introduction a bash en tant que language de programmation.</title><link href="file:///home/wxcafe/code/blog-source/output/posts/introduction-a-bash-en-tant-que-language-de-programmation/" rel="alternate"></link><updated>2012-09-08T18:15:00+02:00</updated><author><name>Wxcafe</name></author><id>tag:,2012-09-08:home/wxcafe/code/blog-source/output/posts/introduction-a-bash-en-tant-que-language-de-programmation/</id><summary type="html">&lt;p&gt;Linterpréteur de commandes bash (Bourne Again SHell)
est possiblement le shell le plus connu, notamment grâce a son
intégration en tant que shell par défaut dans les distributions Linux
les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva -
Mageia, etc...).&lt;/p&gt;
&lt;p&gt;Cependant, il n'est souvent connu qu'en tant quinterpréteur de
commande. Alors qu'en réalité, le bash est un langage de programmation
(presque) complet! Ainsi, il intègre les structures de contrôle
habituelles ( pour mémoire, les structures de contrôle comprennent les
conditions (les ifs), les boucles (les while), et les choix (les case),
entre autres.), et est donc ce que l'on pourrait appeler un langage de
script, interprété, de la même façon que python, a la difference près
qu'il contient un prompt (un système d'entrée de commande interactif)
bien plus complet et développé que python. &lt;/p&gt;
&lt;p&gt;Cependant, les programmes en bash ne sont executables que dans un
environnement de type UNIX, et donc pas sous Windows (cygwin
(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous
windows. Il faut malgré tout convenir que cet environnement est bien
plus compliqué a manipuler, et globalement ne permet pas d'acceder a des
portages de qualité satisfaisante.)&lt;/p&gt;
&lt;p&gt;Ainsi, il est possible de créer des fichiers .sh, contenant des
instructions bash mises a la suite (de la même façon qu'un script BATCH
Windows .bat), et faisant appel autant aux commandes internes de bash,
aussi bien que les commandes externes mises en place par les programmes
installés sur le système, exactement comme dans une invite de commande.
Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit
panda roux directement dans la boite magique, tandis qu'un if
[condition] suivi d'un then (quelque chose) lancera le fameux quelque
chose suscité si la condition est vérifiée. Un peu comme en C, quoi. &lt;/p&gt;
&lt;p&gt;De cette façon, et avec quelques informations et connaissances, il est
facile de comprendre le fonctionnement de la programmation en bash.
Quelques exemples commentés:&lt;/p&gt;
&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt; 1
2
3
4
5
6
7
8
9
10
11
12
13&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash &lt;/span&gt;
&lt;span class="c"&gt;# La ligne du dessus est très importante, c&amp;#39;est elle qui dit a bash quel doit être &lt;/span&gt;
&lt;span class="c"&gt;# l&amp;#39;interpreteur des commandes écrites dans ce script. Ici, on dit a bash d&amp;#39;interpréter &lt;/span&gt;
&lt;span class="c"&gt;# lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire &lt;/span&gt;
&lt;span class="c"&gt;# executer du python, par exemple, en mettant #!/usr/bin/python a la place.&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;this is a test of bash as a simple script manager&amp;quot;&lt;/span&gt; &lt;span class="c"&gt;# echo est une commande d&amp;#39;affichage de message.&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;what&amp;#39;s your name, user?&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;your_name &lt;span class="c"&gt;# la commande read permet de demander a l&amp;#39;utilisateur de donner une &lt;/span&gt;
&lt;span class="c"&gt;# information, stockée dans la variable en paramètre. &lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$your_name&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;is your name&amp;quot;&lt;/span&gt; &lt;span class="c"&gt;# echo permet aussi d&amp;#39;afficher la valeur de variables. &lt;/span&gt;
&lt;span class="c"&gt;# Ici, on renvoie la variable remplie précédemment, suivie d&amp;#39;un message. &lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="c"&gt;# cet appel a exit n&amp;#39;est pas obligatoire, mais donne un aspect plus &lt;/span&gt;
&lt;span class="c"&gt;# propre au code. Il ne quittera pas la session de terminal, cependant.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite
d'être clair quand aux capacités et a la simplicité du bash en tant que
language de programmation. Alors en effet, nous n'avons ici absolument
pas utilisé les capacités de bash en lui même, et n'avons fait que le
renvoyer a des programmes externes (sauf read, il est vrai). Voyons
maintenant la syntaxe de bash quand il s'agit d'utiliser les structures
de contrôle:&lt;/p&gt;
&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt; 1
2
3
4
5
6
7
8
9
10&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash &lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;welcome to this second bash program. would you please kindly enter the name of the machine you&amp;#39;re running this on?&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;host_name
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$host_name&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nv"&gt;$HOSTNAME&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="c"&gt;## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système. &lt;/span&gt;
&lt;span class="k"&gt;then &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;you told the truth!&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt; &lt;span class="c"&gt;## le fi est la commande fermant le if, tout comme le EndIf en basic. C&amp;#39;est un peu vieillot, mais important en bash. &lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$host_name&lt;/span&gt; !&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$HOSTNAME&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="c"&gt;## l&amp;#39;opérateur != est l&amp;#39;inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes. &lt;/span&gt;
&lt;span class="k"&gt;then &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;you lied!&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;fi &lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Voila un petit programme permettant d'apprendre la syntaxe du if en
bash. comme vous pouvez le voir, le language est plutôt lite, et la
structure if n'est pas très difficile a prendre en main.&lt;/p&gt;
&lt;p&gt;Passons maintenant au while:&lt;/p&gt;
&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;1
2
3
4
5
6
7&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;what is your name?&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;name
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; 1 &amp;lt; 10 &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="c"&gt;## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.&lt;/span&gt;
&lt;span class="k"&gt;do &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;i love&amp;quot;&lt;/span&gt; &lt;span class="nv"&gt;$name&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Ce petit programme permet d'observer les bases de while (qui est la
boucle de base en bash).&lt;/p&gt;
&lt;p&gt;Le troisième opérateur de bash est case. Voyons:&lt;/p&gt;
&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt; 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;please enter a number between one and five&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;number
&lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="nv"&gt;$number&lt;/span&gt; in
1&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;the choosen number was one&amp;quot;&lt;/span&gt;
;;
2&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;the choosen number was two&amp;quot;&lt;/span&gt;
;;
3&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;the choosen number was three&amp;quot;&lt;/span&gt;
;;
4&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;the choosen number was four&amp;quot;&lt;/span&gt;
;;
5&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;the choosen number was five&amp;quot;&lt;/span&gt;
;;
*&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;this number is not correct&amp;quot;&lt;/span&gt;
;;
&lt;span class="k"&gt;esac&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;case est un opérateur plus complexe a utiliser a bon escient, et sert a
faire des ifs multiples sans avoir a taper des dizaines de lignes de
code.&lt;br /&gt;
(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre
que le code vérifie chacune des conditions : le 1) est validé si la
valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc..
le *) désigne toutes les valeurs, et est donc validé si aucune autre
valeur n'a précédemment acceptée.&lt;/p&gt;
&lt;p&gt;Quelques notions manquent ici:&lt;br /&gt;
- les nombres aléatoires sont générés par un appel a la variable
\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a
16 bits donc). il est possible de faire des invocations a des nombres
aléatoires plus grands, mais les méthodes permettant de faire cela sont
plus complexes, et je ne les aborderai donc pas ici.&lt;br /&gt;
- comme vous avez pu le constater, les variables sont désignées en tant
que telles par l'utilisation d'un symbole \$ au début de leur nom.
Ainsi, echo number renverra "number", tandis que echo \$number renverra
le résultat de la variable \$number.&lt;br /&gt;
être utilisées dans un programme bash.&lt;br /&gt;
- comme vous avez pu le constater, les commandes doivent tenir en
théorie en une ligne. Cependant, le caractère \ permet de retourner a
la ligne en faisant considérer a bash qu'il s'agit de la même ligne.&lt;/p&gt;
&lt;p&gt;Globalement, il faut admettre que bash n'a pas vocation a être un
langage de programmation extrêmement développé. Sans framework
graphique, avec peu de manières d'utiliser de grandes variables, ou
encore une gestion de la mémoire risible, bash n'a rien d'un langage de
développement professionnel.&lt;br /&gt;
Cependant, le simple fait qu'il soit considéré comme un langage de
programmation a part entière font de lui un langage de script d'une
puissance incontestable, et sa simplicité et sa grande popularité font
de lui un langage de choix pour apprendre la programmation simplement et
sans trop se prendre la tête.&lt;/p&gt;
&lt;p&gt;J'espère que cet article aura été utile a certain-e-s, et je vous
souhaite bonne chance dans votre découverte de la programmation (n'allez
pas voir ceux qui font de l'orienté objet, c'est des méchants :3)&lt;/p&gt;</summary></entry></feed>

View File

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Wxcafé</title><link>file:///home/wxcafe/code/blog-source/output/</link><description></description><atom:link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.language.xml" rel="self"></atom:link><lastBuildDate>Tue, 18 Sep 2012 19:07:00 +0200</lastBuildDate><item><title>Le Quenya - Épisode ø</title><link>file:///home/wxcafe/code/blog-source/output/posts/le-quenya-episode-o/</link><description>&lt;p&gt;Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusquà il y
a peu...), le nom que donnait Tolkien au dialecte principal parlé par
les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des
Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte
avant de commencer cet article que l'une des œuvres les plus
impressionnantes de Tolkien, si ce n'est la plus grande, est
l'impressionnant travail linguistique passé sur les différentes langues
présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya,
la langue des nains, qui est appelé le khazalide, etc. &lt;/p&gt;
&lt;p&gt;En effet, a contrario des "langues" développées dans d'autres œuvres littéraires
telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot
de français (ou d'anglais) a un mot de sa "langue", les langues de
l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des
racines logiques, des systèmes de grammaire et de conjugaison propres,
une logique inhérente dans la prononciation ou l'orthographe, et ainsi
de suite. &lt;/p&gt;
&lt;p&gt;Un véritable rêve de linguiste donc, puisque ces langues sont
pratiquement entièrement documentées par Tolkien lui même (voir
l'appendice E du SdA, particulièrement instructif a ce sujet.)&lt;/p&gt;
&lt;p&gt;J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster
ici des résumés des cours que je suis ( disponibles &lt;a href="http://folk.uib.no/hnohf/qcourse.htm"&gt;ici&lt;/a&gt; , une
traduction en français est disponible &lt;a href="http://www.ambar-eldaron.com/telechargements/integraleshelge.pdf"&gt;la&lt;/a&gt; en pdf ), et des infos ici
toutes les deux semaines.&lt;/p&gt;
&lt;p&gt;Si ce sujet vous intéresse, le compte twitter @Quenya101 poste
régulièrement des informations sur le sujet, et pour plus d'infos sur le
sujet, vous pouvez en trouver &lt;a href="olk.uib.no/hnohf/quenya.htm"&gt;par ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Et en tant que première leçon, vous pouvez apprendre que ce mot que vous
avez prononcé comme le Kenya tout le long de cet article se prononce en
fait [Kwenïa], ou bien Qwenya!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Tue, 18 Sep 2012 19:07:00 +0200</pubDate><guid>tag:,2012-09-18:home/wxcafe/code/blog-source/output/posts/le-quenya-episode-o/</guid></item></channel></rss>

View File

@ -1,265 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Wxcafé</title><link>file:///home/wxcafe/code/blog-source/output/</link><description></description><atom:link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.notes.xml" rel="self"></atom:link><lastBuildDate>Fri, 30 May 2014 08:25:00 +0200</lastBuildDate><item><title>SSL ou la sécurité sur l'internet</title><link>file:///home/wxcafe/code/blog-source/output/posts/SSL-ou-la-securite-sur-internet/</link><description>&lt;p&gt;&lt;em&gt;Disclaimer: Ce billet est écrit après le visionnage de la conférence de Moxie
Marlinspike suivante: &lt;a href="https://www.youtube.com/watch?v=ibF36Yyeehw"&gt;More Tricks for Defeating SSL&lt;/a&gt;,
présentée a la DefCon 17 (en 2011), et la lecture du billet suivant:
&lt;a href="http://www.thoughtcrime.org/blog/lavabit-critique/"&gt;A Critique of Lavabit&lt;/a&gt;,
ce qui peut avoir l'effet de rendre légèrement parano. Si vous considérez que
c'est le cas ici, veuillez ne pas tenir compte de ce billet (et vous pouvez dès
a présent dire coucou aux différentes personnes qui écoutent votre connection)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Si vous venez ici souvent (vous devriez), et que vous utilisez SSL pour vous
connecter a ce site (vous devriez, vraiment, dans ce cas), vous avez peut être
remarqué quelque chose récemment : il se trouve que le certificat qui permet de
desservir ce site a changé.&lt;/p&gt;
&lt;p&gt;Cela fait suite aux évènements évoqués dans le &lt;em&gt;Disclaimer&lt;/em&gt;, mais aussi a des
doigts sortis d'un endroit particulier du corps de l'admin/auteur de ce "blog",
qui a pris &lt;strong&gt;enfin&lt;/strong&gt; les 5 minutes nécessaires a la compréhension superficielle
du fonctionnement de SSL, et les 10 nécessaires a la mise en place d'un système
fonctionnel utilisant cette compréhension récemment acquise.&lt;/p&gt;
&lt;p&gt;Bref, le certificat a changé. Mais de quelle façon, vous demandez vous peut
être (ou pas, mais bon, je vais expliquer de toute façon). Et bien c'est très
simple : il existait auparavant un certificat pour &lt;code&gt;wxcafe.net&lt;/code&gt;, un pour
&lt;code&gt;paste.wxcafe.net&lt;/code&gt;, un pour &lt;code&gt;mail.wxcafe.net&lt;/code&gt;, etc... Bref, un certificat
différent pour chaque sous-domaine.&lt;/p&gt;
&lt;p&gt;Il s'avère que c'est a la fois très peu pratique a utiliser (les utilisateurs
doivent ajouter chaque certificat a leur navigateur séparément, chaque
changement de sous-domaine conduit a un message d'erreur, etc) et pas plus
sécurisé que d'avoir un seul certificat wildcard. J'ai donc généré un certificat
pour &lt;code&gt;*.wxcafe.net&lt;/code&gt; hier, et il sera dorénavant utilisé pour tous les
sous-domaine de &lt;code&gt;wxcafe.net&lt;/code&gt;; et un certificat pour &lt;code&gt;wxcafe.net&lt;/code&gt;, qui ne matche
pas &lt;code&gt;*.wxcafe.net&lt;/code&gt;, et qui sera donc utilisé... bah pour &lt;code&gt;wxcafe.net&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Il serait préférable de faire des redirections automatiques des adresses http
vers les adresses https, cependant, étant donné que le certificat est
self-signed, il me semble préférable que l'arrivée sur le site ne commence pas
par une page firefox disant "Something's Wrong!", et ces redirections ne seront
donc pas mises en place.&lt;/p&gt;
&lt;p&gt;De plus, après la lecture de l'article de blog sur Lavabit dont le lien est plus
haut, il semble intéressant (et assez important) de faire en sorte que le
serveur utilise en priorité (et si possible, uniquement) des ciphers supportant
PFS, soit EDH et EECDH (Ephemeral Diffie-Helmann et la version Elliptic Curves
de ce même algorithme). Cela permet de faire en sorte que toutes les
communications avec ce serveur soient future-proof, c'est a dire que, même si
quelqu'un récupérait la clé privée, elle ne serait pas utile pour déchiffrer les
communications passées.&lt;/p&gt;
&lt;p&gt;Bon, maintenant que les explications basiques sont faites, voyons
l'implémentation : &lt;br /&gt;
Pour générer la clé, tout d'abord, il convient d'utiliser les commandes
suivantes: &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;openssl&lt;/span&gt; &lt;span class="n"&gt;genrsa&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="mi"&gt;4096&lt;/span&gt;
&lt;span class="cp"&gt;# nous utilisons ici une clé de 4096 bits, la taille est laissée a votre appréciation&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;openssl&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;csr&lt;/span&gt;
&lt;span class="cp"&gt;# OpenSSL va ici vous demander de nombreuses informations, &amp;quot;Common Name&amp;quot; devant contenir le FQDN&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;openssl&lt;/span&gt; &lt;span class="n"&gt;X509&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;days&lt;/span&gt; &lt;span class="mi"&gt;1095&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;csr&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;signkey&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;crt&lt;/span&gt;
&lt;span class="cp"&gt;# enfin, nous générons la clé, d&amp;#39;une durée de vie de 3 ans&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bien entendu, si vous voulez utiliser une clé wildcard, il vous faut préciser
&lt;code&gt;*.example.com&lt;/code&gt; comme common name.
Une fois la clé générée, il faut dire aux différents services de l'utiliser, et
de n'utiliser que des ciphers PFS. La méthode dépend donc du service.
Je vais lister ici les methodes pour quelques services que j'utilise :&lt;/p&gt;
&lt;h3&gt;apache :&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;# /etc/apache2/mods_enabled/ssl.conf&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="n"&gt;SSLProtocol&lt;/span&gt; &lt;span class="n"&gt;all&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;SSLv2&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;SSLv3&lt;/span&gt;
&lt;span class="n"&gt;SSLHonorCipherOrder&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;
&lt;span class="n"&gt;SSLCipherSuite&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \&lt;/span&gt;
&lt;span class="s"&gt; EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \&lt;/span&gt;
&lt;span class="s"&gt; EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&amp;quot;&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="cp"&gt;# /etc/apache2/sites-enabled/default-ssl&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="n"&gt;SSLEngine&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;
&lt;span class="n"&gt;SSLCertificateFile&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;crt&lt;/span&gt;
&lt;span class="n"&gt;SSLCertificateKeyFile&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;nginx :&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;# /etc/nginx/nginx.conf &lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="n"&gt;ssl_protocols&lt;/span&gt; &lt;span class="n"&gt;TLSv1&lt;/span&gt; &lt;span class="n"&gt;TLSv1&lt;/span&gt;&lt;span class="mf"&gt;.1&lt;/span&gt; &lt;span class="n"&gt;TLSv1&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;ssl_prefer_server_ciphers&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;ssl_ciphers&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \&lt;/span&gt;
&lt;span class="s"&gt; EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \&lt;/span&gt;
&lt;span class="s"&gt; EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="cp"&gt;# /etc/nginx/sites-enabled/default-ssl&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="n"&gt;ssl&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;ssl_certificate&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;crt&lt;/span&gt;
&lt;span class="n"&gt;ssl_certificate_key&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;prosody (jabber) :&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;# tout d&amp;#39;abord, lancez la commande suivante :&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;openssl&lt;/span&gt; &lt;span class="n"&gt;dhparam&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;prosody&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dh&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2048.&lt;/span&gt;&lt;span class="n"&gt;pem&lt;/span&gt; &lt;span class="mi"&gt;2048&lt;/span&gt;
&lt;span class="cp"&gt;# ensuite, pour chaque VirtualHost dans /etc/prosody/prosody.conf :&lt;/span&gt;
&lt;span class="n"&gt;ssl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;dhparam&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;/etc/prosody/certs/dh-2048.pem&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;/etc/certs/example.com.key&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;/etc/certs/example.com.crt&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="cp"&gt;# la cipher suite de prosody utilise par défaut EDH et EECDH&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;postfix (email) :&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;# /etc/postfix/main.cf&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="n"&gt;smtpd_tls_cert_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;crt&lt;/span&gt;
&lt;span class="n"&gt;smtpd_tls_key_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;
&lt;span class="n"&gt;tls_preempt_cipherlist&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;yes&lt;/span&gt;
&lt;span class="n"&gt;smtpd_tls_eecdh_grade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;strong&lt;/span&gt;
&lt;span class="n"&gt;smtdp_tls_mandatory_ciphers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;high&lt;/span&gt;
&lt;span class="n"&gt;smtpd_tls_mandatory_exclude_ciphers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;aNULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;eNULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MD5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;LOW&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;DES&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;EXP&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PSK&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SRP&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;DSS&lt;/span&gt;
&lt;span class="n"&gt;smtpd_tls_security_level&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;encrypt&lt;/span&gt;
&lt;span class="n"&gt;smtpd_tls_mandatory_protocols&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;SSLv2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;SSLv3&lt;/span&gt;
&lt;span class="n"&gt;smtpd_use_tls&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;yes&lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;dovecot (imap) :&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;# /etc/dovecot/dovecot.conf &lt;/span&gt;
&lt;span class="cp"&gt;# [...]&lt;/span&gt;
&lt;span class="n"&gt;ssl_cert&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;crt&lt;/span&gt;
&lt;span class="n"&gt;ssl_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;
&lt;span class="n"&gt;ssl_cipher_list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;kEDH&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;kEECDH&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="n"&gt;PSK&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="n"&gt;SRP&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;DES&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="n"&gt;aNULL&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Voila. Pour d'autres protocoles/services, je vous invite a RTFM^W vous reporter
au manuel approprié.&lt;/p&gt;
&lt;p&gt;Cela étant dit, je conseille a tout le monde d'aller voir la conférence dans le
disclaimer, et tant qu'a faire la conférence du même hacker &lt;a href="https://www.youtube.com/watch?v=8N4sb-SEpcg"&gt;SSL and the future
of Authenticity&lt;/a&gt; qui parle de son
implémentation d'une technologie "remplaçant" le système de CAs qui existe
actuellement.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Fri, 30 May 2014 08:25:00 +0200</pubDate><guid>tag:,2014-05-30:home/wxcafe/code/blog-source/output/posts/SSL-ou-la-securite-sur-internet/</guid></item><item><title>Redesign du blog, etc</title><link>file:///home/wxcafe/code/blog-source/output/posts/redesign-du-blog/</link><description>&lt;p&gt;Comme vous avez pu le remarquer, ce blog a "un peu" changé récemment.&lt;/p&gt;
&lt;p&gt;Du coup, expliquons. J'ai récemment monté &lt;a href="http://serverporn.fr"&gt;serverporn&lt;/a&gt;, et ai par la même
occasion découvert &lt;a href="http://getpelican.com"&gt;pelican&lt;/a&gt;. J'ai tout de suite accroché a ce générateur de
site statique en python, du fait de son efficacité, de sa facilité d'utilisation
et de sa grande customisation. En gros, pelican est un logiciel qui prend des
fichiers markdown ou reStructuredText, les passe a la moulinette d'un "thème"
constitué de templates pour les fichiers html et l'organisation du projet et
d'une partie "statique" contenant le css, et les autres fichiers nécessaires au
projet, et en fait des pages html. &lt;/p&gt;
&lt;p&gt;Globalement, un thème est constitué ainsi :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;th&lt;/span&gt;&lt;span class="err"&gt;è&lt;/span&gt;&lt;span class="n"&gt;me&lt;/span&gt;
&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;├─&lt;/span&gt; &lt;span class="n"&gt;css&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;└─&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;css&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;├─&lt;/span&gt; &lt;span class="n"&gt;img&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;└─&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;└─&lt;/span&gt; &lt;span class="n"&gt;js&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;└─&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;javascript&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="n"&gt;template&lt;/span&gt;
&lt;span class="err"&gt;├─&lt;/span&gt; &lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;
&lt;span class="err"&gt;├─&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;
&lt;span class="err"&gt;├─&lt;/span&gt; &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;
&lt;span class="err"&gt;├─&lt;/span&gt; &lt;span class="p"&gt;[...]&lt;/span&gt;
&lt;span class="err"&gt;└─&lt;/span&gt; &lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Sachant que les fichiers .html sont en réalité des fichiers suivant la syntaxe
django, et utilisent des variables particulières telles &lt;code&gt;{{ article.content }}&lt;/code&gt;,
par exemple. La syntaxe complète est très bien documentée dans la &lt;a href="http://docs.getpelican.com/en/3.2/themes.html#templates-and-variables"&gt;doc&lt;/a&gt; de
pelican.&lt;/p&gt;
&lt;p&gt;L'un des grands avantages de pelican est aussi la facilité qu'il offre quand a
la mise a jour du blog.&lt;br /&gt;
En effet, il offre un système de Makefiles permettant, grâce a de nombreuses
cibles de compilation, de régénérer le site entier, de ne générer que les
fichiers modifiés depuis la dernière génération, de générer uniquement les
fichiers n'existant pas la dernière fois, etc...
La gestion du projet en devient donc très simple, puisque après avoir écrit un
article, il suffit de faire un &lt;code&gt;make html&lt;/code&gt; pour mettre a jour le blog.&lt;/p&gt;
&lt;p&gt;De plus, le système de wordpress commençait a ne plus me convenir, du fait du
manque de customisation, du fait que ça soit du PHP (beurk), etc. La, avec
pelican, je contrôle bien plus ce qui est mis sur le serveur (puisque c'est moi
qui ait modifié les templates et le css), c'est lisible (puisque c'est du
python, par opposition au PHP...), et c'est plus "efficace". Le markdown est
très pratique, je peux utiliser mon éditeur de texte de prédilection pour faire
les articles, je n'ai pas besoin d'un accès continu au net, bref, c'est plus
efficace.&lt;/p&gt;
&lt;p&gt;En ce qui concerne les points négatifs : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Perte des commentaires:
Je vous propose de vous référer a l'article de Gordontesos &lt;a href="http://gordon.re/hacktivisme/la-necessite-des-commentaires.html"&gt;ici&lt;/a&gt; quand a
mon avis sur ce sujet.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Perte du bouton flattr:
Il va bientôt être remis, c'est juste un manque de temps de ma part, mais vu
que toutes les pages passent par les mêmes templates, c'est assez facile a
faire.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Perte du spam:
Pourquoi c'est dans les points négatifs, ca?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Temps d'adaptation et d'appréhension du système:
Oui, pendant encore un certain temps, il y aura des glitchs plus ou moins
réguliers sur le blog, c'est parce que j'apprend a me servir de ce système
et que j'apprend du css et du html. Ca arrive, ca passera, mais dans tous
les cas ca me permet d'apprendre plein de choses, donc je mets plutôt ca
dans la catëgorie positive.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voila, c'est mon retour d'expérience sur pelican. A plus. &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">wxcafe</dc:creator><pubDate>Wed, 12 Jun 2013 19:14:00 +0200</pubDate><guid>tag:,2013-06-12:home/wxcafe/code/blog-source/output/posts/redesign-du-blog/</guid></item><item><title>Update</title><link>file:///home/wxcafe/code/blog-source/output/posts/update/</link><description>&lt;p&gt;Juste une petite note pour annoncer le prochain article, consacré a la
fabrication d'une PirateBox basée sur un Raspberry Pi. Voila, a bientôt
sur le blog!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Sat, 05 Jan 2013 18:32:00 +0100</pubDate><guid>tag:,2013-01-05:home/wxcafe/code/blog-source/output/posts/update/</guid></item><item><title>Update a propos du blog</title><link>file:///home/wxcafe/code/blog-source/output/posts/update-a-propos-du-blog/</link><description>&lt;p&gt;Bonsoir! Un petit post pour faire un peu le point sur ce blog.&lt;br /&gt;
Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais
que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y
avoir un tantinet réfléchi, ceci est du a deux points principaux :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Tout d'abord, le manque d'inspiration, tout simplement. C'est assez
compliqué de trouver des sujets intéressants liés a l'informatique, et
qui méritent un article. Je vous invite d'ailleurs a me suggérer des
sujets via les commentaires ou twitter (&lt;a href="https://twitter.com/wxcafe"&gt;@Wxcafe&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ensuite, le délai de 8 jours est trop court pour me permettre de faire
les recherches nécessaires, tout en manageant mes cours et mon temps
libre.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A cause de cela, j'ai pris la décision de changer le rythme de parution
des articles a un *minimum* d'un post tous les 10 jours. Bien entendu,
si j'ai de l'inspiration en trop, plus de posts sont envisageables.&lt;/p&gt;
&lt;p&gt;Voila. A part ca, je tiens a vous remercier de me lire (c'est assez
étonnant de voir ca...), et je précise que je vais ajouter une page
About Me, qui bien entendu rassemblera des informations sur moi, ma vie,
mon oeuvre :P&lt;/p&gt;
&lt;p&gt;Ceci dit, je vais bosser un peu sur le prochain article.&lt;/p&gt;
&lt;p&gt;A plus tard!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Tue, 18 Sep 2012 16:57:00 +0200</pubDate><guid>tag:,2012-09-18:home/wxcafe/code/blog-source/output/posts/update-a-propos-du-blog/</guid></item><item><title>Débuts, présentation, etc...</title><link>file:///home/wxcafe/code/blog-source/output/posts/debuts-presentation-etc/</link><description>&lt;p&gt;Bonjour!&lt;/p&gt;
&lt;p&gt;Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur
Twitter, mais aussi sur IRC (Je traîne pas mal sur
irc.freenode.net/##nolife et #debian-fr)&lt;/p&gt;
&lt;p&gt;J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je
fais partie de ce genre de personne qui sont capables d'investir tout
leur temps et leur énergie a sintéresser a un sujet en particulier, et
qui ne peuvent pas vivre sans leurs passions, avec une petite différence
cependant, qui est que je mintéresse a plusieurs choses :
l'informatique, qui est un champ tellement large qu'on peut passer une
vie a apprendre des choses dessus, et plus particulièrement à
l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres
{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les
trolls seront a partir de maintenant indiqués avec le tag [tr]] du
libre, je préfère utiliser de l'open-source si c'est possible},
programmation en C, python et java, etc...) , mais aussi a
lélectronique. &lt;/p&gt;
&lt;p&gt;Dans un tout autre registre, je mintéresse aussi
beaucoup aux différents aspects du féminisme et des égalités sexuelles
(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) ,
et a la culture dite "geek" en général.&lt;/p&gt;
&lt;p&gt;Je tenterai de poster ici le plus souvent possible, mais j'ai de gros
problèmes en terme de régularité de post, donc ne vous inquiétez pas si
vous ne voyez rien pendant deux semaines.&lt;/p&gt;
&lt;p&gt;Merci beaucoup de votre attention, et a bientôt!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Sat, 18 Aug 2012 20:27:00 +0200</pubDate><guid>tag:,2012-08-18:home/wxcafe/code/blog-source/output/posts/debuts-presentation-etc/</guid></item></channel></rss>

View File

@ -1,198 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Wxcafé</title><link>file:///home/wxcafe/code/blog-source/output/</link><description></description><atom:link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.programmation.xml" rel="self"></atom:link><lastBuildDate>Sat, 08 Sep 2012 18:15:00 +0200</lastBuildDate><item><title>Introduction a bash en tant que language de programmation.</title><link>file:///home/wxcafe/code/blog-source/output/posts/introduction-a-bash-en-tant-que-language-de-programmation/</link><description>&lt;p&gt;Linterpréteur de commandes bash (Bourne Again SHell)
est possiblement le shell le plus connu, notamment grâce a son
intégration en tant que shell par défaut dans les distributions Linux
les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva -
Mageia, etc...).&lt;/p&gt;
&lt;p&gt;Cependant, il n'est souvent connu qu'en tant quinterpréteur de
commande. Alors qu'en réalité, le bash est un langage de programmation
(presque) complet! Ainsi, il intègre les structures de contrôle
habituelles ( pour mémoire, les structures de contrôle comprennent les
conditions (les ifs), les boucles (les while), et les choix (les case),
entre autres.), et est donc ce que l'on pourrait appeler un langage de
script, interprété, de la même façon que python, a la difference près
qu'il contient un prompt (un système d'entrée de commande interactif)
bien plus complet et développé que python. &lt;/p&gt;
&lt;p&gt;Cependant, les programmes en bash ne sont executables que dans un
environnement de type UNIX, et donc pas sous Windows (cygwin
(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous
windows. Il faut malgré tout convenir que cet environnement est bien
plus compliqué a manipuler, et globalement ne permet pas d'acceder a des
portages de qualité satisfaisante.)&lt;/p&gt;
&lt;p&gt;Ainsi, il est possible de créer des fichiers .sh, contenant des
instructions bash mises a la suite (de la même façon qu'un script BATCH
Windows .bat), et faisant appel autant aux commandes internes de bash,
aussi bien que les commandes externes mises en place par les programmes
installés sur le système, exactement comme dans une invite de commande.
Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit
panda roux directement dans la boite magique, tandis qu'un if
[condition] suivi d'un then (quelque chose) lancera le fameux quelque
chose suscité si la condition est vérifiée. Un peu comme en C, quoi. &lt;/p&gt;
&lt;p&gt;De cette façon, et avec quelques informations et connaissances, il est
facile de comprendre le fonctionnement de la programmation en bash.
Quelques exemples commentés:&lt;/p&gt;
&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt; 1
2
3
4
5
6
7
8
9
10
11
12
13&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash &lt;/span&gt;
&lt;span class="c"&gt;# La ligne du dessus est très importante, c&amp;#39;est elle qui dit a bash quel doit être &lt;/span&gt;
&lt;span class="c"&gt;# l&amp;#39;interpreteur des commandes écrites dans ce script. Ici, on dit a bash d&amp;#39;interpréter &lt;/span&gt;
&lt;span class="c"&gt;# lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire &lt;/span&gt;
&lt;span class="c"&gt;# executer du python, par exemple, en mettant #!/usr/bin/python a la place.&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;this is a test of bash as a simple script manager&amp;quot;&lt;/span&gt; &lt;span class="c"&gt;# echo est une commande d&amp;#39;affichage de message.&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;what&amp;#39;s your name, user?&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;your_name &lt;span class="c"&gt;# la commande read permet de demander a l&amp;#39;utilisateur de donner une &lt;/span&gt;
&lt;span class="c"&gt;# information, stockée dans la variable en paramètre. &lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$your_name&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;is your name&amp;quot;&lt;/span&gt; &lt;span class="c"&gt;# echo permet aussi d&amp;#39;afficher la valeur de variables. &lt;/span&gt;
&lt;span class="c"&gt;# Ici, on renvoie la variable remplie précédemment, suivie d&amp;#39;un message. &lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="c"&gt;# cet appel a exit n&amp;#39;est pas obligatoire, mais donne un aspect plus &lt;/span&gt;
&lt;span class="c"&gt;# propre au code. Il ne quittera pas la session de terminal, cependant.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite
d'être clair quand aux capacités et a la simplicité du bash en tant que
language de programmation. Alors en effet, nous n'avons ici absolument
pas utilisé les capacités de bash en lui même, et n'avons fait que le
renvoyer a des programmes externes (sauf read, il est vrai). Voyons
maintenant la syntaxe de bash quand il s'agit d'utiliser les structures
de contrôle:&lt;/p&gt;
&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt; 1
2
3
4
5
6
7
8
9
10&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash &lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;welcome to this second bash program. would you please kindly enter the name of the machine you&amp;#39;re running this on?&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;host_name
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$host_name&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nv"&gt;$HOSTNAME&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="c"&gt;## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système. &lt;/span&gt;
&lt;span class="k"&gt;then &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;you told the truth!&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt; &lt;span class="c"&gt;## le fi est la commande fermant le if, tout comme le EndIf en basic. C&amp;#39;est un peu vieillot, mais important en bash. &lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$host_name&lt;/span&gt; !&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$HOSTNAME&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="c"&gt;## l&amp;#39;opérateur != est l&amp;#39;inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes. &lt;/span&gt;
&lt;span class="k"&gt;then &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;you lied!&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;fi &lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Voila un petit programme permettant d'apprendre la syntaxe du if en
bash. comme vous pouvez le voir, le language est plutôt lite, et la
structure if n'est pas très difficile a prendre en main.&lt;/p&gt;
&lt;p&gt;Passons maintenant au while:&lt;/p&gt;
&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;1
2
3
4
5
6
7&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;what is your name?&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;name
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; 1 &amp;lt; 10 &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="c"&gt;## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.&lt;/span&gt;
&lt;span class="k"&gt;do &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;i love&amp;quot;&lt;/span&gt; &lt;span class="nv"&gt;$name&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Ce petit programme permet d'observer les bases de while (qui est la
boucle de base en bash).&lt;/p&gt;
&lt;p&gt;Le troisième opérateur de bash est case. Voyons:&lt;/p&gt;
&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt; 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;please enter a number between one and five&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;number
&lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="nv"&gt;$number&lt;/span&gt; in
1&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;the choosen number was one&amp;quot;&lt;/span&gt;
;;
2&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;the choosen number was two&amp;quot;&lt;/span&gt;
;;
3&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;the choosen number was three&amp;quot;&lt;/span&gt;
;;
4&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;the choosen number was four&amp;quot;&lt;/span&gt;
;;
5&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;the choosen number was five&amp;quot;&lt;/span&gt;
;;
*&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;this number is not correct&amp;quot;&lt;/span&gt;
;;
&lt;span class="k"&gt;esac&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;case est un opérateur plus complexe a utiliser a bon escient, et sert a
faire des ifs multiples sans avoir a taper des dizaines de lignes de
code.&lt;br /&gt;
(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre
que le code vérifie chacune des conditions : le 1) est validé si la
valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc..
le *) désigne toutes les valeurs, et est donc validé si aucune autre
valeur n'a précédemment acceptée.&lt;/p&gt;
&lt;p&gt;Quelques notions manquent ici:&lt;br /&gt;
- les nombres aléatoires sont générés par un appel a la variable
\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a
16 bits donc). il est possible de faire des invocations a des nombres
aléatoires plus grands, mais les méthodes permettant de faire cela sont
plus complexes, et je ne les aborderai donc pas ici.&lt;br /&gt;
- comme vous avez pu le constater, les variables sont désignées en tant
que telles par l'utilisation d'un symbole \$ au début de leur nom.
Ainsi, echo number renverra "number", tandis que echo \$number renverra
le résultat de la variable \$number.&lt;br /&gt;
être utilisées dans un programme bash.&lt;br /&gt;
- comme vous avez pu le constater, les commandes doivent tenir en
théorie en une ligne. Cependant, le caractère \ permet de retourner a
la ligne en faisant considérer a bash qu'il s'agit de la même ligne.&lt;/p&gt;
&lt;p&gt;Globalement, il faut admettre que bash n'a pas vocation a être un
langage de programmation extrêmement développé. Sans framework
graphique, avec peu de manières d'utiliser de grandes variables, ou
encore une gestion de la mémoire risible, bash n'a rien d'un langage de
développement professionnel.&lt;br /&gt;
Cependant, le simple fait qu'il soit considéré comme un langage de
programmation a part entière font de lui un langage de script d'une
puissance incontestable, et sa simplicité et sa grande popularité font
de lui un langage de choix pour apprendre la programmation simplement et
sans trop se prendre la tête.&lt;/p&gt;
&lt;p&gt;J'espère que cet article aura été utile a certain-e-s, et je vous
souhaite bonne chance dans votre découverte de la programmation (n'allez
pas voir ceux qui font de l'orienté objet, c'est des méchants :3)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Sat, 08 Sep 2012 18:15:00 +0200</pubDate><guid>tag:,2012-09-08:home/wxcafe/code/blog-source/output/posts/introduction-a-bash-en-tant-que-language-de-programmation/</guid></item></channel></rss>

View File

@ -1,344 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Wxcafé</title><link>file:///home/wxcafe/code/blog-source/output/</link><description></description><atom:link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.teaching.xml" rel="self"></atom:link><lastBuildDate>Sat, 16 May 2015 02:00:00 +0200</lastBuildDate><item><title>SSL - STARTTLS</title><link>file:///home/wxcafe/code/blog-source/output/posts/ssl-starttls/</link><description>&lt;p&gt;Le chiffrement SSL pour les services en ligne est un problème relativement
récent, par rapport a l&amp;rsquo;histoire d&amp;rsquo;Internet. Sa mise en place pose
problème : les protocoles existants ne s&amp;rsquo;accommodent qu&amp;rsquo;assez mal de recevoir
soudainement un flot de données chiffrées, mais développer de nouveaux
protocoles est complexe et n&amp;rsquo;apporte rien d&amp;rsquo;intéressant. Pour palier a ce
problème, deux solutions sont apparues.&lt;/p&gt;
&lt;p&gt;Le première consiste à faire écouter les services sur un
autre port, dans un tunnel SSL. De cette façon, le service existant écoute
normalement, mais il ne répond pas directement aux requêtes. A la place, un
tunnel SSL est mis en place, et les requêtes et les réponses passent dans le
tunnel (ou elles apparaissent donc chiffrées pour l&amp;rsquo;extérieur). Cela permet de
proposer un service chiffré en modifiant de façon minimale le programme, au prix
de devoir aussi changer tous les clients, et de devoir les orienter sur un autre
port.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;autre approche qui a été utilisée est une approche d&amp;rsquo;&lt;em&gt;upgrade&lt;/em&gt;. La
communication commence en mode non chiffré, puis le client demande l&amp;rsquo;upgrade de
la connexion vers le mode chiffré s&amp;rsquo;il le supporte, les deux machines
machines font un &lt;em&gt;handshake&lt;/em&gt; SSL et la communication continue a travers le
tunnel SSL. Le service peut continuer a écouter sur son port habituel, et seuls
les clients capables de passer en SSL le feront, ce qui permet de faire la &amp;ldquo;mise
a jour&amp;rdquo; en douceur.&lt;/p&gt;
&lt;p&gt;Il est souvent demandé quelle est la meilleure méthode pour mettre en place un
service &amp;ndash; laisser un port pour le SSL et un pour le trafic non chiffré, ou bien
un seul, avec &lt;code&gt;STARTTLS&lt;/code&gt;, qui &lt;em&gt;upgrade&lt;/em&gt; les connexions si nécessaire.&lt;br /&gt;
La réponse est que &lt;code&gt;STARTTLS&lt;/code&gt; est plus interessant, pour plusieurs raisons. Tout
d&amp;rsquo;abord, il permet de n&amp;rsquo;utiliser qu&amp;rsquo;un seul port : ça permet de simplifier la
configuration du firewall. En plus de ça, il permet aux clients &amp;ldquo;anciens&amp;rdquo; (ceux
qui ne supportent pas SSL, donc ceux qui devraient être changés) de toujours se
connecter, même si cela signifie que leurs informations seront transmises en
clair. Surtout, il permet d&amp;rsquo;éviter aux utilisateurs d&amp;rsquo;avoir a configurer leurs
clients. Si le client supporte le chiffrement, il l&amp;rsquo;activera de lui même s&amp;rsquo;il
voit qu&amp;rsquo;il est disponible.&lt;br /&gt;
Bref, mettez en place du &lt;code&gt;STARTTLS&lt;/code&gt;, et pas du SSL. C&amp;rsquo;est mieux pour la sécurité
de tout le monde.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Sat, 16 May 2015 02:00:00 +0200</pubDate><guid>tag:,2015-05-16:home/wxcafe/code/blog-source/output/posts/ssl-starttls/</guid></item><item><title>Les systèmes de fichiers</title><link>file:///home/wxcafe/code/blog-source/output/posts/les-systemes-de-fichiers/</link><description>&lt;p&gt;Un système de fichiers. Vous en avez surement déjà entendu parlé si vous
avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous
connaissez surement NTFS, EXT4, ou encore FAT32.&lt;/p&gt;
&lt;p&gt;Ces différents noms désignent en effet des systèmes de fichiers. Mais
qu'est-ce qu'un système de fichiers?&lt;/p&gt;
&lt;p&gt;Pour comprendre cela, il faut déjà savoir ce qu'est exactement un
fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la
plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio
(&lt;a href="http://fr.wikipedia.org/wiki/Kibioctet#Multiples_normalis.C3.A9s"&gt;kibioctet&lt;/a&gt;), en fonction du système de fichier utilisé.), qui est
donc composé de bits, interprétés différemment en fonction du type de
fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il
n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent,
ou il commence ni où il s'arrête (je schématise un peu, mais c'est
l'idée). &lt;/p&gt;
&lt;p&gt;Ainsi, le système de fichier donne un cadre et un standard à
l'arborescence des fichiers. Par exemple, le système de fichier ext4
utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de
disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio
et mesurer la taille des fichiers en blocs de cette façon. Les systèmes
de fichiers nécessitent l'inclusion de drivers dans le noyau pour
pouvoir être pris en compte. &lt;/p&gt;
&lt;p&gt;Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs,
reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu
près tout type de partition récente.&lt;/p&gt;
&lt;p&gt;Il convient de bien faire la différence entre le système de fichier et
l'arborescence des fichiers. Si l'arborescence des fichiers est en fait
une entité virtuelle englobant la racine / et tous les fichiers et
dossiers contenus dedans, le système de fichier permet a votre système
GNU/Linux de distinguer les différents fichiers composants cette
arborescence.&lt;/p&gt;
&lt;p&gt;Détaillons maintenant les types de fichiers les plus répandus:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table,
soit la définition d'un système de fichier), remplissent leur rôle le
plus simplement possible. Ne permettant (historiquement) que des noms de
8 caractères (plus extension de trois caractères), ni chiffrement, ni
système de distinction d'utilisateurs (DOS étant un système
mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32,
utlisants respectivement des blocs de 16 et 32 Kio.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NTFS :. Le NTFS (pour New Technology File System, rapport a Windows
NT) est un système de fichier qui est apparu avec Windows XP, et qui
était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a
FAT différentes capacités dont le chiffrement, les liens symboliques, la
compression et les quotas pour les volumes, permettant de limiter la
taille maximum occupée dans une partition.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012.
Ne différant pas énormément de NTFS, je le mentionne principalement
parce qu'il est prévu qu'il soit le défaut pour Windows 8.
Il apporte principalement la redondance, c'est a dire que chaque
fichier possède une somme de contrôle en 64 bits stockée dans un fichier
séparé pour éviter les corruption de disque.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers
les plus utilisés sous linux pour le grand public. (Je traiterai ici
d'ext4, puisque c'est le plus récent.) Il dispose de toutes les
fonctions que l'on peut attendre d'un système de fichiers moderne, ni
plus ni moins. Ainsi, ext4 est un système de fichiers journalisé,
acceptant les capacités jusquà 1 Exioctet, et utilise l'allocation dite
"par extent", ce qui signifie que la création d'un fichier réserve
automatiquement les zones contiguës de façon a réduire la fragmentation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ReiserFS : ce système de fichiers, créé par le (légèrement mégalo)
programmeur Hans Reiser, est a retenir pour avoir été le premier système
de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des
4 milliards. Le but de ce système est de créer un système polyvalent, a
la fois système de fichiers et base de donnée (de part sa grande
capacité en terme de nombre de fichiers et de l'utilisation d'un
journal.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi
l'allocation par extent, mais possède de plus un système de
sous-volumes, qui permet daccéder a plusieurs arborescences de fichiers
montées en même temps (système pratique et utile pour faire des
snapshots de systèmes.). Il permet aussi de redimensionner a chaud la
taille des partitions, en les agrandissant ou en les rétrécissant, est
compatible avec &lt;a href="http://fr.wikipedia.org/wiki/LVM"&gt;LVM&lt;/a&gt;, a un système de checking intégré (btrfsck), et
utilise un algorithme de compression appelé LZ4, qui accélère les accès
aux fichiers compressés d'environ 30% par rapport a LZO, le système
utilisé dans ext4.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;HFS+ : le système de fichier présent sur tous les macs a des capacités
relativement standards, et ressemble énormément a l'ext3. Il supporte
cependant les liens directs vers les dossiers, fonction rare sur les
systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau
dans les années a venir&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux
et *BSD, est, tel Btrfs, a la fois un système de fichier et un
remplaçant/compatible avec LVM, C'est un système de fichiers conçu
principalement pour les serveurs, et il intègre ainsi un système de
redondance des données pour éviter les corruptions, un mode RAID-Z
(apparenté au RAID5), des checks dintégrité en continu, des snapshots,
etc...&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Comme on a pu le voir, les systèmes de fichiers disponibles sont
légions. Cependant, le plus adapté a Linux et a une utilisation grand
public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier
n'est pas aujourd'hui proposé par défaut sur les distributions les plus
utilisées, au profit de l'ext4, qui commence a accuser son âge...&lt;/p&gt;
&lt;p&gt;Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au
fonctionnement du système, sont en fait de première importance, et ce
choix ne devrait pas être laissé au hasard, et être mis a jour
régulièrement (pour éviter les failles de sécurité...)&lt;/p&gt;
&lt;p&gt;Bon courage, et bon choix pour votre prochain système.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Tue, 25 Sep 2012 10:28:00 +0200</pubDate><guid>tag:,2012-09-25:home/wxcafe/code/blog-source/output/posts/les-systemes-de-fichiers/</guid></item><item><title>Les différentes couches d'un système d'exploitation</title><link>file:///home/wxcafe/code/blog-source/output/posts/les-differentes-couches-dun-systeme-dexploitation/</link><description>&lt;p&gt;Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques
années (plus ou moins, parce que j'ai toujours un Windows en dual boot,
principalement pour les jeux (possiblement plus pour longtemps, avec
l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou
moins bien mon système. Or il y a plusieurs choses a savoir sur les
systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est
le système de couches.&lt;/p&gt;
&lt;p&gt;Un système d'exploitation (de type UNIX, \&amp;lt;troll&gt;enfin un vrai système quoi.
\&amp;lt;/troll&gt;) incorpore plusieurs systèmes de couches.&lt;/p&gt;
&lt;p&gt;Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique,
c'est a dire que tous les composants sont intégrés au kernel. Ce qui
signifie que rien ne peut être ajouté au noyau sans recompiler celui ci.
Or, quand on sait que le noyau comprend entre autres les drivers du
matériel et des systèmes de fichier, cela peut poser des problèmes quand
a la taille du kernel et a la licence libre de ce dernier. &lt;/p&gt;
&lt;p&gt;Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui
signifie que des modules peuvent être chargé a tout moment en cours
dexécution, ce qui permet l'utilisation de nouveaux systèmes de
fichiers a chaud, ou l'insertion de matériel et l'installation de
drivers sans interrompre lexécution du système (Windows utilise un
système de fausse installation de drivers pour le matériel externe, et
un système de pré-installation des drivers pour les périphériques dits
"plug and play")&lt;/p&gt;
&lt;p&gt;Après le noyau intervient le système. Or, au tous premiers instants du
boot, les systèmes GNU/Linux utilisent un système permettant de limiter
l'utilisation de ressources systèmes si elles ne sont pas nécessaires,
et incorpore ainsi un système dit de "runlevels"&lt;/p&gt;
&lt;p&gt;Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce
runlevel permet de tester le bon démarrage du système sans avoir a
effectuer de manipulation pour le ré-éteindre&lt;/p&gt;
&lt;p&gt;Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté
étant donné que ce runlevel donne accès a un système en étant
automatiquement loggé en tant que root, avec tous les autres
utilisateurs désactivés, de même que tous les systèmes de réseaux&lt;/p&gt;
&lt;p&gt;Le runlevel 2 est appelé mode multi user, et vous mets en face d'un
système classique. en ligne de commande, mais avec tous les systèmes de
réseau désactivés.&lt;/p&gt;
&lt;p&gt;Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux
activés.&lt;/p&gt;
&lt;p&gt;Le runlevel 4 n'est pas officiellement défini, et est censé être
activable en fonction des besoins de l'utilisateur. Sur la plupart des
distributions grand public, ce runlevel est lié au...&lt;/p&gt;
&lt;p&gt;Runlevel 5! Multi-user, networking, with working GUI! c'est le système
tel que vous le connaissez, avec l'interface graphique et le système de
login graphique.&lt;/p&gt;
&lt;p&gt;Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine
quand il devient le runlevel courant.&lt;/p&gt;
&lt;p&gt;(Il est a noter que Debian, et donc toutes les distribs qui en sont
dérivées, ne font pas de distinction entre les differents runlevels du 2
au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login
et une interface graphique, et un mode réseau fonctionnel, bref avec des
fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)&lt;/p&gt;
&lt;p&gt;Il est possible de changer de runlevel grâce a la commande runlevel
(oui, c'est évident...)&lt;/p&gt;
&lt;p&gt;Les systèmes Linux utilisent aussi un système dit de SandBox , qui en
informatique est un système permettant d'isoler les processus les uns
des autres. Ainsi, la pile réseau, qui est le système auquel les
différents processus envoient les différents paquets qui doivent sortir
de la machine , et qui redistribue ces paquets, est isolée du reste du
système, en cela qu'aucun des autres processus ne peuvent modifier cette
pile hors du runlevel 1 ou 2.&lt;/p&gt;
&lt;p&gt;De la même façon, le navigateur chrom/ium fait fonctionner tous les
onglets, ainsi que toutes les extensions, dans des processus différents.
Certaines distributions linux implémentent un système de cette sorte
pour toutes les applications, ou seulement pour certaines. ainsi Chakra
Linux a un système d'installation d'applications dans des disques
virtuels, ce qui permet une sécurité totale du processus.&lt;/p&gt;
&lt;p&gt;Voila, j'espère vous en avoir appris un peu sur le fonctionnement des
différentes couches de linux, et j'espère que cet article vous poussera
a tester un peu votre système et a vous amuser avec les différents
runlevels&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Thu, 06 Sep 2012 23:29:00 +0200</pubDate><guid>tag:,2012-09-06:home/wxcafe/code/blog-source/output/posts/les-differentes-couches-dun-systeme-dexploitation/</guid></item><item><title>La programmation expliquée simplement</title><link>file:///home/wxcafe/code/blog-source/output/posts/la-programmation-expliquee-simplement/</link><description>&lt;p&gt;Salut!&lt;br /&gt;
Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire
récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé
pas mal de temps assez occupé. &lt;/p&gt;
&lt;p&gt;Enfin, après un certain temps a farfouiller au millieu des connecteurs
SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques
durs, je suis de retour pour un court article.&lt;br /&gt;
Du coup, je m'étais dit que j'allais reprendre sur le thème de
l'informatique expliquée au grand public, en tentant d'aller un peu plus
loin que la dernière fois sur le thème de la programmation&lt;br /&gt;
Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur.
Si a peu près tout le monde sait que "les ordinateurs, ils ne
comprennent que les 1 et les 0!", peu de gens savent comment cela
fonctionne en détail. &lt;/p&gt;
&lt;p&gt;Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà
des notions de base en informatique. Ainsi, vous savez surement que les
ordinateurs fonctionnent avec des programmes, qui sont composés de
code.&lt;br /&gt;
Ainsi, il faut comprendre que le code (source) est "compilé" en un
fichier "binaire". Un fichier binaire est un fichier comprenant les
instructions telles quexécutées par le processeur, et donc absolument
illisible pour un humain. &lt;/p&gt;
&lt;p&gt;La compilation est le processus qui transforme le code source en
binaire executable. Les binaires ont, sous Windows, l'extension .exe,
tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension
particulière.&lt;br /&gt;
Ceci étant dit, il faut comprendre que certains langages sont plus
proches que d'autres du langage processeur, les langages les plus
proches sont dits de "bas niveau". Les langages les plus éloignés sont
donc dits de haut niveau. &lt;/p&gt;
&lt;p&gt;Par exemple, l'assembleur est l'un des languages de plus bas niveau,
tandis que python par exemple est un langage de plus haut niveau. Les
langages de haut niveau sont souvent bien plus simples a comprendre et a
apprendre que les langages de bas niveau &lt;/p&gt;
&lt;p&gt;Ainsi, en C, un langage de niveau relativement bas, pour afficher
"hello world" sur l'écran, le code nécessaire est :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;#include &lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hello world&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;le même programme en python s'écrit :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;print&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;hello world&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et n'a pas besoin d'être compilé , puisqu'il peut être intepreté
directement. &lt;/p&gt;
&lt;p&gt;Python utilise en effet un système similaire a Java en ayant un
interpréteur dit "runtime" ou "temps réel", qui interprète le programme
sans le compiler. Java utilise un système légèrement différent, puisque
le code a besoin d'être compilé, mais est interpreté par un interpréteur
et non par le processeur. &lt;/p&gt;
&lt;p&gt;Cette méthode permet le fameux "code once, run everywhere", ce qui
signifie que le même code est exécutable sur quasiment tous les systèmes
d'exploitation (en fait, tous ceux sur lesquels linterpréteur est
disponible.)&lt;/p&gt;
&lt;p&gt;Voila, je vous laisse sur le fonctionnement de Java et de Python, et je
vais me coucher.&lt;br /&gt;
A bientôt!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Mon, 27 Aug 2012 00:22:00 +0200</pubDate><guid>tag:,2012-08-27:home/wxcafe/code/blog-source/output/posts/la-programmation-expliquee-simplement/</guid></item><item><title>GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère</title><link>file:///home/wxcafe/code/blog-source/output/posts/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere/</link><description>&lt;p&gt;GNU/Linux est un vaste et extraordinaire territoire technologique, mais
je ne vais pas m'attarder ici sur les aspects profondément techniques de
ce territoire pour faire plutôt une sorte d'introduction a ce qu'est
vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de
connaissances en informatique.&lt;/p&gt;
&lt;p&gt;GNU/Linux, que jabrégerai ici en Linux pour plus de simplicité, est un
Système d'Exploitation. Un système d'exploitation est, pour simplifier,
un ensemble d'outils informatiques qui vous permettent d'utiliser votre
ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation
de système d'exploitation (Operating System en anglais) est OS. Les 4
principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et
Solaris. Les trois derniers sont issus d'un autre système, plus ancien,
nommé UNIX.&lt;/p&gt;
&lt;p&gt;De ce fait, on pourrait penser que Linux remplace complètement Windows
une fois installé, et comprend une interface graphique, et toutes sortes
d'utilitaires permettant a l'utilisateur d'utiliser le système (sous
Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer.
Pour l'interface graphique, pensez a... Pensez que votre système affiche
autre chose que des lignes de commande.) Or non, une fois installé,
Linux en lui même ne vous afficherait aucune interface graphique, et
s'il est effectivement livré avec des utilitaires, ils ne sont que des
programmes en ligne de commande. Autant les utilisateurs avancés sauront
s'en servir, et pourront argumenter que c'est plus efficace ou plus
rapide, autant les utilisateurs basiques préfèrent une interface
graphique. Alors comment en obtenir une?&lt;/p&gt;
&lt;p&gt;Ici, il convient de faire une précision importante. Si il n'existe
qu'une seule version de Windows, ou de Mac OS, il existe en fait
plusieurs centaines de "versions" différentes de Linux. Appelées
distributions, ces dernière sont développées par des groupes
complètement séparés, et se basent sur le fait que Linux soit
entièrement placé sous licence libre (ce qui leur permet de l'utiliser a
leur guise, a condition que leur travail soit lui aussi placé sous
licence libre). De ce fait, de nombreuses distributions existent et se
développent en parallèle. On peut ainsi citer &lt;a href="http://debian.org"&gt;Debian&lt;/a&gt;, qui est l'une
des distributions les plus importantes, ou encore &lt;a href="http://ubuntu.com"&gt;Ubuntu&lt;/a&gt;, qui est
l'une des plus connues et des plus simples a utiliser.&lt;/p&gt;
&lt;p&gt;Ainsi, ces distributions intègrent une interface graphique. Cependant,
grâce a la liberté dont bénéficient les développeurs sous Linux, il
existe de nombreuses interfaces graphiques différentes : &lt;a href="unity.ubuntu.com"&gt;Unity&lt;/a&gt;, la
nouvelle interface d'Ubuntu; &lt;a href="gnome.org"&gt;GNOME&lt;/a&gt; , une interface qui vise a la
simplicité; ou encore &lt;a href="http://kde.org/"&gt;KDE&lt;/a&gt;, une interface utilisateur ressemblant a
Windows 7.&lt;/p&gt;
&lt;p&gt;Ainsi, le choix astronomique de distributions Linux a bien un sens :
chacune d'entre elle intègre des outils différents. Par exemple, Debian
intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend
particulièrement stable. Ubuntu intègre Unity, ce qui en fait une
distribution particulièrement intuitive. Linux Mint intègre Cinnamon,
qui est une version dérivée de GNOME 3, ce qui permet encore une autre
expérience. Et Arch Linux n'intègre pas d'interface graphique du tout,
ce qui permet a l'utilisateur de choisir entre les multiples interfaces
existantes.&lt;/p&gt;
&lt;p&gt;Ce qu'il est important de retenir de cela, c'est que Linux est un OS
complètement libre, ce qui signifie que n'importe qui peut modifier et
utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi,
Linux est un OS qui est véritablement créé par des passionnés, pour tous
et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué
a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus.
Cependant, Linux donne la possibilité a l'utilisateur de le rendre
affreusement complexe, mais aussi de le rendre adapté a ses besoins,
quels que soient ceux ci. Et c'est la que réside l'incroyable puissance
de ce Système d'Exploitation. Il est extraordinairement adaptable.&lt;/p&gt;
&lt;p&gt;N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas
technophiles. Ils pourraient adorer, et peut être même le devenir :)&lt;/p&gt;
&lt;p&gt;A bientôt!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Wed, 22 Aug 2012 20:33:00 +0200</pubDate><guid>tag:,2012-08-22:home/wxcafe/code/blog-source/output/posts/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere/</guid></item></channel></rss>

View File

@ -1,368 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Wxcafé</title><link>file:///home/wxcafe/code/blog-source/output/</link><description></description><atom:link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.tutorial.xml" rel="self"></atom:link><lastBuildDate>Fri, 07 Nov 2014 13:04:00 +0100</lastBuildDate><item><title>OpenSMTPd comme serveur mail sous debian</title><link>file:///home/wxcafe/code/blog-source/output/posts/opensmtpd-debian/</link><description>&lt;p&gt;J'avais dit il y a un certain temps que j'allais écrire un tutoriel expliquant
comment gérer ses mails soi-même. Il se trouve que j'ai récemment décidé de
changer le serveur qui héberge (entre autres) ce blog, et que ce dernier héberge
aussi mes emails. J'ai donc totalement changé d'infrastructure quand a la
gestion de mon système de mails.&lt;/p&gt;
&lt;p&gt;Ainsi, j'ai décidé de passer de Postfix a OpenSMTPd, changement que je voulais
effectuer depuis un certain temps. &lt;a href="https://opensmtpd.org"&gt;OpenSMTPd&lt;/a&gt; est un
projet originaire d'&lt;a href="http://openbsd.org"&gt;OpenBSD&lt;/a&gt; qui a pour but de fournir un
serveur SMTP fiable, simple, rapide, et surtout sécurisé (les même buts que ceux
qu'a le projet OpenBSD, globalement).&lt;/p&gt;
&lt;p&gt;Pour rappel, le système d'emails fonctionne d'une façon très simple : votre MUA
(Mail User Agent, ou client email) contacte le MTA (Mail Transport Agent, ou
serveur SMTP) de votre fournisseur email, qui contacte le MTA du fournisseur du
destinataire, qui lui même contacte le MDA (Mail Delivery Agent) qui délivre le
mail au destinataire.&lt;/p&gt;
&lt;p&gt;Si vous avez bien suivi, vous pouvez voir que je n'ai pas parlé de récupération
ni de lecture des mails. C'est pour une raison simple, qui est que ces taches
sont remplies par d'autres services encore (IMAP/POP pour la récupération depuis
le serveur, des yeux pour la lecture).&lt;/p&gt;
&lt;p&gt;Or ce qui nous intéresse ici, ce n'est pas simplement d'envoyer et de recevoir
des emails mais bien aussi de pouvoir les récupérer et les lire, et c'est pour
ça que ce tutoriel ne parlera pas que d'OpenSMTPd mais aussi de
&lt;a href="http://dovecot.org/"&gt;Dovecot&lt;/a&gt; qui fait office de serveur IMAP et
&lt;a href="http://www.ijs.si/software/amavisd/"&gt;amavis&lt;/a&gt;/&lt;a href="http://spamassassin.apache.org/"&gt;spamassassin&lt;/a&gt;
pour filtrer les mails entrants et sortants.
Le schéma suivant explique la façon dont les mails sont gérés sur le système&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt; &lt;span class="err"&gt;╭────────────────╮&lt;/span&gt; &lt;span class="err"&gt;╭──────────╮&lt;/span&gt;
&lt;span class="err"&gt;│╭──────────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;filter&lt;/span&gt; &lt;span class="err"&gt;───&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│─╮&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="n"&gt;mail&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="err"&gt;││&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;amavis&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;───────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│╯&lt;/span&gt; &lt;span class="n"&gt;OpenSMTPd&lt;/span&gt; &lt;span class="err"&gt;╭──│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;───&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;filter&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;───│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;╰──────────╯&lt;/span&gt;
&lt;span class="n"&gt;mail&lt;/span&gt; &lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;╭──────────╮&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;───────────│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;────────────┴─&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│─────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;MDA&lt;/span&gt; &lt;span class="err"&gt;─────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│─────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;mailbox&lt;/span&gt;
&lt;span class="err"&gt;╰────────────────╯&lt;/span&gt; &lt;span class="err"&gt;╰──────────╯&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Normalement, ceci devrait être a peu près clair.
Pour expliquer vite fait, les emails entrants (venant des utilisateurs mais
aussi d'autres correspondants) sont transmis a OpenSMTPd, qui envoie tout a
&lt;code&gt;amavis&lt;/code&gt;, qui vérifie a la fois les spams et les malwares pour les mails
venants de l'exterieur, et qui signe avec DKIM pour les mails venants de
nos utilisateurs, puis qui rentransmet les mails filtrés/signés a OpenSMTPd,
qui a ce moment-ci trie en fonction de la destination : les mails gérés
par le domaine vont via dovecot dans les boites mail des destinataires
locaux, les mails exterieurs vont directement vers le MTA du serveur
distant.&lt;/p&gt;
&lt;p&gt;Voyons comment mettre cela en place. Tout d'abord, il faut décider de la façon
dont les différents services vont communiquer.&lt;/p&gt;
&lt;p&gt;Déjà, amavis étant configuré par défaut pour écouter (en SMTP) sur le port
10024 et répondre sur le port 10025 quand il s'agit de filtrer et
écouter sur le port 10026 et répondre sur le port 10027 quand il s'agit de
signer, nous allons profiter de cette configuration et donc lui parler en SMTP
sur ces ports.&lt;/p&gt;
&lt;p&gt;Quand a Dovecot, nous allons lui transmettre les emails en LMTP (Local Mail
Transfer Protocol), non pas sur un port mais via un socket (dans ce cas précis,
&lt;code&gt;/var/run/dovecot/lmtp&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Ainsi, pour reprendre le schéma présenté plus haut :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt; &lt;span class="err"&gt;╭───────────────╮&lt;/span&gt; &lt;span class="err"&gt;╭───────────╮&lt;/span&gt;
&lt;span class="err"&gt;│╭─────────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10026&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│─╮&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="err"&gt;││&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;amavis&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="err"&gt;│╯&lt;/span&gt; &lt;span class="n"&gt;OpenSMTPd&lt;/span&gt; &lt;span class="err"&gt;╭──│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;──&lt;/span&gt; &lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10027&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;──│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sign&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;╰───────────╯&lt;/span&gt;
&lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="mi"&gt;25&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;────────│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;───────────╯&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;╰───────────────╯&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour les mails sortants; et&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt; &lt;span class="err"&gt;╭───────────────╮&lt;/span&gt; &lt;span class="err"&gt;╭────────────╮&lt;/span&gt;
&lt;span class="err"&gt;│╭─────────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│─╮&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="err"&gt;││&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;amavis&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="err"&gt;│╯&lt;/span&gt; &lt;span class="n"&gt;OpenSMTPd&lt;/span&gt; &lt;span class="err"&gt;╭──│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;──&lt;/span&gt; &lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10025&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;──│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;╰────────────╯&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;╭────────────╮&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;╰─&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;LMTP&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│───────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;mailbox&lt;/span&gt;
&lt;span class="err"&gt;╰───────────────╯&lt;/span&gt; &lt;span class="err"&gt;╰────────────╯&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour les mails entrants.&lt;/p&gt;
&lt;p&gt;Maintenant que la théorie est claire, mettons en place tout cela. Je me baserai
ici sur le fait que vous utilisiez une plateforme Debian ou OpenBSD. Pour
d'autres plateformes, la configuration devrait être sensiblement la même&lt;/p&gt;
&lt;p&gt;(Vous aurez besoin de certificats SSL pour ce guide, même self-signés.
Si vous ne savez pas comment en créer, vous pouvez aller voir &lt;a href="http://wxcafe.net/posts/05/30/14/SSL-ou-la-securite-sur-internet/"&gt;ce
post&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Tout d'abord, commençons par installer les programmes nécessaires :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;opensmtpd&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;pigeonhole&lt;/span&gt; &lt;span class="n"&gt;amavisd&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;managesieved&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;pkg_add&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;pigeonhole&lt;/span&gt; &lt;span class="n"&gt;amavisd&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Continuons en configurant OpenSMTPd tel que nous avons vu plus haut :&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/etc/smtpd.conf&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;This&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;smtpd&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt; &lt;span class="nx"&gt;system&lt;/span&gt;&lt;span class="na"&gt;-wide&lt;/span&gt; &lt;span class="nx"&gt;configuration&lt;/span&gt; &lt;span class="nx"&gt;file.&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;See&lt;/span&gt; &lt;span class="nx"&gt;smtpd.conf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;more&lt;/span&gt; &lt;span class="nx"&gt;information.&lt;/span&gt;
&lt;span class="err"&gt;##&lt;/span&gt; &lt;span class="nx"&gt;Certs&lt;/span&gt;
&lt;span class="nx"&gt;pki&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nx"&gt;certificate&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;/etc/certs/exem.pl.crt&amp;quot;&lt;/span&gt;
&lt;span class="nx"&gt;pki&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;key&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;/etc/certs/exem.pl.key&amp;quot;&lt;/span&gt;
&lt;span class="err"&gt;##&lt;/span&gt; &lt;span class="nx"&gt;Ports&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="nx"&gt;how&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;them&lt;/span&gt;
&lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;eth0&lt;/span&gt; &lt;span class="nb"&gt;port&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt; &lt;span class="nx"&gt;tls&lt;/span&gt; &lt;span class="nx"&gt;pki&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;hostname&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;auth&lt;/span&gt;&lt;span class="na"&gt;-optional&lt;/span&gt;
&lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;eth0&lt;/span&gt; &lt;span class="nb"&gt;port&lt;/span&gt; &lt;span class="mi"&gt;465&lt;/span&gt; &lt;span class="nx"&gt;tls&lt;/span&gt;&lt;span class="na"&gt;-require&lt;/span&gt; &lt;span class="nx"&gt;pki&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;hostname&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;auth&lt;/span&gt; &lt;span class="nx"&gt;mask&lt;/span&gt;&lt;span class="na"&gt;-source&lt;/span&gt;
&lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;eth0&lt;/span&gt; &lt;span class="nb"&gt;port&lt;/span&gt; &lt;span class="mi"&gt;587&lt;/span&gt; &lt;span class="nx"&gt;tls&lt;/span&gt;&lt;span class="na"&gt;-require&lt;/span&gt; &lt;span class="nx"&gt;pki&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;hostname&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;auth&lt;/span&gt; &lt;span class="nx"&gt;mask&lt;/span&gt;&lt;span class="na"&gt;-source&lt;/span&gt;
&lt;span class="err"&gt;##&lt;/span&gt; &lt;span class="nx"&gt;Aliases&lt;/span&gt;
&lt;span class="nb"&gt;table&lt;/span&gt; &lt;span class="nx"&gt;aliases&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:/&lt;/span&gt;&lt;span class="nx"&gt;etc&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;aliases&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;coming&lt;/span&gt; &lt;span class="nb"&gt;from&lt;/span&gt; &lt;span class="nx"&gt;amavisd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;checked&lt;/span&gt; &lt;span class="nb"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;spam&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;malware&lt;/span&gt;
&lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;lo&lt;/span&gt; &lt;span class="nb"&gt;port&lt;/span&gt; &lt;span class="mi"&gt;10025&lt;/span&gt; &lt;span class="kt"&gt;tag&lt;/span&gt; &lt;span class="nx"&gt;Filtered&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;coming&lt;/span&gt; &lt;span class="nb"&gt;from&lt;/span&gt; &lt;span class="nx"&gt;amavisd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;signed&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nx"&gt;DKIM&lt;/span&gt;
&lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;lo&lt;/span&gt; &lt;span class="nb"&gt;port&lt;/span&gt; &lt;span class="mi"&gt;10027&lt;/span&gt; &lt;span class="kt"&gt;tag&lt;/span&gt; &lt;span class="nx"&gt;Signed&lt;/span&gt;
&lt;span class="err"&gt;##&lt;/span&gt; &lt;span class="nx"&gt;Receiving&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;incoming&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;mail&lt;/span&gt; &lt;span class="nx"&gt;has&lt;/span&gt; &lt;span class="nx"&gt;been&lt;/span&gt; &lt;span class="nx"&gt;through&lt;/span&gt; &lt;span class="nx"&gt;amavisd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;then&lt;/span&gt; &lt;span class="nx"&gt;we&lt;/span&gt; &lt;span class="nx"&gt;can&lt;/span&gt; &lt;span class="nx"&gt;deliver&lt;/span&gt; &lt;span class="nx"&gt;it&lt;/span&gt;
&lt;span class="nb"&gt;accept&lt;/span&gt; &lt;span class="nx"&gt;tagged&lt;/span&gt; &lt;span class="nx"&gt;Filtered&lt;/span&gt; &lt;span class="nb"&gt;for&lt;/span&gt; &lt;span class="nb"&gt;any&lt;/span&gt; &lt;span class="nx"&gt;alias&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;aliases&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;deliver&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;lmtp&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;/var/run/dovecot/lmtp&amp;quot;&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;we&lt;/span&gt; &lt;span class="nx"&gt;directly&lt;/span&gt; &lt;span class="nx"&gt;tranfer&lt;/span&gt; &lt;span class="nx"&gt;incoming&lt;/span&gt; &lt;span class="nx"&gt;mail&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;amavisd&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;be&lt;/span&gt; &lt;span class="nb"&gt;checked&lt;/span&gt;
&lt;span class="nb"&gt;accept&lt;/span&gt; &lt;span class="nb"&gt;from&lt;/span&gt; &lt;span class="nb"&gt;any&lt;/span&gt; &lt;span class="nb"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;domain&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;exem.pl&amp;quot;&lt;/span&gt; &lt;span class="nx"&gt;relay&lt;/span&gt; &lt;span class="nx"&gt;via&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;smtp://localhost:10024&amp;quot;&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;we&lt;/span&gt; &lt;span class="nx"&gt;have&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;put&lt;/span&gt; &lt;span class="nx"&gt;these&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;this&lt;/span&gt; &lt;span class="k"&gt;order&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;avoid&lt;/span&gt; &lt;span class="nx"&gt;infinite&lt;/span&gt; &lt;span class="nx"&gt;loops&lt;/span&gt;
&lt;span class="err"&gt;##&lt;/span&gt; &lt;span class="nx"&gt;Sending&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;outgoint&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;mail&lt;/span&gt; &lt;span class="nx"&gt;has&lt;/span&gt; &lt;span class="nx"&gt;been&lt;/span&gt; &lt;span class="nx"&gt;through&lt;/span&gt; &lt;span class="nx"&gt;amavisd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;then&lt;/span&gt; &lt;span class="nx"&gt;we&lt;/span&gt; &lt;span class="nx"&gt;can&lt;/span&gt; &lt;span class="nx"&gt;deliver&lt;/span&gt; &lt;span class="nx"&gt;it&lt;/span&gt;
&lt;span class="nb"&gt;accept&lt;/span&gt; &lt;span class="nx"&gt;tagged&lt;/span&gt; &lt;span class="nx"&gt;Signed&lt;/span&gt; &lt;span class="nb"&gt;for&lt;/span&gt; &lt;span class="nb"&gt;any&lt;/span&gt; &lt;span class="nx"&gt;relay&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;we&lt;/span&gt; &lt;span class="nx"&gt;tranfer&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;outgoing&lt;/span&gt; &lt;span class="nx"&gt;mail&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;amavisd&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;be&lt;/span&gt; &lt;span class="nx"&gt;signed&lt;/span&gt;
&lt;span class="nb"&gt;accept&lt;/span&gt; &lt;span class="nb"&gt;for&lt;/span&gt; &lt;span class="nb"&gt;any&lt;/span&gt; &lt;span class="nx"&gt;relay&lt;/span&gt; &lt;span class="nx"&gt;via&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;smtp://localhost:10026&amp;quot;&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;same&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;we&lt;/span&gt; &lt;span class="nx"&gt;have&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;put&lt;/span&gt; &lt;span class="nx"&gt;these&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;this&lt;/span&gt; &lt;span class="k"&gt;order&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="nx"&gt;infinite&lt;/span&gt; &lt;span class="nx"&gt;loops...&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Expliquons un peu ce fichier de configuration :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tout d'abord, le paragraphe nommé "Certs" contient les déclaration
d'emplacement des certificats SSL.&lt;/li&gt;
&lt;li&gt;Ensuite, le paragraphe contenant les ports externes sur lesquels nous écoutons :
port 25 avec TLS optionel et ports 465 et 587 avec TLS obligatoire&lt;/li&gt;
&lt;li&gt;Les alias sont définis juste après&lt;/li&gt;
&lt;li&gt;Le paragraphe suivant contient les ports locaux sur lesquels nous écoutons :
10025 (port de sortie du filtre de amavis) dont on taggue les mails sortants
comme "Filtered" et 10027 (port de sortie des mails signés par amavis) dont on
taggue les mails sortants comme "Signed"&lt;/li&gt;
&lt;li&gt;Nous avons ensuite le paragraphe qui traite les mails rentrants. Si le mail
traité est taggué comme Filtered, alors il a été vérifié par amavis, et on
peut donc le transmettre au destinataire. Sinon, c'est qu'il n'a pas encore
été vérifié par amavis, donc on lui transmet pour analyse (sur le port 10024
donc). Il est important de mettre les déclarations dans ce sens, car la
première règle qui matche l'état du paquet est appliquée. Ici, la deuxième
ligne matchant tous les mails arrivant et la première seulement ceux filtrés,
inverser leur sens voudrait dire que les mails seraient toujours renvoyés a
amavis&lt;/li&gt;
&lt;li&gt;Enfin, le dernier paragraphe traite les mails sortants. De la même façon que
pour le paragraphe précédent, si le mail sortant est déjà taggué comme Signed
on le transmet au MTA du destinataire, sinon il n'a pas encore été signé par
DKIM par amavis et on le transmet donc a amavis pour qu'il le signe. Le
problème de l'ordre des lignes se pose encore, pour la même raison qu'au
dessus.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nous allons maintenant configurer dovecot. Comme nous l'avons vu, dovecot doit
écouter en LMTP via la socket &lt;code&gt;/var/run/dovecot/lmtp&lt;/code&gt; et transmettre les
emails a la boite email de l'utilisateur. Il serait aussi interessant
qu'il nous permette de récuperer les mails. Pour cette configuration, on ne
mettra en place que du IMAPS. Cependant, si vous voulez mettre en place du
POP3[s], différents guides sont trouvables facilement sur internet.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/etc/dovecot/dovecot.conf&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;## Dovecot configuration file&lt;/span&gt;
&lt;span class="cp"&gt;# basic config&lt;/span&gt;
&lt;span class="n"&gt;info_log_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dovecot&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;
&lt;span class="n"&gt;log_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dovecot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;
&lt;span class="n"&gt;log_timestamp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;%Y-%m-%d %H:%M:%S &amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;mail_location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;maildir&lt;/span&gt;&lt;span class="o"&gt;:%&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mail&lt;/span&gt;
&lt;span class="cp"&gt;# authentication&lt;/span&gt;
&lt;span class="n"&gt;passdb&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;driver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pam&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;userdb&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;driver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;passwd&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="cp"&gt;# the protocols we use&lt;/span&gt;
&lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;imap&lt;/span&gt; &lt;span class="n"&gt;lmtp&lt;/span&gt; &lt;span class="n"&gt;sieve&lt;/span&gt;
&lt;span class="cp"&gt;# ssl config&lt;/span&gt;
&lt;span class="n"&gt;ssl_cert&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;exem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cert&lt;/span&gt;
&lt;span class="n"&gt;ssl_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;exem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;
&lt;span class="n"&gt;ssl_cipher_list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;kEDH&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;kEECDH&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="n"&gt;PSK&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="n"&gt;SRP&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;DES&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="n"&gt;aNULL&lt;/span&gt;
&lt;span class="n"&gt;ssl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;yes&lt;/span&gt;
&lt;span class="cp"&gt;## configuring services &lt;/span&gt;
&lt;span class="cp"&gt;# disables imap login without SSL (yes dovecot is dumb that way)&lt;/span&gt;
&lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="n"&gt;imap&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;login&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;inet_listener&lt;/span&gt; &lt;span class="n"&gt;imap&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="n"&gt;lmtp&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;unix_listener&lt;/span&gt; &lt;span class="n"&gt;lmtp&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;mode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mo"&gt;0666&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="cp"&gt;## configuring protocols&lt;/span&gt;
&lt;span class="cp"&gt;# the dovecot lda, we set it to use sieve&lt;/span&gt;
&lt;span class="n"&gt;protocol&lt;/span&gt; &lt;span class="n"&gt;lda&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;mail_plugins&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;mail_plugins&lt;/span&gt; &lt;span class="n"&gt;sieve&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;protocol&lt;/span&gt; &lt;span class="n"&gt;lmtp&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;postmaster_address&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;whoever&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;exem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pl&lt;/span&gt;
&lt;span class="n"&gt;mail_plugins&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;mail_plugins&lt;/span&gt; &lt;span class="n"&gt;sieve&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;plugin&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;sieve&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dovecot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sieve&lt;/span&gt;
&lt;span class="n"&gt;sieve_dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="n"&gt;sieve&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;ATTENTION: Sous OpenBSD, remplacez&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;passdb&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;driver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pam&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;par&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;passdb&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;driver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bsdauth&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;pour identifier les utilisateurs système&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ici aussi, voyons comment ce fichier est structuré :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tout d'abord, les configurations de base : ou iront les logs, comment formater
leur datation, et l'endroit ou seront stockés les mails des utilisateurs.&lt;/li&gt;
&lt;li&gt;Nous configurons ensuite la gestion de l'authentification des utilisateurs.
Ici nous identifions les utilisateurs avec le fichier /etc/passwd et leurs
mots de passe avec PAM (ou BSDAuth)&lt;/li&gt;
&lt;li&gt;Nous configurons ensuite les protocoles que nous servons. Ici, nous voulons de
l'IMAPS, du LMTP local et Sieve (qui sert pour trier les messages).&lt;/li&gt;
&lt;li&gt;Nous configurons le SSL&lt;/li&gt;
&lt;li&gt;Le section suivante contient la configuration des services. Nous avons en
premier lieu le service IMAP, dont la configuration sert uniquement a
désactiver IMAP. En effet, dovecot ne permet d'activer IMAPS qu'en activant
IMAP avec. Comme nous ne voulons pas d'IMAP sans SSL, nous le désactivons.
La configuration de lmtp sert a attribuer des permissions plus correctes au
fifo qu'il utilise&lt;/li&gt;
&lt;li&gt;Nous configurons maintenant les protocoles, pour faire fonctionner Sieve&lt;/li&gt;
&lt;li&gt;enfin, nous configurons le plugin sieve en lui indiquant quel fichier et
quel dossier utiliser pour sa configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enfin, il nous reste a configurer amavis. Comme expliqué, amavis va nous servir
a deux choses : signer les emails sortants, et filtrer les emails entrants. Il
doit donc écouter sur les port 10026 pour les signatures et 10024 pour le
filtrage, et répondre respectivement sur les ports 10027 et 10025 (le tout, en
SMTP. Comme toutes les transactions se font sur le loopback, il n'y a aucun
risque a utiliser des protocoles non chiffrés.
Pour OpenBSD, pensez a copier la configuration par défaut depuis
&lt;code&gt;/usr/local/share/examples/amavisd-new/amavisd.conf&lt;/code&gt; et ajoutez les
modifications nécessaires a la fin du fichier.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/etc/amavis/conf.d/99-local.conf&lt;/code&gt; (debian)
&lt;code&gt;/etc/amavis.conf&lt;/code&gt; (OpenBSD)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="n"&gt;strict&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;enable_dkim_verification&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;enable_dkim_signing&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;dkim_key&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;exem.pl&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;main&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;/etc/certs/dkim.key&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;dkim_signature_options_bysender_maps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="sc"&gt;&amp;#39;.&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;ttl&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;3600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;relaxed&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;simple&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;inet_socket_port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10026&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;policy_bank&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;MYNETS&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;originating&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;os_fingerprint_method&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;undef&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;interface_policy&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="mi"&gt;10026&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;ORIGINATING&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;policy_bank&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;ORIGINATING&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;originating&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;allow_disclaimers&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;virus_admin_maps&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;root\@$mydomain&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="n"&gt;spam_admin_maps&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;root\@$mydomain&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="n"&gt;warnbadhsender&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;forward_method&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;smtp&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;localhost&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;10027&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;smtpd_discard_ehlo_keywords&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="n"&gt;BITMIME&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="n"&gt;bypass_banned_checks_maps&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="n"&gt;terminate_dsn_on_notify_success&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="cp"&gt;#------------ Do not modify anything below this line -------------&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;ensure&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;defined&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;A nouveau, expliquons ce fichier :
- le premier paragraphe définit que nous voulons qu'amavis signe les emails
sortants, vérifie la signature DKIM des emails rentrants, et l'endroit ou se
trouve la clé privée servant a signer les emails.
- le second définit les options DKIM que nous souhaitons utiliser comme défaut.
Je vous invite a consulter la &lt;a href="https://tools.ietf.org/html/rfc4871"&gt;RFC 4871&lt;/a&gt;
- nous définissons ensuite les ports sur lesquels nous allons écouter, puis les
paramètres que nous utiliserons pour les emails venant de nos utilisateurs :
ils seront traités comme "originating" et nous ne vérifierons pas l'OS duquel
ils viennent.
- nous savons que les emails venants du port 10026 sont sortants, nous les
traitons donc comme tel
- le paragraphe suivant décrit le traitement que nous faisons subir aux emails
sortants : tout d'abord, nous réaffirmons qu'ils viennent bien de notre
serveur. Nous autorisons les disclaimers (voire encore une fois la &lt;a href="https://tools.ietf.org/html/rfc4871"&gt;RFC
4871&lt;/a&gt;. Nous déclarons l'adresse a
prévenir en cas de spam/virus venants de notre système, et que nous voulons
être prévenus. Nous déclarons ou envoyer les mails une fois signés et filtrés,
puis qu'il est nécessaire de convertir les emails au format 7 bits avant de
les envoyer au MTA, que nous autorisons tous les types et noms de fichiers, et
les notifications de succès d'envoi. Et voila!&lt;/p&gt;
&lt;p&gt;Vous avez pu remarquer qu'a aucun moment nous ne configurions ni la signature
des emails sortants ni le filtrage des emails entrants. Ces paramètres sont en
fait inclus par défaut dans amavis.&lt;/p&gt;
&lt;p&gt;Il nous reste cependant quelques opérations a faire, encore.
Tout d'abord, il nous faut générer notre clé DKIM. Pour cela, il existe
différentes méthodes, j'ai personnellement utilisé opendkim (&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy"&gt;un
tutorial&lt;/a&gt;)
mais de nombreuses autre méthodes existent.
Il nous reste encore a configurer spamassassin :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;#rewrite_header Subject *****SPAM*****&lt;/span&gt;
&lt;span class="cp"&gt;# report_safe 1&lt;/span&gt;
&lt;span class="n"&gt;required_score&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;
&lt;span class="cp"&gt;# use_bayes 1&lt;/span&gt;
&lt;span class="cp"&gt;# bayes_auto_learn 1&lt;/span&gt;
&lt;span class="cp"&gt;# bayes_ignore_header X-Bogosity&lt;/span&gt;
&lt;span class="cp"&gt;# bayes_ignore_header X-Spam-Flag&lt;/span&gt;
&lt;span class="cp"&gt;# bayes_ignore_header X-Spam-Status&lt;/span&gt;
&lt;span class="n"&gt;ifplugin&lt;/span&gt; &lt;span class="n"&gt;Mail&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;SpamAssassin&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Plugin&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Shortcircuit&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit USER_IN_WHITELIST on&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit USER_IN_DEF_WHITELIST on&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit USER_IN_ALL_SPAM_TO on&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit SUBJECT_IN_WHITELIST on&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit USER_IN_BLACKLIST on&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit USER_IN_BLACKLIST_TO on&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit SUBJECT_IN_BLACKLIST on&lt;/span&gt;
&lt;span class="n"&gt;shortcircuit&lt;/span&gt; &lt;span class="n"&gt;ALL_TRUSTED&lt;/span&gt; &lt;span class="n"&gt;off&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit BAYES_99 spam&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit BAYES_00 ham&lt;/span&gt;
&lt;span class="n"&gt;endif&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;Mail&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;SpamAssassin&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Plugin&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Shortcircuit&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Comme vous pouvez le voir, les modifications se résument globalement a baisser
le required_score pour ma part.&lt;/p&gt;
&lt;p&gt;Pour finir, activez les services nécessaires : opensmtpd, dovecot, amavisd, et
spamassassin, et tout devrait fonctionner parfaitement&lt;/p&gt;
&lt;p&gt;Bon courage pour votre hosting de mail ensuite...&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafé</dc:creator><pubDate>Fri, 07 Nov 2014 13:04:00 +0100</pubDate><guid>tag:,2014-11-07:home/wxcafe/code/blog-source/output/posts/opensmtpd-debian/</guid></item></channel></rss>

View File

@ -1,344 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Wxcafé</title><link href="file:///home/wxcafe/code/blog-source/output/" rel="alternate"></link><link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.teaching.xml" rel="self"></link><id>file:///home/wxcafe/code/blog-source/output/</id><updated>2015-05-16T02:00:00+02:00</updated><entry><title>SSL - STARTTLS</title><link href="file:///home/wxcafe/code/blog-source/output/posts/ssl-starttls/" rel="alternate"></link><updated>2015-05-16T02:00:00+02:00</updated><author><name>Wxcafe</name></author><id>tag:,2015-05-16:home/wxcafe/code/blog-source/output/posts/ssl-starttls/</id><summary type="html">&lt;p&gt;Le chiffrement SSL pour les services en ligne est un problème relativement
récent, par rapport a l&amp;rsquo;histoire d&amp;rsquo;Internet. Sa mise en place pose
problème : les protocoles existants ne s&amp;rsquo;accommodent qu&amp;rsquo;assez mal de recevoir
soudainement un flot de données chiffrées, mais développer de nouveaux
protocoles est complexe et n&amp;rsquo;apporte rien d&amp;rsquo;intéressant. Pour palier a ce
problème, deux solutions sont apparues.&lt;/p&gt;
&lt;p&gt;Le première consiste à faire écouter les services sur un
autre port, dans un tunnel SSL. De cette façon, le service existant écoute
normalement, mais il ne répond pas directement aux requêtes. A la place, un
tunnel SSL est mis en place, et les requêtes et les réponses passent dans le
tunnel (ou elles apparaissent donc chiffrées pour l&amp;rsquo;extérieur). Cela permet de
proposer un service chiffré en modifiant de façon minimale le programme, au prix
de devoir aussi changer tous les clients, et de devoir les orienter sur un autre
port.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;autre approche qui a été utilisée est une approche d&amp;rsquo;&lt;em&gt;upgrade&lt;/em&gt;. La
communication commence en mode non chiffré, puis le client demande l&amp;rsquo;upgrade de
la connexion vers le mode chiffré s&amp;rsquo;il le supporte, les deux machines
machines font un &lt;em&gt;handshake&lt;/em&gt; SSL et la communication continue a travers le
tunnel SSL. Le service peut continuer a écouter sur son port habituel, et seuls
les clients capables de passer en SSL le feront, ce qui permet de faire la &amp;ldquo;mise
a jour&amp;rdquo; en douceur.&lt;/p&gt;
&lt;p&gt;Il est souvent demandé quelle est la meilleure méthode pour mettre en place un
service &amp;ndash; laisser un port pour le SSL et un pour le trafic non chiffré, ou bien
un seul, avec &lt;code&gt;STARTTLS&lt;/code&gt;, qui &lt;em&gt;upgrade&lt;/em&gt; les connexions si nécessaire.&lt;br /&gt;
La réponse est que &lt;code&gt;STARTTLS&lt;/code&gt; est plus interessant, pour plusieurs raisons. Tout
d&amp;rsquo;abord, il permet de n&amp;rsquo;utiliser qu&amp;rsquo;un seul port : ça permet de simplifier la
configuration du firewall. En plus de ça, il permet aux clients &amp;ldquo;anciens&amp;rdquo; (ceux
qui ne supportent pas SSL, donc ceux qui devraient être changés) de toujours se
connecter, même si cela signifie que leurs informations seront transmises en
clair. Surtout, il permet d&amp;rsquo;éviter aux utilisateurs d&amp;rsquo;avoir a configurer leurs
clients. Si le client supporte le chiffrement, il l&amp;rsquo;activera de lui même s&amp;rsquo;il
voit qu&amp;rsquo;il est disponible.&lt;br /&gt;
Bref, mettez en place du &lt;code&gt;STARTTLS&lt;/code&gt;, et pas du SSL. C&amp;rsquo;est mieux pour la sécurité
de tout le monde.&lt;/p&gt;</summary></entry><entry><title>Les systèmes de fichiers</title><link href="file:///home/wxcafe/code/blog-source/output/posts/les-systemes-de-fichiers/" rel="alternate"></link><updated>2012-09-25T10:28:00+02:00</updated><author><name>Wxcafe</name></author><id>tag:,2012-09-25:home/wxcafe/code/blog-source/output/posts/les-systemes-de-fichiers/</id><summary type="html">&lt;p&gt;Un système de fichiers. Vous en avez surement déjà entendu parlé si vous
avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous
connaissez surement NTFS, EXT4, ou encore FAT32.&lt;/p&gt;
&lt;p&gt;Ces différents noms désignent en effet des systèmes de fichiers. Mais
qu'est-ce qu'un système de fichiers?&lt;/p&gt;
&lt;p&gt;Pour comprendre cela, il faut déjà savoir ce qu'est exactement un
fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la
plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio
(&lt;a href="http://fr.wikipedia.org/wiki/Kibioctet#Multiples_normalis.C3.A9s"&gt;kibioctet&lt;/a&gt;), en fonction du système de fichier utilisé.), qui est
donc composé de bits, interprétés différemment en fonction du type de
fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il
n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent,
ou il commence ni où il s'arrête (je schématise un peu, mais c'est
l'idée). &lt;/p&gt;
&lt;p&gt;Ainsi, le système de fichier donne un cadre et un standard à
l'arborescence des fichiers. Par exemple, le système de fichier ext4
utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de
disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio
et mesurer la taille des fichiers en blocs de cette façon. Les systèmes
de fichiers nécessitent l'inclusion de drivers dans le noyau pour
pouvoir être pris en compte. &lt;/p&gt;
&lt;p&gt;Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs,
reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu
près tout type de partition récente.&lt;/p&gt;
&lt;p&gt;Il convient de bien faire la différence entre le système de fichier et
l'arborescence des fichiers. Si l'arborescence des fichiers est en fait
une entité virtuelle englobant la racine / et tous les fichiers et
dossiers contenus dedans, le système de fichier permet a votre système
GNU/Linux de distinguer les différents fichiers composants cette
arborescence.&lt;/p&gt;
&lt;p&gt;Détaillons maintenant les types de fichiers les plus répandus:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table,
soit la définition d'un système de fichier), remplissent leur rôle le
plus simplement possible. Ne permettant (historiquement) que des noms de
8 caractères (plus extension de trois caractères), ni chiffrement, ni
système de distinction d'utilisateurs (DOS étant un système
mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32,
utlisants respectivement des blocs de 16 et 32 Kio.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NTFS :. Le NTFS (pour New Technology File System, rapport a Windows
NT) est un système de fichier qui est apparu avec Windows XP, et qui
était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a
FAT différentes capacités dont le chiffrement, les liens symboliques, la
compression et les quotas pour les volumes, permettant de limiter la
taille maximum occupée dans une partition.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012.
Ne différant pas énormément de NTFS, je le mentionne principalement
parce qu'il est prévu qu'il soit le défaut pour Windows 8.
Il apporte principalement la redondance, c'est a dire que chaque
fichier possède une somme de contrôle en 64 bits stockée dans un fichier
séparé pour éviter les corruption de disque.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers
les plus utilisés sous linux pour le grand public. (Je traiterai ici
d'ext4, puisque c'est le plus récent.) Il dispose de toutes les
fonctions que l'on peut attendre d'un système de fichiers moderne, ni
plus ni moins. Ainsi, ext4 est un système de fichiers journalisé,
acceptant les capacités jusquà 1 Exioctet, et utilise l'allocation dite
"par extent", ce qui signifie que la création d'un fichier réserve
automatiquement les zones contiguës de façon a réduire la fragmentation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ReiserFS : ce système de fichiers, créé par le (légèrement mégalo)
programmeur Hans Reiser, est a retenir pour avoir été le premier système
de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des
4 milliards. Le but de ce système est de créer un système polyvalent, a
la fois système de fichiers et base de donnée (de part sa grande
capacité en terme de nombre de fichiers et de l'utilisation d'un
journal.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi
l'allocation par extent, mais possède de plus un système de
sous-volumes, qui permet daccéder a plusieurs arborescences de fichiers
montées en même temps (système pratique et utile pour faire des
snapshots de systèmes.). Il permet aussi de redimensionner a chaud la
taille des partitions, en les agrandissant ou en les rétrécissant, est
compatible avec &lt;a href="http://fr.wikipedia.org/wiki/LVM"&gt;LVM&lt;/a&gt;, a un système de checking intégré (btrfsck), et
utilise un algorithme de compression appelé LZ4, qui accélère les accès
aux fichiers compressés d'environ 30% par rapport a LZO, le système
utilisé dans ext4.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;HFS+ : le système de fichier présent sur tous les macs a des capacités
relativement standards, et ressemble énormément a l'ext3. Il supporte
cependant les liens directs vers les dossiers, fonction rare sur les
systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau
dans les années a venir&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux
et *BSD, est, tel Btrfs, a la fois un système de fichier et un
remplaçant/compatible avec LVM, C'est un système de fichiers conçu
principalement pour les serveurs, et il intègre ainsi un système de
redondance des données pour éviter les corruptions, un mode RAID-Z
(apparenté au RAID5), des checks dintégrité en continu, des snapshots,
etc...&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Comme on a pu le voir, les systèmes de fichiers disponibles sont
légions. Cependant, le plus adapté a Linux et a une utilisation grand
public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier
n'est pas aujourd'hui proposé par défaut sur les distributions les plus
utilisées, au profit de l'ext4, qui commence a accuser son âge...&lt;/p&gt;
&lt;p&gt;Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au
fonctionnement du système, sont en fait de première importance, et ce
choix ne devrait pas être laissé au hasard, et être mis a jour
régulièrement (pour éviter les failles de sécurité...)&lt;/p&gt;
&lt;p&gt;Bon courage, et bon choix pour votre prochain système.&lt;/p&gt;</summary></entry><entry><title>Les différentes couches d'un système d'exploitation</title><link href="file:///home/wxcafe/code/blog-source/output/posts/les-differentes-couches-dun-systeme-dexploitation/" rel="alternate"></link><updated>2012-09-06T23:29:00+02:00</updated><author><name>Wxcafe</name></author><id>tag:,2012-09-06:home/wxcafe/code/blog-source/output/posts/les-differentes-couches-dun-systeme-dexploitation/</id><summary type="html">&lt;p&gt;Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques
années (plus ou moins, parce que j'ai toujours un Windows en dual boot,
principalement pour les jeux (possiblement plus pour longtemps, avec
l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou
moins bien mon système. Or il y a plusieurs choses a savoir sur les
systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est
le système de couches.&lt;/p&gt;
&lt;p&gt;Un système d'exploitation (de type UNIX, \&amp;lt;troll&gt;enfin un vrai système quoi.
\&amp;lt;/troll&gt;) incorpore plusieurs systèmes de couches.&lt;/p&gt;
&lt;p&gt;Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique,
c'est a dire que tous les composants sont intégrés au kernel. Ce qui
signifie que rien ne peut être ajouté au noyau sans recompiler celui ci.
Or, quand on sait que le noyau comprend entre autres les drivers du
matériel et des systèmes de fichier, cela peut poser des problèmes quand
a la taille du kernel et a la licence libre de ce dernier. &lt;/p&gt;
&lt;p&gt;Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui
signifie que des modules peuvent être chargé a tout moment en cours
dexécution, ce qui permet l'utilisation de nouveaux systèmes de
fichiers a chaud, ou l'insertion de matériel et l'installation de
drivers sans interrompre lexécution du système (Windows utilise un
système de fausse installation de drivers pour le matériel externe, et
un système de pré-installation des drivers pour les périphériques dits
"plug and play")&lt;/p&gt;
&lt;p&gt;Après le noyau intervient le système. Or, au tous premiers instants du
boot, les systèmes GNU/Linux utilisent un système permettant de limiter
l'utilisation de ressources systèmes si elles ne sont pas nécessaires,
et incorpore ainsi un système dit de "runlevels"&lt;/p&gt;
&lt;p&gt;Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce
runlevel permet de tester le bon démarrage du système sans avoir a
effectuer de manipulation pour le ré-éteindre&lt;/p&gt;
&lt;p&gt;Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté
étant donné que ce runlevel donne accès a un système en étant
automatiquement loggé en tant que root, avec tous les autres
utilisateurs désactivés, de même que tous les systèmes de réseaux&lt;/p&gt;
&lt;p&gt;Le runlevel 2 est appelé mode multi user, et vous mets en face d'un
système classique. en ligne de commande, mais avec tous les systèmes de
réseau désactivés.&lt;/p&gt;
&lt;p&gt;Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux
activés.&lt;/p&gt;
&lt;p&gt;Le runlevel 4 n'est pas officiellement défini, et est censé être
activable en fonction des besoins de l'utilisateur. Sur la plupart des
distributions grand public, ce runlevel est lié au...&lt;/p&gt;
&lt;p&gt;Runlevel 5! Multi-user, networking, with working GUI! c'est le système
tel que vous le connaissez, avec l'interface graphique et le système de
login graphique.&lt;/p&gt;
&lt;p&gt;Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine
quand il devient le runlevel courant.&lt;/p&gt;
&lt;p&gt;(Il est a noter que Debian, et donc toutes les distribs qui en sont
dérivées, ne font pas de distinction entre les differents runlevels du 2
au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login
et une interface graphique, et un mode réseau fonctionnel, bref avec des
fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)&lt;/p&gt;
&lt;p&gt;Il est possible de changer de runlevel grâce a la commande runlevel
(oui, c'est évident...)&lt;/p&gt;
&lt;p&gt;Les systèmes Linux utilisent aussi un système dit de SandBox , qui en
informatique est un système permettant d'isoler les processus les uns
des autres. Ainsi, la pile réseau, qui est le système auquel les
différents processus envoient les différents paquets qui doivent sortir
de la machine , et qui redistribue ces paquets, est isolée du reste du
système, en cela qu'aucun des autres processus ne peuvent modifier cette
pile hors du runlevel 1 ou 2.&lt;/p&gt;
&lt;p&gt;De la même façon, le navigateur chrom/ium fait fonctionner tous les
onglets, ainsi que toutes les extensions, dans des processus différents.
Certaines distributions linux implémentent un système de cette sorte
pour toutes les applications, ou seulement pour certaines. ainsi Chakra
Linux a un système d'installation d'applications dans des disques
virtuels, ce qui permet une sécurité totale du processus.&lt;/p&gt;
&lt;p&gt;Voila, j'espère vous en avoir appris un peu sur le fonctionnement des
différentes couches de linux, et j'espère que cet article vous poussera
a tester un peu votre système et a vous amuser avec les différents
runlevels&lt;/p&gt;</summary></entry><entry><title>La programmation expliquée simplement</title><link href="file:///home/wxcafe/code/blog-source/output/posts/la-programmation-expliquee-simplement/" rel="alternate"></link><updated>2012-08-27T00:22:00+02:00</updated><author><name>Wxcafe</name></author><id>tag:,2012-08-27:home/wxcafe/code/blog-source/output/posts/la-programmation-expliquee-simplement/</id><summary type="html">&lt;p&gt;Salut!&lt;br /&gt;
Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire
récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé
pas mal de temps assez occupé. &lt;/p&gt;
&lt;p&gt;Enfin, après un certain temps a farfouiller au millieu des connecteurs
SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques
durs, je suis de retour pour un court article.&lt;br /&gt;
Du coup, je m'étais dit que j'allais reprendre sur le thème de
l'informatique expliquée au grand public, en tentant d'aller un peu plus
loin que la dernière fois sur le thème de la programmation&lt;br /&gt;
Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur.
Si a peu près tout le monde sait que "les ordinateurs, ils ne
comprennent que les 1 et les 0!", peu de gens savent comment cela
fonctionne en détail. &lt;/p&gt;
&lt;p&gt;Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà
des notions de base en informatique. Ainsi, vous savez surement que les
ordinateurs fonctionnent avec des programmes, qui sont composés de
code.&lt;br /&gt;
Ainsi, il faut comprendre que le code (source) est "compilé" en un
fichier "binaire". Un fichier binaire est un fichier comprenant les
instructions telles quexécutées par le processeur, et donc absolument
illisible pour un humain. &lt;/p&gt;
&lt;p&gt;La compilation est le processus qui transforme le code source en
binaire executable. Les binaires ont, sous Windows, l'extension .exe,
tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension
particulière.&lt;br /&gt;
Ceci étant dit, il faut comprendre que certains langages sont plus
proches que d'autres du langage processeur, les langages les plus
proches sont dits de "bas niveau". Les langages les plus éloignés sont
donc dits de haut niveau. &lt;/p&gt;
&lt;p&gt;Par exemple, l'assembleur est l'un des languages de plus bas niveau,
tandis que python par exemple est un langage de plus haut niveau. Les
langages de haut niveau sont souvent bien plus simples a comprendre et a
apprendre que les langages de bas niveau &lt;/p&gt;
&lt;p&gt;Ainsi, en C, un langage de niveau relativement bas, pour afficher
"hello world" sur l'écran, le code nécessaire est :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;#include &lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hello world&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;le même programme en python s'écrit :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;print&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;hello world&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et n'a pas besoin d'être compilé , puisqu'il peut être intepreté
directement. &lt;/p&gt;
&lt;p&gt;Python utilise en effet un système similaire a Java en ayant un
interpréteur dit "runtime" ou "temps réel", qui interprète le programme
sans le compiler. Java utilise un système légèrement différent, puisque
le code a besoin d'être compilé, mais est interpreté par un interpréteur
et non par le processeur. &lt;/p&gt;
&lt;p&gt;Cette méthode permet le fameux "code once, run everywhere", ce qui
signifie que le même code est exécutable sur quasiment tous les systèmes
d'exploitation (en fait, tous ceux sur lesquels linterpréteur est
disponible.)&lt;/p&gt;
&lt;p&gt;Voila, je vous laisse sur le fonctionnement de Java et de Python, et je
vais me coucher.&lt;br /&gt;
A bientôt!&lt;/p&gt;</summary></entry><entry><title>GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère</title><link href="file:///home/wxcafe/code/blog-source/output/posts/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere/" rel="alternate"></link><updated>2012-08-22T20:33:00+02:00</updated><author><name>Wxcafe</name></author><id>tag:,2012-08-22:home/wxcafe/code/blog-source/output/posts/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere/</id><summary type="html">&lt;p&gt;GNU/Linux est un vaste et extraordinaire territoire technologique, mais
je ne vais pas m'attarder ici sur les aspects profondément techniques de
ce territoire pour faire plutôt une sorte d'introduction a ce qu'est
vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de
connaissances en informatique.&lt;/p&gt;
&lt;p&gt;GNU/Linux, que jabrégerai ici en Linux pour plus de simplicité, est un
Système d'Exploitation. Un système d'exploitation est, pour simplifier,
un ensemble d'outils informatiques qui vous permettent d'utiliser votre
ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation
de système d'exploitation (Operating System en anglais) est OS. Les 4
principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et
Solaris. Les trois derniers sont issus d'un autre système, plus ancien,
nommé UNIX.&lt;/p&gt;
&lt;p&gt;De ce fait, on pourrait penser que Linux remplace complètement Windows
une fois installé, et comprend une interface graphique, et toutes sortes
d'utilitaires permettant a l'utilisateur d'utiliser le système (sous
Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer.
Pour l'interface graphique, pensez a... Pensez que votre système affiche
autre chose que des lignes de commande.) Or non, une fois installé,
Linux en lui même ne vous afficherait aucune interface graphique, et
s'il est effectivement livré avec des utilitaires, ils ne sont que des
programmes en ligne de commande. Autant les utilisateurs avancés sauront
s'en servir, et pourront argumenter que c'est plus efficace ou plus
rapide, autant les utilisateurs basiques préfèrent une interface
graphique. Alors comment en obtenir une?&lt;/p&gt;
&lt;p&gt;Ici, il convient de faire une précision importante. Si il n'existe
qu'une seule version de Windows, ou de Mac OS, il existe en fait
plusieurs centaines de "versions" différentes de Linux. Appelées
distributions, ces dernière sont développées par des groupes
complètement séparés, et se basent sur le fait que Linux soit
entièrement placé sous licence libre (ce qui leur permet de l'utiliser a
leur guise, a condition que leur travail soit lui aussi placé sous
licence libre). De ce fait, de nombreuses distributions existent et se
développent en parallèle. On peut ainsi citer &lt;a href="http://debian.org"&gt;Debian&lt;/a&gt;, qui est l'une
des distributions les plus importantes, ou encore &lt;a href="http://ubuntu.com"&gt;Ubuntu&lt;/a&gt;, qui est
l'une des plus connues et des plus simples a utiliser.&lt;/p&gt;
&lt;p&gt;Ainsi, ces distributions intègrent une interface graphique. Cependant,
grâce a la liberté dont bénéficient les développeurs sous Linux, il
existe de nombreuses interfaces graphiques différentes : &lt;a href="unity.ubuntu.com"&gt;Unity&lt;/a&gt;, la
nouvelle interface d'Ubuntu; &lt;a href="gnome.org"&gt;GNOME&lt;/a&gt; , une interface qui vise a la
simplicité; ou encore &lt;a href="http://kde.org/"&gt;KDE&lt;/a&gt;, une interface utilisateur ressemblant a
Windows 7.&lt;/p&gt;
&lt;p&gt;Ainsi, le choix astronomique de distributions Linux a bien un sens :
chacune d'entre elle intègre des outils différents. Par exemple, Debian
intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend
particulièrement stable. Ubuntu intègre Unity, ce qui en fait une
distribution particulièrement intuitive. Linux Mint intègre Cinnamon,
qui est une version dérivée de GNOME 3, ce qui permet encore une autre
expérience. Et Arch Linux n'intègre pas d'interface graphique du tout,
ce qui permet a l'utilisateur de choisir entre les multiples interfaces
existantes.&lt;/p&gt;
&lt;p&gt;Ce qu'il est important de retenir de cela, c'est que Linux est un OS
complètement libre, ce qui signifie que n'importe qui peut modifier et
utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi,
Linux est un OS qui est véritablement créé par des passionnés, pour tous
et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué
a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus.
Cependant, Linux donne la possibilité a l'utilisateur de le rendre
affreusement complexe, mais aussi de le rendre adapté a ses besoins,
quels que soient ceux ci. Et c'est la que réside l'incroyable puissance
de ce Système d'Exploitation. Il est extraordinairement adaptable.&lt;/p&gt;
&lt;p&gt;N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas
technophiles. Ils pourraient adorer, et peut être même le devenir :)&lt;/p&gt;
&lt;p&gt;A bientôt!&lt;/p&gt;</summary></entry></feed>

View File

@ -1,368 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Wxcafé</title><link href="file:///home/wxcafe/code/blog-source/output/" rel="alternate"></link><link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.tutorial.xml" rel="self"></link><id>file:///home/wxcafe/code/blog-source/output/</id><updated>2014-11-07T13:04:00+01:00</updated><entry><title>OpenSMTPd comme serveur mail sous debian</title><link href="file:///home/wxcafe/code/blog-source/output/posts/opensmtpd-debian/" rel="alternate"></link><updated>2014-11-07T13:04:00+01:00</updated><author><name>Wxcafé</name></author><id>tag:,2014-11-07:home/wxcafe/code/blog-source/output/posts/opensmtpd-debian/</id><summary type="html">&lt;p&gt;J'avais dit il y a un certain temps que j'allais écrire un tutoriel expliquant
comment gérer ses mails soi-même. Il se trouve que j'ai récemment décidé de
changer le serveur qui héberge (entre autres) ce blog, et que ce dernier héberge
aussi mes emails. J'ai donc totalement changé d'infrastructure quand a la
gestion de mon système de mails.&lt;/p&gt;
&lt;p&gt;Ainsi, j'ai décidé de passer de Postfix a OpenSMTPd, changement que je voulais
effectuer depuis un certain temps. &lt;a href="https://opensmtpd.org"&gt;OpenSMTPd&lt;/a&gt; est un
projet originaire d'&lt;a href="http://openbsd.org"&gt;OpenBSD&lt;/a&gt; qui a pour but de fournir un
serveur SMTP fiable, simple, rapide, et surtout sécurisé (les même buts que ceux
qu'a le projet OpenBSD, globalement).&lt;/p&gt;
&lt;p&gt;Pour rappel, le système d'emails fonctionne d'une façon très simple : votre MUA
(Mail User Agent, ou client email) contacte le MTA (Mail Transport Agent, ou
serveur SMTP) de votre fournisseur email, qui contacte le MTA du fournisseur du
destinataire, qui lui même contacte le MDA (Mail Delivery Agent) qui délivre le
mail au destinataire.&lt;/p&gt;
&lt;p&gt;Si vous avez bien suivi, vous pouvez voir que je n'ai pas parlé de récupération
ni de lecture des mails. C'est pour une raison simple, qui est que ces taches
sont remplies par d'autres services encore (IMAP/POP pour la récupération depuis
le serveur, des yeux pour la lecture).&lt;/p&gt;
&lt;p&gt;Or ce qui nous intéresse ici, ce n'est pas simplement d'envoyer et de recevoir
des emails mais bien aussi de pouvoir les récupérer et les lire, et c'est pour
ça que ce tutoriel ne parlera pas que d'OpenSMTPd mais aussi de
&lt;a href="http://dovecot.org/"&gt;Dovecot&lt;/a&gt; qui fait office de serveur IMAP et
&lt;a href="http://www.ijs.si/software/amavisd/"&gt;amavis&lt;/a&gt;/&lt;a href="http://spamassassin.apache.org/"&gt;spamassassin&lt;/a&gt;
pour filtrer les mails entrants et sortants.
Le schéma suivant explique la façon dont les mails sont gérés sur le système&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt; &lt;span class="err"&gt;╭────────────────╮&lt;/span&gt; &lt;span class="err"&gt;╭──────────╮&lt;/span&gt;
&lt;span class="err"&gt;│╭──────────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;filter&lt;/span&gt; &lt;span class="err"&gt;───&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│─╮&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="n"&gt;mail&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="err"&gt;││&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;amavis&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;───────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│╯&lt;/span&gt; &lt;span class="n"&gt;OpenSMTPd&lt;/span&gt; &lt;span class="err"&gt;╭──│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;───&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;filter&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;───│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;╰──────────╯&lt;/span&gt;
&lt;span class="n"&gt;mail&lt;/span&gt; &lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;╭──────────╮&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;───────────│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;────────────┴─&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│─────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;MDA&lt;/span&gt; &lt;span class="err"&gt;─────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│─────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;mailbox&lt;/span&gt;
&lt;span class="err"&gt;╰────────────────╯&lt;/span&gt; &lt;span class="err"&gt;╰──────────╯&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Normalement, ceci devrait être a peu près clair.
Pour expliquer vite fait, les emails entrants (venant des utilisateurs mais
aussi d'autres correspondants) sont transmis a OpenSMTPd, qui envoie tout a
&lt;code&gt;amavis&lt;/code&gt;, qui vérifie a la fois les spams et les malwares pour les mails
venants de l'exterieur, et qui signe avec DKIM pour les mails venants de
nos utilisateurs, puis qui rentransmet les mails filtrés/signés a OpenSMTPd,
qui a ce moment-ci trie en fonction de la destination : les mails gérés
par le domaine vont via dovecot dans les boites mail des destinataires
locaux, les mails exterieurs vont directement vers le MTA du serveur
distant.&lt;/p&gt;
&lt;p&gt;Voyons comment mettre cela en place. Tout d'abord, il faut décider de la façon
dont les différents services vont communiquer.&lt;/p&gt;
&lt;p&gt;Déjà, amavis étant configuré par défaut pour écouter (en SMTP) sur le port
10024 et répondre sur le port 10025 quand il s'agit de filtrer et
écouter sur le port 10026 et répondre sur le port 10027 quand il s'agit de
signer, nous allons profiter de cette configuration et donc lui parler en SMTP
sur ces ports.&lt;/p&gt;
&lt;p&gt;Quand a Dovecot, nous allons lui transmettre les emails en LMTP (Local Mail
Transfer Protocol), non pas sur un port mais via un socket (dans ce cas précis,
&lt;code&gt;/var/run/dovecot/lmtp&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Ainsi, pour reprendre le schéma présenté plus haut :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt; &lt;span class="err"&gt;╭───────────────╮&lt;/span&gt; &lt;span class="err"&gt;╭───────────╮&lt;/span&gt;
&lt;span class="err"&gt;│╭─────────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10026&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│─╮&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="err"&gt;││&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;amavis&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="err"&gt;│╯&lt;/span&gt; &lt;span class="n"&gt;OpenSMTPd&lt;/span&gt; &lt;span class="err"&gt;╭──│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;──&lt;/span&gt; &lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10027&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;──│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sign&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;╰───────────╯&lt;/span&gt;
&lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="mi"&gt;25&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;────────│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;───────────╯&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;╰───────────────╯&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour les mails sortants; et&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt; &lt;span class="err"&gt;╭───────────────╮&lt;/span&gt; &lt;span class="err"&gt;╭────────────╮&lt;/span&gt;
&lt;span class="err"&gt;│╭─────────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│─╮&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="err"&gt;││&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;amavis&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="err"&gt;│╯&lt;/span&gt; &lt;span class="n"&gt;OpenSMTPd&lt;/span&gt; &lt;span class="err"&gt;╭──│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;──&lt;/span&gt; &lt;span class="n"&gt;SMTP&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10025&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;──│&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;╰────────────╯&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;╭────────────╮&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;╰─&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;LMTP&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│───────────&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;│──&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;
&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt; &lt;span class="err"&gt;&lt;/span&gt; &lt;span class="n"&gt;mailbox&lt;/span&gt;
&lt;span class="err"&gt;╰───────────────╯&lt;/span&gt; &lt;span class="err"&gt;╰────────────╯&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour les mails entrants.&lt;/p&gt;
&lt;p&gt;Maintenant que la théorie est claire, mettons en place tout cela. Je me baserai
ici sur le fait que vous utilisiez une plateforme Debian ou OpenBSD. Pour
d'autres plateformes, la configuration devrait être sensiblement la même&lt;/p&gt;
&lt;p&gt;(Vous aurez besoin de certificats SSL pour ce guide, même self-signés.
Si vous ne savez pas comment en créer, vous pouvez aller voir &lt;a href="http://wxcafe.net/posts/05/30/14/SSL-ou-la-securite-sur-internet/"&gt;ce
post&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Tout d'abord, commençons par installer les programmes nécessaires :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;opensmtpd&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;pigeonhole&lt;/span&gt; &lt;span class="n"&gt;amavisd&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;managesieved&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;pkg_add&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt; &lt;span class="n"&gt;dovecot&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;pigeonhole&lt;/span&gt; &lt;span class="n"&gt;amavisd&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Continuons en configurant OpenSMTPd tel que nous avons vu plus haut :&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/etc/smtpd.conf&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;This&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;smtpd&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt; &lt;span class="nx"&gt;system&lt;/span&gt;&lt;span class="na"&gt;-wide&lt;/span&gt; &lt;span class="nx"&gt;configuration&lt;/span&gt; &lt;span class="nx"&gt;file.&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;See&lt;/span&gt; &lt;span class="nx"&gt;smtpd.conf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;more&lt;/span&gt; &lt;span class="nx"&gt;information.&lt;/span&gt;
&lt;span class="err"&gt;##&lt;/span&gt; &lt;span class="nx"&gt;Certs&lt;/span&gt;
&lt;span class="nx"&gt;pki&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nx"&gt;certificate&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;/etc/certs/exem.pl.crt&amp;quot;&lt;/span&gt;
&lt;span class="nx"&gt;pki&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;key&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;/etc/certs/exem.pl.key&amp;quot;&lt;/span&gt;
&lt;span class="err"&gt;##&lt;/span&gt; &lt;span class="nx"&gt;Ports&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="nx"&gt;how&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;them&lt;/span&gt;
&lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;eth0&lt;/span&gt; &lt;span class="nb"&gt;port&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt; &lt;span class="nx"&gt;tls&lt;/span&gt; &lt;span class="nx"&gt;pki&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;hostname&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;auth&lt;/span&gt;&lt;span class="na"&gt;-optional&lt;/span&gt;
&lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;eth0&lt;/span&gt; &lt;span class="nb"&gt;port&lt;/span&gt; &lt;span class="mi"&gt;465&lt;/span&gt; &lt;span class="nx"&gt;tls&lt;/span&gt;&lt;span class="na"&gt;-require&lt;/span&gt; &lt;span class="nx"&gt;pki&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;hostname&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;auth&lt;/span&gt; &lt;span class="nx"&gt;mask&lt;/span&gt;&lt;span class="na"&gt;-source&lt;/span&gt;
&lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;eth0&lt;/span&gt; &lt;span class="nb"&gt;port&lt;/span&gt; &lt;span class="mi"&gt;587&lt;/span&gt; &lt;span class="nx"&gt;tls&lt;/span&gt;&lt;span class="na"&gt;-require&lt;/span&gt; &lt;span class="nx"&gt;pki&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;hostname&lt;/span&gt; &lt;span class="nx"&gt;exem.pl&lt;/span&gt; &lt;span class="nb"&gt;auth&lt;/span&gt; &lt;span class="nx"&gt;mask&lt;/span&gt;&lt;span class="na"&gt;-source&lt;/span&gt;
&lt;span class="err"&gt;##&lt;/span&gt; &lt;span class="nx"&gt;Aliases&lt;/span&gt;
&lt;span class="nb"&gt;table&lt;/span&gt; &lt;span class="nx"&gt;aliases&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:/&lt;/span&gt;&lt;span class="nx"&gt;etc&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;aliases&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;coming&lt;/span&gt; &lt;span class="nb"&gt;from&lt;/span&gt; &lt;span class="nx"&gt;amavisd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;checked&lt;/span&gt; &lt;span class="nb"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;spam&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;malware&lt;/span&gt;
&lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;lo&lt;/span&gt; &lt;span class="nb"&gt;port&lt;/span&gt; &lt;span class="mi"&gt;10025&lt;/span&gt; &lt;span class="kt"&gt;tag&lt;/span&gt; &lt;span class="nx"&gt;Filtered&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;coming&lt;/span&gt; &lt;span class="nb"&gt;from&lt;/span&gt; &lt;span class="nx"&gt;amavisd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;signed&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nx"&gt;DKIM&lt;/span&gt;
&lt;span class="nb"&gt;listen&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;lo&lt;/span&gt; &lt;span class="nb"&gt;port&lt;/span&gt; &lt;span class="mi"&gt;10027&lt;/span&gt; &lt;span class="kt"&gt;tag&lt;/span&gt; &lt;span class="nx"&gt;Signed&lt;/span&gt;
&lt;span class="err"&gt;##&lt;/span&gt; &lt;span class="nx"&gt;Receiving&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;incoming&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;mail&lt;/span&gt; &lt;span class="nx"&gt;has&lt;/span&gt; &lt;span class="nx"&gt;been&lt;/span&gt; &lt;span class="nx"&gt;through&lt;/span&gt; &lt;span class="nx"&gt;amavisd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;then&lt;/span&gt; &lt;span class="nx"&gt;we&lt;/span&gt; &lt;span class="nx"&gt;can&lt;/span&gt; &lt;span class="nx"&gt;deliver&lt;/span&gt; &lt;span class="nx"&gt;it&lt;/span&gt;
&lt;span class="nb"&gt;accept&lt;/span&gt; &lt;span class="nx"&gt;tagged&lt;/span&gt; &lt;span class="nx"&gt;Filtered&lt;/span&gt; &lt;span class="nb"&gt;for&lt;/span&gt; &lt;span class="nb"&gt;any&lt;/span&gt; &lt;span class="nx"&gt;alias&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;aliases&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;deliver&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;lmtp&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;/var/run/dovecot/lmtp&amp;quot;&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;we&lt;/span&gt; &lt;span class="nx"&gt;directly&lt;/span&gt; &lt;span class="nx"&gt;tranfer&lt;/span&gt; &lt;span class="nx"&gt;incoming&lt;/span&gt; &lt;span class="nx"&gt;mail&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;amavisd&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;be&lt;/span&gt; &lt;span class="nb"&gt;checked&lt;/span&gt;
&lt;span class="nb"&gt;accept&lt;/span&gt; &lt;span class="nb"&gt;from&lt;/span&gt; &lt;span class="nb"&gt;any&lt;/span&gt; &lt;span class="nb"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;domain&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;exem.pl&amp;quot;&lt;/span&gt; &lt;span class="nx"&gt;relay&lt;/span&gt; &lt;span class="nx"&gt;via&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;smtp://localhost:10024&amp;quot;&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;we&lt;/span&gt; &lt;span class="nx"&gt;have&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;put&lt;/span&gt; &lt;span class="nx"&gt;these&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;this&lt;/span&gt; &lt;span class="k"&gt;order&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;avoid&lt;/span&gt; &lt;span class="nx"&gt;infinite&lt;/span&gt; &lt;span class="nx"&gt;loops&lt;/span&gt;
&lt;span class="err"&gt;##&lt;/span&gt; &lt;span class="nx"&gt;Sending&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;outgoint&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;mail&lt;/span&gt; &lt;span class="nx"&gt;has&lt;/span&gt; &lt;span class="nx"&gt;been&lt;/span&gt; &lt;span class="nx"&gt;through&lt;/span&gt; &lt;span class="nx"&gt;amavisd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;then&lt;/span&gt; &lt;span class="nx"&gt;we&lt;/span&gt; &lt;span class="nx"&gt;can&lt;/span&gt; &lt;span class="nx"&gt;deliver&lt;/span&gt; &lt;span class="nx"&gt;it&lt;/span&gt;
&lt;span class="nb"&gt;accept&lt;/span&gt; &lt;span class="nx"&gt;tagged&lt;/span&gt; &lt;span class="nx"&gt;Signed&lt;/span&gt; &lt;span class="nb"&gt;for&lt;/span&gt; &lt;span class="nb"&gt;any&lt;/span&gt; &lt;span class="nx"&gt;relay&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;we&lt;/span&gt; &lt;span class="nx"&gt;tranfer&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;outgoing&lt;/span&gt; &lt;span class="nx"&gt;mail&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;amavisd&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;be&lt;/span&gt; &lt;span class="nx"&gt;signed&lt;/span&gt;
&lt;span class="nb"&gt;accept&lt;/span&gt; &lt;span class="nb"&gt;for&lt;/span&gt; &lt;span class="nb"&gt;any&lt;/span&gt; &lt;span class="nx"&gt;relay&lt;/span&gt; &lt;span class="nx"&gt;via&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;smtp://localhost:10026&amp;quot;&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;same&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;we&lt;/span&gt; &lt;span class="nx"&gt;have&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;put&lt;/span&gt; &lt;span class="nx"&gt;these&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;this&lt;/span&gt; &lt;span class="k"&gt;order&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="nx"&gt;infinite&lt;/span&gt; &lt;span class="nx"&gt;loops...&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Expliquons un peu ce fichier de configuration :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tout d'abord, le paragraphe nommé "Certs" contient les déclaration
d'emplacement des certificats SSL.&lt;/li&gt;
&lt;li&gt;Ensuite, le paragraphe contenant les ports externes sur lesquels nous écoutons :
port 25 avec TLS optionel et ports 465 et 587 avec TLS obligatoire&lt;/li&gt;
&lt;li&gt;Les alias sont définis juste après&lt;/li&gt;
&lt;li&gt;Le paragraphe suivant contient les ports locaux sur lesquels nous écoutons :
10025 (port de sortie du filtre de amavis) dont on taggue les mails sortants
comme "Filtered" et 10027 (port de sortie des mails signés par amavis) dont on
taggue les mails sortants comme "Signed"&lt;/li&gt;
&lt;li&gt;Nous avons ensuite le paragraphe qui traite les mails rentrants. Si le mail
traité est taggué comme Filtered, alors il a été vérifié par amavis, et on
peut donc le transmettre au destinataire. Sinon, c'est qu'il n'a pas encore
été vérifié par amavis, donc on lui transmet pour analyse (sur le port 10024
donc). Il est important de mettre les déclarations dans ce sens, car la
première règle qui matche l'état du paquet est appliquée. Ici, la deuxième
ligne matchant tous les mails arrivant et la première seulement ceux filtrés,
inverser leur sens voudrait dire que les mails seraient toujours renvoyés a
amavis&lt;/li&gt;
&lt;li&gt;Enfin, le dernier paragraphe traite les mails sortants. De la même façon que
pour le paragraphe précédent, si le mail sortant est déjà taggué comme Signed
on le transmet au MTA du destinataire, sinon il n'a pas encore été signé par
DKIM par amavis et on le transmet donc a amavis pour qu'il le signe. Le
problème de l'ordre des lignes se pose encore, pour la même raison qu'au
dessus.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nous allons maintenant configurer dovecot. Comme nous l'avons vu, dovecot doit
écouter en LMTP via la socket &lt;code&gt;/var/run/dovecot/lmtp&lt;/code&gt; et transmettre les
emails a la boite email de l'utilisateur. Il serait aussi interessant
qu'il nous permette de récuperer les mails. Pour cette configuration, on ne
mettra en place que du IMAPS. Cependant, si vous voulez mettre en place du
POP3[s], différents guides sont trouvables facilement sur internet.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/etc/dovecot/dovecot.conf&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;## Dovecot configuration file&lt;/span&gt;
&lt;span class="cp"&gt;# basic config&lt;/span&gt;
&lt;span class="n"&gt;info_log_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dovecot&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;
&lt;span class="n"&gt;log_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dovecot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;
&lt;span class="n"&gt;log_timestamp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;%Y-%m-%d %H:%M:%S &amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;mail_location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;maildir&lt;/span&gt;&lt;span class="o"&gt;:%&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mail&lt;/span&gt;
&lt;span class="cp"&gt;# authentication&lt;/span&gt;
&lt;span class="n"&gt;passdb&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;driver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pam&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;userdb&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;driver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;passwd&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="cp"&gt;# the protocols we use&lt;/span&gt;
&lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;imap&lt;/span&gt; &lt;span class="n"&gt;lmtp&lt;/span&gt; &lt;span class="n"&gt;sieve&lt;/span&gt;
&lt;span class="cp"&gt;# ssl config&lt;/span&gt;
&lt;span class="n"&gt;ssl_cert&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;exem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cert&lt;/span&gt;
&lt;span class="n"&gt;ssl_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;certs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;exem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;
&lt;span class="n"&gt;ssl_cipher_list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;kEDH&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;kEECDH&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="n"&gt;PSK&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="n"&gt;SRP&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;DES&lt;/span&gt;&lt;span class="o"&gt;:!&lt;/span&gt;&lt;span class="n"&gt;aNULL&lt;/span&gt;
&lt;span class="n"&gt;ssl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;yes&lt;/span&gt;
&lt;span class="cp"&gt;## configuring services &lt;/span&gt;
&lt;span class="cp"&gt;# disables imap login without SSL (yes dovecot is dumb that way)&lt;/span&gt;
&lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="n"&gt;imap&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;login&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;inet_listener&lt;/span&gt; &lt;span class="n"&gt;imap&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="n"&gt;lmtp&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;unix_listener&lt;/span&gt; &lt;span class="n"&gt;lmtp&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;mode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mo"&gt;0666&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="cp"&gt;## configuring protocols&lt;/span&gt;
&lt;span class="cp"&gt;# the dovecot lda, we set it to use sieve&lt;/span&gt;
&lt;span class="n"&gt;protocol&lt;/span&gt; &lt;span class="n"&gt;lda&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;mail_plugins&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;mail_plugins&lt;/span&gt; &lt;span class="n"&gt;sieve&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;protocol&lt;/span&gt; &lt;span class="n"&gt;lmtp&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;postmaster_address&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;whoever&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;exem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pl&lt;/span&gt;
&lt;span class="n"&gt;mail_plugins&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;mail_plugins&lt;/span&gt; &lt;span class="n"&gt;sieve&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;plugin&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;sieve&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dovecot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sieve&lt;/span&gt;
&lt;span class="n"&gt;sieve_dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="n"&gt;sieve&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;ATTENTION: Sous OpenBSD, remplacez&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;passdb&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;driver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pam&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;par&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;passdb&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;driver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bsdauth&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;pour identifier les utilisateurs système&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ici aussi, voyons comment ce fichier est structuré :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tout d'abord, les configurations de base : ou iront les logs, comment formater
leur datation, et l'endroit ou seront stockés les mails des utilisateurs.&lt;/li&gt;
&lt;li&gt;Nous configurons ensuite la gestion de l'authentification des utilisateurs.
Ici nous identifions les utilisateurs avec le fichier /etc/passwd et leurs
mots de passe avec PAM (ou BSDAuth)&lt;/li&gt;
&lt;li&gt;Nous configurons ensuite les protocoles que nous servons. Ici, nous voulons de
l'IMAPS, du LMTP local et Sieve (qui sert pour trier les messages).&lt;/li&gt;
&lt;li&gt;Nous configurons le SSL&lt;/li&gt;
&lt;li&gt;Le section suivante contient la configuration des services. Nous avons en
premier lieu le service IMAP, dont la configuration sert uniquement a
désactiver IMAP. En effet, dovecot ne permet d'activer IMAPS qu'en activant
IMAP avec. Comme nous ne voulons pas d'IMAP sans SSL, nous le désactivons.
La configuration de lmtp sert a attribuer des permissions plus correctes au
fifo qu'il utilise&lt;/li&gt;
&lt;li&gt;Nous configurons maintenant les protocoles, pour faire fonctionner Sieve&lt;/li&gt;
&lt;li&gt;enfin, nous configurons le plugin sieve en lui indiquant quel fichier et
quel dossier utiliser pour sa configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enfin, il nous reste a configurer amavis. Comme expliqué, amavis va nous servir
a deux choses : signer les emails sortants, et filtrer les emails entrants. Il
doit donc écouter sur les port 10026 pour les signatures et 10024 pour le
filtrage, et répondre respectivement sur les ports 10027 et 10025 (le tout, en
SMTP. Comme toutes les transactions se font sur le loopback, il n'y a aucun
risque a utiliser des protocoles non chiffrés.
Pour OpenBSD, pensez a copier la configuration par défaut depuis
&lt;code&gt;/usr/local/share/examples/amavisd-new/amavisd.conf&lt;/code&gt; et ajoutez les
modifications nécessaires a la fin du fichier.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/etc/amavis/conf.d/99-local.conf&lt;/code&gt; (debian)
&lt;code&gt;/etc/amavis.conf&lt;/code&gt; (OpenBSD)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="n"&gt;strict&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;enable_dkim_verification&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;enable_dkim_signing&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;dkim_key&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;exem.pl&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;main&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;/etc/certs/dkim.key&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;dkim_signature_options_bysender_maps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="sc"&gt;&amp;#39;.&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;ttl&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;3600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;relaxed&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;simple&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;inet_socket_port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10026&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;policy_bank&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;MYNETS&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;originating&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;os_fingerprint_method&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;undef&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;interface_policy&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="mi"&gt;10026&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;ORIGINATING&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;policy_bank&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;ORIGINATING&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;originating&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;allow_disclaimers&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;virus_admin_maps&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;root\@$mydomain&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="n"&gt;spam_admin_maps&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;root\@$mydomain&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="n"&gt;warnbadhsender&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;forward_method&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;smtp&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;localhost&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;10027&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;smtpd_discard_ehlo_keywords&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="n"&gt;BITMIME&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="n"&gt;bypass_banned_checks_maps&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="n"&gt;terminate_dsn_on_notify_success&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="cp"&gt;#------------ Do not modify anything below this line -------------&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;ensure&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;defined&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;A nouveau, expliquons ce fichier :
- le premier paragraphe définit que nous voulons qu'amavis signe les emails
sortants, vérifie la signature DKIM des emails rentrants, et l'endroit ou se
trouve la clé privée servant a signer les emails.
- le second définit les options DKIM que nous souhaitons utiliser comme défaut.
Je vous invite a consulter la &lt;a href="https://tools.ietf.org/html/rfc4871"&gt;RFC 4871&lt;/a&gt;
- nous définissons ensuite les ports sur lesquels nous allons écouter, puis les
paramètres que nous utiliserons pour les emails venant de nos utilisateurs :
ils seront traités comme "originating" et nous ne vérifierons pas l'OS duquel
ils viennent.
- nous savons que les emails venants du port 10026 sont sortants, nous les
traitons donc comme tel
- le paragraphe suivant décrit le traitement que nous faisons subir aux emails
sortants : tout d'abord, nous réaffirmons qu'ils viennent bien de notre
serveur. Nous autorisons les disclaimers (voire encore une fois la &lt;a href="https://tools.ietf.org/html/rfc4871"&gt;RFC
4871&lt;/a&gt;. Nous déclarons l'adresse a
prévenir en cas de spam/virus venants de notre système, et que nous voulons
être prévenus. Nous déclarons ou envoyer les mails une fois signés et filtrés,
puis qu'il est nécessaire de convertir les emails au format 7 bits avant de
les envoyer au MTA, que nous autorisons tous les types et noms de fichiers, et
les notifications de succès d'envoi. Et voila!&lt;/p&gt;
&lt;p&gt;Vous avez pu remarquer qu'a aucun moment nous ne configurions ni la signature
des emails sortants ni le filtrage des emails entrants. Ces paramètres sont en
fait inclus par défaut dans amavis.&lt;/p&gt;
&lt;p&gt;Il nous reste cependant quelques opérations a faire, encore.
Tout d'abord, il nous faut générer notre clé DKIM. Pour cela, il existe
différentes méthodes, j'ai personnellement utilisé opendkim (&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy"&gt;un
tutorial&lt;/a&gt;)
mais de nombreuses autre méthodes existent.
Il nous reste encore a configurer spamassassin :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;#rewrite_header Subject *****SPAM*****&lt;/span&gt;
&lt;span class="cp"&gt;# report_safe 1&lt;/span&gt;
&lt;span class="n"&gt;required_score&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;
&lt;span class="cp"&gt;# use_bayes 1&lt;/span&gt;
&lt;span class="cp"&gt;# bayes_auto_learn 1&lt;/span&gt;
&lt;span class="cp"&gt;# bayes_ignore_header X-Bogosity&lt;/span&gt;
&lt;span class="cp"&gt;# bayes_ignore_header X-Spam-Flag&lt;/span&gt;
&lt;span class="cp"&gt;# bayes_ignore_header X-Spam-Status&lt;/span&gt;
&lt;span class="n"&gt;ifplugin&lt;/span&gt; &lt;span class="n"&gt;Mail&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;SpamAssassin&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Plugin&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Shortcircuit&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit USER_IN_WHITELIST on&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit USER_IN_DEF_WHITELIST on&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit USER_IN_ALL_SPAM_TO on&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit SUBJECT_IN_WHITELIST on&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit USER_IN_BLACKLIST on&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit USER_IN_BLACKLIST_TO on&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit SUBJECT_IN_BLACKLIST on&lt;/span&gt;
&lt;span class="n"&gt;shortcircuit&lt;/span&gt; &lt;span class="n"&gt;ALL_TRUSTED&lt;/span&gt; &lt;span class="n"&gt;off&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit BAYES_99 spam&lt;/span&gt;
&lt;span class="cp"&gt;# shortcircuit BAYES_00 ham&lt;/span&gt;
&lt;span class="n"&gt;endif&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;Mail&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;SpamAssassin&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Plugin&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Shortcircuit&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Comme vous pouvez le voir, les modifications se résument globalement a baisser
le required_score pour ma part.&lt;/p&gt;
&lt;p&gt;Pour finir, activez les services nécessaires : opensmtpd, dovecot, amavisd, et
spamassassin, et tout devrait fonctionner parfaitement&lt;/p&gt;
&lt;p&gt;Bon courage pour votre hosting de mail ensuite...&lt;/p&gt;</summary></entry></feed>

View File

@ -1,1271 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Wxcafé</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/archlinux-made-simple/">Archlinux made simple</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-10-05T14:48:00+02:00">
<i class="icon-calendar"></i> Fri 05 October 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/"><i class="icon-folder-open"></i>OSes</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Archlinux est réputée être une distribution Linux très complexe a
installer et a maintenir.</p>
<p>Je vais tenter ici de vous convaincre que ce n'est pas le cas, et
qu'elle peut se monter très intéressante et très instructive a installer
tout autant qu'a utiliser.</p>
<p>Il convient tout d'abord de rappeler a quels principes obéit Arch:</p>
<ol>
<li>
<p>Le KISS : Keep It Simple and Stupid, Archlinux tente de faire des
programmes simples et utilisables par tous. Avec comme base de
simplicité les utilisateurs de LFS... Mais il n'empêche qu'avec un peu
de bonne volonté, la configuration n'est pas si compliquée!</p>
</li>
<li>
<p>La philosophie UNIX : chaque programme est prévu pour ne remplir
qu'une seule tâche. Bien entendu, cela ne concerne que les programmes
conçus pour sinsérer dans la philosophie UNIX, et les installations de
dépendances avec le gestionnaire de paquet d'Arch fonctionnent
superbement bien.</p>
</li>
</ol>
<p>De plus, posons les bases d'Arch : le gestionnaire de paquets s'appelle
pacman, et les commandes de base sont :</p>
<ul>
<li>
<p>recherche d'un paquet :</p>
<div class="highlight"><pre><span class="n">pacman</span> <span class="o">-</span><span class="n">Ss</span> <span class="n">paquet</span>
</pre></div>
</li>
<li>
<p>installation d'un paquet :</p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">paquet</span>
</pre></div>
</li>
<li>
<p>désinstallation d'un paquet :</p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">R</span> <span class="n">paquet</span>
</pre></div>
</li>
<li>
<p>mise a jour de tous les paquets installés :</p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">Syu</span> <span class="n">paquet</span>
</pre></div>
</li>
</ul>
<p>Archlinux est une distribution dite "rolling release", ce qui signifie
qu'il n'y a pas de version a proprement dites, et que les paquets se
mettent a jour en permanence, sans jamais changer la "version" d'Arch.
Il n'y a d'ailleurs qu'une seule version de l'installeur sur le site,
puisqu'une version plus ancienne n'aurait aucun sens.</p>
<p>Arch n'offre pas d'interface graphique par défaut : après avoir installé
le système, vous n'aurez qu'une invite de commande. Heureusement, je
vais ici vous guider a travers l'installation d'une interface graphique
(mate, le fork de gnome 2)</p>
<p>L'installation d'Arch se fait par le réseau, veillez a avoir une
connection WiFi ou filaire a proximité avant de suivre ce guide.</p>
<p>Ce guide utilise SystemV, alors qu'Arch va prochainement passer sous
systemd. N'ayant pas encore eu le temps dexpérimenter assez avec ce
dernier, je ferais un tutoriel pour passer votre Arch a systemd bientôt.</p>
<p>Bon, passons a l'explication de l'installation proprement dite :</p>
<p>Tout d'abord, téléchargeons l'iso d'arch la plus récente :</p>
<div class="highlight"><pre><span class="n">wget</span> <span class="n">http</span><span class="o">:</span><span class="c1">//mir.archlinux.fr/iso/2012.09.07/archlinux-2012.09.07-dual.iso</span>
</pre></div>
<p>Ensuite, gravons cette image sur un disque USB :</p>
<div class="highlight"><pre><span class="n">dd</span> <span class="k">if</span><span class="o">=</span><span class="n">archlinux</span><span class="o">-</span><span class="mf">2012.09.07</span><span class="o">-</span><span class="n">dual</span><span class="p">.</span><span class="n">iso</span> <span class="n">of</span><span class="o">=/</span><span class="n">dev</span><span class="o">/</span><span class="n">sdX</span>
</pre></div>
<p>Après reboot de la machine sur l'iso en question et choix de
l'architecture, nous sommes accueillis par un shell root.</p>
<p>La première chose a faire est de paramétrer le clavier :</p>
<div class="highlight"><pre><span class="n">loadkeys</span> <span class="n">fr</span>
</pre></div>
<p>Puis nous pouvons passer a l'installation proprement dite.
Partitionnement :</p>
<div class="highlight"><pre><span class="n">cfdisk</span> <span class="err">#</span> <span class="n">cfdisk</span> <span class="n">est</span> <span class="n">suffisamment</span> <span class="n">clair</span> <span class="n">pour</span> <span class="n">ne</span> <span class="n">pas</span> <span class="n">n</span><span class="err">é</span><span class="n">cessiter</span> <span class="n">d</span><span class="err">&#39;</span><span class="n">explications</span>
</pre></div>
<p>formatage des partitions :</p>
<div class="highlight"><pre><span class="n">mkfs</span><span class="p">.</span><span class="n">ext4</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda1</span> <span class="err">#</span> <span class="n">partition</span> <span class="n">root</span>
<span class="n">pacman</span> <span class="o">-</span><span class="n">Syu</span> <span class="n">btrfs</span><span class="o">-</span><span class="n">progs</span> <span class="o">&amp;&amp;</span> <span class="n">mkfs</span><span class="p">.</span><span class="n">btrfs</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda2</span> <span class="err">#</span> <span class="n">partition</span> <span class="n">home</span>
<span class="n">mkswap</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda3</span> <span class="o">&amp;&amp;</span> <span class="n">swapon</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda3</span> <span class="err">#</span> <span class="n">partition</span> <span class="n">de</span> <span class="n">swap</span>
</pre></div>
<p>Montons les partitions nouvellement créées, puis installons le système :</p>
<div class="highlight"><pre><span class="n">mount</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda1</span> <span class="o">/</span><span class="n">mnt</span>
<span class="n">mkdir</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">home</span> <span class="o">&amp;&amp;</span> <span class="n">mount</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda2</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">home</span>
<span class="n">dhclient</span> <span class="n">eth0</span> <span class="err">#</span> <span class="n">si</span> <span class="n">vous</span> <span class="n">utilisez</span> <span class="n">une</span> <span class="n">connection</span> <span class="n">filaire</span><span class="p">,</span> <span class="n">sinon</span> <span class="n">voire</span> <span class="n">http</span><span class="o">:</span><span class="c1">//wiki.archlinux.fr/Wifi#Configuration</span>
<span class="n">pacstrap</span> <span class="o">/</span><span class="n">mnt</span> <span class="n">base</span> <span class="n">base</span><span class="o">-</span><span class="n">devel</span>
<span class="n">genfstab</span> <span class="o">-</span><span class="n">p</span> <span class="o">/</span><span class="n">mnt</span> <span class="o">&gt;</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">fstab</span>
</pre></div>
<p>Allons prendre un café le temps que ça charge, puis installons les
quelques paquets nécessaires a notre installation et au premier
démarrage:</p>
<div class="highlight"><pre><span class="n">pacstrap</span> <span class="o">/</span><span class="n">mnt</span> <span class="n">syslinux</span> <span class="n">btrfs</span><span class="o">-</span><span class="n">progs</span> <span class="n">wireless_tools</span> <span class="n">dhclient</span>
</pre></div>
<p>Maintenant, passons sur notre install toute fraîche d'Arch :</p>
<div class="highlight"><pre><span class="n">arch</span><span class="o">-</span><span class="n">chroot</span> <span class="o">/</span><span class="n">mnt</span> <span class="n">bash</span>
</pre></div>
<p>configurons les bases :</p>
<div class="highlight"><pre><span class="n">echo</span> <span class="n">HOSTNAME</span> <span class="o">&gt;</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">hostname</span>
<span class="n">ln</span> <span class="o">-</span><span class="n">s</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">zoneinfo</span><span class="o">/</span><span class="n">Europe</span><span class="o">/</span><span class="n">Paris</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">localtime</span>
<span class="n">date</span> <span class="n">MMJJhhmmAAAA</span>
<span class="n">hwclock</span> <span class="o">--</span><span class="n">systohc</span>
<span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">locale</span><span class="p">.</span><span class="n">gen</span> <span class="err">#</span> <span class="n">D</span><span class="err">é</span><span class="n">commentez</span> <span class="n">les</span> <span class="n">lignes</span> <span class="n">correspondant</span> <span class="n">au</span> <span class="n">fran</span><span class="err">ç</span><span class="n">ais</span> <span class="o">:</span> <span class="n">fr_FR</span><span class="p">.</span><span class="n">UTF</span><span class="o">-</span><span class="mi">8</span> <span class="n">et</span> <span class="n">fr_FR</span><span class="p">.</span><span class="n">ISO</span><span class="o">-</span><span class="mi">8859</span><span class="o">-</span><span class="mi">1</span>
<span class="n">echo</span> <span class="err">&#39;</span><span class="n">LANG</span><span class="o">=</span><span class="s">&quot;fr_FR.UTF-8&quot;</span><span class="err">&#39;</span> <span class="o">&gt;</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">locale</span><span class="p">.</span><span class="n">conf</span>
<span class="n">locale</span><span class="o">-</span><span class="n">gen</span>
<span class="n">mkinitcpio</span> <span class="o">-</span><span class="n">p</span> <span class="n">linux</span>
</pre></div>
<p>Enfin, vérifions que syslinux est correctement configuré :</p>
<div class="highlight"><pre><span class="n">vim</span> <span class="o">/</span><span class="n">boot</span><span class="o">/</span><span class="n">syslinux</span><span class="o">/</span><span class="n">syslinux</span><span class="p">.</span><span class="n">cfg</span> <span class="err">#</span> <span class="n">il</span> <span class="n">devrait</span> <span class="n">y</span> <span class="n">avoir</span> <span class="s">&quot;append root=/dev/sda1&quot;</span>
</pre></div>
<p>Si tout est correct, installons syslinux, et paramétrons un mot de passe
root :</p>
<div class="highlight"><pre><span class="n">syslinux</span><span class="o">-</span><span class="n">install_update</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda</span> <span class="o">-</span><span class="n">mia</span>
<span class="n">passwd</span> <span class="n">root</span>
</pre></div>
<p>Et voila, l'installation est terminée! Plus qu'a quitter la session et a
redémarrer l'ordinateur!</p>
<div class="highlight"><pre> <span class="n">exit</span>
<span class="n">umount</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">home</span>
<span class="n">umount</span> <span class="o">/</span><span class="n">mnt</span>
<span class="n">reboot</span>
</pre></div>
<p>Fini!</p>
<p>Prenons une petite pause. La partie suivante de ce tutoriel consister en
un paramétrage des principaux services nécessaires a l'utilisation d'un
OS, disons, moyen :</p>
<ul>
<li>
<p>Installation de MATE, le gestionnaire de bureau (voir
<a href="http://mate-desktop.org/">http://mate-desktop.org/</a>)</p>
</li>
<li>
<p>Installation de sudo et de networkmanager pour faire fonctionner les
composants essentiels du système sans avoir a tout activer a la main a
chaque démarrage</p>
</li>
<li>
<p>Installation de SLiM comme gestionnaire de login graphique, pour
présenter une interface plus accueillante que la console, et
configuration de celui-ci</p>
</li>
<li>
<p>Installation des principaux logiciels utiles non inclus dans mate ni
base (yaourt, chromium, thunderbird, etc...).</p>
</li>
</ul>
<p>Ce guide est bien sur optionnel, si vous souhaitez utiliser Arch avec un
gestionnaire de bureau autre que mate, ou sans, vous pouvez vous arrêter
ici.</p>
<p>Bon, reprenons.</p>
<p>Nous sommes donc sur une demande de mot de passe. Entrez donc le mot de
passe paramétré plus haut pour le root, puis retapez la commande
utilisée plus tôt pour vous connecter a internet.</p>
<p>Il convient d'ajouter le dépôt de MATE pour installer ce dernier, puis
d'effectuer l'action en question :</p>
<div class="highlight"><pre><span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">pacman</span><span class="p">.</span><span class="n">conf</span>
</pre></div>
<p>Ici, ajoutez les lignes suivantes :</p>
<div class="highlight"><pre><span class="k">[mate]</span>
<span class="na">Server</span> <span class="o">=</span> <span class="s">http://repo.mate-desktop.org/archlinux/$arch</span>
</pre></div>
<p>Installons maintenant les paquets :</p>
<div class="highlight"><pre><span class="n">pacman</span> <span class="o">-</span><span class="n">Syu</span> <span class="n">mate</span> <span class="n">mate</span><span class="o">-</span><span class="n">extras</span> <span class="n">dbus</span> <span class="n">dbus</span><span class="o">-</span><span class="n">core</span> <span class="n">alsa</span> <span class="n">networkmanager</span> <span class="n">sudo</span>
</pre></div>
<p>Ajoutons un compte utilisateur pour utiliser les composants du système
sans tout crasher a chaque fois :</p>
<div class="highlight"><pre><span class="n">useradd</span> <span class="o">-</span><span class="n">g</span> <span class="n">users</span> <span class="o">-</span><span class="n">G</span> <span class="n">wheel</span><span class="p">,</span><span class="n">audio</span><span class="p">,</span><span class="n">optical</span><span class="p">,</span><span class="n">lp</span><span class="p">,</span><span class="n">scanner</span><span class="p">,</span><span class="n">log</span><span class="p">,</span><span class="n">power</span><span class="p">,</span><span class="n">floppy</span><span class="p">,</span><span class="n">storage</span><span class="p">,</span><span class="n">games</span><span class="p">,</span><span class="n">video</span> <span class="o">-</span><span class="n">m</span> <span class="o">-</span><span class="n">s</span> <span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">bash</span> <span class="o">*</span><span class="n">votrenom</span><span class="o">*</span>
<span class="n">passwd</span> <span class="o">*</span><span class="n">votrenom</span><span class="o">*</span>
<span class="n">su</span> <span class="o">*</span><span class="n">votrenom</span><span class="o">*</span>
</pre></div>
<p>Il faut maintenant éditer le fichier \~/.xinitrc pour préciser a X.org
ce que l'on veut utiliser :</p>
<div class="highlight"><pre><span class="n">echo</span> <span class="s">&quot;exec ck-launch-session mate-session&quot;</span> <span class="o">&gt;</span> <span class="o">~/</span><span class="p">.</span><span class="n">xinitrc</span>
</pre></div>
<p>Profitons en pour ajouter les démons système au lancement :</p>
<div class="highlight"><pre><span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">rc</span><span class="p">.</span><span class="n">conf</span>
</pre></div>
<p>Ajoutez donc <code>dbus, alsa. hwclock</code> et <code>networkmanager</code> dans la section
DAEMONS (entre les parenthèses, après crond normalement)</p>
<div class="highlight"><pre><span class="n">DAEMONS</span><span class="o">=</span><span class="p">(</span><span class="n">syslog</span><span class="o">-</span><span class="n">ng</span> <span class="n">network</span> <span class="n">crond</span> <span class="n">dbus</span> <span class="n">alsa</span> <span class="n">hwclock</span> <span class="n">networkmanager</span><span class="p">)</span>
</pre></div>
<p>Pour éviter un reboot, il est ici possible de faire un</p>
<div class="highlight"><pre><span class="n">su</span>
</pre></div>
<p>Puis un</p>
<div class="highlight"><pre> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">rc</span><span class="p">.</span><span class="n">d</span><span class="o">/</span><span class="n">dbus</span> <span class="n">start</span> <span class="o">&amp;&amp;</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">rc</span><span class="p">.</span><span class="n">d</span><span class="o">/</span><span class="n">alsa</span> <span class="n">start</span> <span class="o">&amp;&amp;</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">rc</span><span class="p">.</span><span class="n">d</span><span class="o">/</span><span class="n">networkmanager</span> <span class="n">start</span>
</pre></div>
<p>Sinon, il est possible de juste redémarrer.<br />
Une fois cela fait, profitez de ce moment pour vous autoriser vous même
a utiliser sudo. Loggez vous en root, et :</p>
<div class="highlight"><pre> <span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">sudoers</span>
</pre></div>
<p>Décommentez la ligne qui commence par # %wheel ALL=(ALL)<br />
Sauvegardez le fichier, puis, après un <code>su *votrenom*</code>, tentez de faire
un sudo ls /<br />
Normalement, vous devriez avoir un listing du dossier /<br />
Bon, maintenant, pourquoi ne pas tenter de lancer MATE?<br />
C'est simple comme bonjour :</p>
<div class="highlight"><pre> <span class="n">startx</span>
</pre></div>
<p>Et PAF! Voila un MATE desktop flambant neuf a configurer!<br />
Avant de faire ça, retournez sur un TTY (CTRL+ALT+Fx), loggez vous,
puis installez SLiM (<code>sudo pacman -Syu slim</code>).<br />
Configurons le:</p>
<div class="highlight"><pre><span class="n">echo</span> <span class="s">&quot;exec dbus-launch mate-session&quot;</span> <span class="o">&gt;</span> <span class="o">~/</span><span class="p">.</span><span class="n">xinitrc</span> <span class="o">&amp;&amp;</span> <span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">slim</span><span class="p">.</span><span class="n">conf</span>
</pre></div>
<p>Éditez la ligne
"<code>sessions xfce4,icewm-session,wmaker,blackbox</code>" de facon a
ce qu'elle ressemble a "<code>sessions mate-session</code>"<br />
Puis ajoutez slim dans /etc/rc.conf, dans la section DAEMONS.<br />
Normalement, tout devrait fonctionner!<br />
Ah oui, et pour installer thunderbird, firefox, chromium, etc...</p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">Syu</span> <span class="n">chromium</span> <span class="n">thunderbird</span> <span class="n">xchat</span> <span class="n">firefox</span> <span class="n">rhythmbox</span> <span class="n">pidgin</span> <span class="n">transmission</span><span class="o">-</span><span class="n">gtk</span> <span class="n">vlc</span>
</pre></div>
<p>Voila! Et comme dirait <a href="https://twitter.com/spartition">@Spartition</a>, c'est sale, mais qu'est-ce que c'est
bon!<br />
A plus~</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/les-systemes-de-fichiers/">Les systèmes de fichiers</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-25T10:28:00+02:00">
<i class="icon-calendar"></i> Tue 25 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Un système de fichiers. Vous en avez surement déjà entendu parlé si vous
avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous
connaissez surement NTFS, EXT4, ou encore FAT32.</p>
<p>Ces différents noms désignent en effet des systèmes de fichiers. Mais
qu'est-ce qu'un système de fichiers?</p>
<p>Pour comprendre cela, il faut déjà savoir ce qu'est exactement un
fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la
plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio
(<a href="http://fr.wikipedia.org/wiki/Kibioctet#Multiples_normalis.C3.A9s">kibioctet</a>), en fonction du système de fichier utilisé.), qui est
donc composé de bits, interprétés différemment en fonction du type de
fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il
n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent,
ou il commence ni où il s'arrête (je schématise un peu, mais c'est
l'idée). </p>
<p>Ainsi, le système de fichier donne un cadre et un standard à
l'arborescence des fichiers. Par exemple, le système de fichier ext4
utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de
disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio
et mesurer la taille des fichiers en blocs de cette façon. Les systèmes
de fichiers nécessitent l'inclusion de drivers dans le noyau pour
pouvoir être pris en compte. </p>
<p>Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs,
reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu
près tout type de partition récente.</p>
<p>Il convient de bien faire la différence entre le système de fichier et
l'arborescence des fichiers. Si l'arborescence des fichiers est en fait
une entité virtuelle englobant la racine / et tous les fichiers et
dossiers contenus dedans, le système de fichier permet a votre système
GNU/Linux de distinguer les différents fichiers composants cette
arborescence.</p>
<p>Détaillons maintenant les types de fichiers les plus répandus:</p>
<ul>
<li>
<p>FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table,
soit la définition d'un système de fichier), remplissent leur rôle le
plus simplement possible. Ne permettant (historiquement) que des noms de
8 caractères (plus extension de trois caractères), ni chiffrement, ni
système de distinction d'utilisateurs (DOS étant un système
mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32,
utlisants respectivement des blocs de 16 et 32 Kio.</p>
</li>
<li>
<p>NTFS :. Le NTFS (pour New Technology File System, rapport a Windows
NT) est un système de fichier qui est apparu avec Windows XP, et qui
était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a
FAT différentes capacités dont le chiffrement, les liens symboliques, la
compression et les quotas pour les volumes, permettant de limiter la
taille maximum occupée dans une partition.</p>
</li>
<li>
<p>ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012.
Ne différant pas énormément de NTFS, je le mentionne principalement
parce qu'il est prévu qu'il soit le défaut pour Windows 8.
Il apporte principalement la redondance, c'est a dire que chaque
fichier possède une somme de contrôle en 64 bits stockée dans un fichier
séparé pour éviter les corruption de disque.</p>
</li>
<li>
<p>Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers
les plus utilisés sous linux pour le grand public. (Je traiterai ici
d'ext4, puisque c'est le plus récent.) Il dispose de toutes les
fonctions que l'on peut attendre d'un système de fichiers moderne, ni
plus ni moins. Ainsi, ext4 est un système de fichiers journalisé,
acceptant les capacités jusquà 1 Exioctet, et utilise l'allocation dite
"par extent", ce qui signifie que la création d'un fichier réserve
automatiquement les zones contiguës de façon a réduire la fragmentation.</p>
</li>
<li>
<p>ReiserFS : ce système de fichiers, créé par le (légèrement mégalo)
programmeur Hans Reiser, est a retenir pour avoir été le premier système
de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des
4 milliards. Le but de ce système est de créer un système polyvalent, a
la fois système de fichiers et base de donnée (de part sa grande
capacité en terme de nombre de fichiers et de l'utilisation d'un
journal.)</p>
</li>
<li>
<p>Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi
l'allocation par extent, mais possède de plus un système de
sous-volumes, qui permet daccéder a plusieurs arborescences de fichiers
montées en même temps (système pratique et utile pour faire des
snapshots de systèmes.). Il permet aussi de redimensionner a chaud la
taille des partitions, en les agrandissant ou en les rétrécissant, est
compatible avec <a href="http://fr.wikipedia.org/wiki/LVM">LVM</a>, a un système de checking intégré (btrfsck), et
utilise un algorithme de compression appelé LZ4, qui accélère les accès
aux fichiers compressés d'environ 30% par rapport a LZO, le système
utilisé dans ext4.</p>
</li>
<li>
<p>HFS+ : le système de fichier présent sur tous les macs a des capacités
relativement standards, et ressemble énormément a l'ext3. Il supporte
cependant les liens directs vers les dossiers, fonction rare sur les
systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau
dans les années a venir</p>
</li>
<li>
<p>ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux
et *BSD, est, tel Btrfs, a la fois un système de fichier et un
remplaçant/compatible avec LVM, C'est un système de fichiers conçu
principalement pour les serveurs, et il intègre ainsi un système de
redondance des données pour éviter les corruptions, un mode RAID-Z
(apparenté au RAID5), des checks dintégrité en continu, des snapshots,
etc...</p>
</li>
</ul>
<p>Comme on a pu le voir, les systèmes de fichiers disponibles sont
légions. Cependant, le plus adapté a Linux et a une utilisation grand
public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier
n'est pas aujourd'hui proposé par défaut sur les distributions les plus
utilisées, au profit de l'ext4, qui commence a accuser son âge...</p>
<p>Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au
fonctionnement du système, sont en fait de première importance, et ce
choix ne devrait pas être laissé au hasard, et être mis a jour
régulièrement (pour éviter les failles de sécurité...)</p>
<p>Bon courage, et bon choix pour votre prochain système.</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/le-quenya-episode-o/">Le Quenya - Épisode ø</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-18T19:07:00+02:00">
<i class="icon-calendar"></i> Tue 18 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/"><i class="icon-folder-open"></i>Language</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusquà il y
a peu...), le nom que donnait Tolkien au dialecte principal parlé par
les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des
Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte
avant de commencer cet article que l'une des œuvres les plus
impressionnantes de Tolkien, si ce n'est la plus grande, est
l'impressionnant travail linguistique passé sur les différentes langues
présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya,
la langue des nains, qui est appelé le khazalide, etc. </p>
<p>En effet, a contrario des "langues" développées dans d'autres œuvres littéraires
telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot
de français (ou d'anglais) a un mot de sa "langue", les langues de
l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des
racines logiques, des systèmes de grammaire et de conjugaison propres,
une logique inhérente dans la prononciation ou l'orthographe, et ainsi
de suite. </p>
<p>Un véritable rêve de linguiste donc, puisque ces langues sont
pratiquement entièrement documentées par Tolkien lui même (voir
l'appendice E du SdA, particulièrement instructif a ce sujet.)</p>
<p>J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster
ici des résumés des cours que je suis ( disponibles <a href="http://folk.uib.no/hnohf/qcourse.htm">ici</a> , une
traduction en français est disponible <a href="http://www.ambar-eldaron.com/telechargements/integraleshelge.pdf">la</a> en pdf ), et des infos ici
toutes les deux semaines.</p>
<p>Si ce sujet vous intéresse, le compte twitter @Quenya101 poste
régulièrement des informations sur le sujet, et pour plus d'infos sur le
sujet, vous pouvez en trouver <a href="olk.uib.no/hnohf/quenya.htm">par ici</a>.</p>
<p>Et en tant que première leçon, vous pouvez apprendre que ce mot que vous
avez prononcé comme le Kenya tout le long de cet article se prononce en
fait [Kwenïa], ou bien Qwenya!</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/update-a-propos-du-blog/">Update a propos du blog</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-18T16:57:00+02:00">
<i class="icon-calendar"></i> Tue 18 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Bonsoir! Un petit post pour faire un peu le point sur ce blog.<br />
Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais
que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y
avoir un tantinet réfléchi, ceci est du a deux points principaux :</p>
<ul>
<li>
<p>Tout d'abord, le manque d'inspiration, tout simplement. C'est assez
compliqué de trouver des sujets intéressants liés a l'informatique, et
qui méritent un article. Je vous invite d'ailleurs a me suggérer des
sujets via les commentaires ou twitter (<a href="https://twitter.com/wxcafe">@Wxcafe</a>)</p>
</li>
<li>
<p>Ensuite, le délai de 8 jours est trop court pour me permettre de faire
les recherches nécessaires, tout en manageant mes cours et mon temps
libre.</p>
</li>
</ul>
<p>A cause de cela, j'ai pris la décision de changer le rythme de parution
des articles a un *minimum* d'un post tous les 10 jours. Bien entendu,
si j'ai de l'inspiration en trop, plus de posts sont envisageables.</p>
<p>Voila. A part ca, je tiens a vous remercier de me lire (c'est assez
étonnant de voir ca...), et je précise que je vais ajouter une page
About Me, qui bien entendu rassemblera des informations sur moi, ma vie,
mon oeuvre :P</p>
<p>Ceci dit, je vais bosser un peu sur le prochain article.</p>
<p>A plus tard!</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/introduction-a-bash-en-tant-que-language-de-programmation/">Introduction a bash en tant que language de programmation.</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-08T18:15:00+02:00">
<i class="icon-calendar"></i> Sat 08 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/"><i class="icon-folder-open"></i>Programmation</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Linterpréteur de commandes bash (Bourne Again SHell)
est possiblement le shell le plus connu, notamment grâce a son
intégration en tant que shell par défaut dans les distributions Linux
les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva -
Mageia, etc...).</p>
<p>Cependant, il n'est souvent connu qu'en tant quinterpréteur de
commande. Alors qu'en réalité, le bash est un langage de programmation
(presque) complet! Ainsi, il intègre les structures de contrôle
habituelles ( pour mémoire, les structures de contrôle comprennent les
conditions (les ifs), les boucles (les while), et les choix (les case),
entre autres.), et est donc ce que l'on pourrait appeler un langage de
script, interprété, de la même façon que python, a la difference près
qu'il contient un prompt (un système d'entrée de commande interactif)
bien plus complet et développé que python. </p>
<p>Cependant, les programmes en bash ne sont executables que dans un
environnement de type UNIX, et donc pas sous Windows (cygwin
(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous
windows. Il faut malgré tout convenir que cet environnement est bien
plus compliqué a manipuler, et globalement ne permet pas d'acceder a des
portages de qualité satisfaisante.)</p>
<p>Ainsi, il est possible de créer des fichiers .sh, contenant des
instructions bash mises a la suite (de la même façon qu'un script BATCH
Windows .bat), et faisant appel autant aux commandes internes de bash,
aussi bien que les commandes externes mises en place par les programmes
installés sur le système, exactement comme dans une invite de commande.
Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit
panda roux directement dans la boite magique, tandis qu'un if
[condition] suivi d'un then (quelque chose) lancera le fameux quelque
chose suscité si la condition est vérifiée. Un peu comme en C, quoi. </p>
<p>De cette façon, et avec quelques informations et connaissances, il est
facile de comprendre le fonctionnement de la programmation en bash.
Quelques exemples commentés:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash </span>
<span class="c"># La ligne du dessus est très importante, c&#39;est elle qui dit a bash quel doit être </span>
<span class="c"># l&#39;interpreteur des commandes écrites dans ce script. Ici, on dit a bash d&#39;interpréter </span>
<span class="c"># lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire </span>
<span class="c"># executer du python, par exemple, en mettant #!/usr/bin/python a la place.</span>
<span class="nb">echo</span> <span class="s2">&quot;this is a test of bash as a simple script manager&quot;</span> <span class="c"># echo est une commande d&#39;affichage de message.</span>
<span class="nb">echo</span> <span class="s2">&quot;what&#39;s your name, user?&quot;</span>
<span class="nb">read </span>your_name <span class="c"># la commande read permet de demander a l&#39;utilisateur de donner une </span>
<span class="c"># information, stockée dans la variable en paramètre. </span>
<span class="nb">echo</span> <span class="nv">$your_name</span> <span class="s2">&quot;is your name&quot;</span> <span class="c"># echo permet aussi d&#39;afficher la valeur de variables. </span>
<span class="c"># Ici, on renvoie la variable remplie précédemment, suivie d&#39;un message. </span>
<span class="nb">exit</span> <span class="c"># cet appel a exit n&#39;est pas obligatoire, mais donne un aspect plus </span>
<span class="c"># propre au code. Il ne quittera pas la session de terminal, cependant.</span>
</pre></div>
</td></tr></table>
<p>Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite
d'être clair quand aux capacités et a la simplicité du bash en tant que
language de programmation. Alors en effet, nous n'avons ici absolument
pas utilisé les capacités de bash en lui même, et n'avons fait que le
renvoyer a des programmes externes (sauf read, il est vrai). Voyons
maintenant la syntaxe de bash quand il s'agit d'utiliser les structures
de contrôle:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash </span>
<span class="nb">echo</span> <span class="s2">&quot;welcome to this second bash program. would you please kindly enter the name of the machine you&#39;re running this on?&quot;</span>
<span class="nb">read </span>host_name
<span class="k">if</span> <span class="o">[</span> <span class="nv">$host_name</span> <span class="o">==</span> <span class="nv">$HOSTNAME</span> <span class="o">]</span> <span class="c">## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système. </span>
<span class="k">then </span><span class="nb">echo</span> <span class="s2">&quot;you told the truth!&quot;</span>
<span class="k">fi</span> <span class="c">## le fi est la commande fermant le if, tout comme le EndIf en basic. C&#39;est un peu vieillot, mais important en bash. </span>
<span class="k">if</span> <span class="o">[</span> <span class="nv">$host_name</span> !<span class="o">=</span> <span class="nv">$HOSTNAME</span> <span class="o">]</span> <span class="c">## l&#39;opérateur != est l&#39;inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes. </span>
<span class="k">then </span><span class="nb">echo</span> <span class="s2">&quot;you lied!&quot;</span>
<span class="k">fi </span>
<span class="nb">exit</span>
</pre></div>
</td></tr></table>
<p>Voila un petit programme permettant d'apprendre la syntaxe du if en
bash. comme vous pouvez le voir, le language est plutôt lite, et la
structure if n'est pas très difficile a prendre en main.</p>
<p>Passons maintenant au while:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4
5
6
7</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash</span>
<span class="nb">echo</span> <span class="s2">&quot;what is your name?&quot;</span>
<span class="nb">read </span>name
<span class="k">while</span> <span class="o">[</span> 1 &lt; 10 <span class="o">]</span> <span class="c">## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.</span>
<span class="k">do </span><span class="nb">echo</span> <span class="s2">&quot;i love&quot;</span> <span class="nv">$name</span>
<span class="k">done</span>
<span class="nb">exit</span>
</pre></div>
</td></tr></table>
<p>Ce petit programme permet d'observer les bases de while (qui est la
boucle de base en bash).</p>
<p>Le troisième opérateur de bash est case. Voyons:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash</span>
<span class="nb">echo</span> <span class="s2">&quot;please enter a number between one and five&quot;</span>
<span class="nb">read </span>number
<span class="k">case</span> <span class="nv">$number</span> in
1<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was one&quot;</span>
;;
2<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was two&quot;</span>
;;
3<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was three&quot;</span>
;;
4<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was four&quot;</span>
;;
5<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was five&quot;</span>
;;
*<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;this number is not correct&quot;</span>
;;
<span class="k">esac</span>
<span class="nb">exit</span>
</pre></div>
</td></tr></table>
<p>case est un opérateur plus complexe a utiliser a bon escient, et sert a
faire des ifs multiples sans avoir a taper des dizaines de lignes de
code.<br />
(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre
que le code vérifie chacune des conditions : le 1) est validé si la
valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc..
le *) désigne toutes les valeurs, et est donc validé si aucune autre
valeur n'a précédemment acceptée.</p>
<p>Quelques notions manquent ici:<br />
- les nombres aléatoires sont générés par un appel a la variable
\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a
16 bits donc). il est possible de faire des invocations a des nombres
aléatoires plus grands, mais les méthodes permettant de faire cela sont
plus complexes, et je ne les aborderai donc pas ici.<br />
- comme vous avez pu le constater, les variables sont désignées en tant
que telles par l'utilisation d'un symbole \$ au début de leur nom.
Ainsi, echo number renverra "number", tandis que echo \$number renverra
le résultat de la variable \$number.<br />
être utilisées dans un programme bash.<br />
- comme vous avez pu le constater, les commandes doivent tenir en
théorie en une ligne. Cependant, le caractère \ permet de retourner a
la ligne en faisant considérer a bash qu'il s'agit de la même ligne.</p>
<p>Globalement, il faut admettre que bash n'a pas vocation a être un
langage de programmation extrêmement développé. Sans framework
graphique, avec peu de manières d'utiliser de grandes variables, ou
encore une gestion de la mémoire risible, bash n'a rien d'un langage de
développement professionnel.<br />
Cependant, le simple fait qu'il soit considéré comme un langage de
programmation a part entière font de lui un langage de script d'une
puissance incontestable, et sa simplicité et sa grande popularité font
de lui un langage de choix pour apprendre la programmation simplement et
sans trop se prendre la tête.</p>
<p>J'espère que cet article aura été utile a certain-e-s, et je vous
souhaite bonne chance dans votre découverte de la programmation (n'allez
pas voir ceux qui font de l'orienté objet, c'est des méchants :3)</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/les-differentes-couches-dun-systeme-dexploitation/">Les différentes couches d'un système d'exploitation</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-06T23:29:00+02:00">
<i class="icon-calendar"></i> Thu 06 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques
années (plus ou moins, parce que j'ai toujours un Windows en dual boot,
principalement pour les jeux (possiblement plus pour longtemps, avec
l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou
moins bien mon système. Or il y a plusieurs choses a savoir sur les
systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est
le système de couches.</p>
<p>Un système d'exploitation (de type UNIX, \&lt;troll>enfin un vrai système quoi.
\&lt;/troll>) incorpore plusieurs systèmes de couches.</p>
<p>Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique,
c'est a dire que tous les composants sont intégrés au kernel. Ce qui
signifie que rien ne peut être ajouté au noyau sans recompiler celui ci.
Or, quand on sait que le noyau comprend entre autres les drivers du
matériel et des systèmes de fichier, cela peut poser des problèmes quand
a la taille du kernel et a la licence libre de ce dernier. </p>
<p>Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui
signifie que des modules peuvent être chargé a tout moment en cours
dexécution, ce qui permet l'utilisation de nouveaux systèmes de
fichiers a chaud, ou l'insertion de matériel et l'installation de
drivers sans interrompre lexécution du système (Windows utilise un
système de fausse installation de drivers pour le matériel externe, et
un système de pré-installation des drivers pour les périphériques dits
"plug and play")</p>
<p>Après le noyau intervient le système. Or, au tous premiers instants du
boot, les systèmes GNU/Linux utilisent un système permettant de limiter
l'utilisation de ressources systèmes si elles ne sont pas nécessaires,
et incorpore ainsi un système dit de "runlevels"</p>
<p>Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce
runlevel permet de tester le bon démarrage du système sans avoir a
effectuer de manipulation pour le ré-éteindre</p>
<p>Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté
étant donné que ce runlevel donne accès a un système en étant
automatiquement loggé en tant que root, avec tous les autres
utilisateurs désactivés, de même que tous les systèmes de réseaux</p>
<p>Le runlevel 2 est appelé mode multi user, et vous mets en face d'un
système classique. en ligne de commande, mais avec tous les systèmes de
réseau désactivés.</p>
<p>Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux
activés.</p>
<p>Le runlevel 4 n'est pas officiellement défini, et est censé être
activable en fonction des besoins de l'utilisateur. Sur la plupart des
distributions grand public, ce runlevel est lié au...</p>
<p>Runlevel 5! Multi-user, networking, with working GUI! c'est le système
tel que vous le connaissez, avec l'interface graphique et le système de
login graphique.</p>
<p>Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine
quand il devient le runlevel courant.</p>
<p>(Il est a noter que Debian, et donc toutes les distribs qui en sont
dérivées, ne font pas de distinction entre les differents runlevels du 2
au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login
et une interface graphique, et un mode réseau fonctionnel, bref avec des
fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)</p>
<p>Il est possible de changer de runlevel grâce a la commande runlevel
(oui, c'est évident...)</p>
<p>Les systèmes Linux utilisent aussi un système dit de SandBox , qui en
informatique est un système permettant d'isoler les processus les uns
des autres. Ainsi, la pile réseau, qui est le système auquel les
différents processus envoient les différents paquets qui doivent sortir
de la machine , et qui redistribue ces paquets, est isolée du reste du
système, en cela qu'aucun des autres processus ne peuvent modifier cette
pile hors du runlevel 1 ou 2.</p>
<p>De la même façon, le navigateur chrom/ium fait fonctionner tous les
onglets, ainsi que toutes les extensions, dans des processus différents.
Certaines distributions linux implémentent un système de cette sorte
pour toutes les applications, ou seulement pour certaines. ainsi Chakra
Linux a un système d'installation d'applications dans des disques
virtuels, ce qui permet une sécurité totale du processus.</p>
<p>Voila, j'espère vous en avoir appris un peu sur le fonctionnement des
différentes couches de linux, et j'espère que cet article vous poussera
a tester un peu votre système et a vous amuser avec les différents
runlevels</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/la-programmation-expliquee-simplement/">La programmation expliquée simplement</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-08-27T00:22:00+02:00">
<i class="icon-calendar"></i> Mon 27 August 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Salut!<br />
Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire
récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé
pas mal de temps assez occupé. </p>
<p>Enfin, après un certain temps a farfouiller au millieu des connecteurs
SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques
durs, je suis de retour pour un court article.<br />
Du coup, je m'étais dit que j'allais reprendre sur le thème de
l'informatique expliquée au grand public, en tentant d'aller un peu plus
loin que la dernière fois sur le thème de la programmation<br />
Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur.
Si a peu près tout le monde sait que "les ordinateurs, ils ne
comprennent que les 1 et les 0!", peu de gens savent comment cela
fonctionne en détail. </p>
<p>Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà
des notions de base en informatique. Ainsi, vous savez surement que les
ordinateurs fonctionnent avec des programmes, qui sont composés de
code.<br />
Ainsi, il faut comprendre que le code (source) est "compilé" en un
fichier "binaire". Un fichier binaire est un fichier comprenant les
instructions telles quexécutées par le processeur, et donc absolument
illisible pour un humain. </p>
<p>La compilation est le processus qui transforme le code source en
binaire executable. Les binaires ont, sous Windows, l'extension .exe,
tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension
particulière.<br />
Ceci étant dit, il faut comprendre que certains langages sont plus
proches que d'autres du langage processeur, les langages les plus
proches sont dits de "bas niveau". Les langages les plus éloignés sont
donc dits de haut niveau. </p>
<p>Par exemple, l'assembleur est l'un des languages de plus bas niveau,
tandis que python par exemple est un langage de plus haut niveau. Les
langages de haut niveau sont souvent bien plus simples a comprendre et a
apprendre que les langages de bas niveau </p>
<p>Ainsi, en C, un langage de niveau relativement bas, pour afficher
"hello world" sur l'écran, le code nécessaire est :</p>
<div class="highlight"><pre><span class="cp">#include </span>
<span class="kt">void</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="n">printf</span><span class="p">(</span><span class="s">&quot;hello world&quot;</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
<p>le même programme en python s'écrit :</p>
<div class="highlight"><pre><span class="n">print</span> <span class="s">&quot;hello world&quot;</span>
</pre></div>
<p>et n'a pas besoin d'être compilé , puisqu'il peut être intepreté
directement. </p>
<p>Python utilise en effet un système similaire a Java en ayant un
interpréteur dit "runtime" ou "temps réel", qui interprète le programme
sans le compiler. Java utilise un système légèrement différent, puisque
le code a besoin d'être compilé, mais est interpreté par un interpréteur
et non par le processeur. </p>
<p>Cette méthode permet le fameux "code once, run everywhere", ce qui
signifie que le même code est exécutable sur quasiment tous les systèmes
d'exploitation (en fait, tous ceux sur lesquels linterpréteur est
disponible.)</p>
<p>Voila, je vous laisse sur le fonctionnement de Java et de Python, et je
vais me coucher.<br />
A bientôt!</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere/">GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-08-22T20:33:00+02:00">
<i class="icon-calendar"></i> Wed 22 August 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>GNU/Linux est un vaste et extraordinaire territoire technologique, mais
je ne vais pas m'attarder ici sur les aspects profondément techniques de
ce territoire pour faire plutôt une sorte d'introduction a ce qu'est
vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de
connaissances en informatique.</p>
<p>GNU/Linux, que jabrégerai ici en Linux pour plus de simplicité, est un
Système d'Exploitation. Un système d'exploitation est, pour simplifier,
un ensemble d'outils informatiques qui vous permettent d'utiliser votre
ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation
de système d'exploitation (Operating System en anglais) est OS. Les 4
principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et
Solaris. Les trois derniers sont issus d'un autre système, plus ancien,
nommé UNIX.</p>
<p>De ce fait, on pourrait penser que Linux remplace complètement Windows
une fois installé, et comprend une interface graphique, et toutes sortes
d'utilitaires permettant a l'utilisateur d'utiliser le système (sous
Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer.
Pour l'interface graphique, pensez a... Pensez que votre système affiche
autre chose que des lignes de commande.) Or non, une fois installé,
Linux en lui même ne vous afficherait aucune interface graphique, et
s'il est effectivement livré avec des utilitaires, ils ne sont que des
programmes en ligne de commande. Autant les utilisateurs avancés sauront
s'en servir, et pourront argumenter que c'est plus efficace ou plus
rapide, autant les utilisateurs basiques préfèrent une interface
graphique. Alors comment en obtenir une?</p>
<p>Ici, il convient de faire une précision importante. Si il n'existe
qu'une seule version de Windows, ou de Mac OS, il existe en fait
plusieurs centaines de "versions" différentes de Linux. Appelées
distributions, ces dernière sont développées par des groupes
complètement séparés, et se basent sur le fait que Linux soit
entièrement placé sous licence libre (ce qui leur permet de l'utiliser a
leur guise, a condition que leur travail soit lui aussi placé sous
licence libre). De ce fait, de nombreuses distributions existent et se
développent en parallèle. On peut ainsi citer <a href="http://debian.org">Debian</a>, qui est l'une
des distributions les plus importantes, ou encore <a href="http://ubuntu.com">Ubuntu</a>, qui est
l'une des plus connues et des plus simples a utiliser.</p>
<p>Ainsi, ces distributions intègrent une interface graphique. Cependant,
grâce a la liberté dont bénéficient les développeurs sous Linux, il
existe de nombreuses interfaces graphiques différentes : <a href="unity.ubuntu.com">Unity</a>, la
nouvelle interface d'Ubuntu; <a href="gnome.org">GNOME</a> , une interface qui vise a la
simplicité; ou encore <a href="http://kde.org/">KDE</a>, une interface utilisateur ressemblant a
Windows 7.</p>
<p>Ainsi, le choix astronomique de distributions Linux a bien un sens :
chacune d'entre elle intègre des outils différents. Par exemple, Debian
intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend
particulièrement stable. Ubuntu intègre Unity, ce qui en fait une
distribution particulièrement intuitive. Linux Mint intègre Cinnamon,
qui est une version dérivée de GNOME 3, ce qui permet encore une autre
expérience. Et Arch Linux n'intègre pas d'interface graphique du tout,
ce qui permet a l'utilisateur de choisir entre les multiples interfaces
existantes.</p>
<p>Ce qu'il est important de retenir de cela, c'est que Linux est un OS
complètement libre, ce qui signifie que n'importe qui peut modifier et
utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi,
Linux est un OS qui est véritablement créé par des passionnés, pour tous
et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué
a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus.
Cependant, Linux donne la possibilité a l'utilisateur de le rendre
affreusement complexe, mais aussi de le rendre adapté a ses besoins,
quels que soient ceux ci. Et c'est la que réside l'incroyable puissance
de ce Système d'Exploitation. Il est extraordinairement adaptable.</p>
<p>N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas
technophiles. Ils pourraient adorer, et peut être même le devenir :)</p>
<p>A bientôt!</p></div>
</div>
<hr />
<div class="article">
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/debuts-presentation-etc/">Débuts, présentation, etc...</a></h1>
<div class="well small"><footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-08-18T20:27:00+02:00">
<i class="icon-calendar"></i> Sat 18 August 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
<br />
</footer><!-- /.post-info --></div>
<div class="summary"><p>Bonjour!</p>
<p>Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur
Twitter, mais aussi sur IRC (Je traîne pas mal sur
irc.freenode.net/##nolife et #debian-fr)</p>
<p>J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je
fais partie de ce genre de personne qui sont capables d'investir tout
leur temps et leur énergie a sintéresser a un sujet en particulier, et
qui ne peuvent pas vivre sans leurs passions, avec une petite différence
cependant, qui est que je mintéresse a plusieurs choses :
l'informatique, qui est un champ tellement large qu'on peut passer une
vie a apprendre des choses dessus, et plus particulièrement à
l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres
{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les
trolls seront a partir de maintenant indiqués avec le tag [tr]] du
libre, je préfère utiliser de l'open-source si c'est possible},
programmation en C, python et java, etc...) , mais aussi a
lélectronique. </p>
<p>Dans un tout autre registre, je mintéresse aussi
beaucoup aux différents aspects du féminisme et des égalités sexuelles
(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) ,
et a la culture dite "geek" en général.</p>
<p>Je tenterai de poster ici le plus souvent possible, mais j'ai de gros
problèmes en terme de régularité de post, donc ne vous inquiétez pas si
vous ne voyez rien pendant deux semaines.</p>
<p>Merci beaucoup de votre attention, et a bientôt!</p></div>
</div>
<hr />
<div class="pagination">
<ul>
<li class="prev"><a href="file:///home/wxcafe/code/blog-source/output/index2.html">&larr; Previous</a></li>
<li class="">
<a href="file:///home/wxcafe/code/blog-source/output/index.html">1</a>
</li>
<li class="">
<a href="file:///home/wxcafe/code/blog-source/output/index2.html">2</a>
</li>
<li class="active">
<a href="file:///home/wxcafe/code/blog-source/output/index3.html">3</a>
</li>
<li class="next disabled"><a href="#">&rarr; Next</a></li>
</ul>
</div>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,508 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Archlinux made simple</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<section id="content">
<article>
<header>
<h1>
<a href=""
rel="bookmark"
title="Permalink to Archlinux made simple">Archlinux made simple</a>
</h1>
</header>
<div class="entry-content">
<div class="well">
<footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-10-05T14:48:00+02:00">
<i class="icon-calendar"></i> Fri 05 October 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/"><i class="icon-folder-open"></i>OSes</a>
<br />
</footer><!-- /.post-info --> </div>
<p>Archlinux est réputée être une distribution Linux très complexe a
installer et a maintenir.</p>
<p>Je vais tenter ici de vous convaincre que ce n'est pas le cas, et
qu'elle peut se monter très intéressante et très instructive a installer
tout autant qu'a utiliser.</p>
<p>Il convient tout d'abord de rappeler a quels principes obéit Arch:</p>
<ol>
<li>
<p>Le KISS : Keep It Simple and Stupid, Archlinux tente de faire des
programmes simples et utilisables par tous. Avec comme base de
simplicité les utilisateurs de LFS... Mais il n'empêche qu'avec un peu
de bonne volonté, la configuration n'est pas si compliquée!</p>
</li>
<li>
<p>La philosophie UNIX : chaque programme est prévu pour ne remplir
qu'une seule tâche. Bien entendu, cela ne concerne que les programmes
conçus pour sinsérer dans la philosophie UNIX, et les installations de
dépendances avec le gestionnaire de paquet d'Arch fonctionnent
superbement bien.</p>
</li>
</ol>
<p>De plus, posons les bases d'Arch : le gestionnaire de paquets s'appelle
pacman, et les commandes de base sont :</p>
<ul>
<li>
<p>recherche d'un paquet :</p>
<div class="highlight"><pre><span class="n">pacman</span> <span class="o">-</span><span class="n">Ss</span> <span class="n">paquet</span>
</pre></div>
</li>
<li>
<p>installation d'un paquet :</p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">paquet</span>
</pre></div>
</li>
<li>
<p>désinstallation d'un paquet :</p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">R</span> <span class="n">paquet</span>
</pre></div>
</li>
<li>
<p>mise a jour de tous les paquets installés :</p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">Syu</span> <span class="n">paquet</span>
</pre></div>
</li>
</ul>
<p>Archlinux est une distribution dite "rolling release", ce qui signifie
qu'il n'y a pas de version a proprement dites, et que les paquets se
mettent a jour en permanence, sans jamais changer la "version" d'Arch.
Il n'y a d'ailleurs qu'une seule version de l'installeur sur le site,
puisqu'une version plus ancienne n'aurait aucun sens.</p>
<p>Arch n'offre pas d'interface graphique par défaut : après avoir installé
le système, vous n'aurez qu'une invite de commande. Heureusement, je
vais ici vous guider a travers l'installation d'une interface graphique
(mate, le fork de gnome 2)</p>
<p>L'installation d'Arch se fait par le réseau, veillez a avoir une
connection WiFi ou filaire a proximité avant de suivre ce guide.</p>
<p>Ce guide utilise SystemV, alors qu'Arch va prochainement passer sous
systemd. N'ayant pas encore eu le temps dexpérimenter assez avec ce
dernier, je ferais un tutoriel pour passer votre Arch a systemd bientôt.</p>
<p>Bon, passons a l'explication de l'installation proprement dite :</p>
<p>Tout d'abord, téléchargeons l'iso d'arch la plus récente :</p>
<div class="highlight"><pre><span class="n">wget</span> <span class="n">http</span><span class="o">:</span><span class="c1">//mir.archlinux.fr/iso/2012.09.07/archlinux-2012.09.07-dual.iso</span>
</pre></div>
<p>Ensuite, gravons cette image sur un disque USB :</p>
<div class="highlight"><pre><span class="n">dd</span> <span class="k">if</span><span class="o">=</span><span class="n">archlinux</span><span class="o">-</span><span class="mf">2012.09.07</span><span class="o">-</span><span class="n">dual</span><span class="p">.</span><span class="n">iso</span> <span class="n">of</span><span class="o">=/</span><span class="n">dev</span><span class="o">/</span><span class="n">sdX</span>
</pre></div>
<p>Après reboot de la machine sur l'iso en question et choix de
l'architecture, nous sommes accueillis par un shell root.</p>
<p>La première chose a faire est de paramétrer le clavier :</p>
<div class="highlight"><pre><span class="n">loadkeys</span> <span class="n">fr</span>
</pre></div>
<p>Puis nous pouvons passer a l'installation proprement dite.
Partitionnement :</p>
<div class="highlight"><pre><span class="n">cfdisk</span> <span class="err">#</span> <span class="n">cfdisk</span> <span class="n">est</span> <span class="n">suffisamment</span> <span class="n">clair</span> <span class="n">pour</span> <span class="n">ne</span> <span class="n">pas</span> <span class="n">n</span><span class="err">é</span><span class="n">cessiter</span> <span class="n">d</span><span class="err">&#39;</span><span class="n">explications</span>
</pre></div>
<p>formatage des partitions :</p>
<div class="highlight"><pre><span class="n">mkfs</span><span class="p">.</span><span class="n">ext4</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda1</span> <span class="err">#</span> <span class="n">partition</span> <span class="n">root</span>
<span class="n">pacman</span> <span class="o">-</span><span class="n">Syu</span> <span class="n">btrfs</span><span class="o">-</span><span class="n">progs</span> <span class="o">&amp;&amp;</span> <span class="n">mkfs</span><span class="p">.</span><span class="n">btrfs</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda2</span> <span class="err">#</span> <span class="n">partition</span> <span class="n">home</span>
<span class="n">mkswap</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda3</span> <span class="o">&amp;&amp;</span> <span class="n">swapon</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda3</span> <span class="err">#</span> <span class="n">partition</span> <span class="n">de</span> <span class="n">swap</span>
</pre></div>
<p>Montons les partitions nouvellement créées, puis installons le système :</p>
<div class="highlight"><pre><span class="n">mount</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda1</span> <span class="o">/</span><span class="n">mnt</span>
<span class="n">mkdir</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">home</span> <span class="o">&amp;&amp;</span> <span class="n">mount</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda2</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">home</span>
<span class="n">dhclient</span> <span class="n">eth0</span> <span class="err">#</span> <span class="n">si</span> <span class="n">vous</span> <span class="n">utilisez</span> <span class="n">une</span> <span class="n">connection</span> <span class="n">filaire</span><span class="p">,</span> <span class="n">sinon</span> <span class="n">voire</span> <span class="n">http</span><span class="o">:</span><span class="c1">//wiki.archlinux.fr/Wifi#Configuration</span>
<span class="n">pacstrap</span> <span class="o">/</span><span class="n">mnt</span> <span class="n">base</span> <span class="n">base</span><span class="o">-</span><span class="n">devel</span>
<span class="n">genfstab</span> <span class="o">-</span><span class="n">p</span> <span class="o">/</span><span class="n">mnt</span> <span class="o">&gt;</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">fstab</span>
</pre></div>
<p>Allons prendre un café le temps que ça charge, puis installons les
quelques paquets nécessaires a notre installation et au premier
démarrage:</p>
<div class="highlight"><pre><span class="n">pacstrap</span> <span class="o">/</span><span class="n">mnt</span> <span class="n">syslinux</span> <span class="n">btrfs</span><span class="o">-</span><span class="n">progs</span> <span class="n">wireless_tools</span> <span class="n">dhclient</span>
</pre></div>
<p>Maintenant, passons sur notre install toute fraîche d'Arch :</p>
<div class="highlight"><pre><span class="n">arch</span><span class="o">-</span><span class="n">chroot</span> <span class="o">/</span><span class="n">mnt</span> <span class="n">bash</span>
</pre></div>
<p>configurons les bases :</p>
<div class="highlight"><pre><span class="n">echo</span> <span class="n">HOSTNAME</span> <span class="o">&gt;</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">hostname</span>
<span class="n">ln</span> <span class="o">-</span><span class="n">s</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">zoneinfo</span><span class="o">/</span><span class="n">Europe</span><span class="o">/</span><span class="n">Paris</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">localtime</span>
<span class="n">date</span> <span class="n">MMJJhhmmAAAA</span>
<span class="n">hwclock</span> <span class="o">--</span><span class="n">systohc</span>
<span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">locale</span><span class="p">.</span><span class="n">gen</span> <span class="err">#</span> <span class="n">D</span><span class="err">é</span><span class="n">commentez</span> <span class="n">les</span> <span class="n">lignes</span> <span class="n">correspondant</span> <span class="n">au</span> <span class="n">fran</span><span class="err">ç</span><span class="n">ais</span> <span class="o">:</span> <span class="n">fr_FR</span><span class="p">.</span><span class="n">UTF</span><span class="o">-</span><span class="mi">8</span> <span class="n">et</span> <span class="n">fr_FR</span><span class="p">.</span><span class="n">ISO</span><span class="o">-</span><span class="mi">8859</span><span class="o">-</span><span class="mi">1</span>
<span class="n">echo</span> <span class="err">&#39;</span><span class="n">LANG</span><span class="o">=</span><span class="s">&quot;fr_FR.UTF-8&quot;</span><span class="err">&#39;</span> <span class="o">&gt;</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">locale</span><span class="p">.</span><span class="n">conf</span>
<span class="n">locale</span><span class="o">-</span><span class="n">gen</span>
<span class="n">mkinitcpio</span> <span class="o">-</span><span class="n">p</span> <span class="n">linux</span>
</pre></div>
<p>Enfin, vérifions que syslinux est correctement configuré :</p>
<div class="highlight"><pre><span class="n">vim</span> <span class="o">/</span><span class="n">boot</span><span class="o">/</span><span class="n">syslinux</span><span class="o">/</span><span class="n">syslinux</span><span class="p">.</span><span class="n">cfg</span> <span class="err">#</span> <span class="n">il</span> <span class="n">devrait</span> <span class="n">y</span> <span class="n">avoir</span> <span class="s">&quot;append root=/dev/sda1&quot;</span>
</pre></div>
<p>Si tout est correct, installons syslinux, et paramétrons un mot de passe
root :</p>
<div class="highlight"><pre><span class="n">syslinux</span><span class="o">-</span><span class="n">install_update</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda</span> <span class="o">-</span><span class="n">mia</span>
<span class="n">passwd</span> <span class="n">root</span>
</pre></div>
<p>Et voila, l'installation est terminée! Plus qu'a quitter la session et a
redémarrer l'ordinateur!</p>
<div class="highlight"><pre> <span class="n">exit</span>
<span class="n">umount</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">home</span>
<span class="n">umount</span> <span class="o">/</span><span class="n">mnt</span>
<span class="n">reboot</span>
</pre></div>
<p>Fini!</p>
<p>Prenons une petite pause. La partie suivante de ce tutoriel consister en
un paramétrage des principaux services nécessaires a l'utilisation d'un
OS, disons, moyen :</p>
<ul>
<li>
<p>Installation de MATE, le gestionnaire de bureau (voir
<a href="http://mate-desktop.org/">http://mate-desktop.org/</a>)</p>
</li>
<li>
<p>Installation de sudo et de networkmanager pour faire fonctionner les
composants essentiels du système sans avoir a tout activer a la main a
chaque démarrage</p>
</li>
<li>
<p>Installation de SLiM comme gestionnaire de login graphique, pour
présenter une interface plus accueillante que la console, et
configuration de celui-ci</p>
</li>
<li>
<p>Installation des principaux logiciels utiles non inclus dans mate ni
base (yaourt, chromium, thunderbird, etc...).</p>
</li>
</ul>
<p>Ce guide est bien sur optionnel, si vous souhaitez utiliser Arch avec un
gestionnaire de bureau autre que mate, ou sans, vous pouvez vous arrêter
ici.</p>
<p>Bon, reprenons.</p>
<p>Nous sommes donc sur une demande de mot de passe. Entrez donc le mot de
passe paramétré plus haut pour le root, puis retapez la commande
utilisée plus tôt pour vous connecter a internet.</p>
<p>Il convient d'ajouter le dépôt de MATE pour installer ce dernier, puis
d'effectuer l'action en question :</p>
<div class="highlight"><pre><span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">pacman</span><span class="p">.</span><span class="n">conf</span>
</pre></div>
<p>Ici, ajoutez les lignes suivantes :</p>
<div class="highlight"><pre><span class="k">[mate]</span>
<span class="na">Server</span> <span class="o">=</span> <span class="s">http://repo.mate-desktop.org/archlinux/$arch</span>
</pre></div>
<p>Installons maintenant les paquets :</p>
<div class="highlight"><pre><span class="n">pacman</span> <span class="o">-</span><span class="n">Syu</span> <span class="n">mate</span> <span class="n">mate</span><span class="o">-</span><span class="n">extras</span> <span class="n">dbus</span> <span class="n">dbus</span><span class="o">-</span><span class="n">core</span> <span class="n">alsa</span> <span class="n">networkmanager</span> <span class="n">sudo</span>
</pre></div>
<p>Ajoutons un compte utilisateur pour utiliser les composants du système
sans tout crasher a chaque fois :</p>
<div class="highlight"><pre><span class="n">useradd</span> <span class="o">-</span><span class="n">g</span> <span class="n">users</span> <span class="o">-</span><span class="n">G</span> <span class="n">wheel</span><span class="p">,</span><span class="n">audio</span><span class="p">,</span><span class="n">optical</span><span class="p">,</span><span class="n">lp</span><span class="p">,</span><span class="n">scanner</span><span class="p">,</span><span class="n">log</span><span class="p">,</span><span class="n">power</span><span class="p">,</span><span class="n">floppy</span><span class="p">,</span><span class="n">storage</span><span class="p">,</span><span class="n">games</span><span class="p">,</span><span class="n">video</span> <span class="o">-</span><span class="n">m</span> <span class="o">-</span><span class="n">s</span> <span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">bash</span> <span class="o">*</span><span class="n">votrenom</span><span class="o">*</span>
<span class="n">passwd</span> <span class="o">*</span><span class="n">votrenom</span><span class="o">*</span>
<span class="n">su</span> <span class="o">*</span><span class="n">votrenom</span><span class="o">*</span>
</pre></div>
<p>Il faut maintenant éditer le fichier \~/.xinitrc pour préciser a X.org
ce que l'on veut utiliser :</p>
<div class="highlight"><pre><span class="n">echo</span> <span class="s">&quot;exec ck-launch-session mate-session&quot;</span> <span class="o">&gt;</span> <span class="o">~/</span><span class="p">.</span><span class="n">xinitrc</span>
</pre></div>
<p>Profitons en pour ajouter les démons système au lancement :</p>
<div class="highlight"><pre><span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">rc</span><span class="p">.</span><span class="n">conf</span>
</pre></div>
<p>Ajoutez donc <code>dbus, alsa. hwclock</code> et <code>networkmanager</code> dans la section
DAEMONS (entre les parenthèses, après crond normalement)</p>
<div class="highlight"><pre><span class="n">DAEMONS</span><span class="o">=</span><span class="p">(</span><span class="n">syslog</span><span class="o">-</span><span class="n">ng</span> <span class="n">network</span> <span class="n">crond</span> <span class="n">dbus</span> <span class="n">alsa</span> <span class="n">hwclock</span> <span class="n">networkmanager</span><span class="p">)</span>
</pre></div>
<p>Pour éviter un reboot, il est ici possible de faire un</p>
<div class="highlight"><pre><span class="n">su</span>
</pre></div>
<p>Puis un</p>
<div class="highlight"><pre> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">rc</span><span class="p">.</span><span class="n">d</span><span class="o">/</span><span class="n">dbus</span> <span class="n">start</span> <span class="o">&amp;&amp;</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">rc</span><span class="p">.</span><span class="n">d</span><span class="o">/</span><span class="n">alsa</span> <span class="n">start</span> <span class="o">&amp;&amp;</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">rc</span><span class="p">.</span><span class="n">d</span><span class="o">/</span><span class="n">networkmanager</span> <span class="n">start</span>
</pre></div>
<p>Sinon, il est possible de juste redémarrer.<br />
Une fois cela fait, profitez de ce moment pour vous autoriser vous même
a utiliser sudo. Loggez vous en root, et :</p>
<div class="highlight"><pre> <span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">sudoers</span>
</pre></div>
<p>Décommentez la ligne qui commence par # %wheel ALL=(ALL)<br />
Sauvegardez le fichier, puis, après un <code>su *votrenom*</code>, tentez de faire
un sudo ls /<br />
Normalement, vous devriez avoir un listing du dossier /<br />
Bon, maintenant, pourquoi ne pas tenter de lancer MATE?<br />
C'est simple comme bonjour :</p>
<div class="highlight"><pre> <span class="n">startx</span>
</pre></div>
<p>Et PAF! Voila un MATE desktop flambant neuf a configurer!<br />
Avant de faire ça, retournez sur un TTY (CTRL+ALT+Fx), loggez vous,
puis installez SLiM (<code>sudo pacman -Syu slim</code>).<br />
Configurons le:</p>
<div class="highlight"><pre><span class="n">echo</span> <span class="s">&quot;exec dbus-launch mate-session&quot;</span> <span class="o">&gt;</span> <span class="o">~/</span><span class="p">.</span><span class="n">xinitrc</span> <span class="o">&amp;&amp;</span> <span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">slim</span><span class="p">.</span><span class="n">conf</span>
</pre></div>
<p>Éditez la ligne
"<code>sessions xfce4,icewm-session,wmaker,blackbox</code>" de facon a
ce qu'elle ressemble a "<code>sessions mate-session</code>"<br />
Puis ajoutez slim dans /etc/rc.conf, dans la section DAEMONS.<br />
Normalement, tout devrait fonctionner!<br />
Ah oui, et pour installer thunderbird, firefox, chromium, etc...</p>
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">pacman</span> <span class="o">-</span><span class="n">Syu</span> <span class="n">chromium</span> <span class="n">thunderbird</span> <span class="n">xchat</span> <span class="n">firefox</span> <span class="n">rhythmbox</span> <span class="n">pidgin</span> <span class="n">transmission</span><span class="o">-</span><span class="n">gtk</span> <span class="n">vlc</span>
</pre></div>
<p>Voila! Et comme dirait <a href="https://twitter.com/spartition">@Spartition</a>, c'est sale, mais qu'est-ce que c'est
bon!<br />
A plus~</p>
</div><!-- /.entry-content -->
</article>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,246 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Débuts, présentation, etc...</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<section id="content">
<article>
<header>
<h1>
<a href=""
rel="bookmark"
title="Permalink to Débuts, présentation, etc...">Débuts, présentation, etc...</a>
</h1>
</header>
<div class="entry-content">
<div class="well">
<footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-08-18T20:27:00+02:00">
<i class="icon-calendar"></i> Sat 18 August 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
<br />
</footer><!-- /.post-info --> </div>
<p>Bonjour!</p>
<p>Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur
Twitter, mais aussi sur IRC (Je traîne pas mal sur
irc.freenode.net/##nolife et #debian-fr)</p>
<p>J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je
fais partie de ce genre de personne qui sont capables d'investir tout
leur temps et leur énergie a sintéresser a un sujet en particulier, et
qui ne peuvent pas vivre sans leurs passions, avec une petite différence
cependant, qui est que je mintéresse a plusieurs choses :
l'informatique, qui est un champ tellement large qu'on peut passer une
vie a apprendre des choses dessus, et plus particulièrement à
l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres
{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les
trolls seront a partir de maintenant indiqués avec le tag [tr]] du
libre, je préfère utiliser de l'open-source si c'est possible},
programmation en C, python et java, etc...) , mais aussi a
lélectronique. </p>
<p>Dans un tout autre registre, je mintéresse aussi
beaucoup aux différents aspects du féminisme et des égalités sexuelles
(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) ,
et a la culture dite "geek" en général.</p>
<p>Je tenterai de poster ici le plus souvent possible, mais j'ai de gros
problèmes en terme de régularité de post, donc ne vous inquiétez pas si
vous ne voyez rien pendant deux semaines.</p>
<p>Merci beaucoup de votre attention, et a bientôt!</p>
</div><!-- /.entry-content -->
</article>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,285 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<section id="content">
<article>
<header>
<h1>
<a href=""
rel="bookmark"
title="Permalink to GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère">GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère</a>
</h1>
</header>
<div class="entry-content">
<div class="well">
<footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-08-22T20:33:00+02:00">
<i class="icon-calendar"></i> Wed 22 August 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --> </div>
<p>GNU/Linux est un vaste et extraordinaire territoire technologique, mais
je ne vais pas m'attarder ici sur les aspects profondément techniques de
ce territoire pour faire plutôt une sorte d'introduction a ce qu'est
vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de
connaissances en informatique.</p>
<p>GNU/Linux, que jabrégerai ici en Linux pour plus de simplicité, est un
Système d'Exploitation. Un système d'exploitation est, pour simplifier,
un ensemble d'outils informatiques qui vous permettent d'utiliser votre
ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation
de système d'exploitation (Operating System en anglais) est OS. Les 4
principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et
Solaris. Les trois derniers sont issus d'un autre système, plus ancien,
nommé UNIX.</p>
<p>De ce fait, on pourrait penser que Linux remplace complètement Windows
une fois installé, et comprend une interface graphique, et toutes sortes
d'utilitaires permettant a l'utilisateur d'utiliser le système (sous
Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer.
Pour l'interface graphique, pensez a... Pensez que votre système affiche
autre chose que des lignes de commande.) Or non, une fois installé,
Linux en lui même ne vous afficherait aucune interface graphique, et
s'il est effectivement livré avec des utilitaires, ils ne sont que des
programmes en ligne de commande. Autant les utilisateurs avancés sauront
s'en servir, et pourront argumenter que c'est plus efficace ou plus
rapide, autant les utilisateurs basiques préfèrent une interface
graphique. Alors comment en obtenir une?</p>
<p>Ici, il convient de faire une précision importante. Si il n'existe
qu'une seule version de Windows, ou de Mac OS, il existe en fait
plusieurs centaines de "versions" différentes de Linux. Appelées
distributions, ces dernière sont développées par des groupes
complètement séparés, et se basent sur le fait que Linux soit
entièrement placé sous licence libre (ce qui leur permet de l'utiliser a
leur guise, a condition que leur travail soit lui aussi placé sous
licence libre). De ce fait, de nombreuses distributions existent et se
développent en parallèle. On peut ainsi citer <a href="http://debian.org">Debian</a>, qui est l'une
des distributions les plus importantes, ou encore <a href="http://ubuntu.com">Ubuntu</a>, qui est
l'une des plus connues et des plus simples a utiliser.</p>
<p>Ainsi, ces distributions intègrent une interface graphique. Cependant,
grâce a la liberté dont bénéficient les développeurs sous Linux, il
existe de nombreuses interfaces graphiques différentes : <a href="unity.ubuntu.com">Unity</a>, la
nouvelle interface d'Ubuntu; <a href="gnome.org">GNOME</a> , une interface qui vise a la
simplicité; ou encore <a href="http://kde.org/">KDE</a>, une interface utilisateur ressemblant a
Windows 7.</p>
<p>Ainsi, le choix astronomique de distributions Linux a bien un sens :
chacune d'entre elle intègre des outils différents. Par exemple, Debian
intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend
particulièrement stable. Ubuntu intègre Unity, ce qui en fait une
distribution particulièrement intuitive. Linux Mint intègre Cinnamon,
qui est une version dérivée de GNOME 3, ce qui permet encore une autre
expérience. Et Arch Linux n'intègre pas d'interface graphique du tout,
ce qui permet a l'utilisateur de choisir entre les multiples interfaces
existantes.</p>
<p>Ce qu'il est important de retenir de cela, c'est que Linux est un OS
complètement libre, ce qui signifie que n'importe qui peut modifier et
utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi,
Linux est un OS qui est véritablement créé par des passionnés, pour tous
et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué
a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus.
Cependant, Linux donne la possibilité a l'utilisateur de le rendre
affreusement complexe, mais aussi de le rendre adapté a ses besoins,
quels que soient ceux ci. Et c'est la que réside l'incroyable puissance
de ce Système d'Exploitation. Il est extraordinairement adaptable.</p>
<p>N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas
technophiles. Ils pourraient adorer, et peut être même le devenir :)</p>
<p>A bientôt!</p>
</div><!-- /.entry-content -->
</article>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,418 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Introduction a bash en tant que language de programmation.</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<section id="content">
<article>
<header>
<h1>
<a href=""
rel="bookmark"
title="Permalink to Introduction a bash en tant que language de programmation.">Introduction a bash en tant que language de programmation.</a>
</h1>
</header>
<div class="entry-content">
<div class="well">
<footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-08T18:15:00+02:00">
<i class="icon-calendar"></i> Sat 08 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/"><i class="icon-folder-open"></i>Programmation</a>
<br />
</footer><!-- /.post-info --> </div>
<p>Linterpréteur de commandes bash (Bourne Again SHell)
est possiblement le shell le plus connu, notamment grâce a son
intégration en tant que shell par défaut dans les distributions Linux
les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva -
Mageia, etc...).</p>
<p>Cependant, il n'est souvent connu qu'en tant quinterpréteur de
commande. Alors qu'en réalité, le bash est un langage de programmation
(presque) complet! Ainsi, il intègre les structures de contrôle
habituelles ( pour mémoire, les structures de contrôle comprennent les
conditions (les ifs), les boucles (les while), et les choix (les case),
entre autres.), et est donc ce que l'on pourrait appeler un langage de
script, interprété, de la même façon que python, a la difference près
qu'il contient un prompt (un système d'entrée de commande interactif)
bien plus complet et développé que python. </p>
<p>Cependant, les programmes en bash ne sont executables que dans un
environnement de type UNIX, et donc pas sous Windows (cygwin
(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous
windows. Il faut malgré tout convenir que cet environnement est bien
plus compliqué a manipuler, et globalement ne permet pas d'acceder a des
portages de qualité satisfaisante.)</p>
<p>Ainsi, il est possible de créer des fichiers .sh, contenant des
instructions bash mises a la suite (de la même façon qu'un script BATCH
Windows .bat), et faisant appel autant aux commandes internes de bash,
aussi bien que les commandes externes mises en place par les programmes
installés sur le système, exactement comme dans une invite de commande.
Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit
panda roux directement dans la boite magique, tandis qu'un if
[condition] suivi d'un then (quelque chose) lancera le fameux quelque
chose suscité si la condition est vérifiée. Un peu comme en C, quoi. </p>
<p>De cette façon, et avec quelques informations et connaissances, il est
facile de comprendre le fonctionnement de la programmation en bash.
Quelques exemples commentés:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash </span>
<span class="c"># La ligne du dessus est très importante, c&#39;est elle qui dit a bash quel doit être </span>
<span class="c"># l&#39;interpreteur des commandes écrites dans ce script. Ici, on dit a bash d&#39;interpréter </span>
<span class="c"># lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire </span>
<span class="c"># executer du python, par exemple, en mettant #!/usr/bin/python a la place.</span>
<span class="nb">echo</span> <span class="s2">&quot;this is a test of bash as a simple script manager&quot;</span> <span class="c"># echo est une commande d&#39;affichage de message.</span>
<span class="nb">echo</span> <span class="s2">&quot;what&#39;s your name, user?&quot;</span>
<span class="nb">read </span>your_name <span class="c"># la commande read permet de demander a l&#39;utilisateur de donner une </span>
<span class="c"># information, stockée dans la variable en paramètre. </span>
<span class="nb">echo</span> <span class="nv">$your_name</span> <span class="s2">&quot;is your name&quot;</span> <span class="c"># echo permet aussi d&#39;afficher la valeur de variables. </span>
<span class="c"># Ici, on renvoie la variable remplie précédemment, suivie d&#39;un message. </span>
<span class="nb">exit</span> <span class="c"># cet appel a exit n&#39;est pas obligatoire, mais donne un aspect plus </span>
<span class="c"># propre au code. Il ne quittera pas la session de terminal, cependant.</span>
</pre></div>
</td></tr></table>
<p>Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite
d'être clair quand aux capacités et a la simplicité du bash en tant que
language de programmation. Alors en effet, nous n'avons ici absolument
pas utilisé les capacités de bash en lui même, et n'avons fait que le
renvoyer a des programmes externes (sauf read, il est vrai). Voyons
maintenant la syntaxe de bash quand il s'agit d'utiliser les structures
de contrôle:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash </span>
<span class="nb">echo</span> <span class="s2">&quot;welcome to this second bash program. would you please kindly enter the name of the machine you&#39;re running this on?&quot;</span>
<span class="nb">read </span>host_name
<span class="k">if</span> <span class="o">[</span> <span class="nv">$host_name</span> <span class="o">==</span> <span class="nv">$HOSTNAME</span> <span class="o">]</span> <span class="c">## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système. </span>
<span class="k">then </span><span class="nb">echo</span> <span class="s2">&quot;you told the truth!&quot;</span>
<span class="k">fi</span> <span class="c">## le fi est la commande fermant le if, tout comme le EndIf en basic. C&#39;est un peu vieillot, mais important en bash. </span>
<span class="k">if</span> <span class="o">[</span> <span class="nv">$host_name</span> !<span class="o">=</span> <span class="nv">$HOSTNAME</span> <span class="o">]</span> <span class="c">## l&#39;opérateur != est l&#39;inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes. </span>
<span class="k">then </span><span class="nb">echo</span> <span class="s2">&quot;you lied!&quot;</span>
<span class="k">fi </span>
<span class="nb">exit</span>
</pre></div>
</td></tr></table>
<p>Voila un petit programme permettant d'apprendre la syntaxe du if en
bash. comme vous pouvez le voir, le language est plutôt lite, et la
structure if n'est pas très difficile a prendre en main.</p>
<p>Passons maintenant au while:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4
5
6
7</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash</span>
<span class="nb">echo</span> <span class="s2">&quot;what is your name?&quot;</span>
<span class="nb">read </span>name
<span class="k">while</span> <span class="o">[</span> 1 &lt; 10 <span class="o">]</span> <span class="c">## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.</span>
<span class="k">do </span><span class="nb">echo</span> <span class="s2">&quot;i love&quot;</span> <span class="nv">$name</span>
<span class="k">done</span>
<span class="nb">exit</span>
</pre></div>
</td></tr></table>
<p>Ce petit programme permet d'observer les bases de while (qui est la
boucle de base en bash).</p>
<p>Le troisième opérateur de bash est case. Voyons:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash</span>
<span class="nb">echo</span> <span class="s2">&quot;please enter a number between one and five&quot;</span>
<span class="nb">read </span>number
<span class="k">case</span> <span class="nv">$number</span> in
1<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was one&quot;</span>
;;
2<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was two&quot;</span>
;;
3<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was three&quot;</span>
;;
4<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was four&quot;</span>
;;
5<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;the choosen number was five&quot;</span>
;;
*<span class="o">)</span>
<span class="nb">echo</span> <span class="s2">&quot;this number is not correct&quot;</span>
;;
<span class="k">esac</span>
<span class="nb">exit</span>
</pre></div>
</td></tr></table>
<p>case est un opérateur plus complexe a utiliser a bon escient, et sert a
faire des ifs multiples sans avoir a taper des dizaines de lignes de
code.<br />
(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre
que le code vérifie chacune des conditions : le 1) est validé si la
valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc..
le *) désigne toutes les valeurs, et est donc validé si aucune autre
valeur n'a précédemment acceptée.</p>
<p>Quelques notions manquent ici:<br />
- les nombres aléatoires sont générés par un appel a la variable
\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a
16 bits donc). il est possible de faire des invocations a des nombres
aléatoires plus grands, mais les méthodes permettant de faire cela sont
plus complexes, et je ne les aborderai donc pas ici.<br />
- comme vous avez pu le constater, les variables sont désignées en tant
que telles par l'utilisation d'un symbole \$ au début de leur nom.
Ainsi, echo number renverra "number", tandis que echo \$number renverra
le résultat de la variable \$number.<br />
être utilisées dans un programme bash.<br />
- comme vous avez pu le constater, les commandes doivent tenir en
théorie en une ligne. Cependant, le caractère \ permet de retourner a
la ligne en faisant considérer a bash qu'il s'agit de la même ligne.</p>
<p>Globalement, il faut admettre que bash n'a pas vocation a être un
langage de programmation extrêmement développé. Sans framework
graphique, avec peu de manières d'utiliser de grandes variables, ou
encore une gestion de la mémoire risible, bash n'a rien d'un langage de
développement professionnel.<br />
Cependant, le simple fait qu'il soit considéré comme un langage de
programmation a part entière font de lui un langage de script d'une
puissance incontestable, et sa simplicité et sa grande popularité font
de lui un langage de choix pour apprendre la programmation simplement et
sans trop se prendre la tête.</p>
<p>J'espère que cet article aura été utile a certain-e-s, et je vous
souhaite bonne chance dans votre découverte de la programmation (n'allez
pas voir ceux qui font de l'orienté objet, c'est des méchants :3)</p>
</div><!-- /.entry-content -->
</article>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,383 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>La cryptographie avec PGP et principalement GnuPG</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<section id="content">
<article>
<header>
<h1>
<a href=""
rel="bookmark"
title="Permalink to La cryptographie avec PGP et principalement GnuPG">La cryptographie avec PGP et principalement GnuPG</a>
</h1>
</header>
<div class="entry-content">
<div class="well">
<footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-11-19T00:36:00+01:00">
<i class="icon-calendar"></i> Mon 19 November 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/"><i class="icon-folder-open"></i>Tutoriel</a>
<br />
</footer><!-- /.post-info --> </div>
<p>PGP (pour <a href="http://fr.wikipedia.org/wiki/Pretty_Good_Privacy">pretty good privacy</a>) est un système de
chiffrement asymétrique (pour plus d'information sur le chiffrement
asymétrique, voir <a href="http://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique">ici</a>) utilisant en général les algorithmes RSA
et/ou DSA, et pouvant servir a chiffrer tout fichier, mais aussi a
signer des emails. Le système de signature consiste a s'identifier en
tant que la personne que l'on est, en certifiant de son identité, et
repose sur un système dit de <em>Web of Trust</em>. </p>
<p>Ce concept de Web of Trust est simple: si je valide le code vous
identifiant (votre clé), en certifiant que vous êtes qui vous êtes et
que je vous connais, et que d'autres personnes m'ont déjà
personnellement validé, les autres utilisateurs seront enclins a croire
que vous êtes en effet la personne que vous prétendez être. Bien
entendu, les utilisateurs validant trop de clés rapportées comme fausses
voient la valeur de leurs signatures baissée, et toutes les clés signées
par ces utilisateurs voient leur crédibilité baisser.<br />
Inversement, les "bons utilisateurs" voient la valeur de leurs
signatures augmentée, ce qui augmente la crédibilité des clés qu'ils ont
signées.</p>
<p>Ceci dit, un email peut être a la fois signé et chiffré, de façon a être
sûr, non seulement que lexpéditeur de l'email est bien celui qu'il dit
être, mais aussi que l'email n'a pas été modifié entre l'envoi et
la réception (en effet, avec un chiffrement de type RSA/DSA, une
modification du corps de l'email rend ce dernier illisible, la clé
publique ne  correspondant plus a la phrase de passe du message), ce qui
offre bien évidemment des avantages non négligeables dans un
environnement ou la protection des échanges est importante (soit a peu
près partout sur internet, si vous tenez a votre vie privée. Pensez a
<a href="http://www.hauteresolution.net/pourquoi-je-vais-quitter-gmail/">quitter Gmail</a> aussi, par exemple).</p>
<p>Il est cependant a noter que les clés publiques sont généralement
situées sur un serveur de clés publiques, tel pgp.mit.edu ou encore
subkeys.pgp.net (certaines personnes préfèrent garder leur clés hors des
serveurs de clés publiques, craignant une compromission de ces serveurs.
Dans le cas d'utilisateurs normaux (c'est a dire n'échangeant pas de
secrets classés secret-défense par email), la protection offerte par les
serveurs de clé publiques est suffisante)</p>
<p>L'une des implémentations les plus connues et utilisées de PGP est sans
conteste GPG (<a href="http://fr.wikipedia.org/wiki/GNU_Privacy_Guard">GNU Privacy Guard</a>) , qui comme son nom l'indique fait
partie du projet GNU, et qui (<code>&lt;troll&gt;</code> de façon surprenante pour un
programme GNU<code>&lt;/troll&gt;</code>) est extrêmement efficace et claire.</p>
<p>Après ces explications techniques, voici venue le
moment intéressant/utile, a savoir l'application. Le chiffrement et la
signature de mails doivent cependant attendre un petit peu, étant donné
qu'il vous faut d'abord créer votre clé et la placer sur un serveur de
clés publiques, de façon à ce que votre destinataire puisse vous
identifier lorsqu'il recevra le mail, mais aussi a configurer votre
client mail pour utiliser gpg (je baserai les explications de cet
article sur Thunderbird, mais des explications efficaces sont trouvables
facilement sur les interwebs).</p>
<p>Tout d'abord, générons une clé GPG :</p>
<div class="highlight"><pre> <span class="n">gpg</span> <span class="o">--</span><span class="n">gen</span><span class="o">-</span><span class="n">key</span>
</pre></div>
<p>GPG va vous demander les méthodes de chiffrement que vous voulez
utiliser, le plus sur est de laisser la valeur par défaut. La question
suivante est de savoir quelle taille votre clé doit faire, il est
préférable de choisir la taille la plus importante possible (4096). GPG
veut ensuite savoir quand votre clé doit expirer. La méthode simple est
bien évidemment de ne jamais la faire expirer, il est cependant plus
intéressant dans une logique de sécurité de régler cette durée a six
mois/un an. </p>
<p>Des informations personnelles vous sont ensuite demandées,
concernant votre nom (mettez le vrai, tel qu'il apparaît sur votre carte
d'identité, si vous souhaitez utiliser votre véritable identité), votre
adresse mail (mettez la plus utilisée, vous pourrez en rajouter plus
tard), et un mot de passe pour la clé (utilisez un mot de passe
sécurisé!! Il est conseillé d'utiliser au moins 8 caractères, dont majuscules,
minuscules, caractères spéciaux et nombres (vous pouvez utiliser la
commande <code>makepasswd</code>, qui génère automatiquement un mot de
passe) </p>
<p>GPG va maintenant prendre un peu de temps pour générer le couple clé
publique/clé privée, vous devriez profiter de ce temps pour effectuer
des opérations autres sur votre ordinateur : taper des textes, lancer
des films, écouter de la musique... De façon à augmenter les chances
d'obtenir un nombre bien aléatoire (le générateur d'aléatoire se base
sur la RAM pour obtenir des bits au hasard) </p>
<p>Une fois cela fini, vous obtenez un couple clé publique/clé privée, que
vous ne pouvez pas visualiser entièrement pour l'instant. Il est
cependant possible (et recommandé) de les exporter pour les sauvegarder
via une commande:</p>
<div class="highlight"><pre><span class="n">gpg</span> <span class="o">--</span><span class="n">armor</span> <span class="o">--</span><span class="n">export</span> <span class="o">--</span><span class="n">output</span><span class="o">=</span><span class="n">pubkey</span><span class="p">.</span><span class="n">gpg</span>
</pre></div>
<p>pour la clé publique, et</p>
<div class="highlight"><pre><span class="n">gpg</span> <span class="o">--</span><span class="n">armor</span> <span class="o">--</span><span class="n">export</span><span class="o">-</span><span class="n">secret</span><span class="o">-</span><span class="n">keys</span> <span class="o">--</span><span class="n">output</span><span class="o">=</span><span class="n">seckey</span><span class="p">.</span><span class="n">gpg</span>
</pre></div>
<p>pour la clé privée. Il est possible et même souhaitable de copier ces
clés sur une clé USB, une carte SD, ou un autre support de stockage
résistant, de façon a avoir une solution de sauvegarde, au cas ou vous
perdiez ces clés sur ce PC. </p>
<p>Cela fait, listons les informations sur votre clé publique :</p>
<div class="highlight"><pre><span class="err">$</span> <span class="n">gpg</span> <span class="o">--</span><span class="n">list</span><span class="o">-</span><span class="n">keys</span> <span class="o">--</span><span class="n">fingerprint</span>
<span class="n">pub</span> <span class="mi">4096</span><span class="n">R</span><span class="o">/</span><span class="mi">27</span><span class="n">D81AC8</span> <span class="mi">2012</span><span class="o">-</span><span class="mi">11</span><span class="o">-</span><span class="mi">17</span>
<span class="n">Key</span> <span class="n">fingerprint</span> <span class="o">=</span> <span class="mi">6345</span> <span class="n">A91A</span> <span class="n">FF89</span> <span class="mf">97E0</span> <span class="mi">13</span><span class="n">D0</span> <span class="mi">96</span><span class="n">A9</span> <span class="mf">9E2</span><span class="n">A</span> <span class="mi">1917</span> <span class="mi">27</span><span class="n">D8</span> <span class="mi">1</span><span class="n">AC8</span>
<span class="n">uid</span> <span class="n">Cl</span><span class="err">é</span><span class="n">ment</span> <span class="n">Hertling</span> <span class="p">(</span><span class="n">Wxcafe</span><span class="p">)</span>
<span class="n">uid</span> <span class="p">[</span><span class="n">jpeg</span> <span class="n">image</span> <span class="n">of</span> <span class="n">size</span> <span class="mi">14692</span><span class="p">]</span>
<span class="n">sub</span> <span class="mi">4096</span><span class="n">R</span><span class="o">/</span><span class="mi">9</span><span class="n">ED7F77F</span> <span class="mi">2012</span><span class="o">-</span><span class="mi">11</span><span class="o">-</span><span class="mi">17</span>
</pre></div>
<p>La partie <code>pub</code> indique que c'est une clé publique, <code>4096R</code> indique que c'est
une clé RSA sur 4096 bits. La partie <code>27D81AC8</code> est
l'identifiant de la clé publique, <code>Key fingerprint = 6345 A91A FF89 97E0 13D0
96A9 9E2A 1917 27D8 1AC8</code> est appelé fingerprint de la clé. Les champs
<code>uid</code> sont des manières d'identifier la clé et la personne associée a
celle-ci, et enfin le champ <code>sub</code> est indicateur d'une subkey, système
uniquement pris en charge par GPG et non inclus dans les premières
versions de PGP, donc non-implémentées dans nombre de clients pgp.<br />
Passons maintenant a la mise en place de cette clé publique sur un
serveur de clés : nous utiliserons ici le serveur pgp.mit.edu.</p>
<div class="highlight"><pre><span class="n">gpg</span> <span class="o">--</span><span class="n">keyserver</span> <span class="n">pgp</span><span class="p">.</span><span class="n">mit</span><span class="p">.</span><span class="n">edu</span> <span class="o">--</span><span class="n">send</span><span class="o">-</span><span class="n">keys</span> <span class="o">*</span><span class="n">ID</span> <span class="n">de</span> <span class="n">la</span> <span class="n">cl</span><span class="err">é</span> <span class="n">a</span> <span class="n">uploader</span><span class="o">*</span>
</pre></div>
<p>Maintenant que votre clé publique a été uploadée, vous pouvez l'utiliser
pour signer et chiffrer vos emails!<br />
Installons donc l'extension Enigmail pour Thunderbird, permettant de
chiffrer/signer vos emails de façon transparente. Il conviendra de
paramétrer cette extension, via le menu OpenPGP dans Thunderbird, puis
Setup Wizard (l'option entre Help et About OpenPGP). Normalement,
Enigmail détecte votre installation de gpg automatiquement, si cependant
ce n'était pas le cas, vous pouvez utiliser la clé exportée tout a
l'heure (pubkey.gpg) en l'important (import key from file). </p>
<p>Selon les options que vous avez utilisées, vos emails seront
automatiquement signés et/ou chiffrés a l'envoi. Gardez cependant a
l'esprit que si tout le monde peut lire les mails signés, il n'en est
pas de même pour les mails chiffrés, pour lesquels il est nécessaire de
posséder la clé publique du correspondant en question, et de posséder
soi même une clé privée, donc d'utiliser OpenPGP aussi.<br />
Concernant les signatures de clés, elles fonctionnent de manière très
simple :<br />
Vous devez télécharger la clé de votre correspondant, via un</p>
<div class="highlight"><pre> <span class="n">gpg</span> <span class="o">--</span><span class="n">keyserver</span> <span class="n">pgp</span><span class="p">.</span><span class="n">mit</span><span class="p">.</span><span class="n">edu</span> <span class="o">--</span><span class="n">search</span><span class="o">-</span><span class="n">keys</span> <span class="o">*</span><span class="n">ID</span> <span class="n">de</span> <span class="n">la</span> <span class="n">cl</span><span class="err">é</span> <span class="n">de</span> <span class="n">votre</span> <span class="n">correspondant</span><span class="o">*</span>
</pre></div>
<p>(a noter que cette commande fonctionne aussi en cherchant une adresse
email ou un nom. Cependant, en cherchant via l'identifiant de la clé,
vous êtes sur de trouver votre correspondant. Globalement, l'email est
lui aussi assez sûr en terme de recherche de clés, tandis que le nom
donne rarement un résultat). L'étape suivante est de vérifier que votre
correspondant est bien la personne qui est spécifiée sur sa clé. Pour
cela, il convient d'avoir déjà vu physiquement cette personne et si
possible d'avoir vu une pièce d'identité lui appartenant, et d'avoir une
confirmation de cette personne que la clé que vous voyez lui appartient
bien.<br />
Ceci fait, vous pouvez signer la clé via un</p>
<div class="highlight"><pre> <span class="n">gpg</span> <span class="o">--</span><span class="n">sign</span> <span class="o">*</span><span class="n">ID</span> <span class="n">de</span> <span class="n">la</span> <span class="n">cl</span><span class="err">é</span> <span class="n">a</span> <span class="n">signer</span><span class="o">*</span>
</pre></div>
<p>puis la renvoyer au serveur via</p>
<div class="highlight"><pre> <span class="n">gpg</span> <span class="o">--</span><span class="n">keyserver</span> <span class="n">pgp</span><span class="p">.</span><span class="n">mit</span><span class="p">.</span><span class="n">edu</span> <span class="o">--</span><span class="n">send</span><span class="o">-</span><span class="n">key</span> <span class="o">*</span><span class="n">ID</span> <span class="n">de</span> <span class="n">la</span> <span class="n">cl</span><span class="err">é</span> <span class="n">a</span> <span class="n">signer</span><span class="o">*</span>
</pre></div>
<p>Voila, la clé de votre correspondant est signée!</p>
<p>Ce tutoriel sur PGP/GPG est terminé, et votre sécurité est améliorée
grâce a cette superbe invention qu'est la cryptographie!</p>
</div><!-- /.entry-content -->
</article>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,284 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>La programmation expliquée simplement</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<section id="content">
<article>
<header>
<h1>
<a href=""
rel="bookmark"
title="Permalink to La programmation expliquée simplement">La programmation expliquée simplement</a>
</h1>
</header>
<div class="entry-content">
<div class="well">
<footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-08-27T00:22:00+02:00">
<i class="icon-calendar"></i> Mon 27 August 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --> </div>
<p>Salut!<br />
Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire
récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé
pas mal de temps assez occupé. </p>
<p>Enfin, après un certain temps a farfouiller au millieu des connecteurs
SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques
durs, je suis de retour pour un court article.<br />
Du coup, je m'étais dit que j'allais reprendre sur le thème de
l'informatique expliquée au grand public, en tentant d'aller un peu plus
loin que la dernière fois sur le thème de la programmation<br />
Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur.
Si a peu près tout le monde sait que "les ordinateurs, ils ne
comprennent que les 1 et les 0!", peu de gens savent comment cela
fonctionne en détail. </p>
<p>Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà
des notions de base en informatique. Ainsi, vous savez surement que les
ordinateurs fonctionnent avec des programmes, qui sont composés de
code.<br />
Ainsi, il faut comprendre que le code (source) est "compilé" en un
fichier "binaire". Un fichier binaire est un fichier comprenant les
instructions telles quexécutées par le processeur, et donc absolument
illisible pour un humain. </p>
<p>La compilation est le processus qui transforme le code source en
binaire executable. Les binaires ont, sous Windows, l'extension .exe,
tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension
particulière.<br />
Ceci étant dit, il faut comprendre que certains langages sont plus
proches que d'autres du langage processeur, les langages les plus
proches sont dits de "bas niveau". Les langages les plus éloignés sont
donc dits de haut niveau. </p>
<p>Par exemple, l'assembleur est l'un des languages de plus bas niveau,
tandis que python par exemple est un langage de plus haut niveau. Les
langages de haut niveau sont souvent bien plus simples a comprendre et a
apprendre que les langages de bas niveau </p>
<p>Ainsi, en C, un langage de niveau relativement bas, pour afficher
"hello world" sur l'écran, le code nécessaire est :</p>
<div class="highlight"><pre><span class="cp">#include </span>
<span class="kt">void</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="n">printf</span><span class="p">(</span><span class="s">&quot;hello world&quot;</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
<p>le même programme en python s'écrit :</p>
<div class="highlight"><pre><span class="n">print</span> <span class="s">&quot;hello world&quot;</span>
</pre></div>
<p>et n'a pas besoin d'être compilé , puisqu'il peut être intepreté
directement. </p>
<p>Python utilise en effet un système similaire a Java en ayant un
interpréteur dit "runtime" ou "temps réel", qui interprète le programme
sans le compiler. Java utilise un système légèrement différent, puisque
le code a besoin d'être compilé, mais est interpreté par un interpréteur
et non par le processeur. </p>
<p>Cette méthode permet le fameux "code once, run everywhere", ce qui
signifie que le même code est exécutable sur quasiment tous les systèmes
d'exploitation (en fait, tous ceux sur lesquels linterpréteur est
disponible.)</p>
<p>Voila, je vous laisse sur le fonctionnement de Java et de Python, et je
vais me coucher.<br />
A bientôt!</p>
</div><!-- /.entry-content -->
</article>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,313 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>La séparation des églises et de l'état, une idée qu'elle est bonne?</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<section id="content">
<article>
<header>
<h1>
<a href=""
rel="bookmark"
title="Permalink to La séparation des églises et de l'état, une idée qu'elle est bonne?">La séparation des églises et de l'état, une idée qu'elle est bonne?</a>
</h1>
</header>
<div class="entry-content">
<div class="well">
<footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-12-13T03:08:00+01:00">
<i class="icon-calendar"></i> Thu 13 December 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/"><i class="icon-folder-open"></i>Ranting</a>
<br />
</footer><!-- /.post-info --> </div>
<p>Aujourd'hui, et depuis 1901 (j'ai révisé mon histoire récemment), il
existe une loi dite de séparation des églises et de l'état, qui consiste
a faire en sorte que l'état n'ait rien a voir avec les differentes
églises, pour de sombres histoires d'indépendance et de laïcité.
(principes qui sont aujourd'hui en voie de disparition, mais ce n'est
pas le propos qui nous occupe ici). Cela dit, cette bonne idée
politique, si elle a évité a ses auteurs de nombreux tracas, et leur a
surement permis de conserver une tête en état de fonctionnement bien
reliée a leur colonne vertébrale, ne vous interesse que moyennement, et
vous voudriez retourner répondre a vos mails sur Gmail et micro-blogguer
(quel mot horrible...) sur twitter?</p>
<p>Ça tombe bien, vous abordez justement le sujet véritable de cet article
(non, mon blog n'est pas devenu un histoblog, désolé aux déçus...), a savoir
la centralisation qui se met progressivement en place sur internet depuis
quelques années : Twitter, Google, Facebook, Micro$oft, Apple, tous ces
acteurs du web (et pas que, pour certains...) ont commencé a prendre
pour manie de centraliser vos données : pour prendre un exemple simple,
si vous utilisez Gmail (qui depuis quelque temps, lit aussi vos mails
pour accorder la publicité, dites adieu a votre vie privée), vous avez
un compte Google Talk, probablement aussi un Google+. </p>
<p>L'outil le plus pratique aujourd'hui pour aggreger des flux RSS est
Google Reader, et vous l'utilisez aussi probablement. Votre téléphone
est un android? Ah, un Nexus? Vous avez donc toutes les applications
google installées, et Chrome mobile comme navigateur par défaut, qui est
synchronisé avec la version qui tourne sur votre PC (via les serveurs de
Google, bien sur).
Depuis peu, les recherches sur le moteur de recherche
sont elles aussi ajoutées a votre profil, enregistrées a jamais par
Google (qui n'est pas touchée, en tant que société américaine, par la
"loi des 10 ans" francaise.). Vous commencez a voir le truc? Non, ne
jetez pas ce telephone, enfin! (je refuse de rembourser tout smartphone
ayant été perdu a cause de cet article) J'ai pris ici comme exemple
Google, parce que c'est celui qui propose le plus de services, mais
Apple avec iCloud, iTunes et son iPhone fait pareil, tout comme M$ avec
WP8 et Skydrive. </p>
<p>Twitter et Facebook n'ont de rôle dans ce sujet qu'en ce que vous leur
fournissez des informations dont ils s'empressent de devenir seuls
propriétaires (cf les Conditions d'Utilisation de ces deux services),
puis de les revendre a des annonceurs faisant de la publicité
ciblée. Le problème est simple a apprehender, vous ne voulez pas que
l'un de ces services connaisse trop de choses sur vous (et ils recoupent
très bien les informations venant de sources differentes), car il est
évident qu'ils les vendent a des entreprises peu scrupuleuses quand
a leurs engagements de confidentialité, quand a leurs securité
aussi; mais surtout parce que depuis le 11 Septembre 2001 et le
Patriot Act, toute entreprise américaine <strong>doit</strong>fournir toutes ses
informations au gouvernement américain <strong>sans aucune intervention d'un
juge, ou de quelque institution de controle que ce soit.</strong> </p>
<p>Ce qui est, comme vous pouvez le comprendre, relativement
problématique. (pour ceux qui a ce point se disent "je n'ai rien a
cacher, donc je m'en fous si le gouvernement américain sait tout de
moi", je vous conseille d'aller lire <a href="http://www.internetactu.net/2009/03/12/la-vie-privee-un-probleme-de-vieux-cons/">cet article</a> de Jean Marc
Manach, plein de bon sens...) Pour éviter cela, vous avez plusieurs
possibilités: utiliser des services concurrents pour tout (Facebook
Mail, Skydrive, Twitter et Google Reader par exemple), tout en vous
souvenant que comme ces entreprises sont toutes américaines, le
gouvenrnement américain détient tout de même vos informations, et que ca
lui prendra juste un peu plus de temps. </p>
<p>Vous pouvez aussi n'utiliser que des entreprises francaises,
mais cela ne regle que le problème du Patriot Act, et pas celui de
la revente de vos données. Et puis essayez de trouver un service équivalent
a Google Reader et fourni par une entreprise française, on en reparlera.
Non, la véritable alternative, c'est d'héberger vos services vous
même, d'avoir votre propre serveur sur lequel vous possedez le plus
de services possibles, et d'utiliser des concurents ou des services
libres au maximum pour les autres, ceux qui ne sont pas distribuables
(par exemple, les cartes sont difficiles a mettre en commun,
or plusieurs alternatives existent: Google Maps, <code>&lt;troll&gt;</code>Apple
Maps<code>&lt;/troll&gt;</code>, Bing Maps, OpenStreetMaps, etc...).
Beaucoup de ces services sont cependant très facilement
décentralisables, surement parce qu'ils ont a la base étés conçus comme
des services décentralisés. Ainsi les emails, le web, le chat (via XMPP)
par exemple sont basés sur un système décentralisé. </p>
<p>De plus, votre serveur peut vous servir a beaucoup d'autres des
choses que vous feriez habituellement sur votre ordinateur
personnel: conserver une présence sur IRC, compiler du code, faire
du rendu vidéo, etc... En bref, un serveur peut vous servir
a effectuer toutes les opérations que vous effectuez sur votre
ordinateur sans les inconvénients de la consommation éléctrique
ni du bruit, mais vous permet aussi de ne dépendre aucunement
d'une entreprise américaine, et cependant de disposer de tous les
services utiles offerts par ces dernières. </p>
<p>Un serveur peut de plus vous permettre de controller parfaitement
tous ces services, sans aucune limitation d'aucune sorte,
voire de vous créer une page web. Bien entendu, il est bien plus
utile d'avoir un serveur si vous avez aussi un nom de domaine.
Heureusement, ils sont peu chers et souvent fournis avec le serveur. </p>
<p>Dans de prochains articles, je vous expliquerai comment louer puis
configurer votre serveur pour qu'il serve de serveur mail (IMAP/SMTP),
web, base de données, et proxy. Cela dit, comme c'est un serveur sous
linux, vous pouvez l'utiliser pour a peu près n'importe quoi.<br />
Voila, a bientôt!</p>
</div><!-- /.entry-content -->
</article>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,250 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Le Quenya - Épisode ø</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<section id="content">
<article>
<header>
<h1>
<a href=""
rel="bookmark"
title="Permalink to Le Quenya - Épisode ø">Le Quenya - Épisode ø</a>
</h1>
</header>
<div class="entry-content">
<div class="well">
<footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-18T19:07:00+02:00">
<i class="icon-calendar"></i> Tue 18 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/"><i class="icon-folder-open"></i>Language</a>
<br />
</footer><!-- /.post-info --> </div>
<p>Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusquà il y
a peu...), le nom que donnait Tolkien au dialecte principal parlé par
les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des
Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte
avant de commencer cet article que l'une des œuvres les plus
impressionnantes de Tolkien, si ce n'est la plus grande, est
l'impressionnant travail linguistique passé sur les différentes langues
présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya,
la langue des nains, qui est appelé le khazalide, etc. </p>
<p>En effet, a contrario des "langues" développées dans d'autres œuvres littéraires
telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot
de français (ou d'anglais) a un mot de sa "langue", les langues de
l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des
racines logiques, des systèmes de grammaire et de conjugaison propres,
une logique inhérente dans la prononciation ou l'orthographe, et ainsi
de suite. </p>
<p>Un véritable rêve de linguiste donc, puisque ces langues sont
pratiquement entièrement documentées par Tolkien lui même (voir
l'appendice E du SdA, particulièrement instructif a ce sujet.)</p>
<p>J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster
ici des résumés des cours que je suis ( disponibles <a href="http://folk.uib.no/hnohf/qcourse.htm">ici</a> , une
traduction en français est disponible <a href="http://www.ambar-eldaron.com/telechargements/integraleshelge.pdf">la</a> en pdf ), et des infos ici
toutes les deux semaines.</p>
<p>Si ce sujet vous intéresse, le compte twitter @Quenya101 poste
régulièrement des informations sur le sujet, et pour plus d'infos sur le
sujet, vous pouvez en trouver <a href="olk.uib.no/hnohf/quenya.htm">par ici</a>.</p>
<p>Et en tant que première leçon, vous pouvez apprendre que ce mot que vous
avez prononcé comme le Kenya tout le long de cet article se prononce en
fait [Kwenïa], ou bien Qwenya!</p>
</div><!-- /.entry-content -->
</article>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,292 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Les différentes couches d'un système d'exploitation</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<section id="content">
<article>
<header>
<h1>
<a href=""
rel="bookmark"
title="Permalink to Les différentes couches d'un système d'exploitation">Les différentes couches d'un système d'exploitation</a>
</h1>
</header>
<div class="entry-content">
<div class="well">
<footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-06T23:29:00+02:00">
<i class="icon-calendar"></i> Thu 06 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --> </div>
<p>Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques
années (plus ou moins, parce que j'ai toujours un Windows en dual boot,
principalement pour les jeux (possiblement plus pour longtemps, avec
l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou
moins bien mon système. Or il y a plusieurs choses a savoir sur les
systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est
le système de couches.</p>
<p>Un système d'exploitation (de type UNIX, \&lt;troll>enfin un vrai système quoi.
\&lt;/troll>) incorpore plusieurs systèmes de couches.</p>
<p>Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique,
c'est a dire que tous les composants sont intégrés au kernel. Ce qui
signifie que rien ne peut être ajouté au noyau sans recompiler celui ci.
Or, quand on sait que le noyau comprend entre autres les drivers du
matériel et des systèmes de fichier, cela peut poser des problèmes quand
a la taille du kernel et a la licence libre de ce dernier. </p>
<p>Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui
signifie que des modules peuvent être chargé a tout moment en cours
dexécution, ce qui permet l'utilisation de nouveaux systèmes de
fichiers a chaud, ou l'insertion de matériel et l'installation de
drivers sans interrompre lexécution du système (Windows utilise un
système de fausse installation de drivers pour le matériel externe, et
un système de pré-installation des drivers pour les périphériques dits
"plug and play")</p>
<p>Après le noyau intervient le système. Or, au tous premiers instants du
boot, les systèmes GNU/Linux utilisent un système permettant de limiter
l'utilisation de ressources systèmes si elles ne sont pas nécessaires,
et incorpore ainsi un système dit de "runlevels"</p>
<p>Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce
runlevel permet de tester le bon démarrage du système sans avoir a
effectuer de manipulation pour le ré-éteindre</p>
<p>Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté
étant donné que ce runlevel donne accès a un système en étant
automatiquement loggé en tant que root, avec tous les autres
utilisateurs désactivés, de même que tous les systèmes de réseaux</p>
<p>Le runlevel 2 est appelé mode multi user, et vous mets en face d'un
système classique. en ligne de commande, mais avec tous les systèmes de
réseau désactivés.</p>
<p>Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux
activés.</p>
<p>Le runlevel 4 n'est pas officiellement défini, et est censé être
activable en fonction des besoins de l'utilisateur. Sur la plupart des
distributions grand public, ce runlevel est lié au...</p>
<p>Runlevel 5! Multi-user, networking, with working GUI! c'est le système
tel que vous le connaissez, avec l'interface graphique et le système de
login graphique.</p>
<p>Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine
quand il devient le runlevel courant.</p>
<p>(Il est a noter que Debian, et donc toutes les distribs qui en sont
dérivées, ne font pas de distinction entre les differents runlevels du 2
au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login
et une interface graphique, et un mode réseau fonctionnel, bref avec des
fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)</p>
<p>Il est possible de changer de runlevel grâce a la commande runlevel
(oui, c'est évident...)</p>
<p>Les systèmes Linux utilisent aussi un système dit de SandBox , qui en
informatique est un système permettant d'isoler les processus les uns
des autres. Ainsi, la pile réseau, qui est le système auquel les
différents processus envoient les différents paquets qui doivent sortir
de la machine , et qui redistribue ces paquets, est isolée du reste du
système, en cela qu'aucun des autres processus ne peuvent modifier cette
pile hors du runlevel 1 ou 2.</p>
<p>De la même façon, le navigateur chrom/ium fait fonctionner tous les
onglets, ainsi que toutes les extensions, dans des processus différents.
Certaines distributions linux implémentent un système de cette sorte
pour toutes les applications, ou seulement pour certaines. ainsi Chakra
Linux a un système d'installation d'applications dans des disques
virtuels, ce qui permet une sécurité totale du processus.</p>
<p>Voila, j'espère vous en avoir appris un peu sur le fonctionnement des
différentes couches de linux, et j'espère que cet article vous poussera
a tester un peu votre système et a vous amuser avec les différents
runlevels</p>
</div><!-- /.entry-content -->
</article>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,336 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Les systèmes de fichiers</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<section id="content">
<article>
<header>
<h1>
<a href=""
rel="bookmark"
title="Permalink to Les systèmes de fichiers">Les systèmes de fichiers</a>
</h1>
</header>
<div class="entry-content">
<div class="well">
<footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-25T10:28:00+02:00">
<i class="icon-calendar"></i> Tue 25 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/"><i class="icon-folder-open"></i>Teaching</a>
<br />
</footer><!-- /.post-info --> </div>
<p>Un système de fichiers. Vous en avez surement déjà entendu parlé si vous
avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous
connaissez surement NTFS, EXT4, ou encore FAT32.</p>
<p>Ces différents noms désignent en effet des systèmes de fichiers. Mais
qu'est-ce qu'un système de fichiers?</p>
<p>Pour comprendre cela, il faut déjà savoir ce qu'est exactement un
fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la
plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio
(<a href="http://fr.wikipedia.org/wiki/Kibioctet#Multiples_normalis.C3.A9s">kibioctet</a>), en fonction du système de fichier utilisé.), qui est
donc composé de bits, interprétés différemment en fonction du type de
fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il
n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent,
ou il commence ni où il s'arrête (je schématise un peu, mais c'est
l'idée). </p>
<p>Ainsi, le système de fichier donne un cadre et un standard à
l'arborescence des fichiers. Par exemple, le système de fichier ext4
utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de
disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio
et mesurer la taille des fichiers en blocs de cette façon. Les systèmes
de fichiers nécessitent l'inclusion de drivers dans le noyau pour
pouvoir être pris en compte. </p>
<p>Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs,
reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu
près tout type de partition récente.</p>
<p>Il convient de bien faire la différence entre le système de fichier et
l'arborescence des fichiers. Si l'arborescence des fichiers est en fait
une entité virtuelle englobant la racine / et tous les fichiers et
dossiers contenus dedans, le système de fichier permet a votre système
GNU/Linux de distinguer les différents fichiers composants cette
arborescence.</p>
<p>Détaillons maintenant les types de fichiers les plus répandus:</p>
<ul>
<li>
<p>FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table,
soit la définition d'un système de fichier), remplissent leur rôle le
plus simplement possible. Ne permettant (historiquement) que des noms de
8 caractères (plus extension de trois caractères), ni chiffrement, ni
système de distinction d'utilisateurs (DOS étant un système
mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32,
utlisants respectivement des blocs de 16 et 32 Kio.</p>
</li>
<li>
<p>NTFS :. Le NTFS (pour New Technology File System, rapport a Windows
NT) est un système de fichier qui est apparu avec Windows XP, et qui
était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a
FAT différentes capacités dont le chiffrement, les liens symboliques, la
compression et les quotas pour les volumes, permettant de limiter la
taille maximum occupée dans une partition.</p>
</li>
<li>
<p>ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012.
Ne différant pas énormément de NTFS, je le mentionne principalement
parce qu'il est prévu qu'il soit le défaut pour Windows 8.
Il apporte principalement la redondance, c'est a dire que chaque
fichier possède une somme de contrôle en 64 bits stockée dans un fichier
séparé pour éviter les corruption de disque.</p>
</li>
<li>
<p>Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers
les plus utilisés sous linux pour le grand public. (Je traiterai ici
d'ext4, puisque c'est le plus récent.) Il dispose de toutes les
fonctions que l'on peut attendre d'un système de fichiers moderne, ni
plus ni moins. Ainsi, ext4 est un système de fichiers journalisé,
acceptant les capacités jusquà 1 Exioctet, et utilise l'allocation dite
"par extent", ce qui signifie que la création d'un fichier réserve
automatiquement les zones contiguës de façon a réduire la fragmentation.</p>
</li>
<li>
<p>ReiserFS : ce système de fichiers, créé par le (légèrement mégalo)
programmeur Hans Reiser, est a retenir pour avoir été le premier système
de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des
4 milliards. Le but de ce système est de créer un système polyvalent, a
la fois système de fichiers et base de donnée (de part sa grande
capacité en terme de nombre de fichiers et de l'utilisation d'un
journal.)</p>
</li>
<li>
<p>Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi
l'allocation par extent, mais possède de plus un système de
sous-volumes, qui permet daccéder a plusieurs arborescences de fichiers
montées en même temps (système pratique et utile pour faire des
snapshots de systèmes.). Il permet aussi de redimensionner a chaud la
taille des partitions, en les agrandissant ou en les rétrécissant, est
compatible avec <a href="http://fr.wikipedia.org/wiki/LVM">LVM</a>, a un système de checking intégré (btrfsck), et
utilise un algorithme de compression appelé LZ4, qui accélère les accès
aux fichiers compressés d'environ 30% par rapport a LZO, le système
utilisé dans ext4.</p>
</li>
<li>
<p>HFS+ : le système de fichier présent sur tous les macs a des capacités
relativement standards, et ressemble énormément a l'ext3. Il supporte
cependant les liens directs vers les dossiers, fonction rare sur les
systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau
dans les années a venir</p>
</li>
<li>
<p>ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux
et *BSD, est, tel Btrfs, a la fois un système de fichier et un
remplaçant/compatible avec LVM, C'est un système de fichiers conçu
principalement pour les serveurs, et il intègre ainsi un système de
redondance des données pour éviter les corruptions, un mode RAID-Z
(apparenté au RAID5), des checks dintégrité en continu, des snapshots,
etc...</p>
</li>
</ul>
<p>Comme on a pu le voir, les systèmes de fichiers disponibles sont
légions. Cependant, le plus adapté a Linux et a une utilisation grand
public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier
n'est pas aujourd'hui proposé par défaut sur les distributions les plus
utilisées, au profit de l'ext4, qui commence a accuser son âge...</p>
<p>Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au
fonctionnement du système, sont en fait de première importance, et ce
choix ne devrait pas être laissé au hasard, et être mis a jour
régulièrement (pour éviter les failles de sécurité...)</p>
<p>Bon courage, et bon choix pour votre prochain système.</p>
</div><!-- /.entry-content -->
</article>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,286 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>L'informatique a l'école</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<section id="content">
<article>
<header>
<h1>
<a href=""
rel="bookmark"
title="Permalink to L'informatique a l'école">L'informatique a l'école</a>
</h1>
</header>
<div class="entry-content">
<div class="well">
<footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-10-15T20:34:00+02:00">
<i class="icon-calendar"></i> Mon 15 October 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/"><i class="icon-folder-open"></i>Ranting</a>
<br />
</footer><!-- /.post-info --> </div>
<p>Après avoir lu <a href="http://t.co/5PTfe6zu">cet article</a> paru sur écrans.fr, et au vu des
nombreuses réflexions que j'ai eu sur ce sujet au cours des années, je
commence a me demander si la réponse logique ne serait pas d'enseigner
les bases de l'informatique (bases délectronique, de programmation et
de logique formelle) dès le collège.</p>
<p>En effet, l'exemple qui me revient toujours est celui des technoprêtres
de warhammer 40 000, dans un univers ou la technologie est ritualisée et
incomprise même des plus savants, qui se contentent de reproduire ce qui
existe, et parfois par chance de retrouver un schéma explicatif lisible
par une machine, et qu'ils ne comprennent pas eux mêmes, ou toute
technologie est ointe d'onguents sacrés, entourée d'encens avant d'être
péniblement actionnée par des assistants ne comprenant rien a cette
technologie (ayant lu <a href="http://en.wikipedia.org/wiki/Hackers:_Heroes_of_the_Computer_Revolution">Hackers - Heroes of the Computer Revolution</a> de
Steven Levy, c'est l'ambiance que l'on retrouve quand l'auteur décrit
l'ambiance près des machines IBM au MIT, au début de l'ouvrage), et il
me semble que de plus en plus la société se rapproche de cela.</p>
<p>Cette culture de lingénierie, qui existait beaucoup lors des débuts de
l'informatique (telle que décrite par exemple par Steve Wozniak dans son
livre <a href="http://en.wikipedia.org/wiki/IWoz">iWoz</a>) disparait pour laisser place a une culture de la
consommation et de l'utilisation de contenus existants, et même a une
certaine peur de la compréhension de la technologie. Ceux qui s'y
intéressent sont considérés comme marginaux (combien de hackers créent
des outils sur lesquels seront construits tous les systèmes du siècle a
venir, tels des Dennis Ritchie en puissance? Combien d'entre eux ne sont
pas intégrés a la société dite "normale"?), et on peut souvent observer
les réactions de peur que lancent les actions des hackers, ne serait-ce
que dans les journaux (combien de journaux 'mainstream' ont-ils parlés
des hackers en bien, c'est a dire tels qu'ils sont réellement, depuis
les années 80?) ou a la télévision. </p>
<p>Ainsi, la culture et la connaissance de ces appareils que
sont les ordinateurs, qui aujourd'hui se trouvent du fond de nos
poches a dans l'espace en passant par lintérieur des pacemakers
jusquà être une composante indispensable de la société, se perdent et
rendent ainsi la compréhension de ces appareils impossible (j'ai eu
la désagréable surprise récemment de voir un camarade de classe
me poser ingénument la question "Ah, mais en fait, quand tu installes
Linux, ça change le fond d'écran et les icônes?". Au-delà du niveau,
la misère de cette question est que cette personne n'avait probablement
aucune idée de la façon dont fonctionnait son ordinateur, a part
pour le fond d'écran en question et pour les fameuses icônes.) pour
le grand public, et cet évolution crée de fait une sorte d'oligarchie de
techno-comprenants, seuls capables de manier et de créer la technologie.</p>
<p>C'est pour cela qu'il me semble intéressant, important, peut être même
requis, d'inclure au programme du collège puis du lycée des cours
délectronique et d'informatique tels que décrits plus haut, de façon a
ce que les élèves comprennent le monde qui les entoure. Car c'est la le
but du cycle scolaire secondaire, me semble-t-il, et non pas de former
des futurs travailleurs. Sinon, pourquoi y aurait-il des cours de
musique, d'arts plastiques, ou encore de philosophie? Si le but du cycle
secondaire est bien d'ouvrir l'esprit des élèves sur le monde et sur ce
qui les entoure, alors les cours sur l'informatique s'imposent comme une
évidence, puisque ceux-ci nous entourent aujourd'hui bien plus que quoi
que soit d'autre...</p>
<p>Ces cours seraient susceptibles de sinsérer en un mélange entre des
cours de technologie (qui aujourd'hui sont bien plus orientés physique
et machines-outils qu'informatique ou électronique, alors que la
technologie d'aujourd'hui et vraisemblablement de demain aussi est
l'informatique) et de physique, pour le côté électronique, et de façon a
donner enfin aux cours de physique un intérêt quelconque, sortir au delà
de la théorie et de l'abstraction complète que sont actuellement ces
cours et passer un peu dans la réalisation, avec des arduinos par
exemple.</p>
<p>Vous aussi, intéressez vous a cela, de façon a ce que les jeunes ne
finissent pas par ne rien comprendre a ce qui est aujourd'hui l'une des
composante les plus importantes du monde tel qu'il est programmé.</p>
</div><!-- /.entry-content -->
</article>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -1,247 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Update a propos du blog</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="wxcafé">
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
<!-- Le styles -->
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
var s = document.createElement('script');
var t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = '//api.flattr.com/js/0.6/load.js?'+
'mode=auto&uid=wxcafe&button=compact&popout=0';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
</script> <!-- flattr button loader -->
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.tag-1 {
font-size: 13pt;
}
.tag-2 {
font-size: 10pt;
}
.tag-2 {
font-size: 8pt;
}
.tag-4 {
font-size: 6pt;
}
</style>
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
<li class="divider-vertical"></li>
<ul class="nav pull-right">
</ul>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span9" id="content">
<section id="content">
<article>
<header>
<h1>
<a href=""
rel="bookmark"
title="Permalink to Update a propos du blog">Update a propos du blog</a>
</h1>
</header>
<div class="entry-content">
<div class="well">
<footer class="post-info">
<span class="label">Date</span>
<span class="published" title="2012-09-18T16:57:00+02:00">
<i class="icon-calendar"></i> Tue 18 September 2012
</span>
<br />
<span class="label">By</span>
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
<br />
<span class="label">Category</span>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
<br />
</footer><!-- /.post-info --> </div>
<p>Bonsoir! Un petit post pour faire un peu le point sur ce blog.<br />
Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais
que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y
avoir un tantinet réfléchi, ceci est du a deux points principaux :</p>
<ul>
<li>
<p>Tout d'abord, le manque d'inspiration, tout simplement. C'est assez
compliqué de trouver des sujets intéressants liés a l'informatique, et
qui méritent un article. Je vous invite d'ailleurs a me suggérer des
sujets via les commentaires ou twitter (<a href="https://twitter.com/wxcafe">@Wxcafe</a>)</p>
</li>
<li>
<p>Ensuite, le délai de 8 jours est trop court pour me permettre de faire
les recherches nécessaires, tout en manageant mes cours et mon temps
libre.</p>
</li>
</ul>
<p>A cause de cela, j'ai pris la décision de changer le rythme de parution
des articles a un *minimum* d'un post tous les 10 jours. Bien entendu,
si j'ai de l'inspiration en trop, plus de posts sont envisageables.</p>
<p>Voila. A part ca, je tiens a vous remercier de me lire (c'est assez
étonnant de voir ca...), et je précise que je vais ajouter une page
About Me, qui bien entendu rassemblera des informations sur moi, ma vie,
mon oeuvre :P</p>
<p>Ceci dit, je vais bosser un peu sur le prochain article.</p>
<p>A plus tard!</p>
</div><!-- /.entry-content -->
</article>
</section>
</div><!--/span-->
<div class="span3 well sidebar-nav" id="sidebar">
<ul class="nav nav-list">
<!-- Categories links -->
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
<i class="icon-folder-open icon-large"></i>Hacking
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
<i class="icon-folder-open icon-large"></i>Language
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
<i class="icon-folder-open icon-large"></i>Notes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
<i class="icon-folder-open icon-large"></i>OSes
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
<i class="icon-folder-open icon-large"></i>Programmation
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
<i class="icon-folder-open icon-large"></i>Ranting
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
<i class="icon-folder-open icon-large"></i>Teaching
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
<i class="icon-folder-open icon-large"></i>Tutorial
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
<i class="icon-folder-open icon-large"></i>Tutoriel
</a>
</li>
<li>
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
<i class="icon-folder-open icon-large"></i>Vidya Games
</a>
</li>
<hr>
<!-- Social links -->
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
<a class="FlattrButton" style="display:none;"
title="file:///home/wxcafe/code/blog-source/output"
style="padding-top: 10px;"
rel="flattr;
url:file:///home/wxcafe/code/blog-source/output;
title:file:///home/wxcafe/code/blog-source/output;
button:compact;
popout:0;
uid:wxcafe;
category:blog;"
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
<hr>
<!-- Links -->
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
<hr>
<!--- RSS feed -->
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
</ul> </div><!--/.well -->
</div><!--/row-->
<hr>
<footer>
<address id="about">
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.<br />
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
</address>
</footer>
</div><!--/.fluid-container-->
</body>
</html>

View File

@ -5,11 +5,7 @@ from __future__ import unicode_literals
# Misc Settings
AUTHOR = u'wxcafé'
SITENAME = u'Wxcafé'
<<<<<<< HEAD
SITEURL = '//wxcafe.net'
=======
SITEURL = 'file:///home/wxcafe/code/blog-source/output'
>>>>>>> origin/master
TIMEZONE = 'Europe/Paris'
DEFAULT_LANG = u'fr'
DEFAULT_PAGINATION = 10
@ -39,10 +35,6 @@ MD_EXTENSIONS = [
# Blogroll
LINKS = (
('Source!', 'https://github.com/wxcafe/blog-source', 'code'),
<<<<<<< HEAD
=======
('Zerobin', 'http://paste.wxcafe.net', 'paste'),
>>>>>>> origin/master
('Public Git', 'http://git.wxcafe.net', 'github-sign'),
)
@ -51,14 +43,8 @@ SOCIAL = (
('Twitter', 'https://twitter.com/wxcafe', 'twitter'),
('Github', 'https://github.com/wxcafe', 'github'),
('Email', 'mailto://wxcafe@wxcafe.net', 'envelope'),
<<<<<<< HEAD
('Gpg', 'https://pub.wxcafe.net/wxcafe.asc', 'key'),
('IRL', 'https://www.openstreetmap.org/relation/105146', 'map-marker')
=======
('Gpg', 'https://data.wxcafe.net/wxcafe.asc', 'key'),
('Finger', 'finger://wxcafe@wxcafe.net', 'terminal'),
('IRL', 'http://leloop.org/where.html', 'map-marker')
>>>>>>> origin/master
)
# Categories on right-side bar but not on top menu

Binary file not shown.

View File

@ -7,10 +7,7 @@
<meta name="author" content="{{ AUTHOR }}">
<link rel="icon" type="image/png" href="{{ SITEURL }}/theme/img/favicon.ico">
<!-- Le styles -->
<<<<<<< HEAD
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/extra.css" type="text/css" />
=======
>>>>>>> origin/master
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/bootstrap.css" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<script type="text/javascript">