fixes git merge shit
This commit is contained in:
parent
3f93c895de
commit
7dfdecec73
6
Gemfile
6
Gemfile
@ -1,6 +0,0 @@
|
|||||||
# A sample Gemfile
|
|
||||||
source "https://rubygems.org"
|
|
||||||
gem 'guard'
|
|
||||||
gem 'guard-livereload'
|
|
||||||
|
|
||||||
# gem "rails"
|
|
57
Gemfile.lock
57
Gemfile.lock
@ -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
|
|
34
Guardfile
34
Guardfile
@ -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
|
|
BIN
cache/ArticlesGenerator-Readers
vendored
BIN
cache/ArticlesGenerator-Readers
vendored
Binary file not shown.
BIN
cache/PagesGenerator-Readers
vendored
BIN
cache/PagesGenerator-Readers
vendored
Binary file not shown.
@ -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 s’insé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 d’expé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/
|
|
@ -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 s’inté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 m’inté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 m’inté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!
|
|
@ -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 j’abré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/
|
|
@ -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
|
|
||||||
|
|
||||||
L’interpré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 qu’interpré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)
|
|
@ -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 l’expé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
|
|
@ -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 qu’exé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 l’interpréteur est
|
|
||||||
disponible.)
|
|
||||||
|
|
||||||
Voila, je vous laisse sur le fonctionnement de Java et de Python, et je
|
|
||||||
vais me coucher.
|
|
||||||
A bientôt!
|
|
@ -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/
|
|
@ -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
|
|
@ -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
|
|
||||||
d’exé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 l’exé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
|
|
||||||
|
|
@ -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 d’accé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 d’inté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
|
|
@ -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 l’ingé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 l’inté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 s’insé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
|
|
@ -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
|
|
@ -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 s’insé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 d’expé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">'</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">&&</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">&&</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">&&</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">></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">></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">'</span><span class="n">LANG</span><span class="o">=</span><span class="s">"fr_FR.UTF-8"</span><span class="err">'</span> <span class="o">></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">"append root=/dev/sda1"</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">"exec ck-launch-session mate-session"</span> <span class="o">></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">&&</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">&&</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">"exec dbus-launch mate-session"</span> <span class="o">></span> <span class="o">~/</span><span class="p">.</span><span class="n">xinitrc</span> <span class="o">&&</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 d’accé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 d’inté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>L’interpré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 qu’interpré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'est elle qui dit a bash quel doit être </span>
|
|
||||||
<span class="c"># l'interpreteur des commandes écrites dans ce script. Ici, on dit a bash d'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">"this is a test of bash as a simple script manager"</span> <span class="c"># echo est une commande d'affichage de message.</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"what's your name, user?"</span>
|
|
||||||
<span class="nb">read </span>your_name <span class="c"># la commande read permet de demander a l'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">"is your name"</span> <span class="c"># echo permet aussi d'afficher la valeur de variables. </span>
|
|
||||||
<span class="c"># Ici, on renvoie la variable remplie précédemment, suivie d'un message. </span>
|
|
||||||
<span class="nb">exit</span> <span class="c"># cet appel a exit n'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">"welcome to this second bash program. would you please kindly enter the name of the machine you're running this on?"</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">"you told the truth!"</span>
|
|
||||||
<span class="k">fi</span> <span class="c">## le fi est la commande fermant le if, tout comme le EndIf en basic. C'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'opérateur != est l'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">"you lied!"</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">"what is your name?"</span>
|
|
||||||
<span class="nb">read </span>name
|
|
||||||
<span class="k">while</span> <span class="o">[</span> 1 < 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">"i love"</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">"please enter a number between one and five"</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">"the choosen number was one"</span>
|
|
||||||
;;
|
|
||||||
2<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was two"</span>
|
|
||||||
;;
|
|
||||||
3<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was three"</span>
|
|
||||||
;;
|
|
||||||
4<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was four"</span>
|
|
||||||
;;
|
|
||||||
5<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was five"</span>
|
|
||||||
;;
|
|
||||||
*<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"this number is not correct"</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, \<troll>enfin un vrai système quoi.
|
|
||||||
\</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
|
|
||||||
d’exé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 l’exé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 qu’exé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">"hello world"</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">"hello world"</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 l’interpré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 j’abré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 s’inté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 m’inté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 m’inté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">← 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="#">→ 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>
|
|
@ -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>
|
|
@ -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, "Common Name" 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'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">"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"</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">"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"</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'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">"/etc/prosody/certs/dh-2048.pem"</span><span class="p">;</span>
|
|
||||||
<span class="n">key</span> <span class="o">=</span> <span class="s">"/etc/certs/example.com.key"</span><span class="p">;</span>
|
|
||||||
<span class="n">certificate</span> <span class="o">=</span> <span class="s">"/etc/certs/example.com.crt"</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"></</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"></</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 s’inté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 m’inté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 m’inté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>
|
|
@ -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>L’interpré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 qu’interpré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'est elle qui dit a bash quel doit être </span>
|
|
||||||
<span class="c"># l'interpreteur des commandes écrites dans ce script. Ici, on dit a bash d'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">"this is a test of bash as a simple script manager"</span> <span class="c"># echo est une commande d'affichage de message.</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"what's your name, user?"</span>
|
|
||||||
<span class="nb">read </span>your_name <span class="c"># la commande read permet de demander a l'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">"is your name"</span> <span class="c"># echo permet aussi d'afficher la valeur de variables. </span>
|
|
||||||
<span class="c"># Ici, on renvoie la variable remplie précédemment, suivie d'un message. </span>
|
|
||||||
<span class="nb">exit</span> <span class="c"># cet appel a exit n'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">"welcome to this second bash program. would you please kindly enter the name of the machine you're running this on?"</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">"you told the truth!"</span>
|
|
||||||
<span class="k">fi</span> <span class="c">## le fi est la commande fermant le if, tout comme le EndIf en basic. C'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'opérateur != est l'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">"you lied!"</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">"what is your name?"</span>
|
|
||||||
<span class="nb">read </span>name
|
|
||||||
<span class="k">while</span> <span class="o">[</span> 1 < 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">"i love"</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">"please enter a number between one and five"</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">"the choosen number was one"</span>
|
|
||||||
;;
|
|
||||||
2<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was two"</span>
|
|
||||||
;;
|
|
||||||
3<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was three"</span>
|
|
||||||
;;
|
|
||||||
4<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was four"</span>
|
|
||||||
;;
|
|
||||||
5<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was five"</span>
|
|
||||||
;;
|
|
||||||
*<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"this number is not correct"</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>
|
|
@ -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’histoire d’Internet. Sa mise en place pose
|
|
||||||
problème : les protocoles existants ne s’accommodent qu’assez mal de recevoir
|
|
||||||
soudainement un flot de données chiffrées, mais développer de nouveaux
|
|
||||||
protocoles est complexe et n’apporte rien d’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’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’autre approche qui a été utilisée est une approche d’<em>upgrade</em>. La
|
|
||||||
communication commence en mode non chiffré, puis le client demande l’upgrade de
|
|
||||||
la connexion vers le mode chiffré s’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 “mise
|
|
||||||
a jour” en douceur.</p>
|
|
||||||
<p>Il est souvent demandé quelle est la meilleure méthode pour mettre en place un
|
|
||||||
service – 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’abord, il permet de n’utiliser qu’un seul port : ça permet de simplifier la
|
|
||||||
configuration du firewall. En plus de ça, il permet aux clients “anciens” (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’éviter aux utilisateurs d’avoir a configurer leurs
|
|
||||||
clients. Si le client supporte le chiffrement, il l’activera de lui même s’il
|
|
||||||
voit qu’il est disponible.<br />
|
|
||||||
Bref, mettez en place du <code>STARTTLS</code>, et pas du SSL. C’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 d’accé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 d’inté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, \<troll>enfin un vrai système quoi.
|
|
||||||
\</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
|
|
||||||
d’exé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 l’exé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 qu’exé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">"hello world"</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">"hello world"</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 l’interpré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 j’abré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>
|
|
@ -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">></span><span class="err">│────</span><span class="o">></span> <span class="n">to</span> <span class="n">filter</span> <span class="err">───</span><span class="o">></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">></span><span class="err">│╯</span> <span class="n">OpenSMTPd</span> <span class="err">╭──│</span><span class="o"><</span><span class="err">───</span> <span class="n">from</span> <span class="n">filter</span><span class="o"><</span><span class="err">───│</span><span class="o"><</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"><</span><span class="err">───────────│</span><span class="o"><</span><span class="err">────────────┴─</span><span class="o">></span><span class="err">│─────</span><span class="o">></span> <span class="n">to</span> <span class="n">MDA</span> <span class="err">─────</span><span class="o">></span><span class="err">│─────────</span><span class="o">></span><span class="err">│──</span><span class="o">></span> <span class="n">to</span> <span class="n">user</span><span class="err">'</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">></span><span class="err">│──</span><span class="o">></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">></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">></span> <span class="mi">25</span><span class="err">│╯</span> <span class="n">OpenSMTPd</span> <span class="err">╭──│</span><span class="o"><</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"><</span><span class="err">──│</span><span class="o"><</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"><</span><span class="err">────────│</span><span class="o"><</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">></span><span class="err">│──</span><span class="o">></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">></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">></span> <span class="mi">25</span><span class="err">│╯</span> <span class="n">OpenSMTPd</span> <span class="err">╭──│</span><span class="o"><</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"><</span><span class="err">──│</span><span class="o"><</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">></span><span class="err">│──</span><span class="o">></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">></span><span class="err">│───────────</span><span class="o">></span><span class="err">│──</span><span class="o">></span> <span class="n">to</span> <span class="n">user</span><span class="err">'</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">"/etc/certs/exem.pl.crt"</span>
|
|
||||||
<span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nb">key</span> <span class="s2">"/etc/certs/exem.pl.key"</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"><</span><span class="nx">aliases</span><span class="o">></span> <span class="nx">deliver</span> <span class="k">to</span> <span class="nx">lmtp</span> <span class="s2">"/var/run/dovecot/lmtp"</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">"exem.pl"</span> <span class="nx">relay</span> <span class="nx">via</span> <span class="s2">"smtp://localhost:10024"</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">"smtp://localhost:10026"</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">"%Y-%m-%d %H:%M:%S "</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"></</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"></</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">"exem.pl"</span><span class="p">,</span> <span class="s">"main"</span><span class="p">,</span> <span class="s">"/etc/certs/dkim.key"</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">'.'</span> <span class="o">=></span>
|
|
||||||
<span class="p">{</span> <span class="n">ttl</span> <span class="o">=></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">=></span> <span class="err">'</span><span class="n">relaxed</span><span class="o">/</span><span class="n">simple</span><span class="err">'</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">'</span><span class="n">MYNETS</span><span class="err">'</span><span class="p">}</span> <span class="o">=</span> <span class="p">{</span>
|
|
||||||
<span class="n">originating</span> <span class="o">=></span> <span class="mi">1</span><span class="p">,</span>
|
|
||||||
<span class="n">os_fingerprint_method</span> <span class="o">=></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">'</span><span class="mi">10026</span><span class="err">'</span><span class="p">}</span> <span class="o">=</span> <span class="err">'</span><span class="n">ORIGINATING</span><span class="err">'</span><span class="p">;</span>
|
|
||||||
|
|
||||||
<span class="err">$</span><span class="n">policy_bank</span><span class="p">{</span><span class="err">'</span><span class="n">ORIGINATING</span><span class="err">'</span><span class="p">}</span> <span class="o">=</span> <span class="p">{</span>
|
|
||||||
<span class="n">originating</span> <span class="o">=></span> <span class="mi">1</span><span class="p">,</span>
|
|
||||||
<span class="n">allow_disclaimers</span> <span class="o">=></span> <span class="mi">1</span><span class="p">,</span>
|
|
||||||
<span class="n">virus_admin_maps</span> <span class="o">=></span> <span class="p">[</span><span class="s">"root\@$mydomain"</span><span class="p">],</span>
|
|
||||||
<span class="n">spam_admin_maps</span> <span class="o">=></span> <span class="p">[</span><span class="s">"root\@$mydomain"</span><span class="p">],</span>
|
|
||||||
<span class="n">warnbadhsender</span> <span class="o">=></span> <span class="mi">1</span><span class="p">,</span>
|
|
||||||
<span class="n">forward_method</span> <span class="o">=></span> <span class="err">'</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">'</span><span class="p">,</span>
|
|
||||||
<span class="n">smtpd_discard_ehlo_keywords</span> <span class="o">=></span> <span class="p">[</span><span class="err">'</span><span class="mi">8</span><span class="n">BITMIME</span><span class="err">'</span><span class="p">],</span>
|
|
||||||
<span class="n">bypass_banned_checks_maps</span> <span class="o">=></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">=></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>
|
|
@ -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"><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></summary></entry></feed>
|
|
@ -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"><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></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"><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></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"><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></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"><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></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"><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 s’inté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 m’inté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 m’inté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></summary></entry></feed>
|
|
@ -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"><p>L’interpré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 qu’interpré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></summary></entry></feed>
|
|
@ -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><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></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>
|
|
@ -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><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></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><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></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><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></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><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></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><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 s’inté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 m’inté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 m’inté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></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>
|
|
@ -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><p>L’interpré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 qu’interpré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></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>
|
|
@ -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><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></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><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 d’accé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 d’inté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></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><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
|
|
||||||
d’exé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 l’exé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></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><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 qu’exé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 l’interpré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></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><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 j’abré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></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>
|
|
@ -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><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></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>
|
|
@ -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"><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></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"><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 d’accé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 d’inté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></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"><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
|
|
||||||
d’exé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 l’exé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></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"><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 qu’exé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 l’interpré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></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"><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 j’abré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></summary></entry></feed>
|
|
@ -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"><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></summary></entry></feed>
|
|
1271
output/index3.html
1271
output/index3.html
@ -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 s’insé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 d’expé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">'</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">&&</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">&&</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">&&</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">></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">></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">'</span><span class="n">LANG</span><span class="o">=</span><span class="s">"fr_FR.UTF-8"</span><span class="err">'</span> <span class="o">></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">"append root=/dev/sda1"</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">"exec ck-launch-session mate-session"</span> <span class="o">></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">&&</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">&&</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">"exec dbus-launch mate-session"</span> <span class="o">></span> <span class="o">~/</span><span class="p">.</span><span class="n">xinitrc</span> <span class="o">&&</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 d’accé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 d’inté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>L’interpré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 qu’interpré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'est elle qui dit a bash quel doit être </span>
|
|
||||||
<span class="c"># l'interpreteur des commandes écrites dans ce script. Ici, on dit a bash d'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">"this is a test of bash as a simple script manager"</span> <span class="c"># echo est une commande d'affichage de message.</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"what's your name, user?"</span>
|
|
||||||
<span class="nb">read </span>your_name <span class="c"># la commande read permet de demander a l'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">"is your name"</span> <span class="c"># echo permet aussi d'afficher la valeur de variables. </span>
|
|
||||||
<span class="c"># Ici, on renvoie la variable remplie précédemment, suivie d'un message. </span>
|
|
||||||
<span class="nb">exit</span> <span class="c"># cet appel a exit n'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">"welcome to this second bash program. would you please kindly enter the name of the machine you're running this on?"</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">"you told the truth!"</span>
|
|
||||||
<span class="k">fi</span> <span class="c">## le fi est la commande fermant le if, tout comme le EndIf en basic. C'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'opérateur != est l'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">"you lied!"</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">"what is your name?"</span>
|
|
||||||
<span class="nb">read </span>name
|
|
||||||
<span class="k">while</span> <span class="o">[</span> 1 < 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">"i love"</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">"please enter a number between one and five"</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">"the choosen number was one"</span>
|
|
||||||
;;
|
|
||||||
2<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was two"</span>
|
|
||||||
;;
|
|
||||||
3<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was three"</span>
|
|
||||||
;;
|
|
||||||
4<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was four"</span>
|
|
||||||
;;
|
|
||||||
5<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was five"</span>
|
|
||||||
;;
|
|
||||||
*<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"this number is not correct"</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, \<troll>enfin un vrai système quoi.
|
|
||||||
\</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
|
|
||||||
d’exé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 l’exé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 qu’exé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">"hello world"</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">"hello world"</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 l’interpré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 j’abré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 s’inté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 m’inté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 m’inté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">← 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="#">→ 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>
|
|
@ -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 s’insé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 d’expé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">'</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">&&</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">&&</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">&&</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">></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">></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">'</span><span class="n">LANG</span><span class="o">=</span><span class="s">"fr_FR.UTF-8"</span><span class="err">'</span> <span class="o">></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">"append root=/dev/sda1"</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">"exec ck-launch-session mate-session"</span> <span class="o">></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">&&</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">&&</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">"exec dbus-launch mate-session"</span> <span class="o">></span> <span class="o">~/</span><span class="p">.</span><span class="n">xinitrc</span> <span class="o">&&</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>
|
|
@ -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 s’inté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 m’inté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 m’inté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>
|
|
@ -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 j’abré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>
|
|
@ -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>L’interpré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 qu’interpré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'est elle qui dit a bash quel doit être </span>
|
|
||||||
<span class="c"># l'interpreteur des commandes écrites dans ce script. Ici, on dit a bash d'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">"this is a test of bash as a simple script manager"</span> <span class="c"># echo est une commande d'affichage de message.</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"what's your name, user?"</span>
|
|
||||||
<span class="nb">read </span>your_name <span class="c"># la commande read permet de demander a l'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">"is your name"</span> <span class="c"># echo permet aussi d'afficher la valeur de variables. </span>
|
|
||||||
<span class="c"># Ici, on renvoie la variable remplie précédemment, suivie d'un message. </span>
|
|
||||||
<span class="nb">exit</span> <span class="c"># cet appel a exit n'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">"welcome to this second bash program. would you please kindly enter the name of the machine you're running this on?"</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">"you told the truth!"</span>
|
|
||||||
<span class="k">fi</span> <span class="c">## le fi est la commande fermant le if, tout comme le EndIf en basic. C'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'opérateur != est l'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">"you lied!"</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">"what is your name?"</span>
|
|
||||||
<span class="nb">read </span>name
|
|
||||||
<span class="k">while</span> <span class="o">[</span> 1 < 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">"i love"</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">"please enter a number between one and five"</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">"the choosen number was one"</span>
|
|
||||||
;;
|
|
||||||
2<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was two"</span>
|
|
||||||
;;
|
|
||||||
3<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was three"</span>
|
|
||||||
;;
|
|
||||||
4<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was four"</span>
|
|
||||||
;;
|
|
||||||
5<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"the choosen number was five"</span>
|
|
||||||
;;
|
|
||||||
*<span class="o">)</span>
|
|
||||||
<span class="nb">echo</span> <span class="s2">"this number is not correct"</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>
|
|
@ -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 l’expé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><troll></code> de façon surprenante pour un
|
|
||||||
programme GNU<code></troll></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>
|
|
@ -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 qu’exé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">"hello world"</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">"hello world"</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 l’interpré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>
|
|
@ -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><troll></code>Apple
|
|
||||||
Maps<code></troll></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>
|
|
@ -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>
|
|
@ -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, \<troll>enfin un vrai système quoi.
|
|
||||||
\</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
|
|
||||||
d’exé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 l’exé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>
|
|
@ -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 d’accé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 d’inté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>
|
|
@ -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 l’ingé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 l’inté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 s’insé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>
|
|
@ -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>
|
|
@ -5,11 +5,7 @@ from __future__ import unicode_literals
|
|||||||
# Misc Settings
|
# Misc Settings
|
||||||
AUTHOR = u'wxcafé'
|
AUTHOR = u'wxcafé'
|
||||||
SITENAME = u'Wxcafé'
|
SITENAME = u'Wxcafé'
|
||||||
<<<<<<< HEAD
|
|
||||||
SITEURL = '//wxcafe.net'
|
SITEURL = '//wxcafe.net'
|
||||||
=======
|
|
||||||
SITEURL = 'file:///home/wxcafe/code/blog-source/output'
|
|
||||||
>>>>>>> origin/master
|
|
||||||
TIMEZONE = 'Europe/Paris'
|
TIMEZONE = 'Europe/Paris'
|
||||||
DEFAULT_LANG = u'fr'
|
DEFAULT_LANG = u'fr'
|
||||||
DEFAULT_PAGINATION = 10
|
DEFAULT_PAGINATION = 10
|
||||||
@ -39,10 +35,6 @@ MD_EXTENSIONS = [
|
|||||||
# Blogroll
|
# Blogroll
|
||||||
LINKS = (
|
LINKS = (
|
||||||
('Source!', 'https://github.com/wxcafe/blog-source', 'code'),
|
('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'),
|
('Public Git', 'http://git.wxcafe.net', 'github-sign'),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -51,14 +43,8 @@ SOCIAL = (
|
|||||||
('Twitter', 'https://twitter.com/wxcafe', 'twitter'),
|
('Twitter', 'https://twitter.com/wxcafe', 'twitter'),
|
||||||
('Github', 'https://github.com/wxcafe', 'github'),
|
('Github', 'https://github.com/wxcafe', 'github'),
|
||||||
('Email', 'mailto://wxcafe@wxcafe.net', 'envelope'),
|
('Email', 'mailto://wxcafe@wxcafe.net', 'envelope'),
|
||||||
<<<<<<< HEAD
|
|
||||||
('Gpg', 'https://pub.wxcafe.net/wxcafe.asc', 'key'),
|
('Gpg', 'https://pub.wxcafe.net/wxcafe.asc', 'key'),
|
||||||
('IRL', 'https://www.openstreetmap.org/relation/105146', 'map-marker')
|
('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
|
# Categories on right-side bar but not on top menu
|
||||||
|
BIN
pelicanconf.pyc
BIN
pelicanconf.pyc
Binary file not shown.
@ -7,10 +7,7 @@
|
|||||||
<meta name="author" content="{{ AUTHOR }}">
|
<meta name="author" content="{{ AUTHOR }}">
|
||||||
<link rel="icon" type="image/png" href="{{ SITEURL }}/theme/img/favicon.ico">
|
<link rel="icon" type="image/png" href="{{ SITEURL }}/theme/img/favicon.ico">
|
||||||
<!-- Le styles -->
|
<!-- Le styles -->
|
||||||
<<<<<<< HEAD
|
|
||||||
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/extra.css" type="text/css" />
|
<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 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'>
|
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user