+ git,wifi,divers,threads chapters
Este commit está contenido en:
		
							padre
							
								
									e038d2feda
								
							
						
					
					
						commit
						9a9d3108ba
					
				
							
								
								
									
										50
									
								
								chap/GIT.tex
									
									
									
									
									
										Archivo normal
									
								
							
							
						
						
									
										50
									
								
								chap/GIT.tex
									
									
									
									
									
										Archivo normal
									
								
							| @ -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
									
									
									
									
									
										Archivo normal
									
								
							
							
						
						
									
										75
									
								
								chap/WiFi.tex
									
									
									
									
									
										Archivo normal
									
								
							| @ -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
									
									
									
									
									
										Archivo normal
									
								
							
							
						
						
									
										38
									
								
								chap/divers.tex
									
									
									
									
									
										Archivo normal
									
								
							| @ -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
									
									
									
									
									
										Archivo normal
									
								
							
							
						
						
									
										50
									
								
								chap/threads.tex
									
									
									
									
									
										Archivo normal
									
								
							| @ -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, | ||||
| peut-être pas vraiment d'actualité. | ||||
| 
 | ||||
| \vspace{5em} | ||||
| 
 | ||||
| 
 | ||||
| Tout cette ouvrage a été écrit avec mousepad et \LaTeX{} | ||||
| selon la méthode éprouvée dite | ||||
| de «~La~Rache~», essentiellement sur une machine Debian/amd64. | ||||
| 
 | ||||
| \vspace{5em} | ||||
| 
 | ||||
| Your mileage may vary\dots | ||||
| 
 | ||||
| 
 | ||||
| @ -69,7 +74,7 @@ Your mileage may vary\dots | ||||
| \input{chap/dino} | ||||
| \input{chap/textes} | ||||
| % \input{chap/MINITEL} | ||||
| % \input{chap/threads} | ||||
| \input{chap/threads} | ||||
| % \input{chap/dosbox} | ||||
| \input{chap/photos} | ||||
| \input{chap/reseau} | ||||
| @ -82,9 +87,9 @@ Your mileage may vary\dots | ||||
| \input{chap/gadgets} | ||||
| % \input{chap/slang} | ||||
| \input{chap/curses} | ||||
| % \input{chap/WiFi} | ||||
| % \input{chap/GIT} | ||||
| % \input{chap/divers} | ||||
| \input{chap/WiFi} | ||||
| \input{chap/GIT} | ||||
| \input{chap/divers} | ||||
| % \input{chap/peer2peer} | ||||
| 
 | ||||
| % ============================================================== | ||||
|  | ||||
		Cargando…
	
		Referencia en una nueva incidencia
	
	Block a user