+ git,wifi,divers,threads chapters
This commit is contained in:
parent
e038d2feda
commit
9a9d3108ba
50
chap/GIT.tex
Normal file
50
chap/GIT.tex
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
\chapter{GIT}
|
||||||
|
\index{GIT} \label{GIT}
|
||||||
|
|
||||||
|
Git est un système de gestion de version, très bien expliqué
|
||||||
|
aux quatre coins des interwebs. Je ne vais donc pas m'étendre
|
||||||
|
plus que ça, pour passer tout de suite à un cas particulier
|
||||||
|
\footnote{que je n'arrive pas encore à vraiment maitriser}.
|
||||||
|
|
||||||
|
\section{Démarrage}
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
$ mkdir Foo
|
||||||
|
$ cd Foo/
|
||||||
|
$ git init
|
||||||
|
$ > README.txt
|
||||||
|
$ git add README.txt
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
|
||||||
|
\section{Setup du serveur}
|
||||||
|
|
||||||
|
Sur le serveur distant, dans un endroit accessible par
|
||||||
|
le protocole \texttt{HTTP}, il faut créer le dépot.
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
$ mkdir Foo
|
||||||
|
$ cd Foo/
|
||||||
|
$ git init --bare
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
Et ensuite :
|
||||||
|
\begin{verbatim}
|
||||||
|
$ git update-server-info
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
\section{Pousser le code}
|
||||||
|
|
||||||
|
Notre commit\index{commit} local semble pertinent,
|
||||||
|
il est temps de le faire connaitre au monde.
|
||||||
|
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
$ git push yuser@serveur:/chemin/vers/le/depot/Foo
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
\section{Krkrkr...}
|
||||||
|
|
||||||
|
Tout cela semble bien compliqué.
|
||||||
|
|
||||||
|
|
75
chap/WiFi.tex
Normal file
75
chap/WiFi.tex
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
\chapter{WiFi}
|
||||||
|
\label{WiFi}
|
||||||
|
|
||||||
|
WIreless FIdelity.
|
||||||
|
|
||||||
|
% ==============================================================
|
||||||
|
\section{wicd}
|
||||||
|
\index{wicd}
|
||||||
|
|
||||||
|
\textsl{Wired and Wireless Network Connection Manager}.
|
||||||
|
|
||||||
|
Wicd est constitué de deux éléments : un \textsl{daemon}
|
||||||
|
qui est responsable de gérer les connections, et plusieurs
|
||||||
|
interfaces utilisateurs. Ces deux parties communiquent
|
||||||
|
par D-Bus\index{D-Bus}.
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
root@plop:~# wicd-cli -S -y
|
||||||
|
root@plop:~# wicd-cli -l -y
|
||||||
|
# BSSID Channel ESSID
|
||||||
|
0 00:25:15:A6:2A:D0 1 NEUF_2ACC
|
||||||
|
1 CA:25:15:A6:2A:D3 1 SFR WiFi Mobile
|
||||||
|
2 CA:25:15:A6:2A:D1 1 SFR WiFi Public
|
||||||
|
3 A0:21:B7:D5:BA:DB 6 NUMERICABLE-35E0
|
||||||
|
4 00:17:33:D4:39:B8 11 NEUF_39B4
|
||||||
|
5 F4:CA:E5:95:DA:1E 10 FreeWifi_secure
|
||||||
|
6 F4:CA:E5:95:DA:1D 10 FreeWifi
|
||||||
|
7 16:10:18:47:F2:4C 11 <hidden>
|
||||||
|
8 00:24:D4:CE:4F:A1 1 FreeWifi
|
||||||
|
9 00:24:D4:CE:4F:A2 1 FreeWifi_secure
|
||||||
|
10 16:10:18:47:F2:4E 11 FreeWifi_secure
|
||||||
|
11 00:24:D4:CE:4F:A0 1 freeboxwifi
|
||||||
|
12 00:0E:9B:24:F5:2B 7 poisson_bulle
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
La première ligne demande au \textsl{daemon} de scanner
|
||||||
|
(option \texttt{-S} ou \texttt{--scan})
|
||||||
|
les réseaux disponibles en wireless. Puis la seconde
|
||||||
|
commande demande l'affichage de la liste.
|
||||||
|
|
||||||
|
% ==============================================================
|
||||||
|
|
||||||
|
\section{Un coup de NAT}
|
||||||
|
\index{NAT}\label{NAT}
|
||||||
|
|
||||||
|
Une machine connectée en wifi sur une friboite\footnote{ou le
|
||||||
|
Cisco sauvage de la salle d'AG, hein, mais ça ne sera
|
||||||
|
pas le même nameserver.} peut facilement
|
||||||
|
faire translateur d'adresse pour un réseau branché sur
|
||||||
|
son eth, à condition de connaitre les
|
||||||
|
incantations magiques
|
||||||
|
(qui sont ici très linuxisantes) :
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
ifconfig eth0 10.9.9.200/24
|
||||||
|
echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||||
|
modprobe iptable_nat
|
||||||
|
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
Ensuite sur les machines du lan, donc le coté ethernet,
|
||||||
|
il faut incanter ce genre de trucs :
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
ifconfig eth0 10.9.9.199/24
|
||||||
|
route add default gw 10.9.9.200
|
||||||
|
echo "nameserver 192.168.0.254" >> /etc/resolv.conf
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
Normalement, ça devrait marcher. D'un autre coté, ce texte
|
||||||
|
date de 2011, et l'arrivée de \texttt{systemd}\index{systemd}
|
||||||
|
a peut-être cassée des choses.
|
||||||
|
|
||||||
|
% ==============================================================
|
||||||
|
|
38
chap/divers.tex
Normal file
38
chap/divers.tex
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
\chapter{Trucs divers}
|
||||||
|
\label{divers}
|
||||||
|
|
||||||
|
\section{Permissions}
|
||||||
|
|
||||||
|
Suite à un accident d'origine indéterminé, Captain \textsc{root} a crée
|
||||||
|
un fichier dans le \$HOME d'un pauvre péone. Et celui-ci découvre avec
|
||||||
|
effroi qu'il ne peut ni lire ni modifier ce fichier. Ce que peut
|
||||||
|
confirmer un \texttt{ls -l} qui montre bien que seul root a des droits
|
||||||
|
sur ce fichier :
|
||||||
|
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
-rwx------ 1 root root 70 2012-03-15 12:16 coin.pan
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
Question : qui tombe à l'eau ?
|
||||||
|
|
||||||
|
% ==============================================================
|
||||||
|
|
||||||
|
|
||||||
|
\section{Prompt}
|
||||||
|
\index{prompt}
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
printf '\033]11;lemonchiffon2\a'
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
% ==============================================================
|
||||||
|
\section{fdupes}
|
||||||
|
\index{fdupes}\label{fdupes}
|
||||||
|
|
||||||
|
Un utilitaire pour découvrir les fichiers dupliqués dans
|
||||||
|
votre disque dur qui se remplit trop vite à votre gout.
|
||||||
|
|
||||||
|
% ==============================================================
|
||||||
|
|
||||||
|
|
50
chap/threads.tex
Normal file
50
chap/threads.tex
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
\chapter{threads}
|
||||||
|
\index{threads}
|
||||||
|
|
||||||
|
% ----------------------------------------------------------------
|
||||||
|
|
||||||
|
Ahemmm, par quoi commencer\footnote{Par de l'aspirine ?} ? Par un
|
||||||
|
extrait de la page \texttt{pthreads(6)} ? Voilà, ça c'est bien :
|
||||||
|
|
||||||
|
\begin{quote}
|
||||||
|
POSIX.1 specifies a set of interfaces (functions, header files) for
|
||||||
|
threaded programming commonly known as Pthreads.
|
||||||
|
A single process can contain multiple threads, all of which are
|
||||||
|
executing the same program. These threads share the same global
|
||||||
|
memory (data and heap segments), but each thread has its own stack
|
||||||
|
(automatic variables).
|
||||||
|
\end{quote}
|
||||||
|
|
||||||
|
Et c'est là que les ennuis potentiels débarquent :
|
||||||
|
\textit{share the same global memory}, ce qui veut dire en gros
|
||||||
|
«~se partagent la même mémoire globale~».
|
||||||
|
|
||||||
|
% ----------------------------------------------------------------
|
||||||
|
|
||||||
|
\section{ITC}
|
||||||
|
\index{ITC}
|
||||||
|
|
||||||
|
\textit{Inter Thread Communication}
|
||||||
|
|
||||||
|
Imaginons une application avec un thread qui fait le travail effectif
|
||||||
|
(nous le nommerons \textsl{worker}), et plusieurs autres threads
|
||||||
|
qui attendent des ordres de l'extérieur (telnet, MIDI\index{MIDI},
|
||||||
|
joystick\index{joystick}\dots) et qui doivent passer ces commandes
|
||||||
|
au \textsl{worker}.
|
||||||
|
|
||||||
|
Comment allons-nous procéder\footnote{Et c'est une vraie question !} ?
|
||||||
|
|
||||||
|
Une première piste : http://tools.ietf.org/html/rfc3117
|
||||||
|
|
||||||
|
% ----------------------------------------------------------------
|
||||||
|
\section{Un exemple}
|
||||||
|
|
||||||
|
XXX\index{XXX}
|
||||||
|
|
||||||
|
% ----------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
13
main.tex
13
main.tex
@ -39,10 +39,15 @@ Mais elles sont en vrac, et surtout, elles sont reprises
|
|||||||
d'une très ancienne version (circa 2011) et donc,
|
d'une très ancienne version (circa 2011) et donc,
|
||||||
peut-être pas vraiment d'actualité.
|
peut-être pas vraiment d'actualité.
|
||||||
|
|
||||||
|
\vspace{5em}
|
||||||
|
|
||||||
|
|
||||||
Tout cette ouvrage a été écrit avec mousepad et \LaTeX{}
|
Tout cette ouvrage a été écrit avec mousepad et \LaTeX{}
|
||||||
selon la méthode éprouvée dite
|
selon la méthode éprouvée dite
|
||||||
de «~La~Rache~», essentiellement sur une machine Debian/amd64.
|
de «~La~Rache~», essentiellement sur une machine Debian/amd64.
|
||||||
|
|
||||||
|
\vspace{5em}
|
||||||
|
|
||||||
Your mileage may vary\dots
|
Your mileage may vary\dots
|
||||||
|
|
||||||
|
|
||||||
@ -69,7 +74,7 @@ Your mileage may vary\dots
|
|||||||
\input{chap/dino}
|
\input{chap/dino}
|
||||||
\input{chap/textes}
|
\input{chap/textes}
|
||||||
% \input{chap/MINITEL}
|
% \input{chap/MINITEL}
|
||||||
% \input{chap/threads}
|
\input{chap/threads}
|
||||||
% \input{chap/dosbox}
|
% \input{chap/dosbox}
|
||||||
\input{chap/photos}
|
\input{chap/photos}
|
||||||
\input{chap/reseau}
|
\input{chap/reseau}
|
||||||
@ -82,9 +87,9 @@ Your mileage may vary\dots
|
|||||||
\input{chap/gadgets}
|
\input{chap/gadgets}
|
||||||
% \input{chap/slang}
|
% \input{chap/slang}
|
||||||
\input{chap/curses}
|
\input{chap/curses}
|
||||||
% \input{chap/WiFi}
|
\input{chap/WiFi}
|
||||||
% \input{chap/GIT}
|
\input{chap/GIT}
|
||||||
% \input{chap/divers}
|
\input{chap/divers}
|
||||||
% \input{chap/peer2peer}
|
% \input{chap/peer2peer}
|
||||||
|
|
||||||
% ==============================================================
|
% ==============================================================
|
||||||
|
Loading…
Reference in New Issue
Block a user