LKN: Bibliografia: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
(nuova categoria)
 
(32 versioni intermedie di 5 utenti non mostrate)
Riga 1: Riga 1:
Questa pagina raccoglie piccoli suggerimenti per sfruttare al meglio [http://www.vim.org/ Vim] e gVim con il linguaggio di programmazione [http://www.python.org/ Python].
{{Template:LKN}}
__TOC__


== Syntax Higlight ==
Molte delle informazioni contenute in questo libro sono state estratte dalla documentazione del kernel e dal codice sorgente. La documentazione è infatti il miglior posto dove trovare informazioni e riferimenti su come compilare e installare il kernel ed è normalmente tenuta aggiornata a seguito di cambiamenti nella procedura di compilazione.
La prima funzione che generalmente si abilita quando si usa un editor per programmazione � il ''syntax highlight''.


Per abilitarlo in Vim per i vari linguaggi (incluso pyton) � sufficiente decommentare in<tt>/etc/vim/vimrc</tt> la riga:
== Libri ==
Sono disponibili molti ottimi libri relativi alla programmazione del kernel Linux, ma solo pochi di essi trattano la compilazione e installazione del kernel. Ecco un elenco di libri che ho trovato utili.


  syntax on
=== Libri generici su Linux ===


* Ellen Siever, Aaron Weber, Stephen Figgins, Robert Love, e Arnold Robbins. ''Linux in a Nutshell'' (O’Reilly), 2005.<br/>Questo libro comprende una delle più complete e autorevoli guide ai comandi per Linux. Essa copre praticamente ogni singolo comando di cui potreste mai aver bisogno.


== Gestire l'indentazione: TAB, spazi e ''autoindent'' ==
* Yaghmour, Karim. ''Building Embedded Linux Systems'' (O’Reilly), 2003.<br/>Questo libro, sebben principalmente rivolto agli sviluppatori di sistemi Linux embedded, contiene un'ottima sezione relativa a come creare una ''toolchain'' e un kernel con compilazione incrociata. Oltre a questa sezione del libro, è consigliato anche in virtù di altre sezioni che forniscono interessanti informazioni per coloro che vogliono imparare come personalizzare il kernel e il resto del sistema.
In python � di vitale importanza gestire correttamente l'indentazione dato che (a differenza dei linguaggi ''free-form'' come C) questa � parte integrante della sintassi.


Il python di per se riconosce ogni tipo di indentazione (TAB, spazi, o un mix dei due). Nei moderni sistemi il TAB ha tuttavia una larghezza variabile ed impostabile a piacere. Per evitare dunque problemi di interoperabilit� tra persone che usano convezione diverse � universalmente consigliato di usare nei file di codice python solamente spazi oppure solamente TAB. Anche l'uso esclusivo di TAB pu� talvolta creare dei problemi di visualizzazione (e quindi difficolt� di lettura) a causa di una diversa larghezza usata. Per tagliare la testa al toro, dunque, il modo pi� robusto e portabile di programmare in python � quello di usare soltanto spazi. &Egrave; possibile impostare qualsiasi editor per programmazione in modo da sostituire automaticamente al TAB un numero di spazi pari alla larghezza dell'indentazione, e ovviamente anche Vim non � da meno. La larghezza per una unit� di indentazione usata quasi universalmente in python � pari ad una larghezza di 4 spazi. Per ricapitolare il nostro scopo � ottenere:
=== Libri inerenti il kernel Linux ===


* Sostituzione alla pressione del tasto TAB con un numero equivalente di spazi
Molti di questi libri sono indirizzati ai programmatori interessati ad apprendere come programmare all'interno del kernel. Sono generalmente molto tecnici rispetto a questo libro, ma sono un ottimo punto di partenza se desiderate imparare e capire il codice che governa il kernel.
* Larghezza indentazione pari a 4 spazi.


Per ottenere questo comportamento in Vim/gVim si pu� inserire il seguente codice nel file di configurazione <tt>/etc/vim/vimrc</tt>:
*Jonathan Corbet, Alessandro Rubini, e Greg Kroah-Hartman. ''Linux Device Drivers'' (O’Reilly), 2005.<br/>Questo libro illustra come differenti ''device driver'' operano e fornisce parecchi esempi applicatici di driver funzionanti. &Egrave; consigliato a chiunque vuole programmare driver per il kernel. &Egrave; disponibile in rete gratuitamente a questo indirizzo: http://lwn.net/Kernel/LDD3/


  filetype plugin indent on
* Love, Robert. ''Linux Kernel Development'' (Novell Press Publishing), 2005.<br/> Questo libro copre quasi tutti gli aspetti relativi al kernel Linux, illustrando come tutto opera insieme. Ottimo punto di partenza per iniziare a capire e conoscere le diverse componenti del kernel.
  autocmd FileType python      setlocal sw=4 sts=4 et tw=78 sta


La prima riga abilita l'indentazione automatica per i vari linguaggi di programmazione. In particolare per il python, se ad esempio dichiariamo una funzione su una riga, andando a capo avremo gi� il cursore indentato per poter scrivere il corpo della funzione con la giusta indenzatione. Stessa cosa vale per i vari <tt>'''if'''</tt>, <tt>'''for'''</tt>, ecc... Questa funzione � utile anche per accorgersi di errori sintattici come la mancanza dei :, poich� la loro assenza fa si che il cursore non venga indentato.
* Bovet, Daniel P. e Cesate, Marco. ''Understanding the Linux Kernel'' (O’Reilly), 2005.<br/> Questo libro si addentra negli aspetti relativi la progettazione e implementazione del nucleo del kernel Linux. Un ottimo riferimento per apprendere e capire gli algoritmi utilizzati nelle diverse porzioni del kernel. Fortemente consigliato a coloro che vogliono comprendere nel dettaglio come funziona il kernel.


La seconda riga associa ai tipi di file python le seguenti impostazioni:
== Strumenti ==


;<tt>tabstop</tt> oppure <tt>ts</tt>: larghezza del ''carattere TAB'', quando incontrato nel file. Noi non useremo ''caratteri TAB'' quindi questa impostazione pu� essere ignorata (e non � riportata infatti nell'esempio precendente). Viene elencata qui solo per chiarezza e completezza.
In questo libro sono stati menzionati molti utili strumenti. Di seguito, presento un elenco dei siti dove è possibile reperire e scaricare tali strumenti.


;<tt>expandtab</tt> oppure <tt>et</tt>: riempe con spazi le indentazioni generate dalla pressione del tasto TAB.
* ''Linux kernel''<br/> http://www.kernel.org e ftp://ftp.kernel.org contiene tutte le versioni del sorgente del kernel. http://www.kernel.org/git/ contiene una lista di tutti i ''git trees'' utilizzati dai diversi sviluppatori del kernel.


;<tt>softtabstop</tt> oppure <tt>sts</tt>: larghezza di un rientro causato dalla pressione di un TAB. Il rientro � creato inserendo spazi se <tt>'''et'''</tt> � settato, altrimenti viene usata una combinazione di spazi e caratteri TAB (questi ultimi hanno larghezza <tt>'''ts'''</tt>).
* ''gcc''<br>http://gcc.gnu.org/ sito principale per tutto ciò che concerne il compilatore GNU C.  


;<tt>shiftwidth</tt> oppure <tt>sw</tt>: larghezza di un rientro dell'indentazione automatica. &Egrave; usato anche per definire la larghezza del rientro che si aggiunge o toglie ad un blocco di testo quando si seleziona (con '''v''') e poi si indenta/deindenta con '''>''' o con '''<'''.
* ''binutils''<br/>http://www.gnu.org/software/binutils/ è il sito principale dove trovare tutte le informazioni su binutils.


;<tt>smarttab</tt> oppure <tt>sta</tt>: In combinazione con le opzioni precendenti questa impostazione permette di cancellare un rientro (4 spazi ''reali ''nel nostro caso) con una sola pressione del tasto '''BS''' (o '''BackSpace''').
* ''make''<br/>http://www.gnu.org/software/make/ è il sito principale dove trovare tutte le informazioni su make.


*''util-linux''<br/>http://www.kernel.org/pub/linux/utils/util-linux/ è la directory da dove possono essere scaricate tutte le versioni di util-linux.


== Folding: le piegature nel codice ==
* ''module-init-tools''<br/>http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/ è la directory da dove possono essere scaricate tutte le versioni di module-init-tools.
Una funzione comoda durante la programmazione � la possibilit� di ripiegare del codice (ad esempio una funzione o una classe) in modo di avere una visione pi� compatta del file e facilitare la navigazione.


Questo � possibile in Vim tramite il ''folding'' (''piegature''). Esistono dei plugin per Vim che riconoscono le strutture sintattiche del python e creano automaticamente le piegature. Tuttavia il metodo illustrato di seguito � ancora pi� semplice: piegature automatiche in base all'indentazione. Nel caso del python questo semplice metodo � particolarmente efficace.  
* ''e2fsprogs''<br/>http://e2fsprogs.sourceforge.net/ è la pagina principale del progetto e2fsprogs.


Per abilitarlo basta inserire in <tt>/etc/vim/vimrc</tt>:
* ''jfsutils''<br/>http://jfs.sourceforge.net/ è la pagina principale del progetto jfsutils.


  set foldmethod=indent
* ''reiserfsprogs''<br/>http://www.namesys.com/download.html è la pagina principale del progetto reiserfsprogs.


Di seguito sono elencati i principali comandi per gestire le piegature:
* ''xfsprogs''<br/>http://oss.sgi.com/projects/xfs/ è la pagina principale del progetto xfsprogs.


;zo oppure Spazio: apre la piegature sotto il cursore (un solo livello)
* ''quota-tools''<br/>http://sourceforge.net/projects/linuxquota/ è la pagina principale del progetto quota-tools.
;zO: apre la piegature sotto il cursore e ricorsivamente tutte le piegature in essa contenute
;zc: chiude la piegatura alla quale appartiene il blocco di codice indicato dal cursore (un solo livello)
;zC: chiude la piegatura alla quale appartiene il blocco di codice indicato dal cursore e ricorsivamente tutte le piegature che la contengono
;zr: apre tutte le piegature del file corrente di un livello
;zR: apre completamente le piegature contenute nel file corrente (tutti i livelli)
;zm: chiude tutte le piegature del file corrente di un livello
;zM: chiude completamente le piegature contenute nel file corrente (tutti i livelli)


* ''nfs-utils''<br/>http://nfs.sf.net/ è la pagina principale del progetto nfs-utils.


== Eseguire python da Vim ==
* ''udev''<br/>http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html è la directory da dove possono essere scaricate tutte le versioni di udev.
Vim possiede caratteristiche avanzate che permettono di impostare i compilatori da usare per ogni linguaggio e il metodo di esecuzione del <code>make</code>.


Nel caso del python propongo una soluzione ''quick and dirty'' che associa ad un tasto l'esecuzione dello script.
* ''procfs''<br/>http://procps.sourceforge.net/ è la pagina principale del progetto procfs.


Aggiungendo nell'ormai famoso <tt>/etc/vim/vimrc</tt>:
* ''patchutils''<br/>http://cyberelk.net/tim/patchutils è la directory da dove possono essere scaricate tutte le versioni di patchutils.


  map <f5> :w<CR>:!python %<CR>
* ''git''<br/>http://git.or.cz/ è il sito principale del progetto git.


alla pressione del tasto F5 verr� eseguito <tt>python</tt> passando come paramentro il file corrente (indicato da '''%''').
* ''ketchup''<br/>http://www.selenic.com/ketchup/ è la pagina principale del progetto ketchup.


* ''quilt''<br/>http://savannah.nongnu.org/projects/quilt è la pagina principale del progetto quilt.


== Autocompletamento (aka omnicompletion) e documentazione integrata ==
* ''distcc''<br/>http://distcc.samba.org/ è la pagina principale del progetto distcc.
Dalla versione 7 in Vim � stata inserita una funzione di autocompletamento intelligente per i vari linguaggi simile a quella presente in alcuni degli IDE pi� avanzati.


[[image: Python-gvim-7-omnicompletion.png|thumb|Screenshot della funzione di omnicompletion di Vim 7 con linguaggio di programmazione Python.]]
* ''ccache''<br/>http://ccache.samba.org/ è la pagina principale del progetto ccache.


Per il python questa funzione permette di completare i nomi delle classi dei metodi e degli attributi tramite un comodo menu contestuale. Inoltre viene anche visualizzata contemporaneamente la docstring del metodo o della classe che si st completando.


Una immagine vale pi di mille parole. Potete notare la funzione di omnicompletion in funzione nello screenshot qui a fianco. Notare come sulla parte superiore della finestra sia apparsa automaticamente la documentazione della classe sulla quale si st operando l'autocompletamento.


Per effettuare l'autocompletamento basta premere "CTRL+x o", ma ricordate che � necessaria la versione 7 (o successive) di Vim. &Egrave; opportuno scaricare anche la versione aggiornata del file che gestisce l'autocompletamento in python. Ecco un link:
----
 
This is an indipendent translation of the book [http://www.kroah.com/lkn/ Linux Kernel in a Nutshell] by [http://www.kroah.com/log/ Greg Kroah-Hartman]. This translation (like the original work) is available under the terms of [http://creativecommons.org/licenses/by-sa/2.5/ Creative Commons Attribution-ShareAlike 2.5].
* [http://www.vim.org/scripts/script.php?script_id=1542 pythoncomplete.vim]
----
 
A volte � anche comodo effettuare un autocompletamento ''non intelligente'', basato sulle parole presenti nel file corrente. Questo autompletamento si ottiene premendo "CTRL+n". Quest'ultimo metodo pu� risultare utile per completare nomi di variabili o di funzioni.
 
 
== Tips and Tricks ==
Alcuni ulteriori consigli nell'uso di Vim:
 
# '''Commentare un blocco di codice'''
#* Premere CTRL+v e selezionare le righe di codice interessate
#* premere <tt>'''I'''</tt> (i grande) e digitare il carattere interessato (solitamente #)
#* premere ESC
# '''Indentare e deindentare un blocco di codice'''
#* Premere <tt>'''V</tt>''' (shift + v) ed entrare in Visual Mode
#* Selezionare la parte di codice da in/deindentare
#* Premere <tt>'''></tt>''' per indentare o <tt>'''<</tt>''' per deindentare di 1 TAB
 
== Conclusioni ==
Questi sono solo piccoli suggerimenti per programmare in python con Vim. Come al solito, ogni correzione, suggerimento o aggiunta � ben accetto e anzi incoraggiato.
 
 
== Link ==
* [http://www.vim.org/ Homepage di Vim]
* [http://www.python.org/ Homepage di Python]
* [http://mail.python.org/pipermail/python-list/2005-July/330551.html Folding in Vim (thread su python list)]


[http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_pdf/appb.pdf ''Capitolo originale'']


----
[[Categoria:Documentazione tecnica]]
Autore iniziale: [[Utente:TheNoise|~ The Noise]]
[[Categoria:Linux Kernel in a Nutshell]]
 
[[Categoria:Desktop]][[Categoria:Tips&Tricks]]

Versione attuale delle 13:15, 28 giu 2013

Linux Kernel in a Nutshell

Sommario

Parte I
Compilare il kernel
  1. Introduzione
  2. Requisiti
  3. Procurarsi i sorgenti
  4. Configurazione e compilazione
  5. Installazione e avvio
  6. Aggiornare il kernel
Parte II
Personalizzazioni principali
  1. Personalizzare un kernel
  2. Ricette per configurare un kernel
Parte III
Guide di riferimento per il kernel
  1. Guida di riferimento dei parametri di boot del kernel - parte1
  2. Guida di riferimento dei parametri di boot del kernel - parte2
  3. Guida di riferimento dei parametri di compilazione del kernel
  4. Guida di riferimento delle opzioni di configurazione del kernel - parte1
  5. Guida di riferimento delle opzioni di configurazione del kernel - parte2
Parte IV
Informazioni aggiuntive
  1. Programmi utili
  2. Bibliografia

Molte delle informazioni contenute in questo libro sono state estratte dalla documentazione del kernel e dal codice sorgente. La documentazione è infatti il miglior posto dove trovare informazioni e riferimenti su come compilare e installare il kernel ed è normalmente tenuta aggiornata a seguito di cambiamenti nella procedura di compilazione.

Libri

Sono disponibili molti ottimi libri relativi alla programmazione del kernel Linux, ma solo pochi di essi trattano la compilazione e installazione del kernel. Ecco un elenco di libri che ho trovato utili.

Libri generici su Linux

  • Ellen Siever, Aaron Weber, Stephen Figgins, Robert Love, e Arnold Robbins. Linux in a Nutshell (O’Reilly), 2005.
    Questo libro comprende una delle più complete e autorevoli guide ai comandi per Linux. Essa copre praticamente ogni singolo comando di cui potreste mai aver bisogno.
  • Yaghmour, Karim. Building Embedded Linux Systems (O’Reilly), 2003.
    Questo libro, sebben principalmente rivolto agli sviluppatori di sistemi Linux embedded, contiene un'ottima sezione relativa a come creare una toolchain e un kernel con compilazione incrociata. Oltre a questa sezione del libro, è consigliato anche in virtù di altre sezioni che forniscono interessanti informazioni per coloro che vogliono imparare come personalizzare il kernel e il resto del sistema.

Libri inerenti il kernel Linux

Molti di questi libri sono indirizzati ai programmatori interessati ad apprendere come programmare all'interno del kernel. Sono generalmente molto tecnici rispetto a questo libro, ma sono un ottimo punto di partenza se desiderate imparare e capire il codice che governa il kernel.

  • Jonathan Corbet, Alessandro Rubini, e Greg Kroah-Hartman. Linux Device Drivers (O’Reilly), 2005.
    Questo libro illustra come differenti device driver operano e fornisce parecchi esempi applicatici di driver funzionanti. È consigliato a chiunque vuole programmare driver per il kernel. È disponibile in rete gratuitamente a questo indirizzo: http://lwn.net/Kernel/LDD3/
  • Love, Robert. Linux Kernel Development (Novell Press Publishing), 2005.
    Questo libro copre quasi tutti gli aspetti relativi al kernel Linux, illustrando come tutto opera insieme. Ottimo punto di partenza per iniziare a capire e conoscere le diverse componenti del kernel.
  • Bovet, Daniel P. e Cesate, Marco. Understanding the Linux Kernel (O’Reilly), 2005.
    Questo libro si addentra negli aspetti relativi la progettazione e implementazione del nucleo del kernel Linux. Un ottimo riferimento per apprendere e capire gli algoritmi utilizzati nelle diverse porzioni del kernel. Fortemente consigliato a coloro che vogliono comprendere nel dettaglio come funziona il kernel.

Strumenti

In questo libro sono stati menzionati molti utili strumenti. Di seguito, presento un elenco dei siti dove è possibile reperire e scaricare tali strumenti.



This is an indipendent translation of the book Linux Kernel in a Nutshell by Greg Kroah-Hartman. This translation (like the original work) is available under the terms of Creative Commons Attribution-ShareAlike 2.5.


Capitolo originale