Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://etnablog.altervista.org/rss.xml

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <rss version="2.0">
  3. <channel>
  4. <title>Etnablog.altervista.org :)</title>
  5. <link>http://etnablog.altervista.org/index.php</link>
  6. <description>Feed di Etnablog.altervista.org :)</description>
  7. <item>
  8. <title>Enoturismo in Sicilia</title>
  9. <link>http://etnablog.altervista.org/sicilia/enoturismo-in-sicilia/</link>
  10. <description> <![CDATA[<p><i>Cantine e Vigne, Degustazioni in cantina</i></p>
  11. <br /> Enoturismo in Sicilia, esperienze di una tradizione millenaria di coltivazione della vite: itinerari del gusto fra vulcani e isole, gli scenari incantevoli di vigneti e antichi palmenti dove degustare pregiati vini di cantine siciliane.<br />
  12. <br />
  13. href=&quot;http://www.sici<br />
  14. lying.com/&quot;&gt;http://www.sicilying<br />
  15. .com/ <a href="http://etnablog.altervista.org/immagini/alessiomaugeri/img_small/Definitivo_16_06_10.jpg"><img src="http://etnablog.altervista.org/immagini/alessiomaugeri/img_small/Definitivo_16_06_10.jpg" title="Definitivo_16_06_10.jpg" alt="Definitivo_16_06_10.jpg" width="100"/></a> ]]>
  16. </description>
  17. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  18. <guid>http://etnablog.altervista.org/sicilia/enoturismo-in-sicilia/</guid>
  19. </item>
  20. <item>
  21. <title>MESSINA, sulla cresta dell'onda con il KITESURF</title>
  22. <link>http://etnablog.altervista.org/sicilia/messina-sulla-cresta-dellonda-con-il-kitesurf/</link>
  23. <description> <![CDATA[<p><i>KITESURFING A MESSINA</i></p>
  24. <br /> Ã\x88 una delle coste più ventose d'Europa, ma con temperature miti anche ad autunno inoltrato: Messina è la meta ideale per il kitesurf. Non occorre avere esperienza: durante i tre giorni di corso, dal venerdì mattina alla domenica, gli aspiranti freestyler vengono seguiti dagli istruttori IKO (International Kiteboarding Organization), che forniscono loro nozioni su meteo, venti e tecnica. La tavola e la vela (da pilotare come un aquilone) sono fornite direttamente dagli organizzatori, che durante le esercitazioni in mare correggono e aiutano gli allievi comunicando grazie al caschetto radiotrasmittente. Uno sport divertente, da provare con tutta la famiglia. Per info www.sicilying.com <br />
  25. <br />
  26. <a href="http://etnablog.altervista.org/immagini/alessiomaugeri/img_big/kitesurf_sicilia.jpg"><img src="http://etnablog.altervista.org/immagini/alessiomaugeri/img_big/kitesurf_sicilia.jpg" title="kitesurf_sicilia.jpg" alt="kitesurf_sicilia.jpg" width="100"/></a> <a href=""></a>  ]]>
  27. </description>
  28. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  29. <guid>http://etnablog.altervista.org/sicilia/messina-sulla-cresta-dellonda-con-il-kitesurf/</guid>
  30. </item>
  31. <item>
  32. <title>Esperienze in Sicilia!</title>
  33. <link>http://etnablog.altervista.org/sicilia/esperienze-in-sicilia/</link>
  34. <description> <![CDATA[<p><i>Sicilying.com colma il gap fra la domanda di esperienze da vivere sul territorio siciliano e le proposte di valore offerte dagli operatori locali</i></p>
  35. <br /> Nasce Sicilying.com, la prima vetrina online di esperienze da vivere in Sicilia. Tramite Sicilying.com è possibile acquistare, con conferma immediata, le offerte turistiche e per il tempo libero di qualificati e validi operatori attivi sul territorio siciliano.<br />
  36. <br />
  37. La piattaforma informatica di Sicilying.com consente infatti agli operatori di gestire in tempo reale la disponibilità delle proprie offerte, di modo che il navigatore possa selezionare, direttamente online e senza ulteriori passaggi, il giorno e l'orario in cui vivere l'esperienza prescelta, con la garanzia di poter così pianificare in tutta tranquillità la vacanza o il tempo libero. Sicilying.com consente dunque al visitatore dell'isola - o al siciliano stesso - di dare risposta alla domanda &quot;cosa fare in Sicilia?&quot; e agli operatori locali di strutturare proposte turistiche e per il tempo libero accattivanti e ben fatte, acquistabili dai navigatori con pochi clic e in tutta sicurezza.<br />
  38. Sicilying è una web-company con direzione e base operativa a Catania, nella Sicilia orientale. Il presidio e la conoscenza del territorio sono infatti due tra i principali punti di forza di Sicilying.<br />
  39. Su Sicilying.com è possibile trovare tante tipologie di esperienza, organizzate per area tematica:<br />
  40. <br />
  41.    * Enoturismo in Sicilia, nella sezione Cantine &amp; Vigne<br />
  42.    * Corsi di cucina siciliana nella sezione Gastronomia<br />
  43.    * Windsurf, Kitesurf, Surf, Diving, Paracadutismo Sportivo, Quad nella sezione Sport<br />
  44.    * Itinerari, sentieri natura, tour, trekking nelle sezioni Natura e Vulcani<br />
  45.    * Per gli amanti del mare di Sicilia, presto proposte per vacanze in barca a vela e charter nautici<br />
  46.    * Tour guidati nelle città d'arte siciliane ]]>
  47. </description>
  48. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  49. <guid>http://etnablog.altervista.org/sicilia/esperienze-in-sicilia/</guid>
  50. </item>
  51. <item>
  52. <title>Linux e gestione di players multimediali</title>
  53. <link>http://etnablog.altervista.org/linux/linux-e-gestione-di-players-multimediali/</link>
  54. <description> <![CDATA[ <br /> Creative Zen usa il protocollo proprietario MTP (Media Transfer Protocol). <br />
  55. <br />
  56. In realtà si tratta di un set di estensioni di un altro protocollo gia esistente detto PTP (Picture Transfer Protocol). Questo protocollo è usato per il trasferimento di files multimediali (coi loro metadati) da pc a player attraverso USB. <br />
  57. <br />
  58. Rispetto a tutti i player multimediali che vengono gestiti dal pc come fossero delle semplici memorie di massa USB, i player che usano questo protocollo sono piu sicuri in caso di disgiunzione accidentale dal pc. Questo perchè, a differenza delle normali memorie di massa USB, il file system di queste unità viene controllato dal dispositivo stesso e non dal pc, sebbene il sistema operativo cerchi di non farci accorgere di questa sostanziale differenza. <br />
  59. <br />
  60. Linux riesce a gestire l'MTP tramite le libmtp (usate da programmi come Amarok, Banshee, Rhythmbox) e libgphoto2 (usate ad esempio da gphoto2, un programma da riga di comando, ed F-Spot).<br />
  61. <br />
  62. Nautilus gestisce le MTP tramite gphoto2.<br />
  63. <br />
  64. La verità è che sinceramente trovo ancora un macello la gestione di questo protocollo su Linux.<br />
  65. <br />
  66. Volete copiare un file dal vostro Linux dritto sul vostro Creative Zen?.. Ovviamente la prima cosa che fate è prenderlo da Nautilus e spostarlo dentro il Creative Zen, cosa infruttuosa dato che il file viene copiato ma non viene caricato nel database che il dispositivo si crea delle canzoni (e quindi la canzone "non viene vista" dal dispositivo quando lo staccate dal vostro pc..).<br />
  67. <br />
  68. Potete allora usare Gnomad2, che però, insieme ad Rhythmbox e altri, danno la possibilità di inserire canzoni nel vostro dispositivo ma non in comode ed ordinate sottocartelle.. di conseguenza vi ritroverete presto 6-7 giga di mp3(o anche di più..) cacciati e ammassati tutti dentro un'unica enorme cartella "Music"..<br />
  69. <br />
  70. Alle fine ho installato Virtualbox e ci ho virtualizzato dentro Windows 7. Ecco come ho fatto:<br />
  71. <br />
  72. - Ho installato Virtualbox versione PUEL dal sito del produttore (non installate la versione OSE contenuta nei repository della vostra distribuzione, non ha il supporto USB).<br />
  73. - Ho creato una macchina virtuale con 1 giga di RAM (il mio pc ha 2 Gb di ram)<br />
  74. - Ho installato Windows 7<br />
  75. - Ho installato le VBoxGuestAdditions (non c'è bisogno di installare il software del Creative Zen sul Windows 7 virtualizzato, funziona perfettamente senza..).<br />
  76. - Ho aggiornato il driver AC97 per Windows 7 con Windows Update (in modo di potere disporre dell'audio e del midi)<br />
  77. - Ho messo in condivisione il mio Desktop di Linux con Virtualbox e l'ho chiamato "shared" (vedi opzioni di Virtualbox).<br />
  78. - Poi da CMD su Windows 7 ho eseguito il comando <strong>net use x: vboxsvrshared</strong><br />
  79. - Và che è una bellezza..<br />
  80. <br />
  81. Soluzione discutibile quanto volete ma che in quanto ad efficienza spacca.. <br />
  82. <br />
  83. Spero che Nautilus, strumento CARDINE di Gnome, cominci presto ad integrare una affidabile gestione dell'MTP..<br />
  84. <br />
  85. <br />
  86. <a href="http://etnablog.altervista.org/linux/audio-e-linux/">Torna al menù principale di "Audio e Linux"</a> <br />
  87. ]]>
  88. </description>
  89. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  90. <guid>http://etnablog.altervista.org/linux/linux-e-gestione-di-players-multimediali/</guid>
  91. </item>
  92. <item>
  93. <title>La latenza dell'audio</title>
  94. <link>http://etnablog.altervista.org/linux/la-latenza-dellaudio/</link>
  95. <description> <![CDATA[ <br /> Come misurare la LATENZA del vostro sistema (inteso come hardware e software audio che usate)? Settate il sistema per registrare dal microfono. Registrate qualcosa, preferibilmente qualcosa di &quot;cadenzato&quot;, come il suono di un metronomo (ottimo generare una &quot;click track&quot;, è fra gli strumenti di Audacity). A questo punto fate in modo che il sistema mandi in riproduzione quanto registrato prima e contemporaneamente &quot;registri&quot; se stesso. Osservate quindi lo sfasamento dei due canali registrati (servitevi degli audio meters in basso, nell'interfaccia di Audacity). A questo punto cercate la &quot;correzione latenza&quot; fra le preferenze di Audacity e impostatevi il valore da voi determinato prima.<br />
  96. <br />
  97. Quanto seriamente avete intenzione di usare Linux per produrre audio? Un vantaggio in termini di latenza lo dà l'installazione di un kernel rt (realtime).<br />
  98. CONFIG_PREEMPT_RT<br />
  99. <br />
  100. DA COMPLETARE..<br />
  101. <br />
  102. <br />
  103. <a href="http://etnablog.altervista.org/linux/audio-e-linux/">Torna al menù principale di &quot;Audio e Linux&quot;</a> <br />
  104. ]]>
  105. </description>
  106. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  107. <guid>http://etnablog.altervista.org/linux/la-latenza-dellaudio/</guid>
  108. </item>
  109. <item>
  110. <title>I soundservers</title>
  111. <link>http://etnablog.altervista.org/linux/i-soundservers/</link>
  112. <description> <![CDATA[ <br /> &quot;sound servers&quot; (o &quot;sound daemons&quot;), sono ad esempio Pulseaudio, ESounD, NAS, aRTS, JACK.<br />
  113. <br />
  114. In sostanza noi passiamo l'audio al sound server, e sarà lui poi a preoccuparsi della comunicazione col driver ALSA nel kernel.<br />
  115. <br />
  116. Perchè mettere fra il noi e L'ALSA driver un soundserver?<br />
  117. <br />
  118. Il soundserver si preoccupa di gestire i diversi flussi audio, passandoli miscelati all'ALSA driver, magari modificati secondo preferenze da noi impostate.<br />
  119. <br />
  120. Ci permette quindi di gestire l'audio in maniera molto flessibile. Per fare questo i soundservers funzionano come programmi in &quot;background&quot; (daemons, &quot;demoni&quot;). In realtà dividere un programma in un &quot;demone&quot; che funziona in background ed in un'interfaccia che lo gestisca (&quot;GUI&quot;), è un approccio sempre più spesso usato nei progetti liberi. Progetti come network manager e dbus possono essere usati da chiunque senza installare gnome. Tale libertà assicura una larga accettazione ed attrae verso lo sviluppo del progetto. dcop necessitava di kdelibs e qt. Il demone, in quanto progetto separato, non ha dipendenze su GNOME o KDE. La GUI invece sarà sviluppata in base all'ambiente desktop scelto.<br />
  121. <br />
  122. I soundservers sono apparsi indispensabili con OSS, che non poteva gestire più flussi contemporaneamente. Oggi i soundservers permettono spesso, oltre ad una gestione &quot;centralizzata&quot; dell'audio, anche numerose altre possibilità come l'uso di più schede audio contemporaneamente e persino l'invio dello stesso flusso audio alla rete (e altre funzioni..).<br />
  123. <br />
  124. <strong>JACK</strong> è un audio server (un &quot;demone&quot; ovvero un programma eseguito in background. Di solito i demoni hanno dei nomi che terminano con la lettera &quot;d&quot;) multipiattaforma (Linux, Windows, OS X e altre), ha le sue API (funzioni usate dagli sviluppatori di software nei propri programmi, per usare JACK) ed è ritenuto ottimo per l'editing e il mixing.<br />
  125. <br />
  126. E' considerato piuttosto performante (bassa latenza, ovvero basso ritardo tra azione ed effetto. Considerate che una latenza di appena 30 ms rende difficile il lavoro ad un musicista in quanto il suono verrebbe percepito come &quot;eco&quot;).<br />
  127. <br />
  128. qjackctl è la GUI (Graphical user interface) più usata per controllare il demone Jackd.<br />
  129. jack-rack permette di applicare dei filtri audio LADSPA<br />
  130. jackdmp è una versione di Jack per sistemi multiprocessore.<br />
  131. jackeq è un equalizzatore.<br />
  132. patchage: mostra il grafico delle connessioni Jack correnti.<br />
  133. <br />
  134. JACK è usato da software come Ardour (registratore multitraccia), Hydrogen (batteria elettronica), Audacity, altre (vedi di LADSPA più avanti).<br />
  135. <br />
  136. Jackd è il  JACK daemon. Possiamo usare jackd in riga di comando passandogli dei parametri, e comunicargli ad esempio di riprodurre usando il driver ALSA (esempio: jackd -d alsa -d hw:0 -r 44100 ).<br />
  137. <br />
  138. aRts (analog realtime synthesizer) era un server audio usato da KDE. Il demone era chiamato &quot;artsd&quot;. Si appoggia a OSS o ALSA. KDE 4 ha rimpiazzato Phonon al posto di aRts. Phonon non è un server audio.<br />
  139. <br />
  140. Enlightened Sound Daemon (ESD o EsounD), sound server di Enlightened (&quot;window manager&quot;), adesso del tutto rimpiazzato in GNOME da:<br />
  141.   - libcanberra (per gli &quot;event sounds&quot; ovvero i suoni di sistema degli ambienti desktop, come GNOME. libcanberra può usare ALSA, PulseAudio, OSS, GStreamer)<br />
  142.   - GStreamer/PulseAudio per tutto il resto<br />
  143. <br />
  144. <strong>Pulseaudio</strong> è oggi il sound server standard in diverse distribuzioni linux, è considerato un &quot;tentativo di sostituire ESounD&quot;, rispetto a cui ha tempi di latenza minori ed una migliore architettura. Pulseaudio può addirittura mandare l'audio a un altro computer collegato in rete, che monti anch'esso Pulseaudio.<br />
  145. <br />
  146. Bisogna considerare che perchè PulseAudio possa interfacciarsi ad altre infrastrutture come GStreamer, ALSA, JACK, bisogna installare dei pacchetti separati, spesso &quot;plugin&quot; dei vari programmi che intendono usare PulseAudio.<br />
  147. xmms-pulse è il plugin di XMMS (è un programma music player) perchè questo usi PulseAudio.<br />
  148. libao-pulse è il plugin per le librerie cross-plattform libao<br />
  149. gst-pulse è il plugin per GStreamer.<br />
  150. pulseaudio-esound-compat: diciamo che questo è uno &quot;script di compatibilità&quot;. In sostanza permette di rimpiazzare il pacchetto ESD &quot;esound&quot; creando un link /usr/bin/esd che è un link simbolico a PulseAudio. Sicchè tutte le applicazioni che vorrebbero usare ESD, in realtà vengono &quot;fregate&quot; e usano PulseAudio.<br />
  151. <br />
  152. Con PulseAudio potete addirittura fare in modo che solo gli utenti autorizzati possano avere accesso all'audio del pc; usa infatti dei &quot;gruppi&quot;:<br />
  153. - pulse (che è per uso interno di PulseAudio, non vi interessa, gli utenti non devono prenderne parte)<br />
  154. - pulse-access (quando in &quot;system mode&quot;, il server audio accetta solo le connessioni dei membri al gruppo)<br />
  155. - pulse-rt (per avere accesso all'audio &quot;real time&quot;, ma bisogna avere dei kernel &quot;particolari&quot; detti real-time.)<br />
  156. <br />
  157. Se il vostro username non fa parte di quei gruppi (per vedere i gruppi di un utente in linux fate su shell &quot;groups username&quot;) ma sentite lo stesso l'audio, questo di certo sarà perchè il server è stato fatto partire &quot;localmente&quot; (per verificare ciò fate in shell &quot;ps aux | grep pulse&quot; e verificate se pulseaudio è stato fatto partire dal vostro utente (lo identificate con il codice nella prima colonna, il vostro lo vedete scrivendo su shell &quot;echo $UID&quot; oppure semplicemente &quot;id -u&quot;).<br />
  158. <br />
  159. In sostanza PulseAudio passa l'audio di tutte le applicazioni che usano le API di Pulseaudio all'ALSA driver. Bisogna fare in modo però che anche le applicazioni che NON usano Pulseaudio, passino comunque da Pulseaudio, in modo che questo possa miscelare il tutto e passarlo all'ALSA driver. Per questo c'è un apposito ALSA pulseaudio plug in. In sostanza prima che i suoni raggiungono l'ALSA driver, l'alsa plugin li dirotta verso Pulseaudio, che può quindi mandarli all'ALSA driver.<br />
  160. <br />
  161. In sostanza, fra i file di configurazione di ALSA, dovreste trovare qualche riga di codice in cui è specificato che Pulseaudio viene dichiarato periferica di riproduzione (&quot;pcm&quot;) e controllo (&quot;ctl&quot;) di default per ALSA. Leggete quindi /usr/share/alsa/alsa.conf, lì dovrebbe trovarsi una lista di altri file di configurazione di ALSA, che vengono infatti letti proprio a partire da alsa.conf, che è il principale. Fra tali file potreste trovare .asoundrc, /etc/asound.conf, /usr/share/alsa/pulse.conf che è appunto il file dove più probabilmente si trova la modifica in questione (o un'altra sottolista di file in cui guardare!).<br />
  162. <br />
  163. La modifica consiste di queste semplici righe:<br />
  164. <br />
  165. pcm.!default {<br />
  166. type pulse<br />
  167. }<br />
  168. <br />
  169. ctl.!default {<br />
  170. type pulse<br />
  171. }<br />
  172. <br />
  173. pcm.pulse {<br />
  174.        type pulse<br />
  175. }<br />
  176. <br />
  177. ctl.pulse {<br />
  178.        type pulse<br />
  179. }<br />
  180. Le prime righe impostano &quot;pulse&quot; come periferiche pcm e ctl di default.  Le altre righe creano una unità virtuale chiamata &quot;pulse&quot; per pcm (riproduzione) e ctl (controllo).<br />
  181. <br />
  182. Se effettuate modifiche ricordatevi di  fare ripartire nuovamente le ALSA utils (sudo /etc/init.d/alsa-utils restart).<br />
  183. <br />
  184. Due software sono attualmente in sviluppo per gestire PulseAudio:<br />
  185. <br />
  186.    * pavucontrol (PulseAudio Volume Control): vi dà la possibilità di regolare addirittura il volume di ogni singola applicazione che in quel momento sta riproducendo (o registrando?) qualcosa.. Vi consiglio vivamente di installarlo..<br />
  187. <br />
  188.    * Paprefs (PulseAudio Preferences). Paprefs configura solo i servers locali e richiede &quot;module-gconf&quot; installato, che serve a rendere alcune opzioni modificabili da GConf (sistema utilizzato da gnome per memorizzare le impostazioni di configurazione, i cui cambiamenti sono controllati dal demone gconfd).<br />
  189. <br />
  190.    * Gli altri software prodotti per Pulseaudio sono da considerarsi obsoleti:<br />
  191.         * Paman (Pulseaudio manager)<br />
  192.         * Pavumeter (Pulseaudio Volume Meter)<br />
  193.         * Padevchooser (Pulseaudio device chooser)<br />
  194. <br />
  195. Gnome stesso fornisce uno strumento di base che si chiama gnome-volume-control (contenuto nel pacchetto gnome-media), che già in se integra un pò tutto quello che serve in fatto di volumi e regolazioni. Purtroppo però, almeno al momento, risulta ancora indispensabile installare strumenti come pavucontrol per una gestione completa dei flussi in entrata/uscita e le applicazioni che vi interagiscono..<br />
  196. <br />
  197. Molte applicazioni KDE usano aRts. si può settare aRts ad usare ESD (ESD ha un apposito plugin per usare PulseAudio..).<br />
  198. <br />
  199. Amarok, XMMS ed altri media players permettono di scegliere il &quot;motore&quot; da usare tramite le loro &quot;preferenze&quot; (Quindi PulseAudio).<br />
  200. <br />
  201. <br />
  202. Audacity, basato sulle librerie cross-platform wxWidgets (per la sua interfaccia), usa le API del soundserver multipiattaforma &quot;PortAudio&quot; (Windows, Unix, Macintosh e altre), che alla fine usa ALSA (e PulseAudio controlla ALSA, grazie al &quot;giochetto&quot; sul suo &quot;asound.conf&quot;). Audacity può supportare il server audio Jackd. <br />
  203. Fino ad un pò di tempo fa Audacity aveva qualche problema a funzionare con Pulseaudio, che qualcuno risolveva usando, da riga di comando, il comando padsp (&quot;Pulseaudio OSS wrapper&quot;, in pratica è un comando per ridirezionare il suono OSS a Pulseaudio. padsp per intenderci è tipo &quot;aoss&quot;, che ridireziona invece verso ALSA). Altri risolvevano il problema sospendendo del tutto Pulseaudio usando &quot;pasuspender&quot;.<br />
  204. <br />
  205. Oggi, personalmente non riscontro più alcun problema ad usare audacity con Pulseaudio, data l'evoluzione di entrambi, suppongo..<br />
  206. <br />
  207. Sono in molti ad usare Audacity per registrare l'audio dei filmati di youtube (video musicali soprattutto), telefonate o altro, in mp3 (grazie a pavucontrol, che permette di impostare la registrazione a &quot;monitor interno&quot;.<br />
  208. <br />
  209. Vorrei aggiungere qualche parola su Audacity. Sono in molti a dire che sia un software limitato, non assolutamente a paragonabile ad altri famosi audioeditors.<br />
  210. <br />
  211. Personalmente ritengo che Audacity dalla versione 1.3.12 in poi, installato e con le sue estensioni abilitate, ovvero le librerie LAME (che servono alla manipolazione di file MP3) e le FFmpeg (che consentono ad Audacity di manipolare al volo formati audio persino proprietari, come i .wma, sebbene lo stesso sito di Audacity dica che non si possa fare..bah!), sia un software estremamente potente e dotato, a differenza di altri più blasonati prodotti, di una interfaccia intuitiva ed accattivante.<br />
  212. <br />
  213. Inoltre Audacity può persino sfruttare plugin LADSPA, VST e Nyquist (sono tutti dei linguaggi per creare dei programmi atti a manipolare audio) estendendo le sue possibilità. Non nego che, usandolo, a volte Audacity possa bloccarsi (capita..) ma grazie all'autosalvataggio del progetto, che Audacity opera in automatico di continuo, non ho mai perso un secondo del mio lavoro anche a seguito di un blocco. Devo dire che questa 1.3.12 per ora non mi si è mai bloccata.<br />
  214. <br />
  215. <br />
  216. <a href="http://etnablog.altervista.org/linux/audio-e-linux/">Torna al menù principale di &quot;Audio e Linux&quot;</a> <br />
  217. ]]>
  218. </description>
  219. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  220. <guid>http://etnablog.altervista.org/linux/i-soundservers/</guid>
  221. </item>
  222. <item>
  223. <title>I frameworks in Linux</title>
  224. <link>http://etnablog.altervista.org/linux/i-frameworks-in-linux/</link>
  225. <description> <![CDATA[ <br /> In pratica l'ALSA sound driver accetta i flussi audio che noi gli mandiamo solo in formato non compresso raw PCM.<br />
  226. L'ALSA rispetto a OSS può accettare più flussi &quot;raw PCM&quot; contemporaneamente e miscelarli insieme.<br />
  227. <br />
  228. In pratica, tutti i vari formati multimediali più o meno compressi come MP3, OGG, WAV, ACC, WMA, RMA, etc. perchè possano essere riprodotti, è necessario che vengano tradotti in raw PCM ed è questo che fanno i riproduttori multimediali che usiamo, quando ascoltiamo musica (mp3, wav, WMA ecc..) o guardiamo un video (mpg, avi, ecc..).<br />
  229. <br />
  230. Sicchè uno sviluppatore di un riproduttore multimediale si perde nel mare dei migliaia di formati audio/video che la sua opera dovrebbe gestire.. A venirgli in aiuto subentrano i cosiddetti &quot;multimedia framework&quot;, tipo Gstreamer, NMM, Xine, Helix, e anche il vecchio aRTS di KDE 3. Lo sviluppatore adotta quindi le API di Gstreamer, ad esempio, e si preoccuperà lui di decodificare il formato video dell'utente..<br />
  231. <br />
  232. Gli sviluppatori di GNOME consigliano di usare il framework Gstreamer al momento.. Altra strada hanno scelto gli sviluppatori di KDE 4.4. Hanno infatti tolto il vecchio soundserver aRTS (che era anche un audio framework, tra l'altro) dichiarando che &quot;non era la soluzione ideale&quot;, in quanto mancante di diverse importanti funzioni , e l'hanno sostituito con Phonon, che un soundserver NON è, ma è un ulteriore livello di astrazione. In sostanza Phonon ha le sue proprie API per gestire i formati multimediali, scritte nel modo più semplice possibile, ed è Phonon stesso a preoccuparsi di dialogare con i frameworks vari (Xine-lib, che sembra essere il &quot;piu scelto&quot;, Gstreamer, libvlc, libsmplayer, persino Directshow di Windows, QuickTime di Apple o altro), essendo in grado di cambiare il framework usato addirittura al volo.. In molti sono favorevoli a questo approccio, in quanto si libera lo sviluppatore della preoccupazione di scegliere un framework, gli si fornisce delle API semplici da gestire e per di più multipiattaforma. Ma in molti altri non sono daccordo all'uso di tale sistema adducendo le motivazioni più varie. Il futuro vedrà chi ha ragione..<br />
  233. <br />
  234. In linea di massima chi usa GTK+ tenderebbe ad usare GST (GStreamer) o libcanberra.<br />
  235. Chi usa  Qt o QtLibs tenderebbe ad usare Phonon.<br />
  236. <br />
  237. Per ora è francamente troppo presto per parlarne, e la lotta Phonon Vs Gstreamer Vs altri Framework, lotta che di striscio o in pieno investe anche la solita lotta fra toolkit GTK+ Vs Qt Vs Qt/KDELibs, almeno per il momento si aggiunge alle centinaia di lotte che si infiammano all'interno della comunità del pinguino, che creano un mare di divisione, lotte, confusione, ma anche libertà di scelta..<br />
  238. <br />
  239. LADSPA (Linux Audio Developers Simple Plugin Architecture): per quanto riguarda LADSPA, ritengo necessario fare una piccola premessa. Di questi tempi, nello sviluppo di un qualsiasi sotware, si va sempre di più alla ricerca della &quot;modularità&quot;, ovvero della possibilità di aggiungere, ad un programma già esistente, nuove funzionalità semplicemente mediante dei &quot;plugin&quot;.<br />
  240. <br />
  241. Questo succede in linux per moltissimi programmi. Chiunque può creare e distribuire nuovi plugin, e contribuire così attivamente allo sviluppo.<br />
  242. <br />
  243. Considerate LADSPA come un sistema per realizzare plugin per manipolare audio, per tutti quei programmi che accettano i plugin realizzati usando le API di LADSPA.<br />
  244. <br />
  245. I plug-in scritti usando LADSPA possono essere facilmente integrati in altri programmi.<br />
  246. <br />
  247. Sono stati realizzati con LADSPA effetti audio strabilianti: delay, flanger, equalizzatori, riverberi, pitch shifter (servono a modificare la tonalità di un brano), e numerosissimi altri.<br />
  248. <br />
  249. L'idea non è del tutto nuova a dire il vero, un altro sistema simile sono i plugin VST (non free, usati ad esempio, su sistemi Windows, da programmi come l'ottimo Cubase).<br />
  250. <br />
  251. DSSI (Disposable Soft Synth Interface) invece è un linguaggio per scrivere plugins che viene definito &quot;LADSPA per gli strumenti&quot;, come una sorta di &quot;estensione di LADSPA&quot;. DSSI può addirittura funzionare con strumenti VSTi mediante il wrapper plugin dsst-vst. DSSI è supportato da sofware come Rosegarden, ma in linea di massima non ha conosciuto una grande diffusione.<br />
  252. <br />
  253. In questo periodo si sente sempre più parlare di un nuovo standard per la creazione di plugins audio, nato per &quot;superare le limitazioni di LADSPA&quot; e DSSI, detto LV2 (Ladspa Version 2), buono sia per effetti che per strumenti e sembra essere molto promettente.<br />
  254. <br />
  255. Audacity, Ardour, l'applicazione &quot;jack-rack&quot; (jackd invia l'audio a jack-rack, e questo glielo restituisce in tempo reale rimodulato dai plugin LADSPA che gli avete installato. Jack-rack è come una sorta di &quot;rack&quot; per effetti LADSPA..), il sequencer Rosegarden sono programmi capaci di usare i plugin LADSPA, aprendo a possibilità enormi.<br />
  256. <br />
  257. I plugin LADSPA sono di solito contenuti in &quot;/usr/lib/ladspa/&quot;, e sono file con estensione &quot;.so&quot;.<br />
  258. <br />
  259. GStreamer, non è un soundserver ma una piattaforma di sviluppo, una serie di API scritte in linguaggio C. In sostanza i contenuti multimediali vengono spesso distribuiti in formato compresso secondo determinati algoritmi (codecs), che per essere letti devono essere prima &quot;tradotti in un linguaggio comprensibile&quot; (raw PCM). Alla base di GStreamer sta il concetto di Pipeline (tubatura). In sostanza la &quot;tubatura&quot; consiste di tre parti:<br />
  260. <br />
  261.   1. Source: lettura della sorgente (ad esempio un file mp3) attraverso le API di GStreamer.<br />
  262.   2. Decoder filter: GStreamer decodifica il sorgente in formato PCM. A questo punto il sorgente è perfettamente comprensibile e quindi manipolabile.<br />
  263.   3. Sink: GStreamer fornisce le API per decodificare e anche per riprodurre la sorgente. L'ultimo elemento della catena, quindi, è praticamente la riproduzione.<br />
  264. <br />
  265. Per quel che riguarda l'audio, GStreamer vi dà la possibilità di scegliere il vostro intermediario con l'ALSA driver. In altre parole voi eseguite un mp3 con un programma che usa GStreamer (&quot;source&quot;, ad esempio Rhythmbox), GStreamer lo decodifica e lo manda a.... A chi volete voi! Eseguite da terminale &quot;gstreamer-properties&quot; e scegliete come completare la vostra &quot;pipeline&quot;.. Scegliete se questo segnale decodificato deve andare ad alsa-libs (pipeline &quot;alsasink&quot;), a OSS (&quot;osssink&quot;), a PulseAudio (&quot;pulsesink&quot;). GStreamer e la struttura a &quot;pipeline&quot; consumano parecchie risorse della CPU.<br />
  266. <br />
  267. In sostanza il funzionamento di GStreamer è legato ai plugin installati (ancora una volta ricorre il concetto di &quot;plugin&quot;). Se volessimo potremmo persino usare ESound, basta soltanto procurarsi il plugin &quot;esdsink&quot; che si trova in qualche pacchetto della vostra distribuzione (per ubuntu Jaunty è gstreamer0.10-esd).<br />
  268. <br />
  269. Anche i &quot;codecs&quot; ovvero gli algoritmi usati per comprimere i contenuti multimediali, vengono decodificati da Plugin.<br />
  270. <br />
  271. I plugin per i codec di GStreamer sono raggruppati, in base al livello decrescente di &quot;qualità&quot; del loro sviluppo, in 3 gruppi: Good, Bad, Ugly. In bad e Ugly si trovano gli algoritmi per la decompressione di codecs proprietari il cui sviluppo è spesso complicato da problematiche persino legali.<br />
  272. <br />
  273. Esempi di applicazioni che usano GStreamer sono Amarok (audio player), Banshee (audio player), Elisa (media center), Exaile (audio player), Pitivi (video editor), Rhythmbox, Serpentine (audio cd recorder), Sound Converter, Sound Juicer (cd ripper), Totem (movie player) e altre.<br />
  274. <br />
  275. In realtà GStreamer non è il solo decoding engine in Linux, sistema &quot;gia pronto&quot;, in linux, per decodificare codec. &quot;libavcodec&quot; sono librerie per encoding/decoding video e audio usate da software quali FFmpeg (un convertitore di formato video, che rientra in realtà nell'ambito di un progetto più vasto, che include diversi programmi per audio-video, compresi player e convertitori), Avidemux, MPlayer, VLC, Xine. Ricordiamo inoltre le &quot;xine-libs&quot;, che sono le librerie di decoding di &quot;xine&quot;, ma anche di programmi come &quot;Totem&quot; e &quot;Kaffeine&quot;. Alcuni programmi possono usare anche più di un sistema di decodifica, ad esempio &quot;Totem&quot; può usare le xine-libs ma anche GStreamer.<br />
  276. <br />
  277. SDL (Simple Directmedia Layer): si tratta di librerie multipiattaforma utili per creare finestre, svolgere operazioni grafiche complesse, gestire audio, cd-rom, video, trattare contenuti multimediali (non solo &quot;audio&quot; quindi..). Le librerie SDL sono usate ad es. da software quali DOSBox, Bochs (SDL plugin per la sua GUI), MPlayer, ScummVM, VLC con SDL plugin ed altri.<br />
  278. <br />
  279. OpenAL (Open Audio Library, multipiattaforma), sono delle API per gestire audio in 3D (e quindi multi-speakers). Le librerie OpenAL sono usate in videogiochi come Doom3, Quake3, Unreal tournament 2003, Prey.<br />
  280. <br />
  281. FMOD (prodotto commerciale, multipiattaforma) sono librerie audio (con API). Sono usate in videogiochi come Call of Duty 4, Far Cry, Second Life. Il loro uso è gratuito per prodotti non commerciali, altrimenti è un prodotto che si paga (e costa..).<br />
  282. <br />
  283. Questo è il punto, alcune applicazioni usano le API ALSA, altre quelle aRts, altre le API di JACK, alcune gestiscono l'audio da se, ma solo se l'audio passa tutto da un server solo, può essere realmente controllabile. Pensate in che situazione si trova uno sviluppatore di un software, che deve prima di tutto scegliere come gestire l'audio della sua applicazione e adottarne le API. Allora quindi scegliere le API più performanti? Quelle in più fervente sviluppo? Quelle apparentemente più supportate (oggi..)? O quelle più &quot;multipiattaforma&quot;?..<br />
  284. <br />
  285. <br />
  286. <a href="http://etnablog.altervista.org/linux/audio-e-linux/">Torna al menù principale di &quot;Audio e Linux&quot;</a> <br />
  287. ]]>
  288. </description>
  289. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  290. <guid>http://etnablog.altervista.org/linux/i-frameworks-in-linux/</guid>
  291. </item>
  292. <item>
  293. <title>La gestione dei devices audio su Linux</title>
  294. <link>http://etnablog.altervista.org/linux/la-gestione-dei-devices-audio-su-linux/</link>
  295. <description> <![CDATA[ <br /> Come sappiamo "i devices", in generale, in linux, per essere usati, vengono "montati" in delle cartelle.<br />
  296. <br />
  297. In sostanza, la cartella /dev è usata in linux per conservare, come files, i "device nodes" che fanno riferimento a certi devices del sistema (devices che ci sono, ma anche devices che nel nostro sistema non ci sono..). In pratica programmi, giochi, per interfacciarsi ai devices sfruttano questi nodes.<br />
  298. <br />
  299. ALSA monta i devices audio nella cartella /dev/snd/ (invece OSS le monta in /dev/dsp) ed è proprio questa la cartella che le applicazioni usano per eseguire funzioni audio (registrare, riprodurre, modificare i volumi). Diamo uno sguardo dentro la cartella /dev/snd/, potreste vedere diversi devices, riconoscibili come diversi file "pcm", "control", "timer", "seq", dipende dal vostro hardware. Per esempio il /dev/snd/pcmC0D6c che io vedo tra i miei devices, indica la scheda audio 0, device 6, "c" sta per "capture", come ad esempio un "microfono" ("p" invece starebbe per "playback", quindi si parlerebbe di un device di "riproduzione").<br />
  300. <br />
  301. Come fa ALSA a cacciare dentro quella cartella /dev/snd/ i propri devices?<br />
  302. <br />
  303. I Kernels dal 2.6 controllano un filesystem chiamato sysfs, montato sulla cartella "/sys", che contiene informazioni sui devices attualmente collegati al sistema. In generale per vedere i file system montati nel vostro sistema, digitate su shell "mount" (il che è equivalente a scrivere "cat /etc/mtab").<br />
  304. <br />
  305. udev, il "device manager" del kernel 2.6 (rimpiazza il vecchio devfs), sfrutta proprio le informazioni contenute nel sysfs per creare una directory /dev "dinamica".<br />
  306. udev sta in esecuzione in sottofondo ("demone udevd") e usa queste informazioni date direttamente dal kernel (gli "uevents") per creare in tempo reale i "device nodes" corrispondenti all'hardware attualmente in vostro uso proprio nella cartella "/dev" .<br />
  307. Gli uevents inviati dal kernel sono gestiti sulla base di specifiche "regole", che possono così portare dal caricamento di specifici moduli del kernel, la creazione dei device nodes, l'assegnazione costante dei permessi per un device node ad un owner o a un gruppo, fino all'esecuzione di un programma che gestisca il device.<br />
  308. Tali regole si trovano in /etc/udev/rules.d/ sotto forma di files con estensione ".rules". Potete impostare voi stessi, ad esempio, una regola che assegni ad una determinata scheda sempre lo stesso valore hwplug:x,y .<br />
  309. Considerate inoltre che udev si crea persino un proprio database dei device collegati nel sistema.<br />
  310. Se date un'occhiata nella cartella /sys, vi rendete conto di come sia ben strutturata, bene suddividendo i devices in cartelle e persino sottocartelle e files, che definiscono così delle "gerarchie ad albero". Strumento di gestione di udev è il comando udevadm (una volta "udevinfo"). Il comando "udevadm monitor" mette il vostro pc in attesa, provate in questa fase ad inserire una periferica usb (come una memorietta usb, un mouse o altro) e vedete se viene riconosciuta.<br />
  311. <br />
  312. E una volta creato il device node che succede?.. Beh Il riconoscimento dell'hardware in linux non si ferma qui.. Quando ad esempio inserite una memorietta usb nel vostro pc, il kernel la intercetta mediante udev (che ne crea il "node" in /dev), e poi comunica la cosa, mediante D-Bus, a Devicekit (una volta invece la comunicava ad "HAL").<br />
  313. <br />
  314. D-bus (e le sue API) è un protocollo IPC (interprocess communication) che permette il passaggio di informazioni tra applicazioni (mediante le librerie libdbus). Tale passaggio di informazioni può avvenire direttamente tra le applicazioni ("peer to peer") o anche attraverso il "D-bus daemon". Fra le applicazioni che ne fanno uso ricordiamo gnome-mount (contiene programmi per il montaggio, smontaggio e l'espulsione di dispositivi di archiviazione. La sua configurazione è modificabile da gconf-editor).<br />
  315. <br />
  316. D-bus rimpiazza:<br />
  317. - Bonobo (che era basato sull'architettura di CORBA, uno standard sviluppato da OMG) su Gnome<br />
  318. - DCOP usato in KDE 3 (in sostanza Bonobo, CORBA, DCOP servivano/servono a consentire a software diversi di interoperare e condividere informazioni fra loro anche se si tratta di applicazioni sviluppate con linguaggi di programmazione diversi).<br />
  319. <br />
  320. D-bus è fra i progetti di freedesktop.org (un progetto che lavore per risolvere i problemi di incompatibilità fra diverse piattaforme) quindi diciamo che è "cross-desktop" che, tradotto in soldoni, significa che in un certo senso e da questo punto di vista D-bus ha messo daccordo KDE e GNOME, e il che non è un male..<br />
  321. <br />
  322. D-bus oggi svolge un ruolo chiave persino nella gestione del filesystem con gvfs.<br />
  323. L'accesso i/o ai files è oggi gestito da GNOME mediante gvfs, che rimpiazza il vecchio gnome-vfs.<br />
  324. GVFS opera mettendo in esecuzione un singolo demone principale (gvfsd) che tiene traccia dei mount GVFS attuali. Ogni mount è eseguito in un demone separato (anche se alcuni mount condividono un processo demone, la maggior parte non lo fa).<br />
  325. Le applicazioni controllano gvfs mediante la libreria "gio" (libgio, parte di glib) che contiene le API (in pratica il "livello di astrazione").<br />
  326. L'interazione coi demoni vari avviene per lo piu mediante D-Bus.<br />
  327. GIO fornisce funzioni per il monitoraggio dei file, per l'IO asincrono e per il completamento dei nomi file.<br />
  328. <br />
  329. HAL (Hardware Abstraction Layer), ha rappresentato una tappa evolutiva importantissima: col suo demone hald, in sostanza manteneva un database dei devices connessi al pc in tempo reale (per vederlo bastava installate il pacchetto gnome-device-manager, che aggiungeva l'apposito strumento "device manager" nel menu applicazioni di Gnome. Ll'elenco dei devices si modificava in tempo reale inserendo e disinserendo dispositivi nelle porte USB). HAL forniva inoltre delle API che le applicazioni potevano usare per rilevare i devices, monitorarli, eseguire operazioni su di loro se PolicyKit (sistema di autenticazione) lo consentiva. I processi HAL in esecuzione potevano essere visti col comando ps -eaf | grep hal<br />
  330. Vi domanderete perchè parlare di come vengono gestite le periferiche usb in una guida che parla di audio.. Beh il fatto è che al giorno d'oggi, sempre più spesso, si fa ricorso ad accessori audio o persino vere e proprie schede, che fanno uso di porta usb.<br />
  331. <br />
  332. Il mio cat /proc/asound/devices del pc da cui sto scrivendo adesso è:<br />
  333. <br />
  334.  2:        : timer<br />
  335.  3:        : sequencer<br />
  336.  4: [ 0- 6]: digital audio playback<br />
  337.  5: [ 0- 6]: digital audio capture<br />
  338.  6: [ 0- 0]: digital audio playback<br />
  339.  7: [ 0- 0]: digital audio capture<br />
  340.  8: [ 0]   : control<br />
  341. <br />
  342. <br />
  343. Subito dopo avere inserito il mio Mixer 8 uscite per porta USB, diventa:<br />
  344. <br />
  345.  2:        : timer<br />
  346.  3:        : sequencer<br />
  347.  4: [ 0- 6]: digital audio playback<br />
  348.  5: [ 0- 6]: digital audio capture<br />
  349.  6: [ 0- 0]: digital audio playback<br />
  350.  7: [ 0- 0]: digital audio capture<br />
  351.  8: [ 0]   : control<br />
  352. <strong>  9: [ 1- 0]: digital audio playback<br />
  353. 10: [ 1- 0]: digital audio capture<br />
  354. 11: [ 1]   : control<br />
  355. </strong><br />
  356. <br />
  357. <br />
  358. Inoltre dopo l'inserzione del mixer nuovi devices compaiono nella cartella /dev/snd, a testimonianza del fatto che il mio mixer viene immediatamente visto come scheda audio.<br />
  359. <br />
  360. HAL, progetto molto importante, col tempo si è parecchio ingrandito perchè è necessario che le sue capacità di "leggere" l'hardware siano elevate ed accurate (si tratta di un computer che può essere sospeso? puo ibernare? ACPI?), e che le sue API siano efficienti. Alla fine si è reso necessario dividerlo in un insieme di progetti detto Devkit, che sta pian piano prendendo il posto del sempre più grosso monolitico HAL.<br />
  361. <br />
  362. DeviceKit numera i devices, li "identifica" e assegna in classificazioni tipo "audio players, cameras" e altro, emette segnali se queste sono aggiunte o rimosse dal pc.<br />
  363. <br />
  364. Beh in realtà DeviceKit stesso, neanche il tempo di entrare in scena, ha subito un mare di cambiamenti al punto tale che è difficile ricostruirne la storia.. Esisteva un demone DeviceKit, presto sostituito dalle librerie libudev e libgudev per reperire le informazioni di udev sui devices e sugli eventi (scavalcando D-bus?). In verità quello che sta succedendo è che si sta cercando la massima integrazione possibile tra udev e DeviceKit, prova ne è il fatto che cominciano a condividere insieme librerie fondamentali. Ne vedremo delle belle, ma forse è ancora troppo presto per parlarne, e per il momento vi è una forte confusione tra HAL e DeviceKit, che ancora parzialmente coesistono insieme.<br />
  365. <br />
  366. Nel contesto di DeviceKit troviamo:<br />
  367. - upower (ex "DeviceKit-Power"): si occupa del power management del pc (e quindi anche della gestione della batteria di un pc portatile).<br />
  368. - udisks (ex "DeviceKit-disks"): serve a tenere traccia dei devices block ("storage devices", tipo hard-disks e memoriette usb). GNOME vi interagisce mediante un frontend grafico chiamato palimpsest (programma utile a gestire la creazione di filesystems, partizionamenti, encryption, raid e altro) contenuto nel pacchetto gnome-disk-utility. Nello stesso pacchetto vi è anche una estensione di nautilus chiamata nautilus-gdu, che serve a Nautilus per sfruttare proprio DeviceKit-disks.<br />
  369. - udev-extra: fornisce delle regole di funzionamento a udev in modo tale che lo stesso deviceKit possa funzionare. Anche HAL poteva essere "regolato" nel suo funzionamento, creando delle regole in degli appositi files XML con estensione .fdi .<br />
  370. <br />
  371. <br />
  372. <a href="http://etnablog.altervista.org/linux/audio-e-linux/">Torna al menù principale di "Audio e Linux"</a> <br />
  373. ]]>
  374. </description>
  375. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  376. <guid>http://etnablog.altervista.org/linux/la-gestione-dei-devices-audio-su-linux/</guid>
  377. </item>
  378. <item>
  379. <title>Il riconoscimento dell'hardware, il kernel</title>
  380. <link>http://etnablog.altervista.org/linux/il-riconoscimento-dellhardware-il-kernel/</link>
  381. <description> <![CDATA[ <br /> Il kernel è il cuore del sistema operativo GNU Linux, il "programma più importante". Quando il sistema viene acceso ("fase di boot"), questo viene caricato nella memoria RAM del vostro PC. E' il Kernel che interagisce con l'hardware del vostro PC, mediante i drivers, che sono forniti sotto forma di appositi "moduli del kernel", detti LKM ("Loadable Kernel Modules") o semplicemente KMOD ("Kernel Modules").<br />
  382. <br />
  383. Stampante, tastiera, mouse, hard-disk, tutto ciò che collegate al vostro pc sono i "devices" che, per funzionare, necessitano che l'apposito "device driver" del kernel venga caricato.<br />
  384. I LKM si trovano nella cartella /lib/modules e sono files con estensione ".ko" (a partire dal kernel 2.6). Il comando "uname -r" mostra la versione del kernel attualmente in vostro uso.<br />
  385. <br />
  386. I moduli possono anche essere non a codice aperto ("proprietari"), e come tali, essendo non noto il loro codice, possono potenzialmente minare la sicurezza del vostro sistema.<br />
  387. <br />
  388. Grazie al comando lsmod potete vedere quali moduli sono stati caricati dal kernel ed il loro stato mentre invece quelli che in generale sono disponibili (ovvero proprio i files con estensione .ko ("Kernel object"), possono essere visualizzati con modprobe -l o semplicemente navigando nella cartella /lib/modules/`uname -r`<br />
  389. <br />
  390. Per quello che riguarda l'audio, è "ALSA (Advanced Linux Sound Architecture) il componente del Kernel linux che fornisce oggi il device driver per le schede audio rimpiazzando il "vecchio" OSS. Come mai questo cambiamento? Cosa offriva ALSA che OSS non aveva? Andiamo un pò indietro nel tempo..<br />
  391. <br />
  392. La storia dell'audio in linux cominciò con i VoxWare drivers, realizzati da Hannu Savolainen. Quando lo stesso autore fu assunto dalla 4Front, sulla base dei VoxWare, nel 1992, realizzò OSS (Open Sound System).<br />
  393. <br />
  394. Di OSS vi era una versione Free (che venne aggiunta al kernel 2.24.x) ed una commerciale (a pagamento..), la cui differenza consisteva nelle utility di configurazione e riconoscimento dell'hardware.<br />
  395. <br />
  396. Dopo alcuni anni, la mancanza in OSS di alcune importanti funzioni, tipo il mixing di piu fonti (ma non solo..), convinse Jaroslav Kysela (che era stufo dello scarso supporto di OSS per la sua scheda audio Gravis Ultrasound) a lavorare ad un nuovo progetto chiamato ALSA, che, dopo un periodo di testing, venne introdotto nel kernel 2.6 al posto di OSS per la fornitura del "device driver" per la schede audio.<br />
  397. <br />
  398. ALSA era come concezione completamente diverso da OSS.. Ricordo che in OSS era possibile ascoltare qualcosa semplicemente facendo su shell "cat example.wav > /dev/dsp".<br />
  399. In OSS l'audio era insomma concepito come un file, addirittura vi si accedeva con chiamate tipo open(),read(),write(), come secondo quel vecchio detto che diceva che "in linux tutto è un file".. Per essere più chiari, l'accesso alle periferiche in generale ("devices") avveniva come se si stesse accedendo ad un file contenuto in una directory /dev.<br />
  400. <br />
  401. Con ALSA questo non è più possibile e i "devices" sono oggetti di più alto livello. Si accede ai PCM devices mediante interfacce tipo "hw:0" o "plughw:0" (se ne riparlerà dopo).<br />
  402. <br />
  403. ALSA, rispetto ad OSS, era capace di miscelare insieme più flussi audio contemporaneamente e di gestire più schede audio contemporaneamente.<br />
  404. L'utilizzo di OSS fu così dichiarato "deprecato" in linux, ma OSS non è morto, ed è attualmente usato da versioni di Unix, BSD, Solaris e in realtà continua a migliorare.. Non è piu quello di una volta. C'è gente che, tutt'oggi, sceglie di installare su Linux stesso OSS4 rispetto ad ALSA, ritenendo che abbia un supporto migliore per l'hardware, un sound mixer di (addirittura..) maggiore qualità (OSSv3 non poteva riprodurre più suoni in una volta, OSSv4 invece si), inoltre non è linux specifico come ALSA. Le opinioni sono contrastanti al riguardo, ma l'ipotesi di disinstallare ALSA a favore di OSS4 rappresenta comunque una eventualità da prendere in considerazione, specie in presenza di seri problemi di supporto dell'hardware del vostro pc da parte di ALSA..<br />
  405. <br />
  406. In caso di problemi con il vostro audio, prima di mollare del tutto ALSA, tenete in considerazione che:<br />
  407. - Diversi problemi di ALSA possono essere risolti mediante l'installazione di qualche apposita "ALSA plugin" e/o la personalizzazione ad hoc del suo relativo file di configurazione. Questo è soprattutto valido per vecchie schede audio.<br />
  408. - Altri problemi possono essere causati dalla presenza di un eventuale soundserver (come Pulseaudio) che si trova interposto tra voi ed ALSA e dalla buona configurazione di questo. I Soundservers sono sempre più comuni oggi nelle distribuzioni linux ed in generale si occupano di gestire il soundmixing al posto di ALSA, facendogli arrivare il segnale già bello e mixato pronto da riprodurre.. E' pertanto FONDAMENTALE che voi sappiate gestire il vostro soundserver (ne riparleremo dopo).<br />
  409. <br />
  410. Scendiamo più nel dettaglio, cominciando più precisamente ad addentrarci in ALSA.<br />
  411. <br />
  412. ALSA (Advanced Linux Sound Architecture) è il progetto che fornisce oggi al sistema linux la "comunicazione" con la scheda audio per l'audio e il MIDI. E' costituito da:<br />
  413.   - Gli indispensabili driver integrati nel kernel (si parla di "ALSA sound drivers" infatti, sono moduli del kernel che di solito cominciano con prefissi tipo "snd-" o "snd_").<br />
  414.   - Una serie di librerie API (le alsa-lib) che forniscono ai programmatori i "comandi" per riuscire ad usare gli ALSA drivers nel kernel.<br />
  415. <br />
  416. Preparatevi a fare un piccolo tuffo nei meandri del kernel linux: diciamo che ogni scheda audio (o meglio, il suo "chipset") ha il suo modulo ALSA specifico nel kernel di Linux (ad esempio quello per la scheda sound blaster 16 bit è il "snd-sb16", tanto per dirne uno).<br />
  417. Volete sapere se i moduli relativi alla scheda audio sono stati caricati regolarmente? Fate lsmod | grep -i snd<br />
  418. Nel pc che sto usando adesso, l'output di quel comando è piuttosto lungo (tanti moduli..), cito solo le prime righe:<br />
  419. <br />
  420. snd_emu10k1_synth       5156  0<br />
  421. snd_emux_synth         31695  1 snd_emu10k1_synth<br />
  422. snd_seq_virmidi         4213  1 snd_emux_synth<br />
  423. snd_usb_audio          75765  2<br />
  424. snd_seq_midi_emul       5492  1 snd_emux_synth<br />
  425. ...[continua]<br />
  426. <br />
  427. Cerchia<br />
  428. mo di capirci qualcosa: I moduli del kernel sono salvati in hard disk come files (di solito cartella /lib/modules) e quando sono aggiunti nel kernel vengono copiati in memoria come parte del kernel (potete fare questo usando i comandi insmod e modprobe).<br />
  429. <br />
  430. lsmod è un comando che mostra quali moduli sono caricati nel kernel (come dire che mostra in una maniera "carina" i files contenuti in /proc/modules). L'output di lsmod è una lista di moduli del kernel organizzata in 3 colonne:<br />
  431. - La prima ("module") è il nome del modulo.<br />
  432. - La seconda ("size") è la quantità di memoria che usa (ricordatevi che la cartella /proc in realtà è solo virtuale).<br />
  433. - La terza ("Used by") è il numero di quanti altri moduli del kernel stanno usando quel modulo e i nomi di questi, separati, se piu di uno, da virgole.<br />
  434. <br />
  435. Per ciascuno di quei moduli che vedete in lista, potete ottenere ulteriori informazioni col comando modinfo seguito dal nome del modulo.<br />
  436. <br />
  437. Tenete sempre a mente che al giorno d'oggi le schede audio possono essere oltre che per porta pci, anche per porta USB. La cosa non è da trascurare.. Rack e pedaliere di effetti per chitarra elettrica o basso, mixer digitali multi-ingresso, hanno sempre piu spesso la possibilità di essere usate per porta USB, e vengono a tutti gli effetti visti dal vostro pc come "schede audio USB"..<br />
  438. <br />
  439. La vostra scheda audio è per porta pci? Provate a cercarla nella lista delle periferiche pci con: lspci | grep -i audio<br />
  440. Da me questo comando mostra:<br />
  441. <br />
  442. $ lspci | grep -i audio<br />
  443. 05:06.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 07)<br />
  444. <br />
  445. Maggiori infomazioni si ottengono facendo anche: lspci -v o meglio ancora lspci -vv<br />
  446. Fra le varie informazioni che potete ottenere in più, vi è la possibilità di osservare la "latenza" che i devices pci hanno (valore tra 0 e 248). Se il sonoro che esce dalle vostre casse è ricco di "click" e "pop", potete provare ad impostare il "latency setting" della vostra scheda video verso un valore piu basso (se è scheda AGP, attenzionate il PCI-AGP bridge, se la scheda video è PCI-E allora questo discorso non vale..), a vantaggio di quello audio, che alzerete un pò (gli darete così una "priorità più alta").. Badate bene che si sta parlando di "PCI latency", che non ha nulla a che vedere con la "latenza" dell'audio, che è cosa del tutto diversa:<br />
  447. - La PCI latency è il tempo di "uso esclusivo" del bus PCI di cui un device può disporre prima di consegnarlo ad un altro device.<br />
  448. - La latenza dell'audio è il tempo di ritardo che impiega l'audio dall'input all'output e dovete modificare il "buffer size" dell'audio driver se volete ottenere un vantaggio in tal senso. Il buffer size va "bilanciato" tra un valore più alto (che aumenta il "lag", la latenza), e un valore più basso, che è più snello e reattivo. Se il suono risulta "metallico" e pieno di "crack" forse il buffer è troppo basso, e va impostato ad un valore più alto.<br />
  449. Faccio un esempio. Dal mio lspci ottengo che la mia scheda audio funziona al bus 05, device 06, funzione 0 (05:06.0) ed ha latenza 32:<br />
  450. [...]<br />
  451. <br />
  452. 05:06.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 07)<br />
  453.    Subsystem: Creative Labs Device 8040<br />
  454.    Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-<br />
  455.    Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
  456.    Latency: 32 (500ns min, 5000ns max)<br />
  457.    Interrupt: pin A routed to IRQ 21<br />
  458.    Region 0: I/O ports at e480 [size=32]<br />
  459.    Capabilities: <access denied><br />
  460.    Kernel driver in use: EMU10K1_Audigy<br />
  461.    Kernel modules: snd-emu10k1<br />
  462. <br />
  463. [...]<br />
  464. <br />
  465. Voglio aumentare la sua PCI latency, quindi faccio:<br />
  466. <br />
  467. $ sudo setpci -s 05:06.0 LATENCY_TIMER=40<br />
  468. <br />
  469. 40 è un numero esadecimale (in realtà è 64, quindi facendo così porterò la Latency a 64). Se volessi impostare il massimo, anzichè 40 dovrei scrivere "ff", che specifica 256 (ma viene arrotondato giu a 248, che è il massimo).<br />
  470. Generalmente 32 (esadecimale "20") è il valore di default un pò per tutte le periferiche e va bene.. Ma molti suggeriscono di impostare un valore di 128 (esadecimale "80") per la scheda video, al fine di ottenere migliori prestazioni "video".<br />
  471. Penso che questo possa bastare riguardo il PCI, semplicemente tenete presente il discorso "latenza PCI", qualora vi venisse in mente di "overcloccare" il bus e doveste cominciare a sentire suoni sgradevoli..<br />
  472. <br />
  473. Passiamo all'USB. La vostra scheda audio è su porta USB e volete vedere se viene correttamente rilevata? (tipo un mixer digitale USB) Fate: lsusb<br />
  474. Nel mio pc, lsusb mostra:<br />
  475. <br />
  476. Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
  477. Bus 003 Device 002: ID 08bb:2904 Texas Instruments Japan PCM2904 Audio Codec<br />
  478. Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
  479. Bus 002 Device 002: ID 0c45:607c Microdia CCD PC Camera (PC390A)<br />
  480. Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
  481. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
  482. <br />
  483. In pratica rileva la mia pedaliera d'effetti per basso, collegata con porta usb (PCM 2904 è il chip interno che monta, l'interfaccia USB).<br />
  484. <br />
  485. Le ALSA library dispongono di diversi file di configurazione. Fra questi ricordiamo:<br />
  486. <br />
  487.    * /usr/share/alsa/alsa.conf<br />
  488.    * /etc/asound.conf<br />
  489.    * ~/.asoundrc<br />
  490.    * /usr/share/alsa/{cards,pcm}/*.conf<br />
  491. <br />
  492. <br />
  493. Non è detto che tali file siano tutti presenti nel linux che voi usate. Nella mia Ubuntu ad esempio etc/asound.conf e persino ~/.asoundrc mancano del tutto.. E' che sarebbero i file di configurazione delle "ALSA plugins".<br />
  494. <br />
  495. Il principale, quello di default, è alsa.conf. Si tratta di un file installato da libasound2 (che fornisce funzioni ad ALSA). Il fatto che si trovi in /usr/share e non in /etc, dove spesso si trovano i file di configurazione in linux, deve farvi pensare sul fatto che non dovreste modificare questo file, che tuttavia già da se, di solito è adeguato per la maggior parte delle installazioni. Sia alsa-utils che alsa-plugins "cercano" in questo file di configurazione (consideratelo un "file di informazioni"), che è quindi definibile come "condiviso" ("to share") fra piu pacchetti.<br />
  496. <br />
  497. Una volta c'era il programma alsaconf per fare modifiche ad alsa.conf. Chi lo usava, rischiava a volte di combinare un casino, che poteva spesso risolversi eliminando la cartella /usr/share/alsa/, reinstallando le libasound2 ed eventualmente rieseguendo alsaconf. In seguito bisognava riavviare il sonoro con "sudo /etc/init.d/alsa-utils restart". Oggi alsaconf è stato rimosso dalle alsa-utils. Rendeva la vita piu facile a chi aveva schede audio isa o comunque non plug & play, ma oggi il riconoscimento dell'hardware funziona diversamente che in passato..<br />
  498. <br />
  499. ..Tuttavia, qualora doveste avere problemi nel riconoscimento hardware della vostra scheda audio, tenete in considerazione l'ipotesi di reinstallare il buon vecchio alsaconf (ipotesi estrema?..).<br />
  500. <br />
  501. In generale, le possibilità di ALSA possono essere estese dalle "ALSA plugins", che permettono di disporre di funzionalità come il resampling, channel routing, sample format conversion e software controllo volume e altre. Ma in realtà se la vostra scheda audio sembra funzionare bene nel vostro sistema linux, difficilmente ve ne potrà mai importare qualcosa delle ALSA plugin..<br />
  502. <br />
  503. Le ALSA plugins, per esercitare la loro funzione su ALSA, hanno bisogno dei loro files di configurazione tipo /etc/asound.conf e ~/.asoundrc. Modificando tali files di configurazione si possono dare ad ALSA direttive personalizzate a vostro piacimento, o addirittura risolvere talora dei veri e propri problemi di compatibilità hardware specifici per determinate schede audio. In questo senso, le direttive da impartire sono precise, non inventate da voi, ma vengono reperite nella documentazione di ALSA, forum o wiky, e vanno prese e copiate "così come sono".<br />
  504. <br />
  505. Se date un'occhiata all'interno di alsa.conf, che in fin dei conti non è altro che un file di testo, potreste notare che è lui stesso il fulcro, che richiama gli altri files di configurazione, tra cui /etc/asound.conf e ~/.asoundrc (..ed altri, date un'occhiata in alsa.conf per scoprire quali sono).<br />
  506. <br />
  507. Le sintassi usate in questi files di configurazione sono complesse e non trattabili qui, vi basterà, giusto per comprendere un minimo, che "pcm" fa riferimento a "playback",  "ctl" a "control". Non credo vi serva sapere altro al riguardo, se non che grazie a questo il server audio Pulseaudio può funzionare.<br />
  508. <br />
  509. Come detto prima, per vedere che modulo del kernel riguardante l'audio è caricato, fate lsmod | grep -i snd <br />
  510. <br />
  511. lsmod è un comando shell che mostra in modo formattato la lista dei moduli del kernel attualmente caricati, la stessa che in fin dei conti è ottenibile eseguendo cat /proc/modules<br />
  512. <br />
  513. Fate "cat /proc/asound/cards" per verificare le schede audio installate. Possono anche essere più di una, vengono numerate (0, 1, 2... ecc..). Nel mio portatile, il contenuto di /proc/asound/cards è:<br />
  514. <br />
  515. 0 [Intel          ]: HDA-Intel - HDA Intel<br />
  516.                      HDA Intel at 0xf8400000 irq 22<br />
  517. <br />
  518. Il che indicherebbe che ho una sola scheda audio, che è una "Intel" e lui la chiama "0". Ma una scheda audio è una realtà complessa.. Ci sono prese in ingresso (viste come devices in ingresso o "cattura"), prese in uscita (casse? Uscita Line-out?), e poi il midi e la sua sincronizzazione.. Alsa fa distinzione di tutti questi elementi vedendoli come devices diversi.<br />
  519. <br />
  520. Grazie al comando "cat /proc/asound/devices" potete vedere, per ogni scheda audio,  che devices vengono riconosciuti:<br />
  521. - acquisizione, viste come "capture",<br />
  522. - riproduzione viste come "playback",<br />
  523. - "control" per regolarne il volume, il "mixer" o settarne il muto. Vi sono schede audio, come la RME 9652 (una scheda audio professionale), che non hanno questo "mixer"<br />
  524. - "timer", che serve per il "timing", la sincronizzazione<br />
  525. - "sequencer", che serve per il midi (la "sincronizzazione" può essere importante per il corretto funzionamento del midi..)<br />
  526. <br />
  527. Nel pc che sto usando adesso, il comando "cat /proc/asound/devices" mi restituisce:<br />
  528. <br />
  529.  2:        : timer<br />
  530.  3:        : sequencer<br />
  531.  4: [ 0- 6]: digital audio playback<br />
  532.  5: [ 0- 6]: digital audio capture<br />
  533.  6: [ 0- 1]: digital audio playback<br />
  534.  7: [ 0- 0]: digital audio playback<br />
  535.  8: [ 0- 0]: digital audio capture<br />
  536.  9: [ 0- 1]: hardware dependent<br />
  537. 10: [ 0- 0]: hardware dependent<br />
  538. 11: [ 0]   : control<br />
  539. <br />
  540. I numeri dentro alle parentesi quadre ("[x- y]") sono indici relativi alla scheda audio (x) e del device (y) in quella scheda audio. Notate lo "0", è il numero cui lui associa l'unica scheda audio che ho nel portatile. La 0,0 e la 0,6 si capisce che sono duplex (riproduzione e cattura).<br />
  541. <br />
  542. La mia scheda audio è stata "scomposta" da ALSA in multipli devices nelle sue componenti di playback, capture, control, timer, sequencer.<br />
  543. Nel mio caso, guardando l'output di cui sopra, si evince che ho 1 canale di "controllo" (per controllo volume, mic gain e altri settaggi), 3 PCM playback devices, 2 PCM capture devices, un MIDI sequencer, un timer, le "hardware dependent". Cosa sono queste "hardware dependent"? Potreste non avere voi, in pratica il modulo kernel snd-hda-intel (il "driver" della mia scheda audio) è specifico per il "chip" audio. Ma ogni produttore che costruisce una scheda audio mette magari nel suo prodotto, oltre al chip, qualcosa di diverso.. Considerate queste hardware dependent un "workaround", ovvero uno stratagemma, per risolvere i bug derivanti da queste differenze (abilitare l'amplificatore per fare funzionare correttamente lo speaker del mio pc portatile, settare correttamente il volume delle cuffie, disabilitare lo speaker quando si inseriscono le cuffie ecc.).<br />
  544. <br />
  545. Per testare la riproduzione della mia scheda audio (serve un file PCM con estensione .wav) potrò eseguire il comando:<br />
  546. <br />
  547. aplay -D plughw:0,0 file.wav<br />
  548. <br />
  549. Tenete presente che /proc/asound/ e il suo contenuto esiste se il modulo nel kernel "snd" funziona correttamente. Può darsi che vi stiate domandando cosa sia questa cartella "proc".. beh attenzione perchè in realtà, sebbene voi la vediate come una cartella presente, come qualsiasi altra, nel vostro hard disk, in realtà è un vero e proprio filesystem montato su quella cartella, che di fatto nel vostro HD non c'è. Diciamo che, mediante opportuni comandi presenti in questa cartella "virtuale", riusciamo ad ottenere delle informazioni direttamente dal kernel. "/proc" e anche la cartella "/sys" hanno dimensione zero e di questo potete rendervi conto semplicemente eseguendo, da shell, il comando "ls -l".<br />
  550. <br />
  551. A grandi linee come gestisce l'audio il nostro pc? Considerate l'impulso audio nella sua forma più generica (la tipica "onda"), questa nel nostro pc viaggia, per essere riprodotta ("playback"), tradotta in impulsi codificati in un formato detto "raw pcm" (pulse code modulation).<br />
  552. <br />
  553. Il MIDI (Musical Instrument Digital Interface) invece è un discorso a parte e nulla a che vedere con il PCM. In sostanza la musica MIDI è prodotta da un "sequencer" (di solito un editor software, ad esempio il famoso programma "Cubase") sottoforma di "codici" standard (lo standard midi, per l'appunto) che definiscono segnali tipo "controllo voltaggio" e "on/off", che vengono letti, interpretati e riprodotti da un synthesizer (ovvero uno strumento capace di produrre suoni elettronicamente, che può essere hardware ma anche software).<br />
  554. <br />
  555. Risultando il brano scomposto in codici, in ogni sua parte, i file MIDI sono leggerissimi ed estremamente maneggiabili (sono usatissimi nei karaoke, o dai musicisti per motivi di studio, in quanto gli strumenti possono essere esclusi uno ad uno, la tonalità del brano può essere modificata senza variarne il tempo o viceversa, o si può perfino ricavare immediatamente, mediante appositi programmi, delle tablature complete). Per conseguenza, uno stesso file midi, riprodotto da schede audio diverse o persino da software diversi (variando il soundfont) può sentirsi diversamente, in meglio o in peggio. Programma molto usato in Linux, per riprodurre file MIDI, è Timidity, che è un synthesizer software. Possiamo anche impostare in Timidity soundfonts .SF2 diversi (esempi Unison.SF2, di circa 28 megabytes, o PC51f.sf2, di circa 60 M), per ottenere sonorità migliori.<br />
  556. <br />
  557. OSS accedeva al midi attraverso /dev/midi*<br />
  558. ALSA, come detto sopra, ha un accesso all'hardware audio completamente diverso. La lista delle periferiche MIDI è visibile con " aplaymidi -l ".<br />
  559. "aconnect" è l'utility che permette la connessione con le porte dell'ALSA sequencer.<br />
  560. aconnect -i serve a vedere le porte in ingresso, aconnect -o quelle in uscita ("output"), aconnect -l mostra lo stato della connessione.<br />
  561. <br />
  562. L'ALSA sound driver è il nostro obiettivo.. E' con lui che, in un modo o nell'altro, dobbiamo cercare di comunicare dato che sarà grazie a lui che comunicheremo con la scheda audio del PC (che in questo modo riprodurrà il suono..).<br />
  563. <br />
  564. Ma in che modo comunicare con L'ALSA driver (e quindi accedere alla scheda audio)? Vi sono diversi sistemi ("livelli di astrazione"):<br />
  565. - Usando le API in alsa-lib (talora dette libasound), che sono le librerie create dagli stessi sviluppatori di ALSA<br />
  566. - Usando OSS (OSS era usato prima di ALSA in linux, ma vi sono molti programmi che ancora lo usano)<br />
  567. - Usando un soundserver (..e adottandone le sue API), tipo PulseAudio, EsD, Jack ecc..<br />
  568. <br />
  569. Sebbene OSS sia stato dichiarato "deprecato", vi sono ancora molti programmi/giochi che ancora lo usano. Audacity, Slab, MpegTV, XMMS, MPlayer, Xine, KMix, Skype, Doom, Quake sono solo alcune applicazioni che usano o possono usare ALSA (alcune applicazioni oggi danno addirittura la possibilità di scegliere, per il loro stesso funzionamento, tra OSS, ALSA o qualche Soundserver). Ebbene per non perdere la compatibilità con le applicazioni che non usano ALSA ma usano OSS, ALSA può usare due stratagemmi:<br />
  570. <br />
  571. - Uno funziona a livello del kernel, installando degli appositi moduli (snd-pcm-oss, snd-mixer-oss, snd-seq-oss, rispettivamente per emulare le devices PCM, mixer, sequencer).<br />
  572. <br />
  573. - l'altro è lo script aoss (si tratta di un "OSS wrapper") contenuto nel pacchetto alsa-oss (che contiene anche la libreria libaoss, libreria di compatibilità ALSA OSS). Se ad esempio state usando il lettore multimediale xmms (impostato per funzionare con output OSS mediante apposito plugin) basta fare da shell "aoss xmms" per farlo funzionare con ALSA.<br />
  574. <br />
  575. Il primo sistema è semplice da implementare, ma non fa al caso nostro se ci interessa "mixare" l'audio, il secondo ha pure una sua piccola magagna, cioè che dà qualche problema se il programma OSS accede all'audio con fopen(), ma sembra che siano poche le applicazioni OSS a farne uso.<br />
  576. <br />
  577. Nonostante quanto detto, c'è ancora chi preferisce programmare usando OSS, per varie ragioni, tra cui la maggiore facilità d'uso delle API e/o la loro migliore documentazione. C'è anche da dire che ALSA c'è solo in linux, ed è in questo senso più "ristretto", mentre OSS c'è anche in altri sistemi *nix, e chi lo usa si appoggia al fatto che tanto OSS su ALSA, in fin dei conti, funziona lo stesso.. ..In un modo o nell'altro.<br />
  578. <br />
  579. Ma che strumenti, in generale, ci fornisce ALSA stessa per gestire i suoi ALSA drivers nel kernel? Sono diversi,  e contenuti in diversi pacchetti (ALSA packages) fra i quali ricordiamo:<br />
  580. <br />
  581.    * Alsa-lib: detto anche "libasound". Fornisce librerie che permettono la comunicazione ("livello di astrazione") con l'ALSA driver che fa parte del kernel, le cui interfacce si trovano nella directory /dev. Diciamo che i programmi potrebbero comunicare direttamente con i driver nel kernel, ma le alsa-lib permettono di farlo in modo molto più semplice.<br />
  582.    * Alsa-oss: contiene il wrapper aoss.<br />
  583.    * Alsa-tools: contiene in se altri piccoli programmi, alcuni specifici per determinate schede audio.<br />
  584.    * Alsa-utils: contiene un insieme di utilities varie, tipo aplay (un semplice player), alsamixer (un mixer, con un interfaccia "tipo testo"), amixer (è un mixer per controllare ALSA da "riga di comando"), aplaymidi (per riprodurre files midi) ed altri.<br />
  585.    * Alsa-plugins: è un insieme di "plugins". Per esempio alsa-plugins-pulseaudio fa da anello di collegamento tra ALSA e PulseAudio, Alsa-plugins-jack è anello di collegamento tra ALSA e JACK.<br />
  586. <br />
  587. <br />
  588. <a href="http://etnablog.altervista.org/linux/audio-e-linux/">Torna al menù principale di "Audio e Linux"</a> <br />
  589. ]]>
  590. </description>
  591. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  592. <guid>http://etnablog.altervista.org/linux/il-riconoscimento-dellhardware-il-kernel/</guid>
  593. </item>
  594. <item>
  595. <title>Audio e Linux</title>
  596. <link>http://etnablog.altervista.org/linux/audio-e-linux/</link>
  597. <description> <![CDATA[ <br /> <h3>L'AUDIO (e il multimedia) IN LINUX</h3><br />
  598. <br />
  599. <div style='width:100%; height:120px; text-align:center; overflow:auto' title="Circuito pubblicitario"><br />
  600. <br />
  601. </div><br />
  602. <br />
  603. Aggiornato il 21/05/2010<br />
  604. <br />
  605. <div style='width:130px; height:610px; text-align:center; float:right; margin:2px;' title="Sponsor"><br />
  606. <br />
  607. </div><br />
  608. <br />
  609. <div style="text-align:center"> <a href="http://etnablog.altervista.org/misc/Etnablog-Audio-e-linux.pdf">Scarica la versione stampabile della guida (21 pagine formato pdf) <img src="http://etnablog.altervista.org/grafica_sito/pdf-icon.gif" alt="Icona pdf" style="vertical-align:middle"/></a> .</div><br />
  610. <br />
  611. <br />
  612. Riguardo l'audio su Linux in questo periodo c'è gran parlare: sono in molti a sostenere che vi sia troppa confusione nella gestione di audio e contenuti multimediali su questo sistema operativo.<br />
  613. <br />
  614. Questo purtroppo confonde gli utenti, e soprattutto gli sviluppatori di software, che si trovano nel dubbio su quali librerie API sia meglio usare per gestire l'audio delle loro opere informatiche.<br />
  615. <br />
  616. Premessa: è un argomento piuttosto complicato, ho tentato di sintetizzare ma i concetti sono veramente tanti e ritengo sia necessaria più di una sola lettura, lenta e attenta, per capire. Vi avviso inoltre che mi terrò largo, e con la scusante di parlare di audio, parlerò anche di multimedia e di concetti generali di Linux.<br />
  617. <br />
  618. Mi rendo conto che scrivere di Linux, in un momento come questo, in cui il pinguino sta vivendo un periodo di cambiamenti così rapidi, radicali, è pressappoco un suicidio; probabilmente già domattina quanto avrò scritto saprà di vecchio, ma trovo stimolante scrivere, porta a chiarirmi le idee e appoggio l'idea della condivisione delle conoscenze, fondamento del software libero.<br />
  619. <br />
  620. Come viene gestito l'audio in linux? A grandi linee, fra i prodotti che si spartiscono la torta della gestione dell'audio (e del multimedia in generale..) in linux oggi troviamo ALSA, OSS, ESD, aRts, JACK, LADSPA, GStreamer, NMM, XINE, Helix, Phonon, SDL, OpenAL, FMOD, PulseAudio.. In realtà ce ne sarebbero altri..<br />
  621. <br />
  622. Non tutti sanno cosa sono, a che servono, e quali sono i loro limiti e pregi. PulseAudio si sta molto diffondendo ultimamente e sempre più distribuzioni linux lo scelgono come loro server audio "di serie". Ma sono in molti a domandarsi: "ma perchè PulseAudio?", "ma ne avevamo veramente bisogno?", senza contare che in molti si domandano persino cosa sia un server audio..<br />
  623. <br />
  624. Cercherò di spiegarvi con la massima chiarezza che mi riesce, portandovi con me in un ideale cammino, che comincia dal momento in cui accendete il pc e la scheda audio viene rilevata, fino ad arrivare all'emissione del suono.<br />
  625. <br />
  626. La logica che sta dietro questo processo io ritengo sia affascinante.<br />
  627. <br />
  628. <ul><li> <a href="http://etnablog.altervista.org/linux/il-riconoscimento-dellhardware-il-kernel">Il riconoscimento dell'hardware, il Kernel</a> </li><br />
  629. <li> <a href="http://etnablog.altervista.org/linux/la-gestione-dei-devices-audio-su-linux/">La gestione dei devices audio</a> </li><br />
  630. <li> <a href="http://etnablog.altervista.org/linux/i-frameworks-in-linux/">I frameworks</a> </li><br />
  631. <li> <a href="http://etnablog.altervista.org/linux/i-soundservers/">I soundservers</a> </li><br />
  632. <li> <a href="http://etnablog.altervista.org/linux/la-latenza-dellaudio/">La latenza dell'audio</a> </li><br />
  633. <li> <a href="http://etnablog.altervista.org/linux/linux-e-gestione-di-players-multimediali/">Linux e gestione di player multimediali</a> </li></ul> ]]>
  634. </description>
  635. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  636. <guid>http://etnablog.altervista.org/linux/audio-e-linux/</guid>
  637. </item>
  638. <item>
  639. <title>Ciao a tutti, mi chiamo fabiola ferrari fotografa di torino.</title>
  640. <link>http://etnablog.altervista.org/etna/ciao-a-tutti-mi-chiamo-fabiola-ferrari-fotografa-di-torino/</link>
  641. <description> <![CDATA[<p><i>Mi aiutate ad identificare una foto dell'Etna, molte grazie fabiola.</i></p>
  642. <br /> gentilmente vorrei il vostro aiuto per identificare questa foto che verra pubblicata, ma l'editore mi chiede dei dettagli. visto che e passato tanto tempo, vorrei sapere dove mi trovavo nel momento della foto, sullo sfondo puo aiutarvi l'angolazione dell'Etna. molte grazie e saluti da fabiola.<br />
  643. <br />
  644. <a href="http://img198.imageshack.us/img198/2694/img02530alta.jpg"><img src="http://img198.imageshack.us/img198/2694/img02530alta.jpg" title="img02530alta.jpg" alt="img02530alta.jpg" width="100"/></a><br />
  645. <br />
  646. <a href="http://img198.imageshack.us/img198/2694/img02530alta.jpg">http://img198.imageshack.us/img198/2694/<br />
  647. img02530alta.jpg</a>  ]]>
  648. </description>
  649. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  650. <guid>http://etnablog.altervista.org/etna/ciao-a-tutti-mi-chiamo-fabiola-ferrari-fotografa-di-torino/</guid>
  651. </item>
  652. <item>
  653. <title>Ma che fine ho fatto?..</title>
  654. <link>http://etnablog.altervista.org/etna/ma-che-fine-ho-fatto/</link>
  655. <description> <![CDATA[<p><i>Avete tutti ragione, ma non vi ho abbandonato..</i></p>
  656. <br /> E' vero sono un stato pò assente ultimamente, fra la laurea, l'abilitazione, il lavoro, la musica, il fatto che sono stato in viaggio, e i vari pensieri non ho più fatto escursioni sull'Etna degne di nota.<br />
  657. <br />
  658. <img src="http://etnablog.altervista.org/immagini/Etnablog/img_big/ufo.jpg" alt="ufo" title="ufo" /><br />
  659. <br />
  660. Ho alcuni progetti comunque, che conto di realizzare non appena possibile, non appena sentirò la necessità di dovere disintossicare lo spirito...<br />
  661. <br />
  662. ..Perchè per me andare sull'Etna è spesso una evasione, la voglia di stare a contatto con qualcosa di immenso.<br />
  663. <br />
  664. Avete presente quei tardi pomeriggi in cui ci siete solo voi a camminare per i sentieri, non c'è nessuno per chilometri.. Sentite solo il vento, il fruscio tra i rami ed il suono dei vostri passi?..<br />
  665. E' un'esperienza che non tutti hanno mai fatto nella vita, penso che solo chi l'ha fatta possa capire di cosa sto parlando.. E' qualcosa di più persino del "turismo", inteso come andare sul posto, farsi due foto, essere spennati in un bar per una bottiglietta d'acqua di un quarto di litro e una coca cola, e poi ritirarsi giù a casa..<br />
  666. <br />
  667. Il 99% della gente crede che il massimo del turismo che l'Etna possa offrire sia lo sci o lo snowboard domenicale, o le palle di neve, la risalita con la funivia, la discesa giù (con l'esperienza unica di farlo guardando la costa Ionica a distanza..), la carne arrostita in un rifugio non lontano dall'auto. E' il turismo delle strutture ben organizzate, servono parcheggi, servono strutture di risalita, per qualcuno serve persino un "terzo polo".. Contrari? Favorevoli?.. Santo Dio non fatemi entrare nel merito di questa discussione, sopra cui immagino già flame e orde di gente che si scannerà per imporre la propria opinione su quella degli altri..<br />
  668. <br />
  669. Mi diverte ogni tanto prendere gli sci e sciare, ma so anche quale incalcolabile valore abbia avuto in certi momenti della mia vita ascoltare in silenzio e pace il respiro della montagna..<br />
  670. <br />
  671. Non sono ancora andato a visitare l'attuale eruzione, ma è probabile che lo farò.. Per ora mi sto limitando ad osservarla col binocolo dal balcone di casa.. Devo trovare la giusta "ispirazione"..<br />
  672. ..E' qualcosa di diverso.. E' una visita più "turistica", che mi fa piacere fare con gli amici, quelli giusti..<br />
  673. <br />
  674. SantoVip, mi scriveva, in un commento in un'altra discussione, che sarebbe una buona idea aggiugere un forum di discussione nel sito... Sai ci ho pensato ma non lo farò, per diverse ragioni.<br />
  675. <br />
  676. I montanari spesso i loro trucchetti per godersi al meglio le loro escursioni, i loro posti più belli, tendono spesso a tenerseli per se, segreti, un pò per proteggere dagli sciacalli quelle zone, un pò per quella sensazione di dire "ho scoperto un posto troppo bello che non conosce nessuno", un pò per egoismo.. E il motivo per cui è nato questo sito era proprio questo, condividerne un poco di questa conoscenza, almeno quella mia.. Perchè contrariamente a quanto si possa credere se nessuno li conosce questi posti, non c'è nessuno che si batterà mai per proteggerli..<br />
  677. <br />
  678. L'Etna mette una certa paura al turista.. Ed ha ragione, segnaletica sui sentieri approssimativa ed essenziale, le cartine militari ormai vecchie di 15 anni, rifugi su cui spesso manca la legna, non si capisce che tempi di percorrenza ci sono tra un punto ed un altro.. Ecco perchè scrivo sempre i miei thread sul sito come rivolti a gente ignorante, che vorrebbe cimentarsi, ma ha paura a farlo.<br />
  679. <br />
  680. In realtà per la maggior parte delle domande del tipo "quale è la strada giusta per arrivare al monte X", bastano un paio di ricerche con la funzione search del sito ed osservare una cartina semiseria per avere la risposta che si cerca..<br />
  681. <br />
  682. Un forum presuppone la moderazione di uno staff, che ne vigili sul rispetto delle regole, e che sia preparato e competente...E io in questo momento non ho nè la voglia nè il tempo di starci dappresso, e, ti dirò, nemmeno le reali competenze per farlo ed essere d'aiuto in pieno..<br />
  683. <br />
  684. Non mi tengo aggiornato sugli orari della funivia, nemmeno quelli dei pulmini, non vado con regolarità in montagna purtroppo, e già chiunque, se vuole, può aprirsi la sua discussione nuova, come nuova pagina nel sito, purchè sia utile ed interessante a tutti.. ]]>
  685. </description>
  686. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  687. <guid>http://etnablog.altervista.org/etna/ma-che-fine-ho-fatto/</guid>
  688. </item>
  689. <item>
  690. <title>Itinerario: Da ingresso &quot;Bosco chiuso&quot; a monte Guardirazzi</title>
  691. <link>http://etnablog.altervista.org/etna/itinerario-da-ingresso-bosco-chiuso-a-monte-guardirazzi/</link>
  692. <description> <![CDATA[ <br /> Il territorio di Maletto colpisce senz'altro per i suoi splendidi boschi.<br />
  693. Questo itinerario si compie in due giorni, con un pernottamento al <strong>rifugio Monte Maletto</strong>.<br />
  694. <br />
  695. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/Etna-da-strada-Bronte.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/Etna-da-strada-Bronte.jpg" id="thumb06" longdesc="http://etnablog.altervista.org/immagini/Etnablog/longdesc/Etna-da-strada-Bronte.txt"  title="Etna, dalla statale 284" alt="Etna, dalla statale 284" width="100" /></a> <span class="display_none">[<a href="http://etnablog.altervista.org/immagini/Etnablog/longdesc/Etna-da-strada-Bronte.txt" title="Descrizione foto Etna-da-strada-Bronte.txt">D</a>]</span> <br />
  696. <br />
  697. Il punto di partenza dell'escursione è il cancello d'ingresso &quot;<strong>bosco chiuso</strong>&quot;, raggiungibile lasciando la statale 284 e percorrendo una strada sterrata, percorribile senza particolari difficoltà anche con vetture non particolarmente potenti.<br />
  698. <br />
  699. Lasciammo la vettura proprio di fronte al cancello d'ingresso &quot;bosco chiuso&quot; alle ore 17 e 30, da qui il cammino sale, compie un dislivello complessivo di circa <strong>500 metri</strong> fino al rifugio Maletto (ore 20.00 circa), dove abbiamo trascorso la notte.<br />
  700. <br />
  701. L'indomani siamo partiti da rifugio Maletto alle 08:00, e ci incamminammo verso la nostra direzione: monte Guardirazzi (dislivello, dal rifugio al monte Guardirazzi, circa 300 metri).<br />
  702. <br />
  703. Il sentiero, come si può osservare dalla cartina IGMI, è interrotto dalle <strong>lave del 1976</strong>, che bisogna quindi attraversare, seguendo la traccia solcata e gli omini in pietra, proprio sulla colata.<br />
  704. <br />
  705. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/Dalla-sciara-per-monte-Guardirazzi.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/Dalla-sciara-per-monte-Guardirazzi.jpg" id="thumb16" longdesc="http://etnablog.altervista.org/immagini/Etnablog/longdesc/Dalla-sciara-per-monte-Guardirazzi.txt"  title="Etna, dalla sciara per monte Guardirazzi" alt="Etna, dalla sciara per monte Guardirazzi" width="100" /></a> <span class="display_none">[<a href="http://etnablog.altervista.org/immagini/Etnablog/longdesc/Dalla-sciara-per-monte-Guardirazzi.txt" title="Descrizione foto Dalla-sciara-per-monte-Guardirazzi.txt">D</a>]</span> <br />
  706. <br />
  707. Attraversate la sciara e raggiungete quindi il bosco dall'altra parte. A questo punto la cartina mostra un sentiero che corre lungo il bordo della colata, e si porta in su fino a raggiungere il monte Guardirazzi; in realtà non abbiamo trovato traccia di questo sentiero, nè omini in pietra nè altro. <br />
  708. Sicchè abbiamo abbandonato il tracciato visibile (presi i dovuti riferimenti) e ci siamo portati in maniera decisa in direzione del Guardirazzi, muovendoci lungo il bordo della sciara.<br />
  709. <br />
  710. Abbiamo raggiunto la sommità di monte Guardirazzi alle 09:45 circa.<br />
  711. <br />
  712. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/Panorama-da-monte-Guardirazzi.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/Panorama-da-monte-Guardirazzi.jpg" id="thumb26" longdesc="http://etnablog.altervista.org/immagini/Etnablog/longdesc/Panorama-da-monte-Guardirazzi.txt"  title="Panorama da monte Guardirazzi" alt="Panorama da monte Guardirazzi" width="100" /></a> <span class="display_none">[<a href="http://etnablog.altervista.org/immagini/Etnablog/longdesc/Panorama-da-monte-Guardirazzi.txt" title="Descrizione foto Panorama-da-monte-Guardirazzi.txt">D</a>]</span> <br />
  713. <br />
  714. Trascorso un pò di tempo sul monte, siamo ritornati al rifugio Maletto, dove abbiamo consumato un pasto, e poi giu di ritorno, fino all'automobile. ]]>
  715. </description>
  716. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  717. <guid>http://etnablog.altervista.org/etna/itinerario-da-ingresso-bosco-chiuso-a-monte-guardirazzi/</guid>
  718. </item>
  719. <item>
  720. <title>Spaghetti al pesto genovese (con patate)</title>
  721. <link>http://etnablog.altervista.org/cucina-rapida/spaghetti-al-pesto-genovese-con-patate/</link>
  722. <description> <![CDATA[ <br /> Cucinare è un dovere verso se stessi, ma anche un divertimento e un piacere spesso, ma resta comunque il fatto che ritirandomi alle 16:00 circa ogni giorno, e spesso digiuno, ho fame ma anche voglia di un pasto sbrigativo ma decente..<br />
  723. <br />
  724. Oggi mi sono cimentato nella preparazione di un normalissimo piatto di <strong>spaghetti al pesto</strong>.<br />
  725. <br />
  726. Anzitutto: amo gli spaghetti barilla, ma odio i &quot;numero 3&quot;, troppo sottili, e non mi piace la consistenza che assumono al palato.<br />
  727. <br />
  728. Adoro invece gli spaghetti &quot;numero 5&quot; che, se da un lato richiedono non meno di 8 minuti di ebollizione, dall'altro sono decisamente più consistenti e gradevoli al palato, inoltre durante gli 8 minuti che questi richiedono per la cottura, voi potete tranquillamente dedicarvi alla preparazione del condimento.<br />
  729. <br />
  730. Le mie ricette sono sempre rivolte alla preparazione di un piatto per <strong>una sola persona</strong>.<br />
  731. <br />
  732. Ingredienti del piatto da me e per me preparato oggi:<br />
  733. - 170 grammi di spaghetti barilla &quot;numero 5&quot; (occhio, è un piatto MOLTO abbondante)<br />
  734. - una confezione di pesto buitoni (160 grammi)<br />
  735. - due patate di piccole dimensioni (ahime.. Non avevo una patata &quot;media&quot;)<br />
  736. <br />
  737. <br />
  738. Procedimento:<br />
  739. - Mettete nella pentola un quantitativo di acqua sufficiente a contenere gli spaghetti<br />
  740. - Prendete una delle due patate e sbucciatela.<br />
  741. - Accendete il fuoco e cominciate a mettete in ebollizione l'acqua.<br />
  742. - Mentre l'acqua si riscalda, tagliate la seconda patata, e quindi tagliate entrambe le patate sbucciante in cubetti di circa un centimetro per lato. Insomma una sorta di spezzatino.<br />
  743. - Gettate i cubetti di patata nella pentola con l'acqua che si scalda.<br />
  744. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/pelapatate.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/pelapatate.jpg" title="pelapatate.jpg" alt="pelapatate.jpg" width="100"/></a><br />
  745. - Chiudete la pentola con il suo coperchio, così bollirà prima.<br />
  746. - Prendete gli spaghetti e pesatene 170 grammi.<br />
  747. - Preparatevi la tovaglia con il piatto, il bicchiere, l'acqua, e l'immancabile buon vino di casa.<br />
  748. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/tavola.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/tavola.jpg" title="tavola.jpg" alt="tavola.jpg" width="100"/></a><br />
  749. - L'acqua bolle? Gettatevi dentro i vostri spaghetti. <strong>Non spezzateli</strong>. Spezzare gli spaghetti equivale più o meno ad un sacrilegio..<br />
  750. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/spaghetti%20in%20pentola.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/spaghetti%20in%20pentola.jpg" title="spaghetti in pentola.jpg" alt="spaghetti in pentola.jpg" width="100"/></a><br />
  751. - Durante gli otto minuti che seguiranno finite di sistemare la vostra tavola e preparate lo scolapasta sul lavandino.<br />
  752. - Mettete il sale nell'acqua in ebollizione!<br />
  753. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/cottura%20spaghetti.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/cottura%20spaghetti.jpg" title="cottura spaghetti.jpg" alt="cottura spaghetti.jpg" width="100"/></a><br />
  754. - All'ottavo minuto scolate la pasta e....<br />
  755. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/spaghetti%20al%20pesto.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/spaghetti%20al%20pesto.jpg" title="spaghetti al pesto.jpg" alt="spaghetti al pesto.jpg" width="100"/></a><br />
  756. - Buon appetito  <img src="http://etnablog.altervista.org/grafica_sito/4all/wink.gif" title="wink.gif" alt="wink.gif"/> ]]>
  757. </description>
  758. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  759. <guid>http://etnablog.altervista.org/cucina-rapida/spaghetti-al-pesto-genovese-con-patate/</guid>
  760. </item>
  761. <item>
  762. <title>Modificare la tonalità di un brano</title>
  763. <link>http://etnablog.altervista.org/informatica/modificare-la-tonalita-di-un-brano/</link>
  764. <description> <![CDATA[ <br /> Tanto tempo era trascorso da quando, per motivi di studio, ho mollato il mio vecchio basso e non ho più suonato.. Ma da allora quel basso, dall'alto del chiodo in cui era appeso, mi guardava con aria saggia e stava lì a ricordarmi chi fosse (..o chi fossi io?..) e che il legame non era ancora spezzato..<br />
  765. <br />
  766. Bene.. Da poco tempo ho riabbracciato il mio <strong>YAMAHA BBG4AII</strong>  <img src="http://etnablog.altervista.org/grafica_sito/4all/wink.gif" title="wink.gif" alt="wink.gif"/> . <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/Yamaha%20BBG4AII.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/Yamaha%20BBG4AII.jpg" id="thumb16" longdesc="http://etnablog.altervista.org/immagini/Etnablog/longdesc/Yamaha%20BBG4AII.txt"  title="Il mio basso" alt="Il mio basso" width="100" /></a> <span class="display_none">[<a href="http://etnablog.altervista.org/immagini/Etnablog/longdesc/Yamaha%20BBG4AII.txt" title="Descrizione foto Yamaha BBG4AII.txt">D</a>]</span> <br />
  767. Adesso ho un nuovo gruppetto e ci dilettiamo a fare cover... Ma è presto sopraggiunto un problema: la tonalità originale della canza che dobbiamo interpretare non si adatta a quella della voce della cantante. Ho allora cercato un programma che mi permettesse di risolvere il problema.<br />
  768. <br />
  769. Bene, l'ho trovato, è opensource, multipiattaforma, è <strong>Audacity</strong>.<br />
  770. <br />
  771. La versione che sto usando è quella fornita nei repository di Linux Ubuntu Gutsy, la <strong>1.3.3</strong> (ma, ripeto, è multipiattaforma, quindi potete anche scaricare <strong>gratuitamente</strong> audacity dal suo  <a href="http://audacity.sourceforge.net/">sito</a>  per usarlo su Windows.<br />
  772. <br />
  773. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/audacity.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/audacity.png" title="audacity.png" alt="audacity.png" width="100"/></a> <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/audacity_semitoni.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/audacity_semitoni.png" title="audacity_semitoni.png" alt="audacity_semitoni.png" width="100"/></a><br />
  774. Semplicemente aprite l'mp3 di cui volete modificare la tonalità con audacity, quindi fate &quot;modifica&quot; --&gt; &quot;Seleziona tutto&quot;, e poi &quot;effetti&quot; --&gt; &quot;cambia intonazione&quot;, quindi impostate il numero di semitoni in su o in giu verso cui dovete portare l'mp3..<br />
  775. <br />
  776. Buona musica a tutti.. ]]>
  777. </description>
  778. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  779. <guid>http://etnablog.altervista.org/informatica/modificare-la-tonalita-di-un-brano/</guid>
  780. </item>
  781. <item>
  782. <title>Che fine ha fatto Piero Ricca?</title>
  783. <link>http://etnablog.altervista.org/varie/che-fine-ha-fatto-piero-ricca/</link>
  784. <description> <![CDATA[ <br /> Seguivo il suo  <a href="http://www.pieroricca.org/chi-sono/">blog</a>  praticamente da sempre.. E sinceramente sono mesi che ormai mi manca non potere più leggervi novità...<br />
  785. <br />
  786. Dopo l'ultima vicenda con Emilio Fede, il sito è stato infatti oscurato dalla finanza..<br />
  787. <br />
  788. Non mi ritengo molto d'accordo con questo modo di reprimere la libertà d'espressione...Che chiudano anche questo blog se non gli fa piacere.<br />
  789. <br />
  790. Il blog di Ricca faceva migliaia e migliaia di ingressi ogni giorno.. Forse non sapevano neanche loro che chiudendo un blog del genere buttavano giu una pietra miliare sulla repressione della libertà di esprimersi.<br />
  791. <br />
  792. Adesso Piero scrive su:  <a href="http://www.quimilanolibera.net/">http://www.quimilanolibera.net/</a>  .<br />
  793. <br />
  794. Qualche link, in modo da salvare dal tempo quello che è successo:<br />
  795. <br />
  796. <a href="http://www.quimilanolibera.net/index.php/2007/07/11/il-mio-blog-bloccato-dalla-finanza/">http://www.quimilanolibera.net/index.php<br />
  797. /2007/07/11/il-mio-blog-bloccato-dalla-f<br />
  798. inanza/</a> <br />
  799. <br />
  800. <a href="http://www.quimilanolibera.net/index.php/2007/07/12/il-mio-blog-bloccato-dalla-finanza2/">http://www.quimilanolibera.net/index.php<br />
  801. /2007/07/12/il-mio-blog-bloccato-dalla-f<br />
  802. inanza2/</a> <br />
  803. <br />
  804. <a href="http://www.quimilanolibera.net/index.php/2007/07/13/il-mio-blog-bloccato-dalla-finanza3/">http://www.quimilanolibera.net/index.php<br />
  805. /2007/07/13/il-mio-blog-bloccato-dalla-f<br />
  806. inanza3/</a> <br />
  807. <br />
  808. <a href="http://www.unita.it/view.asp?idContent=67349">http://www.unita.it/view.asp?idContent=6<br />
  809. 7349</a> <br />
  810. <br />
  811. <a href="http://www.youtube.com/watch?v=5KbGNQwO7es">http://www.youtube.com/watch?v=5KbGNQwO7<br />
  812. es</a> <br />
  813. <br />
  814. Vedremo come andrà a finire.. ]]>
  815. </description>
  816. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  817. <guid>http://etnablog.altervista.org/varie/che-fine-ha-fatto-piero-ricca/</guid>
  818. </item>
  819. <item>
  820. <title>Connettersi ad un database mysql con C</title>
  821. <link>http://etnablog.altervista.org/programmazione-c/connettersi-ad-un-database-mysql-con-c/</link>
  822. <description> <![CDATA[ <br /> Nel mio pc ho un server  <a href="http://it.wikipedia.org/wiki/LAMP_(piattaforma)">LAMP</a>  su cui tengo una copia del sito e faccio esperimenti prima di portare on line le modifiche.<br />
  823. <br />
  824. Mi domandavo: e se volessi manipolare il mio database mysql con un programma C? E' una cosa difficile da fare?<br />
  825. <br />
  826. Ebbene, non è difficile  <img src="http://etnablog.altervista.org/grafica_sito/4all/smile.gif" title="smile.gif" alt="smile.gif"/> . Sono incappato su questa ottima guida, di cui indico il link per esteso:<br />
  827. <br />
  828. <a href="http://www.linuxdidattica.org/docs/prg_C/cgiprg24.html">http://www.linuxdidattica.org/docs/prg_C<br />
  829. /cgiprg24.html</a> <br />
  830. <br />
  831. Da lì ho tratto questo ottimo codice, che è stato semplicissimo modificare per le mie esigenze:<br />
  832. <br />
  833. <pre><code>
  834. #include &lt;stdio.h&gt;
  835. #include &lt;stdlib.h&gt;
  836. #include &lt;mysql/mysql.h&gt;
  837.  
  838. const char* host = &quot;localhost&quot;; // host di connessione
  839. const char* database = &quot;mydb&quot;;  // database di connessione
  840. const char* db_user = &quot;myuser&quot;; // nome utente per la connessione
  841. const char* db_pass = &quot;mypass&quot;; // password non cifrata
  842.  
  843. int main ()
  844. {
  845.        MYSQL mysql;
  846.        MYSQL_ROW row;        // la riga
  847.        MYSQL_RES* result;
  848.        MYSQL_FIELD* field;     // il campo ritornato
  849.  
  850.        char* query = &quot;SELECT * FROM nome_tabella;&quot;;
  851.  
  852.        int i = 0, j = 0, n_rows = 0;
  853.  
  854.        // restituisce NULL se non avviene con successo
  855.        if (! mysql_init (&amp;mysql)) {
  856.                printf (&quot;Errore nella allocazione di memoria.n&quot;);
  857.                exit (EXIT_FAILURE);
  858.        }
  859.  
  860.        if (! mysql_real_connect (&amp;mysql, host, db_user, db_pass, &quot;&quot;,
  861.                        0, NULL, 0)) {
  862.                printf (&quot;Errore nella connessione.n&quot;);
  863.                goto error;
  864.        }
  865.  
  866.        // restituisce zero se avviene con successo
  867.        if (mysql_select_db (&amp;mysql, database)) {
  868.                printf (&quot;Errore nella selezione del database.n&quot;);
  869.                goto error;
  870.        }
  871.  
  872.        printf (&quot;Connessione avvenuta.n&quot;);
  873.  
  874.  
  875.        // restituisce zero se avviene con successo
  876.        if (mysql_select_db (&amp;mysql, database)) {
  877.                printf (&quot;Errore nella selezione del database.n&quot;);
  878.                goto error;
  879.        }
  880.  
  881.        // esegue la query
  882.        if (mysql_query (&amp;mysql, query)) {
  883.                printf(&quot;Errore nella query.n&quot;);
  884.                goto error;
  885.        }
  886.  
  887.        result = mysql_store_result (&amp;mysql);
  888.  
  889.        n_rows = mysql_num_rows (result);
  890.  
  891.        for (j = 0; j &lt; n_rows; j++) {
  892.                i = 0;
  893.                mysql_field_seek (result, 0);           // sposta a inizio riga
  894.                row = mysql_fetch_row (result);      // preleva i dati della riga
  895.                while ((field = mysql_fetch_field (result))) {
  896.                        printf (&quot;%s: &quot;, field-&gt;name);     // visualizza il campo
  897.                        printf (&quot;%sn&quot;, row[i++]);          // visualizza il dato del campo
  898.                }
  899.  
  900.                printf (&quot;n&quot;);
  901.        }
  902.  
  903.  
  904.  
  905.       mysql_free_result (result);
  906.  
  907. error:
  908.        mysql_close (&amp;mysql);   // chiusura del database
  909.  
  910.        exit (EXIT_SUCCESS);
  911. }
  912. </code></pre><br />
  913. <br />
  914. Dovete anzitutto avere un database mysql gia installato e funzionante, con almeno una tabella gia pronta.<br />
  915. <br />
  916. Il programmino in questione semplicemente si connette al db e vi mostra il contenuto della tabella.<br />
  917. <br />
  918. Modificate nel codice i giusti parametri per connettersi al database (user, password, nome database...), modificate la query indicando il giusto nome della tabella, quindi salvate il file di testo col nome &quot;prova_mysql.c&quot;.<br />
  919. <br />
  920. Quindi installatevi da Synaptic il pacchetto <strong>libmysql++-dev</strong> (vi ricordo che la distro che uso è Ubuntu), che vi installerà le librerie di sviluppo per mysql e compilate il tutto con:<br />
  921. <br />
  922. gcc -lmysqlclient -o mysqlapp prova_mysql.c<br />
  923. <br />
  924. Quindi eseguite facendo, da shell:<br />
  925. ./mysqlapp<br />
  926. A me funziona perfettamente, mostrandomi su shell tutto il contenuto della tabella indicata nella query :) ]]>
  927. </description>
  928. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  929. <guid>http://etnablog.altervista.org/programmazione-c/connettersi-ad-un-database-mysql-con-c/</guid>
  930. </item>
  931. <item>
  932. <title>Ruotatore automatico di tutte le foto in una cartella...con GUI GTK!</title>
  933. <link>http://etnablog.altervista.org/programmazione-c/ruotatore-automatico-di-tutte-le-foto-in-una-cartellacon-gui-gtk/</link>
  934. <description> <![CDATA[<p><i>Il mio primo VERO programma in C :)</i></p>
  935. <br /> Questo è il mio primo vero programma in C.<br />
  936. <br />
  937. In sostanza si tratta di un programma che vi permette di scegliere, con una comoda interfaccia in GTK, una cartella del vostro PC, e di applicare, sulla cartella scelta, il comando di autorotazione delle foto di cui vi ho parlato la scorsa volta.<br />
  938. <br />
  939. Sembra funzionare bene.<br />
  940. <br />
  941. Il programma COMPILATO e anche i SORGENTI COMPLETI sono scaricabili da qui:<br />
  942. <br />
  943. <a href="http://etnablog.altervista.org/misc/script-c/gira_tutte_le_foto_con_gui.tar.gz">http://etnablog.altervista.org/misc/scri<br />
  944. pt-c/gira_tutte_le_foto_con_gui.tar.gz</a> <br />
  945. <br />
  946. Vi ricordo che perchè il programma possa funzionare, è necessario installare da Synaptic il comando &quot;<strong>jhead</strong>&quot;.<br />
  947. <br />
  948. In realtà, quel codice è per me un buon esercizio e riferimento su come:<br />
  949. - Creare una interfaccia con GLADE e GTK da cui scegliere una CARTELLA e NON un FILE.<br />
  950. - Eseguire da una GUI un comando per SHELL.<br />
  951. - Concatenare stringhe e farne un &quot;escape&quot; degli apici (caratteri &quot;pericolosi&quot;..).<br />
  952. - Usare gprintf e la sua gprintf.h<br />
  953. - Superare un errore di tipo &quot;incompatible pointer type&quot;.<br />
  954. - Tenere conto della codifica UTF-8 delle GTK.<br />
  955. - eliminare gnome.h in favore invece di gtk/gtk.h . Non so bene perchè ma preferisco non usarlo..<br />
  956. <br />
  957. Se avete qualche consiglio su come migliorarlo...<br />
  958. Eccovi il codice principale. Lo scrivo qui per tante ragioni, tra cui il fatto che così sarà indicizzato, oltre che dai motori di ricerca, anche dal motore di ricerca interno al sito:<br />
  959. <pre><code>
  960. /* Created by Anjuta version 1.2.4a */
  961. /* This file will not be overwritten */
  962.  
  963. #ifdef HAVE_CONFIG_H
  964. #include &lt;config.h&gt;
  965. #endif
  966.  
  967. #include &lt;gtk/gtk.h&gt;
  968. #include &lt;stdlib.h&gt;
  969. #include &lt;glade/glade.h&gt;
  970. #include &lt;glib/gprintf.h&gt;
  971. /*
  972.    NELLA GUIDA DI RIFERIMENTO DELLE GLIB SI LEGGE:
  973. &quot;Note that the functions g_printf(), g_fprintf(), g_sprintf(), g_snprintf(), g_vprintf(), g_vfprintf(), g_vsprintf()
  974. and g_vsnprintf() are declared in the header gprintf.h which is not included in glib.h
  975. (otherwise using glib.h would drag in stdio.h), so you'll have to explicitly include &lt;glib/gprintf.h&gt;
  976. in order to use the GLib printf() functions.
  977. */
  978.  
  979. //gchar selezione[]= &quot;&quot;;
  980. gchar* selezione = NULL;
  981. /*
  982.   INVECE DI METTERE gchar* selezione = NULL;
  983.   PRIMA AVEVO USATO: gchar* selezione = g_strdup(&quot;a string&quot;);
  984.   NE OTTENEVO UN ERRORE IN COMPILAZIONE: Il C non ammette di inizializzare variabili con una funzione
  985. */
  986.  
  987.  
  988. void
  989. on_button1_clicked (GtkButton *button, gpointer user_data)
  990. {
  991. /*
  992.     Avevo scritto:
  993.     GtkWidget *window1;
  994.     window1 = gtk_widget_get_toplevel(button);
  995.     compilando mi dava un warning: passing argument 1 of 'gtk_widget_toplevel' from incompatible pointer type.
  996.     Questo perchè ho passato un GtkButton* invece di un GtkWidget*.
  997.     Ho risolto il problema facendo un &quot;casting&quot; con GTK_WIDGET.
  998. */
  999. GtkWidget *window1 = gtk_widget_get_toplevel(GTK_WIDGET (button));
  1000. gchar *filename;
  1001. GtkWidget *dialog;
  1002.  
  1003.   dialog = gtk_file_chooser_dialog_new (&quot;Open File&quot;,
  1004.      GTK_WINDOW (window1),
  1005.      GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
  1006.      GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
  1007.      GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
  1008.      NULL);
  1009.  /*
  1010.      Anzichè scrivere GTK_WINDOW(window1) prima c'era scritto solo &quot;window1&quot;, e beccavo un warning in compilazione tipo &quot;incompatible pointer type&quot;..
  1011.  Ho risolto facendo il casting con GTK_WINDOW.
  1012.  Se vedi nella guida di riferimento delle gtk vedi che la sintassi di gtk_file_chooser_dialog_new è:
  1013.  GtkWidget* gtk_file_chooser_dialog_new (const gchar *title, GtkWindow *parent, GtkFileChooserAction action,const gchar *first_button_text, ...);
  1014.  
  1015.  Passando solo window1 passavo un GtkWidget e NON la &quot;parent window&quot;.
  1016.  */
  1017.    
  1018.  
  1019.  
  1020.   if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
  1021.     {
  1022.  
  1023.  filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
  1024.  
  1025. /*
  1026.      AVREI POTUTO USARE:
  1027.      filename = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
  1028.  
  1029.      gtk_file_chooser_get_uri OTTIENE IL FILE PER &quot;URI&quot;. Gli spazi vengono sostituiti, ad esempio, da &quot;%20&quot;.
  1030.      Ottenere il valore per URI sarebbe utile per un fatto di sicurezza, nel caso avrei dovuto passare il file a fopen (ad esempio).
  1031.      Nel nostro caso invece, il file lo passerò a g_spawn_sync (vedi piu avanti)
  1032. */
  1033. selezione = g_strdup(filename);
  1034.  /*
  1035.      PER SETTARE &quot;SELEZIONE&quot; PRIMA AVEVO USATO strcpy(selezione, &quot;pippoasdfasdf&quot;);
  1036.      POI MI AVEVANO CONSIGLIATO INVECE DI USARE:
  1037.  sprintf(selezione, &quot;%s&quot;, filename);
  1038.      ALL'INIZIO DEL PROGRAMMA PERO' &quot;selezione&quot; era inizializzata così: gchar selezione[]= &quot;&quot;;
  1039.      QUINDI NON AVEVO UN PUNTATORE COME ADESSO
  1040.  
  1041.      SINTASSI: int sprintf(char *str, const char *format, ...);
  1042.      La funzione sprintf() differisce dalla funzione printf()  in quanto i caratteri vengono scritti nell'area puntata da str.
  1043.      AVREI POTUTO USARE, AL POSTO DI SPRINTF, ANCHE IL COMANDO:
  1044.      strcpy(selezione, filename);
  1045.      STRCPY FUNZIONA COSI':
  1046.      SINTASSI: ptr = strcpy( s1, s2 );
  1047.      La funzione strcpy() copia la stringa s1 sull'area puntata da s2 la quale deve essere sufficientemente ampia ad accogliere tutti i caratteri di s1 compreso il terminatore '&amp;#65533;'.
  1048. */
  1049.       g_printf(&quot;DIRECTORY SELEZIONATA: %s n&quot;, selezione);
  1050.     }
  1051.   else filename = &quot;&quot;;
  1052.  
  1053.   gtk_widget_destroy (dialog);
  1054. /*  Ho preferito ricercare la GtkLabel a partire da window1, per esigenze di &quot;esperimento&quot;,
  1055. *   ma avrei potuto direttamente scrivere:
  1056. *   GladeXML *self = glade_get_widget_tree(GTK_WIDGET(button));
  1057.    */
  1058.    GladeXML *self = glade_get_widget_tree(GTK_WIDGET(window1));
  1059. GtkWidget *label = glade_xml_get_widget (self, &quot;etichetta&quot;);
  1060.  
  1061.   filename = g_filename_display_name (filename);
  1062.      /*
  1063.   Voglio stampare a video il file ottenuto.
  1064.            Le GUI GTK, in generale, usano la codifica UTF-8 ma l'encoding dell'utente potrebbe non essere UTF-8, e così
  1065.            anche i nomi dei suoi file potrebbero non essere UTF-8.
  1066.            Quindi bisogna assicurarsi di convertire il nome del file ottenuto in UTF-8 per essere certi di mostrarlo a video correttamente.
  1067.            Usiamo allora il comando g_filename_display_name che ha questa sintassi:
  1068.            gchar*      g_filename_display_name         (const gchar *filename);
  1069.     */
  1070.  
  1071. gtk_label_set_text (GTK_LABEL(label), filename);
  1072.  
  1073. }
  1074.  
  1075. void
  1076. on_button_ruota_clicked (GtkButton *button, gpointer user_data)
  1077. {
  1078. /*
  1079.     IL COMANDO CHE PASSERO' ALLA SHELL E':
  1080. find 'percorso/cartella' -type f -iname '*.jpg' -print0 | xargs -0 jhead -autorot
  1081.     -print0: i singoli file restituiti da find verranno passati ad xargs in modo che vengano correttamente interpretati nonostante vi siano spazi vuoti o apici in mezzo.
  1082.         Print0 separa i singoli file da un carattere speciale detto &quot;NULL&quot;, in modo che xargs non faccia confusione tra spazi bianchi nei nomi dei file e la separazione dei file stessi.
  1083.         Se find trova troppi file si corre il rischio che la stringa sia troppo lunga ed ecceda il limite di caratteri ammesso nella riga di comando.
  1084.         Per questo motivo usiamo xargs che se la sbrigherà lui a fare in modo che questo non succeda. Inoltre, tramite il parametro -0, diciamo ad xargs che riconosca i singoli file perchè separati da un carattere &quot;NULL&quot;. Per questo prima abbiamo usato -print0!
  1085.   */
  1086. gchar* selezione_escape = g_shell_quote (selezione);
  1087.    gchar* comando = g_strconcat(&quot;find &quot;, selezione_escape,&quot; -type f -iname '*.jpg' -print0 | xargs -0 jhead -autorot&quot;, NULL);
  1088. g_printf(&quot;COMANDO ESEGUITO: %s nn&quot;, comando);
  1089.  
  1090. system(comando);
  1091. /*
  1092.     Il comando system esegue su shell un comando. Piu o meno allo stesso scopo possono servire anche i comandi
  1093.     g_spawn_sync e g_spawn_command_line_sync. Non sono riuscito ad implementarli con successo.
  1094. */
  1095.  
  1096. }
  1097.  
  1098. int main (int argc, char *argv[])
  1099. {
  1100. GtkWidget *window1, *button1, *button_ruota;
  1101. GladeXML *xml;
  1102. if (selezione == &quot;&quot; || selezione == NULL) g_printf(&quot;SELEZIONE ATTUALE: NESSUNAn&quot;);
  1103. else g_printf(&quot;SELEZIONE ATTUALE: %s n&quot;, selezione);
  1104.    // PACKAGE è definito in config.h
  1105. //gnome_init (PACKAGE, VERSION, argc, argv);
  1106. gtk_init (&amp;argc, &amp;argv);
  1107. //glade_gnome_init ();
  1108.  
  1109. xml = glade_xml_new (&quot;gira_tutte_le_foto_con_gui.glade&quot;, NULL, NULL);
  1110.  
  1111. /* Ho ESCLUSO l'autoconnect, faccio le callback manualmente */
  1112. // glade_xml_signal_autoconnect (xml);
  1113. window1 = glade_xml_get_widget (xml, &quot;window1&quot;);
  1114.  
  1115. button1 = glade_xml_get_widget (xml, &quot;button1&quot;);
  1116.  
  1117. g_signal_connect (G_OBJECT (button1), &quot;clicked&quot;,
  1118.                    G_CALLBACK (on_button1_clicked),
  1119.                    NULL);
  1120.  
  1121. button_ruota = glade_xml_get_widget (xml, &quot;button_ruota&quot;);
  1122.  
  1123.    g_signal_connect (G_OBJECT (button_ruota), &quot;clicked&quot;,
  1124.                    G_CALLBACK (on_button_ruota_clicked),
  1125.                    selezione);
  1126.  
  1127.    g_signal_connect (G_OBJECT (window1), &quot;delete_event&quot;,
  1128.                    G_CALLBACK (gtk_main_quit), NULL);
  1129. gtk_widget_show (window1);
  1130.  
  1131.  
  1132. gtk_main ();
  1133. return 0;
  1134. }
  1135. </code></pre> ]]>
  1136. </description>
  1137. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  1138. <guid>http://etnablog.altervista.org/programmazione-c/ruotatore-automatico-di-tutte-le-foto-in-una-cartellacon-gui-gtk/</guid>
  1139. </item>
  1140. <item>
  1141. <title>Ruotare in automatico le foto scaricate dalla fotocamera digitale</title>
  1142. <link>http://etnablog.altervista.org/linux/ruotare-in-automatico-le-foto-scaricate-dalla-fotocamera-digitale/</link>
  1143. <description> <![CDATA[<p><i>Il comando jhead e le proprietà exif</i></p>
  1144. <br /> Scaricando le foto dalla mia fotocamera digitale, spesso mi era necessario perdere un pò di tempo a dovere raddrizzarle una ad una..<br />
  1145. <br />
  1146. Su Windows le foto, al momento del download dalla mia fotocamera Canon, queste venivano direttamente ruotate, in automatico, dal software fornito in dotazione con la fotocamera, che ne leggeva le proprietà exif di orientamento.<br />
  1147. <br />
  1148. E su Linux?<br />
  1149. <br />
  1150. Semplice! Dopo avere scaricato tutte le foto, da shell portatevi nella cartella ove si trovano le foto e scrivete il comando:<br />
  1151. jhead -autorot *<br />
  1152. Il comando <strong>jhead</strong>, va scaricato da Synaptic.<br />
  1153. <br />
  1154. *      *      *      *      *      *<br />
  1155. <br />
  1156. Complichiamoci la vita adesso:<br />
  1157. <br />
  1158. Se volessimo fare in modo di ruotare tutte le foto in una cartella, comprese le foto contenute in eventuali sottocartelle, potremmo servirci del potentissimo comando "find". Ve lo presento in tre salse:<br />
  1159. <br />
  1160. <strong>Prima forma:</strong><br />
  1161. <br />
  1162. jhead -autorot $(find . -type f -iname '*.jpg')<br />
  1163. In sostanza, prima esegue il comando find su riga di comando e mette il suo output in pasto al comando jhead. Questo può dare qualche problema se la riga di comando è molto lunga.<br />
  1164. <br />
  1165. <strong>Seconda forma:</strong><br />
  1166. find . -type f -iname '*.jpg' -exec jhead -autorot {} ;<br />
  1167. In questa forma, viene eseguito UN comando jhead per OGNI file. Questo significa che se avete 100 file, verrà aperto 100 volte il comando jhead.<br />
  1168. -type f -iname '*.jpg' letteralmente vuol dire "ogni file (non directory nè simlink o altro), che finisce per  .jpg o .JPG o .JpG o .jPG (-iname, la "i" serve a renderlo case insensitive, cioè insensibile a minuscole-maiuscole).   <br />
  1169. <br />
  1170. <strong>Terza soluzione:</strong><br />
  1171. find . -type f -iname '*.jpg' | xargs -l 100 jhead -autorot<br />
  1172. La lista dei file trovati da find, per quanto lunga sia, viene letta in blocchi di 100 files, e fa partire UN jhead per 100 files alla volta.<br />
  1173. <br />
  1174. <strong>Quarta soluzione:</strong><br />
  1175. Ed ecco, infine, la soluzione che attualmente ritengo migliore ed attualmente è quella che uso:<br />
  1176. <br />
  1177. find . -type f -iname '*.jpg' -print0 | xargs -0 jhead -autorot<br />
  1178. <br />
  1179. Cosa vuol dire?<br />
  1180. -print0: i singoli file restituiti da find verranno passati ad xargs in modo che vengano correttamente interpretati nonostante vi siano spazi vuoti o apici in mezzo. <br />
  1181. <br />
  1182. Print0 separa i singoli file da un carattere speciale detto "NULL", in modo che xargs non faccia confusione tra spazi bianchi nei nomi dei file e la separazione dei file stessi.<br />
  1183. <br />
  1184. Se find trova troppi file si corre il rischio che la stringa sia troppo lunga ed ecceda il limite di caratteri ammesso nella riga di comando.<br />
  1185. Per questo motivo usiamo xargs che se la sbrigherà lui a fare in modo che questo non succeda. Inoltre, tramite il parametro -0, diciamo ad xargs che riconosca i singoli file perchè separati da un carattere "NULL". Per questo prima abbiamo usato -print0!<br />
  1186. <br />
  1187. <br />
  1188. <br />
  1189. <br />
  1190. ps: thanks a lot to  <a href="http://n-dimensional.de">ndim</a>  for helping me writing this post  <img src="http://etnablog.altervista.org/grafica_sito/4all/wink.gif" title="wink.gif" alt="wink.gif"/> ]]>
  1191. </description>
  1192. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  1193. <guid>http://etnablog.altervista.org/linux/ruotare-in-automatico-le-foto-scaricate-dalla-fotocamera-digitale/</guid>
  1194. </item>
  1195. <item>
  1196. <title>Imagemagick: come ottenere da una immagine .gif una thumbnail .png</title>
  1197. <link>http://etnablog.altervista.org/programmazione-c/imagemagick-come-ottenere-da-una-immagine-gif-una-thumbnail-png/</link>
  1198. <description> <![CDATA[<p><i>imagemagick e le sue API</i></p>
  1199. <br /> Ho preso lo script che segue da questo sito:  <a href="http://www.imagemagick.org/script/magick-wand.php">http://www.imagemagick.org/script/magick<br />
  1200. -wand.php</a> <br />
  1201. <br />
  1202. Anzitutto bisogna procurarsi gli strumenti (le librerie) che ci permetteranno di manipolare le immagini, quindi scaricate da Synaptic i seguenti e pacchetti:<br />
  1203. <br />
  1204. - imagemagick<br />
  1205. - libmagick9-dev<br />
  1206. <br />
  1207. A questo punto, con un qualsiasi programma di testo, creiamo un file di testo, lo chiamiamo <strong>wand.c</strong> e copiategli dentro questo script:<br />
  1208. <br />
  1209. <pre><code>
  1210. #include &lt;stdio.h&gt;
  1211. #include &lt;stdlib.h&gt;
  1212. #include &lt;wand/MagickWand.h&gt;
  1213.  
  1214. int main(int argc,char **argv)
  1215. {
  1216. #define ThrowWandException(wand)
  1217. {
  1218.  char
  1219.    *description;
  1220.  ExceptionType
  1221.    severity;
  1222.  description=MagickGetException(wand,&amp;severity);
  1223.  (void) fprintf(stderr,&quot;%s %s %ld %sn&quot;,GetMagickModule(),description);
  1224.  description=(char *) MagickRelinquishMemory(description);
  1225.  exit(-1);
  1226. }
  1227.  
  1228.  MagickBooleanType
  1229.    status;
  1230.  
  1231.  MagickWand
  1232.    *magick_wand;
  1233.  
  1234.  /*
  1235.    Read an image.
  1236.  */
  1237.  MagickWandGenesis();
  1238.  magick_wand=NewMagickWand();  
  1239.  status=MagickReadImage(magick_wand,&quot;image.gif&quot;);
  1240.  if (status == MagickFalse)
  1241.    ThrowWandException(magick_wand);
  1242.  /*
  1243.    Turn the images into a thumbnail sequence.
  1244.  */
  1245.  MagickResetIterator(magick_wand);
  1246.  while (MagickNextImage(magick_wand) != MagickFalse)
  1247.    MagickResizeImage(magick_wand,106,80,LanczosFilter,1.0);
  1248.  /*
  1249.    Write the image as PNG and destroy it.
  1250.  */
  1251.  status=MagickWriteImages(magick_wand,&quot;image.png&quot;,MagickTrue);
  1252.  if (status == MagickFalse)
  1253.    ThrowWandException(magick_wand);
  1254.  magick_wand=DestroyMagickWand(magick_wand);
  1255.  MagickWandTerminus();
  1256.  return(0);
  1257. }
  1258. </code></pre><br />
  1259. <br />
  1260. A questo punto, da internet, servendovi di google, scaricate una qualsiasi immagine gif, bella grande possibilmente, e chiamatela "image.gif" (tutto minuscolo).<br />
  1261. <br />
  1262. A questo punto compiliamo lo script usando questo comando:<br />
  1263. <br />
  1264. <pre><code>
  1265.  cc `Wand-config --cflags --cppflags` wand.c `Wand-config --ldflags --libs`
  1266. </code></pre><br />
  1267. <br />
  1268. Otterrete così un file eseguibile chiamato a.out, eseguitelo scrivendo:<br />
  1269. <br />
  1270. ./a.out <br />
  1271. <br />
  1272. <br />
  1273. otterete una piccola immagine .png , miniatura della vostra .gif. ]]>
  1274. </description>
  1275. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  1276. <guid>http://etnablog.altervista.org/programmazione-c/imagemagick-come-ottenere-da-una-immagine-gif-una-thumbnail-png/</guid>
  1277. </item>
  1278. <item>
  1279. <title>Nascondere il file .glade</title>
  1280. <link>http://etnablog.altervista.org/programmazione-c/nascondere-il-file-glade/</link>
  1281. <description> <![CDATA[ <br /> Se, per un motivo o per un altro, state cercando un modo per nascondere il file xml con estensione ".glade", ovvero cercate di nascondere l'interfaccia grafica e il suo sorgente, un modo è quello di inserire la vostra interfaccia grafica in un file di inclusione (.h), e poi richiamarla con un apposito comando.<br />
  1282. <br />
  1283. Esempio: file "ui.h":<br />
  1284. <br />
  1285. <pre><code>
  1286. char *uistr = &quot;&lt;?xml version=&quot;1.0&quot; standalone=&quot;no&quot;?&gt; &lt;!--*- mode: xml -*--&gt;&quot;
  1287. &quot;&lt;!DOCTYPE glade-interface SYSTEM &quot;http://glade.gnome.org/glade-2.0.dtd&quot;&gt;&quot;
  1288. &quot;&quot;
  1289. &quot;&lt;glade-interface&gt;&quot;
  1290. &quot;&quot;
  1291. &quot;&lt;widget class=&quot;GtkWindow&quot; id=&quot;window1&quot;&gt;&quot;
  1292. &quot; &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;&quot;
  1293. &quot;  &lt;property name=&quot;title&quot; translatable=&quot;yes&quot;&gt;window1&lt;/property&gt;&quot;
  1294. &quot;  &lt;property name=&quot;type&quot;&gt;GTK_WINDOW_TOPLEVEL&lt;/property&gt;&quot;
  1295. &quot;   &lt;property name=&quot;window_position&quot;&gt;GTK_WIN_POS_NONE&lt;/property&gt;&quot;
  1296. &quot;   &lt;property name=&quot;modal&quot;&gt;False&lt;/property&gt;&quot;
  1297. &quot;   &lt;property name=&quot;default_width&quot;&gt;500&lt;/property&gt;&quot;
  1298. &quot;   &lt;property name=&quot;default_height&quot;&gt;400&lt;/property&gt;&quot;
  1299. &quot;   &lt;property name=&quot;resizable&quot;&gt;True&lt;/property&gt;&quot;
  1300. &quot;   &lt;property name=&quot;destroy_with_parent&quot;&gt;False&lt;/property&gt;&quot;
  1301. &quot; &quot;
  1302. &quot;   &lt;child&gt;&quot;
  1303. &quot; &lt;placeholder/&gt;&quot;
  1304. &quot;   &lt;/child&gt;&quot;
  1305. &quot; &lt;/widget&gt;&quot;
  1306. &quot; &lt;/glade-interface&gt;&quot;
  1307. &quot; &quot;;
  1308. </code></pre><br />
  1309. <br />
  1310. Ed ecco il vostro "main.c":<br />
  1311. <br />
  1312. <br />
  1313. <pre><code>
  1314. /* Created by Anjuta version 1.2.4a */
  1315. /* This file will not be overwritten */
  1316.  
  1317. #ifdef HAVE_CONFIG_H
  1318. #  include &lt;config.h&gt;
  1319. #endif
  1320.  
  1321. #include &lt;gnome.h&gt;
  1322. #include &lt;glade/glade.h&gt;
  1323. #include &quot;ui.h&quot;
  1324.  
  1325. int main (int argc, char *argv[])
  1326. {
  1327. GtkWidget *window1;
  1328. GladeXML *xml;
  1329.  
  1330. #ifdef ENABLE_NLS
  1331. bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
  1332. textdomain (PACKAGE);
  1333. #endif
  1334.  
  1335. gnome_init (PACKAGE, VERSION, argc, argv);
  1336. glade_gnome_init ();
  1337. /*
  1338. * The .glade filename should be on the next line.
  1339. */
  1340. //xml = glade_xml_new (PACKAGE_SOURCE_DIR&quot;/ceiling_gui.glade&quot;, NULL, NULL);
  1341. xml = glade_xml_new_from_buffer(uistr,strlen(uistr),&quot;window1&quot;, NULL);
  1342.  
  1343. /* This is important */
  1344. glade_xml_signal_autoconnect (xml);
  1345. window1 = glade_xml_get_widget (xml, &quot;window1&quot;);
  1346. gtk_widget_show (window1);
  1347.  
  1348. gtk_main ();
  1349. return 0;
  1350. }
  1351.  
  1352. </code></pre><br />
  1353. <br />
  1354. L'intero progetto è scaricabile da qui:<br />
  1355. <br />
  1356. <a href="http://etnablog.altervista.org/misc/script-c/ceiling_gui.tar.gz">http://etnablog.altervista.org/misc/scri<br />
  1357. pt-c/ceiling_gui.tar.gz</a>  ]]>
  1358. </description>
  1359. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  1360. <guid>http://etnablog.altervista.org/programmazione-c/nascondere-il-file-glade/</guid>
  1361. </item>
  1362. <item>
  1363. <title>Le sezioni informatiche (semi)&quot;nascoste&quot; di Etnablog</title>
  1364. <link>http://etnablog.altervista.org/informatica/le-sezioni-informatiche-seminascoste-di-etnablog/</link>
  1365. <description> <![CDATA[ <br /> Come da numerose richieste arrivatemi via email, aggiungo questa sottosezione off-topic "<strong>informatica</strong>".<br />
  1366. <br />
  1367. Gli argomenti contenuti in questa sezione (e nelle sue sottosezioni) non sono visibili nella pagina principale del sito dato che in fin dei conti sono pur sempre dei fuoritema, su quello che invece è il tema cardine del sito, cioè la promozione del rispetto verso ciò che è naturale, sano, e degno di tutela in Sicila.<br />
  1368. <br />
  1369. Le pagine delle sottosezioni nascoste sono comunque visibili ai motori di ricerca e sono sempre presenti nel  feed RSS del sito.<br />
  1370. <br />
  1371. All'interno di questa sezione "informatica" ho aperto altre due sottosezioni:<br />
  1372. - "<strong>Linux</strong>": si tratta dei miei appunti personali in Linux. A quanto sembra la mia guida è stata utile per molti (sono veramente contento di questo  <img src="http://etnablog.altervista.org/grafica_sito/4all/smile.gif" title="smile.gif" alt="smile.gif"/>), quindi ho deciso di raggruppare il tutto in una sezione dedicata.<br />
  1373. <br />
  1374. - "<strong>Programmazione C</strong>": questa sezione è utile a chi vorrebbe cominciare a programmare interfacce grafiche in C, usando le GTK, glade e il programma Anjuta. Gli argomenti presuppongono un minimo di conoscenza di base di C, o quantomeno sperano di stimolare l'interesse all'approfondimento. ]]>
  1375. </description>
  1376. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  1377. <guid>http://etnablog.altervista.org/informatica/le-sezioni-informatiche-seminascoste-di-etnablog/</guid>
  1378. </item>
  1379. <item>
  1380. <title>Programmazione C: La concatenazione di stringhe</title>
  1381. <link>http://etnablog.altervista.org/programmazione-c/programmazione-c-la-concatenazione-di-stringhe/</link>
  1382. <description> <![CDATA[ <br /> Una cosa apparentemente banale come concatenare stringhe, può non essere semplicissima in linguaggio C.<br />
  1383. <br />
  1384. Un esempio di come NON si dovrebbe fare, è questo:<br />
  1385. <br />
  1386. <pre><code>
  1387. char frase[200] = &quot;parola1 &quot;;
  1388. strcat(strcat(frase, &quot;parola2&quot;),&quot; parola3&quot;);
  1389. g_print (&quot;La frase è :  %s\n&quot;,  frase);
  1390. </code></pre><br />
  1391. <br />
  1392. Un ottimo metodo è questo, è nelle gtk:<br />
  1393. <br />
  1394. <pre><code>
  1395. #include &lt;gtk/gtk.h&gt;
  1396.  
  1397. [...]
  1398.  
  1399.  
  1400. //g_strconcat: serve ad unire piu stringhe. Ricordarsi il NULL alla fine!
  1401. gchar *stringa = g_strconcat(&quot;parola1&quot;, &quot; parola2&quot;,&quot; parola3&quot;, NULL);
  1402. </code></pre><br />
  1403. <br />
  1404. Un altro ottimo sistema è questo (sorgente completo):<br />
  1405. <br />
  1406. <pre><code>
  1407. #include &lt;stdio.h&gt;
  1408. #include &lt;stdlib.h&gt;
  1409. #include &lt;stdarg.h&gt;
  1410. #include &lt;string.h&gt;
  1411.  
  1412. char *SuperStringsCat (char *String1, ...)
  1413. {
  1414. va_list List;
  1415. va_start (List, String1);
  1416. unsigned int Size;
  1417. Size = strlen (String1) + 1;
  1418. char *s;
  1419. s = String1;
  1420. do
  1421. {
  1422. Size += strlen (s) + 1;
  1423. }while ((s = va_arg (List, char*)) != NULL);
  1424. char *Merge;
  1425. Merge = (char*)malloc (sizeof (char) * Size);
  1426. char *sMerge = Merge;
  1427.  
  1428. va_end (List);
  1429. va_start (List, String1);
  1430.  
  1431. s = String1;
  1432. do
  1433. {
  1434. strcpy (Merge, s);
  1435. Merge += strlen (s);
  1436. }while ((s = va_arg (List, char*)) != NULL);
  1437. va_end (List);
  1438. return sMerge;
  1439.  
  1440. }
  1441.  
  1442. int main (int argc, char *argv[])
  1443. {
  1444. char *p;
  1445. p = SuperStringsCat (&quot;prova&quot;, &quot; 1,&quot;, &quot; 2,&quot;, &quot; 3&quot;, &quot;...&quot;, NULL);
  1446. printf (&quot;%s\n&quot;, p);
  1447. return 0;
  1448. }
  1449. </code></pre><br />
  1450. <br />
  1451. N.B. : Per l'ultimo metodo ringrazio l'utente "uno" del forum di Ubuntu. ]]>
  1452. </description>
  1453. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  1454. <guid>http://etnablog.altervista.org/programmazione-c/programmazione-c-la-concatenazione-di-stringhe/</guid>
  1455. </item>
  1456. <item>
  1457. <title>Glade 3 e Anjuta: Sviluppo (guida glade3-gtk quarta parte)</title>
  1458. <link>http://etnablog.altervista.org/programmazione-c/glade-3-e-anjuta-sviluppo-guida-glade3-gtk-quarta-parte/</link>
  1459. <description> <![CDATA[ <br /> Ho deciso di raggruppare tutti gli script elementari fatti fino ad ora in un unico e più consultabile archivio. L'archivio è questo:<br />
  1460. <br />
  1461. <a href="http://etnablog.altervista.org/misc/script-c/programmi_c.tar.gz">http://etnablog.altervista.org/misc/scri<br />
  1462. pt-c/programmi_c.tar.gz</a> <br />
  1463. <br />
  1464. <br />
  1465. Non mi dilungherò a darvi spiegazioni particolari su come agiscono gli script dato che sono abbastanza commentati. <br />
  1466. Vi sono cinque script, ve li accenno:<br />
  1467. <br />
  1468. <h2>prova1</h2><br />
  1469. Prova1, è semplicemente un bottone che premuto chiude la sua finestra.<br />
  1470. <br />
  1471. <pre><code>
  1472. /* Created by Anjuta version 1.2.4a */
  1473. /* This file will not be overwritten */
  1474.  
  1475. #ifdef HAVE_CONFIG_H
  1476. #  include &lt;config.h&gt;
  1477. #endif
  1478.  
  1479. #include &lt;gnome.h&gt;
  1480. #include &lt;glade/glade.h&gt;
  1481.  
  1482. void
  1483. ok_button_clicked (GtkWidget *widget, gpointer user_data)
  1484. {
  1485.  printf (&quot;Thanks for trying out my program.n&quot;);
  1486.  gtk_main_quit ();
  1487. }
  1488.  
  1489.  
  1490. int
  1491. main (int argc, char *argv[])
  1492. {
  1493.  GladeXML  *main_window;
  1494.  GtkWidget *widget;
  1495.  
  1496.  gtk_init (&amp;argc, &amp;argv);
  1497.  
  1498.  /* Carica l'interfaccia utente */
  1499.  main_window = glade_xml_new (&quot;example-1.glade&quot;, NULL, NULL);
  1500.  
  1501. /* Predispone la gestione del bottone chiamato &quot;OKButton&quot; */
  1502.  widget = glade_xml_get_widget (main_window, &quot;OKButton&quot;);
  1503.  g_signal_connect (G_OBJECT (widget), &quot;clicked&quot;,
  1504.                    G_CALLBACK (ok_button_clicked),
  1505.                    NULL);
  1506.  /* Chiusura del programma quando l'utente chiude la finestra */
  1507.  widget = glade_xml_get_widget (main_window, &quot;MainWindow&quot;);
  1508.  g_signal_connect (G_OBJECT (widget), &quot;delete_event&quot;,
  1509.                    G_CALLBACK (gtk_main_quit), NULL);
  1510.  
  1511.  /* Avvia il ciclo */
  1512.  gtk_main ();
  1513.  
  1514.  return 0;
  1515. }
  1516. </code></pre><br />
  1517. <br />
  1518. <h2>prova2</h2><br />
  1519. Prova2: lo script mostra alcune interazioni tra una finestra realizzata con glade e la shell, quindi va eseguito da shell. Questo script mostra:<br />
  1520. - come usare strcmp (comparazione di stringhe)<br />
  1521. - come inserire testo in grassetto con glade<br />
  1522. - come usare i cicli if-else, <br />
  1523. - come gestire un campo dove l'utente inserisce il testo, leggerne il contenuto e stamparlo su shell<br />
  1524. - come leggere il contenuto di una label e cambiarlo<br />
  1525. Attenzione però: in questo script la gestione delle callback avviene usando l'autoconnect cioè mediante glade_xml_signal_autoconnect (xml);<br />
  1526. <br />
  1527. <pre><code>
  1528. /* Created by Anjuta version 1.2.4a */
  1529. /* This file will not be overwritten */
  1530.  
  1531. #ifdef HAVE_CONFIG_H
  1532. #  include &lt;config.h&gt;
  1533. #endif
  1534.  
  1535. #include &lt;gnome.h&gt;
  1536. #include &lt;gtk/gtk.h&gt;
  1537. #include &lt;glade/glade.h&gt;
  1538.  
  1539. on_button1_clicked (GtkWidget *widget, gpointer user_data)
  1540. {
  1541.  printf (&quot;Bau n&quot;);
  1542. }
  1543.  
  1544. on_button2_clicked (GtkWidget *widget, gpointer user_data)
  1545. {
  1546.  printf (&quot;Arrivederci n&quot;);
  1547.  gtk_main_quit ();
  1548. }
  1549.  
  1550. on_button3_clicked (GtkWidget *widget, gpointer user_data)
  1551. {
  1552.  printf (&quot;Hai premuto button3 nn&quot;);
  1553.  
  1554.  gchar stringa2[80]=&quot;&lt;span size=&quot;x-large&quot;&gt;Ciao&lt;/span&gt;&quot;;
  1555.  GladeXML *self = glade_get_widget_tree(GTK_WIDGET(widget));
  1556.  GtkWidget *label = glade_xml_get_widget (self, &quot;label2&quot;);
  1557.  
  1558.  gchar *stringa1 = gtk_label_get_label(label);
  1559.  
  1560.  //gchar *stringa1 = gtk_label_get_text (label);
  1561.  //serve a prendere solo il testo, senza tag di stile
  1562.  //invece gtk_label_get_label prende anche i tag di stile (se ci sono)
  1563.  
  1564.  printf (&quot;Il contenuto di &quot;label1&quot; è &quot;%s&quot;n&quot;, stringa1);
  1565.  printf (&quot;stringa1: %s ; stringa2: %sn&quot;, stringa1, stringa2);
  1566.  
  1567.  /*
  1568.  In C per comparare due stringhe fare: if (strcmp (string1, string2) == 0)
  1569.  o if (g_str_equal (string1, string2))
  1570.  o if (g_utf8_collate (string1, string2) == 0)
  1571.  */
  1572.  if (strcmp (stringa1, stringa2) == 0) {
  1573.  gtk_label_set_markup (GTK_LABEL(label), &quot;&lt;span size=&quot;x-large&quot;&gt;è uguale a output&lt;/span&gt;&quot;);
  1574.  //gtk_label_set_text(GTK_LABEL(label),&quot;è uguale a output&quot;);
  1575.  }
  1576.  else {
  1577.  gchar *saluto = &quot;Ciao&quot;;
  1578.  //g_strconcat: serve ad unire piu stringhe. Ricordarsi il NULL alla fine!
  1579.  gchar *stringa3 = g_strconcat(&quot;&lt;span size=&quot;x-large&quot;&gt;&quot;,saluto,&quot;&lt;/span&gt;&quot;, NULL);
  1580.  gtk_label_set_markup (GTK_LABEL(label), stringa3);
  1581.  //invece avrei usato:
  1582.  //gtk_label_set_text(GTK_LABEL(label),stringa2);
  1583.  //Se non avevo tag di stile &lt;span&gt;
  1584.  }
  1585. }
  1586.  
  1587. void on_entry1_activate (GtkWidget *widget, gpointer user_data)
  1588. {
  1589.   printf (&quot;Hai scritto il tuo nome.n&quot;);
  1590.  
  1591.   gchar output[80]=&quot;Ciao &quot;;
  1592.   strcat(output,gtk_entry_get_text(GTK_ENTRY(widget)));
  1593.  
  1594.   printf (&quot;%s n&quot;,output);
  1595. }
  1596.  
  1597. int main (int argc, char *argv[])
  1598. {
  1599. GtkWidget *window1;
  1600. GladeXML *xml;
  1601.  
  1602. #ifdef ENABLE_NLS
  1603. bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
  1604. textdomain (PACKAGE);
  1605. #endif
  1606.  
  1607. gnome_init (PACKAGE, VERSION, argc, argv);
  1608. glade_gnome_init ();
  1609. /*
  1610. * The .glade filename should be on the next line.
  1611. */
  1612. xml = glade_xml_new (&quot;provalibglade.glade&quot;, NULL, NULL);
  1613.  
  1614. /* This is important */
  1615. glade_xml_signal_autoconnect (xml);
  1616. window1 = glade_xml_get_widget (xml, &quot;window1&quot;);
  1617. gtk_widget_show (window1);
  1618.  
  1619. gtk_main ();
  1620. return 0;
  1621. }
  1622. </code></pre><br />
  1623. <br />
  1624. <h2>prova3</h2><br />
  1625. Prova3: questo script vi mostra come:<br />
  1626. - Creare con glade una finestra "notebook"<br />
  1627. - Come usare una textview con scroller verticale<br />
  1628. - come inserire immagini nelle finestre di glade e scrollarle<br />
  1629. - Come cambiare il puntatore del mouse al passaggio sopra un widget<br />
  1630. <br />
  1631. <pre><code>
  1632. /* Created by Anjuta version 1.2.4a */
  1633. /* This file will not be overwritten */
  1634.  
  1635. #ifdef HAVE_CONFIG_H
  1636. #  include &lt;config.h&gt;
  1637. #endif
  1638.  
  1639. #include &lt;gnome.h&gt;
  1640. #include &lt;gtk/gtk.h&gt;
  1641. #include &lt;glade/glade.h&gt;
  1642.  
  1643. on_button1_clicked (GtkWidget *widget, gpointer user_data)
  1644. {
  1645.  printf (&quot;Bau n&quot;);
  1646. }
  1647.  
  1648. on_button2_clicked (GtkWidget *widget, gpointer user_data)
  1649. {
  1650.  printf (&quot;Arrivederci n&quot;);
  1651.  gtk_main_quit ();
  1652. }
  1653.  
  1654. on_button3_clicked (GtkWidget *widget, gpointer user_data)
  1655. {
  1656.  printf (&quot;Hai premuto button3 nn&quot;);
  1657.  
  1658.  gchar stringa2[80]=&quot;&lt;span size=&quot;x-large&quot;&gt;Ciao&lt;/span&gt;&quot;;
  1659.  GladeXML *self = glade_get_widget_tree(GTK_WIDGET(widget));
  1660.  GtkWidget *label = glade_xml_get_widget (self, &quot;label2&quot;);
  1661.  
  1662.  gchar *stringa1 = gtk_label_get_label(label);
  1663.  
  1664.  //gchar *stringa1 = gtk_label_get_text (label);
  1665.  //serve a prendere solo il testo, senza tag di stile
  1666.  //invece gtk_label_get_label prende anche i tag di stile (se ci sono)
  1667.  
  1668.  printf (&quot;Il contenuto di &quot;label1&quot; è &quot;%s&quot;n&quot;, stringa1);
  1669.  printf (&quot;stringa1: %s ; stringa2: %sn&quot;, stringa1, stringa2);
  1670.  
  1671.  /*
  1672.  In C per comparare due stringhe fare: if (strcmp (string1, string2) == 0)
  1673.  o if (g_str_equal (string1, string2))
  1674.  o if (g_utf8_collate (string1, string2) == 0)
  1675.  */
  1676.  if (strcmp (stringa1, stringa2) == 0) {
  1677.  gtk_label_set_markup (GTK_LABEL(label), &quot;&lt;span size=&quot;x-large&quot;&gt;è uguale a output&lt;/span&gt;&quot;);
  1678.  //gtk_label_set_text(GTK_LABEL(label),&quot;è uguale a output&quot;);
  1679.  }
  1680.  else {
  1681.  gchar *saluto = &quot;Ciao&quot;;
  1682.  //g_strconcat: serve ad unire piu stringhe. Ricordarsi il NULL alla fine!
  1683.  gchar *stringa3 = g_strconcat(&quot;&lt;span size=&quot;x-large&quot;&gt;&quot;,saluto,&quot;&lt;/span&gt;&quot;, NULL);
  1684.  gtk_label_set_markup (GTK_LABEL(label), stringa3);
  1685.  //invece avrei usato:
  1686.  //gtk_label_set_text(GTK_LABEL(label),stringa2);
  1687.  //Se non avevo tag di stile &lt;span&gt;
  1688.  }
  1689. }
  1690.  
  1691. void on_entry1_activate (GtkWidget *widget, gpointer user_data)
  1692. {
  1693.   printf (&quot;Hai scritto il tuo nome.n&quot;);
  1694.  
  1695.   gchar output[80]=&quot;Ciao &quot;;
  1696.   strcat(output,gtk_entry_get_text(GTK_ENTRY(widget)));
  1697.  
  1698.   printf (&quot;%s n&quot;,output);
  1699. }
  1700.  
  1701. int main (int argc, char *argv[])
  1702. {
  1703. GtkWidget *window1;
  1704. GladeXML *xml;
  1705.  
  1706. #ifdef ENABLE_NLS
  1707. bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
  1708. textdomain (PACKAGE);
  1709. #endif
  1710.  
  1711. gnome_init (PACKAGE, VERSION, argc, argv);
  1712. glade_gnome_init ();
  1713. /*
  1714. * The .glade filename should be on the next line.
  1715. */
  1716. xml = glade_xml_new (&quot;provalibglade.glade&quot;, NULL, NULL);
  1717.  
  1718. /* This is important */
  1719. glade_xml_signal_autoconnect (xml);
  1720. window1 = glade_xml_get_widget (xml, &quot;window1&quot;);
  1721. gtk_widget_show (window1);
  1722.  
  1723. gtk_main ();
  1724. return 0;
  1725. }
  1726. </code></pre><br />
  1727. <br />
  1728. <h2>prova4</h2><br />
  1729. Prova4: mostra come fare ad aprire altre finestre, e a convertire un intero in una stringa.<br />
  1730. Questo sarà probabilmente l'ultimo script che realizzerò usando la funzionalità di autoconnect di glade. D'ora in poi cercherò sempre di usare Glade per la parte grafica soltanto, mentre per tutto il resto cercherò di scrivere il codice delle callback manualmente... Lo preferisco.<br />
  1731. <br />
  1732. <pre><code>
  1733. /* Created by Anjuta version 1.2.4a */
  1734. /* This file will not be overwritten */
  1735.  
  1736. #ifdef HAVE_CONFIG_H
  1737. #  include &lt;config.h&gt;
  1738. #endif
  1739.  
  1740. #include &lt;gnome.h&gt;
  1741. #include &lt;glade/glade.h&gt;
  1742.  
  1743. void on_risultato1_clicked (GtkWidget *widget, gpointer user_data) {
  1744.   GladeXML *self = glade_get_widget_tree(GTK_WIDGET(widget));
  1745.   GtkWidget *label = glade_xml_get_widget (self, &quot;label3&quot;);
  1746.  
  1747.   char buffer[50];
  1748.   int a=2, b=2;
  1749.   g_snprintf(buffer, 49, &quot;%d&quot;, a+b);
  1750.   //g_snprintf converte l'intero in stringa. E' piu sicuro di usare sprintf.
  1751.  
  1752.   gtk_label_set_text(GTK_LABEL(label),buffer);
  1753. }
  1754.  
  1755. void on_risultato2_clicked (GtkWidget *widget, gpointer user_data) {
  1756.   GladeXML *self = glade_get_widget_tree(GTK_WIDGET(widget));
  1757.   GtkWidget *label = glade_xml_get_widget (self, &quot;label3&quot;);
  1758.  
  1759.   char buffer[50];
  1760.   int a=4, b=8;
  1761.   g_snprintf(buffer, 49, &quot;%d&quot;, a*b);
  1762.   gtk_label_set_text(GTK_LABEL(label),buffer);
  1763. }
  1764.  
  1765. void on_risultato3_clicked (GtkWidget *widget, gpointer user_data) {
  1766.   GladeXML *self = glade_get_widget_tree(GTK_WIDGET(widget));
  1767.   GtkWidget *label = glade_xml_get_widget (self, &quot;label3&quot;);
  1768.  
  1769.   char buffer[50];
  1770.   int a=12, b=4;
  1771.   g_snprintf(buffer, 49, &quot;%d&quot;, a/b);
  1772.   gtk_label_set_text(GTK_LABEL(label),buffer);
  1773. }
  1774.  
  1775. void on_info_button_clicked (GtkWidget *widget, gpointer user_data) {
  1776.  GtkWidget *window2;
  1777.  GladeXML *xml;  
  1778.  xml = glade_xml_new (&quot;provaglade4.glade&quot;, NULL, NULL);
  1779.  glade_xml_signal_autoconnect (xml);
  1780.  window2 = glade_xml_get_widget (xml, &quot;window2&quot;);
  1781.  gtk_widget_show (window2);
  1782. }
  1783.  
  1784. void on_exit_button_clicked (GtkWidget *widget, gpointer user_data) {
  1785.  printf (&quot;Arrivederci!n&quot;);
  1786.  gtk_main_quit ();
  1787. }
  1788.  
  1789. int main (int argc, char *argv[])
  1790. {
  1791. GtkWidget *window1, *widget;
  1792. GladeXML *xml;
  1793.  
  1794. #ifdef ENABLE_NLS
  1795. bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
  1796. textdomain (PACKAGE);
  1797. #endif
  1798.  
  1799. gnome_init (PACKAGE, VERSION, argc, argv);
  1800. glade_gnome_init ();
  1801. /*
  1802. * The .glade filename should be on the next line.
  1803. */
  1804. xml = glade_xml_new (&quot;provaglade4.glade&quot;, NULL, NULL);
  1805.    // Questo servirebbe a fare in modo di modificare tutti i caratteri
  1806.    //della finestra (escludendo la scelta di default fatta dall'utente
  1807. //nelle impostazioni di GNOME. In realtà è preferibile che sia l'utente
  1808. //a scegliere il carattere che preferisce.
  1809. //g_object_set(gtk_settings_get_default(), &quot;gtk-font-name&quot;, &quot;Sans 20&quot;, NULL);
  1810.  
  1811. //gtk_label_set_use_markup(label, TRUE); gtk_label_set_markup(label, &quot;&lt;b&gt;Your label&lt;/b&gt;&quot;);
  1812. /* This is important */
  1813. glade_xml_signal_autoconnect (xml);
  1814. window1 = glade_xml_get_widget (xml, &quot;window1&quot;);
  1815. gtk_widget_show (window1);
  1816. /* Chiusura del programma quando l'utente chiude la finestra */
  1817.    widget = glade_xml_get_widget (xml, &quot;window1&quot;);
  1818.    g_signal_connect (G_OBJECT (widget), &quot;delete_event&quot;,
  1819.                    G_CALLBACK (gtk_main_quit), NULL);
  1820.  
  1821. gtk_main ();
  1822. return 0;
  1823. }
  1824. </code></pre><br />
  1825. <br />
  1826. <h2>prova5</h2><br />
  1827. Prova5:<br />
  1828. - NON usa autoconnect<br />
  1829. - Mostra come cambiare il testo in una GtkLabel (<strong>senza usare autoconnect</strong>).<br />
  1830. - Mostra come prendere un file mediante il gtk_file_chooser_dialog.<br />
  1831. <br />
  1832. <pre><code>
  1833. #ifdef HAVE_CONFIG_H
  1834. #include &lt;config.h&gt;
  1835. #endif
  1836.  
  1837. #include &lt;gnome.h&gt;
  1838. #include &lt;glade/glade.h&gt;
  1839.  
  1840. void
  1841. on_button1_clicked (GtkButton *button, gpointer user_data)
  1842. {
  1843. GtkWidget *window1;
  1844. window1 = gtk_widget_get_toplevel(button);
  1845. char *filename;
  1846. GtkWidget *dialog;
  1847.  
  1848.   dialog = gtk_file_chooser_dialog_new (&quot;Open File&quot;,
  1849.      window1,
  1850.      GTK_FILE_CHOOSER_ACTION_OPEN,
  1851.      GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
  1852.      GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
  1853.      NULL);
  1854.  
  1855.   if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
  1856.     {
  1857.       //char *filename;
  1858.  
  1859.       filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
  1860.       //open_file (filename);
  1861.       // g_free (filename);
  1862.     }
  1863.   else filename = &quot;&quot;;
  1864.   gtk_widget_destroy (dialog);
  1865. /*  Ho preferito ricercare la GtkLabel a partire da window1, per esigenze di esperimento,
  1866. *   ma avrei potuto direttamente scrivere:
  1867. *   GladeXML *self = glade_get_widget_tree(GTK_WIDGET(button));
  1868.    */
  1869.    GladeXML *self = glade_get_widget_tree(GTK_WIDGET(window1));
  1870. GtkWidget *label = glade_xml_get_widget (self, &quot;etichetta&quot;);
  1871. gtk_label_set_markup (GTK_LABEL(label), filename);
  1872.    return 0;  
  1873. }
  1874.  
  1875. int main (int argc, char *argv[])
  1876. {
  1877. GtkWidget *window1, *button1;
  1878. GladeXML *xml;
  1879.    // PACKAGE è definito in config.h
  1880. gnome_init (PACKAGE, VERSION, argc, argv);
  1881. glade_gnome_init ();
  1882. xml = glade_xml_new (&quot;scelta_file.glade&quot;, NULL, NULL);
  1883.  
  1884. /* Ho ESCLUSO l'autoconnect, faccio le callback manualmente */
  1885. // glade_xml_signal_autoconnect (xml);
  1886. window1 = glade_xml_get_widget (xml, &quot;window1&quot;);
  1887.  
  1888. button1 = glade_xml_get_widget (xml, &quot;button1&quot;);
  1889.  
  1890. g_signal_connect (G_OBJECT (button1), &quot;clicked&quot;,
  1891.                    G_CALLBACK (on_button1_clicked),
  1892.                    NULL);
  1893.  
  1894.  g_signal_connect (G_OBJECT (window1), &quot;delete_event&quot;,
  1895.                    G_CALLBACK (gtk_main_quit), NULL);
  1896. gtk_widget_show (window1);
  1897.  
  1898. gtk_main ();
  1899. return 0;
  1900. }
  1901. </code></pre><br />
  1902. <img src="http://etnablog.altervista.org/grafica_sito/4all/attention.gif" title="attention.gif" alt="attention.gif"/> Piccola chicca che ancora devo provare: se volete che la vostra interfaccia vi permetta di selezionare directory e NON files, sostituite GTK_FILE_CHOOSER_ACTION_OPEN con GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ]]>
  1903. </description>
  1904. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  1905. <guid>http://etnablog.altervista.org/programmazione-c/glade-3-e-anjuta-sviluppo-guida-glade3-gtk-quarta-parte/</guid>
  1906. </item>
  1907. <item>
  1908. <title>Glade 3 e Anjuta: Il codice di base</title>
  1909. <link>http://etnablog.altervista.org/programmazione-c/glade-3-e-anjuta-il-codice-di-base/</link>
  1910. <description> <![CDATA[<p><i>Guida Glade e Anjuta (terza parte)</i></p>
  1911. <br /> Qualche giorno fa abbiamo sviluppato un semplice progettino che rappresentava semplicemente un bottone che chiudeva il programma.<br />
  1912. <br />
  1913. Oggi dobbiamo parlare un pò di codice. Chi non ha mai programmato mi seguirà a stento ma cercherò di descrivere le cose nel modo più semplice possibile, giusto per fornire un input che dovrebbe avviare verso uno studio un attimino più approfondito facendo uso di guide più strettamente dedicate al codice C.<br />
  1914. <br />
  1915. In rete ve ne sono tante di guide, come anche nei negozi.<br />
  1916. <br />
  1917. Ecco il codice di main.c del progetto realizzato:<br />
  1918. <pre><code>
  1919. /* Created by Anjuta version 1.2.4a */
  1920. /* This file will not be overwritten */
  1921.  
  1922. #ifdef HAVE_CONFIG_H
  1923. #  include &lt;config.h&gt;
  1924. #endif
  1925.  
  1926. #include &lt;gnome.h&gt;
  1927. #include &lt;glade/glade.h&gt;
  1928.  
  1929. void ok_button_clicked (GtkWidget *widget, gpointer user_data)
  1930. {
  1931.  printf (&quot;Grazie per aver provato il programma :)&quot;);
  1932.  gtk_main_quit ();
  1933. }
  1934.  
  1935.  
  1936. int
  1937. main (int argc, char *argv[])
  1938. {
  1939.  GladeXML  *main_window;
  1940.  GtkWidget *widget;
  1941.  
  1942.  gtk_init (&amp;argc, &amp;argv);
  1943.  
  1944.  /* Carica l'interfaccia utente */
  1945.  main_window = glade_xml_new (PACKAGE_SOURCE_DIR&quot;/progetto_bottone.glade&quot;, NULL, NULL);
  1946.  
  1947. /* Predispone la gestione del bottone chiamato &quot;okbutton&quot; */
  1948.  widget = glade_xml_get_widget (main_window, &quot;okbutton&quot;);
  1949.  g_signal_connect (G_OBJECT (widget), &quot;clicked&quot;,
  1950.                    G_CALLBACK (ok_button_clicked),
  1951.                    NULL);
  1952.  /* Chiusura del programma quando l'utente chiude la finestra */
  1953.  widget = glade_xml_get_widget (main_window, &quot;window1&quot;);
  1954.  g_signal_connect (G_OBJECT (widget), &quot;delete_event&quot;,
  1955.                    G_CALLBACK (gtk_main_quit), NULL);
  1956.  
  1957.  /* Avvia il ciclo */
  1958.  gtk_main ();
  1959.  
  1960.  return 0;
  1961. }
  1962. </code></pre><br />
  1963. Vediamo di capire cosa significa quel codice.<br />
  1964. <br />
  1965. Tanto per cominciare il testo contenuto fra /* e */ è considerato un commento, è messo lì per essere letto da voi e non dalla macchina (che non lo compila).<br />
  1966. <br />
  1967. Il commento è seguito poi da tre comandi preceduti dal segno "#" (detto "sharp").<br />
  1968. <br />
  1969. I comandi preceduti da quel segno sono particolari, sono "direttive del preprocessore".<br />
  1970. <br />
  1971. Letteralmente quei tre comandi stanno a significare:<br />
  1972. "Se HAVE_CONFIG_H  Ã¨ stato definito, allora includi config.h nella compilazione.<br />
  1973. <br />
  1974. Successivamente (osservate il codice) sono stati inclusi nella compilazione "gnome.h" (che contiene le librerie gtk) e le librerie glade.h (per disporre dei comandi che gestiscono il file .xml prodotto da glade).<br />
  1975. <br />
  1976. void ok_button_clicked invece è una funzione, che come potete vedere si chiama con lo stesso "ok_button_clicked" che avevate indicato in glade tra le proprietà del bottone.<br />
  1977. <br />
  1978. Saltiamo per ora questa funzione, e andiamo al cuore del programma, cioè che è contenuto in  "int main ()".<br />
  1979. <br />
  1980. GladeXML  *main_window; --> In sostanza i file .glade vengono letti dinamicamente mediante la classe "GladeXML". In sostanza quel comando è il primo passo da fare.<br />
  1981. <br />
  1982. GtkWidget *widget; --> Parlando di programmazione, un "widget" è un elemento di una interfaccia, che permette all'utente di interagirvi. Le Finestre, i bottoni, ogni cosa che avete aggiunto "all'albero" della vostra GUI creata con Glade, è un "widget". Noi possiamo avere accesso ad ogni widget usando "GtkWidget". Nel caso specifico accederemo ad un widget, che, per nostra comodità, chiameremo appunto "*widget".<br />
  1983. <br />
  1984. L'asterisco di fronte a *widget non è messo a caso, è infatti un "puntatore", e i puntatori sono preceduti da  un asterisco.<br />
  1985. <br />
  1986. gtk_init --> Passo fondamentale, si occupa di inizializzare l'ambiente ed esaminare gli argomenti della linea di comando (&argc, &argv);<br />
  1987. <br />
  1988. Le righe successive sono dedicate alla gestione del bottone che avevamo creato e chiamato "ok_button". E' la gestione del tasto.<br />
  1989. <br />
  1990. Le righe ancora successive servono a chiudere definitivamente il programma quando l'utente clicca sul bottone di chiusura della finestra ("delete_event").<br />
  1991. <br />
  1992. Queste ultime due operazioni sono dette "callback", cioè richiamano delle funzioni. Se specifichiamo i "segnali" in glade, possiamo omettere queste "callback" manuali e mettere al loro posto un solo comando: glade_xml_signal_autoconnect (xml);<br />
  1993. <br />
  1994. infine abbiamo gtk_main che serve ad avviare il "ciclo" e infine "return 0".<br />
  1995. <br />
  1996. Da ora in poi viene il difficile: cercate con google il sito delle GTK e prendete la "reference" (guida di riferimento) dove sono spiegate le sintassi per la gestione della grande quantità di segnali che potete applicare ai widget.<br />
  1997. <br />
  1998. Per oggi finiamo qui. Scaricate dal sito gnome (gtk in particolare) l' ultima guida aggiornata sulle GTK e ristudiate da lì le sintassi dei comandi che abbiamo usato.<br />
  1999. <br />
  2000. Qualche link:<br />
  2001. <a href="http://www.gtk.org/">http://www.gtk.org/</a> <br />
  2002. <a href="http://www.gtk.org/tutorial/">http://www.gtk.org/tutorial/</a>  ]]>
  2003. </description>
  2004. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  2005. <guid>http://etnablog.altervista.org/programmazione-c/glade-3-e-anjuta-il-codice-di-base/</guid>
  2006. </item>
  2007. <item>
  2008. <title>Glade 3 e Anjuta: creazione di un bottone</title>
  2009. <link>http://etnablog.altervista.org/programmazione-c/glade-3-e-anjuta-creazione-di-un-bottone/</link>
  2010. <description> <![CDATA[<p><i>Guida Glade (seconda parte)</i></p>
  2011. <br /> Nella puntata precedente di questa guida, avevamo visto semplicemente come si crea una semplice finestra con un pò di testo dentro, ed avevamo visto come rappresentarla e come compilare il tutto.<br />
  2012. <br />
  2013. C è infatti un linguaggio che và compilato, cioè il codice scritto dal programmatore, in un linguaggio a lui comprensibile, va tradotto in un formato comprensibile alla macchina.<br />
  2014. <br />
  2015. Una volta tradotto ("compilato") si ottiene un file detto "eseguibile" che da noi non è più modificabile.<br />
  2016. <br />
  2017. Il linguaggio "Python" non è "compilato" ma "interpretato", detto in parole povere, non avete bisogno, con Python, di compilare il vostro script per eseguirlo.<br />
  2018. <br />
  2019. Nel tutorial di oggi, cercherò di essere più rapido rispetto l'altra volta, nel senso che non mi dilungherò a spiegare dettagli già trattati nella scorsa puntata della guida... Però aggi imparerete a fare mooolte cose :)<br />
  2020. <br />
  2021. Senza indugio, quindi aprite Anjuta e create un nuovo progetto "LibGlade 2.0" servendovi del Wizard, e chiamate questo progetto "progetto_bottone".<br />
  2022. <br />
  2023. Quindi aprite Glade: manipoliamo il file "progetto_bottone.glade" creato da Anjuta.<br />
  2024. <br />
  2025. Dividete la finestra (ancora grigia e vuota) in due celle orizzontali (strumento vbox o "casella verticale" <img src="http://etnablog.altervista.org/grafica_sito/varie/casella_verticale.png" alt="casella verticale"/>).<br />
  2026. <br />
  2027. Nelle proprietà del vbox settate "spaziatura" a 12, otterrete questo:<br />
  2028. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez-2-1.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez-2-1.png" title="lez-2-1.png" alt="lez-2-1.png" width="100"/></a><br />
  2029. Avete quindi adesso una finestra divisa in due celle, una in alto ed una in basso.<br />
  2030. <br />
  2031. <img src="http://etnablog.altervista.org/grafica_sito/4all/attention.gif" title="attention.gif" alt="attention.gif"/> <strong>Se cliccate sulle foto di questo blog le ingrandirete. Se una volta ingrandite cliccate nell'angolino in basso a destra della foto, sarà ancora più grande </strong> <img src="http://etnablog.altervista.org/grafica_sito/4all/smile.gif" title="smile.gif" alt="smile.gif"/><br />
  2032. <br />
  2033. Adesso con lo strumento hbox (<img src="http://etnablog.altervista.org/grafica_sito/varie/hbox.png" alt="casella orizzontale"/>) dividete la cella in alto in due, e settate anche qui la "spaziatura" a 12.<br />
  2034. Otterrete questo:<br />
  2035. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_2.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_2.png" title="lez2_2.png" alt="lez2_2.png" width="100"/></a><br />
  2036. Osservate nel vostro "albero degli oggetti" (ispettore), come hbox sia un ramo al di sotto di vbox.<br />
  2037. <br />
  2038. Adesso prendete lo strumento immagine (<img src="http://etnablog.altervista.org/grafica_sito/varie/Immagine.png" alt="strumento immagine"/>) e piazzate una immagine nella cella in alto a sinistra.<br />
  2039. Cliccateci sopra e preparatevi a modificarne le proprietà:<br />
  2040. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_3.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_3.png" title="lez2_3.png" alt="lez2_3.png" width="100"/></a><br />
  2041. Modifichiamo le proprietà dell'immagine, in "Modifica tipo" selezionate "stock", e in "Immagine stock selezionate il segnale di pericolo.<br />
  2042. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_4.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_4.png" title="lez2_4.png" alt="lez2_4.png" width="100"/></a><br />
  2043. Inoltre, sempre nelle proprietà dell'immagine, modifichiamo "Dimensione icona" e impostatela a 6.<br />
  2044. <br />
  2045. Adesso mettete una label (<img src="http://etnablog.altervista.org/grafica_sito/varie/label.png" alt="strumento label"/>) nella cella accanto all'immagine.<br />
  2046. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_5.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_5.png" title="lez2_5.png" alt="lez2_5.png" width="100"/></a><br />
  2047. Adesso modificate il contenuto nella label e scrivetegli dentro questo:<br />
  2048. <pre><code>
  2049. &lt;span weight=&quot;bold&quot; size=&quot;larger&quot;&gt;Questo programma non fa nulla di importante&lt;/span&gt;
  2050.  
  2051. Non è stato aggiunto codice al programma se non quello sufficiente a mostrare il pulsante, che chiuderà il tutto.
  2052. </code></pre><br />
  2053. Il risultato sarà questo:<br />
  2054. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_6.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_6.png" title="lez2_6.png" alt="lez2_6.png" width="100"/></a><br />
  2055. A questo punto, sempre nelle proprietà, premete il bottone "usa i marcatori".<br />
  2056. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_7.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_7.png" title="lez2_7.png" alt="lez2_7.png" width="100"/></a><br />
  2057. Adesso selezionate lo strumento "dialog-action-area" (<img src="http://etnablog.altervista.org/grafica_sito/varie/dialog-action-area.png" alt="strumento dialog-action-area"/>), mettetelo nella cella rimasta libera e, dalle proprietà di questo, impostate come "Numero di elementi" il numero 1.<br />
  2058. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_8.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_8.png" title="lez2_8.png" alt="lez2_8.png" width="100"/></a><br />
  2059. Prendete a questo punto un bottone (<img src="http://etnablog.altervista.org/grafica_sito/varie/bottone.png" alt="strumento bottone"/>) e piazzatelo lì dove lo spazio è rimasto libero.<br />
  2060. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_9.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_9.png" title="lez2_9.png" alt="lez2_9.png" width="100"/></a><br />
  2061. Adesso rendete questo bottone, agendo sulle sue opzioni, un bottone di tipo "stock" e scegliete per lui il tipo "OK".<br />
  2062. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_10.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_10.png" title="lez2_10.png" alt="lez2_10.png" width="100"/></a><br />
  2063. Adesso nelle proprietà del bottone, andate dove c'è "segnali" e selezionate "clicked" e nel campo accanto scrivete "ok_button_clicked" (come nella foto) e assicuratevi di confermarne la modifica con invio.<br />
  2064. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_11.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_11.png" title="lez2_11.png" alt="lez2_11.png" width="100"/></a><br />
  2065. Adesso modificate il nome del bottone e chiamatelo "okbutton".<br />
  2066. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_12.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lez2_12.png" title="lez2_12.png" alt="lez2_12.png" width="100"/></a><br />
  2067. Bene! con Glade abbiamo finito, adesso prendiamo di nuovo Anjuta e modifichiamo <strong>main.c</strong><br />
  2068. <br />
  2069. main.c dovrebbe presentarsi così ai vostri occhi:<br />
  2070. <pre><code>
  2071. /* Created by Anjuta version 1.2.4a */
  2072. /* This file will not be overwritten */
  2073.  
  2074. #ifdef HAVE_CONFIG_H
  2075. #  include &lt;config.h&gt;
  2076. #endif
  2077.  
  2078. #include &lt;gnome.h&gt;
  2079. #include &lt;glade/glade.h&gt;
  2080.  
  2081. int main (int argc, char *argv[])
  2082. {
  2083. GtkWidget *window1;
  2084. GladeXML *xml;
  2085.  
  2086. #ifdef ENABLE_NLS
  2087. bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
  2088. textdomain (PACKAGE);
  2089. #endif
  2090.  
  2091. gnome_init (PACKAGE, VERSION, argc, argv);
  2092. glade_gnome_init ();
  2093. /*
  2094. * The .glade filename should be on the next line.
  2095. */
  2096. xml = glade_xml_new (PACKAGE_SOURCE_DIR&quot;/progetto_bottone.glade&quot;, NULL, NULL);
  2097.  
  2098. /* This is important */
  2099. glade_xml_signal_autoconnect (xml);
  2100. window1 = glade_xml_get_widget (xml, &quot;window1&quot;);
  2101. gtk_widget_show (window1);
  2102.  
  2103. gtk_main ();
  2104. return 0;
  2105. }
  2106. </code></pre><br />
  2107. <br />
  2108. Modificatelo e fatelo diventare così come sto per mostrarvi (sostituite tutto main.c):<br />
  2109. <br />
  2110. <pre><code>
  2111. /* Created by Anjuta version 1.2.4a */
  2112. /* This file will not be overwritten */
  2113.  
  2114. #ifdef HAVE_CONFIG_H
  2115. #  include &lt;config.h&gt;
  2116. #endif
  2117.  
  2118. #include &lt;gnome.h&gt;
  2119. #include &lt;glade/glade.h&gt;
  2120.  
  2121. void ok_button_clicked (GtkWidget *widget, gpointer user_data)
  2122. {
  2123.  printf (&quot;Grazie per aver provato il programma :)&quot;);
  2124.  gtk_main_quit ();
  2125. }
  2126.  
  2127.  
  2128. int
  2129. main (int argc, char *argv[])
  2130. {
  2131.  GladeXML  *main_window;
  2132.  GtkWidget *widget;
  2133.  
  2134.  gtk_init (&amp;argc, &amp;argv);
  2135.  
  2136.  /* Carica l'interfaccia utente */
  2137.  main_window = glade_xml_new (PACKAGE_SOURCE_DIR&quot;/progetto_bottone.glade&quot;, NULL, NULL);
  2138.  
  2139. /* Predispone la gestione del bottone chiamato &quot;okbutton&quot; */
  2140.  widget = glade_xml_get_widget (main_window, &quot;okbutton&quot;);
  2141.  g_signal_connect (G_OBJECT (widget), &quot;clicked&quot;,
  2142.                    G_CALLBACK (ok_button_clicked),
  2143.                    NULL);
  2144.  /* Chiusura del programma quando l'utente chiude la finestra */
  2145.  widget = glade_xml_get_widget (main_window, &quot;window1&quot;);
  2146.  g_signal_connect (G_OBJECT (widget), &quot;delete_event&quot;,
  2147.                    G_CALLBACK (gtk_main_quit), NULL);
  2148.  
  2149.  /* Avvia il ciclo */
  2150.  gtk_main ();
  2151.  
  2152.  return 0;
  2153. }
  2154. </code></pre><br />
  2155. <br />
  2156. <br />
  2157. Bene a questo punto salvate, fate "genera" (o "make") e infine esegui (o se preferite premete F11 e poi F3).<br />
  2158. <br />
  2159. Dovrebbe funzionare :) se non funziona riguardatevi qualche passaggio.<br />
  2160. <br />
  2161. Ha funzionato? Bene, adesso, con Glade, modificate di nuovo il vostro "progetto_bottone.glade".<br />
  2162. <br />
  2163. Dobbiamo modificare un "segnale" nella nostra finestra (window1). Quindi selezioniamo "window1" e in "segnali" scegliere "GtkWidget" e in questo selezionare "delete-event". Qui inserite "gtk_main_quit".<br />
  2164. <br />
  2165. A questo punto salvate progetto_bottone.glade, riaprite Anjuta e modificate così il vostro file main.c :<br />
  2166. <br />
  2167. <pre><code>
  2168. /* Created by Anjuta version 1.2.4a */
  2169. /* This file will not be overwritten */
  2170.  
  2171. #ifdef HAVE_CONFIG_H
  2172. #  include &lt;config.h&gt;
  2173. #endif
  2174.  
  2175. #include &lt;gnome.h&gt;
  2176. #include &lt;glade/glade.h&gt;
  2177.  
  2178. void ok_button_clicked (GtkWidget *widget, gpointer user_data)
  2179. {
  2180.  printf (&quot;Grazie per aver provato il programma :)&quot;);
  2181.  gtk_main_quit ();
  2182. }
  2183.  
  2184.  
  2185. int
  2186. main (int argc, char *argv[])
  2187. {
  2188.  GladeXML  *main_window;
  2189.  GtkWidget *widget;
  2190.  
  2191.  gtk_init (&amp;argc, &amp;argv);
  2192.  
  2193.  /* Carica l'interfaccia utente */
  2194.  main_window = glade_xml_new (PACKAGE_SOURCE_DIR&quot;/progetto_bottone.glade&quot;, NULL, NULL);
  2195.  glade_xml_signal_autoconnect (main_window);
  2196.  
  2197.  /* Avvia il ciclo */
  2198.  gtk_main ();
  2199.  
  2200.  return 0;
  2201. }
  2202.  
  2203. </code></pre><br />
  2204. <br />
  2205. Ha funzionato anche adesso? Studiate le differenze tra questo ultimo script e il precedente: capirete come il comando "glade_xml_signal_autoconnect" abbia per voi fatto quella che si chiama "callback" verso la funzione "gtk_main_quit" (che serve a chiudere tutto). :)<br />
  2206. <br />
  2207. Ad ogni modo potete scaricare l'intero progetto appena realizzato da qui:<br />
  2208. <a href="http://etnablog.altervista.org/misc/script-c/progetto_bottone.tar.gz">http://etnablog.altervista.org/misc/scri<br />
  2209. pt-c/progetto_bottone.tar.gz</a> <br />
  2210. <br />
  2211. Nella prossima puntata parleremo un pò di "codice" :)<br />
  2212. <br />
  2213. A presto! ]]>
  2214. </description>
  2215. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  2216. <guid>http://etnablog.altervista.org/programmazione-c/glade-3-e-anjuta-creazione-di-un-bottone/</guid>
  2217. </item>
  2218. <item>
  2219. <title>Guida alla creazione di programmi in C, con Glade, Anjuta, LibGlide</title>
  2220. <link>http://etnablog.altervista.org/programmazione-c/guida-alla-creazione-di-programmi-in-c-con-glade-anjuta-libglide/</link>
  2221. <description> <![CDATA[<p><i>Guida alla programmazione C con GTK+ di Etnablog : Prima parte</i></p>
  2222. <br /> <h2>Introduzione a Glade 3 e le Libglide</h2><br />
  2223. Glade Interface Designer (o semplicemente "Glade") è un software per la creazione di GUI (Graphics User Interface, interfacce utente) basato su GTK+.      <br />
  2224.      <br />
  2225. E' troppo definire Glade un IDE (Integrated Development Enviroment, cioè un ambiente integrato di sviluppo), ma è giusto definire Glade un buon RAD (Rapid Application Developer) per quel che riguarda la parte "grafica" di una GUI..      <br />
  2226.      <br />
  2227. Grazie a questo software è possibile, in punta di click, costruire facilmente tutta la parte grafica relativa ad un vostro programma.      <br />
  2228. Una volta realizzata la vostra interfaccia, Glade la salverà in un file con estensione .glade , che è in formato XML, che verrà poi letto ("parsato") grazie alle librerie "libglide".      <br />
  2229.      <br />
  2230. Questo sistema è così versatile che, procurandosi tutte le librerie che servono, è possibile ricompilare il vostro software per essere usato anche con Windows.<br />
  2231. Per ulteriori informazioni riguardo la compatibilità con Windows vedi:  <a href="http://gladewin32.sourceforge.net/modules/wfdownloads/">http://gladewin32.sourceforge.net/module<br />
  2232. s/wfdownloads/</a>       <br />
  2233.      <br />
  2234. Glide rende enormemente piu piacevole la vostra esperienza di programmazione.      <br />
  2235.      <br />
  2236. A me piace sviluppare in linguaggio C, e uso Glade per le mie interfacce grafiche.      <br />
  2237.      <br />
  2238. Si impara presto ad usare Glade, ma per creare delle buone interfacce utente non è sufficiente sapere usare soltanto Glade, occorre infatti conoscere le GTK+ che è un "toolkit", cioè un insieme molto ricco di comandi utilissimi a sviluppare interfacce utente, che supporta numerosi linguaggi fra cui Java, Python, C, C++ (e altri!).      <br />
  2239. In realtà però, per cominciare a sviluppare delle interfacce utente decenti, usando Glade, è sufficiente conoscere soltanto alcuni comandi e regole essenziali di GTK+.      <br />
  2240.      <br />
  2241. Se avete voglia di creare delle GUI complicate e con funzioni dinamiche, le vostre conoscenze di GTK+ dovranno crescere di pari passo con la vostra voglia di esagerare.   <br />
  2242. <br />
  2243. Questa guida è diretta a chi non ha mai programmato C, per chi invece è già esperto si tratterà di certo di un utile ripasso.<br />
  2244. <br />
  2245. Non posso purtroppo descrivere nei dettagli le basi della programmazione C, andrebbe oltre lo scopo di questa guida, ma spero di indurre in ogni novizio la voglia di approfondire da sè l'argomento.<br />
  2246. <br />
  2247. Sarò molto dettagliato e lento inizialmente, già dopo le prime lezioni mirerò più al sodo :)<br />
  2248.      <br />
  2249. <br />
  2250. <h2>Anjuta</h2><br />
  2251. Anjuta è un IDE (cioè un ambiente di sviluppo integrato) per sviluppare programmi C e C++.      <br />
  2252.      <br />
  2253. Una volta costruita, usando Glade, la parte grafica del nostro programma, serve Anjuta per dare un senso a tutto quanto, per dire al sistema cosa deve fare di tutti quei bottoni e accessori che abbiamo inserito nelle nostre finestre con Glade.<br />
  2254. <br />
  2255. <h2>Installiamo Glade, Anjuta e gli altri accessori</h2><br />
  2256. <br />
  2257. La distribuzione che ho usato è una Ubuntu Feisty.<br />
  2258. <br />
  2259. Cercate in Synaptic ed installate i pacchetti:<br />
  2260. <br />
  2261. - glade-3<br />
  2262. - glade-gnome-3<br />
  2263. - libglade2-dev<br />
  2264. - libgtk2.0-dev<br />
  2265. - anjuta<br />
  2266. - anjuta-common<br />
  2267. - g77<br />
  2268. - autoconf<br />
  2269. - devhelp<br />
  2270. - devhelp-common<br />
  2271. <br />
  2272. Eventuali altri pacchetti dovrebbero essere installati in automatico da Synaptic: siete pronti per cominciare.<br />
  2273. <br />
  2274. <h2>Sviluppare la prima applicazione</h2><br />
  2275. <br />
  2276. Completata l'installazione, dovreste trovarvi Glade e Anjuta già nel menu di GNOME (magari in una apposita sezione "programmazione").<br />
  2277. <br />
  2278. Aprite Anjuta e "create un nuovo progetto" servendovi del "wizard di applicazioni".<br />
  2279. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/1-wizard.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/1-wizard.png" title="1-wizard.png" alt="1-wizard.png" width="100"/></a><br />
  2280. Selezionate che volete creare un "LibGlade 2.0 Project".<br />
  2281. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/2-libglade.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/2-libglade.png" title="2-libglade.png" alt="2-libglade.png" width="100"/></a><br />
  2282. Quindi andate avanti e scrivete il nome del vostro primo progetto, ad esempio "primo_programma" (è preferibile che il nome non sia interrotto da spazi, piuttosto usate l'underscore.<br />
  2283. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/3-primo_programma.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/3-primo_programma.png" title="3-primo_programma.png" alt="3-primo_programma.png" width="100"/></a><br />
  2284. A questo punto vi chiede una piccola descrizione del vostro progetto, scrivete una cosa qualsiasi e andate ancora avanti e avanti ancora senza fare modifiche fino a cliccare su  "Applica".<br />
  2285. <br />
  2286. A questo punto Anjuta fa una prima "autogenerazione". Nella parte bassa dello schermo lo osservate fare alcune operazioni. Aspettate che termini.<br />
  2287. <br />
  2288. Alla fine, se tutto è andato bene, terminerà con un "Completed ... Successful".<br />
  2289. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/4-pronti_per_cominciare.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/4-pronti_per_cominciare.png" title="4-pronti_per_cominciare.png" alt="4-pronti_per_cominciare.png" width="100"/></a><br />
  2290. Se il vostro risultato non è questo e qualcosa è andato storto, ricontrollate le operazioni che ha eseguito e osservate di quali pacchetti ancora mancate per potere lavorare, ed installateli con Synaptic.<br />
  2291. <br />
  2292. Osservate: sulla sinistra avete un elenco dei file che compongono il vostro progetto. Cercate la directory "source - src" ed aprite il file "main.c".<br />
  2293. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/5-iniziamo.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/5-iniziamo.png" title="5-iniziamo.png" alt="5-iniziamo.png" width="100"/></a><br />
  2294. <strong>main.c</strong> è il file principale, da cui partirà il nostro progetto. Tanto per cominciare, guardate nel menu in alto e dal sottomenu "genera" selezionate il tasto "genera" (o direttamente premete il F11 nella vostra tastiera).<br />
  2295. <br />
  2296. Premendo su "genera", quello che lui in realtà fa è eseguire un comando "make", e crea un eseguibile del vostro programma, che eseguirete poi con il tasto "esegui" dello stesso menù (o premete F3 nella vostra tastiera). Fatelo, dovreste vedere la vostra prima finestra vuota, tutta da riempire a vostra fantasia. :)<br />
  2297. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/6-prima_finestra.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/6-prima_finestra.png" title="6-prima_finestra.png" alt="6-prima_finestra.png" width="100"/></a><br />
  2298. Bene, a questo punto mettiamo da parte anjuta (non chiudetelo però) ed apriamo Glade.<br />
  2299. <br />
  2300. Osservate l'interfaccia di Glade. Sulla sinistra ci sono gli strumenti utili alla creazione, sulla sinistra avete la finestre "ispettore" e proprietà, capiremo presto a cosa servono.<br />
  2301. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/7-interfaccia_glade.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/7-interfaccia_glade.png" title="7-interfaccia_glade.png" alt="7-interfaccia_glade.png" width="100"/></a><br />
  2302. Con Glade, dovrete modificare un file con estensione .glade, che si trova nel progetto che avete creato poco fa con Anjuta, che dovrebbe trovarsi in una apposita cartella "Projects" generata da Anjuta stesso nella vostra home.<br />
  2303. <br />
  2304. Cercate questo file .glade e selezionatelo (se avevate chiamato il vostro progetto "primo_programma", dovrebbe essere "primo_programma.glide".<br />
  2305. <br />
  2306. A questo punto dovreste vedere spuntare nella finestra "ispettore" un oggetto "window1" o simile, cliccatevi sopra due volte ed ecco la vostra finestra iniziale, grigia e vuota.<br />
  2307. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/8-finestra_vuota.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/8-finestra_vuota.png" title="8-finestra_vuota.png" alt="8-finestra_vuota.png" width="100"/></a><br />
  2308. Indugiando col mouse, senza cliccare, su ogni strumento in Anjuta, vedrete comparire una finestrella (detta "tooltip") che vi spiega a cosa serve lo strumento che state puntando.<br />
  2309. <br />
  2310. Prendete lo strumento "casella verticale" (<img src="http://etnablog.altervista.org/grafica_sito/varie/casella_verticale.png" alt="casella verticale"/>) e cliccate sulla vostra finestra grigia e vuota.<br />
  2311. Potete impostare il numero di divisioni della vostra finestra, 3 vanno bene.<br />
  2312. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/9-casella-verticale.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/9-casella-verticale.png" title="9-casella-verticale.png" alt="9-casella-verticale.png" width="100"/></a><br />
  2313. Adesso prendete Lo strumento "label" (<img src="http://etnablog.altervista.org/grafica_sito/varie/label.png" alt="label"/>) e inseritelo in mezzo.<br />
  2314. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/10-label.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/10-label.png" title="10-label.png" alt="10-label.png" width="100"/></a><br />
  2315. Adesso guardate la finestra "ispettore" ed aprite quello che è "l'albero" della vostra finestra ed evidenziate "label".<br />
  2316. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/11-label2.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/11-label2.png" title="11-label2.png" alt="11-label2.png" width="100"/></a><br />
  2317. Modificate adesso le proprietà della vostra "label" con l'apposito pannello e ne cambierete così facilmente il contenuto.<br />
  2318. <br />
  2319. A questo punto, visto che "già state imparando a muovervi", modificate da voi stessi la dimensione di "Window1" agendo sulle sue proprietà. Impostate 300 sia come "larghezza predefinita", sia come "altezza predefinita"  :)<br />
  2320. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/12-window1-size.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/12-window1-size.png" title="12-window1-size.png" alt="12-window1-size.png" width="100"/></a><br />
  2321. Bene, a questo punto salvate il vostro lavoro e tornate su Anjuta.<br />
  2322. <br />
  2323. Cliccate su esegui e voilà :)<br />
  2324. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/13-esecuzione.png"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/13-esecuzione.png" title="13-esecuzione.png" alt="13-esecuzione.png" width="100"/></a><br />
  2325. La prima lezione finisce qui. La prossima volta aggiungeremo bottoni e altro :) ]]>
  2326. </description>
  2327. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  2328. <guid>http://etnablog.altervista.org/programmazione-c/guida-alla-creazione-di-programmi-in-c-con-glade-anjuta-libglide/</guid>
  2329. </item>
  2330. <item>
  2331. <title>Il passaggio da Windows a Linux</title>
  2332. <link>http://etnablog.altervista.org/linux/il-passaggio-da-windows-a-linux/</link>
  2333. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Sedicesima parte)</i></p>
  2334. <br /> Se avete letto tutta la parte precedente di questa guida, sono certo che una minima idea su cosa voglia dire passare da Windows a Linux ve la sarete fatta.<br />
  2335. Se può esservi sembrato tutto troppo complicato sappiate e ricordatevi che:<br />
  2336. <ul><li>Le guide sembrano molto più difficili lette sullo schermo di quanto non lo siano stampate su carta. E' questo uno dei motivi per cui vi consiglio di stampare questa guida e leggerla con calma.</li><br />
  2337. <li>Si fa presto l'abitudine ad entrare nei meccanismi che regolano Linux, vi sembrerà incredibile ma è così, ed una volta entrati nel meccanismo vi sentirete così padroni del vostro sistema che ve lo adatterete come un guanto.</li><li>Se non siete laureati in informatica ma avete sempre e solo usato Windows e le vostre conoscenze di Linux sono pari a zero, come così era per me, in una settimana di Linux avrete di certo configurato tutto il sistema, ed in un mesetto saprete tutto quello che c'è da sapere per usarlo in serenità, senza essere dei grandi esperti.</li><li>Ricordate che quasi per ogni problema che incontrerete qualcuno, nel sito della vostra distribuzione e in centinaia di altri siti, blog e forum in rete, gratuitamente vi ha pensato ed ha scritto per voi una guida per risolvere il vostro problema.</li></ul><br />
  2338. Se nel vostro pc vi è ancora solo Windows e non avete ancora installato Linux, ma pensate di farlo, vi dò alcuni suggerimenti per una migrazione da Windows a Linux quanto più possibile serena:<br />
  2339. <br />
  2340. Cominciate ad abituarvi, in Windows stesso, ad usare del software libero, in particolare quel software che ritroverete uguale da Windows a Linux.<br />
  2341. <br />
  2342. Questo basterà già da solo a rendere il vostro passaggio più amichevole e meno traumatico.<br />
  2343. <br />
  2344. Siete ancora in Windows giusto? Tanto per cominciare: <br />
  2345. <ul><li>Smettetela di usare <strong>Internet Explorer</strong> ed installatevi <strong>Firefox</strong>: è gratis</li><li>Smettetela di usare <strong>Outlook</strong> per la posta elettronica, ed installatevi <strong>Thunderbird</strong>: è gratis.</li><li>Smettetela di usare <strong>Windows Media Player</strong> per vedere i vostri film ed ascoltare musica, ed installatevi <strong>VLC</strong>: è gratis.</li><br />
  2346. </ul>E' tutto software che potete <strong>scaricare gratis dai rispettivi siti</strong>.<br />
  2347. <br />
  2348. Considerate che tutti i "siti preferiti" che avete salvato in Firefox su Windows, potrete tranquillamente passarli nel Firefox in Linux, e lo stesso vale per <strong>Thunderbird</strong>: <strong>tutta la vostra posta elettronica, gli account, potrete ripassarli da Windows a Linux</strong>.<br />
  2349. <br />
  2350. Non appena avrete preso confidenza con questi tre software su Windows, che vi ritroverete uguali in Linux, scaricatevi una distribuzione Linux.<br />
  2351. <br />
  2352. Quale fra le tante distribuzioni? Qui di campane ce ne sono tante, io personalmente vi consiglio <strong>Ubuntu Feisty</strong>, ma in molti consigliano, almeno per ora, di usare la versione "<strong>Dapper</strong>", che è la versione di Ubuntu più collaudata ed a lungo termine di supporto ("LTS").<br />
  2353. <br />
  2354. Ubuntu Feisty è attualmente la versione di Ubuntu più avanzata al momento.<br />
  2355. <br />
  2356. Io ho due hard disk nel mio pc, uno da 80 giga ed uno da 20 giga.<br />
  2357. <br />
  2358. Ho lasciato Windows XP nell'hard disk da 80 ed ho dedicato l'intero HD da 20 giga ad Ubuntu.<br />
  2359. <br />
  2360. Se però avete un solo, grosso Hard Disk nel vostro pc, dovrete fare in modo di liberare un pò di spazio per Linux.<br />
  2361. <br />
  2362. Al momento dell'installazione sarà Linux stesso che vi chiederà quanto spazio, del vostro hard disk, volete dedicare a Linux e quanto volete rimanga a Windows. Così Linux stesso creerà la sua partizione.<br />
  2363. <br />
  2364. Mi raccomando: Prima di fare QUALSIASI operazione sulle partizioni, <strong>prima di installare Linux, fatevi una copia di ogni dato importante che avete in Windows</strong>. Se combinate qualche sciocchezza durante la procedura di partizionamento e formattazione, rischiate di perdere tutti i dati.<br />
  2365. <br />
  2366. Sicchè salvatevi l'archivio della posta, i vostri mp3 e divx preferiti, documenti importanti, ecc. ecc..<br />
  2367. <br />
  2368. Piccola nota: se il vostro hard disk è ancora vuoto e volete installare sia Windows XP che Linux, <strong>installate sempre prima Windows</strong> perchè Windows vuole sentirsi sempre la prima donna nel vostro pc, e non accetta di essere installato in una partizione secondaria.<br />
  2369. <br />
  2370. Personalmente, dopo avere avviato il pc dal CD di Ubuntu, <strong>ho semplicemente seguito i passaggi del programma di installazione</strong>, che mi formattò l'hard disk e vi installò rapidamente Ubuntu.<br />
  2371. <br />
  2372. Il mio primo avvio di Ubuntu fu per me sorprendente: già tutto funzionava alla perfezione, porte USB, HUB USB, scheda grafica (ma senza accelerazione 3d), audio, scheda di rete e connessione ad internet mediante il mio router, e persino la webcam.<br />
  2373. <br />
  2374. Se avete avuto la mia stessa fortuna, la prima cosa da fare è di cercarvi subito, in Synaptic, i pacchetti di installazione di <strong>Firefox, Thunderbird, VLC</strong> (Firefox dovreste trovarlo già attivo di default, gli altri non credo, quindi scaricateli con Synaptic).<br />
  2375. <br />
  2376. Se tutto andrà bene, come lo è stato per me bsterà poco tempo dal vostro iniziale entusiasmo che vi renderete conto che ci sono delle cosine che non vanno.<br />
  2377. <br />
  2378. Ecco i primi problemi in cui vi potreste imbattere:<br />
  2379. <ul><li><strong>Connessione ad internet non funzionante</strong>. Soluzione: cercate nel sito della distribuzione su come configurare il vostro modem e la connessione ADSL.</li><li><strong>Avviate un gioco 3d o google Earth e scoprite che non vi funziona l'accelerazione 3d</strong>. Soluzione: prima guardate la sezione di questa guida relativa alle schede grafiche e poi cercate nel sito della vostra distribuzione come fare ad installare i driver giusti.</li><li><strong>Non funzionano i file midi</strong>. Soluzione: vedi l'apposita sezione in questa stessa guida.</li><li><strong>Non funziona la riproduzione dei filmati o di qualche filmato, mpg, avi, DVD o altro</strong>. Soluzione: Dovrebbe partire in automatico un tentativo di installazione del codec video giusto. Se questo non succede, leggi la sezione sulle schede grafiche in questa guida e poi vai al sito della distribuzione per cercare le soluzioni all'ultimo grido, fatte apposta per la tua distribuzione, per installare tutti i codec video.</li><li><strong>Non funzionano le applet in JAVA ed i siti in FLASH su Firefox</strong>: Soluzione: problema comune e di facile soluzione. Fai una ricerca nel sito della tua distribuzione su come installare Java e flash.</li><li><strong>Non si sente l'audio nei siti in flash su Firefox</strong>. Soluzione: vedi sezione "cartelle utilizzate da linux" in questa stessa guida( cerca "/etc/firefox/firefoxrc")</li></ul><br />
  2380. Per quanto riguarda il <strong>cominciare</strong> ad utilizzare Linux tutto quello che è scritto in questa guida dovrebbe essere sufficiente.<br />
  2381. <br />
  2382. La mia personale raccomandazione è questa: siate pazienti. Linux è una grande comunità ed è piena di gente che vuole aiutarvi.<br />
  2383. <br />
  2384. Visitate il forum della vostra distribuzione e non esitate a chiedere lì le vostre perplessità. <br />
  2385. <br />
  2386. Abituatevi inoltre ad usare Google, Yahoo e gli altri motori di ricerca, compresi quelli dei forum della vostra distribuzione, per risolvere i vostri problemi quando questi si presentano.<br />
  2387. <br />
  2388. Una ultima cosa: In questa guida vi sono elencati tutti i <strong>principali problemini</strong> a cui va incontro un utente che passa a Linux (in particolare Ubuntu), credetemi questa <strong>è la guida che tanto avrei voluto avere io al momento del grande salto</strong>.<br />
  2389. <br />
  2390. Avete visto come per molti problemi la soluzione è stata dirvi "cercate nel forum" o "fate riferimento al sito della vostra distribuzione". Questo non per mia pigrizia o perchè mi annoiassi a spiegarvi le soluzioni ai vostri problemi, ma perchè i ragazzi dei forum tengono aggiornate le guide da loro scritte, specificatamente, per la distribuzione che avete voi, e vi danno il necessario supporto.<br />
  2391. <br />
  2392. Nessuno mi ha pagato per scrivere questa guida, spero vi sia stata utile, e spero anche, che se riporterete dei brani di questa guida nei vostri siti, ne citerete la fonte.. Non è solo un fatto di onestà intellettuale, ma un fatto di.. Cuore.<br />
  2393. <br />
  2394. Un buon linux a tutti da <strong>Etnablog.com</strong><br />
  2395. <br />
  2396. <br />
  2397. <a href="http://etnablog.altervista.org/linux/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  2398. ]]>
  2399. </description>
  2400. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  2401. <guid>http://etnablog.altervista.org/linux/il-passaggio-da-windows-a-linux/</guid>
  2402. </item>
  2403. <item>
  2404. <title>Gli script di shell, i file .sh</title>
  2405. <link>http://etnablog.altervista.org/linux/gli-script-di-shell-i-file-sh/</link>
  2406. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Quindicesima parte)</i></p>
  2407. <br /> Questi file .sh sono dei file di testo in cui vengono immesse delle operazioni da riga di comando.      <br />
  2408. Un esempio di "rudimentale" file .sh:<br />
  2409. <br />
  2410. #!/bin/sh<br />
  2411. #Questo è un commento e non viene interpretato<br />
  2412. echo "Questo verrà scritto"<br />
  2413.     <br />
  2414. Il primo rigo (<strong>#!/bin/sh</strong>) precisa che il file dovrebbe essere processato dall'interprete <strong>sh</strong>, che normalmente si trova appunto nella cartella <strong>/bin/sh</strong>.      <br />
  2415. La seconda riga è un semplice commento.      <br />
  2416. In terza riga vi è il comando <strong>echo</strong> che stampa il testo contenuto tra le virgolette.      <br />
  2417.      <br />
  2418. Questi script .sh possono essere lanciati da una finestra di terminale facendo:      <br />
  2419. sh /percors/verso/ilfile.sh<br />
  2420.      <br />
  2421. oppure, se il file è "eseguibile", si può fare:      <br />
  2422. /percors/verso/ilfile.sh <strong>(se il file è "eseguibile")</strong><br />
  2423. oppure, se ci troviamo gia nella cartella, si può eseguire semplicemente facendo:      <br />
  2424. ./ilfile.sh <strong>(se il file è "eseguibile")</strong><br />
  2425.      <br />
  2426. Per essere il file "<strong>eseguibile</strong>" bisogna renderlo tale facendo:      <br />
  2427. chmod +x ilfile.sh<br />
  2428. <br />
  2429. Il prossimo esempio genera un menu, attraverso cui è possibile ottenere informazioni sul proprio sistema<br />
  2430. <br />
  2431. <br />
  2432. #!/bin/bash<br />
  2433. clear<br />
  2434. echo -e "<br />
  2435. 1- Versione di Ubuntu/distribuzione (lsb_release -a)<br />
  2436. 2- Kernel versione (uname -mrs) \n"<br />
  2437. <br />
  2438. echo "Enter a number: " <br />
  2439. read num<br />
  2440. <br />
  2441. case $num in<br />
  2442. "1") <br />
  2443.   echo -e "Eseguito: lsb_release -a \n"<br />
  2444.   echo -e "Questo comando mostra informazioni LSB (Linux Standard Base) \n"<br />
  2445.      lsb_release -a;;<br />
  2446. "2")<br />
  2447.   echo -e "Eseguito: uname -mrs \n"   <br />
  2448.   uname -mrs;;  <br />
  2449. *)<br />
  2450. echo -e "Comando non riconosciuto\n" ;;<br />
  2451. esac<br />
  2452. <br />
  2453. <br />
  2454. <br />
  2455. <br />
  2456. <a href="http://etnablog.altervista.org/linux/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  2457. ]]>
  2458. </description>
  2459. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  2460. <guid>http://etnablog.altervista.org/linux/gli-script-di-shell-i-file-sh/</guid>
  2461. </item>
  2462. <item>
  2463. <title>Cominciare a programmare C con GTK e Java</title>
  2464. <link>http://etnablog.altervista.org/linux/cominciare-a-programmare-c-con-gtk-e-java/</link>
  2465. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Quattordicesima parte)</i></p>
  2466. <br /> Giusto due accenni sul cominciare a programmare in C, su cosa sono le GTK e come si potrebbe fare ad usarle in C.      <br />
  2467.      <br />
  2468. Il <strong>GTK+</strong> (acronimo che sta per GIMP ToolKit) è un toolkit (insieme di strumenti, di cui il principale è la libreria <strong>libgtk</strong>) che serve per programmare usando le finestre, nello stile di GNOME.      <br />
  2469. Per sviluppare facendo uso delle gtk, qui su Ubuntu, dovete installare da synaptic il pacchetto <strong>libgtk2.0-dev</strong>.      <br />
  2470.      <br />
  2471. Il vostro programma, realizzato per essere compatibile con le GTK, va compilato con una istruzione simile a questa:<br />
  2472. gcc -Wall -g primo.c -o primo `pkg-config --cflags --libs gtk+-2.0`<br />
  2473. <strong>GCC</strong> (GNU Compiler Collection, in origine GNU C Compiler) è il compilatore C di linux. Alcuni parametri importanti:      <br />
  2474. -Wall : abilita tutti i messaggi di warning.      <br />
  2475. -g : aggiunge informazioni aggiuntive utili per il debugging.      <br />
  2476. -o nomefile : è il nome di come si chiamerà il file compilato.      <br />
  2477. pkg-config : è uno strumento che serve a comunicare al compilatore i percorsi giusti (PATH) che servono alle librerie. Nel nostro caso il comando pkg-config e i suoi argomenti sono contenuti fra degli apici storti che sono detti "backquotes". Questi vanno fatti premendo il tasto <strong>ALTGR + '</strong> (apice). Fra gli apici reversi va un comando (esattamente come se lo stessimo eseguendo da shell).<br />
  2478. <br />
  2479. pkg-config pesca le informazioni "gtk+-2.0" dall'apposito file che si trova nella cartella /usr/lib/pkgconfig/<br />
  2480. <br />
  2481. Nel sito ho dedicato una apposita sezione alla programmazione con C e glade (designer di GUI).<br />
  2482. <br />
  2483. Una piccola curiosità:<br />
  2484. Invece di usare il comando gcc, spesso si usa il comando "cc", che in realtà è un link ad una versione del compilatore gcc che abbiamo installato (potremmo anche averne installata piu di una).<br />
  2485. <br />
  2486. Lo stesso comando gcc è un link.<br />
  2487. <br />
  2488. Osservate:<br />
  2489. <pre><code>
  2490. attorianzo@attorianzo-desktop:~$ which gcc
  2491. /usr/bin/gcc
  2492. attorianzo@attorianzo-desktop:~$ ls -lah /usr/bin/gcc
  2493. lrwxrwxrwx 1 root root 7 2007-04-20 17:45 /usr/bin/gcc -&gt; gcc-4.1
  2494. </code></pre><br />
  2495. Come potete vedere, "gcc" punta alla versione 4.1.<br />
  2496. <br />
  2497. Per quanto riguarda cc:<br />
  2498. <pre><code>
  2499. attorianzo@attorianzo-desktop:~$ which cc
  2500. /usr/bin/cc
  2501. attorianzo@attorianzo-desktop:~$ ls -lah /usr/bin/cc
  2502. lrwxrwxrwx 1 root root 20 2007-04-20 17:45 /usr/bin/cc -&gt; /etc/alternatives/cc
  2503. attorianzo@attorianzo-desktop:~$ ls -lah /etc/alternatives/cc
  2504. lrwxrwxrwx 1 root root 12 2007-07-05 17:10 /etc/alternatives/cc -&gt; /usr/bin/gcc
  2505. </code></pre><br />
  2506. Quindi "cc" punta a "gcc". (fonte:  <a href="http://forum.ubuntu-it.org/index.php?topic=75375.0">forum Ubuntu</a> )<br />
  2507. <br />
  2508. <br />
  2509. </p><div style="white-space:pre; margin:left:auto;margin-right:auto; margin-top:1em; margin-bottom:1em; text-align:center">* * *</div><p><br />
  2510. Per quanto riguarda il cominciare a sviluppare JAVA, scaricatevi da Synaptic il pacchetto <strong>j2sdk1.4</strong> (o versione piu avanzata, se l'avete)      <br />
  2511. </p><div style="white-space:pre; margin:left:auto;margin-right:auto; margin-top:1em; margin-bottom:1em; text-align:center">* * *</div><p><br />
  2512.      <br />
  2513. Vi consiglio di scaricare anche il pacchetto "<strong>python-wxgtk2.6</strong>" (o versione piu avanzata, se l'avete) che serve per installare le "<strong>wxwidget</strong>".<br />
  2514. <br />
  2515. <a href="http://etnablog.altervista.org/linux/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  2516. ]]>
  2517. </description>
  2518. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  2519. <guid>http://etnablog.altervista.org/linux/cominciare-a-programmare-c-con-gtk-e-java/</guid>
  2520. </item>
  2521. <item>
  2522. <title>Boot del sistema e avvio automatico di applicazioni</title>
  2523. <link>http://etnablog.altervista.org/linux/boot-del-sistema-e-avvio-automatico-di-applicazioni/</link>
  2524. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (tredicesima parte)</i></p>
  2525. <br /> Cosa succede quando accendete il vostro pc?      <br />
  2526.      <br />
  2527. L'avvio del pc viene detto "<strong>boot</strong>" o "<strong>bootstrap</strong>".      <br />
  2528.      <br />
  2529. La prima cosa che fa il "<strong>BIOS</strong>" del pc all'avvio è di cercare le periferiche avviabili leggendo i "settori di avvio" (o "<strong>MBR</strong>") di floppy e hard disk.      <br />
  2530.      <br />
  2531. L'<strong>MBR</strong> (Master Boot Record) è un'area molto piccola del vostro hard disk, in cui linux posiziona un programmino detto "boot loader".      <br />
  2532.      <br />
  2533. Il "<strong>boot loader</strong>" si occupa di caricare il "kernel", ovvero il cuore del vostro sistema operativo.      <br />
  2534.      <br />
  2535. I due principali "boot loader" di linux sono "<strong>LILO</strong>" e "<strong>GRUB</strong>" (GNU GRand Unified Bootloader). Ubuntu Feisty usa GRUB ed è proprio di GRUB che vi parlerò adesso.      <br />
  2536.      <br />
  2537. L'MBR contiene lo "<strong>stage 1</strong>" di GRUB, che passa immediatamente la palla allo "stage 2" che invece è collocato nel disco vero e proprio (in una cartella tipo <strong>/boot/grub/</strong>).      <br />
  2538.      <br />
  2539. Lo <strong>stage 2</strong> contiene il menù di avvio con la lista (<strong>/boot/grub/menu.lst</strong>) dei kernel avviabili.      <br />
  2540.      <br />
  2541. Considerate che Linux aggiorna molto spesso i suoi kernel, o perchè ne correggono difetti, o perchè vi aggiungono nuovi driver, o perchè vi introducono nuove funzionalità; quindi una volta al mese è probabile che, fra gli aggiornamenti che scaricherete in automatico del vostro linux, vi ritroverete kernel nuovi, pronti per essere usati da voi.      <br />
  2542.      <br />
  2543. Ogni volta che voi installate un kernel Linux nuovo, questo verrà posizionato nella directory "<strong>/boot/</strong>" ed automaticamente verrà aggiornata anche la lista dei kernel disponibili per GRUB (file "<strong>/boot/grub/menu.lst</strong>").      <br />
  2544.      <br />
  2545. Nella lista dei kernel da avviare, potete persino inserire Windows. In questo modo potrete sempre scegliere se avviare da Win o da Linux, liberamente.      <br />
  2546.      <br />
  2547. <div style="background:#EFEBE7; margin-left:1em; padding:1em"><br />
  2548. Mi sembra doveroso aggiungere due cosette ancora su GRUB:      <br />
  2549.      <br />
  2550. quando voi installate Ubuntu installate anche GRUB.      <br />
  2551.      <br />
  2552. ..Ma se installate Windows (o effettuate un ripartizionamento che spinge Windows a ricontrollare la MBR) DOPO avere installato GRUB (e Linux), Windows modificherà e renderà inutilizzabile GRUB.      <br />
  2553.      <br />
  2554. Il problema però si risolve facilmente riavviando il sistema dal vostro LiveCD (il cd usato per installare Ubuntu) e facendo una apposita sequenza di comandi di  <a href="http://wiki.ubuntu-it.org/RipristinoGrub?action=show&redirect=RecuperareGrub">ripristino di GRUB</a> .      <br />
  2555.      <br />
  2556. State tranquilli comunque perchè GRUB è affidabilissimo. L'<strong>unica</strong> volta che mi ha dato questo problema è stato (così come vi ho appena detto..) proprio quando ho cercato di ridimensionare la partizione di Windows per dare più spazio a Linux (operazione svolta peraltro egregiamente dal programma "<strong>gparted</strong>"). All'avvio di Windows (per provare se funzionava tutto a posto) lui mi sconvolse GRUB ma ripristinai tutto in pochi minuti con l'apposita procedura. La colpa purtroppo non è nè di Linux nè di GRUB, è Windows che è geloso e vuole avere per se tutti i miei dischi di sistema..      <br />
  2557. </div><br />
  2558. Una volta scelto da GRUB il kernel da caricare, il suo lavoro finisce qui, e da qui in poi il lavoro di avvio è svolto dal kernel, che cercherà di accedere a tutti i componenti dell'hardware, hard disk, schede di rete, scheda audio e tutto il resto.      <br />
  2559.      <br />
  2560. In pratica il kernel cerca tutte le periferiche che sono compatibili con i suoi "drivers", che sono le "interfacce attraverso cui vengono pilotate le periferiche" (solo le periferiche compatibili col kernel possono funzionare).      <br />
  2561.      <br />
  2562. Infine il kernel caricherà le applicazioni presenti nel "<strong>runlevel</strong>" tra cui vi è anche "<strong>GDM</strong>" (il "gestore di login" o "Gnome Display Manager") che è quella pagina in cui si può effettuare il login dell'utente (vedi oltre in questa sezione).      <br />
  2563.      <br />
  2564. Da <strong>GDM</strong> mettendo il nome utente e password si può finalmente accedere a GNOME o altra "sessione" (vedi oltre in questa sezione).      <br />
  2565.      <br />
  2566. Completato l'avvio, ecco alcuni comandi utili che potremmo eseguire da shell per avere qualche informazione riguardo alle operazioni di avvio del kernel:      <br />
  2567.      <br />
  2568. <table border="1"><tr><td style="white-space:nowrap">dmesg | less</td><td>Il comando dmesg ripropone i messaggi visualizzati dal kernel durante l'avvio del sistema, consentendo di controllarli con tutta calma. Il comando less invece viene utilizzato, in generale quando si vuole velocemente prendere visione di un lungo file di testo.</td></tr><tr><td class="com">who -r</td><td>Mostra quale è l'attuale runlevel in esecuzione.</td></tr><br />
  2569. <tr><td class="com">runlevel</td><td>Come who -r, ci mostra il runlevel in esecuzione.</td></tr></table><br />
  2570.      <br />
  2571. Se il vostro avvio è diventato lento, potrebbe essere utile per voi cercare di capire dove è che il vostro sistema perde tempo in avvio. C'è un modo per farvi mostrare tutte le operazioni che il vostro sistema compie durante l'avvio.      <br />
  2572.      <br />
  2573. Fate <strong>gedit /boot/grub/menu.lst</strong> per modificare GRUB.      <br />
  2574.      <br />
  2575. Individuate la riga in cui è specificato il kernel, dovrebbe essere simile a questa:       <br />
  2576. kernel          /boot/vmlinuz-2.6.17-10-generic root=UUID=5ee00750-e638-423f-9d5d-44fdd7<br />
  2577. 42c7ba ro quiet splash       <br />
  2578. Commentatela e riscrivetela sotto senza "<strong>quiet</strong>" e "<strong>splash</strong>" facendola quindi diventare:<br />
  2579. <br />
  2580. #kernel          /boot/vmlinuz-2.6.17-10-generic root=UUID=5ee00750-e638-423f-9d5d-44fdd7<br />
  2581. 42c7ba ro quiet splash       <br />
  2582. kernel          /boot/vmlinuz-2.6.17-10-generic root=UUID=5ee00750-e638-423f-9d5d-44fdd7<br />
  2583. 42c7ba ro<br />
  2584. <br />
  2585.      <br />
  2586. In questo modo all'avvio di linux potete osservare e studiare in quale operazione il sistema perde piu tempo all'avvio.       <br />
  2587. Se volete visualizzare tali operazioni ma nel contempo non volete rinunciare alla barra di scorrimento tipica dell'avvio, togliete quiet ma lasciate splash.      <br />
  2588.      <br />
  2589. <div style="background:#EFEBE7; margin-left:1em; padding:1em"><br />
  2590. Come avrete visto, in quel codice scritto sopra, vi uno strano "<strong>UUID</strong>" seguito da codici strani. L'UUID è una sigla che serve ad identificare univocamente una periferica, nel nostro caso identifica la partizione che contiene il kernel considerato.      <br />
  2591.      <br />
  2592. Si sarebbe potuto mettere, al posto di quel codice, anche "/dev/hda1" o "/dev/hdc1" o altro ma francamente a me ha dato meno problemi GRUB indicando direttamente l'UUID.      <br />
  2593.      <br />
  2594. L'UUID della partizione che vi interessa ("/dev/hda1" o "/dev/hdc1" o altro) potete vederlo dal pannello in Gnome "<strong>Gestione periferiche</strong>", cercando nella partizione che vi interessa (o da shell, facendo " <strong>sudo vol_id -u /dev/XXX</strong> ". Se non avete il comando <strong>vol_id</strong> installate da Synaptic il pacchetto "<strong>volumeid</strong>").      <br />
  2595.      <br />
  2596. L'unica accortezza da tenere è che se modificate le partizioni (le ridimensionate con "gparted" o simili) è probabile che l'UUID cambi e quindi anche il file /boot/grub/menu.lst andrà risistemato manualmente.      <br />
  2597. </div><br />
  2598.      <br />
  2599. <div style="white-space:pre; margin:left:auto;margin-right:auto; margin-top:1em; margin-bottom:1em; text-align:center">* * *</div><br />
  2600. Potete scegliere voi stessi di mettere delle applicazioni che voi usate spesso in avvio "automatico" quando accendete il pc.      <br />
  2601.      <br />
  2602. In generale, non conviene avviare in automatico applicazioni che non vi servono sempre, non tanto perchè possono rallentare inutilmente il sistema, anche di poco, ma quanto per i problemi di <strong>sicurezza</strong> che potrebbero portarvi.      <br />
  2603. Per controllare, disabilitare o abilitare applicazioni all'avvio, scaricate da synaptic e usate il pacchetto <strong>bum</strong> (boot up manager).      <br />
  2604.      <br />
  2605. Se vi interessa mettere le mani sul boot di linux, in generale, è bene che sappiate cosa sono i <strong>runlevels</strong>.      <br />
  2606. Un runlevel è uno stato del sistema in cui possono venire compiute solo determinate operazioni. I runlevel sono sette, enumerati da 0 a 6, sebbene esistano anche il 7, l'8 ed il 9 che però i normali Unix (e Linux con loro) non utilizzano.       <br />
  2607.      <br />
  2608. Runlevel 0: <strong>/etc/rc0.d</strong> Questo runlevel avvia la sequenza di arresto del sistema (shutdown).      <br />
  2609. Runlevel 1: <strong>/etc/rc1.d</strong> Questo runlevel rappresenta la modalità singolo utente, nessun altro utente può collegarsi, il servizio di rete è disabilitato.      <br />
  2610. Runlevel 2: <strong>/etc/rc2.d</strong> Per l'utente, Il 2 è il runlevel di default qui su Feisty.      <br />
  2611. Runlevel 3: <strong>/etc/rc3.d</strong> Per l'utente.      <br />
  2612. Runlevel 4: <strong>/etc/rc4.d</strong> Per l'utente.      <br />
  2613. Runlevel 5: <strong>/etc/rc5.d</strong> Per l'utente.      <br />
  2614. Runlevel 6: <strong>/etc/rc6.d</strong> Il runlevel 6 è quello di reboot.      <br />
  2615.      <br />
  2616. Lo 0, l'1 ed il 6 sono riservati e corrispondono rispettivamente a: arresto del sistema (0), single-user mode (1) e reboot (6).      <br />
  2617. I runlevels dal 2 al 5 qui su ubuntu sono uguali, e potete modificarli se ne avete l'esigenza.      <br />
  2618. In Feisty c'è un sistema tutto nuovo per l'avvio del sistema, che non si basa più, come di solito in linux, sul file <strong>/etc/inittab</strong> (sistema "sysvinit"), ma su un sistema noto come <strong>upstart</strong>, che gestisce i demoni secondo le configurazioni impostate nella cartella <strong>/etc/event.d/</strong>.      <br />
  2619.      <br />
  2620. Il runlevel di avvio usato di default in Feisty è il 2. Per cambiarlo bisogna editare manualmente il file <strong>/etc/event.d/rc-default</strong>.      <br />
  2621. In questo file /etc/event.d/rc-default infatti vi è il comando "telinit" che è serve a impostare il runlevel.<br />
  2622.      <br />
  2623. Gli script che di fatto permettono di gestire l'avvio o lo stop di un servizio sono in realtà nella directory <strong>/etc/init.d/</strong> (in questa cartella sono conservati i file binari, eseguibili, dei demoni installati) e possono essere utilizzati direttamente dall'utente per gestire i singoli processi.      <br />
  2624.      <br />
  2625. I file presenti nelle cartelle dei runlevels <strong>/etc/rcX.d</strong> (X è il numero del runlevel) sono in realtà dei link ("symlink") agli script nella cartella <strong>/etc/init.d/</strong>.      <br />
  2626. Tali link sono preceduti da una S ("start") o una K ("Kill"), seguite da un numero. Le applicazioni precedute da "S" verranno avviate nel relativo runlevel.      <br />
  2627.      <br />
  2628. Attualmente la documentazione in rete per upstart è piuttosto scarsa, ed in realtà, a meno che non abbiate delle necessità particolari, è piuttosto difficile che abbiate mai la necessità di ritoccare i file di configurazione di upstart e i demoni da avviare.      <br />
  2629. <br />
  2630. <div style="white-space:pre; margin:left:auto;margin-right:auto; margin-top:1em; margin-bottom:1em; text-align:center">* * *</div><br />
  2631. Qualunque sia il runlevel usato, vi possono essere delle operazioni che voi eseguite spesso in riga di comando, e magari preferireste che il sistema all'avvio le eseguisse in automatico.      <br />
  2632.      <br />
  2633. Aggiungete il comando che vi interessa nel file <strong>/etc/rc.local</strong> inserendolo prima della riga "Exit 0".      <br />
  2634. <br />
  2635. <div style="white-space:pre; margin:left:auto;margin-right:auto; margin-top:1em; margin-bottom:1em; text-align:center">* * *</div><br />
  2636. C'è un altro metodo per avviare applicazioni in automatico in GNOME, è un metodo molto semplice ed è quello che più vi consiglio.      <br />
  2637.      <br />
  2638. Basta andare nel menu "Sistema --> Preferenze --> Sessioni --> Programmi d'avvio" e qui aggiungere il comando che intendiamo avviare.      <br />
  2639.      <br />
  2640. Il sistema automaticamente aggiungerà il comando da voi inserito in un file nella cartella "<strong>/home/NomeUtente/.config/autostart/</strong>".      <br />
  2641.      <br />
  2642. Ad esempio, basta aggiungergli "<strong>/usr/bin/gdesklets</strong>" per fare in modo che le <strong>gdesklets</strong> (sono dei piccoli tools per GNOME, da installare con Synaptic), vengano avviate in automatico ad ogni avvio di GNOME.<br />
  2643. <br />
  2644. <a href="http://etnablog.altervista.org/linux/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  2645. ]]>
  2646. </description>
  2647. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  2648. <guid>http://etnablog.altervista.org/linux/boot-del-sistema-e-avvio-automatico-di-applicazioni/</guid>
  2649. </item>
  2650. <item>
  2651. <title>Audio, midi su Linux</title>
  2652. <link>http://etnablog.altervista.org/linux/audio-midi-su-linux/</link>
  2653. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Dodicesima parte)</i></p>
  2654. <br /> Driver comunemente usati da linux per comunicare con la vostra scheda audio sono i driver "<strong>ALSA</strong>" (Advanced Linux Sound Architecture).      <br />
  2655. ALSA è un componente del kernel volto a sostituire le <strong>OSS</strong> (Open Sound System), che sono meno avanzate.<br />
  2656. Le ALSA possono comunque, se ve ne è esigenza, emulare le OSS mediante il programma "<strong>aoss</strong>" che fa parte del pacchetto "<strong>alsa-oss</strong>".<br />
  2657. <br />
  2658. Il controllo dei volumi potete visualizzarlo con il comando <strong>alsamixer</strong>.<br />
  2659. <br />
  2660. Se non riuscite a sentire i file <strong>midi</strong>, molto probabilmente questo succede perchè non avete il modulo installato.<br />
  2661. Fate riferimento al sito della vostra distribuzione (in questo caso Ubuntu) per risolvere il problema, che potrebbe eventualmente spiegarvi come installare un software che si chiama <strong>Timidity</strong> che ha anche una interfaccia grafica molto carina, visualizzabile con un apposito paramentro (" <strong>timidity -ig file.mid</strong> ").      <br />
  2662.      <br />
  2663. Timidity può fare uso di un file <strong>.sf2</strong> ("<strong>soundfont</strong>", è in pratica un archivio con i suoni degli strumenti) che potete salvare in qualsiasi posto del vostro HD, io l'ho messo nella mia <strong>home</strong>.      <br />
  2664.      <br />
  2665. Per fare questo, bisogna configurare Timidity per riprodurre Soundfont esterni.      <br />
  2666. Queste sono le ultime righe del mio file di configurazione di Timidity, adattate per fare funzionare, a titolo di esempio, il soundfont Unison.sf2:      <br />
  2667.      <br />
  2668. <br />
  2669. # source /etc/timidity/freepats.cfg      <br />
  2670. dir /home/attorianzo      <br />
  2671. soundfont unison.sf2 order=0      <br />
  2672. <br />
  2673.      <br />
  2674. Se l'audio in riproduzione del midi è gracchiante o si sente male, provate a cambiare soundfont.      <br />
  2675.      <br />
  2676. <div style="white-space:pre; margin:left:auto;margin-right:auto; margin-top:1em; margin-bottom:1em; text-align:center">* * *</div><br />
  2677. Se non riuscite a far funzionare Timidity ma avete una <strong>scheda audio Soundblaster</strong> potete tuttavia provare questa strada:      <br />
  2678.      <br />
  2679. Anzitutto vi serve un file <strong>.sf2</strong> (<strong>soundfont</strong>), se avete una partizione con windows, potete prelevarne uno da li, ad esempio "windows/system32/drivers/2gmgsmt.sf2".      <br />
  2680.      <br />
  2681. Prendete quel file, copiatevelo dove vi fa comodo, e fate da riga di comando:<br />
  2682. sfxload 2gmgsmt.sf2<br />
  2683. Per quanto riguarda i file midi poi, nel pacchetto "<strong>alsa-utils</strong>" vi sono due utility: <strong>aplaymidi</strong> e <strong>arecordmidi</strong>.      <br />
  2684. Sfruttano i driver ALSA per riprodurre e registrare file midi.      <br />
  2685.      <br />
  2686. Con il comando "<strong>aplaymidi -l</strong>"  ci viene mostrata la  lista di porte  di uscita MIDI presenti nel sistema (per dubbi, fai "<strong>man aplaymidi</strong>" sulla riga di comando).      <br />
  2687.      <br />
  2688. "<strong>arecordmidi -l</strong>"  analogamente ci mostra  le porte MIDI  di ingresso.      <br />
  2689.      <br />
  2690. Una volta letta la porta attraverso "<strong>aplaymidi -l</strong>", potete ascoltare un file midi (nel mio caso la porta che mi interessava era la 25:0, quella di "<strong>Emu10k1 WaveTable</strong>") facendo:      <br />
  2691. aplaymidi -p 25:0 'filemidi.mid'<br />
  2692. Nel mio caso la porta midi era la 25:0, ma può essere diversa ( <strong>-p serve a specificare la porta</strong>).<br />
  2693. <br />
  2694. <a href="http://etnablog.altervista.org/Informatica/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  2695. ]]>
  2696. </description>
  2697. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  2698. <guid>http://etnablog.altervista.org/linux/audio-midi-su-linux/</guid>
  2699. </item>
  2700. <item>
  2701. <title>Schede grafiche e Linux</title>
  2702. <link>http://etnablog.altervista.org/linux/schede-grafiche-e-linux/</link>
  2703. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Undicesima parte)</i></p>
  2704. <br /> "<strong>xorg X11</strong>" (o "<strong>server X</strong>") è il server grafico per il desktop di linux, derivato (open source) da Xfree86 (che invece non ha licenza GPL).      <br />
  2705. E' usato da GNOME, KDE e Xfce.      <br />
  2706. Il file di configurazione di xorg è <strong>/etc/X11/xorg.conf</strong>. E' possibile qui configurare video, tastiera, mouse ed altro.      <br />
  2707.      <br />
  2708. Settando il "protocol" del mouse su "IMPS/2", il "device" su "/dev/psaux" ho risolto un problema del mio mouse PS/2 che sembrava inspiegabilmente ogni tanto impazzire sullo schermo.      <br />
  2709.      <br />
  2710. Se il mouse non funziona, per prima cosa bisogna accertarsi che venga rilevato correttamente dal kernel.      <br />
  2711.      <br />
  2712. I mouse di <strong>tipo PS/2</strong> sono visti come il device <strong>/dev/psaux</strong>. Altri mouse (per esempio gli <strong>USB</strong>) sono visti come <strong>/dev/input (o /dev/input/mice)</strong>.      <br />
  2713.      <br />
  2714. In ogni caso è possibile controllare se un device rappresenta il mouse scrivendo in shell "<strong>cat /dev/psaux</strong>" (se è PS/2 per esempio) controllando l'output del device e muovendo il mouse. Per terminare la sessione premere <strong>Ctrl-C</strong>.      <br />
  2715.      <br />
  2716. E' molto facile che la vostra scheda video, Nvidia o ATI abbia il 3D disabilitato in automatico qui su Ubuntu perchè il produttore non ne ha rilasciato dei driver open source.      <br />
  2717.      <br />
  2718. In questi casi cercate nel sito di Ubuntu le istruzioni specifiche su come fare per abilitarla.       <br />
  2719.      <br />
  2720. Altre cosucce da sapere, in pillole, sulle schede grafiche in generale: <br />
  2721. <ul><br />
  2722. <li><strong>XGL</strong> : acronimo di X over OpenGL. In sostanza è un'architettura creata per sfruttare l'accelerazione hardware 3d delle schede grafiche.</li><br />
  2723. <li><strong>AIGLX</strong> : Accelerated Indirect GLX ("AIGLX"). e' simile a XGL ma è opensource. Almeno fino al momento in cui vi sto scrivendo, le cose stanno così:      <br />
  2724. AiGLX <strong>funziona solo con gli ultimi driver beta di Nvidia</strong>, per le <strong>ATI funziona solo con i driver open</strong> inclusi in Xorg ("mesa"), per cui per ora niente supporto da parte dei driver propretari ATI nei riguardi di AiGLX.      </li><br />
  2725. <li><strong>Compiz</strong> : E' un desktop 3d. Serve a creare degli effetti in 3d molto belli nel vostro schermo, che si abilitano dall'apposita opzione presente nel menù Preferenze -->Effetti Desktop</li><br />
  2726. <li><strong>Beryl</strong> : Era un progetto analogo e derivato da Compiz. Non più supportato       <br />
  2727. <li><strong>fglrx</strong> : è il driver proprietario di ATI, per le sue schede video. Mi pare di capire che XGL funziona bene con fglrx, lo stesso non si può dire, almeno per ora, di AIGLX.</li><li><strong>mesa</strong> : è un driver driver grafico (come fglrx), che è opensource. Questo driver è molto utile per fornire l'accelerazione 3d alle schede di cui non si hanno driver proprietari e/o che siano vecchie (e quindi magari non più supportate dai proprietari).</li><li><strong>Driconf</strong> :  Ã¨ un tool grafico, per la configurazione del Direct Rendering Infrastructure (DRI). Consente di personalizzare i settaggi di prestazione e qualità video del driver opengl. Esso consente di personalizzare i settaggi di prestazione e qualità video del driver opengl .</li></ul> <br />
  2728. <br />
  2729. I comandi che seguono, nella tabella, sono molto importanti:      <br />
  2730.      <br />
  2731. <table border="1"><tr><td class="com">/etc/init.d/gdm restart</td><td>Serve a riavviare GNOME senza riavviare il computer.<br />
  2732. <br />
  2733. GNOME è l'interfaccia grafica in Ubuntu. Se, per un motivo o per un altro sembra essere impazzita, non c'è bisogno di riavviare completamente il computer, riavviate solo GNOME con questa istruzione.<br />
  2734. <br />
  2735. Potete anche utilizzare la scorciatoia <strong>Ctrl-Alt-Backspace</strong>, ma questa scorciatoia potrebbe essere disabilitata.<br />
  2736. <br />
  2737. Per abilitarla, bisogna aggiungere ad xorg.conf le righe:<br />
  2738. <br />
  2739. Section  "ServerFlags"<br />
  2740. Option   "DontZap"   "yes"<br />
  2741. EndSection<br />
  2742. </td></tr><tr><td class="com">fglrxinfo</td><td>Restituisce informazioni sul driver della scheda grafica ATI, se è installata correttamente</td></tr><tr><td class="com">glxinfo | grep rendering</td><td>Se restituisce direct rendering: Yes vuol dire che l'accelerazione 3D è funzionante.</td></tr><tr><td class="com">fgl_glxgears</td><td>Test per vedere se l'accelerazione 3D della scheda grafica è attiva.</td></tr><tr><td class="com">fireglcontrol</td><td>Pannello di controllo per scheda grafica ATI.</td></tr><tr><td class="com">dpkg-reconfigure xserver-xorg</td><td>E' il pannello di configurazione di <strong>Xorg</strong>. Se modificate questo file, attenzione ai valori <strong>HorizSync</strong> e <strong>VertRefresh</strong> nella sezione "<strong>Monitor</strong>". Non modificate questi due valori a meno che non abbiate dato un'occhiata al manuale con le specifiche tecniche del vostro monitor, in quanto <strong>rischiate di danneggiarlo</strong>.</td></tr></table><br />
  2743. <br />
  2744. <a href="http://etnablog.altervista.org/Informatica/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  2745. ]]>
  2746. </description>
  2747. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  2748. <guid>http://etnablog.altervista.org/linux/schede-grafiche-e-linux/</guid>
  2749. </item>
  2750. <item>
  2751. <title>Montare-smontare partizioni</title>
  2752. <link>http://etnablog.altervista.org/linux/montare-smontare-partizioni/</link>
  2753. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Decima parte)</i></p>
  2754. <br /> Ogni sistema operativo ha il suo "<strong>filesystem</strong>", ovvero il suo "modo di scrivere scrivere sull'hard disk" del pc.      <br />
  2755.      <br />
  2756. Diciamo che il filesystem di Windows 9x (Windows 95,98 ecc..) si chiama "<strong>FAT</strong>", quello di Windows XP si chiama <strong>NTFS</strong>.      <br />
  2757.      <br />
  2758. In Linux attualmente il più diffuso filesistem è il "<strong>ext2</strong>" e si sta gia cominciando ad usare il sistema "<strong>ext3</strong>", che è usato ad esempio da Ubuntu Feisty.      <br />
  2759.      <br />
  2760. Linux è capace di leggere e scrivere facilmente un filesystem FAT, per l'NTFS invece sono necessari dei "programmini" che permettano di leggere e scrivere queste architetture, come <strong>NTFS-3G</strong>, che ho sempre usato e non mi ha mai dato problemi.      <br />
  2761.      <br />
  2762. Tenete presente che Linux è "<strong>case sensitive</strong>" (Windows no!), ovvero maiuscole e minuscole nei files sono considerati caratteri assolutamente distinti.      <br />
  2763. Quindi file.txt è diverso da File.txt e anche da FiLe.tXt.      <br />
  2764.      <br />
  2765. Lo spazio di un <strong>hard disk</strong> può essere spezzato in tante parti (definite appunto "<strong>partizioni</strong>"), questo può essere molto utile per svariati motivi, tra cui quello di mettere più sistemi operativi in un solo hard disk, ad esempio mettere Windows e Linux in uno stesso hard disk (e scegliere all'avvio con quale sistema operativo avviare).      <br />
  2766.      <br />
  2767. Per gestire le partizioni, Linux fornisce un utilissimo strumento chiamato "<strong>gparted</strong>". Potete trovare gparted nella lista di Synaptic. Se non c'è in lista, è probabile che vi manchi qualche repository in <strong>etc/apt/sources.list</strong>.      <br />
  2768.      <br />
  2769. Con gparted potete creare nuove partizioni, ridimensionare le esistenti, formattare partizioni secondo il filesystem che vi interessa (<strong>ext3</strong> nel caso di Feisty, ma anche ext2, o persino FAT o altro).      <br />
  2770.      <br />
  2771. La gestione delle unità del sistema qui su Linux è diversa da Windows. Qui su Linux i dischi di sistema (che siano hard disk, lettori CD, DVD, o anche immagini iso), vengono "<strong>montati</strong>" su delle cartelle.      <br />
  2772.      <br />
  2773. Digitate da shell il comando "<strong>mount</strong>", vi uscirà un elenco delle periferiche ("devices") montate. Fra queste righe ve ne sarà una simile a questa:      <br />
  2774.      <br />
  2775. /dev/hda1 on / type ext3<br />
  2776. La particolarità di questa riga è quel segno "<strong>/</strong>" scritto tra le parole "<strong>on</strong>" e "<strong>type</strong>", che è il segno che si usa in linux per indicare il percorso "<strong>root</strong>" ovvero la directory principale, ovvero quello che in Windows era spesso chiamato "<strong>C:</strong>".       <br />
  2777. Dopo "<strong>type</strong>" vi è invece l'indicazione del tipo di filesystem ("<strong>ext3</strong>").      <br />
  2778.      <br />
  2779. Nella tabella che segue vi sono alcuni dei comandi più importanti ed usati, che hanno a che fare con il montare e smontare partizioni:      <br />
  2780. </p><table border="1"><tr><td> <br />
  2781. <div style="white-space:nowrap">mkdir /media/windows2    <br />
  2782. mount /dev/hdc1 /media/windows2/ -t ntfs -o umask=0222</div> </td><td><p>Monta una partizione Windows ntfs <strong>in sola lettura</strong> nella directory  /media/windows2, che avete creato con mkdir. La /dev/hdc1 può non essere quella giusta per  voi, guardate quella giusta dal gestore periferiche di ubuntu.      <br />
  2783.      <br />
  2784. Se vi interessa che la partizione ntfs sia, oltre che in <strong>lettura</strong>, accessibile anche per la <strong>scrittura</strong> la procedura è un pò più complessa e serve NTFS-3G. Vi sono delle guide apposite in rete su come fare.</td></tr><tr><td class="com">mount /dev/hda1 /media/windows/ -t vfat -o umask=000</td><td>Per montare una partizione FAT (non ntfs!) Windows</td></tr><tr><td class="com">umount /media/windows/ </td><td>Per smontare una periferica (in questo caso la partizione Windows, che ho precedentemente montato sulla cartella /media/windows).</td></tr><tr><td class="com">mount Iso_da_montare.iso /media/iso/ -t iso9660 -o loop </td><td><strong>Per montare una iso</strong> in una cartella da voi appositamente creata (in questo caso /media/iso/).       <br />
  2785. Bisogna avere il modulo "loop" aggiunto nel kernel, facendo: <br />
  2786. sudo modprobe loop<br />
  2787. Al termine potete smontare l'ISO facendo sudo umount /media/iso</td></tr><tr><td class="com">sudo gedit /etc/fstab</td><td>Modificare  il file di testo /etc/fstab <strong>per montare le partizioni all'avvio</strong> di ubuntu. In questo modo evitate di dovere rimontare le partizioni ad ogni riavvio.<br />
  2788. <br />
  2789. Se la partizione è <strong>ntfs</strong> aggiungere manualmente la riga:<br />
  2790. <br />
  2791. dev/hda1 /media/windows ntfs umask=0222 0 0<br />
  2792. <br />
  2793. Se  invece è <strong>FAT</strong> e non ntfs aggiungere questa riga:<br />
  2794. <br />
  2795. /dev/hda1 /media/windows vfat umask=000 0 0<br />
  2796. <br />
  2797. Se c'è un cd che usate spesso (ad esempio un vocabolario di lingua straniera su cd), per evitare ogni volta di dovere usare il lettore cd (che è lento) potreste copiarvi il cd sul vostro HD creandovene una immagine <strong>iso</strong> e montarla in fstab in modo che ad ogni avvio del vostro pc questa venga montata in automatico.<br />
  2798. <br />
  2799. Per creare la iso cliccate col pulsante destro sulla icona del vostro cd e fate "<strong>copia disco</strong>" e quindi "<strong>copia disco</strong>" su "<strong>file immagine</strong>".<br />
  2800. <br />
  2801. Fatta l'immagine, create una cartella su cui montarla (ad esempio <strong>/media/iso/</strong>) e aggiungete ad <strong>etc/fstab</strong>:<br />
  2802. <br />
  2803. /percorso/immagine.iso /media/iso iso9660 ro,loop,auto 0 0</td></tr><tr><td><div style="white-space:nowrap">sudo fdisk -l | grep NTFS</div></td><td>Serve per vedere quali sono le vostre partizioni NTFS.</td></tr></table><p><br />
  2804. <br />
  2805. <a href="http://etnablog.altervista.org/Informatica/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  2806. ]]>
  2807. </description>
  2808. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  2809. <guid>http://etnablog.altervista.org/linux/montare-smontare-partizioni/</guid>
  2810. </item>
  2811. <item>
  2812. <title>QEMU, VMWARE, WINE</title>
  2813. <link>http://etnablog.altervista.org/linux/qemu-vmware-wine/</link>
  2814. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Decima parte)</i></p>
  2815. <br /> Con <strong>qemu</strong> e <strong>vmware</strong> potete creare dei "pc virtuali", in cui fare girare, se volete, un sistema operativo diverso da quello che usate normalmente.      <br />
  2816.      <br />
  2817. In pratica create, all'interno del vostro pc, un pc del tutto "virtuale", con una sua scheda grafica, una sua scheda audio, una sua scheda di rete, un suo CD-ROM, un suo hard-disk ecc.. ecc (tutto rigorosamente "virtuale")..      <br />
  2818.      <br />
  2819. In uno di questi pc virtuali potete fare girare quello che volete, Windows 2000, Windows XP e, perchè no, un' altra distribuzione di Linux.      <br />
  2820.      <br />
  2821. Avviando uno di questi pc virtuali Windows, potete a tutti gli effetti installare del software Windows all'interno del vostro pc che di normale ha invece Linux.      <br />
  2822.      <br />
  2823. Fra tutti i software di "virtualizzazione", Vmware sembra essere, almeno per ora, il più funzionante e performante.      <br />
  2824.      <br />
  2825. Gli altri software di virtualizzazione, come <strong>qemu</strong>, vanno tenuti d'occhio nel tempo perchè migliorano sempre di più in fatto di stabilità, affidabilità e velocità.      <br />
  2826.      <br />
  2827. Qemu è opensource, quindi liberamente scaricabile ed usabile, Vmware è invece un prodotto proprietario, e ve ne sono diverse versioni.      <br />
  2828.      <br />
  2829. Vmware "<strong>player</strong>" è un software gratuito, la versione "<strong>Server</strong>" è pure gratuita (da poco tempo a questa parte), e la versione "<strong>Workstation</strong>" che invece è a pagamento.      <br />
  2830.      <br />
  2831. Se vi interessa tutto questo per fare girare software Windows in Linux, tenete conto di due cose: tanto più il vostro pc è veloce, tanto meglio girano questi software di virtualizzazione, tanto più potete permettervi di usare software pesante.      <br />
  2832.      <br />
  2833. Io devo dire che ho provato <strong>Vmware Workstation</strong>, in versione prova dimostrativa, ma non sono rimasto soddisfattissimo.. La velocità è piuttosto limitata (il mio pc non è velocissimo, è un Celeron 2.4 Ghz).       <br />
  2834.      <br />
  2835. Non ho mai installato un'apposito tool di strumenti per Vmware che si chiama "<strong>Vmware tools</strong>" che servirebbe a migliorare molte cose, tra cui la qualità della grafica.      <br />
  2836.      <br />
  2837. Tuttavia non immaginatevi mai chissà che cosa da Vmware.      <br />
  2838.      <br />
  2839. Tutta un'altra musica è <strong>Wine</strong>, un software che permette di "adattare" il software per Windows qui su Linux.      <br />
  2840.      <br />
  2841. Spesso la velocità di un software "emulato" da Wine è pari o superiore alla velocità dello stesso software che gira su Windows.      <br />
  2842.      <br />
  2843. Il grosso problema di Wine è che, almeno fino al momento in cui vi sto scrivendo, è ancora un prodotto piuttosto lontano dall'essere perfetto.      <br />
  2844.      <br />
  2845. I software per Windows, fatti girare su Wine: possono funzionare bene, possono funzionare così così, o possono non funzionare.      <br />
  2846.      <br />
  2847. Possono arrivare ad installarsi ma non partire, o neppure arrivare a completare l'installazione.      <br />
  2848.      <br />
  2849. L'installazione di qualcosa su Wine può essere semplicissima e non darvi alcun problema, oppure bisogna ricorrere a diversi trucchetti, a volte anche molto complessi, tra cui quello di installare il software prima nella vostra partizione Windows (<strong>usando Windows</strong>), e poi riavviare in Linux, leggere attraverso Linux la partizione Windows dove avete installato il programma per ricopiare nella cartella di Wine le cartelle del prodotto installato (e i suoi file di registro) qui su Linux.      <br />
  2850.      <br />
  2851. Non vado oltre perchè ogni software ha spesso dei trucchetti tutti propri per partire, e vi sono dei siti sani che vi spiegano soltanto come fare partire anche uno solo di questi software su Wine.      <br />
  2852.      <br />
  2853. I vostri siti di riferimento sono in primo luogo quello dello stesso Wine, in cui vi è la sezione " <a href="http://appdb.winehq.org/">App Db</a> " (in cui il software che gira meglio su Wine è raccolto in una categoria definita "<strong>platinum</strong>"), e il sito di " <a href="http://frankscorner.org/">Frank's Corner</a> ", che sono pieni di consigli per voi.      <br />
  2854.      <br />
  2855. Wine migliora sempre di piu, sempre più software riesce a partire, e in futuro dovrebbe dare sempre meno noie. Attualmente Wine è giunto alla versione <strong>0.9.43</strong>.      <br />
  2856.      <br />
  2857. Fra i programmi Windows che partono su <strong>Wine</strong> ricordiamo: Dreamweaver, flash, Office, Picasa, Google-earth, Photoshop CS, ma anche videogiochi come Call Of Duty ed Age of Empires.<br />
  2858. Alcuni comandi utili:<br />
  2859. </p><table border="1"><tr><td style="white-space:nowrap">qemu -hda /home/nome_utente/vmware_img/windows.vmd<br />
  2860. k -m 192 -win2k-hack</td><td>Avviare l'immagine di un hard disk</td></tr><tr><td>qemu -boot d -cdrom /dev/hdd</td><td>Avviare da un cdrom</td></tr><tr><td class="com">qemu -m 512M -boot c -cdrom /dev/hdb -hda nome-file.img -soundhw all</td><td>Suono abilitato</td></tr></table><p><br />
  2861. <br />
  2862. Se disinstalli vmware player ricordati di cancellare la directory /etc/vmware e anche /usr/lib/vmware.<br />
  2863. <br />
  2864. </p><table border="1"><tr><td style="white-space:nowrap">wine uninstaller</td><td>Per disinstallare programmi installati con Wine</td></tr><tr><td class="com">winecfg</td><td>Configurazione di Wine. Qui potete scegliere che versione windows usare (Win98? Win 2000? XP?).<br />
  2865.    <br />
  2866. Fate attenzione alla sezione del pannello chiamata "<strong>override</strong>", vi è una lista selezionabile di dll.<br />
  2867. <br />
  2868. Non riuscite a fare partire il programma che vi interessa ma riuscite a capire quale dll potrebbe determinare l'incompatibilità?      <br />
  2869.      <br />
  2870. Cercate se quella dll è presenta nella lista override. E' presente? Avete una copia di Windows originale installata in una partizione del vostro pc?      <br />
  2871.      <br />
  2872. Copiate la <strong>dll originale</strong> di Windows nella cartella di Wine corrispondente (cercatela nella vostra <strong>/home/nome_utente/.wine</strong>, dovreste trovarla) e segnalate da quel pannello che ne avete effettuato l'override.      <br />
  2873. </td></tr></table><p><br />
  2874. <br />
  2875. <a href="http://etnablog.altervista.org/Informatica/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  2876. ]]>
  2877. </description>
  2878. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  2879. <guid>http://etnablog.altervista.org/linux/qemu-vmware-wine/</guid>
  2880. </item>
  2881. <item>
  2882. <title>Stampe in Linux</title>
  2883. <link>http://etnablog.altervista.org/linux/stampe-in-linux/</link>
  2884. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Nona parte)</i></p>
  2885. <br /> Linux si serve di <strong>CUPS</strong> (Common Unix Printing System) per gestire le code di stampa ed inviare i dati alle stampanti (CUPS è un "server di stampa").<br />
  2886. <br />
  2887. Di solito trovate CUPS già installato (pacchetti cupsys e cupsys-client).<br />
  2888. <br />
  2889. Un'interfaccia per gestire CUPS è fornita da GNOME stesso sottoforma di un pacchetto chiamato gnome-cups-manager che di solito trovate già installato nel vostro sistema. <br />
  2890. <br />
  2891. Tramite gnome-cups-manager potete modificare la qualità di stampa, numero di pagine per foglio ed altro.<br />
  2892. <br />
  2893. Il vero pannello di impostazione di CUPS però è raggiungibile dal vostro browser (firefox, opera, konqueror o altro browser), inserendo l'indirizzo "<strong>http://localhost:631/</strong>" nella URL.<br />
  2894. <br />
  2895. Non mi è mai capitato di avere problemi particolari con CUPS, eventualmente sappiate che il suo file di configurazione è <strong>/etc/cups/cupsd.conf</strong> ; non ho mai avuto bisogno di modificarlo manualmente.<br />
  2896. <br />
  2897. Di solito gestisco le stampe usando il gnome-cups-manager, tuttavia vi confesso che non gestisce (almeno fino al momento in cui vi sto scrivendo) il modulo di stampa di giro automatico del foglio per stampa doppia faccia della mia stampante HP, funzione che invece è presente in http://localhost:631 .<br />
  2898. <br />
  2899. Vi consiglio comunque, per quanto possibile, di usare una sola delle due interfacce di gestione di CUPS perchè credo che fare regolazioni in entrambe le interfacce crei un pò di confusione nella configurazione della vostra stampante.<br />
  2900. <br />
  2901. Personalmente uso sempre gnome-cups-manager e mi servo di localhost:631 solo per abilitare l'opzione di giro automatico del foglio (quando mi serve) e non per altro.<br />
  2902. <br />
  2903. <br />
  2904. http://localhost:631/ --> E' il <strong>pannello di controllo</strong> di CUPS, eseguite questo link dal vostro browser (Firefox, Opera ecc.. ecc..)<br />
  2905. <br />
  2906. <br />
  2907. <br />
  2908. <a href="http://etnablog.altervista.org/Informatica/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  2909. ]]>
  2910. </description>
  2911. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  2912. <guid>http://etnablog.altervista.org/linux/stampe-in-linux/</guid>
  2913. </item>
  2914. <item>
  2915. <title>Apache2 e vsftpd (server FTP)</title>
  2916. <link>http://etnablog.altervista.org/linux/apache2-e-vsftpd-server-ftp/</link>
  2917. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Ottava parte)</i></p>
  2918. <br /> <strong>Apache</strong> è un server web, <strong>Vsftpd</strong> è invece un server ftp.      <br />
  2919. Servono a chi vuole pubblicare pagine web e files su internet.      <br />
  2920. <strong>Apache</strong> può anche essere utilissimo semplicemente per provare le vostre pagine web, prima di pubblicarle nel vostro spazio web su internet.      <br />
  2921.      <br />
  2922. Apache, ma soprattutto <strong>Vsftpd</strong> possono essere usati per scambiare grossi file attraverso internet, da un pc ad un altro.      <br />
  2923.      <br />
  2924. Apache2 ha, rispetto ad Apache alcune migliorie, e vi dovrebbe bastare sapere che ha anche un modo diverso di gestire la configurazione.      <br />
  2925.      <br />
  2926. Per farsi un server completo apache, bisogna installare da Synaptic i seguenti pacchetti:      <br />
  2927. <br />
  2928. apache2-mpm-prefork: il webserver      <br />
  2929. mysql-server: pacchetto riguardante mysql      <br />
  2930. libapache2-mod-php5: modulo PHP per Apache      <br />
  2931. php5-mysql: estensione MySQL per PHP      <br />
  2932. php5-gd: per installare le librerie "gd"      <br />
  2933. <br />
  2934. <table border="1"><tr><td class="com">sudo /etc/init.d/apache2 stop </td><td>Ferma apache</td></tr><tr><td class="com">sudo /etc/init.d/apache2 start </td><td>Fa partire apache</td></tr><tr><td class="com">sudo /etc/init.d/apache2 restart </td><td>Fa ripartire apache</td></tr><tr><td class="com">sudo gedit /etc/apache2/apache2.conf</td><td><strong>apache2.conf</strong> è il file di configurazione di apache2. Molte opzioni in questo file di testo sono "commentate" (precedute dal simbolo "<strong>#</strong>").<br />
  2935. <br />
  2936. Ricordatevi che qualsiasi modifica voi facciate al file di configurazione, dopo dovrete riavviare apache2 facendo: sudo /etc/init.d/apache2 restart<br />
  2937. Un esempio di modifica è aggiungere queste righe ad apache2.conf:<br />
  2938. <pre><code>
  2939. ExtendedStatus On
  2940. &lt;Location /server-status&gt;
  2941. SetHandler server-status
  2942. Order deny,allow
  2943. Deny from all
  2944. Allow from localhost
  2945. &lt;/Location&gt;
  2946. </code></pre><br />
  2947. Aggiungendo le righe di cui sopra, se nella URL del vostro browser scrivete  <a href="http://localhost/server-status">http://localhost/server-status</a>  potete ottenere numerose informazioni su chi è connesso al vostro server in questo momento (facendo  <a href="http://localhost/server-status?refresh=5">http://localhost/server-status?refresh=5</a>  la pagina si riaggiorna ogni 5 secondi).<br />
  2948. <br />
  2949. La direttiva <strong>ExtendedStatus</strong> quando attivata con l'argomento On permette di ottenere un maggior numero di informazioni.</td></tr><tr><td class="com">sudo gedit /etc/php5/apache2/php.ini </td><td>Nel caso abbiate installato php5 con apache2, questo è il file di configurazione di php5</td></tr><br />
  2950. <tr><td class="com">sudo gedit /etc/apache2/sites-available/default </td><td>Se vi dovesse interessare abilitare il <strong>mod_rewrite</strong> sul vostro server <strong>apache2</strong>, prima di tutto scrivete su shell la riga:<br />
  2951. <br />
  2952. sudo a2enmod rewrite<br />
  2953. Quindi modificate con un editor di testo, tipo gedit, il file <strong>/etc/apache2/sites-available/default</strong>. Qui cercate le righe:<br />
  2954. <pre><code>
  2955. &lt;Directory /var/www/&gt;
  2956. Options Indexes FollowSymLinks MultiViews
  2957. AllowOverride none
  2958. Order allow,deny
  2959. allow from all      
  2960. </code></pre><br />
  2961. E sostituite <strong>AllowOverride none</strong> con <strong>AllowOverride all</strong>.<br />
  2962. <br />
  2963. Quindi riavviate apache con <strong>sudo /etc/init.d/apache2 restart</strong>.      <br />
  2964.      <br />
  2965. Dovrebbe essere così installato il supporto a <strong>mod_rewrite</strong> e alle regole del file <strong>.htaccess</strong>.<br />
  2966. </td></tr></table><br />
  2967.      <br />
  2968. Una volta installato <strong>apache2</strong>, potrete accedere al vostro server web scrivendo <strong>http://localhost</strong> .      <br />
  2969.      <br />
  2970. Dall'esterno, la gente può accedere al vostro server web (e così al vostro sito!) impostando <strong>http://Vostro_ip_pubblico</strong> .      <br />
  2971.      <br />
  2972. Ma come fare a sapere quale è il vostro indirizzo ip pubblico? Vi sono migliaia di siti in rete che servono apposta per dirvi quale è il vostro "<strong>indirizzo ip</strong>".      <br />
  2973.      <br />
  2974. Uno di questi siti è  <a href="http://whatismyip.com">http://whatismyip.com</a> .<br />
  2975.      <br />
  2976. Tutti i computer connessi in rete hanno un indirizzo ip, anche il vostro, e potrebbe essere un indirizzo ip <strong>fisso</strong>, o che cambia ogni volta che accendete il vostro pc (ip "<strong>dinamico</strong>").      <br />
  2977.      <br />
  2978. Attenzione: voi stessi non potete nel vostro browser fare <strong>http://Vostro_ip_pubblico</strong> ed accedere nel vostro stesso pc.      <br />
  2979.      <br />
  2980. Se volete fare una prova del genere, servitevi di siti tipo  <a href="http://anonymouse.org">http://anonymouse.org</a>  per "fingervi" utenti "esterni" al vostro pc.      <br />
  2981.      <br />
  2982. Non funziona? Dall'esterno non riescono ad accedere al vostro sito? Se fate  <a href="http://localhost">http://localhost</a>  invece riuscite ad accedere nel vostro sito?      <br />
  2983.      <br />
  2984. Questo succede perchè Apache si apre all'esterno attraverso la <strong>porta 80</strong>. Assicuratevi che questa porta sia aperta.      <br />
  2985.      <br />
  2986. Per fare questo prima di tutto su shell eseguite il comando "<strong>ifconfig</strong>", che eseguito senza opzioni vi elenca tutte le interfacce di rete nel vostro pc.      <br />
  2987.      <br />
  2988. Eseguendo <strong>ifconfig</strong> otterrete le impostazioni di "<strong>eth0</strong>" (o "eth1" o simile), "<strong>lo</strong>" e magari anche altro.      <br />
  2989.      <br />
  2990. "<strong>eth0</strong>" (o "eth1" o simile) è la vostra scheda di rete.      <br />
  2991.      <br />
  2992. "<strong>lo</strong>" è la "interfaccia logica" (detta anche "interfaccia di loopback"), che viene usata per le configurazioni locali (normalmente ha valore impostato a <strong>127.0.0.1</strong>).      <br />
  2993.      <br />
  2994. Quello che ci interessa, è l'indirizzo indicato in <strong>eth0</strong> (o simile), che è qualcosa tipo <strong>192.168.1.3</strong> o molto simile.      <br />
  2995.      <br />
  2996. Questo è l'indirizzo che dovrete usare nelle impostazioni del vostro router per "NATtare" la porta 80 (cercate nel manuale del vostro router come si creano le regole "NAT").      <br />
  2997.      <br />
  2998. <div style="white-space:pre; margin:left:auto;margin-right:auto; margin-top:1em; margin-bottom:1em; text-align:center">* * *</div><br />
  2999.  <br />
  3000. Se dalla url richiamate una cartella del vostro server apache2, facendo tipo: "http://localhost/nome_cartella" apache potrebbe mostrarvi a video una lista di tutti i file e le sottocartelle (funzione "<strong>directory listing</strong>"), questo può darvi dei problemi di sicurezza se vi interessa proteggere il contenuto di quei file e non volete che nessuno li scarichi.<br />
  3001. <br />
  3002. Questo problema va risolto agendo su un file di configurazione di apache2, <strong>etc/apache2/sites-enabled/000-default</strong> (prima di modificarlo <strong>fatevene sempre una copia di riserva</strong>, e dopo ogni modifica assicuratevi che, se usate htaccess, il reindirizzamento funzioni ancora) , oppure va risolto mediante .htaccess, oppure ancora, la via più rapida e indolore, piazzate un file index.html vuoto all'interno dentro ogni cartella che volete proteggere.<br />
  3003. <br />
  3004. <div style="white-space:pre; margin:left:auto;margin-right:auto; margin-top:1em; margin-bottom:1em; text-align:center">* * *</div><br />
  3005. <br />
  3006. Per quanto riguarda invece il server ftp "<strong>vsftpd</strong>" i comandi piu importanti sono:      <br />
  3007.      <br />
  3008. <table border="1"><tr><td class="com">/etc/init.d/vsftpd stop</td><td>Ferma vsftpd</td></tr><tr><td class="com">/etc/init.d/vsftpd start</td><td>Fa partire vsftpd</td></tr><tr><td class="com">/etc/init.d/vsftpd restart</td><td>Fa ripartire vsftpd</td></tr><tr><td class="com"> gedit vsftpd.conf</td><td>Modificare il file di configurazione di vsftpd</td></tr></table><br />
  3009.      <br />
  3010. Mentre per <strong>apache</strong> per comunicare con l'esterno dovete aprire la <strong>porta 80</strong>, per <strong>vsftpd</strong> è necessario aprire le <strong>porte 20 e 21</strong>.<br />
  3011. <br />
  3012. <a href="http://etnablog.altervista.org/Informatica/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  3013. ]]>
  3014. </description>
  3015. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3016. <guid>http://etnablog.altervista.org/linux/apache2-e-vsftpd-server-ftp/</guid>
  3017. </item>
  3018. <item>
  3019. <title>Gestire files, cartelle, permessi su Linux</title>
  3020. <link>http://etnablog.altervista.org/linux/gestire-files-cartelle-permessi-su-linux/</link>
  3021. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Settima parte)</i></p>
  3022. <br /> In tutti i sistemi *nix (Unix, Linux) esiste l'utente "root", che è l'amministratore del sistema, colui che può fare qualsiasi attività sul pc, compreso cancellare files importanti e modificare partizioni.      <br />
  3023.      <br />
  3024. Alla fine della vostra installazione di ubuntu avete così due utenti: quello che avete impostato voi durante l'installazione e questo utente "root".<br />
  3025.      <br />
  3026. Tradizionalmente in Linux per fare tutte le operazioni importanti si effettua il login come utente "root". Su ubuntu questo utente è stato di default disabilitato dal login e non ha password.      <br />
  3027.      <br />
  3028. Sicchè, gli utenti con i superpoteri sono quelli che fanno parte del gruppo "admin".      <br />
  3029.      <br />
  3030. Questi utenti "admin" (che può anche essere uno solo, non per forza tanti utenti), quando devono fare operazioni pericolose, devono fare precedere tali comandi da "sudo" (verrà richiederà la password).      <br />
  3031.      <br />
  3032. Se fate un utente nuovo, dall'apposito pannellino in "Sistema --> Amministrazione --> Utenti e gruppi", potete dare anche a lui la possibilità di usare "sudo", barrando la casellina che gli assegna i privilegi di amministratore.<br />
  3033. <br />
  3034. L'assegnazione ad un gruppo, come "admin" si può fare anche da riga di comando con:      <br />
  3035. adduser nome_utente admin<br />
  3036. Perchè è importante che lo sappiate fare anche da riga di comando oltre che da pannello? Risposta: Perchè questo potrebbe salvarvi..Fidatevi.      <br />
  3037.      <br />
  3038. Detto questo, altra questione importante su Linux, è che ogni file ha assegnati dei "permessi".<br />
  3039. Ogni file in Linux ha tre parametri di "permessi":<br />
  3040. <ul><li>Utente proprietario (owner) del file</li><li>Gruppo del proprietario</li><li>Altri utenti</li></ul><br />
  3041. <br />
  3042. Per ogni parametro (ricordiamolo, sono tre), va impostato uno di questi valori:      <br />
  3043.      <br />
  3044. <table border="1"><tr><td>0 = Nessun permesso</td><td>-</td> </tr><tr><td>1 = Esecuzione </td><td>(x)</td></tr> <tr><td>2 = Scrittura </td><td>(w)</td></tr> <tr><td>3 = Esecuzione + Scrittura </td><td>(xw)</td></tr><br />
  3045. <tr><td>4 = Lettura </td><td>(r)</td></tr> <tr><td>5 = Lettura + Esecuzione </td><td> (rx , è la somma dei valori 1+4)</td></tr> <tr><td>6 = Lettura + Scrittura</td><td> (rw, 2+4) </td></tr> <tr><td>7 = Lettura + Scrittura + Esecuzione </td><td> (rwx, 1+2+4)</td></tr> </table><br />
  3046.      <br />
  3047. Per cambiare il permesso ad un file (o ad una cartella) si usa il comando <strong>chmod</strong>, esempi:      <br />
  3048.      <br />
  3049. <table border="1"> <tr><td style="white-space:nowrap">chmod 777 -R cartella</td><td>In questo modo abbiamo impostato il permesso di lettura scrittura ed esecuzione ( 4+2+1 = 7 ) rispettivamente per proprietario, gruppo e utenti.<br />
  3050. <br />
  3051. La -R serve per applicare i permessi anche su tutte le sottocartelle e i files all'interno.</td></tr><tr><td class="com">chmod 644 ciccio</td><td>lettura e scrittura ( 4+2 = 6 ) per il proprietario e solo lettura ( 4 ) per gruppo e utenti. Equivalente a chmod u+w file</td></tr><tr><td class="com">chmod 400 file</td><td>Se vogliamo che possa accedere a un file in lettura solo il proprietario (passare quindi da -r--r--r-- a -r--------). Equivalente a chmod go-r file</td></tr><tr><td class="com">chmod 755 cartella</td><td>Così assegni permessi di lettura scrittura esecuzione al proprietario, lettura esecuzione al gruppo,lettura esecuzione agli altri.</td></tr></table><br />
  3052.     <br />
  3053. Per sapere i permessi dei file in una cartella, usando la shell piazzatevi dentro una cartella (usate il comando "cd" per muovervi fra le cartelle), e date il comando:<br />
  3054. ls -l<br />
  3055. Verranno elencati i file presenti nella cartella, ogni riga avrà un aspetto simile a questo:<br />
  3056. drwxr-xr-x   5 root root  4096 2007-01-05 18:08 home<br />
  3057.      <br />
  3058. Come potete vedere, quella è la riga della cartella "home", la prima colonna è quella che ci interessa per sapere i permessi.<br />
  3059.      <br />
  3060. Il primo carattere (d) indica l'attributo, ("d" vuole dire directory), saltatelo.      <br />
  3061. I successivi nove caratteri sono i permessi, vanno letti a 3 a 3, ovvero: (rwx)  (r-x)  (r-x) quindi, in questo caso, è come dire "755" (proprietario, gruppo, altri).      <br />
  3062.      <br />
  3063. La terza colonna e la quarta (root e root) indicano rispettivamente il "proprietario" e il "gruppo" del file.      <br />
  3064.      <br />
  3065. Altri comandi utili ed importanti per file e cartelle:      <br />
  3066.      <br />
  3067. <table border="1"><tr><td class="com">cd</td><td>Il comando cd serve a spostarsi tra le directory.<br />
  3068. <br />
  3069. Ad esempio, facendo "cd /etc" ci si sposta nella directory "etc". "cd .." : serve invece a spostarsi nella cartella superione a quella in cui vi trovate.</td></tr><tr><td class="com">df -h</td><td>Visualizza lo spazio libero rimasto nelle partizioni. Oppure nel pannello "applicazioni-->accessori" di GNOME c'è un analizzatore dello spazio occupato.</td></tr><tr><td class="com">du -s /home</td><td>Restituisce la dimensione totale complessiva di una cartella, in questo caso la cartella "home".</td></tr><br />
  3070. <tr><td class="com">free</td><td>Memoria di sistema libera</td></tr><tr><td style="white-space:nowrap">sudo gedit /etc/fstab</td><td>Vi mostra il file in cui vengono indicati i filesystem utilizzati e le directory ad essi associate.</td></tr><tr><td class="com">gksudo<br />
  3071. kdesu</td><td>Vedi "su" e "sudo". Se dovete avviare applicazioni grafiche con i privilegi di <strong>root</strong> (cioè dell'amministratore del sistema), se usate "<strong>sudo</strong>" potreste avere qualche problema. Usare invece <strong>gksudo</strong> per applicazioni Gnome e <strong>kdesu</strong> per quelle KDE in modo che carichi come root anche le librerie grafiche che servono a quei programmi. Utilizzo tipico: "gksudo nautilus". Facendo così si possono creare e modificare file in cartelle protette senza usare la shell.</td></tr><tr><td>ls -a</td><td>ls serve per elencare il contenuto di una directory. L'opzione -a serve a vedere anche i file nascosti</td></tr><tr><td>mv</td><td>Il comando mv serve per spostare, o rinominare, file e directory.</td></tr><tr><td class="com">rm -r nomecartella</td><td>Rimuove la cartella con il suo contenuto. Il comando rm viene usato anche per cancellare files.</td></tr><tr><td class="com">mkdir nomecartella</td><td>Crea una nuova cartella</td></tr><tr><td>su</td><td>passare ad utente di root. Se la password non va reimpostala con "sudo passwd root"</td></tr><tr><td>sudo</td><td>sudo (SUperuser DO) è un programma che consente di eseguire dei comandi con i privilegi di amministratore (sempre che vi sia abilitato). Facendo <strong>su</strong> si diventa a tutti gli effetti root. sudo invece assume i privilegi di root solo per un tempo limitato (15 minuti, di base).</td></tr><tr><td>which</td><td>Mostra il percorso completo di un file</td></tr></table><br />
  3072.      <br />
  3073. Un'ultima cosa: un file o una cartella, per essere resa <strong>invisibile</strong>, bisogna semplicemente rinominarla con un puntino davanti. Ad esempio la cartella "prova", invisibile sarà ".prova".      <br />
  3074.      <br />
  3075. In Windows, e quindi nei file systems FAT e NTFS, esiste un attributo "h" per rendere il file "invisibile". Qui su linux (file systems ext2, ext3 ecc..), non fuziona l'attributo "h" dal momento che per rendere invisibile file o cartelle si usa il sistema "puntino".      <br />
  3076.      <br />
  3077. Il sistema dei permessi impostati mediante <strong>chmod</strong> NON funziona nei file system NTFS (quindi Windows), dove tutti i file sono di norma leggibili ed eseguibili da tutti.<br />
  3078. <br />
  3079. <a href="http://etnablog.altervista.org/Informatica/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  3080. ]]>
  3081. </description>
  3082. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3083. <guid>http://etnablog.altervista.org/linux/gestire-files-cartelle-permessi-su-linux/</guid>
  3084. </item>
  3085. <item>
  3086. <title>Disinstallare pacchetti su Ubuntu</title>
  3087. <link>http://etnablog.altervista.org/linux/disinstallare-pacchetti-su-ubuntu/</link>
  3088. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Sesta parte)</i></p>
  3089. <br /> <div> Se i pacchetti da voi installati erano dei <strong>.deb</strong>, o dei <strong>sorgenti</strong> installati usando il comando "<strong>checkinstall</strong>", dovrebbero essere facilmente rimovibili usando <strong>Synaptic</strong>.<br />
  3090. <br />
  3091. Se avevate installato compilando dei sorgenti con la forma:<br />
  3092. </div><br />
  3093. <br />
  3094. ./configure      <br />
  3095. make      <br />
  3096. sudo make install      <br />
  3097. <br />
  3098. <div>Cercare dove sono piazzati i sorgenti e provate a disinstallare usando "<strong>make uninstall</strong>".</div><br />
  3099. <div>Se non li trovate, provate a riscaricare i sorgenti (occhio alla versione del pacchetto, che sia assolutamente identico a quello che volete disinstallare) da dove li avevate presi in origine e a dare "make uninstall".</div><br />
  3100. <div>Il "make uninstall" cancella i files da dove sono stati piazzati dopo l'installazione.</div><br />
  3101. <div>Potrebbe non funzionare, dipende se il programmatore ha in origine previsto il "<strong>make uninstall</strong>".</div><br />
  3102. <div>Se non va bisogna andare a cancellare manualmente i file, nel posto dove sono stati installati.</div><br />
  3103. <div>Sempre partendo dai sorgenti, fare "<strong>makefile</strong>" e cercare i file.</div><br />
  3104. <div>Come rimedio "preventivo" a tutto questo, abituatevi, durante la procedura di installazione da sorgenti, ad usare il tool "<strong>checkinstall</strong>" che monitora le fasi di installazione dei programmi da sorgente e ne permette una rimozione molto più semplice.</div><br />
  3105. <br />
  3106. <strong>Se checkinstall non ha funzionato</strong> durante la procedura di installazione, e quindi avete dovuto installare necessariamente con "make install" allora abituatevi a conservare i sorgenti scompattati dentro una apposita cartella "sorgenti", creata da voi, nella vostra home. In questo modo saprete sempre dove andarli a cercare.<br />
  3107. <br />
  3108. <br />
  3109. <a href="http://etnablog.altervista.org/Informatica/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  3110. ]]>
  3111. </description>
  3112. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3113. <guid>http://etnablog.altervista.org/linux/disinstallare-pacchetti-su-ubuntu/</guid>
  3114. </item>
  3115. <item>
  3116. <title>Scompattare ed installare pacchetti su Linux Ubuntu</title>
  3117. <link>http://etnablog.altervista.org/linux/scompattare-ed-installare-pacchetti-su-linux-ubuntu/</link>
  3118. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Quinta parte)</i></p>
  3119. <br /> I file che possono essere eseguiti, qui su linux, non sono quelli con estensione <strong>.exe</strong> (come in windows) ma i <strong>.bin</strong>.      <br />
  3120.      <br />
  3121. Quindi non aspettatevi di trovare file <strong>.exe</strong> qui su linux (a dire il vero, esiste un modo per fare partire software Windows, quindi <strong>.exe</strong>, qui su Linux, vedi la sezione di questa guida " <a href="http://etnablog.altervista.org/linux/qemu-vmware-wine/">Qemu, vmware e wine</a> ").      <br />
  3122.      <br />
  3123. Quello che però realmente cambia da Windows a Linux è il modo in cui si installa il software (programmi, giochi, ecc..).      <br />
  3124.      <br />
  3125. Qui su linux i programmi da installare possono essere di due tipi: "<strong>pacchetti</strong>", oppure "<strong>sorgenti</strong>".      <br />
  3126.      <br />
  3127. I pacchetti hanno estesione <strong>.deb</strong> (per Debian e Ubuntu) o <strong>.rpm</strong> (Red Hat, Suse e altre distribuzioni).      <br />
  3128.      <br />
  3129. Quando di un software da installare avete la possibilità di scegliere fra diversi tipi di pacchetti, (.deb, .rpm), se avete Ubuntu scegliete quelli con estensione <strong>.deb</strong>.      <br />
  3130.      <br />
  3131. Se disponete solo del pacchetto <strong>.rpm</strong> (e non avete .deb), questo potete convertirlo in <strong>.deb</strong> con un programma che si chiama "<strong>alien</strong>".      <br />
  3132.      <br />
  3133. Dal momento che la conversione <strong>da .rpm a .deb</strong> può non essere perfetta, è preferibile quando si può scegliere, il pacchetto <strong>.deb</strong> oppure, installare da "sorgenti".      <br />
  3134.      <br />
  3135. La maniera più semplice di <strong>installare pacchetti</strong> In Ubuntu è installarli dalla funzione "<strong>Aggiungi/Rimuovi</strong>" (che in realtà è un pacchetto che si chiama "<strong>gnome-app-install</strong>") che si trova nel menu "Applicazioni" di GNOME.      <br />
  3136.      <br />
  3137. Vi sono altri programmi per gestire i pacchetti, fra questi c'è "<strong>Aptitude</strong>" (che non si appoggia nè su GNOME nè su KDE), Synaptic (in GNOME) e Adept (in KDE).      <br />
  3138.      <br />
  3139. <strong>Synaptic</strong> si trova nel menù di GNOME "Sistema --> Amministrazione", ed è l'interfaccia grafica per gestire i pacchetti più importante in Debian e Ubuntu.      <br />
  3140.      <br />
  3141. <strong>Adept</strong> è usata da chi possiede, al posto di GNOME, l'interfaccia grafica "KDE" (come ed esempio chi usa la distribuzione "Kubuntu").       <br />
  3142.      <br />
  3143. Synaptic può comunque essere installato in KDE e Adept può essere installato in GNOME infatti tutto il software di KDE e GNOME è interscambiabile.       <br />
  3144.      <br />
  3145. Considerate <strong>Synaptic</strong> come il vostro punto di riferimento in fatto di installazione di software: una enorme lista di programmi e giochi che potete facilmente consultare e in cui rapidamente trovate il software che vi interessa, lo selezionate e lo installate.      <br />
  3146.      <br />
  3147. Da dove proviene tutto questo software? Proviene da delle "liste" (abituatevi al termine "<strong>Repository</strong>") che si trovano in rete e che vengono tenute aggiornate per voi dalla comunità di Debian e Ubuntu (e non solo, potete voi stessi aggiungere altre <strong>repository</strong>..).      <br />
  3148.      <br />
  3149. Queste liste si trovano nel file <strong>/etc/apt/sources.list</strong> e nella cartella <strong>/etc/apt/sources.list.d/</strong>, altre liste possono essere liberate se abilitate da "Sistema --> Amministrazione --> Sorgenti software" anche i sorgenti con restrizione e proprietari (abilitateli tutti).      <br />
  3150.      <br />
  3151. Una cosina da sapere sui repository: siate più o meno certi della provenienza delle liste dei repository da cui attingete pacchetti... Può essere pericoloso per la sicurezza del vostro sistema.      <br />
  3152.      <br />
  3153. I repository teoricamente più sicuri sono quelli rilasciati da Ubuntu stessa. Ubuntu rilascia quattro tipi di repository, separati sulla base del tipo di supporto che è fornito e l'aderenza alla filosofia di Ubuntu. Questi sono:<br />
  3154. <ul><li><strong>Main</strong> (software supportato ufficialmente)</li><li><strong>Restricted</strong> (software supportato ma non disponibile nei termini del software libero)</li><li><strong>Universe</strong> (mantenuto dalla comunità, non ufficialmente supportato)</li><li><strong>Multiverse</strong> (software non libero)</li></ul><br />
  3155.      <br />
  3156. Il CD di installazione di Ubuntu contiene software preso dai componenti <strong>Main</strong> e <strong>Restricted</strong>.<br />
  3157.      <br />
  3158. Per aumentare la sicurezza dei repository, esiste un sistema di "<strong>chiavi</strong>" che vengono fornite dal manutentore dei repository, e che sono necessarie per recuperare il software da questi repository.       <br />
  3159.      <br />
  3160. Non mi dilungo oltre sull'argomento chiavi visto che coloro che rilasciano i repository vi spiegano facilmente cosa scrivere per recuperare questa chiave, vi dico solo che è un'azione svolta dal comando "<strong>gpg</strong>".      <br />
  3161.      <br />
  3162. La prima cosa da fare, quando c'è un programma o un gioco (un "pacchetto") che vi interessa è cercare in Synaptic se il pacchetto è presente.      <br />
  3163.      <br />
  3164. Se il pacchetto che vi interessa è nella lista di Synaptic, installatelo da lì perchè facendo così è veramente probabile che funzioni senza storie.      <br />
  3165.      <br />
  3166. Se non vi funziona, vi consiglio di provare a cercare su internet e nel forum di Ubuntu (o della vostra distribuzione) se qualcuno ha avuto il vostro stesso problema ed insieme lo si risolve.      <br />
  3167.      <br />
  3168. Un'altra cosa da sapere è che esiste un software che si chiama <strong>gdebi</strong>, che vi permette di <strong>scaricare ed installare</strong> da internet i pacchetti .deb <strong>con un semplice click</strong>.      <br />
  3169.      <br />
  3170. I pacchetti installati con <strong>gdebi</strong> ve li ritrovate già pronti ed installati ed, ovviamente, aggiunti alla lista di Synaptic. Comodo no?      <br />
  3171.      <br />
  3172. Se non avete installato <strong>gdebi</strong>, cercatelo in Synaptic ed installatelo.      <br />
  3173.      <br />
  3174. Abbiamo parlato dell'installazione da pacchetti, adesso consideriamo l'installazione da "<strong>sorgenti</strong>".      <br />
  3175.      <br />
  3176. <strong>Installare da sorgenti</strong> significa in sostanza installare direttamente dal codice scritto dal programmatore.      <br />
  3177.      <br />
  3178. I sorgenti sono normalmente compattati (o "compressi") in archivi denominati "<strong>tarball</strong>" ed hanno più comunemente estensione <strong>.tar.gz</strong> , <strong>.tar</strong>, "<strong>tar.bz2</strong>", ma possono anche essere <strong>.rar</strong> , <strong>.zip</strong> o anche altra estensione.      <br />
  3179.      <br />
  3180. In Ubuntu premendo con il pulsante destro sulle icone di questi archivi, potete scompattare i file con un'apposita opzione ("<strong>Estrai qui</strong>", più facile di così? E' la maniera piu rapida di estrarre un archivio).      <br />
  3181.      <br />
  3182. Altrimenti gli archivi possono essere "scompattati" (o "decompressi") usando la "riga di comando" (detta anche "<strong>shell</strong>" o "<strong>terminale</strong>", o "<strong>bash</strong>") mediante il comando "<strong>tar</strong>".      <br />
  3183.      <br />
  3184. Giocoforza, in linux, se si vuole fare qualcosa di un minimo serio, è necessario cominciarsi ad abituare che bisogna imparare a svolgere le comuni operazioni, non soltanto da <strong>GNOME</strong> o <strong>KDE</strong>(cioè attraverso le più comuni interfacce grafiche, che permettono di effettuare molte operazioni usando solo il mouse, come in Windows), ma anche da <strong>Shell</strong>.      <br />
  3185.      <br />
  3186. Fra l'altro, considerate che vi potrebbe capitare un giorno di avere problemi con l'interfaccia grafica, che non si avvierà. In tal caso l'unico modo che avrete per venire fuori dall'inghippo sarà soltanto avviare il vostro sistema in "recovery mode" e sistemare il tutto con i soli strumenti offerti dalla riga di comando.      <br />
  3187.      <br />
  3188. In una ipotesi del genere, o conoscerete i comuni comandi da riga di comando e ve ne uscirete fuori, o vi ricorderete di avere stampato questa guida su carta, leggerete i comandi per muovervi su Shell e ne verrete fuori, o non ne verrete fuori affatto..      <br />
  3189.      <br />
  3190. La <strong>Shell</strong> può essere avviata dal menù di GNOME facendo "<strong>Applicazioni --> Accessori --> Terminale</strong>", oppure con la combinazione di tasti <strong>CTRL+ALT+F1</strong> (fate <strong>CTRL+ALT+F7</strong> per ritornare al Desktop).<br />
  3191. <br />
  3192. Vi consiglio di NON cancellare i sorgenti del software che installate: createvi una apposita cartella chiamata "sorgenti" nella vostra /home/nome_utente/ e metteteli tutti lì dentro. I sorgenti infatti potrebbero tornarvi utili nel caso vogliate disinstallare quell'applicazione (vedi la sezione " <a href="http://etnablog.altervista.org/linux/disinstallare-pacchetti-su-ubuntu/">Disinstallare pacchetti su Ubuntu</a> ").   <br />
  3193.      <br />
  3194. Nella tabella che segue vi sono le più comuni operazioni da eseguire da shell.      <br />
  3195. Notate in particolar modo il comando <strong>apt-get</strong>, col quale potete installare, aggiornare e rimuovere (disinstallare) pacchetti <strong>.deb</strong>.      <br />
  3196.      <br />
  3197. <table border="1"><br />
  3198. <tr><td class="com">alien -d nomefile.rpm</td><td>per convertire pacchetti rpm in .deb.       Se non avete <strong>alien</strong>, scaricatelo da <strong>Synaptic</strong>.</td></tr><tr><td class="com">apt-get clean</td><td>E' molto più  radicale di "<strong>apt-get autoclean</strong>", poichè rimuove dalla cache di apt ogni file .deb, anche quelli relativi ai pacchetti correntemente installati. Generalmente non avete bisogno dei file .deb per i pacchetti installati, quindi potrebbe essere la cosa migliore se avete problemi di spazio.</td></tr><tr><td>apt-get autoremove </td><td>Pulizia pacchetti</td></tr><tr><td>apt-get install nomepacchetto </td><td>Installa il pacchetto. Puoi usare anche il gestore di pacchetti "Synaptic" che si trova nel menu per installare nuovi pacchetti</td></tr><tr><td> sudo apt-get -f install</td><td>Potreste avere bisogno di eseguire questo comando qualora, cercando di installare un pacchetto, vi venga restituito un errore di dipendenze irrisolvibili, nonostante questo pacchetto si trovi in Synaptic. <br />
  3199. <br />
  3200. Può succedere ad esempio, se voi aggiungete nella vostra source.list un repository nuovo che contenga delle versioni aggiornate di pacchetti che avete gia in Synaptic. E' complicato spiegare come e quando questo può andarvi a dare problemi, ma vi basti sapere che con questo comando potreste risolvere i vostri problemi.</td><tr><td>apt-get remove nomepacchetto </td><td>Rimuove il pacchetto (ma non i suoi file di configurazione). Si può usare anche Synaptic per la stessa funzione.</td></tr><tr><td>apt-get --purge remove nomepacchetto</td><td>Eseguendo apt-get remove verranno rimossi i pacchetti, ma non i loro file di configurazione, per eliminare anch'essi è necessario anteporre <strong>--purge</strong> a <strong>remove</strong>.<br />
  3201. <br />
  3202. Tenete bene a mente questa istruzione perchè se avete dei problemi irrisolvibili a <strong>reinstallare</strong> un pacchetto, grazie a questo comando potreste risolvere tutto.</td></tr><tr><td>apt-get update</td><td>Aggiorna la lista dei pacchetti disponibili dai repositories.      <br />
  3203. <br />
  3204. Da eseguire in special modo ogni volta che avete cambiato le "liste dei repositoires", tipo <strong>/etc/apt/sources.list</strong>. Dopo avere eseguito questo comando è probabile che nella lista di Synaptic troviate del software nuovo da scaricare, che prima non avevate.<br />
  3205. <br />
  3206. E' consigliabile eseguire l'update periodicamente per essere sicuri che le proprie liste rimangano sempre aggiornate.</td></tr><tr><td>apt-get upgrade</td><td>Aggiorna tutti i pacchetti installati.<br />
  3207. <br />
  3208. Ã\x88 anche possibile aggiornare un singolo pacchetto attraverso l'esecuzione del comando: apt-get upgrade nomepacchetto</td></tr><tr><td>apt-get install build-essential</td><td>Build-essential è un pacchetto che si trova nei repository. In questo pacchetto vi stanno i compilatori di base, <strong>gcc, make, g++</strong> e altro</td></tr><tr><td style="white-space:nowrap">apt-get install linux-headers-`uname -r`</td><td>Versione kernel in uso</td></tr><tr><td>dpkg --list</td><td>Elenca tutti i pacchetti installati</td></tr><br />
  3209. <tr><td>dpkg --list | grep gnome </td><td>Elenca tutti i pacchetti "gnome" installati.<br />
  3210. <br />
  3211. <strong>dpkg</strong>  Ã¨ un gestore di pacchetti Debian. <strong>APT</strong> è considerato un gestore di pacchetti più avanzato rispetto a <strong>dpkg</strong></td></tr><br />
  3212. <tr><td class="com">dpkg-reconfigure nome_pacchetto</td><td>Problemi con un pacchetto, dovrebbe risolverlo. Tipo reinstallazione</td></tr><tr><td class="com">tar -xvzf file.tar.gz </td><td>Scompattare tar.gz o tar.gz2. "<strong>x</strong>" è per estrarre, "<strong>v</strong>" sta per "verbose" cioè visualizza i file che vengono estratti, "<strong>z</strong>" è per filtrare l'archivio con gzip, "<strong>f</strong>" è perchè è un file archivio. </td></tr><tr><td style="white-space:nowrap">find . -name "*.tar" -exec tar xvf {} ;</td><td>Questo comando è utile se dovete decomprimere molti archivi tutti in una volta. Cerca (find) tutti files che finiscono per .tar (-name "*.tar") e per ognuno di questi ({}) esegue il tar xvf (-exec)<br />
  3213. <br />
  3214. La direttiva -exec deve terminare per ;</td></tr></table><br />
  3215. <div><br />
  3216. Se dovete scompattare un archivio <strong>.rar</strong> ed avete difficoltà, potrebbe essere perchè dovete installare l'apposito pacchetto "rar" da <strong>Synaptic</strong>. Controllate da Synaptic se l'avete installato, altrimenti installatelo.      <br />
  3217.      <br />
  3218. Quando del pacchetto che vi interessa non avete il .deb ma avete i "sorgenti", vi è una tipica procedura in linux per installarli, che è composta da tre comandi, da eseguire uno dopo l'altro:<br />
  3219. <br />
  3220. ./configure      <br />
  3221. make      <br />
  3222. sudo make install      <br />
  3223. <br />
  3224. in cui:<br />
  3225. <table border="1"><tr><td class="com">./configure </td><td>Con <strong>./configure</strong> viene lanciato un script che si occupa di controllare se il sistema risponde ai requisiti richiesti come librerie e programmi (per esempio dei compilatori).<br />
  3226. Si occupa anche di creare il <strong>Makefile</strong>, un file contenente delle variabili settate da <strong>./configure</strong> (come la directory dove verrà installato il programma e il percorso delle librerie necessarie alla compilazione).<br />
  3227. E' in questa fase che avvengono i maggiori problemi di installazione da sorgente. Infatti una libreria mancante causa quasi sempre un'errore e quindi l'interruzione del <strong>./configure</strong>.<br />
  3228. <br />
  3229. Anzichè scrivere semplicemente ./configure, potete anche scrivere:./configure --prefix=/usr/local/--prefix farà in modo che ./configure crei un makefile tale che il programma verrà installato dentro la cartella da noi indicata, in questo caso /usr/local/.</td></tr><tr><td>make</td><td><strong>Make</strong> è il programma che si occupa di analizzare il file <strong>Makefile</strong> creato da <strong>./configure</strong> e di compilare il programma.<br />
  3230. Ma cosa ha di diverso il comando make dal comando <strong>gcc</strong>? <br />
  3231. Make è concepito per compilare interi programmi, e ogni buon <strong>grosso</strong> programmone che si rispetti, è costituito da tanti, anche tantissimi file, magari di centinaia di mega, e compilare tutta questa roba può richiedere molto tempo.<br />
  3232. Make fa questo lavoro per voi: spulcia le relazioni dei file che compongono il programmone nel "makefile" creato da ./configure e compila per voi tutta quella gran mole, generando dei file ".o" ("oggetto"), da ogni file sorgente e da questi, alla fine, ricava il da voi tanto desiderato <strong>file eseguibile</strong>.<br />
  3233. <br />
  3234. Se anzichè "installare" state "reinstallando" sopra una precedente installazione del programmone, magari perchè volete semplicemente <strong>aggiornarlo</strong>, può capitare che "make" vi pianti in asso con un errore che non riuscite a capire..<br />
  3235. Questo perchè make si ricontrolla ogni file sorgente e capisce, se dall'epoca ultima vostra compilazione, il file è cambiato oppure no e solo i file modificati saranno ricompilati, facendovi risparmiare moltissimo tempo. Ma allora perchè questo errore? Capita MOOOLTO di rado, tipo quando vi ricompilate il kernel o cercate di riaggiornare qualcosa con il metodo "svn". <br />
  3236. <br />
  3237. E' complicato da spiegare il perchè questo errore si verifichi in queste situazioni, ma vi basterà sapere che la situazione si risolve facilmente: prima di eseguire il comando "make", scrivete: make cleanCon questo comando vengono eliminati i precedenti file ".o" e potete fare una reinstallazione bella pulita del programmone..<br />
  3238. </td></tr><tr><td class="com">sudo make install</td><td><strong>Make install</strong> si occupa di andare ad installare (tramite il comando <strong>make</strong>) il programma sul nostro sistema.</td></tr></table><br />
  3239. <div><br />
  3240. Quella appena descritta è la procedura "classica" per installare un file a partire dai sorgenti. <br />
  3241.      <br />
  3242. In generale un programma in Linux, installato a partire da pacchetto o da sorgenti, sostanzialmente si sparpaglia fra le diverse cartelle di sistema di Linux.      <br />
  3243.      <br />
  3244. I file di configurazione di questo programma, ad esempio, finiranno nella cartella "<strong>/etc/</strong>", che per convenzione è fatta apposta per contenere i file di configurazione del software che viene installato.      <br />
  3245.      <br />
  3246. I file che non saranno soggetti ad ulteriori modifiche (quindi il programma vero e proprio) finiscono in genere in una qualche sottocartella di "<strong>/usr/share/</strong>" o "<strong>/usr/local/</strong>", mentre i file che subiscono modifica vanno in genere sotto "<strong>/var/</strong>".      <br />
  3247.      <br />
  3248. Il file per lanciare il programma, ovvero  "l'eseguibile", va in genere in "<strong>/bin/</strong>", le librerie vanno in genere sotto "<strong>/usr/lib/</strong>" o (piu raramente), sotto "<strong>/usr/libexec/</strong>".      <br />
  3249.      <br />
  3250. Come potete vedere il programma si sparpaglia, ma in modo "razionale". Segue una logica che è regolata da uno standard chiamato "<strong>Filesystem Hierarchy Standard</strong> (FHS)".      <br />
  3251.      <br />
  3252. Tuttavia a volte può capitare di avere qualche problema nel disinstallare il software, o perchè il programmatore del software non ha pensato a un sistema per la disinstallazione, o perchè comunque sia non riusciamo a rintracciare tutti i file installati.      <br />
  3253.      <br />
  3254. Proprio per questo motivo è consigliata in Ubuntu una procedura di installazione da sorgenti che è diversa dalla solita triade di comandi "./configure && make && make install", e questa procedura è: </div><br />
  3255. <br />
  3256. sudo auto-apt run ./configure      <br />
  3257. sudo make      <br />
  3258. sudo checkinstall      <br />
  3259. <br />
  3260.      <br />
  3261. <table border="1"><br />
  3262. <tr><td style="white-space:nowrap">auto-apt run</td><td>"auto-apt run" serve ad eseguire un comando ma sotto il controllo di auto-apt.<br />
  3263. <br />
  3264. <strong>Auto-apt</strong> serve a fare in modo che se il programma che state installando manca di qualche file (in gergo si dice "ha problemi di dipendenze"), lui prova a cercare nel database dei pacchetti se esista un pacchetto che abbia il file che gli serve e ci chiederà se può installarlo. Il database può essere aggiornato con " <strong>auto-apt update</strong> ".<br />
  3265. <br />
  3266. Attenzione però di <strong>non fare troppo affidamento</strong> alle capacità di ricerca di auto-apt per la risoluzione delle dipendenze in quanto in realtà piuttosto spesso lui fallisce nella sua ricerca e dobbiamo essere noi stessi a cercare il pacchetto che serve mediante Synaptic (cioè dobbiamo essere noi stessi, manualmente, a "risolvere le dipendenze"). Nonostante non sia infallibile vale sempre la pena di provare ad installare con auto-apt perchè male che vada può solo farci risparmiare del tempo.<br />
  3267. <br />
  3268. <strong>auto-apt</strong> potrebbe non essere installato. In tal caso aprite Synaptic ed installatelo.<br />
  3269. <br />
  3270. </td></tr><tr><td>checkinstall</td><td><strong>checkinstal<br />
  3271. l</strong> tiene traccia di tutti i file installati da <strong>make install</strong> o equivalenti, crea pacchetti Slackware, rpm o deb con tutti i file, e li aggiunge nel database dei pacchetti installati, permettendo di essere facilmente rimossi con il gestore dei pacchetti della distribuzione.</td></tr></table><br />
  3272.      <br />
  3273. Dopo avere digitato "<strong>sudo auto-apt run ./configure</strong>" vedrete che il sistema opererà un controllo sui file che possiede. Se li possiede tutti, alla fine verrà generato il <strong>makefile</strong> che verrà usato dal successivo comando che digiterete, "<strong>sudo make</strong>" (in realtà make potrebbe essere eseguito anche senza "sudo", a meno che i nostri sorgenti non si trovino in una directory protetta da scrittura. Io lo uso lo stesso).      <br />
  3274.      <br />
  3275. Se i file non sono tutti presenti non avrete il makefile per continuare l'installazione. In tal caso riguardatevi tutta la lista di operazioni eseguite su shell dopo il comando "<strong>sudo auto-apt run ./configure</strong>" e cercate cosa è che non trova. A questo punto scaricate voi stessi la roba mancante servendovi di Synaptic. Tutto questo può sembrare noioso ma è il prezzo che si deve pagare, spesso, nell'installazione da sorgenti.       <br />
  3276.      <br />
  3277. A volte può essere difficile capire quale sia esattamente il file che manca.. Ad esempio l'esecuzione del nostro comando " auto-apt run ./configure " potrebbe terminare con un errore del tipo "SDL could not be found". In questo caso lui vi sta dicendo in realtà che ciò che non sta trovando sono le "librerie di sviluppo SDL".       <br />
  3278. Voi cercherete in Synaptic questo fantomatico pacchetto "SDL" che lui non trova e non lo troverete nemmeno voi, perchè in realtà quello che cerca è un pacchetto di nome "<strong>libsdl1.2-dev</strong>".      <br />
  3279.      <br />
  3280. Si perchè in generale normalmente i file che mancano a ./configure in una installazione sono pacchetti di tipo "librerie per sviluppatore", che sono pacchetti che normalmente cominciano con la parola "<strong>lib</strong>" e finiscono con la parola "<strong>dev</strong>".      <br />
  3281.      <br />
  3282. Quindi non appena vi si presenta un problema di dipendenze, partite sempre dal presupposto che molto probabilmente (spesso ma non sempre) il pacchetto che voi state cercando in realtà comincia con "lib" e termina con "dev"..      <br />
  3283.      <br />
  3284. Se nonostante tutto avete ancora dei problemi a capire quale pacchetto manca ed è richiesto per completare una installazione, servitevi delle funzioni di ricerca di questo sito:  <a href="http://packages.ubuntu.com/">http://packages.ubuntu.com/</a> .      <br />
  3285.      <br />
  3286. Utilizzando la procedura consigliata (cioè quella, che fa uso di <strong>auto-apt run, make, checkinstall</strong>), i sorgenti vengono trasformati in pacchetto in futuro facilmente eliminabile da <strong>Synaptic</strong> oppure da <strong>Shell</strong> digitando:</div><br />
  3287. sudo dpkg -r nomepacchetto<br />
  3288. <br />
  3289. <a href="http://etnablog.altervista.org/linux/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  3290. ]]>
  3291. </description>
  3292. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3293. <guid>http://etnablog.altervista.org/linux/scompattare-ed-installare-pacchetti-su-linux-ubuntu/</guid>
  3294. </item>
  3295. <item>
  3296. <title>Gestire i processi in esecuzione e sicurezza web</title>
  3297. <link>http://etnablog.altervista.org/linux/gestire-i-processi-in-esecuzione-e-sicurezza-web/</link>
  3298. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Quarta parte)</i></p>
  3299. <br /> <table border="1"><tr><td class="com">kill -9 "PID"</td><td>in linux ogni processo è identificato in modo univoco da un numero chiamato process ID, o PID. Conoscendo il PID di un processo, con questo comando possiamo chiuderlo. Per ottenere il PID di un processo vedi <strong>ps aux</strong></td></tr><tr><td class="com">ps aux</td><td>Mostra tutti i processi in esecuzione, con il PID, il proprietario e altre informazioni. Preferisco usare "ps aux" rispetto a "top"</td></tr><tr><td class="com">top</td><td>In Linux lo strumento più usato per visualizzare lo stato dei processi è il comando 'ps'.<br />
  3300. <br />
  3301. '<strong>top</strong>' , a differenza di '<strong>ps</strong>', è dinamico (cioè mostra l'utilizzo delle risorse da parte dei processi a intervalli regolari) e offre funzionalità aggiuntive che possono essere di aiuto in caso di eventuali problemi.<br />
  3302. <br />
  3303. Lanciato da riga di comando, top produce un output a monitor diviso in una parte alta, che contiene informazioni generali sul sistema, e in una parte sottostante, che mostra i processi che usano più  Cpu.<br />
  3304. <br />
  3305. Nella prima vengono visualizzati l'ora, il tempo di attività, il numero di utenti loggati e il carico medio di sistema ogni minuto, ogni 5 minuti e ogni 15 minuti (se questi valori sono molto alti c'è qualcosa che non funziona correttamente).<br />
  3306. <br />
  3307. Inoltre sono presenti informazioni sui processi, sul processore, sulla memoria e lo swap.<br />
  3308. <br />
  3309. Accertatevi che non ci siano processi zombie (che riducono le prestazioni della macchina) e che lo swap usato sia a 0 (zero) oppure molto basso (altrimenti abbiamo problemi di memoria).<br />
  3310. <br />
  3311. Nella seconda ci sono le informazioni relative ai processi, ad esempio: il numero del processo (pid), il nome dell'utente proprietario del processo (user), la priorità del processo (pr), il valore nice (ni), l'utilizzo del processore (%cpu), l'utilizzo della memoria (%mem), lo stato del processo (s), il comando utilizzato per avviare il processo (command).<br />
  3312. <br />
  3313. 'Top' accetta una serie di comandi interattivi, lanciati premendo un determinato tasto della tastiera, ad esempio:<br />
  3314. - k + numero processo, termina il processo in questione.<br />
  3315. - r + numero processo, modifica il valore nice di un processo; cioèla sua priorità, da -20 (massima priorità) a 19 (minima priorità).<br />
  3316. <br />
  3317. Quindi un valore nice negativo migliora le prestazioni di esecuzione di un processo rispetto ad uno positivo.<br />
  3318. - f, potete aggiungere o togliere alcuni campi nella tabella processi.<br />
  3319. - s, potete cambiare il tempo che intercorre tra un aggiornamento e l'altro dei valori visualizzati.<br />
  3320. Uscite da 'top' premendo il tasto q.</td></tr><tr><td>locate hpiod </td><td>"locate" serve per cercare un file. In questo caso "hpiod". Locate è un comando velocissimo perchè sfrutta una "database dei file", che ovviamente deve essere aggiornato con il comando "<strong>updatedb</strong>". Se volete cercare un file senza usare nessun database usate "find" al posto di "locate" (attenzione però. find è molto potente ma può essere anche molto lento).</td></tr><tr><td style="white-space:nowrap">fuser -vn tcp 2208</td><td>Se sappiamo di una porta occupata (nell'esempio è la 2208), con questo comando possiamo risalire all'applicazione che la usa.</td></tr><br />
  3321. <tr><td>netstat -atu</td><td>Permette di monitorare l'attività delle porte contro eventuali aggressori. La colonna "state" dichiara lo stato della connessione.<br />
  3322. <br />
  3323. Questa può essere ESTABLISHED(stabilita) se si è connessi o LISTENING se si è in attesa di una connessione.<br />
  3324. <br />
  3325. l' opzione -t mostra i socket TCP, -u mostra gli UDP.</td></tr></table><br />
  3326. <br />
  3327. <a href="http://etnablog.altervista.org/Informatica/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  3328. ]]>
  3329. </description>
  3330. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3331. <guid>http://etnablog.altervista.org/linux/gestire-i-processi-in-esecuzione-e-sicurezza-web/</guid>
  3332. </item>
  3333. <item>
  3334. <title>Le cartelle utilizzate da Linux</title>
  3335. <link>http://etnablog.altervista.org/linux/le-cartelle-utilizzate-da-linux/</link>
  3336. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (Terza parte):</i></p>
  3337. <br /> Nella tabella che segue sono indicate le cartelle più importanti di un sistema <strong>linux</strong>, con alcune delle sottocartelle e dei files più importanti.<br />
  3338. <br />
  3339. Tenete presente che se avete un sistema linux diverso da <strong>Ubuntu</strong>, è probabile (<strong>molto</strong> probabile!) che qualche file (o cartella) possa trovarsi in una sottocartella diversa, ma in linea di massima, fra una distribuzione e l'altra la differenza non è mai troppa (vi cambia molto la vita se il vostro hard disk anziché trovarsi in /media/hda1 si trova in /dev/hda1 ?.. Naaa..:<br />
  3340. <table border="1"><tr><td class="com">/</td><td>Directory generale del sistema, viene chiamata <strong>root</strong> (che è diverso da "utente root", cioè l'amministratore del sistema).</td></tr><tr><td class="com">bin/</td><td>In questa cartella sono contenuti comandi e programmi, e anche "script di shell".</td></tr><tr><td>boot/</td><td>Kernel e altri file indispensabili per avviare Linux. Qualche sottocartella:<ul><li><strong>/boot/grub/menu.lst</strong> Questo è il file di configurazione di GRUB (è il boot loader)</li></ul></td></tr><tr><td>dev/</td><td>Questa cartella contiene degli speciali file, a cui sono collegate periferiche hardware del sistema (attraverso questi "pseudofile" comunichiamo con periferiche, tipo scheda audio, porte USB e altre). Qualche sottocartella:<ul><li><strong>/dev/dsp</strong> : è il famoso "nodo /dev/dsp" che ci permette di comunicare con la scheda audio. Qualunque cosa noi cerchiamo di scrivere in questo file noi la udiamo attraverso la scheda audio.<br />
  3341. Provate a dare da riga di comando:<br />
  3342. <br />
  3343. cat filename &gt; /dev/dsp <br />
  3344. <br />
  3345. filename può essere un file di testo o persino una immagine. Se la scheda audio è installata correttamente dovremmo udire dei suoni dalle casse del pc.<br />
  3346. (in pratica quello che facciamo con quella riga è "direzionare l'output del comando cat", non su video ma bensì su /dev/dsp).<br />
  3347. </li><li><strong>/dev/sndstat</strong> : questo file è un link (o "collegamento") ad un file di testo (<strong> /proc/asound/oss/sndstat </strong>) che contiene informazioni sulla scheda audio. Vedi anche <strong>/proc/asound/cards</strong>.</li></ul><br />
  3348. </td></tr><tr><td>etc/</td><td>File di configurazione dei programmi. Alcune sottocartelle e files: <ul><li> <strong>/etc/apt/sources.list</strong> : contiene la lista delle sorgenti da cui attingere i pacchetti ("repository list").</li><li><strong>/etc/apt/sources.list.d/</strong> : In questa cartella sono contenute altre liste repository.</li><li> <strong>/etc/event.d/</strong> : è la cartella usata da <strong>upstart</strong> (vedi la sezione relativa al  <a href="http://etnablog.altervista.org/informatica/boot-del-sistema-e-avvio-automatico-di-applicazioni/">boot del sistema e l'avvio in automatico di applicazioni</a> ).</li><li> <strong>/etc/esound/esd.conf</strong> : E' un file di testo contenente la configurazione audio di GNOME.</li><li> <strong>/etc/firefox/firefoxrc</strong> : File di configurazione del browser firefox. Se avete problemi con l'audio di firefox, magari con i siti in flash, sostituite la riga FIREFOX_DSP="" con FIREFOX_DSP="aoss", in modo da far usare a firefox i driver "alsa".</li><li> <strong>/etc/fonts/fonts.conf</strong> : In questo file di testo vi è la configurazione dei "fonts", cioè i caratteri che usate.<br />
  3349. <br />
  3350. I "fonts" si trovano, sotto forma di files, dentro alcune cartelle che si trovano nel vostro Hard disk. Quali sono queste cartelle? Sono appunto indicate in questo file di configurazione "fonts.conf".<br />
  3351. <br />
  3352. Se intendete aggiungere un nuovo font, questo va posizionato in una di queste cartelle, poi bisogna lanciare da shell il comando <strong>fc-cache</strong> .</li><li> <strong>/etc/fstab</strong> : In questo file di testo sono elencati i filesystem e i loro punti di mount, in modo da renderli disponibili già all'avvio del sistema.</li><li> <strong>/etc/init.d/</strong> : In questa cartella sono ubicati tutti gli script per fare partire i programmi all'avvio del sistema.</li><li> <strong>/etc/login.defs</strong> : In questo file di configurazione risiede la "configurazione generale del sistema di autenticazione". Si può ad esempio impostare un tempo massimo di validità per le password degli utenti, in modo che le cambino spesso, oppure impostare la variabile d'ambiente "$PATH", che permette di richiamare i comandi residenti in /bin/, o in /usr/X11R6/bin/ (i comandi per la shell grafica), senza necessità di specificarne la posizione.</li><li> <strong>/etc/modules</strong> : Questo file contiene la lista dei moduli che devono essere caricati all'avvio del sistema (per esempio il modulo per la scheda grafica e audio, per la riproduzione dei file midi, modulo per la stampante ecc..). Ogni linea deve contenere il nome di un modulo; le linee vuote o che iniziano per # vengono ignorate.</li><br />
  3353. <li><strong>/etc/passwd</strong> : In questo file di testo è presente la lista degli utenti (se preferite, il "database degli utenti"). Ogni riga è dedicata ad un user ed è scritta nella forma:<br />
  3354. <br />
  3355. Username:Password:UserID:GroupID:Info:Ho<br />
  3356. meDirectory:Shell <br />
  3357. <br />
  3358. Username --> è l'username che l'utente usa nel login<br />
  3359. Password --> una semplice "x". Per motivi di sicurezza le password si trovano in <strong>/etc/shadow</strong> .<br />
  3360. UserID --> Numero identificativo dell'user<br />
  3361. GroupID --> Numero identificativo del gruppo a cui appartiene l'user.<br />
  3362. Info --> Informazioni varie dell'utente, tipo numero di telefono email ecc..<br />
  3363. HomeDirectory --> La directory home dell'utente.<br />
  3364. Shell --> La shell di default dell'utente.<br />
  3365. <br />
  3366. </li><li><strong>/etc/profile</strong> : in questo file e anche in /home/nome_utente/.profile sono contenute le "variabili d'ambiente". In uno dei due file trovate ad esempio la variabile "PATH", che deve contenere il percorso di quei file che volete vengano trovati senza bisogno di specificarne il percorso, ad esempio i file eseguibili contenuti in /usr/bin/.<br />
  3367. <br />
  3368. Altra variabile che potreste un giorno avere bisogno di aggiungere è "LD_LIBRARY_PATH", che deve contenere i percorsi in cui si trovano i file di libreria. Ci sono infatti dei programmi che collocano le loro librerie in percorsi inconsueti, ad esempio /usr/local/lib/ o altro. <br />
  3369. <br />
  3370. La variabile "PS1" serve invece a controllare l'aspetto del prompt (cioè bash, shell, chiamatela come volete).<br />
  3371. <br />
  3372. Potreste anche trovarvi il comando "<strong>umask</strong>", di solito settato a 022. Vi basterà sapere che questo comando (settato a 022) serve a fare in modo che quando un utente crea un file (ad esempio un file di testo), lui solo potrà modificarlo, mentre tutti gli altri utenti NON possono modificarlo (ovviamente root, il padrone assoluto potrà sempre fare quello che vuole, senza mai limitazioni).<br />
  3373. <br />
  3374. </li><li> <strong>/etc/rc0.d.....rc6.d/</strong> : cartelle dei runlevels (vedi sezione  <a href="http://etnablog.altervista.org/informatica/boot-del-sistema-e-avvio-automatico-di-applicazioni/">boot e avvio</a> ).</li><li> <strong>/etc/rc.local</strong> : E' un file di testo eseguito al termine di ogni runlevel. Potete inserire qui delle operazioni che voi eseguite spesso da Shell (o "terminale"), in modo che il sistema le esegua in automatico.</li><li> <strong>/etc/sudoers</strong> : E' il file di configurazione del comando <strong>sudo</strong> è <strong>/etc/sudoers</strong> che è modificabile tramite l'utility <strong>visudo</strong>, che è un editor di testo (come può essere <strong>gedit, vi, nano</strong> o altri) ma con in piu il check della sintassi del file (e quindi evita di salvare il file con degli errori).</li><li> <strong>/etc/shadow</strong> : E' il file in cui vengono salvate, in forma criptata, le password degli utenti ed altre informazioni relative alle password, tipo ultima modifica, durata minima, durata massima, ed altri parametri.<br />
  3375. <br />
  3376. Nei sistemi Unix in passato l'elenco degli utenti con le loro password si trovava nel file "<strong>/etc/passwd</strong>". Oggi in quel file la password viene sostituita da una lettera "x" mentre le password sono contenute nel file "<strong>/etc/shadow</strong>", leggibile solo da root ed in cui le password si trovano criptate in maniera robusta.</li><li> <strong>/etc/timidity/timidity.cfg</strong> : File di configurazione di Timidity. In questo file potete impostare il file .sf2 (soundfont) che dovrà essere usato da timidity per riprodurre i file midi.</li><li> <strong>/etc/X11/gdm/gdm.conf</strong> e <strong>/etc/X11/gdm/gdm.conf-custom</strong> : "gdm" (Gnome Display Manager) permette ad un utente di effettuare il login in un sistema GNU/Linux tramite una piacevole interfaccia grafica dove inserire username, password ed eventualmente scegliere il gestore di finestre da avviare o scegliere di riavviare o arrestare il sistema.<br />
  3377. <br />
  3378. GDM viene distribuito solitamente fra i pacchetti di GNOME (uno dei Desktop Environment più famosi), ed è facilmente configurabile tramite l'utility <strong>gdmsetup</strong> o manualmente modificando i file <strong>/etc/X11/gdm/gdm.conf</strong> e <strong>/etc/X11/gdm/gdm.conf-custom</strong> (operazioni che richiedono i privilegi di root).<br />
  3379. <br />
  3380. GDM viene fatto partire all'avvio del sistema, è quindi fra i programmi avviati nei runlevels.</li><li> <strong>/etc/X11/default-display-manager</strong> : se avete installato sia GNOME che KDE come display manager, è da questo file che scegliete quale dei due deve essere quello usato di default.</li><li> <strong>/etc/X11/xorg.conf</strong> : file di configurazione di xorg. Vedi la sezione " <a href="http://etnablog.altervista.org/informatica/schede-grafiche-e-linux/">scheda grafica</a> " della guida.</li></ul></td></tr><tr><td>home/</td><td>Contiene le cartelle assegnate all'utente/i (tutte tranne quella di root).<br />
  3381. Ogni utente è padrone assoluto nella <strong>sua</strong> cartella, in cui potrà creare o cancellare liberamente file o cartelle.<br />
  3382. Ogni cartella "nome_utente" è di solito ricca di file nascosti (quindi preceduti da un puntino ".", che li rende invisibili). <br />
  3383. Molti di questi file nascosti sono file di configurazione, modificabili dall'utente.<br />
  3384. <ul><li><strong>/home/nome_utente/.local/s<br />
  3385. hare/applications/defaults.list</strong> : questo file defaults.list svolge la stessa funzione di quello presente in /usr/share/applications/defaults.list ma con la importante differenza che questo è contenuto nella home di un utente e di conseguenza eventuali modifiche saranno effettive solo per questo utente. A dire il vero questo defaults.list presente nella home può mancarvi.<br />
  3386. <br />
  3387. Potrebbe allora essere utile crearlo da voi questo file (usando un qualsiasi editor di testo), nel caso che la comoda funzione "apri con" per assegnare l'esecuzione di un tipo di file ad un programma specifico vi dia problemi.<br />
  3388. <br />
  3389. Nella stessa cartella "applications" vi è anche il file mimeinfo.cache, che serve al sistema a tenere traccia di tutti i programmi che possono usare quel determinato tipo di file (invece defaults.list indica il programma da usare di default!).<br />
  3390. Cercate su google il modo di come impostare il file defaults.list, mimeinfo.cache e i file con estensione .desktop presenti nella cartella.</li><li><strong>/home/nome_utente/.profile</strong> : vedi il file /etc/profile </li></ul></td></tr><tr><td class="com">lost+found/</td><td>File persi causa errori del disco e recuperati dal sistema</td></tr><br />
  3391. <tr><td>media/</td><td>La directory "media" contiene le directory di mount. Vedi la cartella "/mnt/"  :<br />
  3392. <ul><li><strong>/media/floppy0 </strong> : floppy disk drive (tipo A: di MS-DOS).</li><li><strong>/media/hda </strong> : hard-disk - principale (o hard-disk "master") , controller 1</li><li><strong>/media/hdb </strong> : hard-disk - secondario (o hard-disk "slave") , controller 1</li><li><strong>/media/hdc </strong> : hard-disk - principale , controller 2</li><li><strong>/media/hdd </strong> : hard-disk - secondario , controller 2</li></ul><br />
  3393. Le partizioni vengono identificate aggiungendovi un numero, esempio "hda1", "hdc1", "hdc5" ecc..<br />
  3394. <br />
  3395. </td></tr><tr><td>mnt/</td><td>Directory di mount delle partizioni dei dischi, dei CD-rom, del floppy, delle cartelle dischi Windows condivise.<br />
  3396. <br />
  3397. Oggi si preferisce usare la directory /media  per fare queste cose.</td></tr><tr><td>opt/</td><td>nella directory /opt dovrebbe finire dentro tutto il software che viene installato non usando l' "installer" ufficiale.<br />
  3398. <br />
  3399. Nel caso Debian tutto quello che è installato non usando i .deb.<br />
  3400. <br />
  3401. Serve a tenere staccato da tutto il resto quello che non viene gestito direttamente dal pacchettizzatore ufficiale.</td></tr><tr><td>proc/</td><td>File virtuali di informazioni sul sistema:<ul><li><strong>/proc/asound/cards</strong> Questo file di testo contiene informazioni sulla scheda audio. Vedi anche <strong>/dev/sndstat</strong>, il comando <strong>alsamixer</strong> e la sezione di questa guida " <a href="http://etnablog.altervista.org/informatica/audio-midi-su-linux/">Audio, midi</a> "</li></ul></td></tr><tr><td>root/</td><td>Directory privata dell'amministratore di sistema. Questa directory non si trova nella cartella /home come quelle degli altri utenti del sistema.</td></tr><tr><td>sbin/</td><td>Contiene comandi e programmi riservati al root.</td></tr><tr><td>tmp/</td><td>Directory per i files temporanei</td></tr><tr><td>usr/</td><td>Contiene tutti i programmi installati. Praticamente il sistema risiede per lo più qui dentro. Alcune sottocartelle:<ul><li> <strong>/usr/bin/ e /usr/sbin/</strong> : contengono file eseguibili usabili dagli utenti (bin) e dall'amministratore (bin e sbin), che non sono strettamente legati al funzionamento base.<br />
  3402. <br />
  3403. Se installate un programma qualsiasi è molto facile che il suo eseguibile finirà proprio in /usr/bin/.<br />
  3404. <br />
  3405. In generale gli eseguibili contenuti in /usr/bin/ e in alcune altre cartelle (per vedere quali sono queste cartelle dove vengono cercati i binari scrivete su shell "<strong>$PATH</strong>". Questo vi mostrerà una lista di cartelle, tra loro separate da ":". Se vi interessasse modificare questa lista, modificate il file "/etc/login.defs".) sono eseguibili senza bisogno che ne dobbiate specificare il percorso completo.<br />
  3406. <br />
  3407. Se non ricordate esattamente come si chiama un comando ma ne ricordate le prime lettere, scrivetele su shell e premete due volte il tasto <strong>[tab]</strong>, è un trucchetto che si usa spesso e fa risparmiare molto tempo.</li><li> <strong>/usr/doc/ e /usr/man/</strong> : Pagine e pagine di documentazione e manuale.</li><li> <strong>/usr/games/</strong> : i file binari (ovvero gli "eseguibili") di videogiochi e programmi educativi vanno spesso in questa cartella o in "/usr/local/games/", e non in "/usr/bin/".</li><li> <strong>/usr/include/</strong> : per gli sviluppatori. Contiene moltissimi file .h .</li><li> <strong>/usr/local/</strong> dovrebbero essere installati (da parte dell'amministratore) tutti quei programmi locali che non appartengono alla distribuzione.</li><li> <strong>/usr/local/games/</strong> : vedi "/usr/games/".</li><li> <strong>/usr/man/</strong> : vedi /usr/doc/.</li><li><strong>/usr/share/applications/defaul<br />
  3408. ts.list</strong> : In base al tipo di file, in questo file di testo è indicato quale è l'applicazione che deve essere eseguita. Ad esempio qui sarà indicato quale è il lettore di default per leggere gli mp3, quale il lettore per i file midi ecc... ecc...<br />
  3409. <br />
  3410. Sempre nella cartella "applications" sono contenuti dei file con estensione .desktop che sono modificabili da comuni editor di testo (tipo gedit, nano o altro). Questi file .desktop permettono di associare per ciascun tipo di file una icona e un programma da eseguire (vedi anche /home/nome_utente/.local/share/applicati<br />
  3411. ons/defaults.list).</li><li> <strong>/usr/share/xsessions/</strong> : In questa cartella stanno i file con estensione .desktop, che sono le "sessioni" con cui potete scegliere di avviare il vostro linux. Le sessioni vi servono quando volete che all'avvio di linux vengano avviate in automatico anche alcuni programmi.<br />
  3412. <br />
  3413. Per fare questo, create una "Sessione" con le applicazioni che vi interessano.<br />
  3414. <br />
  3415. Potete creare tante sessioni se volete, e potete scegliere da quale sessione avviare all'avvio del sistema, dallo stesso pannello che in cui vi si chiede nome utente e password (<strong>GDM</strong>).<br />
  3416. <br />
  3417. Ad esempio, si può creare una sessione <strong>Xgl.desktop</strong> in cui venga avviato il file <strong>/usr/bin/startxgl.sh</strong> (che va creato) che fa partire "Xgl" (con anche GNOME).<br />
  3418. <br />
  3419. Altro esempio è <strong>GNOME.desktop</strong> che fa partire GNOME con il file <strong>/usr/bin/gnome-session</strong><br />
  3420. <br />
  3421. Ma cosa sono questi file con estensione .sh? C'è un'apposita  <a href="http://etnablog.altervista.org/informatica/gli-script-di-shell-i-file-sh/">sezione</a>  in questa guida.</li><li> <strong>/usr/X11R6/</strong> contiene gli eseguibili (/usr/X11R6/bin/), le librerie (/usr/X11R6/lib/) e le pagine di manuale (/usr/X11R6/man/) relative all'ambiente grafico più comunemente noto come "X".</li></ul></td></tr><tr><td>var/</td><td>Contiene i dati che vengono modificati quando il sistema lavora normalmente, i file di log, le directory per le mail di sistema, le code di stampa, i file temporanei e le cache dei programmi. Alcune sottocartelle:<ul><li> <strong>/var/cache/apt/archives/</strong> : in particolare i sistemi derivati da Debian, come Ubuntu, scaricano in /var/cache/apt/archives tutti i pacchetti scaricati con apt-get (o synaptic - la sua gui). Per una installazione desktop, con pochi utenti, il peso di /var dipende quasi esclusivamente dalla cartella dei pacchetti (che periodicamente puo' essere ripulita in automatico).</li><li> <strong>/var/lib/dpkg/info/</strong> : In questa cartella sono contenuti i file <strong>.list</strong>, che contengono le liste dei file di ogni pacchetto installato. Digitate da shell "<strong>less /var/lib/dpkg/info/nomepacchetto.list</strong>" se conoscete il nome del pacchetto del quale vi serve ottenere la lista di tutti i file (in alternativa potete anche vederne la lista da Synaptic).</li><li> <strong>/var/mail/</strong> : contiene messaggi di posta elettronica scaricati da internet o inviati dalla rete locale e non ancora letti.</li><li> <strong>/var/run/</strong>: contiene il PID (numero di identificazione) dei servizi in esecuzione.</li><li> <strong>/var/spool/</strong> : contiene lo spool di stampa, delle email e simili.</li><li> <strong>/var/www/</strong> : se avete installato apache è in questa cartella che va posto il vostro sito.</li></ul><br />
  3422. </td></tr></table><br />
  3423. <br />
  3424. <a href="http://etnablog.altervista.org/linux/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  3425. ]]>
  3426. </description>
  3427. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3428. <guid>http://etnablog.altervista.org/linux/le-cartelle-utilizzate-da-linux/</guid>
  3429. </item>
  3430. <item>
  3431. <title>Introduzione a Linux e ad Ubuntu</title>
  3432. <link>http://etnablog.altervista.org/linux/introduzione-a-linux-e-ad-ubuntu/</link>
  3433. <description> <![CDATA[<p><i>Guida: Passare da Windows a Linux (seconda parte)</i></p>
  3434. <br /> <strong>Linux</strong> non è come Windows. Sono due sistemi operativi diversi con due filosofie completamente diverse.<br />
  3435. <br />
  3436. <strong>Ubuntu</strong> è una distribuzione di Linux, come lo sono anche Debian, Red Hat, Suse, Slackware, Mandriva ed altre.<br />
  3437. <br />
  3438. <strong>Ubuntu</strong> è una parola africana che vuol dire "<strong>Umanità verso gli altri</strong>", ma c'è chi la traduce anche "<strong>Io sono perché noi siamo</strong>", ma soprattutto, Ubuntu, è la distribuzione che uso io, <strong>Ubuntu</strong> è la "<strong>mia distribuzione</strong>".<br />
  3439. <br />
  3440. <strong>Linux</strong> è un sistema sviluppato dalla collaborazione di migliaia e migliaia di persone in tutto il mondo che ogni giorno si incontra nei forum, comunica con newsletter, si aggiorna, si aggrega e porta avanti insieme lo sviluppo di questo sistema operativo e del software che vi gira.<br />
  3441. <br />
  3442. E' gente che gratuitamente crea e contribuisce a mandare avanti quello che a tutti gli effetti è <strong>il più grande progetto comunitario che è stato portato avanti nella storia dell'uomo</strong>.<br />
  3443. <br />
  3444. La gente che usa linux e vi scopre un difetto lo rende noto alla comunità e questo difetto viene corretto.<br />
  3445. <br />
  3446. Se siete esperti informatici voi stessi potete modificare il difetto e ridistribuire il software corretto.<br />
  3447. <br />
  3448. Linux è così da quando è nato.<br />
  3449. <br />
  3450. I passi avanti compiuti dalla <strong>comunità di Linux</strong> sono tali che potreste anche in questo momento sostituire il vostro Windows per la maggior parte delle cose per cui adesso lo usate.<br />
  3451. <br />
  3452. Tutto questo è gratis, và avanti gratuitamente ed è disponibile a tutti.<br />
  3453. <br />
  3454. Se questo non vi interessa è perchè probabilmente siete così abituati ad usare software piratato su Windows che tutto quello che avete vi sembra libero, e vi sembra gratis.<br />
  3455. <br />
  3456. No, non solo Windows non è gratis (chiedetelo a chi il software lo compra veramente..), ma detta legge sul mercato, impone delle regole e fa di tutto per fare in modo di continuare ad essere lei l'unica padrona del mercato.<br />
  3457. <br />
  3458. Come biasimarla? La grande intuizione che permise a Bill Gates di creare il suo vasto impero fù che "i soldi si fanno con il software e non con l'hardware".<br />
  3459. <br />
  3460. Qui però arriva l'<strong>opensource</strong>, cioè il codice aperto e libero a tutti, portato avanti da gente che non vuole denaro, ma soddisfazione personale, e che crede in uno spirito di comunità.<br />
  3461. <br />
  3462. Diciamo le cose come stanno: in Windows c'è del software veramente molto bello, a cui noi ci siamo così tanto abituati che pensare di cambiare ci sembra una follia.<br />
  3463. <br />
  3464. In linux c'è del buon software, a volte superiore a quello in Windows, di certo spessissimo più sicuro di quello presente in Windows...<br />
  3465. <br />
  3466. Non fate l'errore di sottovalutare Linux e l'Opensource però. Il browser più usato al mondo, <strong>Internet Explorer</strong>, è <strong>Microsoft</strong> ed è in assoluto uno dei più pericolosi software per la vostra sicurezza in internet, e <strong>in assoluto il browser che crea più problemi ad una persona che si impegna a creare un sito web</strong>.<br />
  3467. <br />
  3468. Per programmare il web c'è uno standard a cui tutti i browser hanno scelto di attenersi. Chi si avvantaggia di piu da questa collaborazione è, oltre ai webmaster, anche i <strong>disabili</strong>, dato che molte regole sono pensate apposta per rendere loro la vita sul web molto meno dura.<br />
  3469. <br />
  3470. Ovviamente il browser che si attiene meno di tutti a queste regole è proprio <strong>Internet Explorer</strong>, <strong>il più comune browser al mondo</strong>.<br />
  3471. <br />
  3472. Progettare siti web su browser come <strong>Firefox, Opera, Safari</strong> è un gioco, un divertimento. Quando però si prova il proprio sito su <strong>Internet Explorer</strong> sono dolori e si è costretti a rifare tutto e ricercare il modo di far piacere il nostro sito a IE spesso uscendo fuori dagli standard della buona programmazione.<br />
  3473. <br />
  3474. Questo mio piccolo sfogo consideratelo la mia piccola vendetta personale verso questo browser che tanti problemi mi ha creato in quanto webmaster.<br />
  3475. <br />
  3476. <strong>Firefox</strong>, browser opensource, ha strappato a Internet Explorer una quota di mercato mondiale intorno al <strong>20%</strong>, una enormità se considerate che Internet Explorer la gente se lo trova già installato nel suo pc al momento in cui lo compra.<br />
  3477. <br />
  3478. Questo significa che <strong>Internet Explorer anche se la gente ce l'ha</strong> (e l'ha pagato!), <strong>preferisce non usarlo</strong>.<br />
  3479. <br />
  3480. Fatelo anche voi, scaricate ed installate <strong>gratuitamente</strong> Firefox, non permettetegli ancora di fare del mondo ciò che vogliono.<br />
  3481. <br />
  3482. Tornando a Linux.<br />
  3483. <br />
  3484. Il <strong>passaggio da Windows a Linux</strong> può essere per qualcuno praticamente indolore, per altri un gran tribolare.<br />
  3485. <br />
  3486. Dipende dalle vostre esigenze ma alla fine sarete soddisfatti del VOSTRO Linux, scoprirete quanto è un sistema malleabile, flessibile. <strong>Lo adatterete a voi</strong>.<br />
  3487. <br />
  3488. I problemi in Linux sapete spesso da dove derivano? Dal fatto che le case che producono hardware spesso non dedicano grande cura ai driver per linux, rispetto a quanta ne dedichino invece a quelli per Windows.<br />
  3489. <br />
  3490. Questo ci costringe spesso a creare dei giochetti per superare i problemi di configurazione del sistema..<br />
  3491. <br />
  3492. Non si ci può far nulla... Tanto più però Linux continuerà a crescere ed ad essere scelto dalla gente, tanto più ne guadagnerà in considerazione da parte delle case produttrici di hardware ( e anche di software)..<br />
  3493. <br />
  3494. Perchè non fare in modo che il miracolo succeda?...<br />
  3495. <br />
  3496. Un'ultima cosa:<br />
  3497. <br />
  3498. Anziché lamentarci di Linux, dire che può essere più o meno problematico cominciare ad usarlo, configurarlo, dire altre sciocchezze, fermiamoci, e <strong>cominciamo ad impegnarci ed a collaborare</strong>.<br />
  3499. <br />
  3500. <a href="http://etnablog.altervista.org/Informatica/passare-da-windows-a-linux-prima-parte/">Torna al menù principale della "Guida su Linux"</a> <br />
  3501. ]]>
  3502. </description>
  3503. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3504. <guid>http://etnablog.altervista.org/linux/introduzione-a-linux-e-ad-ubuntu/</guid>
  3505. </item>
  3506. <item>
  3507. <title>Passare da Windows a Linux (Prima parte)</title>
  3508. <link>http://etnablog.altervista.org/linux/passare-da-windows-a-linux-prima-parte/</link>
  3509. <description> <![CDATA[<p><i>Guida realizzata da Etnablog</i></p>
  3510. <br /> <div style='width:100%; height:120px; text-align:center; overflow:auto' title="Circuito pubblicitario"><br />
  3511. <br />
  3512. </div><br />
  3513. <br />
  3514. Aggiornato il 03/05/2007<br />
  3515. <br />
  3516. <div style='width:130px; height:610px; text-align:center; float:right; margin:2px;' title="Sponsor"><br />
  3517. <br />
  3518. </div><br />
  3519. <br />
  3520. <div style="text-align:center"> <a href="http://etnablog.altervista.org/misc/Passare-da-Windows-a-Linux-guida-di-Etnablog.pdf">Scarica la versione stampabile della guida (46 pagine formato pdf) <img src="http://etnablog.altervista.org/grafica_sito/pdf-icon.gif" alt="Icona pdf" style="vertical-align:middle"/></a> .</div><br />
  3521. <br />
  3522. <div id="intro">In questa guida  c'è l'indispensabile per usare la distribuzione <strong>Ubuntu Feisty 7.04</strong> e anche qualcosina in più.<br />
  3523. <br />
  3524. Per la maggior parte delle cose può essere usata anche per altre distribuzioni di linux. In tal caso considerate che il percorso di alcuni file potrebbe essere diverso da distribuzione a distribuzione.<br />
  3525. <br />
  3526. E' sicuramente da affiancare ad altre guide più complesse e dedicate ma in sostanza si tratta dei miei appunti personali su molti problemi che ho avuto durante il mio passaggio da Windows a Linux, scritti in forma decente per essere proposti ad altri.<br />
  3527. <br />
  3528. Se avete appena installato Ubuntu e non avete mai avuto Linux prima, vi consiglio di dare una lettura a questa guida. Vi è la soluzione a molti piccoli problemi in cui vi potreste trovare in futuro, e che vi farebbero perdere molto tempo.<br />
  3529. <br />
  3530. Considerate che molte operazioni sui file potreste non trovarle in questa guida in quanto facilmente eseguibili in punta di mouse attraverso <strong>Nautilus</strong> (il file manager di Ubuntu) e gli strumenti di <strong>GNOME</strong> (l'interfaccia grafica di ubuntu).<br />
  3531. <br />
  3532. In caso di errore di tipo "<strong>permesso negato</strong>" oppure "<strong>are you root?</strong>" fare precedere il comando che vi dà l'errore da <strong>sudo</strong> (cerca nella guida a cosa serve).<br />
  3533. <br />
  3534. Questo perchè su linux per tutte le operazioni più pericolose per il vostro sistema, è richiesta la password di "root", cioè dell'amministratore del sistema.<br />
  3535. <br />
  3536. Un'ultima cosa: se questa guida vi sembra più lunga delle altre che trovate in giro per la rete, è perchè <strong>deve essere così</strong>. Linux è un sistema operativo nuovo e <strong>passare da Windows a Linux non è esattamente semplice come cambiare un paio di scarpe</strong> nonostante questo sia quello che molti vogliono farvi credere.<br />
  3537. </div><br />
  3538. <br />
  3539. <br />
  3540. <h2 id="title_menu">Menu:</h2><br />
  3541. <ul> <li> <a href="http://etnablog.altervista.org/linux/introduzione-a-linux-e-ad-ubuntu/">Introduzione a Linux e ad Ubuntu</a> </li> <li> <a href="http://etnablog.altervista.org/linux/le-cartelle-utilizzate-da-linux/">Cartelle utilizzate da linux</a> </li> <li> <a href="http://etnablog.altervista.org/linux/gestire-i-processi-in-esecuzione-e-sicurezza-web/">Gestire i processi in esecuzione e sicurezza web</a> </li> <li> <a href="http://etnablog.altervista.org/linux/scompattare-ed-installare-pacchetti-su-linux-ubuntu/">Scompattare e installare pacchetti</a> </li> <li> <a href="http://etnablog.altervista.org/linux/disinstallare-pacchetti-su-ubuntu/">Disinstallazione di pacchetti</a> </li> <li> <a href="http://etnablog.altervista.org/linux/gestire-files-cartelle-permessi-su-linux/">Gestione files, cartelle e permessi</a> </li> <li> <a href="http://etnablog.altervista.org/linux/apache2-e-vsftpd-server-ftp/">Apache2 E Vsftpd (server ftp)</a> </li> <li> <a href="http://etnablog.altervista.org/linux/stampe-in-linux/">Stampe</a> </li> <li> <a href="http://etnablog.altervista.org/linux/qemu-vmware-wine/">Qemu, Vmware e Wine</a> </li> <li> <a href="http://etnablog.altervista.org/linux/montare-smontare-partizioni/">Montare-smontare partizioni</a> </li> <li> <a href="http://etnablog.altervista.org/linux/schede-grafiche-e-linux/">Schede grafiche e Linux</a> </li> <li> <a href="http://etnablog.altervista.org/linux/audio-midi-su-linux/">Audio, midi</a> </li> <li> <a href="http://etnablog.altervista.org/linux/boot-del-sistema-e-avvio-automatico-di-applicazioni/">Boot del sistema e avvio automatico di applicazioni</a> </li> <li> <a href="http://etnablog.altervista.org/linux/cominciare-a-programmare-c-con-gtk-e-java/">Cominciare a programmare C con GTK e JAVA</a> </li> <li> <a href="http://etnablog.altervista.org/linux/gli-script-di-shell-i-file-sh/">Gli script di shell, i file .sh</a> </li> <li> <a href="http://etnablog.altervista.org/linux/il-passaggio-da-windows-a-linux/">Passare da Windows a Linux</a> </li></ul> ]]>
  3542. </description>
  3543. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3544. <guid>http://etnablog.altervista.org/linux/passare-da-windows-a-linux-prima-parte/</guid>
  3545. </item>
  3546. <item>
  3547. <title>Ingerenza del Vaticano</title>
  3548. <link>http://etnablog.altervista.org/varie/ingerenza-del-vaticano/</link>
  3549. <description> <![CDATA[<p><i>di Margherita Hack</i></p>
  3550. <br />  <img src="http://etnablog.altervista.org/grafica_sito/4all/attention.gif" title="attention.gif" alt="attention.gif"/> Quanto segue proviene dal sito:<br />
  3551. <a href="http://www.geocities.com/priapus_dionysos/ARCI_VARESE_Newsletter_UAAR.html">http://www.geocities.com/priapus_dionyso<br />
  3552. s/ARCI_VARESE_Newsletter_UAAR.html</a> <br />
  3553. <br />
  3554. Indipendentemente da come la pensiate, vale comunque la pena di dagli una lettura...<br />
  3555. <br />
  3556. <strong>Ingerenza del Vaticano</strong><br />
  3557. di Margherita Hack<br />
  3558. Astrofisica, Accademica dei Lincei, Professore Emerito dell'Università di Trieste<br />
  3559. <br />
  3560. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/margherita-hack.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/margherita-hack.jpg" title="margherita-hack.jpg" alt="margherita-hack.jpg" width="100"/></a><br />
  3561. <br />
  3562. \x80\x99Italia è uno Stato laico, che però ospita il Vaticano e questo ha sempre posto e pone di fatto limiti alla laicità. <br />
  3563. <br />
  3564. \x80\x99articolo 7 della Costituzione recita: <strong>â\x80\x9cLo Stato e la chiesa cattolica sono, ciascuno nel proprio ordine, indipendenti e sovrani. I loro rapporti sono regolati dai Patti Lateranensi. Le modificazioni dei Patti, accettate dalle due parti, non richiedono procedimento di revisione costituzionaleâ\x80\x9d</strong>.<br />
  3565. <br />
  3566. \x80\x99articolo 8 recita: <strong>â\x80\x9dTutte le confessioni religiose sono egualmente libere davanti alla legge.<br />
  3567. Le confessioni religiose diverse dalla cattolica hanno diritto di organizzarsi secondo i propri statuti,<br />
  3568. in quanto non contrastino con lâ\x80\x99ordinamento giuridico italiano.<br />
  3569. I loro rapporti con lo Stato sono regolati per legge sulla base di intese con le relative rappresentanzeâ\x80\x9d</strong>.<br />
  3570. <br />
  3571. \x80\x99articolo 33 recita fra lâ\x80\x99altro: <strong>â\x80\x9câ\x80¦Enti e privati hanno il diritto di istituire scuole e istituti di educazione, senza oneri per lo Statoâ\x80¦â\x80\x9d</strong> norma ampiamente disattesa da comuni, province e regioni.<br />
  3572. <br />
  3573. In barba alla laicità dello Stato Italiano il Vaticano si intromette quotidianamente su questioni e situazioni di grande importanza per molti cittadini, facendo pesanti e ripetute pressioni sui politici più legati alla chiesa per la loro fede religiosa e di fatto limitando e ostacolando la libertà di azione del Governo.<br />
  3574. <br />
  3575. Fra i problemi di maggiore importanza sono <strong>il riconoscimento delle unioni di fatto, il testamento biologico e lâ\x80\x99eutanasia, gli ostacoli alla ricerca, come nel caso delle cellule staminali embrionali</strong>.<br />
  3576. <br />
  3577. Da papa Benedetto XVI giungono solo risposte negative a quelle che sono esigenze della società odierna:<br />
  3578. no ai PACS, no al testamento biologico, no allâ\x80\x99eutanasia, no alla ricerca sulle cellule staminali embrionali, no alla pillola abortiva.<br />
  3579. <br />
  3580. <strong>Sempre in conseguenza delle ingerenze della chiesa sono dovute le difficoltà che si incontrano negli ospedali italiani di adottare tecniche contro il dolore, lo scarso uso della morfina per pazienti afflitti da dolori insopportabili, le tecniche di parto indolore, come la epidurale, impiegata normalmente in quasi tutti i paesi industrializzati - forse perché la Bibbia dice â\x80\x9cpartorirai con doloreâ\x80\x9d, forse perché dolore e malattie ci sono mandate da dio?</strong><br />
  3581. <br />
  3582. In questi ultimi tempi Benedetto XVI ha dato un pessimo esempio di mancanza di carità cristiana rifiutando un funerale religioso a Piergiorgio Welby, colpevole di rifiutare come dono di dio una vita non più vita: e penso ai tanti come lui, tenuti in vita artificialmente contro la loro volontà e a quelli ridotti a puri vegetali da anni o addirittura decenni.<br />
  3583. <br />
  3584. Un problema che riguarda ormai qualche milione di cittadini è quello delle unioni di fatto, sia eterosessuali che omosessuali.<br />
  3585. <br />
  3586. Non passa giorno che il papa non scagli anatemi contro queste unioni che, secondo lui, porterebbero alla distruzione della famiglia.<br />
  3587. <br />
  3588. Forse che due persone che si vogliono bene, che si amano e si rispettano, che vogliono affrontare insieme le gioie e le difficoltà della vita, che siano un uomo e una donna, o due uomini o due donne non formano a tutti gli effetti una famiglia?<br />
  3589. <br />
  3590. Perché non devono avere gli stessi diritti e anche gli stessi doveri reciproci delle coppie benedette dallo Stato o dalla chiesa? Mi sembra che persone che vivono insieme liberamente, per il solo vincolo dellâ\x80\x99affetto, costituiscano spesso unâ\x80\x99unione molto più solida di tante famiglie â\x80\x9cregolariâ\x80\x9d che stanno insieme per convenienza.<br />
  3591. <br />
  3592. Perché la chiesa, e non solo la chiesa cattolica, colpevolizza gli omosessuali?<br />
  3593. <strong>Non sa la chiesa che il nascere omosessuali o eterosessuali dipende dal proprio DNA, non è una scelta, è come nascere mancini, anchâ\x80\x99essi una volta colpevolizzati e obbligati a scuola a scrivere con la destra, che era la mano â\x80\x9cbuonaâ\x80\x9d mentre la sinistra era quella â\x80\x9ccattivaâ\x80\x9d?</strong><br />
  3594. <br />
  3595. Unâ\x80\x99altra grave intrusione sulla libertà personale dei cittadini, credenti e non credenti, riguarda il testamento biologico e lâ\x80\x99eutanasia.<br />
  3596. <br />
  3597. Poiché per la chiesa la vita è un dono di dio, che uno sia credente o non credente, deve per forza accettare questo dono. Un vero credente, che ritiene la vita, qualunque essa sia, un dono di dio, accetterà liberamente le sofferenze, ma con quale diritto si pretende di imporle anche a un non credente, a un ateo che non crede nellâ\x80\x99esistenza di dio, o comunque a chi non ritiene la vita un dono di dio e ritiene di dover rispondere non a dio, ma soltanto alle persone che ama e che lo amano?<br />
  3598. <br />
  3599. <strong>La chiesa sembra ritenere che solo chi crede ha unâ\x80\x99etica,<br />
  3600. che non possa esistere unâ\x80\x99Etica Laica o ancora meno unâ\x80\x99Etica Atea...</strong><br />
  3601. <br />
  3602. <strong>Lâ\x80\x99etica religiosa, cioè lâ\x80\x99imposizione di credere e accettare norme dettate dalla chiesa<br />
  3603. non può essere estesa a tutti i cittadini, in uno Stato che si dice laico<br />
  3604. e non fondamentalista cattolico.</strong><br />
  3605. Ã\x88 questa etica fondamentalista che ha portato a quel mostro che è la legge sulla fecondazione assistita.<br />
  3606. <strong>Una legge che mi auguro questo governo rimetta in discussione al più presto perché<br />
  3607. è una legge lesiva della libertà degli individui, è una legge classista, è una legge che mette in pericolo la salute della donna, è una legge che ostacola la ricerca.</strong><br />
  3608. Infatti con questa legge è lo Stato che si sostituisce al medico, entrando nel merito delle procedure terapeutiche, come per esempio lâ\x80\x99obbligo di non creare più di tre embrioni, di proibire lâ\x80\x99esame preventivo dellâ\x80\x99embrione da impiantare, lâ\x80\x99obbligo di impiantare comunque gli embrioni <strong>anche contro la volontà della donna</strong>, un punto chiaramente anticostituzionale, perché non si può imporre un trattamento sanitario a una persona contro la sua volontà; inoltre è una legge che <strong>discrimina fra ricchi e poveri</strong>: chi può andrà allâ\x80\x99estero a fare quello che in Italia non può fare e chi non può dovrà soggiacere a questa legge assurda.<br />
  3609. <br />
  3610. <strong>Lâ\x80\x99etica laica e in particolare lâ\x80\x99etica degli atei</strong>, che non credono in nessuna entità superiore non meglio definita, ma solo nel dato di fatto dellâ\x80\x99esistenza della materia che origina le strutture presenti nellâ\x80\x99Universo, da cui si originano anche gli esseri viventi dai più semplici ai più complessi, <strong>si basa sul rispetto del prossimo, uomo o animale che sia</strong> e può essere riassunta dai comandamenti di Cristo, che certo non era figlio di dio, ma una delle più grandi figure dellâ\x80\x99umanità, che ha preceduto i suoi tempi di molti secoli:<br />
  3611. <strong>â\x80\x9cAma il prossimo tuo come te stessoâ\x80\x9d<br />
  3612. â\x80\x9cNon fare agli altri quello che non vorresti fosse fatto a teâ\x80\x9d</strong>.<br />
  3613. Per attenersi a questi comandamenti non câ\x80\x99è bisogno di credere in dio,<br />
  3614. non lo si fa per la speranza in un al-di-là in cui non si crede,<br />
  3615. <strong>ma solo per un sentimento di fratellanza universale che deriva dalla nostra comune origine<br />
  3616. da quella materia che costituisce lâ\x80\x99Universo</strong>.<br />
  3617. <br />
  3618. Gli attacchi alla Scienza da parte della chiesa hanno una lunga tradizione.<br />
  3619. <strong>Nel 1600 fu mandato al rogo Giordano Bruno</strong> (vedi nota 1), colpevole di ritenere che fossero la Terra e gli altri pianeti a ruotare attorno al Sole e non più la Terra centro dellâ\x80\x99universo, creata da dio per gli uomini,<br />
  3620. e che le stelle fossero altrettanti Soli, come il Sole circondati da pianeti -<br />
  3621. <strong>cosa oggi verificata dalle osservazioni astronomiche</strong>.<br />
  3622. <br />
  3623. Nel 1610 <strong>Galileo</strong> scopre i quattro maggiori satelliti di Giove e lo considera un sistema solare in miniatura, una prova indiretta del sistema copernicano.<br />
  3624. <strong>Per queste idee eretiche Galileo è costretto ad abiurare</strong> (vedi nota 2) ed esiliato nella Villa Il Gioiello dove morì in solitudine nel 1642.<br />
  3625. <strong>Ci sono voluti quasi quattro secoli perché la chiesa lo riabilitasse[.<br />
  3626. <br />
  3627. </strong><strong>Addirittura unâ\x80\x99abissale ignoranza scientifica porta lo scrittore Messori a riabilitare una superstizione come lâ\x80\x99astrologia perché avrebbe previsto con un fenomeno astronomico la venuta di Cristo</strong>.<br />
  3628. Oggi che certe realtà astronomiche sono inoppugnabili, la chiesa attacca le scienze legate allâ\x80\x99origine della vita, come la teoria darwiniana dellâ\x80\x99evoluzione, e poiché è difficile ignorare le numerose evidenze scientifiche<br />
  3629. di questa teoria, si introduce â\x80\x9cil disegno intelligenteâ\x80\x9d che la guiderebbe. O, ancora più gravi perché danneggiano milioni di persone, sono gli attacchi alle moderne tecnologie biomediche, che non solo ostacolano la riproduzione assistita, ma anche vietano la ricerca sulle cellule staminali embrionali che potrebbero in futuro guarire malattie ancora oggi inguaribili.<br />
  3630. <br />
  3631. <strong>Mi auguro da parte del Governo e del centrosinistra una maggior fermezza contro queste continue ingerenze, che si eliminino le feroci assurdità della legge sulla fecondazione assistita e che si mantenga la promessa di fare al più presto la legge per togliere le discriminazioni a cui sono soggette le unioni di fatto, che si eliminino i tanti privilegi anticostituzionali di cui godono scuole e ostelli religiosi</strong>.<br />
  3632. <br />
  3633. ==========================<br />
  3634. ===================<br />
  3635. <br />
  3636. <strong>NOTA 1: â\x80\x9cGiovedì mattina in Campo di Fiore fu abbruggiato vivo quello scelerato frate domenichino da Nola, di che si scrisse con le passate: heretico ostinatissimo, et havendo di suo capriccio formati diversi dogmi contro nostra fede, et in particolare contro la Santissima Vergine et Santi, volse ostinatamente morir in quelli lo scelerato; et diceva che moriva martire et volentieri, et che se ne sarebbe la sua anima ascesa con quel fumo in paradiso.<br />
  3637. Ma hora egli se ne avede se diceva la veritàâ\x80\x9d.<br />
  3638. </strong><strong>Così, in un â\x80\x9cAvvisoâ\x80\x9d da Roma del 17 febbraio 1600, era data notizia dellâ\x80\x99assassinio sul rogo di Giordano Bruno da parte dellâ\x80\x99inquisizione cattolica. Il principale responsabile, il SANTO Roberto Bellarmino, è ancora oggi agli â\x80\x9conori degli altariâ\x80\x9d della chiesa cattolica insieme a moltissimi altri assassini accertatiâ\x80¦</strong><br />
  3639. <br />
  3640. <strong>NOTA 2</strong>: Roma, 22 giugno 1633, lâ\x80\x99umiliante abiura di Galileo Galilei: â\x80\x9cCon cuor sincero e fede non finta abiuro, maledico e detesto li suddetti errori et heresie, e generalmente ogni et qualunque altro errore, heresia e setta contraria alla Santa Chiesa; e giuro che per lâ\x80\x99avvenire non dirò mai più né asserirò, in voce o in scritto, cose tali per le quali si possa haver di me simil sospitione; ma se conoscerò alcun heretico o che sia sospetto dâ\x80\x99heresia, lo denontiarò a questo Santâ\x80\x99Offizio ovvero allâ\x80\x99Inquisitore o Ordinario del luogo dove mi trovarò. Giuro anco e prometto dâ\x80\x99adempire et osservare intieramente tutte le penitenze che mi sono state o mi saranno da questo Santâ\x80\x99Offizio imposte; e contravvenendo ad alcuna delle dette mie promesse e giuramenti, che dio non voglia, mi sottometto a tutte le pene e castighi che sono daâ\x80\x99 sacri canoni et altre costitutioni generali e particolari contro simili delinquenti imposte e promulgate.<br />
  3641. <strong>Così dio mâ\x80\x99aiuti e questi suoi santi vangeli, che tocco con le proprie mani.â\x80\x9d<br />
  3642. Galileo Galilei, vecchio e quasi cieco, fu condannato dal Santâ\x80\x99Ufficio â\x80\x9csoloâ\x80\x9d allâ\x80\x99ergastolo in isolamento agli arresti domiciliari in Arcetri (Firenze). Ci son voluti quasi quattrocento anni e un papa polacco per cominciare a sentire le parole â\x80\x9cscusa e perdonoâ\x80\x9d per questa e altre infinite miserabili infamie ed atrocità commesse dalla chiesa cristiana romana cattolica e apostolica.</strong><br />
  3643. <br />
  3644. <strong>&quot;Compito della Scienza non è aprire una porta all'infinito sapere,<br />
  3645. ma porre una barriera all'infinita ignoranza.&quot;</strong> Il Galileo Galilei di Bertolt Brecht<br />
  3646. <br />
  3647. Fonte:<br />
  3648. <a href="http://www.geocities.com/priapus_dionysos/ARCI_VARESE_Newsletter_UAAR.html">http://www.geocities.com/priapus_dionyso<br />
  3649. s/ARCI_VARESE_Newsletter_UAAR.html</a>  ]]>
  3650. </description>
  3651. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3652. <guid>http://etnablog.altervista.org/varie/ingerenza-del-vaticano/</guid>
  3653. </item>
  3654. <item>
  3655. <title>I Nebrodi</title>
  3656. <link>http://etnablog.altervista.org/nebrodi/i-nebrodi/</link>
  3657. <description> <![CDATA[<p><i>L'indispensabile da sapere per le vostre escursioni..</i></p>
  3658. <br />  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lago-tre-arie.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lago-tre-arie.jpg" title="lago-tre-arie.jpg" alt="lago-tre-arie.jpg" width="100"/></a>  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lago-tre-arie2.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lago-tre-arie2.jpg" title="lago-tre-arie2.jpg" alt="lago-tre-arie2.jpg" width="100"/></a>  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lago-pisciotto.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lago-pisciotto.jpg" title="lago-pisciotto.jpg" alt="lago-pisciotto.jpg" width="100"/></a> <br />
  3659. <br />
  3660. I Nebrodi sono famosi e ben conosciuti qui in Sicilia soprattutto da coloro che amano andare in cerca di funghi e a coloro che amano girare in fuoristrada o mountainbyke su terreni terrosi e accidentati.<br />
  3661. <br />
  3662. I Nebrodi sono meno impervi e difficili rispetto all'Etna. <br />
  3663. <br />
  3664. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/lago-cartolari.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/lago-cartolari.jpg" title="lago-cartolari.jpg" alt="lago-cartolari.jpg" width="100"/></a>  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/dorsale-nebrodi.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/dorsale-nebrodi.jpg" title="dorsale-nebrodi.jpg" alt="dorsale-nebrodi.jpg" width="100"/></a>  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/mitsubishi.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/mitsubishi.jpg" title="mitsubishi.jpg" alt="mitsubishi.jpg" width="100"/></a> <br />
  3665. <br />
  3666. Mentre per recarsi sull'Etna è necessario farsi bene i conti delle scorte di cibo ma soprattutto di acqua, i Nebrodi sono pieni di piccole sorgenti idriche, disseminate lungo il percorso. <br />
  3667. <br />
  3668. Non di rado, mentre ne percorrete i sentieri, trovate la vostra strada solcata da un piccolo corso d'acqua che bisogna attraversare per proseguire.<br />
  3669. <br />
  3670. In pieno relax potete fermarvi alla riva dei numerosi laghi e laghetti, sparpagliati lungo il cammino.<br />
  3671. <br />
  3672. Non ci sono enormi discese e salite.<br />
  3673. <br />
  3674. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/pajero.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/pajero.jpg" title="pajero.jpg" alt="pajero.jpg" width="100"/></a>  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/pajero2.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/pajero2.jpg" title="pajero2.jpg" alt="pajero2.jpg" width="100"/></a><br />
  3675. <br />
  3676. I Nebrodi hanno dei sentieri ben delineati e ben tracciati in cartina.<br />
  3677. <br />
  3678. Mentre sull'Etna anche con una cartina militare 1:25.000 ci si può confondere, qui sui Nebrodi la tipica cartina 1:50.000 del Touring Club è sufficiente, anzi, è quasi perfetta e pertanto ve la consiglio.<br />
  3679. <br />
  3680. Nella stessa cartina del Touring, trovate addirittura già segnati i tragitti più comuni e consigliati.<br />
  3681. <br />
  3682. Dal punto di vista naturalistico sono semplicemente meravigliosi e si stenta a credere che qui in Sicilia vi possa essere vegetazione così rigogliosa.<br />
  3683. <br />
  3684. Se avete un buon fuoristrada potete percorrerne i sentieri in lungo e in largo.<br />
  3685. <br />
  3686. Raccomandazioni:<br />
  3687. <br />
  3688. - Se il vostro fuoristrada non è eccellente, non disponete di marce ridotte o ruote da fango, fate in modo di non essere da soli, ma con un altro fuoristrada che sia migliore del vostro, per tirarvi fuori da guai al bisogno. Buon fuoristrada o no, non conviene mai cimentarsi da soli sui Nebrodi, ma sempre almeno due vetture.<br />
  3689. <br />
  3690. - Se vi cimentate a piedi, tenete conto che vi può essere molto da camminare, anche se è pur vero che i dislivelli non sono notevoli come quelli sull'Etna.<br />
  3691. <br />
  3692. - Cartina dei Nebrodi 1:50.000 del Touring + bussola può essere sufficiente ma state sempre molto attenti alla direzione che prendete. La nebbia o la pioggia spesso sopraggiungono improvvise. La nebbia può farvi perdere i chiari punti di riferimento visivi, ma la pioggia può essere persino peggio,trasformando il manto dei sentieri in viscido fango, rendendo il vostro fuoristrada francamente ingovernabile. In casi simili le ruote da fango possono essere indispensabili, ma può esserlo ancor di più il fatto di essere accompagnati da altri fuoristrada guidati da gente esperta.<br />
  3693. <br />
  3694. Ad ogni modo visitare i Nebrodi, in fuoristrada o a piedi, in mountainbyke o in moto, è sempre un'esperienza indimenticabile, soprattutto se vi trovate con una ottima compagnia, come quella che era con me questo 1 Maggio. ]]>
  3695. </description>
  3696. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3697. <guid>http://etnablog.altervista.org/nebrodi/i-nebrodi/</guid>
  3698. </item>
  3699. <item>
  3700. <title>Santuario Madonna della roccia a Belpasso</title>
  3701. <link>http://etnablog.altervista.org/sicilia/santuario-madonna-della-roccia-a-belpasso/</link>
  3702. <description> <![CDATA[ <br /> Il Santuario Madonna della roccia si trova a Belpasso, non lontano dal santuario di Mompilieri.<br />
  3703. <br />
  3704. Si racconta che dall'11 Maggio 1986 fino al 1988 la Madonna sia apparsa in visione a un giovane, Rosario Toscano.<br />
  3705. <br />
  3706. Un'ultima apparizione sembra vi fu ancora nel 25 Marzo 1999.<br />
  3707. <br />
  3708. Sulla roccia, ove si posava la madonna, oggi si trova una statua e il tutto si trova incorniciato da un grazioso colonnato.<br />
  3709. <br />
  3710. L'1 Maggio del 2000, l'Arcivescovo di Catania Bommarito benedisse la statua e consacrò il luogo &quot;Santuario Mariano dell'Arcidiocesi di Catania&quot;.<br />
  3711. <br />
  3712. <br />
  3713. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia.jpg" title="grotta-madonna-della-roccia.jpg" alt="grotta-madonna-della-roccia.jpg" width="100"/></a>  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-1.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-1.jpg" title="grotta-madonna-della-roccia-1.jpg" alt="grotta-madonna-della-roccia-1.jpg" width="100"/></a>  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-2.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-2.jpg" title="grotta-madonna-della-roccia-2.jpg" alt="grotta-madonna-della-roccia-2.jpg" width="100"/></a><br />
  3714. <br />
  3715. <br />
  3716. La &quot;Roccia di Belpasso&quot; è oggi luogo di culto e vi sorge un bellissimo santuario.<br />
  3717. <br />
  3718. A prescindere dal fatto che possiate essere o meno credenti, il santuario della Roccia è un luogo bellissimo, e visitarlo è un'esperienza, oltre che spirituale, interessante dal punto di vista naturalistico-speleologico.<br />
  3719. <br />
  3720. Nel luogo è presente un senso di costante serenità e pace, un luogo curato e pulito.<br />
  3721. <br />
  3722. <br />
  3723. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-3.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-3.jpg" title="grotta-madonna-della-roccia-3.jpg" alt="grotta-madonna-della-roccia-3.jpg" width="100"/></a>  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-4.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-4.jpg" title="grotta-madonna-della-roccia-4.jpg" alt="grotta-madonna-della-roccia-4.jpg" width="100"/></a>  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-5.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-5.jpg" title="grotta-madonna-della-roccia-5.jpg" alt="grotta-madonna-della-roccia-5.jpg" width="100"/></a><br />
  3724. <br />
  3725. <br />
  3726. Gli spazi a verde sono perfettamente curati, alberi e fiori di ogni colore e il loro odore, ad Aprile , si mescola in gradevole armonia con quello della Zagara.<br />
  3727. <br />
  3728. Il luogo è ben percorribile da anziani o anche disabili in carrozzina. <br />
  3729. <br />
  3730. Sono presenti nel luogo due grotte la cui volta è molto grande; in una di queste è presente un grazioso presepe, l'altra è abbastanza grande da potervisi celebrare messa all'interno, qualche volta all'anno.<br />
  3731. <br />
  3732. <br />
  3733. <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-6.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-6.jpg" title="grotta-madonna-della-roccia-6.jpg" alt="grotta-madonna-della-roccia-6.jpg" width="100"/></a>  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-7.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-7.jpg" title="grotta-madonna-della-roccia-7.jpg" alt="grotta-madonna-della-roccia-7.jpg" width="100"/></a>  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-8.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-8.jpg" title="grotta-madonna-della-roccia-8.jpg" alt="grotta-madonna-della-roccia-8.jpg" width="100"/></a><br />
  3734. <br />
  3735. <br />
  3736. Sono due cavità non molto lunghe, ma vale la pena di vederle, così come tutto il resto del luogo.<br />
  3737. <br />
  3738. Consigliato a tutti.<br />
  3739. <br />
  3740.  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-9.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-9.jpg" title="grotta-madonna-della-roccia-9.jpg" alt="grotta-madonna-della-roccia-9.jpg" width="100"/></a>  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-10.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-10.jpg" title="grotta-madonna-della-roccia-10.jpg" alt="grotta-madonna-della-roccia-10.jpg" width="100"/></a>  <a href="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-11.jpg"><img src="http://etnablog.altervista.org/immagini/Etnablog/img_small/grotta-madonna-della-roccia-11.jpg" title="grotta-madonna-della-roccia-11.jpg" alt="grotta-madonna-della-roccia-11.jpg" width="100"/></a>  <br />
  3741. <br />
  3742. Sito ufficiale:  <a href="http://www.rocciadibelpasso.it/">http://www.rocciadibelpasso.it/</a>  ]]>
  3743. </description>
  3744. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3745. <guid>http://etnablog.altervista.org/sicilia/santuario-madonna-della-roccia-a-belpasso/</guid>
  3746. </item>
  3747. <item>
  3748. <title>Catania..</title>
  3749. <link>http://etnablog.altervista.org/sicilia/catania/</link>
  3750. <description> <![CDATA[ <br /> Gira per la rete un bel video Youtube di <strong>Giuseppe Castiglia</strong>. Ringrazio Marcot11 per avermelo segnalato:<br />
  3751. <div>Video <strong>YOUTUBE</strong> link: <a href="mailto:http://www.youtube.com/v/qlrrgeYCTvE">http://www.youtube.com/v/qlrrgeYCTvE</a></div> ]]>
  3752. </description>
  3753. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3754. <guid>http://etnablog.altervista.org/sicilia/catania/</guid>
  3755. </item>
  3756. <item>
  3757. <title>Windows Vista</title>
  3758. <link>http://etnablog.altervista.org/varie/windows-vista/</link>
  3759. <description> <![CDATA[ <br /> <div>Video <strong>YOUTUBE</strong> link: <a href="mailto:http://www.youtube.com/v/vk1sy8zW96M">http://www.youtube.com/v/vk1sy8zW96M</a></div><br />
  3760. Cr<br />
  3761. edo di essere rimasto l'unico blogger a non avere speso due paroline su Windows Vista.<br />
  3762. <br />
  3763. Gente non me ne vogliate.. Uso con soddisfazione Linux da oltre due mesi, a parte la carenza di videogiochi non c'è nulla che mi manchi in questo ambiente ormai.<br />
  3764. <br />
  3765. Linux ve lo regalano.. E' distribuito gratuitamente.. Informatevi un pò, sceglietevi la distro che più vi piace e scaricatevela <strong>gratis</strong>..<br />
  3766. <br />
  3767. Funziona benissimo.<br />
  3768. <br />
  3769. Non credo comprerò mai Windows Vista..<br />
  3770. <br />
  3771. Quanto costa Windows Vista? Non ne avete la minima idea.. Intanto è molto probabile che il vostro hardware non sia supportato, il che vuol dire che dovrete sostituire il vostro pc con uno nuovo, ultraperformante, di nuova generazione.<br />
  3772. <br />
  3773. Una parte della potenza del vostro nuovo pc serve soltanto per alimentare degli effetti grafici che non cambieranno per nulla il vostro modo di usare il pc. ed inoltre per controllarvi..<br />
  3774. <br />
  3775. Windows XP costava 249 euro in versione professional, che è la versione <strong>full</strong>.<br />
  3776. <br />
  3777. Windows Vista ha un'ampia gamma di versioni, a partire dal prezzo di 217 euro (+iva), fino a superare i 400 euro per le versioni complete.<br />
  3778. <br />
  3779. C'è anche una versione &quot;aggiornamento&quot;, che costa meno, e che aggiorna il vostro Windows XP, ma solo se il vostro XP è una copia originale.<br />
  3780. <br />
  3781. Windows Vista è lucchettatissimo, pronto a dare del filo da torcere a tutti coloro che scaricheranno un mp3, un film, un qualsiasi software.<br />
  3782. <br />
  3783. E siamo appena agli inizi.. Non oso immaginare cosa succederà quando sarà veramente diffuso..<br />
  3784. <br />
  3785. Non bisogna comprare pc con preinstallato Windows Vista.. E' francamente un pacco.<br />
  3786. <br />
  3787. Qualche link per voi:<br />
  3788. <br />
  3789. - L'ormai famosa intervista di Paolo Attivissimo alle iene:  <a href="http://www.iene.mediaset.it/video/video_1969.shtml">http://www.iene.mediaset.it/video/video_<br />
  3790. 1969.shtml</a> <br />
  3791. <br />
  3792. - L'articolo di Paolo Attivissimo:  <a href="http://attivissimo.blogspot.com/2007/02/le-iene-parla-di-windows-vista.html">http://attivissimo.blogspot.com/2007/02/<br />
  3793. le-iene-parla-di-windows-vista.html</a> <br />
  3794. <br />
  3795. - L'analisi dettagliata e competente di Punto Informatico:  <a href="http://punto-informatico.it/p.aspx?id=1868275&amp;p=1&amp;r=PI">http://punto-informatico.it/p.aspx?id=18<br />
  3796. 68275&amp;p=1&amp;r=PI</a> <br />
  3797. <br />
  3798. Qualche link divertente:<br />
  3799. <br />
  3800. <a href="http://www.youtube.com/watch?v=54ypt_FzRAk">http://www.youtube.com/watch?v=54ypt_FzR<br />
  3801. Ak</a>  : Un utente non riesce ad installare Vista nel suo pc perchè &quot;incompatibile&quot; con il suo hardware. Prova così ad &quot;installare&quot; Windows Vista in una macchina che lui ritiene essere... Ehm... Piu compatibile! ]]>
  3802. </description>
  3803. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3804. <guid>http://etnablog.altervista.org/varie/windows-vista/</guid>
  3805. </item>
  3806. <item>
  3807. <title>La storia di Shay</title>
  3808. <link>http://etnablog.altervista.org/varie/la-storia-di-shay/</link>
  3809. <description> <![CDATA[ <br />  <img src="http://etnablog.altervista.org/grafica_sito/4all/attention.gif" title="attention.gif" alt="attention.gif"/> <strong>Paolo mi ha mandato questa bellissima storia via email. In rete gira già da un pò ti tempo, non si sa chi sia l'autore.<br />
  3810. </strong><br />
  3811. <br />
  3812. Ad una cena di raccolta fondi per una scuola che serve i disabili mentali, il padre di uno degli studenti fece un discorso che nessuno di coloro che partecipavano avrebbe mai dimenticato.<br />
  3813. <br />
  3814. Dopo aver lodato la scuola e il personale dedito, fece una domanda:<br />
  3815. <br />
  3816. â\x80\x9cQuando non ci sono influenze dall'esterno, la natura di tutti è perfetta. Mio figlio Shay, tuttavia, non può imparare le cose che imparano gli altri. Non può capire le cose come gli altri. Dov'è lâ\x80\x99ordine naturale delle cose, in mio figlio?â\x80\x9d<br />
  3817. <br />
  3818. Il pubblico fu zittito dalla domanda. Il padre continuò.<br />
  3819. <br />
  3820. â\x80\x9cIo ritengo che, quando un bambino come Shay, fisicamente e mentalmente handicappato viene al mondo,si presenta lâ\x80\x99opportunità di realizzare la vera natura umana, ed essa si presenta nel modo in cui le altre persone trattano quel bambino&quot;.<br />
  3821. <br />
  3822. Poi raccontò la storia che segue:<br />
  3823. <br />
  3824. Shay e suo padre stavano camminando vicino a un parco, dove câ\x80\x99erano alcuni ragazzi che Shay conosceva che giocavano a baseball. Shay chiese:<br />
  3825. â\x80\x9cCredi che mi lascerebbero giocare?â\x80\x9d<br />
  3826. <br />
  3827. Il padre di Shay sapeva che la maggior parte dei ragazzi non volevano un ragazzo come lui nella squadra, ma comprendeva anche che se al figlio fosse stato permesso giocare, la cosa gli avrebbe dato un senso di appartenenza di cui aveva molto bisogno, e un poâ\x80\x99 di fiducia nellâ\x80\x99essere accettato dagli altri, nonostante i suoi handicap.<br />
  3828. <br />
  3829. Il padre di Shay si avvicinò a uno dei ragazzi sul campo e chiese se Shay poteva giocare, non aspettandosi un granché in risposta.<br />
  3830. <br />
  3831. Il ragazzo si guardò attorno, in cerca di consiglio e disse:<br />
  3832. â\x80\x9cSiamo sotto di sei e il gioco è allâ\x80\x99ottavo inning. Immagino che possa stare con noi e noi cercheremo di farlo battere allâ\x80\x99ultimo inning&quot;.<br />
  3833. <br />
  3834. Shay si avvicinò faticosamente alla panchina della squadra, indossò una maglietta della squadra con un ampio sorriso e suo padre si sentì le lacrime negli occhi e una sensazione di tepore al cuore.<br />
  3835. <br />
  3836. Il ragazzo vide la gioia di suo padre per essere stato accettato.<br />
  3837. <br />
  3838. In fondo allâ\x80\x99ottavo inning, la squadra di Shay ottenne un paio di basi, ma era ancora indietro di tre. Al culmine del nono e ultimo inning, Shay si mise il guantone e giocò nel campo giusto.<br />
  3839. <br />
  3840. Anche se dalla sua parte non arrivarono dei lanci, era ovviamente in estasi solo per essere nel gioco e in campo, con un sorriso che gli arrivava da un orecchio allâ\x80\x99altro, mentre suo padre lo salutava dalle gradinate.<br />
  3841. <br />
  3842. Alla fine del nono inning, la squadra di Shay segnò ancora.<br />
  3843. <br />
  3844. Ora, con due fuori e le basi occupate, avevano lâ\x80\x99opportunità di segnare la battuta vincente e Shay era il prossimo, al turno di battuta.<br />
  3845. <br />
  3846. A questo punto, avrebbero lasciato battere Shay e perso lâ\x80\x99opportunità di far vincere la squadra?<br />
  3847. <br />
  3848. Sorprendentemente, a Shay fu assegnato il turno di battuta.<br />
  3849. <br />
  3850. Tutti sapevano che gli era impossibile colpire la palla, perché Shay non sapeva neppure tenere bene la mazza, per non dire cogliere la palla.<br />
  3851. <br />
  3852. Comunque, mentre Shay andava alla battuta, il lanciatore, capendo che lâ\x80\x99altra squadra stava mettendo da parte la vincita per far sì che Shay avesse questo momento, nella sua vita, si spostò di alcuni passi per lanciare la palla morbidamente, così che Shay potesse almeno riuscire a toccarla con la mazza.<br />
  3853. <br />
  3854. Arrivò il primo lancio e Shay girò la mazza a vuoto.<br />
  3855. Il lanciatore fece ancora un paio di passi avanti e gettò di nuovo lentamente la palla verso Shay.<br />
  3856. Mentre la palla era in arrivo, Shay girò goffamente la mazza, la colpì e la spedì lentamente sul terreno, dritta verso il lanciatore.<br />
  3857. <br />
  3858. Il gioco avrebbe dovuto finire, a quel punto, ma il lanciatore raccolse la palla e avrebbe potuto facilmente lanciarla al primo che copriva la base e squalificare il battitore.<br />
  3859. <br />
  3860. Shay sarebbe stato fuori e questo avrebbe segnato la fine della partita.<br />
  3861. <br />
  3862. Invece, il lanciatore raccolse la palla e la lanciò proprio al di là della testa del primo in base, fuori dalla portata dei compagni di squadra.<br />
  3863. <br />
  3864. Tutti quelli che si trovavano sugli spalti e i giocatori cominciarono a gridare:<br />
  3865. â\x80\x9cShay, corri in prima base! Corri in prima!â\x80\x9d<br />
  3866. <br />
  3867. Shay non aveva mai corso in vita sua così lontano, ma riuscì ad arrivare in prima base.<br />
  3868. Corse lungo la linea, con gli occhi spalancati e pieno di meraviglia. Tutti gli gridarono:<br />
  3869. <br />
  3870. â\x80\x9cCorri alla seconda, alla seconda, ora!â\x80\x9d<br />
  3871. <br />
  3872. Trattenendo il fiato, Shay corse ancor più goffamente verso la seconda, ansimando e sforzandosi di raggiungerla.<br />
  3873. <br />
  3874. Quando Shay curvò verso la seconda base, la palla era fra le mani del giocatore giusto, un piccoletto, che ora aveva la possibilità per la prima volta di essere lui lâ\x80\x99eroe della propria squadra.<br />
  3875. Avrebbe potuto lanciarla alla seconda base per squalificare il battitore, ma comprese le intenzioni del lanciatore e anche lui gettò intenzionalmente la palla in alto, ben<br />
  3876. oltre la portata della terza base.<br />
  3877. <br />
  3878. Shay corse verso la terza base in delirio, mentre gli altri si spostavano per andare alla casa base.<br />
  3879. <br />
  3880. Tutti gridavano: â\x80\x9cShay, Shay, Shay, vai Shay&quot;.<br />
  3881. <br />
  3882. Shay raggiunse la terza base, quello opposto a lui corse per aiutarlo e voltarlo nella direzione giusta, e gridò:<br />
  3883. <br />
  3884. â\x80\x9cShay, corri in terza! Corri in terza!â\x80\x9d<br />
  3885. <br />
  3886. Mentre Shay girava per la terza base, i ragazzi di entrambe le squadre e quelli che guardavano erano tutti in piedi e strillavano:<br />
  3887. â\x80\x9cShay, corri alla base! Corri alla base, sali sul piatto!â\x80\x9d<br />
  3888. <br />
  3889. Shay corse, salì sul piatto e fu acclamato come lâ\x80\x99eroe che aveva segnato un â\x80\x98grand slamâ\x80\x99 e fatto vincere la sua squadra.<br />
  3890. <br />
  3891. Quel giorno, disse il padre a bassa voce e con le lacrime che ora gli rigavano la faccia, i ragazzi di entrambe le squadre aiutarono a portare in questo mondo un pezzo di vero amore e umanità.<br />
  3892. <br />
  3893. Shay non superò lâ\x80\x99estate e morì in inverno, senza mai scordare di essere stato lâ\x80\x99eroe e di aver reso suo padre così felice, e di essere tornato a casa nel tenero abbraccio di sua madre per il piccolo eroe del giorno!<br />
  3894. <br />
  3895. E ora, una piccola nota alla storia:<br />
  3896. Noi tutti spediamo migliaia di barzellette per e - mail senza pensarci due volte, ma quando si tratta di inviare un messaggio sulle scelte di vita, la gente ci pensa due volte prima di condividerlo.<br />
  3897. <br />
  3898. Nel cyberspazio circolano liberamente le oscenità, le volgarità e le scene crude, ma le discussioni pubbliche sulla decenza vengono troppo spesso soppresse nelle scuole e sui posti di lavoro.<br />
  3899. <br />
  3900. Se state pensando di inoltrare questo messaggio, con ogni probabilità state filtrando le persone sulla vostra lista dei contatti, distinguendo fra quelle â\x80\x98appropriateâ\x80\x99 e quelle che no.<br />
  3901. <br />
  3902. Bene, la persona che ve lâ\x80\x99ha inviato ritiene che tutti possano fare la differenza.<br />
  3903. <br />
  3904. Noi tutti abbiamo ogni giorno mille opportunità di aiutare a realizzare â\x80\x9c\x80\x99ordine naturale delle cose&quot;.<br />
  3905. Tutte le interazioni apparentemente futili fra due persone ci presentano unâ\x80\x99opportunità:<br />
  3906. passeremo questa piccola scintilla dâ\x80\x99amore e umanità o perderemo lâ\x80\x99opportunità di illuminare la giornata di coloro che sono meno abili di noi, e lasciare il mondo più freddo, nel farlo?<br />
  3907. <br />
  3908. Un saggio una volta disse che ogni società viene giudicata da come tratta i propri membri meno fortunati. ]]>
  3909. </description>
  3910. <author>etnablog@altervista.org (Hattori Hanzo)</author>
  3911. <guid>http://etnablog.altervista.org/varie/la-storia-di-shay/</guid>
  3912. </item>
  3913. </channel>
  3914. </rss>
  3915.  

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//etnablog.altervista.org/rss.xml

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda