Due correzioni dell'indirizzo del CVS.
[gapil.git] / html / gapil.html
1 <?xml version="1.0" encoding="iso-8859-1"?> 
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
4 "DTD/xhtml1-strict.dtd">
5
6 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="it">
7   <head>
8    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9     <title>GaPiL -- Guida alla Programmazione in Linux</title>
10     <meta name="author" content="Simone Piccardi" />
11     <meta name="title" content="Guida alla Programmazione in Linux" />
12     <meta name="description" content="Un manuale di programmazione avanzata in
13       Linux" />
14     <meta name="keywords" content="programmazione, programmazione linux, 
15       POSIX, programmazione avanzata "/>
16     <style type="text/css">
17 <!--
18  a {text-decoration: none;}
19  td {font-family: sans-serif}
20 -->
21     </style>
22   </head>
23   <body link="mediumslateblue" vlink="mediumblue" alink="red" bgcolor="white">
24
25     <table cellspacing="0" cellpadding="0" border="0" width="800">
26       <tbody>
27         <tr>
28           <td width="170" align="center">
29             <img src="gapil.png" width="160" border="0" />
30           </td>
31           <td valign="bottom" align="left" bgcolor="white">
32             <table cellspacing="0">
33               <tr>
34                 <td>
35                   <font face="sans-serif" size="+4" 
36                     color="darkred" style="font-size: 22pt"> 
37                     <b>Guida alla Programmazione in Linux</b> 
38                     <br />
39                       <font color="midnightblue">
40                         <b>Simone Piccardi</b>
41                       </font>
42                   </font>
43                 </td>
44               </tr>
45             </table>
46           </td>
47         </tr>
48       </tbody>
49     </table>
50
51     <table width="790" cellspacing="0" cellpadding="3" border="0">
52       <tbody>
53         <tr>
54           <td width="164" align="center" >
55           </td>
56           <td align="center" bgcolor="#dddddd">
57             <a target="_parent"  href="index.html">
58               <font face="sans-serif">
59                 <b>Home</b>
60               </font>
61             </a> 
62           </td>
63           <td align="center" bgcolor="#dddddd">
64             <a target="_parent"  href="stampa.html">
65               <font face="sans-serif">
66                 <b>Download</b>
67               </font>
68             </a> 
69           </td>
70           <td align="center" bgcolor="#dddddd">
71             <a target="_parent"  
72               href="http://www.lilik.it/~mirko/gapil/gapil.html">
73               <font face="sans-serif" color="darkred">
74                 <b>Versione online</b>
75               </font>
76             </a>
77           </td>
78           <td align="center" bgcolor="#dddddd">
79             <a target="_parent"  
80               href="http://cvs.firenze.linux.it/cgi-bin/viewcvs.cgi/gapil/?cvsroot=misc">
81               <font face="sans-serif">
82                 <b>CVS</b>
83               </font>
84             </a>
85           </td>
86         </tr>
87       </tbody>
88     </table>
89
90 <!-- CUT HERE -->
91     <table width="800" cellspacing="10" cellpadding="10" border="0">
92       <tbody>
93         <tr>
94           <td width="130" valign="top"><b>
95               <font color="#0000aa">
96                 Il progetto
97               </font>
98             </b>
99           </td>
100           <td bgcolor="lightblue"> 
101             
102             <b>GaPiL</b> nasce dalla mia convinzione profonda che la <a
103               href="http://www.gnu.org/philosophy/philosophy.it.html">
104               "filosofia"</a> che ispira il software libero si applichi anche
105               ad altri campi che non siano necessariamente quelli della
106               scrittura di programmi per computer. In particolare ritengo che
107               possa assumere una grande rilevanza in ambiti come quelli
108               dell'educazione e della formazione.
109            
110             <p> Ma se trovare della buona documentazione libera, specie per
111                 quanto riguarda i programmi che girano sul sistema GNU/Linux,
112                 è ormai relativamente facile, la produzione di buoni testi
113                 didattici è ancora molto limitata, soprattutto se li si cercano
114                 in lingua italiana.
115             </p>
116             <p> <b>GaPiL</b> è un tentativo di scrivere un manuale di
117                 programmazione di sistema in ambiente Linux, con una
118                 particolare attenzione alle caratteristiche specifiche delle
119                 interfacce fornite dal kernel. Benché buona parte della
120                 trattazione delle funzioni di libreria faccia riferimento a
121                 standard generali come POSIX, si è comunque data una
122                 attenzione particolare alle GNU libc, che sono la versione più
123                 usata delle librerie del C, senza dimenticare, ove note, di
124                 citare le differenze con possibili alternative come le libc5 o
125                 le uclibc.
126             </p>
127             <p>
128                 L'obiettivo resta comunque quello di riuscire a produrre un
129                 testo, rilasciato sotto <a
130                 href="http://www.gnu.org/copyleft/fdl.html">GNU FDL</a>, che
131                 possa servire a chi si accosta per la prima volta alla
132                 programmazione avanzata e di sistema su un kernel Linux, con
133                 la speranza di poter un giorno raggiungere la qualità dei
134                 lavori del compianto R. W. Stevens.
135             </p>
136           </td>
137         </tr> 
138         <tr>
139           <td width="130" valign="top">
140             <b>
141               <font color="#0000aa">
142                 Disponibilità
143               </font>
144             </b>
145           </td>
146           <td bgcolor="lightblue"> 
147
148               <b>GaPiL</b> nasce come libro e come tale la versione di
149               riferimento è quella in PDF, accessibile nella sezione <a
150               href="stampa.html"> <font face="sans-serif"> <b>Download</b>
151               </font></a>. Grazie all'opera di Mirko Maischberger abbiamo
152               anche una bellissima versione HTML, accessibile nella sezione <a
153               href="http://www.lilik.it/~mirko/gapil/gapil.html"> <font
154               face="sans-serif"> <b>online</b></font></a>, finalmente
155               all'altezza della versione stampabile.
156           </td>
157         </tr>
158         <tr>
159           <td width="130" valign="top">
160             <b>
161               <font color="#0000aa">
162                 Stato
163               </font>
164             </b>
165           </td>
166           <td bgcolor="lightblue"> <b>GaPiL</b> è in continua evoluzione ma
167             alcune parti hanno raggiunto una "stabilità" sufficiente (nel
168             senso che le ho riviste, le ritengo abbastanza complete, e non
169             sono stato capace di accorgermi degli errori che ci ho lasciato)
170             altre sono da rivedere, altre sono solo parzialmente accennate. La
171             situazione attuale è la seguente:
172             <table width="600" cellspacing="5">
173               <tbody>
174                 <tr>
175                   <td valign="top"> <b> Cap. 1 </b> </td>
176                   <td valign="top"> Introduzione </td> 
177                   <td valign="top"> quasi completo e parzialmente revisionato
178                   </td>
179                 </tr>
180                 <tr>
181                   <td valign="top"> <b> Cap. 2-3 </b> </td>
182                   <td valign="top"> Gestione dei processi </td>
183                   <td valign="top"> quasi completi e parzialmente revisionati
184                   </td>
185                 </tr>
186                 <tr>
187                   <td valign="top"> <b> Cap. 4-7 </b> </td>
188                   <td valign="top"> Gestione base dei file </td>
189                   <td valign="top"> quasi completi e parzialmente revisionati
190                   </td>
191                 </tr>
192                 <tr>
193                   <td valign="top"> <b> Cap. 8 </b> </td>               
194                   <td valign="top"> Sistema, parametri, errori</td> 
195                   <td valign="top"> quasi completo, da revisionare</td>
196                 </tr>
197                 <tr>
198                   <td valign="top"> <b> Cap. 9 </b> </td>
199                   <td valign="top"> Segnali</td> 
200                   <td valign="top"> quasi completo, da revisionare </td>
201                 </tr>
202                 <tr>
203                   <td valign="top"> <b> Cap. 10 </b> </td>
204                   <td valign="top"> Sessioni e terminali</td> 
205                   <td valign="top"> sessioni complete, da revisionare, 
206                     terminali quasi completi. </td>
207                 </tr>
208                 <tr>
209                   <td valign="top"> <b> Cap. 11 </b> </td>
210                   <td valign="top"> Gestione avanzata dei file</td> 
211                   <td valign="top"> 
212                     I/O non bloccante, asincrono, memory
213                     mapped completo, da revisionare, file locking
214                     completo, da revisionare.  
215                   </td>
216                 </tr>
217                 <tr>
218                   <td valign="top"> <b> Cap. 12 </b> </td>
219                   <td valign="top"> IPC </td> 
220                   <td valign="top"> pipe, fifo e code, semafori, 
221                     memoria condivisa, tecniche alternative completi, da
222                     revisionare, IPC POSIX quasi completo. 
223                   </td>
224                 </tr>
225                 <tr>
226                   <td valign="top"> <b> Cap. 13 </b> </td>
227                   <td valign="top"> Introduzione alla rete</td> 
228                   <td valign="top"> completo, da revisionare </td>
229                 </tr>
230                 <tr>
231                   <td valign="top"> <b> Cap. 14 </b> </td>
232                   <td valign="top"> I socket</td> 
233                   <td valign="top"> completo, da revisionare. Manca la
234                   trattazione di eventuali ulteriori famiglie. </td>
235                 </tr>
236                 <tr>
237                   <td valign="top"> <b> Cap. 15-16 </b> </td>
238                   <td valign="top"> I socket TCP </td> 
239                   <td valign="top"> socket TCP elementari completo, da
240                     revisionare. Socket TCP avanzati appena iniziato,
241                     in fase di stesura.
242
243                   </td>
244                 </tr>
245                 <tr>
246                   <td valign="top"> <b> Appendici </b> </td>
247                   <td valign="top"> I protocolli, gli errori, ecc.</td> 
248                   <td valign="top"> Materiale messo insieme alla
249                   rinfusa, e da rivedere da zero.
250                   </td>
251                 </tr>
252               </tbody>
253             </table>
254             <p>
255               <b> Versione corrente:</b> 499 pagine.
256             </p>
257           </td>
258         </tr>
259         <tr>
260           <td width="130" valign="top">
261             <b>
262               <font color="#0000aa">
263                 Notizie
264               </font>
265             </b>
266           </td>
267           <td bgcolor="lightblue"> 
268
269               <b>26 - dicembre - 2003</b> <br/> Inserito esempio di server
270               basato sull'I/O multiplexing. Ristrutturato il capitolo sui file
271               avanzati scorporando in una sezione a parte l'I/O multiplexing,
272               e inserendo alcuni esempi per <b>pselect</b>. Creata una terza
273               parte per le appendici.
274             <p>
275               <b>8 - novembre - 2003</b> <br/> Corretta tabella sbagliata al
276               capitolo 5, completata la sezione sull'uso dell'I/O multiplexing
277               sul lato client ed iniziata la versione server, inserita la
278               trattazione della funzione shutdown.
279             </p>
280             <p>
281               <b>21 - settembre - 2003</b> <br/> Completato il capitolo sui
282               socket elementari, e corretti numerosi errori. Revisione della
283               sezione sull'I/O multiplexing nel capitolo sui file avanzati in
284               vista dell'uso nel capitolo sui socket TCP avanzati.
285             </p>
286             <p>
287               <b>6 - aprile - 2003</b> <br/> Grazie all'incredibile lavoro di
288               Mirko Maischberger abbiamo una favolosa versione in HTML, che
289               collego direttamente dalla sua home page. Non finirò mai di
290               ringraziarlo per aver domato htlatex fino a produrre la prima
291               versione di GaPiL realmente consuntabile on line. Con
292               l'occasione è stata completamente revisionata la parte di
293               introduzione alle reti.
294             </p>
295             <p>
296               <b>10 - marzo - 2003</b> <br/> Completata la memoria condivisa
297               POSIX, introdotte le relative funzioni di interfaccia,
298               revisionati ed ampliati i capitoli sull'introduzione alla rete
299               ed ai socket.
300             </p>
301             <p>
302               <b>20 - febbraio - 2003</b> <br/> Completata la sezione sulle
303               alternative al SysV IPC, introdotte le code di messaggi POSIX,
304               un esempio di uso della memoria condivisa, e parecchie revisioni
305               generali.
306             </p>
307             <p>
308               <b>10 - dicembre - 2002</b> <br/> Completata la sezione sul file
309               locking, inserita una nuova sezione sulle alternative al SysV
310               IPC, estesa la parte sulla memoria condivisa, fatta una
311               revisione generale degli indici.
312             </p>
313             <p>
314               <b>26 - ottobre - 2002</b> <br/> Revisione di terminali, code di
315               messaggi e advisory file locking.  Aggiunta la struttura dei
316               semafori SysV IPC, del file locking in stile POSIX, ed un
317               contributo di Daniele Masini sull'allocazione della memoria.
318             </p>
319             <p>
320               <b>18 - ottobre - 2002</b> <br/> Aggiunte: trattazione elementare
321               dei terminali, dei semafori di System V IPC, del file locking in
322               stile BSD.
323             </p>
324             <p>
325               <b>24 - settembre - 2002</b> <br/> Spostato tutto sul CVS
326               pubblico del FLUG che consente l'accesso anonimo. Aggiunta una
327               trattazione preliminare delle code di messaggi di System V IPC e
328               del controllo di sessione.
329             </p>
330             <p>
331               <b>20 - agosto - 2002</b> <br/> Completata la stesura preliminare
332               del memory mapped I/O, inserito un esempio di server basato
333               sulle FIFO, completata la versione iniziale dell'introduzione
334               al System V IPC.
335             </p>
336             <p>
337               <b>7 - agosto - 2002</b> <br/> Completata la prima stesura delle
338               sezioni relative all'I/O asincrono ed ai segnali real-time,
339               iniziata la stesura della sezione sul memory mapped I/O.
340             </p>
341             <p>
342               <b>22 - luglio - 2002</b> <br/> Iniziata la stesura del capitolo
343               sull'I/O avanzato. Completata la sezione su pipe e FIFO (in
344               versione preliminare) inziate le sezioni su I/O asincrono ed una
345               sezione aggiuntiva sui segnali real-time nel relativo capitolo.
346             </p>
347             <p>
348               <b>3 - luglio - 2002</b> <br/> Prima versione del sito, con
349               rilascio della prima versione di GaPiL in un HTML passabile.
350               <br/>
351               Sono in versione preliminare, ma ricontrollati e di qualità
352               accettabile, i capitoli dal primo al nono: introduzione,
353               gestione dei processi, interfacce di base per i file e per il
354               controllo dei parametri del sistema, gestione dei segnali. Sono
355               da ricontrollare, ma di qualità decente, i capitoli dal
356               tredicesimo al sedicesimo: reti e socket elementari (il
357               sedicesimo capitolo è incompleto). Sono in corso di stesura, e
358               pertanto di qualità non classificabile (che può oscillare fra la
359               bozza non rivista ed il semplice elenco degli argomenti) gli
360               altri capitoli.
361             </p>
362           </td>
363         </tr>
364      </tbody>
365     </table>
366 <!-- CUT HERE -->
367   </body>
368 </html>