d1e73493b77bb57c5f3c0dd20137f555ec392cf9
[gapil.git] / gapil.html
1 <?xml version="1.0" encoding="utf-8"?> 
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=utf-8" />
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="stato.html">
65               <font face="sans-serif">
66                 <b>Stato</b>
67               </font>
68             </a> 
69           </td>
70           <td align="center" bgcolor="#dddddd">
71             <a target="_parent"  href="download.html">
72               <font face="sans-serif">
73                 <b>Download</b>
74               </font>
75             </a> 
76           </td>
77           <td align="center" bgcolor="#dddddd">
78             <a target="_parent"  
79               href="http://www.lilik.it/~mirko/gapil/gapil.html">
80               <font face="sans-serif" color="darkred">
81                 <b>Versione online</b>
82               </font>
83             </a>
84           </td>
85           <td align="center" bgcolor="#dddddd">
86             <a target="_parent"  
87               href="http://gapil.truelite.it/sources">
88               <font face="sans-serif">
89                 <b>Trac</b>
90               </font>
91             </a>
92           </td>
93         </tr>
94       </tbody>
95     </table>
96
97 <!-- CUT HERE -->
98     <table width="1000" cellspacing="10" cellpadding="10" border="0">
99       <tbody>
100         <tr>
101           <td width="130" valign="top"><b>
102               <font color="#0000aa">
103                 Il progetto
104               </font>
105             </b>
106           </td>
107           <td bgcolor="lightblue"  width="600">             
108             <b>GaPiL</b> nasce dalla mia convinzione profonda che la <a
109               href="http://www.gnu.org/philosophy/philosophy.it.html">
110               "filosofia"</a> che ispira il software libero si applichi anche
111               ad altri campi che non siano necessariamente quelli della
112               scrittura di programmi per computer. In particolare ritengo che
113               possa assumere una grande rilevanza in ambiti come quelli
114               dell'educazione e della formazione.
115            
116             <p> Ma se trovare della buona documentazione libera, specie per
117                 quanto riguarda i programmi che girano sul sistema GNU/Linux,
118                 è ormai relativamente facile, la produzione di buoni testi
119                 didattici è ancora molto limitata, soprattutto se li si cercano
120                 in lingua italiana.
121             </p>
122             <p> <b>GaPiL</b> è un tentativo di scrivere un manuale di
123                 programmazione di sistema in ambiente Linux, con una
124                 particolare attenzione alle caratteristiche specifiche delle
125                 interfacce fornite dal kernel. Per questo motivo si parla di
126                 Linux e non di GNU/Linux.
127             </p>
128             <p> Nonostante questa specificità, essendo la gran parte delle
129                 funzioni di sistema standardizzate, la guida dovrebbe
130                 risultare utile anche facendo riferimenti ad altri sistemi di
131                 tipo Unix come BSD, in ogni caso si sono sottolineate
132                 esplicitamente le caratteristiche specifiche di Linux.  
133             </p>
134             <p>
135                 Benché buona parte della trattazione delle funzioni di
136                 libreria sia del tutto identica, facendo riferimento a
137                 standard generali come POSIX, si 
138                 è comunque prestata particolare attenzione alle funzioni delle
139                 GNU libc, che sono la versione più usata delle librerie del C,
140                 senza dimenticare, ove note, di citare le differenze con
141                 possibili alternative come le libc5 o le uclibc.
142             </p>
143             <p>
144                 L'obiettivo resta comunque quello di riuscire a produrre un
145                 testo, rilasciato sotto <a
146                 href="http://www.gnu.org/copyleft/fdl.html">GNU FDL</a>, che
147                 possa servire a chi si accosta per la prima volta alla
148                 programmazione avanzata e di sistema su un kernel Linux, con
149                 la speranza di poter un giorno raggiungere la qualità dei
150                 lavori del compianto R. W. Stevens.
151             </p>
152           </td>
153           <td valign="top">
154 <!-- Generated by OpenX 2.8.5 -->
155 <script type='text/javascript' src='http://openx.fountainpen.it/www/delivery/spcjs.php?id=3'></script>
156 <script type='text/javascript'><!--// <![CDATA[
157     /* [id3] gapil.truelite.it - Default */
158         OA_show(3);
159 // ]]> --></script><noscript><a target='_blank' href='http://openx.fountainpen.it/www/delivery/ck.php?n=80aa9ec'><img border='0' alt='' src='http://openx.fountainpen.it/www/delivery/avw.php?zoneid=3&amp;n=80aa9ec' /></a></noscript>
160           </td>
161         </tr> 
162         <tr>
163           <td width="130" valign="top">
164             <b>
165               <font color="#0000aa">
166                 Altro materiale
167               </font>
168             </b>
169           </td>
170           <td bgcolor="lightblue"> 
171           
172             Potete trovare altra documentazione libera di vario tipo (non
173             necessariamente attinente l'informatica) prodotta da me
174             all'indirizzo: <a
175             href="http://firenze.linux.it/~piccardi/pubblicazioni.html">
176             http://firenze.linux.it/~piccardi/pubblicazioni.html</a>
177             <p>
178             Invece la documentazione tecnica più recente che ho prodotto è
179             pubblicata sul sito di <a href="http://www.truelite.it">Truelite
180             Srl</a>, ed in particolare sono disponibili una serie di manuali
181             su temi di natura sistemistica a partire da <a href=
182             "http://labs.truelite.it/truedoc">
183             http://labs.truelite.it/truedoc</a>.
184             </p>
185             <p>
186             Infine, sia per dar sfogo ad una passione personale, che per
187             giocare con Mediawiki, ho creato una sito dedicato alla storia
188             della penna stilografica, con molto materiale ed informazioni,
189             sempre libere, all'indirizzo:
190             <a
191             href="http://www.fountainpen.it">
192             http://www.fountainpen.it</a>
193             <p>
194             </p>
195           </td>
196         </tr>
197         <tr>
198           <td width="130" valign="top">
199             <b>
200               <font color="#0000aa">
201                 Notizie
202               </font>
203             </b>
204           </td>
205           <td bgcolor="lightblue"> 
206               <b>6 - dicembre - 2008</b> <br/> Aggiornata la versione cartacea
207                acquistabile su lulu.com, all'indirizzo 
208               <a href="http://stores.lulu.com/piccardi">
209                 http://stores.lulu.com/piccardi</a>, contiene le ultime
210                 novità in particolare riguardo le funzioni delle ACL. Si
211                 ricorda che il sovrapprezzo serve a finanziare lo sviluppo del
212                 testo; si può sempre scaricare la versione corrente aggiornata
213                 e gratuita da questo sito.
214             <p>
215               <b>5 - gennaio - 2007</b> <br/> Pubblicata una versione
216               stampabile a richiesta su lulu.com, ordinabile all'indirizzo 
217               <a href="http://stores.lulu.com/piccardi">
218                 http://stores.lulu.com/piccardi</a>. 
219             <p>
220               <b>1 - giugno - 2006</b> <br/> Nuova revisione con varie aggiunte
221               e correzioni, in occasione della pubblicazione sul DVD di
222               LinuxPro. 
223             <p>
224               <b>11 - marzo - 2005</b> <br/> Modificata la pagina dell'accesso
225               ai sorgenti, non viene più utilizzato ViewCVS ma è stato
226               installato il sistema di tracking <a
227               href="http://www.edgewall.com/trac/">trac</a> che oltre alla
228               navigazione dei contenuti consente di tenere sotto controllo le
229               revisioni, e l'evoluzione della guida e di inviare ticket via
230               web.
231             <p>
232               <b>6 - marzo - 2005</b> <br/> Realizzato un web server
233               elementare a scopo didattico, in vista <a href="
234               http://www.lilik.it/page.php?pg=gapil">dell'iniziativa del
235               Lilik</a> su GaPiL.
236             <p>
237               <b>12 - gennaio - 2005</b> <br/> Completata la sezione sulla
238               gestione della risoluzione degli indirizzi ed iniziata la
239               sezione sulle opzioni dei socket.
240             <p>
241               <b>19 - luglio - 2004</b> <br/> Completata una prima sezione sui
242               socket UDP ed iniziata una sezione sulle funzioni per la
243               risoluzione degli indirizzi. Inoltre da oggi i sorgenti di Gapil
244               sono accessibili usando <a href="http://subversion.tigris.org/">
245               Subversion</a> sul sito di <a
246               href="http://www.truelite.it">Truelite Srl</a>.
247             <p>
248               <b>3 - marzo - 2004</b> <br/> Ristrutturata la parte sulla
249               programmazione di rete, inserita la sezione sull'I/O
250               multiplexing (completata con esempio di server basato su
251               <b>poll</b>) nella sezione sui socket TCP. Introdotti i nuovi
252               capitoli sugli altri socket, ed iniziata la sezione sui socket
253               UDP. 
254             <p>
255               <b>26 - dicembre - 2003</b> <br/> Inserito esempio di server
256               basato sull'I/O multiplexing. Ristrutturato il capitolo sui file
257               avanzati scorporando in una sezione a parte l'I/O multiplexing,
258               e inserendo alcuni esempi per <b>pselect</b>. Creata una terza
259               parte per le appendici.
260             <p>
261               <b>8 - novembre - 2003</b> <br/> Corretta tabella sbagliata al
262               capitolo 5, completata la sezione sull'uso dell'I/O multiplexing
263               sul lato client ed iniziata la versione server, inserita la
264               trattazione della funzione shutdown.
265             </p>
266             <p>
267               <b>21 - settembre - 2003</b> <br/> Completato il capitolo sui
268               socket elementari, e corretti numerosi errori. Revisione della
269               sezione sull'I/O multiplexing nel capitolo sui file avanzati in
270               vista dell'uso nel capitolo sui socket TCP avanzati.
271             </p>
272             <p>
273               <b>6 - aprile - 2003</b> <br/> Grazie all'incredibile lavoro di
274               Mirko Maischberger abbiamo una favolosa versione in HTML, che
275               collego direttamente dalla sua home page. Non finirò mai di
276               ringraziarlo per aver domato htlatex fino a produrre la prima
277               versione di GaPiL realmente consuntabile on line. Con
278               l'occasione è stata completamente revisionata la parte di
279               introduzione alle reti.
280             </p>
281             <p>
282               <b>10 - marzo - 2003</b> <br/> Completata la memoria condivisa
283               POSIX, introdotte le relative funzioni di interfaccia,
284               revisionati ed ampliati i capitoli sull'introduzione alla rete
285               ed ai socket.
286             </p>
287             <p>
288               <b>20 - febbraio - 2003</b> <br/> Completata la sezione sulle
289               alternative al SysV IPC, introdotte le code di messaggi POSIX,
290               un esempio di uso della memoria condivisa, e parecchie revisioni
291               generali.
292             </p>
293             <p>
294               <b>10 - dicembre - 2002</b> <br/> Completata la sezione sul file
295               locking, inserita una nuova sezione sulle alternative al SysV
296               IPC, estesa la parte sulla memoria condivisa, fatta una
297               revisione generale degli indici.
298             </p>
299             <p>
300               <b>26 - ottobre - 2002</b> <br/> Revisione di terminali, code di
301               messaggi e advisory file locking.  Aggiunta la struttura dei
302               semafori SysV IPC, del file locking in stile POSIX, ed un
303               contributo di Daniele Masini sull'allocazione della memoria.
304             </p>
305             <p>
306               <b>18 - ottobre - 2002</b> <br/> Aggiunte: trattazione elementare
307               dei terminali, dei semafori di System V IPC, del file locking in
308               stile BSD.
309             </p>
310             <p>
311               <b>24 - settembre - 2002</b> <br/> Spostato tutto sul CVS
312               pubblico del FLUG che consente l'accesso anonimo. Aggiunta una
313               trattazione preliminare delle code di messaggi di System V IPC e
314               del controllo di sessione.
315             </p>
316             <p>
317               <b>20 - agosto - 2002</b> <br/> Completata la stesura preliminare
318               del memory mapped I/O, inserito un esempio di server basato
319               sulle FIFO, completata la versione iniziale dell'introduzione
320               al System V IPC.
321             </p>
322             <p>
323               <b>7 - agosto - 2002</b> <br/> Completata la prima stesura delle
324               sezioni relative all'I/O asincrono ed ai segnali real-time,
325               iniziata la stesura della sezione sul memory mapped I/O.
326             </p>
327             <p>
328               <b>22 - luglio - 2002</b> <br/> Iniziata la stesura del capitolo
329               sull'I/O avanzato. Completata la sezione su pipe e FIFO (in
330               versione preliminare) inziate le sezioni su I/O asincrono ed una
331               sezione aggiuntiva sui segnali real-time nel relativo capitolo.
332             </p>
333             <p>
334               <b>3 - luglio - 2002</b> <br/> Prima versione del sito, con
335               rilascio della prima versione di GaPiL in un HTML passabile.
336               <br/> Sono in versione preliminare, ma ricontrollati e di
337               qualità accettabile, i capitoli dal primo al nono: introduzione,
338               gestione dei processi, interfacce di base per i file e per il
339               controllo dei parametri del sistema, gestione dei segnali. Sono
340               da ricontrollare, ma di qualità decente, i capitoli dal
341               tredicesimo al sedicesimo: reti e socket elementari (il
342               sedicesimo capitolo è incompleto). Sono in corso di stesura, e
343               pertanto di qualità non classificabile (che può oscillare fra la
344               bozza non rivista ed il semplice elenco degli argomenti) gli
345               altri capitoli.
346             </p>
347           </td>
348         </tr>
349      </tbody>
350     </table>
351
352 <!-- Piwik -->
353 <script type="text/javascript">
354 var pkBaseURL = (("https:" == document.location.protocol) ? "https://piwik.fountainpen.it/" : "http://piwik.fountainpen.it/");
355 document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
356 </script><script type="text/javascript">
357 try {
358 var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 3);
359 piwikTracker.trackPageView();
360 piwikTracker.enableLinkTracking();
361 } catch( err ) {}
362 </script><noscript><p><img src="http://piwik.fountainpen.it/piwik.php?idsite=3" style="border:0" alt=""/></p></noscript>
363 <!-- End Piwik Tag -->
364
365 <!-- CUT HERE -->
366   </body>
367 </html>