Full Circle Magazine 48

Embed Size (px)

Citation preview

  • 8/4/2019 Full Circle Magazine 48

    1/48

    full circle magazine n. 48 1 indice ^

    Full Circle LINUX LABSSWAP, PERCH 0 p. 1LA RIVISTA INDIPENDENTE PER LA COMUNIT LINUX UBUNTU

    NUMERO 48 0 Aprile 211

    BACKUP DEL PC CON REMASTERSYSCCRREEAA IILL TTUUOO LLIIVVEE CCDD DDII UUBBUUNNTTUU PPEERRSSOONNAALLEE

  • 8/4/2019 Full Circle Magazine 48

    2/48

    full circle magazine n. 48 2 indice ^

    Full

    Circle

    Trovare ebook p.19

    Notizie Linux p.4

    LibreOffice p. 3 p.16

    Programmare in Python p.22 p.7

    Donne Ubuntu p.37

    Giochi Ubuntu p.39

    Comanda & Conquista p.5

    Top 5 p.44

    Scrivere per Full Circle p.24

    Le linee guida per inviare unarticolo a Full Circle. Contiamomolto sui vostri articoli, quindiscriveteli e inviateceli!

    Linux Lab p.25

    Robin Catling ci fa conoscere ifile di swap nel primo di duearticoli sulla necessit delloswap.

    Recensione 0 Remastersys p.31 Lettere p.35

    LA RIVISTA INDIPENDENTE PER LA COMUNIT UBUNTU

    Gli articoli contenuti in questa rivista sono stati rilasciati sotto la licenza Creative Commons Attribuzione 0 Non commerciale 0 Condividi allo stessomodo 3.. Ci significa che potete adattare, copiare, distribuire e inviare gli articoli ma solo sotto le seguenti condizioni: dovete attribuire il lavoroall'autore originale in una qualche forma (almeno un nome, un'email o un indirizzo Internet) e a questa rivista col suo nome ("Full Circle Magazine") econ suo indirizzo Internet www.fullcirclemagazine.org (ma non attribuire il/gli articolo/i in alcun modo che lasci intendere che gli autori e la rivista

    abbiano esplicitamente autorizzato voi o l'uso che fate dell'opera). Se alterate, trasformate o create un'opera su questo lavoro dovete distribuire il lavoro risultante con lastessa licenza o una simile o compatibile. Fullcircle completamente indipendente da Canonical, lo sponsor dei progetti di Ubuntu, e i punti di vista e le opinioniespresse nella rivista non sono in alcun modo da attribuire o approvati dalla Canonical.

    http://creativecommons.org/licenses/by-sa/3.0/
  • 8/4/2019 Full Circle Magazine 48

    3/48

    full circle magazine n. 48 3 indice ^

    EEDDIITTOORRIIAALLEE

    Benvenuti ad un altro numero di Full Circle!

    Ci sonodiversecosedegnedinotain programmaquestomese! In primis e sicuramente la pi importante, il fattocheabbiamo raggiunto i 4 anni di et!Ogni numerodi Aprile infatti rappresenta un'altrapietramiliare nella storiadi FCMequesto ormai il 4 annodel nostro magazine. Comecerco di fareogni anno(e si spera, ogni numero), voglioringraziaretutte le persone chemiaiutanoa realizzare questarivistamese dopo mese.Potetetrovare i loronomialla

    finedi questo(e di ogni) numerodi FCM. Un'altracosa importantequesto mese la versione 11.4. sono sicuro chenelmomentoin cui leggerete questerighe molti di voisarannogi passatia Natty Narwhal. L'ultima frale cose chemeritano particolareattenzione, di cuipotreteleggere maggiori dettagli nella paginadelle NotizieLinux, l'annuncioda partedi Canonical della finediShiplt. Cisignifica chela gentenonpotrpirichiedereun CDUbuntugratis.Sono sicuro chela maggior parte delmondodisponeormai di connessione internet a banda larga, maso percerto chemoltideinostri lettori nesono sprovvisti. Spero quindisolamentechela cancellazionedi Shipltnonimpediscaalla gente di procurarsi Ubuntu.

    Visto che il nostro4 compleanno, ho decisodi aggiungere un 4 articolo How0Tosu come realizzare un circuito usandounaboard della Arduino. La miasperanza di riuscirea pubblicare, daquestonumeroin avanti,quattroHow0To al mese. DanielHolbach si gentilmente offerto di scrivereuna serie di articoli sullo sviluppo di Ubuntu. Il primo articolo descriverin particolareilprocesso di sviluppo di Ubuntustessoprocedendo poi, negli articolisuccessivi, su come si possa dare il propriocontributo a questosviluppo segnalandoe risolvendo i bug. un lavoro davveroperspicace e arriveril prossimo mese.Questomese,ad ogni modo,abbiamo ancora un articolo su Python, la terza parte su LibreOffice, ed un pezzo su come procurarsi gli ebookgratis. Se invece sietestufi di reinstallare Ubuntue dover risistemare il vostrodesktop ogni volta peraverlodi vostrogusto,oltre a dover reinstallaretutte le applicazioni chevi servono, allora forse vorretedare unosguardo allarecensione(e all'How0To,entrambi in ununico comodoe praticoarticolo)di Arta propositodi Remastersys. Vi metter in condizionedi prendere unanuova

    versione di Ubuntue rimasterizzarlaper farla diventare il vostroLive CDpersonalizzato!

    Spero chequestonumero siadi vostrogradimentoe vi aspettotutti il prossimo mese!

    Coni migliori saluti, e restate in contatto!

    Ronnie

    [email protected]

    This magazine was created using :

    Full Circle Podcast

    Released every two weeks, eachepisode covers all the latestUbuntu news, opinions, reviews,interviews and listener feedback.The Side0Pod is a new addition, it'san extra (irregular) short0formpodcast which is intended to be abranch of the main podcast. It'ssomewhere to put all the generaltechnology and non0Ubuntu stuffthat doesnt fit in the mainpodcast.

    Hosts:Robin CatlingEd HewittDave Wilkins

    http://fullcirclemagazine.org

    mailto:[email protected]://fullcirclemagazine.org/http://fullcirclemagazine.org/http://creativecommons.org/http://www.openoffice.org/http://www.gimp.org/http://www.scribus.net/mailto:[email protected]
  • 8/4/2019 Full Circle Magazine 48

    4/48

    full circle magazine n. 48 4 indice ^

    NNOOTTIIZZIIEE LLIINNUUXX

    Full Circle Notifier

    La nostra Full Circle Notifier adesso alla versione 1..2.FCN una piccolaapplicazione che si sistema nel vostro system tray e vi annuncernon solo il rilascio

    di nuovi numeri e podcast, ma pu essere impostata anche per scaricarvelidirettamente in automatico!Diversepersone hanno creatopacchetti di FCN e sonocominciate le traduzioni. Permaggiori informazioni date

    uno sguardo al Google Group

    di FCN: http://goo.gl/4Ob4

    ShipIt giunge alla fine

    Canonical ha annunciato lafine del programma ShipIt.

    Come ha spiegato Gerry Carrsul blog di Canonical:

    con un certo rammarico cheannunciamo la fine del programmaShipIt e del programma di distribuzionedei CD. Quando abbiamo iniziato conShipIt nel 25 la banda larga eraancora una promessa di marketinganche nelle parti pi connesse dellenazioni pi sviluppate. Sapevamo chequesto rappresentava un ostacolosignificativo per ladozione di una nuovatecnologia come Ubuntu. Perciinvestimmo nella produzione di CDgratuiti e nella spedizione gratuita inogni parte del mondo [] ma da Ubuntu11.4 non si potr pi andare sul nostrosito e richiedere un CD gratuito.

    Ci accingiamo a fare un grande numerodi CD disponibili nelle Comunit Locali diUbuntu (LoCos) attraverso unprogramma shipIt0lite.

    Fonte: http://blog.canonical.com

    C64 ritorna!

    tornato e meglio che mai! Il nuovo Commodore 64 un moderno PCfunzionale il pi vicino possibile alloriginale nel design quanto umanamente

    possibile. Esso ospita una moderna scheda madre mini0ITX con un processore DualCore 525 Atom e lultimo chipset grafico nVidia ION2. Si presenta nelloriginalecolore marrone talpa / beige, con altri colori a seguire.

    Commodore OS 1., con funzionalit di emulazione e con un pacchetto digioco classico, verr inviato agliacquirenti appena sardisponibile. Nel frattempo, leunit sono vendute con ilsistema operativo Ubuntu 1.4LTS su un CD pronto per essereinstallato.

    Fonte: commodoreusa.net

    GNOME 3 rilasciato!

    Gnome 3 stato rilasciatoil 6 aprile211. Sesi vuole provare, sipu lanciareuna

    versione live daCD/DVDo chiavettaUSB.

    Laversionelivesi presenta inentrambeleversioniOpenSUSE e Fedora. NessundownloaddiUbuntuanchese, dalla11.4,sipresenter conla suainterfacciaUnity.

    Fonte: http://gnome3.org/

    http://goo.gl/4Ob4http://goo.gl/4Ob4http://goo.gl/4Ob4http://goo.gl/4Ob4
  • 8/4/2019 Full Circle Magazine 48

    5/48

    full circle magazine n. 48 5 indice ^

    Q uesto mese vorreicondividere con voiqualcosa che ho imparatosolo recentemente.

    L'argomento che tratter adatto aquegli utenti che usano iBus/SCIM eche non sono soddisfatti di questi, oche li usano e ne sono soddisfatti mail cui giapponese/cinese/ecc. nonviene visualizzato in un fontleggibile in rvxt0unicode. Vorreianche utilizzare questo spazio perannunciare che per il prossimo mesespero di fare una sessione di

    domande e risposte per i lettori diC&C. Se avete domande su Linux ingenerale, la linea di comando o sume come autore, sentitevi liberi dimandare le vostre domande [email protected] prima del 28aprile. Selezioner un gruppo didomande a cui rispondere ilprossimo mese. Richieste per articolisono anche benvenute.

    Come probabilmente alcuni divoi sapranno, ho scritto un articolosu iBus nell'edizione FCM #43. Nonho pi usato iBus da quando hopreso confidenza con SCIM. Ad ognimodo, un aggiornamento harecentemente disabilitato SCIM,

    quindi ho provato iBus. Quello cherealmente non mi dava pace era ilnon potere cambiare facilmentehiragana e katakana, quindi ho

    deciso di cogliere qualchesuggerimento di un mio amico e hoprovato "uim". Sorprendentemente,uim non blocca i miei tasti nonutilizzati in rxvt0unicode, e permettefacilmente lo scambio tra hiragana ekatakana. Sotto vedrete come l'hoconfigurato per l'uso.

    uim & uim0fep:Dalla homepage

    (http://code.google.com/p/uim/):"l'obiettivo di uim di fornire una

    piattaforma di input semplice, facile

    da estendere e di alta qualit nel

    codice e di unutile metodo di input

    per utenti desktop e di piattaforme

    emedded. Vedi 'what's uim?' per

    ulteriori informazioni"

    Per prima cosa, doveteinstallarlo:

    sudo apt-get install uimuimgtk2.0 uim-qt uim-qt3 uim-fep uim-anthy

    Questo dovrebbe bastare per ilsupporto di uim per terminali,applicazioni QT e applicazioni GTKche utilizzano anthy. Ci sono molti

    altri pacchetti che offrono applet,differenti dizionari e utilit, chepossono essere interessanti peralcuni.

    Una volta installato, avviandouim0toolbar0gtk0systray avreteun'icona nel tray di sistema. Fate cliccon il tasto destro del mouse escegliete "Preferenze". Qui, vorrei

    modificare la lista dei linguaggi diinput abilitati, scegliendo solamentequelli di cui avete bisogno eaggiustare le restrizioni alle chiaviglobali secondo le vostrepreferenze. Se l'icona di sistema praticamente invisibile, perchtroppe informazioni sono mostratenella larghezza della sola "icona".Per modificare ci, aprite lepreferenze e sotto "Barra deglistrumenti", deselezionate tutto eimpostate il pulsante della barradegli strumenti abilitata per illinguaggio che usate in "Modalit diInput". Ci la ridurr ad una icona,rendendola nuovamente leggibile.In oltre, per farlo funzionare, avrete

    bisogno di aggiungere la seguentelinea a /etc/profile (o .bashrc, o.zshrc):

    export XMODIFIERS=@im=uim

    export GTK_IM_MODULE="uim"

    export QT_IM_MODULE="uim"

    Una volta impostate questevariabili, dovreste eseguire laseguente riga in un terminale:

    gtk-query-immodules-2.0 >

    /etc/gtk-2.0/gtk.immodules

    Questo ricreer il filegtk.immodules, che specifica alprogramma GTK che metodi di inputsono disponibili.

    "Uim0fep" un processore difront0end per emulatori diterminale. In pratica, permette di

    scrivere in giapponese in unemulatore di terminale (rxvt0unicode nel mio caso), senza averbisogno di uim0xim (che utilizza unpo' troppe risorse). Per farlofunzionare, avrete bisogno diaggiungere uim0fep alla fine delvostro file .bashrc, o al vostro .zshrc,

    CCOOMMAANNDDAA && CCOONNQQUUIISSTTAAScritto da Lucas Westermann

    IIll ssuuppppoorrttoo aallllee lliinngguuee aassiiaattiicchhee

    mailto:[email protected]:[email protected]://code.google.com/p/uim/http://code.google.com/p/uim/http://code.google.com/p/uim/mailto:[email protected]://code.google.com/p/uim/
  • 8/4/2019 Full Circle Magazine 48

    6/48

    full circle magazine n. 48 6 indice ^

    COMANDA & CONQUISTAo a qualunque shell stiate usando.Se ricevete un avvertimento cheuim0fep gi in esecuzione, potreteaggiungere "clear" (senza levirgolette) dopo questo, cos danascondere il messaggio. Una voltain esecuzione, avrete una linea delvostro terminale che simile aquesta:

    Usando il collegamento globaleper uim, avremo un'icona alla fineche serve a cambiare il metodo diinserimento e che permetter discrivere in giapponese nella lineadel terminale.

    Rxvt0unicode:

    Nel caso in cui il giapponese siaquasi non leggibile in rxvt0unicode(ci pu accadere in altri emulatoridi terminale, ma non l'ho testato),

    potrete aggiungere le seguenti lineeal vostro .Xdefaults:

    URxvt.preeditType:OnTheSpot,None

    URxvt.imLocale: ja_JP.UTF-8

    URxvt.font: xft:AnonymousPro:size=11:antialias=true:au

    tohint=false,xft:IPAGothic:size=11:antialias=true

    URxvt.boldFont: xft:AnonymousPro:size=11:weight=Bold:antialias=true:autohint=false,xft:IPAGothic:size=11:weight=Bold:antialias=true

    Queste linee praticamentedicono a urxvt di aspettarsidell'input in giapponese da uim. Ifont sono in realt due, comepotrete vedere. Anonymous Pro ilfont del terminale che uso per tutto,ma se rxvt0unicode non trova ilsimbolo per qualcosa in quel font, sisposter automaticamente alprossimo nella lista (o un font di

    ripiego se non esiste quel simbolo innessuno dei font elencati). Questopermette di avere un supporto a pilinguaggi senza compromettere laleggibilit dei simboli Latin. Inoltre,potrete vedere alcune personeusare urxvt.* invece di URxvt.*, chepu essere problematico seimpostate il nome del vostroterminale da una scorciatoia (ad

    esempio urxvt 0name ncmpcpp 0encmpcpp). La prima parte di questepreferenze indica al sistema che laWM_CLASS del programma ci chevogliamo modificare e il minuscolourxvt il primo della lista, che impostato usando l'argomento "0name", se invece usate URxvt,

    allora non cambier a seconda delloswitch 0name. Per capire di cosaparlo, inserite il seguente comandonel terminale, e fate clic su rxvt0unicode.

    xprop|grep "^WM_CLASS"

    Che restituisce qualcosa comequesto:

    WM_CLASS(STRING) = "urxvt","URxvt"

    A questo punto dovreste avereun ambiente uim totalmentefunzionante e non dovrestenemmeno aver compromesso

    nessuna funzionalit nel vostroterminale. Se avete suggerimenti orichieste per gli articoli, sentiteviliberi di scrivermi [email protected]. Nondimenticate, inoltre, delle domande!Mi serviranno prima del 28 aprile!

    Lucas ha imparato tutto ci checonosce dall'aver ripetutamentedistrutto il suo sistema e dal non avernessun'altra opzione se non quella discoprire come sistemarlo. Potretescrivere a Lucas su:[email protected].

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]
  • 8/4/2019 Full Circle Magazine 48

    7/48

    full circle magazine n. 48 7 indice ^

    HHOOWW00TTOOScritto da Greg Walters PPrrooggrraammmmaarree iinn PPyytthhoonn 00 PPaarrttee 2222

    P er iniziare col piede giustodovrete avereplaylistmaker.glade eplaylistmaker.py del mesescorso. In caso contrario,provvedete di conseguenza. Primadi iniziare, diamo un'occhiata acos' un file playlist. Esistono molte

    versioni di liste d'esecuzione etutte hanno estensioni differenti.Quella che creeremo noi sar deltipo *.m3u. Nella sua forma pisemplice, solo un file di testo cheinizia con "#EXTM3U" e presentauna riga per ciascuna canzone daascoltare, incluso l'intero percorso.

    possibile aggiungere informazioniulteriori prima di ciascuna vocecome la durata della canzone, iltitolo dell'album, il numero di

    traccia e il titolo. Per il momento ciconcentreremo sulla versione base.

    Ecco un esempio di playlist M3U...

    #EXTM3U Adult Contemporary/ChrisRea/Collection/02 - On TheBeach.mp3

    Adult Contemporary/ChrisRea/Collection/07 - Fool (If

    You Think It's Over).mp3 Adult Contemporary/ChrisRea/Collection/11 - LookingFor The Summer.mp3

    Tutti i percorsi sono relativi allaposizione del file playlist.

    Ok... iniziamo a scrivere codice. Adestra trovate l'inizio del codicesorgente del mese scorso.

    Ora dobbiamo creare una funzioneper la gestione di ciascun eventogi configurato. Notate cheon_MainWindow_destroy eon_tbtnQuit_clicked sono gi statirealizzati, cos ne dobbiamorealizzare solamente altri 1

    Errata Corrige

    Il mese scorso, nella parte 21, vi

    era stato detto di salvare il lavorocome "PlaylistMaker.glade" ma,nel codice, vi si facevariferimento come"playlistmaker.glade". Sonosicuro che avrete notato che unaversione ha le maiuscole e l'altrano. Il codice funzioner solousando la stessa versione, con osenza le maiuscole.

    #!/usr/bin/env pythonimport sysfrom mutagen.mp3 import MP3try:

    import pygtkpygtk.require("2.0")

    except:pass

    try:import gtkimport gtk.glade

    except:sys.exit(1)

    quindi la definizione della classeclass PlayListCreator:

    def __init__(self):self.gladefile = "playlistmaker.glade"

    self.wTree = gtk.glade.XML(self.gladefile,"MainWindow")

    e la routine mainif __name__ == "__main__":

    plc = PlayListCreator()gtk.main()

    Quindi abbiamo il dizionario che dovrebbe essere inserito dopo lafunzione __init__ .def SetEventDictionary(self):

    dict = {"on_MainWindow_destroy": gtk.main_quit,"on_tbtnQuit_clicked": gtk.main_quit,

    "on_tbtnAdd_clicked": self.on_tbtnAdd_clicked,"on_tbtnDelete_clicked": self.on_tbtnDelete_clicked,"on_tbtnClearAll_clicked": self.on_tbtnClearAll_clicked,"on_tbtnMoveToTop_clicked": self.on_tbtnMoveToTop_clicked,"on_tbtnMoveUp_clicked": self.on_tbtnMoveUp_clicked,"on_tbtnMoveDown_clicked": self.on_tbtnMoveDown_clicked,"on_tbtnMoveToBottom_clicked": self.on_tbtnMoveToBottom_clicked,"on_tbtnAbout_clicked": self.on_tbtnAbout_clicked,"on_btnGetFolder_clicked": self.on_btnGetFolder_clicked,"on_btnSavePlaylist_clicked": self.on_btnSavePlaylist_clicked}

    self.wTree.signal_autoconnect(dict)

  • 8/4/2019 Full Circle Magazine 48

    8/48full circle magazine n. 48 8 indice ^

    (mostrati in alto a destra). Per oracreate solo lo scheletro.

    Le modificheremo tra pochi minuti.Per il momento questo dovrebbeessere sufficiente a eseguirel'applicazione e potremo fare delleprove nel corso dello sviluppo. Maprima di poter eseguirel'applicazione dobbiamo inserireun'ulteriore riga alla funzione

    __init__. Dopo la riga self.wTree,aggiungete...

    self.SetEventDictionary()

    Ora potete eseguire l'applicazione,osservare la finestra e fare clic sulPulsante Esci della barra strumentiper uscire correttamentedall'applicazione. Salvate il codicecome "playlistmaker01a.py" eprovate. Ricordate di salvarlo nellastessa cartella insieme al file gladedell'ultima volta o copiate il fileglade nella stessa cartella in cuiavete salvato questo codice.

    Dobbiamo anche definire alcunevariabili per un uso successivo.Inserite le seguenti dopo lachiamata SetEventDictionary nellafunzione __init__.

    self.CurrentPath = ""self.CurrentRow = 0

    self.RowCount = 0

    Ora creeremo una funzione che cipermette di mostrare una finestra acomparsa ogniqualvolta si debbanodare informazioni all'utente. Cisono alcune funzioni predefiniteche useremo, ma creeremo una

    routine nostra per semplificarci illavoro. la funzionegtk.MessageDialog e la sintassi laseguente...

    gtk.MessageDialog(parent,flags,MessageType,Buttons,message)

    Sono necessari alcuni chiarimenti

    prima di procedere. Il tipo dimessaggio pu essere uno deiseguenti...

    GTK_MESSAGE_INFO - MessaggioinformativoGTK_MESSAGE_WARNING -

    Messaggio di avviso nonfataleGTK_MESSAGE_QUESTION -Domanda richiedente unasceltaGTK_MESSAGE_ERROR - Messaggiodi errore fatale

    E i tipi di pulsante sono...

    GTK_BUTTONS_NONE - nessunpulsanteGTK_BUTTONS_OK - un pulsanteOK

    GTK_BUTTONS_CLOSE - unpulsante ChiudiGTK_BUTTONS_CANCEL - Unpulsante AnnullaGTK_BUTTONS_YES_NO - pulsantiS e NoGTK_BUTTONS_OK_CANCEL -pulsanti Ok e Annulla

    Normalmente userete il seguente,o simile, codice per creare una

    finestra di dialogo, mostrarla,attendere la risposta e quindieliminarla dalla memoria.

    dlg =gtk.MessageDialog(None,0,gtk.

    MESSAGE_INFO,gtk.BUTTONS_OK,"This is a test message...")response = dlg.run()

    dlg.destroy()

    Comunque, se volete mostrare unmessaggio all'utente pi di una odue volte, si tratta di scrivereparecchio. La regola generale chese scrivete una serie di righe pi diuna o due volte certamentemeglio creare una funzione e quindichiamarla. Ragionate in questomodo: se vogliamo mostrare unmessaggio all'utente, diciamo diecivolte, equivale a scrivere 1x3 (o3) righe di codice. Creando unafunzione (usando l'esempio appenapresentato) avremo 1+3 righe dicodice da scrivere. Pi volterichiamiamo il messaggio, meno

    def on_tbtnAdd_clicked(self,widget):pass

    def on_tbtnDelete_clicked(self,widget):pass

    def on_tbtnClearAll_clicked(self,widget):pass

    def on_tbtnMoveToTop_clicked(self,widget):pass

    def on_tbtnMoveUp_clicked(self,widget):

    passdef on_tbtnMoveDown_clicked(self,widget):

    passdef on_tbtnMoveToBottom_clicked(self,widget):

    passdef on_tbtnAbout_clicked(self,widget):

    passdef on_btnGetFolder_clicked(self,widget):

    passdef on_btnSavePlaylist_clicked(self,widget):

    pass

    PROGRAMMARE IN PYTHON 0 PARTE 22

  • 8/4/2019 Full Circle Magazine 48

    9/48full circle magazine n. 48 9 indice ^

    codice ci tocca scrivere e pileggibile risulter il nostro codice.La nostra funzione (in alto a destra)ci permetter di chiamare ciascunodei quattro tipi di messaggio consolo una funzione e parametridifferenti.

    Si tratta di una funzione moltosemplice che possiamo chiamare inquesto modo:

    self.MessageBox("info","Thebutton QUIT was clicked")

    Notate che se scegliamo di usare iltipo MESSAGE_QUESTION, lafinestra potr ritornare due

    possibili risposte , "Si" o "No".Qualunque pulsante l'utente scelgariceveremo l'informazione nelnostro codice. Per usare la finestradi dialogo domanda, la chiamatasar simile a...

    response =self.MessageBox("question","Are you sure you want to do

    this now?")if response ==gtk.RESPONSE_YES:

    print "Yes was clicked"elif response ==gtk.RESPONSE_NO:

    print "NO was clicked"

    Potete vedere come controllare ilvalore del pulsante scelto. Quindi

    ora sostituiamo lachiamata "pass" inciascuna delle funzioni

    di gestione degli eventicon qualcosa simile aquello mostrato inbasso a destra.

    Non la versionedefinitiva, ma vi darun'indicazione visivache i pulsantifunzionano come

    desiderato. Salvate ilcodice come"playlistmaker01b.py" etestate il programma.Ora creeremo unafunzione per impostarei riferimenti per i nostri widget.Questa funzione sar chiamata una

    sola volta, ma render il codice pigestibile e leggibile. In pratica,vogliamo creare variabili locali che

    referenziano i widget nella finestradi glade, cos da poterli richiamare,se necessario, a piacimento.

    def MessageBox(self,level,text):if level == "info":

    dlg = gtk.MessageDialog(None,0,gtk.MESSAGE_INFO,gtk.BUTTONS_OK,text)elif level == "warning":

    dlg = gtk.MessageDialog(None,0,gtk.MESSAGE_WARNING,gtk.BUTTONS_OK,text)elif level == "error":

    dlg = gtk.MessageDialog(None,0,gtk.MESSAGE_ERROR,gtk.BUTTONS_OK,text)elif level == "question":

    dlg = gtk.MessageDialog(None,0,gtk.MESSAGE_QUESTION,gtk.BUTTONS_YES_NO,text)if level == "question":resp = dlg.run()dlg.destroy()return resp

    else:resp = dlg.run()dlg.destroy()

    def on_tbtnAdd_clicked(self,widget):self.MessageBox("info","Button Add was clicked...")

    def on_tbtnDelete_clicked(self,widget):self.MessageBox("info","Button Delete was clicked...")

    def on_tbtnClearAll_clicked(self,widget):self.MessageBox("info","Button ClearAll was clicked...")

    def on_tbtnMoveToTop_clicked(self,widget):self.MessageBox("info","Button MoveToTop was clicked...")

    def on_tbtnMoveUp_clicked(self,widget):self.MessageBox("info","Button MoveUp was clicked...")

    def on_tbtnMoveDown_clicked(self,widget):self.MessageBox("info","Button MoveDown was clicked...")

    def on_tbtnMoveToBottom_clicked(self,widget):self.MessageBox("info","Button MoveToBottom was clicked...")

    def on_tbtnAbout_clicked(self,widget):

    self.MessageBox("info","Button About was clicked...")def on_btnGetFolder_clicked(self,widget):

    self.MessageBox("info","Button GetFolder was clicked...")def on_btnSavePlaylist_clicked(self,widget):

    self.MessageBox("info","Button SavePlaylist was clicked...")

    PROGRAMMARE IN PYTHON 0 PARTE 22

  • 8/4/2019 Full Circle Magazine 48

    10/48full circle magazine n. 48 1 indice ^

    Inserite questa funzione (pag.precedente, in alto a destra) sottola funzione SetEventDictionary.

    Si prega di notare che c' una cosanon referenziata nella nostraroutine. Si tratta del widget vistaalbero. Creeremo il riferimentoquando imposteremo la vistastessa. Notate anche l'ultima rigadella funzione. Per usare la barra distato dovremo riferirci ad essaattraverso il suo id contestuale. Louseremo pi avanti.

    Proseguiamo impostando lafunzione che mostra la finestra

    "informazioni" quando si fa clic sulpulsante "Informazioni" nella barrastrumenti. Di nuovo, a tal scopo c'una funzione predefinita fornitadalla libreria GTK. Inserite il codicein basso a destra dopo la funzioneMessageBox.

    Salvate e fate una prova. Dovrestevedere una finestra a comparsa,

    centrata rispetto all'applicazione,che mostra qualunque cosaabbiamo inserito. La finestraInformazioni possiede altri attributi(documentati all'indirizzohttp://www.pygtk.org/docs/pygtk/class0gtkaboutdialog.html), maquesti sono quelli che considero di

    base.

    Prima di proseguiredobbiamo discutere di quelloche avverr esattamente daquesto momento. L'ideagenerale che l'utente facciaclic sul pulsante "Aggiungi"nella barra strumenti, si aprauna finestra per aggiungerefile alla playlist e quindivengano mostrate leinformazioni dei file nellavista ad albero. Da qui possibile aggiungere altri file,cancellare singole voci,cancellare tutto, muovere unelemento in alto, in basso,

    def SetWidgetReferences(self):self.txtFilename = self.wTree.get_widget("txtFilename")self.txtPath = self.wTree.get_widget("txtPath")self.tbtnAdd = self.wTree.get_widget("tbtnAdd")self.tbtnDelete = self.wTree.get_widget("tbtnDelete")self.tbtnClearAll = self.wTree.get_widget("tbtnClearAll")self.tbtnQuit = self.wTree.get_widget("tbtnQuit")self.tbtnAbout = self.wTree.get_widget("tbtnAbout")self.tbtnMoveToTop = self.wTree.get_widget("tbtnMoveToTop")

    self.tbtnMoveUp = self.wTree.get_widget("tbtnMoveUp")self.tbtnMoveDown = self.wTree.get_widget("tbtnMoveDown")self.tbtnMoveToBottom = self.wTree.get_widget("tbtnMoveToBottom")self.btnGetFolder = self.wTree.get_widget("btnGetFolder")self.btnSavePlaylist = self.wTree.get_widget("btnSavePlaylist")self.sbar = self.wTree.get_widget("statusbar1")self.context_id = self.sbar.get_context_id("Statusbar")

    e quindi aggiungete una chiamata ad essa giusto dopo la chiamata self.SetEventDictionary() nella funzione__init__.

    self.SetWidgetReferences()

    def ShowAbout(self):about = gtk.AboutDialog()about.set_program_name("Playlist Maker")about.set_version("1.0")about.set_copyright("(c) 2011 by Greg Walters")about.set_comments("Written for Full Circle Magazine")about.set_website("http://thedesignatedgeek.com")about.run()about.destroy()

    Ora, commentate (o rimuovete semplicemente) la chiamata messageboxnella funzione on_tbtnAbout_clicked e sostituitela con una chiamata allafunzione ShowAbout. Fate in modo che somigli a questa.

    def on_tbtnAbout_clicked(self,widget):#self.MessageBox("info","Button About was clicked...")self.ShowAbout()

    PROGRAMMARE IN PYTHON 0 PARTE 22

    PROGR R P O P R 22

    http://www.pygtk.org/docs/pygtk/class-gtkaboutdialog.htmlhttp://www.pygtk.org/docs/pygtk/class-gtkaboutdialog.htmlhttp://www.pygtk.org/docs/pygtk/class-gtkaboutdialog.htmlhttp://www.pygtk.org/docs/pygtk/class-gtkaboutdialog.html
  • 8/4/2019 Full Circle Magazine 48

    11/48full circle magazine n. 48 11 indice ^

    all'inizio o alla fine della vista adalbero. Eventualmente, si potrdefinire il percorso dove salvare ilfile, fornire un nome conestensione "m3u" e fare clic sulpulsante salva file. Anche se questosembra tutto abbastanza semplice,molto deve avvenire dietro lequinte. Poich molta della magiariguarda il widget vista ad albero,incominciamo a parlarne. Ciaddentreremo abbastanza, quindileggete con attenzione dato che lacorretta comprensione vi evitererrori futuri.

    Una vista ad albero pu esseresemplice come la rappresentazionedi una colonna di dati di un foglio dilavoro o di un database, o puessere pi complessa come unalista di file e cartelle con elementigenitori e figli, dove una cartellapotrebbe essere il genitore e i filein quella cartella potrebbero esserei figli, o qualcosa di ancora picomplesso. Per questo progetto

    useremo il primo esempio, una listacolonnare. Questa lista conterr trecolonne. Una per il nome del filemusicale, una per l'estensione delfile stesso (mp3, ogg, wav, etc) e lacolonna finale per il percorso.Combinando il tutto in una stringa(percorso, nome e estensione)

    otterremo la voce dainserire nella playlist.Potete, se vi dovesseoccorrere, aggiungerealtre colonne ma per ilmomento ci fermeremo aqueste tre.

    Una vista ad albero uncontenitore che conservae mostra un modello. Ilmodello il "dispositivo"attuale che contiene emanipola i nostri dati. Cisono due modelli predefiniti chepossono essere usati con la vistaalbero, ma ovviamente potetecrearne di vostri. Detto questo, nelcirca il 98% dei casi uno dei duemodelli predefiniti sar sufficienteai nostri bisogni. I due tipi sonoGTKListStore e GTKTreeStore.Come suggerisce il loro nome ilmodello ListStore si usa di solitoper le liste, TreeStore per gli alberi.Nella nostra applicazione useremoGTKListStore. I passi base sono:

    Creare un riferimento al widgetTreeView. Aggiungere le colonne. Impostare il tipo di visualizzazioneda usare. Creare una ListStore Impostare come modello della

    vista albero il nostro modello Inserire i dati

    Il terzo passo riguarda la scelta deltipo di visualizzazione usato dallacolonna per mostrare i dati. Sitratta di una semplice funzione perdisegnare i dati nel modello adalbero. GTK fornisce molti tipi divisualizzazioni differenti ma quelliche userete maggiormente sonoGtkCellRenderText eGtkCellRendererToggle.

    Allora, creiamo una funzione(mostrata in alto) per configurare ilwidget vista albero. La chiameremoSetupupTreeview. Primadefiniremo alcune variabili per lecolonne, quindi la variabile che fariferimento alla stessa vista albero,aggiungiamo le colonne,

    impostiamo ListStore e il modello.Inseritela dopo la funzioneSetWidgetReferences.

    Le variabili cFName, cFType ecFPath definiscono i numeri dicolonna. Le variabili sFName,sFType e sFPath conterranno i nomidelle colonne in fase divisualizzazione. La settima rigaconfigura la variabile che fariferimento al widget vista alberoutilizzando lo stesso nome usatonel nostro file glade.

    Procediamo chiamando unafunzione (pagina seguente, in alto adestra), che creeremo a breve, perciascuna colonna. Quindi definiamoGTKListStore con tre campi di testoe per finire impostiamo l'attributomodello del widget vista albero con

    def SetupTreeview(self):self.cFName = 0self.cFType = 1self.cFPath = 2self.sFName = "Filename"self.sFType = "Type"self.sFPath = "Folder"self.treeview = self.wTree.get_widget("treeview1")

    self.AddPlaylistColumn(self.sFName,self.cFName)self.AddPlaylistColumn(self.sFType,self.cFType)self.AddPlaylistColumn(self.sFPath,self.cFPath)self.playList = gtk.ListStore(str,str,str)self.treeview.set_model(self.playList)self.treeview.set_grid_lines(gtk.TREE_VIEW_GRID_LINES_BOTH)

    PROGRAMMARE IN PYTHON 0 PARTE 22

    PROGRAMMARE IN PYTHON PARTE 22

  • 8/4/2019 Full Circle Magazine 48

    12/48full circle magazine n. 48 12 indice ^

    il nostro GTKListStore.Proseguiamo creando la funzioneAddPlaylistColumn. Inseritela dopoSetupTreeview.

    Ciascuna colonna viene creatautilizzando questa funzione. Lepassiamo il titolo della colonna(quello che viene mostrato in cimaa ciascuna colonna) e unidentificativo. In questo casopasseremo le variabili create inprecedenza (sFName and cFname).Quindi nel widget vista alberocreiamo una colonna assegnandoleun titolo, il tipo di visualizzazioneche user e, per finire, unidentificativo. Quindi rendiamo lacolonna ridimensionabile,ordinabile in base all'identificativoe finiamo aggiungendo la colonnaalla vista ad albero.

    Aggiungete queste due funzioni.Ho deciso di inserirle subito dopo lafunzione SetWidgetReferences, mapotete inserirle ovunque nella

    classe PlayListCreator. Aggiungetela seguente riga dopo la chiamata aSetWidgetReferences() nellafunzione __init__ per richiamare lafunzione.

    self.SetupTreeview()

    Salvate ed eseguite il programma e

    vedrete cheora il nostrowidget vistaalberocontiene trecolonne conintestazioni.

    Ci sono molte cose ancora da fare.Dobbiamo trovare un modo perricevere dall'utente i nomi dei fileaudio e inserirli nell'albero comerighe di dati. Dobbiamo creare lefunzioni di eliminazione, pulizia espostamento, quella di salvataggioe quella di gestione del percorsodei file, pi altre cose "carine" chedaranno un aspetto piprofessionale all'applicazione.Iniziamo con la funzione Aggiungi.Dopo tutto il primo pulsante dellanostra barra strumenti. Quandol'utente fa clic sul pulsanteAggiungi, vogliamo che compaiauna finestra standard per i file checi permetta una selezione multipla.Quando l'utente ha ultimato la

    selezione, dobbiamo recuperare idati e inserirli nella lista, comedetto sopra. Quindi la prima cosalogica da fare lavorare sullafinestra di scelta dei file. Ancora,GTK fornisce un sistema perrichiamare una finestra"standard". Potremmo inserire il

    codice direttamente nel gestoreevento on_tbtnAdd_clicked ma

    creiamo una classe a s per loscopo. Visto che ci siamo, larealizzeremo in maniera tale chenon solo gestisca la finestra APRIma anche quella SELEZIONA. Comevisto prima con la funzioneMessageBox, potete raccoglieretutti questi frammenti di codice inun file di funzioni riutilizzabili.Iniziamo definendo una nuova

    classe chiamata FileDialog checonterr solo una funzionechiamata ShowDialog. La funzioneaccetter due parametri, unochiamato 'which' ('' o '1'), cheindicher se creare una finestra peraprire un file o selezionare unacartella, e l'altro,chiamatoCurrentPath, il percorso sui cui lavista si aprir. Create questa classe

    subito prima la funzione main infondo al file sorgente.

    class FileDialog:def

    ShowDialog(self,which,CurrentPath):

    La prima parte del codice dovrebbeessere un'istruzione IF

    if which == 0: # file chooser...

    else: # folder chooser...

    Prima di procedere ulteriormente,

    esploriamo come la finestra perfile/cartelle chiamata e utilizzata.La sintassi la seguente

    gtk.FileChooserDialog(title,parent,action,buttons,backend)

    e ritorna un oggetto di tipo finestradi dialogo. La prima riga (sotto ifwhich == ) sar la riga mostrata

    sotto.

    Come potete vedere, il titolo

    def AddPlaylistColumn(self,title,columnId):column = gtk.TreeViewColumn(title,gtk.CellRendererText(),text=columnId)column.set_resizable(True)column.set_sort_column_id(columnId)self.treeview.append_column(column)

    dialog = gtk.FileChooserDialog("Select files to add...",None,gtk.FILE_CHOOSER_ACTION_OPEN,(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN, gtk.RESPONSE_OK))

    PROGRAMMARE IN PYTHON 0 PARTE 22

    PROGRAMMARE IN PYTHON PARTE 22

  • 8/4/2019 Full Circle Magazine 48

    13/48full circle magazine n. 48 13 indice ^

    "Select files to add...", il genitore impostato su None. In questo casol'azione da compiere sar Apri File evogliamo i pulsanti Annulla e Apri,entrambi che usano le iconepredefinite. Stiamo ancheimpostando i codici di ritorno pergtk.RESPONSE_CANCEL egtk.RESPONSE_OK quando l'utentefa la sua scelta. La chiamata perScelta Cartella sotto la clausola Else simile.

    In pratica, l'unica differenza tra ledue definizioni il titolo (mostratoin alto a destra) e il tipo di azione.Quindi il codice finale per la classeora dovrebbe essere quellomostrato al centro a destra.

    Abbiamo impostato come rispostapredefinita il pulsante OK, e quindiattivato la seleziona multipla cosche l'utente pu selezionare (aveteindovinato) pi file da aggiungere.Se non lo avessimo fatto, la finestraavrebbe permesso la selezione di

    un file alla volta dato cheset_select_multiple impostato, didefault, a falso. Le righe successiveconfigurano il percorso corrente equindi viene mostrata la finestrastessa. Prima di inserire il codice,fatemi spiegare perch importante configurare un

    percorso. Ogni volta che si apre unafinestra di dialogo per i file e NONimpostate un percorso, viene sceltoquello in cui risiede il programma.Quindi diciamo che i file musicaliche cerchiamosono in

    /media/music_files/ e sono quindisuddivisi pergenere, quindiper artista equindi per album.Ipotizziamoancora chel'utente abbiainstallatol'applicazione in

    /home/utente2/playlistmaker.Ogni volta cherichiamiamo lafinestra la cartella iniziale sarebbe

    /home/utente2/playlistmaker. Benpresto questo stuferebbe l'utenteche vorrebbe come cartella inizialequella aperta per ultima. Ha senso?

    Ok. Allora, in basso a destra ci sonole prossime righe di codice.

    Qui controlliamo le risposteritornate. Se l'utente ha fatto clicsul pulsante 'Apri' che restituiscegtk.RESPONSE_OK, otteniamo ilnome o i nomi dei file selezionati

    dialog = gtk.FileChooserDialog("Select Save Folder..",None,gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,

    (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN, gtk.RESPONSE_OK))

    class FileDialog:def ShowDialog(self,which,CurrentPath):

    if which == 0: #file chooser

    #gtk.FileChooserDialog(title,parent,action,buttons,backend)dialog = gtk.FileChooserDialog("Select files to add...",None,

    gtk.FILE_CHOOSER_ACTION_OPEN,(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,

    gtk.STOCK_OPEN, gtk.RESPONSE_OK))else: #folder chooser

    dialog = gtk.FileChooserDialog("Select Save Folder..",None,gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,

    (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN, gtk.RESPONSE_OK))

    Le due righe seguenti saranno (fuori dall'istruzione IF/ELSE)...

    dialog.set_default_response(gtk.RESPONSE_OK)dialog.set_select_multiple(True)

    if CurrentPath != "":dialog.set_current_folder(CurrentPath)

    response = dialog.run()

    Quindi dobbiamo gestire la risposta dalla finestra di dialogo.

    if response == gtk.RESPONSE_OK:fileselection = dialog.get_filenames()CurrentPath = dialog.get_current_folder()dialog.destroy()return (fileselection,CurrentPath)

    elif response == gtk.RESPONSE_CANCEL:print 'Closed, no files selected'dialog.destroy()

    PROGRAMMARE IN PYTHON 0 PARTE 22

    PROGRAMMARE IN PYTHON PARTE 22

  • 8/4/2019 Full Circle Magazine 48

    14/48full circle magazine n. 48 14 indice ^

    dall'utente, si imposta il percorsocorrente alla cartella in cui siamo,rimuove la finestra di dialogo dallamemoria e ritorna i dati allafunzione chiamante. Se, d'altraparte, l'utente ha scelto il pulsante'Annulla', si rimuovesemplicemente la finestra dalla

    memoria. Ho inserito un'istruzioneprint solo per mostrarvi che lapressione del pulsante hafunzionato. Potete lasciarla orimuoverla. Notate cheselezionando il pulsante Aprisaranno restituiti due insiemi divalori:'fileselection', una lista di fileselezionati dall'utente, eCurrentPath.

    Affinch la funzione faccia qualcosaaggiungete la seguente riga sottola routine on_tbtnAdd_click...

    fd = FileDialog()selectedfiles,self.CurrentPath =fd.ShowDialog(0,self.CurrentP

    ath)

    Qui recuperiamo i due valori diritorno. Per il momento,aggiungete il codice seguente pervedere l'aspetto dell'informazioneritornata.

    for f in selectedfiles:

    print "User selected %s"%fprint "Current path is %s"%self.CurrentPath

    Quando eseguite il programma,fate clic sul pulsante 'Aggiungi'.Vedrete la finestra di dialogo. Ora

    spostatevi dove tenete i file eselezionateli. Potete tenerepremuto il tasto [ctrl] e fare clic supi file per selezionarliindividualmente, o il tasto [shift]per selezionare pi file contigui.Fate clic sul pulsante 'Apri' econtrollate la risposta nelterminale. Si noti che se fate clic sulpulsante 'Annulla' proprio ora,

    otterrete un messaggio di errore.Questo perch il codice soprapresume che nessun file siaselezionato. Per il momento nonpreoccupatevene, ce neoccuperemo a breve. Quello che mipreme evidenziare che vediatecosa otteniamo quando si sceglie ilpulsante 'Apri'. Una cosa chedovremmo fare aggiungere un

    filtro alla finestra per i file. Datoche ci aspettiamo che l'utenteselezioni file musicali, noidovremmo (1) dare l'opzione pervisualizzare solo questi e (2) dare lapossibilit per mostrare tutti i file,se necessario. Lo facciamoconfigurando l'attributo FileFilter

    della finestra di dialogo. Ecco ilcodice da inserire nella sezionewhich == subito dopo la riga cheimposta la finestra.

    filter = gtk.FileFilter()filter.set_name("MusicFiles")

    filter.add_pattern("*.mp3")filter.add_pattern("*.ogg")filter.add_pattern("*.wav")dialog.add_filter(filter)filter = gtk.FileFilter()filter.set_name("All files")filter.add_pattern("*")dialog.add_filter(filter)

    Stiamo configurando due "gruppi",uno per i file audio(filter.set_name("Music Files")) e

    l'altro per tutti i file. Usiamo unoschema per definire i tipi di file chedesideriamo. Ho definito treschemi, ma potete aggiungerli orimuoverli a piacere. Ho inseritoprima il filtro per la musica, datoche dovrebbe essere quello che piinteressa all'utente. Quindi i passisono... Definire la variabile filter. Impostare un nome. Aggiungere uno schema. Aggiungere il filtro alla finestra didialogo.Potete avere quanti filtri volete.Notate anche che una voltaaggiunto il filtro possibileriutilizzarlo.

    Ritorniamo alla funzioneon_tbtnAdd_clicked, commentatele ultime righe inserite esostituitele con questa

    line.self.AddFilesToTreeview(selec tedfiles)

    cos ora la nostra funzione apparecome il codice mostrato nellapagina seguente.

    Cos, quando riceviamo la rispostadella finestra di dialogo, invieremola lista contenente i file selezionatia questa funzione. Una volta qui,definiamo una variabile contatore(quanti file stiamo aggiungendo),

    quindi scorriamo la lista. Ricordateche ciascuna voce contiene il nomecompleto di percorso edestensione. Divideremo questastringa in percorso, nome edestensione. Prima troviamo l'ultimo'punto' e assumiamo che questo sial'inizio dell'estensione eassegniamo la sua posizione allastringa extStart. Quindi cerchiamo

    l'ultimo '/' per determinare l'iniziodel nome del file. Quindisuddividiamo la stringa inestensione, nome del file epercorso. Inseriamo questi valori inuna lista chiamata 'data' el'aggiungiamo alla playlistListStore. Poich abbiamo

    PROGRAMMARE IN PYTHON 0 PARTE 22

    PROGRAMMARE IN PYTHON PARTE 22

  • 8/4/2019 Full Circle Magazine 48

    15/48full circle magazine n. 48 15 indice ^

    def on_tbtnAdd_clicked(self,widget):fd = FileDialog()selectedfiles,self.CurrentPath =

    fd.ShowDialog(0,self.CurrentPath)self.AddFilesToTreeview(selectedfiles)

    Ora dobbiamo creare la funzione che abbiamo appena chiamato.Inserite questa funzione dopo on_btnSavePlaylist_clicked.

    def AddFilesToTreeview(self,FileList):counter = 0for f in FileList:

    extStart = f.rfind(".")fnameStart = f.rfind("/")extension = f[extStart+1:]fname = f[fnameStart+1:extStart]fpath = f[:fnameStart]data = [fname,extension,fpath]self.playList.append(data)counter += 1

    self.RowCount += counterself.sbar.push(self.context_id,"%s files addedfor a total of %d" % (counter,self.RowCount))

    PROGRAMMARE IN PYTHON 0 PARTE 22

    terminato il lavoro, incrementiamoil contatore. Per finireincrementiamo la variabileRowCount che contiene il numerototale delle righe in ListStore equindi mostriamo un messaggio

    nella barra di stato.Ora potete avviare il programma evedere i dati nella vista ad albero.

    Come sempre, l'intero codice puessere trovato all'indirizzohttp://pastebin.com/JtrhuE71.

    La prossima volta finalizzeremol'applicazione, aggiungendo lefunzioni mancanti, ecc.

    Greg Walters il proprietario dellaRainyDay Solutions, LLC, una societdi consulenza in Aurora, Colorado eprogramma dal 1972. Ama cucinare,fare escursioni, ascoltare musica epassare il tempo con la sua famiglia.

    GLI SPECIALINON PERDETEVELI!

    Edizioni speciali di FullCircle distribuite inmondo ignaro*

    IL SERVER PERFETTOEDIZIONE SPECIALEQuesta una edizionespeciale di Full Circle che laristampa diretta degli articoliIl Server Perfetto che sonostati inizialmente pubblicatinei numeri da 31 a 34 di Full

    Circle Mgazine.

    http://fullcirclemagazine.org/special0edition010the0perfect0server/

    PYTHONEDIZIONE SPECIALE #1

    Questa una ristampa di

    Programmare in Pythonparte 10 8 di Greg Walters

    http://fullcirclemagazine.org/python0special0edition01/

    * NFull Circle magazine, ni suoicreatori, siscusano pereventuali isteriecausatedal rilasciodelleloro pubblicazioni.

    http://pastebin.com/JtrhuE71http://pastebin.com/JtrhuE71http://fullcirclemagazine.org/special-edition-1-the-perfect-server/http://fullcirclemagazine.org/special-edition-1-the-perfect-server/http://fullcirclemagazine.org/special-edition-1-the-perfect-server/http://fullcirclemagazine.org/python-special-edition-1/http://fullcirclemagazine.org/python-special-edition-1/http://fullcirclemagazine.org/python-special-edition-1/http://fullcirclemagazine.org/special-edition-1-the-perfect-server/http://pastebin.com/JtrhuE71
  • 8/4/2019 Full Circle Magazine 48

    16/48

    full circle magazine n. 48 16 indice ^

    HHOOWW00TTOOScritto da Elmer Perry LLiibbrreeOOffffiiccee 00 ppaarrttee 33

    N el mioultimo articolo hoscritto come cambiare illayout dei paragrafiperformattare il vostrodocumento. Se questoapproccio utileconi documenti brevi,esso crea unamareadi lavoro qualora dovestedecidere di cambiare qualcosain undocumentolungo. Eccoche dunquel'usodeglistilifacilitaogni cosa.

    LibreOffice Writerha cinquedifferentitipidi stile: paragrafo,carattere, cornice, paginae lista.Si pu

    accedere a tutti glistilifacendo clic sulpulsanteStilie Formattazionesullabarradegli strumentidi formattazione.Si aprircos la finestra pop0updi Stili eFormattazione. Si pu anche ancorare lafinestra Stili e Formattazione sullasinistra,tenendo premuto il tasto Ctrl efacendo un doppioclic negli spazi vuotidella barra degli strumentidi StileeFormattazione.

    Labarra degli strumentideglistili(sulla destra) visualizza setteicone. Leprimecinque permettonol'accesso adifferenti tipi di stile.In ordinea partireda sinistra,riguardano il paragrafo, ilcarattere, la cornice, lapaginae le liste.Su questoarticoloci concentreremo su

    glistilidi paragrafoe di carattere.

    Apriteun nuovo documentodi testoe scrivete un titolo. Apritequindi la

    finestra Stili e Formattazione.L'iconarelativaal paragrafodovrebbe essereselezionatacome predefinita. Nellaparte in basso dellafinestra Stili eFormattazione c'un men a tendina.Fate clic sulmen e selezionate Stili diTesto.Doppio clic su titolo.Il vostrotitolo quindi verrcentrato,si

    ingrandir e diverr grassetto.Adessovediamo come cambiare lostilepredefinito per i titoli. Nella finestraStili e Formattazione, fare clic coniltasto destrodel mouse sullo stile deltitolo e selezionare "modifica". Lafinestra chesi aprirsomiglia molto aquella gi vistanell'articolo precedente,ma ci sono alcune nuove linguettenonpresentinella finestrastandard relativaai paragrafi. La prima la linguettaGestione.Gestione(sotto) mostra ilnome dello stile, lo stile successivo dausare e lo stile collegato. Potrete

    notarecome lo stile successivo siasottotitolo, ma nonvogliamo usarealcun sottotitolo, per cui lo cambieremoin stiledelCorpo testo. Questofa schequando premiamo Invio percominciare un nuovoparagrafo, ilparagrafosuccessivo userlo stile

    CorpoTesto. Lo stile deltitolo collegato con lo stile Intestazione.Quando gli stili sonocollegati,qualunque cambiamento sullo stileparente ha effetti sugli stilicollegati adesso. Ad esempio, se cambiate il testodell'Intestazione nel colore blu,tuttiglistili ad esso legatiavranno allo stessomodo iltesto in blu.

    Ora, formattiamo il titolodifferentemente dal valore predefinito.Fateclicsulla linguetta"EffettoCarattere". Effetto Carattere(nella

    pagina seguente,in alto a sinistra)permette di cambiare l'aspetto delcarattere, inclusi colore, barrato,sottolineature, ombrae contorno.Lafinestra di dialogo mostra in temporeale come glieffetti condizionanol'aspetto deltesto. Cambiate il colorein

    LIBREOFFICE PARTE 3

  • 8/4/2019 Full Circle Magazine 48

    17/48

    full circle magazine n. 48 17 indice ^

    blu,sottolineandolo con ondulatodoppio e concolore dellasottolineatura blu.Fate quindi clicsuOK.

    Premete Invio periniziareun nuovoparagrafo. Notateche lo stile cambiato in Corpo Testo proprio

    comeabbiamo impostatonellalinguettaGestione. Adesso, scrivete treparagrafidi testo da usare peril nostrodocumentodi esempio.

    Quindi, modificheremo lo stileCorpoTestoe ne creeremo duenuovibasati sullo stile Corpo Testo.

    Tornandonella finestraStilieFormattazione, fare clic sulmen atendina e selezionare la categoriaStilidi testo.Clic destrosu CorpoTesto eselezionate modifica.Sulla linguettaRientro e Spaziatura, cambiate laspaziatura dellerighe ad 1.5e la Primarigaa .5. Fate clic su Ok. Noterete chei nostri cambiamenti hanno influenzato

    tutti e trei paragrafi.

    Adesso, creiamo un paragrafoperlunghe citazioni. Muovete il cursore inun punto qualunque del secondoparagrafo. Nella finestra degli stili, clicdestrosu Corpo Testo e selezionateNuovo. Sulla linguettaGestione,

    dategli il nomeBlockquote.Cambiateil successivo stile in CorpoTesto, datoche difficilmenteavremo lunghivirgolettatiin unariga.Noteretechedalmomento cheabbiamo creatounnuovo stilefacendo clic conil destrosuCorpo Testo,esso collegato inautomatico al Corpo Testo. Per creare

    un nuovo stile chenon siacollegato adun altro, cambiare il collegamento connessuno.

    Ora cambiamola formattazionedelnostro nuovostile. Sulla linguetta"Rientro e spaziatura",cambiamo ilvalore diPrima del testo e Dopo iltesto in .5. Cambiareil valorediPrima riga in .. Sulla linguetta"Carattere", modificare il tiposucorsivo. Clic su OK e potrete notarecome un nuovo paragrafodi nomeBlockquotesia statoaggiuntoalla

    lista. Ancorauna volta,muovere ilcursore su un punto qualunque delsecondo paragrafoe fare doppioclic suBlockquote. Vedrete ora che il rientrodellaprima linea stato spostato via, ilparagrafo giustificatosu entrambi ilati e iltesto in corsivo.

    Vogliamoquindi cambiare il primo

    paragrafo,dandogliqualchecapolettera.Vistochevogliamoche ilprimoparagrafo di ognicapitolo abbiaquesto aspetto,creeremo un altro stile.Di nuovo,fateclic con ildestro delmouse su CorpoTestoe selezionate"Nuovo". Rinominate il nuovo stile inPrimoParagrafo e cambiate lo stilesuccessivo su "CorpoTesto". Su"Rientro e spaziatura",cambiate ilrientro dellaprima riga su .. Sullalinguetta "Capolettera" (nella figurasotto) selezionate Mostracapolettera, impostate il Numero dei

    LIBREOFFICE 0 PARTE 3

    LIBREOFFICE PARTE 3

  • 8/4/2019 Full Circle Magazine 48

    18/48

    full circle magazine n. 48 18 indice ^

    caratteri su 1 e Righe su2. Fate clicsu OK.Ancorauna volta,non riusciremoa vedere ancora alcun cambiamento.Muovete il cursore nelprimoparagrafoe fate doppioclic sulnuovostile.

    Abbiamo bisogno che questo nuovostile paragrafoseguaogni titolo di un

    nuovo paragrafo. Modificate allora lostile deltitolo in modo chelo stilesuccessivo sia Primo Paragrafo.

    Lostiledeicaratteri ha effetto solosul testoselezionato e non sull'interoparagrafo. Nel terzoparagrafoselezionate del testo. Fateclicsull'icona"Stile di carattere" nella finestradeglistili, poifate doppioclic su Enfasi.Questorender corsivo il testoselezionato.Si possono modificare gli

    stili delcarattere nello stessomodo incui modificategli stili del paragrafo.

    Il vantaggiochiave degli stili rendere la formattazione del testo

    omogenea in tutto il documento. Nelprossimo articoloparleremodi comeaggiungerecornici al propriodocumento.

    Elmer Perry fa l'educatore di ragazziad Asheville, in North Carolina e tra isuoi hobby ci sono il web design, laprogrammazione e la scrittura.

    LIBREOFFICE 0 PARTE 3

  • 8/4/2019 Full Circle Magazine 48

    19/48

    full circle magazine n. 48 19 indice ^

    HHOOWW00TTOOScritto da Kevin O'Brien TTrroovvaarree eebbooookk

    Q uando state cercandodegli ebook vi unaquantit di fattori chedovreste tener da conto:

    dispositivo di lettura, formati, DRMe prezzo sono alcuni che intendotrattare in questo articolo.

    Lettori

    La prima decisione che doveteprendere su quale dispositivointendete leggere i vostri ebook. Letre grandi librerie online negli StatiUniti, Amazon (Kindle), Barnes &Noble (Nook) e Borders (Kobo)offrono ciascuna un dispositivodedicato per leggere gli ebook. E lecompagnie di elettronica diconsumo come Sony (Reader)stanno cominciando ad offriredispositivi. Tra i vantaggi di questidispositivi vi che offrono il fattore

    aspetto vicino a quello di un verolibro stampato; con l'e0ink spessosono pi facili da leggere; e con l'e0ink offrono una durata dellabatteria davvero lunga (ben duesettimane tra le cariche). Glisvantaggi sono che sono un altrodispositivo da portare in giro;

    costano tra 1 e 2 dollariognuno; e sono limitati nei formatiche possono gestire.

    L'opzione che segue, che stadiventando molto popolare, utilizzare una applicazione e0readerin esecuzione su un dispositivotablet come l'iPad o uno dei tantitablet Android. Tutte e tre lelibrerie citate sopra, offronoapplicazioni gratuite per i tablet.Queste vi consentono di cercare eacquistare libri dal vostro tablet e

    poi di scaricarveli.

    L'ultima opzione e quella cheuso, utilizzare software sul miotelefonino Android. Nel mioprecedente articolo ho trattatol'applicazione Aldiko che ha siaversioni gratuite che poco costose.Ho anche installato le treapplicazioni delle librerie.

    Personalmente trovo questa lamigliore opzione per una sempliceragione: ho sempre il telefono conme. Cos, in qualunque momentoabbia alcuni minuti da ammazzare,posso tirar fuori il mio telefono eleggere un po'.

    Formati

    Tristemente, quanto ai formatinon vi uniformit negli ebook.

    Alcuni dei formati sono stati in giroda un po' come il formato PDBusato dal Palm Pilot. Altri sonoproprietari, come il formato diAmazon AZW. Nell'articoloprecedente vi ho mostrato comeconvertire libri tra molti formatinon protetti utilizzando Calibre.Dato che il mio software e0readerprimario preferisce epub, cerco i

    libri in quel formato o libri che nonsiano protetti che possa convertirein quel formato. Bisogna chevediate quale formato pu essereletto per decidere su un dispositivoo software di lettura.

    DRM

    Sembra che passeremoattraverso una gran quantit didifficolt con gli editori di tutti imedia per le restrizioni digitali. cominciato con l'industria musicaleche adesso sembra starecominciando a capire come tenersi iclienti fornendo musica in file

    comodi che non siano bloccati. Io,tra E0music e Amazon, acquistotutta la musica che voglio insemplici file mp3 non protetti.

    Sfortunatamente le case editricistanno ancora rivaleggiando pervedere chi riesce ad essere il piirritante per i loro clienti. Anche sevi sono vari modi illegali per trovareebook, non intendo spiegare comefarlo. Vi far notare che queste'alternative' tendono ad essere dibassa qualit e non moltosoddisfacenti. E ho scoperto che

    posso ottenere del tuttolegalmente libri di alta qualit e chesiano senza DRM.

    Prezzo

    Se andate su una libreria onlinecome Amazon e date un'occhiata ingiro vedrete che molti libripubblicati oggigiorno vengonoofferti nei formati elettronici nellostesso momento in cui escono leversioni cartacee. L'aspettonegativo che tendono ad essereofferti a prezzi che sono tanto alti,se non pi alti delle edizionirilegate. Ma vi sono delle eccezioniche sono proprio piacevoli. E vi

    HOWTO TROVARE EBOOK

  • 8/4/2019 Full Circle Magazine 48

    20/48

    full circle magazine n. 48 2 indice ^

    sono posti dove potete ottenerelibri gratis del tutto legalmente.

    Progetto Gutenberg

    Se conoscete la storia potrestericonoscere il nome Gutenbergcome quello della persona a cui attribuito lo sviluppo della stampa(in Occidente, credo). Questoprogetto online

    (http://www.gutenberg.org/wiki/Main_Page) ha preso il suo nome percreare una biblioteca di libri gratuitiche sono nel Pubblico Dominio. Ilibri in Pubblico Dominio non sonopi soggetti al copyright e vi sonomolti buoni libri, inclusi molti deiclassici, che ricadono in questa

    categoria. Eccovi alcuni libri chepotete trovare che sono statiselezionati dalla rivista Wired(ottobre 21) come i miglioriebook gratuiti che potete trovarequi:

    Un Americano alla corte di Re Art,di Mark Twain Sotto le lune di Marte, di Edgar Rice

    Burroughs

    Frankenstein: o il moderno

    Prometeo, di Mary Wollstonecraft

    Shelley

    I viaggi di Gulliver, di Jonathan

    Swift

    Le Avventure di Sherlock Holmes, di

    Arthur Conan Doyle

    Le avventure di Alice nel Paese

    delle Meraviglie, di Lewis Carroll

    Il progetto Gutenberg ha 33.libri disponibili cos nonmancheranno dei buoni libri daleggere. Naturalmente questi librinon sono gli ultimi best0sellers.

    Baen Books

    La Baen Books(http://www.baen.com/) stafacendo qualcosa di davvero bello espero per loro che funzioni bene.Hanno creato un qualcosa di nomeBaen Free Library in cui offrono peril download libri di alta qualit,assolutamente gratuiti e senzaDRM. Se sei un appassionato di

    fantascienza e fantasy (e credo chemolte persone che leggono questoarticolo lo siano) questo un modofantastico di cominciare a costruirela vostra biblioteca. Offrono ancheuna variet dei formati pi popolari.

    Adesso potreste chiedere qualesia il loro modello di affari. E larisposta che la Free Library solo

    una selezione della loro pi vastacollana di libri. Per esempio potetescaricare gratuitamente il primolibro della popolare serie di DavidWeber su Honor Harrington. 'OnBasilisk Station'. Se vi piace, nehanno almeno pi di 9 e sonodisponibili solo per 6 dollari

    ciascuno, in file di alta qualit senzaDRM. Ho scaricato un sacco di libri

    gratuiti ma ho anche acquistato daloro una mezza dozzina di libri.Controllo il loro sitoperiodicamente per vedere se c'qualcosa di nuovo. Vale la penavisitare il loro sito anche per altricontenuti gratuiti e per le interviste

    d'autore.

    WebScription

    Questo(http://www.webscription.net/) una ramificazione del sito di ebookdella Baen, ma offre anche libri di

    HOWTO 0 TROVARE EBOOK

    HOWTO TROVARE EBOOK

    http://www.gutenberg.org/wiki/Main_Pagehttp://www.gutenberg.org/wiki/Main_Pagehttp://www.gutenberg.org/wiki/Main_Pagehttp://www.gutenberg.org/wiki/Main_Pagehttp://www.baen.com/http://www.baen.com/http://www.baen.com/http://www.webscription.net/http://www.webscription.net/http://www.webscription.net/http://www.baen.com/http://www.gutenberg.org/wiki/Main_Page
  • 8/4/2019 Full Circle Magazine 48

    21/48

    full circle magazine n. 48 21 indice ^

    una variet di altri editori. AceTrade, DelRey e Tor sono tra le pi

    grandi case editrici che salgono abordo come la Subterranean Presse Nigthshade Books. Comepotreste attendervi dallaconnessione Baen, tutta laselezione sembra esserefantascienza o fantasy.

    ManyBooks.net

    Questo sito trae molto del suocontenuto dal Progetto Gutenberg,ma aggiunge anche alcuni materialiche non sono sul Pubblico Dominioma che sono stati resi disponibili. Viho trovato libri che sono attuali (ades. 'Accelerando' di Charles Stross)cos vale la pena verificare.

    Fictionwise

    Fictionwise(http://www.fictionwise.com/ebooks/multiformat.htm) offre libri (ealcune riviste) a prezzi moltoragionevoli e senza DRM. Laselezione prevalentemente su

    fantascienza e fantasy ma va oltre.Sembrano avere molti romanzirosa, se questo ci che vi piace.Valuterei questo sito pi in altoeccetto il fatto che sembra abbiano

    un loro formato proprietario e virichiedono di usare il loro lettore. Illettore gratis da scaricare ma nonhanno una versione per Android ecos non li ho provati. Comunque ilresto dell'offerta sembra piuttostobuona cos se siete interessatiprovatelo.

    Cory Doctorow

    Cory Doctorow(http://craphound.com/?cat=5) simerita una menzione tutto da soloa causa della sua presa di posizionesulle libert. Egli insiste che i suoilibri siano disponibili senza DRM e

    si oppone ai DRM in tutte le forme.Ha reso disponibili sul suo sito webversioni ebook gratuite dei suoilavori e a dispetto di ci, le suevendite continuano a salire. Il suopunto di vista che le due cosesono collegate: pi persone sonoesposte al suo lavoro, piprobabilmente compreranno i suoilibri quando ne avranno la

    possibilit. Proprio adesso potetescaricare dal suo sito versioni diqualit, senza DRM e senza costi elui non lascia neanche che mettiatedel denaro nella boccia dellemance. Dice che, se voletesostenerlo, comprate una copiacartacea e donatela a una

    biblioteca. Un consiglio piuttostobuono, penso.

    Sommario

    Questa solo una istantaneadel mercato come proprio adesso

    (sto scrivendo questo pezzoall'inizio del 211). Scommetto chetra un anno le cose sarannomigliori. Molti degli autori sirendono conto che costosi ebookcon DRM non stanno facendo loroalcun favore e stanno solorestringendo il loro mercato.Proprio come hanno scoperto imusicisti, costituire una base di

    ammiratori alla lunga moltomeglio. Cos credo checominceremo a vedere editori cheproveranno ad offrire libri piconvenientemente.

    Ma, fino a che quel giorno arrivi,abbiamo alcune opzioni. Gradireifar notare anche, che i siti comeProgetto Gutenberg e

    ManyBooks.co chiedono delledonazioni. Se li state usando perottenere ebook gratis, offritegliuna donazione per aiutare adespandere le proposte che possonomettere a disposizione. proprio lacosa giusta da fare.

    HOWTO 0 TROVARE EBOOK

    http://www.fictionwise.com/ebooks/multiformat.htmhttp://www.fictionwise.com/ebooks/multiformat.htmhttp://www.fictionwise.com/ebooks/multiformat.htmhttp://craphound.com/?cat=5http://craphound.com/?cat=5http://craphound.com/?cat=5http://www.fictionwise.com/ebooks/multiformat.htm
  • 8/4/2019 Full Circle Magazine 48

    22/48

    full circle magazine n. 48 22 indice ^

    HHOOWW00TTOOScritto da David W. Mawdsley SSeemmaaffoorrii ccoonn AArrdduuiinnoo

    C

    on la compagnia Heathkitscomparsae con unmoderno computer coninusoUbuntu1.4LTS,

    trovai un sito webchedescrivevaminuziosamente un micro0controllerdi nome Arduino a www. arduino.cc(non .com). Perl'alimentazione e laconnessione al computer usava uncavo usb. Arduino Unoeraaccessibilea 3 dollari. Una simulazionedisemaforo sembr propriol'esperimento divertente da provare.

    Per far siche lecosefunzionassero richiese solo trecompiti principali: Installare econfigurare l'IDE (IntegratedDevelopementEnvironment) diArduino, trovare i cavi perla basettasperimentale e le porte necessarie diArduino e scrivere un sempliceprogramma in C seguito dalcaricamento del codice compilato sul

    micro0controller Arduino.

    Il compito 1 fu semplice, il 2 diroutine conqualche studio diaggiornamento e il 3 richiese unapiccola curva di apprendimento sulleprocedure delC insieme conalcunicomandi nuovi,specifici perle porte

    di Arduino. Caricare il codicecompilato sul micro0controller fufacile. In qualche giorno di affanni ilmio sistema funzion come

    progettato. Pitardi aggiornai il miocodice perincluderesulcircuito uncicalino.

    Parte 1: Installare l'IDEArduino

    (per dettagli vederehttp://arduino.cc/playground/Linux/Ubuntu)

    Perla miainstallazione usai lasezione della pagina Ubuntu senzapacchetto'arduino'. (la vostrainstallazione potrebbe variare.)

    Scaricateil file .gtz e installatelocon il Gestore di Archivi:arduino022.gtz (dahttp://arduino.cc/en/Main/Softwareusandoil pacchettoLinux a 320bit)

    Installate il compilatore e ipacchettidelle librerie:

    sudo apt-get install gcc-avravr-libc

    Per colorocheper dialogareusano la porta usb, aggiungetevi algruppo 'dialout' peravere i permessidi scritturasu quella porta con:

    sudo usermod -aG dialout

    Dopo per eseguire l'applicazione,aprire la cartellaarduino022, fareclic coltasto destro su arduinoescegliere Esegui. Una volta chel'IDE in esecuzione selezionate la vostrascheda(lamiaeraArduino Uno) daTools>Board.

    Parte 2: cablare labasetta sperimentale econnetterla ad Arduino

    Ecco le parti che usai per

    completare la cablatura (per lamaggior parte provenienti da RadioShack)

    basetta sperimentale e alcunebobine realizzate con filo rigidoisolato con sezione 22 spinotto di alimentazione da 2.1mm e connettore per batteria da 9volt (con contatto rosso saldato alcentro, contatto nero sulla parteesterna del connettore) batteria da 9 volt LED: 2 rossi, 2 verdi, 1 giallo(ognuno approssimativamente conun consumo di 2.1 mA. Fate casoall'orientamento dei piedini!) interruttore a pulsante per basetta 3 Mini Cicalini VDC (Radio Shack273053) resistenze da 5022 Ohm, 2015Ohm, 101k Ohm (tutte da 1/8 diWatt accettabile)

    HOWTO 0 SEMAFORI CON ARDUINO

    http://arduino.cc/playground/Linux/Ubuntuhttp://arduino.cc/playground/Linux/Ubuntuhttp://arduino.cc/playground/Linux/Ubuntuhttp://arduino.cc/en/Main/Softwarehttp://arduino.cc/en/Main/Softwarehttp://arduino.cc/playground/Linux/Ubuntu
  • 8/4/2019 Full Circle Magazine 48

    23/48

    full circle magazine n. 48 23 indice ^

    HOWTO 0 SEMAFORI CON ARDUINOSotto mostrato lo schemadi

    cablaturae unapanoramica delmioArduino montato su unacornice dilegno con la basetta sperimentale e ifili. (La tavolettaLego e stata usatapertenereinsieme le coseapprossimativamente.)

    Parte 3: Scrivere ilcodice usando C ecaricare il codicecompilato su ArduinoUno

    Dopo alcune letture sulsito diArduino e con del codice preso in

    prestito, il codice delprogetto

    usandogedit ebbe unapagina dilunghezza. Il file venne poirinominato 'trafficligthsound.pde'dentro unacartella di nome'trafficligthsound', il nomedell'estensione e il nome dellacartellacorrispondente che Arduinosembravarichiedere. Facendo clic

    sulla freccia d'avvio dell'IDEa sinistra,ci fu unaverifica e unacompilazionedel codice a 1468byte.

    Il codice sorgenteper il semaforocon Arduino puesseretrovato a:http://pastebin.com/ACk9u937

    Dopo la connessione concavo usbtra computer e micro0controller, un

    clic sulla freccia destradelsecondo

    quadrato della fila dell'IDEavvi il caricamento delbytecode sulmicrocontroller. Una voltacaricato, l'Arduino Unoesegu le varie luci ecicalino comeprogettato.

    Dopo averdisconnessoil cavo usb e aver connessola batteria da 9 volt, ilprogetto venne eseguitoindipendentemente dalcomputer. Il programmacontinuerad eseguirsi inloop fino a che non vienerimossa l'alimentazione.

    http://pastebin.com/ACk9u937http://pastebin.com/ACk9u937
  • 8/4/2019 Full Circle Magazine 48

    24/48

    full circle magazine n. 48 24 indice ^

    HHOOWW00TTOO

    GuideL'unica regolaperscrivere un articolo

    che deveessere comunquecollegatoadUbuntuo aduna delle molte

    derivatedi Ubuntu (Kubuntu,Xubuntu,Lubuntu ecc). Scrivete il vostroarticolocon qualunquesoftware scegliete.Vorreiraccomandare OpenOffice,maCORTESEMENTE CONTROLLATEL'ORTOGRAFIA E LA GRAMMATICA!

    ScritturaVipreghiamodi indicare nelvostro

    articolo dove vorreste chevenisseposizionataun'immaginein particolare.Perfavore nonmettete immaginiincorporatenel vostrodocumentoOpenOffice.

    ImmaginiLe immaginidovrebbero esserein

    formatoJPGconuna bassacompressione.

    Riguardo le dimensionidell'immagine: se aveteun dubbio,inviateci l'illustrazione a dimensionepienae provvederemo noiaricampionare l'immagine.

    Se state scrivendounarecensionepercortesia seguite le linee guidachesono mostrate qui.

    Perunapi dettagliatalista delleregole stilistiche e perglierroripicomunisi pregadi fare riferimentoall'indirizzo:https://wiki.ubuntu.com/UbuntuMagazine/Style 0 In breve:OrtografiaUS,nienteparolecombinate(es: l33t) e nientefaccine.

    Quandosieteprontia presentare ilvostroarticolo perfavoreinviatecelo

    all'indirizzoemail:[email protected]

    Senon siete capacidi scrivere unarticolo mafrequentate il forumdiUbuntu, inviateci gli argomentiinteressantichepotremmo stampare.

    Scrittori non0inglesi

    Selavostralinguanativanonl'inglese,non preoccupatevi. Scrivetel'articoloe unrevisore di bozze loleggerper voie corregger qualunqueerroregrammaticale e ortografico.Nonsolo, state aiutandolarivistae lacomunit, manoivi aiuteremoamigliorareil vostroinglese!

    Scritto da Ronnie Tucker SSccrriivveerree ppeerr FFuullll CCiirrccllee MMaaggaazziinneeRECENSIONI

    Giochi/ApplicazioniMentre scriveterecensioni riguardanti i giochi o le applicazioni, vi

    preghiamodi essere chiari nelloscrivere:

    titolo delgioco chi hacreatoilgioco se gratiso a pagamento dove lo si putrovare (link download/URLdella home page) se ungioco nativo per Linuxo avete usato Wine il vostrogiudizio conun massimo dicinque unsommario conpuntipositivi e negativi

    HardwareMentre scriveteunarecensione riguardante l'hardware per favoresiate chiari nelloscrivere:

    marca e modellodell'hardware inqualecategoriavorreste inserire questohardware eventualidifetti chesi potrebbero incontrare durante l'utilizzodell'hardware se facilefareinmodochel'hardware lavoricon Linux se necessario aver bisogno di usare driverWindows il vostrogiudizio conun massimo dicinque

    Non bisogna essere esperti per scrivere unarticolo: scrivete una recensione che riguarda igiochi, le applicazioni e l'hardware che usate tuttii giorni.

    https://wiki.ubuntu.com/UbuntuMagazine/Stylehttps://wiki.ubuntu.com/UbuntuMagazine/Stylehttps://wiki.ubuntu.com/UbuntuMagazine/Stylehttp://[email protected]/http://[email protected]/https://wiki.ubuntu.com/UbuntuMagazine/Style
  • 8/4/2019 Full Circle Magazine 48

    25/48

    full circle magazine n. 48 25 indice ^

    LLIINNUUXX LLAABBScritto da Robin Catling

    S ono stato spinto dal miocollega di podcastecompagno opinionista EdHewitt a modificareun'affermazione cheho fatto in FileSystem Parte 1, secondo la quale nonsi porter a termine una installazioneLinux senza definire una partizione diswap. Mentrela maggior parte degliinstallatoriquestigiorni ve lo lascerfare avvisandovi su come cisiasconsigliabile, in pochi fermeranno ilvostro cammino per questo 'peccato'.Facciamo un passo indietro perun

    momento.

    Perch serve unapartizione di SWAP perLinux?

    Le partizioni di swap sononecessarie per quei computer chehanno menomemoria fisica (RAM) di

    quanta ne serva alle applicazioni. Sipensi a una partizione swap come a undispositivo di memoria temporaneoimpiegatoquando tutta la memoriafisica utilizzata, senza ulteriore spazioperi datie i programmi. Data lacomplessitdei sistemi operativiattualmenteeseguiti, con grafica

    avanzata, programmi di grandidimensioni e processi multipli, si faprestoa usare completamente lerisorse di memoriafisica. In questocaso il sistema operativo scambier

    alcuni dei programmi e dei daticon ildispositivo di memoriatemporaneo. Conabbondanza dimemoria fisicadisponibile, lapartizionediswappotrebbe nonessere maiutilizzata e lospazio sarebbesprecato. Quindila questione realmente 'quantaRAMc'nella macchina ela riempir mai oltre lacapacit?'. Rispondere di si e sipotrebbe beneficiare di una partizione

    swap. Potrebbe non essere necessariatutte le volte,ma eviter congelamential vostro computer in tempidisovraccarico.

    Come sapere se ne serveunaono?

    Scusandomi di rispondere a unadomanda conaltre domande, maqual' il caso d'uso?Qual' il sistemaoperativo e il caricodi lavoromassimo?

    Siprenda unnetbookcon 1 GBdiRAMe l'edizione Netbookdi

    Ubuntu;principalmentepernavigare sulweb,

    scrivere e0mailetrattare

    saltuariamentequalchedocumento? Sipotrebbe nonriempire mai

    tutta la memoriafisica. Partizione

    swap necessaria? No.Comunquesaltando su

    Skype peruna conferenzacon5 schede apertein Firefox,

    probabilmente si ruzzolerebbepropriolnell'area di swap. A meno che nonsiate Ed e tutto si blocca. Inserire unafaccina sorridente qui. Il mio vecchioToshiba Satellite ha soltanto 196MB diRAM. L'esecuzione di un pesoleggerodi Linuxquale Crunchbang o DSL peralcune leggere navigazioni va benesenza swap. Passando a Lubuntu 1.1con LibreOffice e Firefox avviati,

    ruzzola nell'area di swap.

    IlmioDell64con4GBdiRAMeUbuntu 1.1 a pienocarico va beneconFirefox, Chrome e OpenOffice

    avviati tutti insieme, non utilizzandol'area di swap tutto il periododell'intera sessione. Lanciando l'editordi suoni Audacity e l'editordi videoOpenShot per alcuni lavori sui podcaste l'alta definizione YouTube,tornerei autilizzare l'area di swap.

    Ogni macchina cheesegue unsistema operativo completo e attuale

    (non un pesoleggero) conuna piccolaquantit di memoria fisica,probabilmente256MB o meno,necessiter di una partizione di swap.Con l'aumentare dei carichi di lavoro,conpiprogrammi apertiche lavoranosu file di datipi grandi, sispinger illimite della memoriafisica, che si trattidi512MB, 1GB, 2GB o pi, nell'area diswap.

    Perch una interapartizione?

    C'un approccioalternativo aquesto 'gestore di memoria virtuale', chiamato file di paging. Sia in Windows

    UUssoo ddeellllaa sswwaapp ppaarrttee 11 00 nneecceessssaarriiaa??

    LINUX LAB 0 USO DELLA SWAP PARTE 1

  • 8/4/2019 Full Circle Magazine 48

    26/48

    full circle magazine n. 48 26 indice ^

    LINUX LAB USO DELLA SWAP PARTE 1

    che inalcune configurazioni

    di Linux i file di pagingrisiedonosulleprincipali partizioni di programmio di dati, insiemea tutti gli altri file.Questo spesso considerato,diremo,sub0ottimale,siaper le prestazioni cheperla sicurezza deidati.Il file dipagingpu essere molto ampio, esigendo, arichiesta, velociscritture su disco.Pucausare colli di bottiglia inEntrata/Uscita e quando si ha avuto unfile di pagingWindows chestraccia unbel pezzo della partizione attiva,perdendo preziosi dati e programmi, si

    apprezza l'approccio Linux, isolandol'area di swap da tutto ilresto.

    Quanta dimensione delfile di swap serve?

    Come si visto, forse nulla. Quandoserve, il trucco bilanciare l'uso di una

    pipiccola e piveloceRAM contro un pilento e pi ampio disco,sipu(omeglioilkerneldelsistemaoperativo pu)ottenere la migliore

    prestazione da questa

    combinazione.La verit che, coni modernikernelcome li abbiamo nellafamigliaDebian2.6, la gestione dellamemoria un p pi intelligente. Lavecchia raccomandazione che l'area diswap dovrebbe essere tra uno e mezzoe duevolte la memoria fisica probabilmente fin troppo generosaperuna macchina desktop, ma a malapenasufficiente perun server.Impostare un'area di swap tra la mete il totaledell'area fisica dovrebbeessere adeguato. Se si ha un portatile esi imposta su 'sospensione' del disco,allorasi necessitadi un'area di swapugualeo piampia della RAMfisica.Nel dubbio, scegliere una partizionepivasta,poichun paio di gigabytenon sarannoimperdibili, a menochenonabbiate un disco a stato solido, maquesta un'altra storia...

    Nella seconda parte, Gestionedella Memoria Virtuale, AttivazioneSwap,Disattivazione Swap.

    Un appello per il podcast party

    Comesentiretenellapuntata n.15delpodcast,chiederemo opinionitematicheperquella partedelpodcast.

    Piuttostoche aspettarechenoi sbraitiamosu qualsiasicosacipassiperla testa,

    perchnonindicarciunargomentoeprestarepoiattenzionealfungoatomicooltre l'orizzonte!altamenteimprobabilechesiamotuttie tred'accordo.

    Oppure,unpensieroancorapi radicale:inviateciun'opinioneper mezzodiuncontributo.

    Potetepubblicarecommentie opinionisullapaginadel podcast pressofullcirclemagazine.org,nellanostrasezione ForumdiUbuntuo scrivere [email protected]. Poteteinoltre inviarciuncommento tramiteregistrazionediunasequenzaaudiodinonpidi3secondieinviarlaallostesso

    indirizzo.Commentie audio potrannoesseremodificati perla lorolunghezza.Ricordatevichequesto unpodcast perfamiglie.

    Sarebbebelloavere collaboratori cheintervengonoallospettacolo edesprimonounpareredi persona.

    Robin

    http://fullcirclemagazine.org/mailto:[email protected]:[email protected]:[email protected]://fullcirclemagazine.org/
  • 8/4/2019 Full Circle Magazine 48

    27/48

    full circle magazine n. 48 27 indice ^

    LLAA MMIIAA SSTTOORRIIAAHo appenacompiuto un anno da

    quando sono un utente di Ubuntu emi stato chiesto di scrivere unarticolo riguardo la mia esperienza.L'invito mi ha causato un flashback emi chiedo, cosa ho fatto quest'anno?Bene, il primo anno ho avuto trediverse versioni di Ubuntu a partiredalla versione 9.1 alla 1.1.

    Quando ho usato per la primavolta Ubuntu, nonsapevomolto sulterminale e mi sono concentratosulla GUI. Appenaho imparatocome

    si installano i temi e si personalizza ildesktop di Ubuntu, ho iniziato adaiutare i nuovi utentiguidandoli inquestoprocesso. Il compito di capirequali pacchetti devono essereestratti, come e dove sono installati semplice dopo averlo fatto, macreanograndeconfusione a unnuovo utente.

    Vorrei menzionare un post nellasezione "ambienti desktop" delforum di Ubuntuun bell'elenco dirisorse peri nuovi utenti interessatiallapersonalizzazione dei lorodesktop[1]. L'homenzionato perchmolte domande a cui ho rispostosarebberopotute essere evitate

    usando questa risorsa.

    unabella sensazione aiutare unaltro utentedi Ubuntu e quandoinseriscono con orgogliounaschermata del lorodesktoppersonalizzato o quando inviano iringraziamenti anche meglio.

    Frogs Hair

    [1]:http://ubuntuforums.org/showthread.php?t=89695

    Ho usato Ubuntu per pi di 3 annie sono quasi completamenteindipendente da Windows e nonposso elogiare abbastanza Ubuntu.Pio meno tutti i computer vengonovenduti con Windows preinstallatoese volete usare unadistribuzioneLinux,dovete installare in boot dualeo rimuovere completamente

    Windows. All'inizio della miaincursione nelmondo Linux hoprovato con il boot duale e non stato cos bello a causa di tutti iproblemi chesono apparsi. La solainstallazione di Ubuntu definitivamente la via da prendere.Ho usato svariati programmi sotto

    Windows, chenon funzionano inUbuntu (neanche sotto WINE) mahanno vinto tutti, ma in pratica hosuperato il problema utilizzandosoftware simili presenti in Ubuntu eapplicazioni presenti sul web chesvolgonoil lavoroaltrettanto bene ein alcuni casi anche meglio.

    C'unostigma legatoagli utentidi Ubuntu e di Linux in generale; perusarlo bisogna essere esperti nelcomputer per farlo funzionare. Secontrollate i siti web fornitori di

    hardware per computer, la maggiorparte cheusano Linux sono esperticoni computer,ci implica cheWindows semplice.Non si famenzione del software aggiuntivoche necessario installare e pagareperfermare un attacco da Internet.

    Lo stigma verso Linux quindiingiustificato. Credo di non essereun

    esperto di computer e ci confermato dal fatto che incontrodifficolt nella comprensione dialcuni articoli di FCM. Ci che si deveaccettaree che c' unadiversa curvadi apprendimento. Ricordo la miaprima vera installazione di Ubuntueil messaggio che diceva chedovevo

    eseguire un comando nel terminale.Al tempo erasconcertantemaadesso non un problema.

    L'articoloriguardanteLibreOfficenell'edizione di FCMdi Febbraio erastato moltointeressante. In realtloavevo installato prima di leggerel'articolo. moltopi velocee hamolte pi caratteristiche che OOonon ha. Lo raccomando caldamente. supportato da Canonical, quindi la stradada seguire.

    Ho provato in molte occasioni aconvincere i miei colleghi di lavoroausare Ubuntu, ma hanno messolatesta nella sabbia e rimangono conXP. In ogni caso mio nipote mi hamostrato un articolo riguardanteLinux cheerastato presentato allasuascuola. Erastato scrittoestremamente bene e sono statielencati i vantaggi di avere Linux in

    aula. Ero veramente impressionato dileggere un articolo del genere e hochiesto chi lo avessescritto. Erastatoincredibilmente mio nipote, che eratanto pi sorprendentein quantohasolo nove anni.

    Allan Hambidge

    http://ubuntuforums.org/showthread.php?t=809695http://ubuntuforums.org/showthread.php?t=809695http://ubuntuforums.org/showthread.php?t=809695
  • 8/4/2019 Full Circle Magazine 48

    28/48

    full circle magazine n. 48 28 indice ^

    LLAA MMIIAA OOPPIINNIIOONNEEScritto da Allan J. Smithie

    R

    icordatela scenadi Star TrekIVincuiScottycercadifarfunzionare un PC Mac?

    Forse nonricordoesattamenteildialogoma dovrebbe essere pressapococos:

    McCoy: Devi usare ilmouse.Scotty(prende in mano il mousee ci

    parla dentro):Ciaocomputer.McCoy: Usasolola tastiera.

    Duecose:uno,miscusoperilriferimentoa StarTrek. Due,evidentemente il Mac non poi cosintuitivocome tutti pensano, persinoper uningegneredi navi spaziali delventitreesimo secolo.

    Annunciata comeun grande passoavanti, l'Interfaccia Graficadell'utente(GUI) cheuscdalla XeroxPARC,Palo

    Altonegli anni settanta, si quasiquarant'anni fa, introdussel'uso deiWIMP(Windows, Icons, Mice, Pull0downmenus).Anche se si dovrebbe scrivererigorosamente Mouses,datoche Miceil pluraledi piccoli roditori e nondidispositivi di puntamento.

    Si, laGUIfu unenormemiglioramento rispettoa quello chec'era prima. Negli Annisettanta, il DataProcessing Department faceva usodi

    schede perforate e nastri di carta. Neglianniottantaarrivarono i videoterminalidi colore verde e lenoiose digitazioni dicodice di programmazione.Provatevoiad impaginare una rivista suunodiquesti. Nonfatelo. Io l'ho fatto. Credochequellosiail perch ora ho qualchecapellogrigio in testa. L'avvento deiPCeconomici(quasi), portaronol'elaborazione informatica alle

    (relativamente benestanti) masse.LaGUIaccelertale passaggio,noncomeilcatalizzatore,quandoquestemacchinedivennero abbastanzapotenti da potereseguireuna GUIconqualcheapplicazioneinstallata.

    LaXeroxpu aver inventato laGUIcomestrumento aziendale, ma furonolaMacintoshe i Personal Computerche

    la liberarono dall'allora benfortificatogiardinodei sistemiUNIXX0windowing.Qui finalmente arrivarono le macchinechenoitutti potemmoutilizzare,o quasitutti.

    Forsestomostrandosialamiaetchela miaignoranza suifatti della storia

    dell'informatica,ma questononmi hamaifermato in passato.Posso dire conrelativacertezza che nonc' niente diintuitivonelleattualio precedenti

    generazioni di GUI. Innessuna di loro.Tutti noidobbiamo vedere comefunzionano.La funzione delmouse e deimennon un comportamento innatonell'uomo, non pidi una lingua, unaltroargomento su cui hodiscusso con imieiamici di insegnamento. Un notopresentatore televisivoamericano, harecentementeimparato come si fa aTweettare. Prima gli si dovuto

    insegnare comeoperaresul sitodiTwitter conun mouse,visto cheil suoprimo tentativofu quellodi toccare loschermo. vero. Nonnecessariamentepersoneintelligenti c'arrivano subito.Credocheil numerodi bottoni delmouse influisca in misura inversamenteproporzionale sulla curva diapprendimento.Ho sepoltounprecedente amico sotto la miaterrazza

    peraversolamente posseduto unSuper0mousedellaLogitecha settepulsanti conrotellina di scorrimento.Nonl'ho fattoveramente,ma lopensavo ogni voltacheandavo atrovarlonel suoufficio.

    Il problema invece chemigliorare

    (come unosi aspetterebbe) stapeggiorando. La molteplicitdiperiferichecoperteda Copyright,Licenzee Marchiregistrati conil loro

    relativo softwareanch'essoprotettodaCopyright,Licenzee Marchi Registrati,starendendo sempre pidifficilel'essere produttivi anzichrenderlo pisemplice. La consistenzasarebbeunamannadal cielosolocheil commerciononlo consentirebbe. Si, abbiamostandard oltre alle piattaformeindividuali, comei0OS, Windowse graziead Hewlett0Packardanche il Web0OS.

    Linux ha OpenDesktop.org. No cheriuscirestea riconoscerlofra Gnome,KDE,Xfce, LXDE, Sugar, Linpus,Chromee molte altrevarianti. Android divisomentre Meego vacillae Symbian... faqualsiasicosastia facendoin questigiorni sul mercato. Il doppiocolpetto, ilpizzicoper ingrandire e il colpettopermettere a fuoco:tutti lavorano in modoquasi similema i mendi due

    smartphone sonoraramente glistessi.

    Le icone. Queste sono religiosi lavorid'arte.La lingua universale delle iconenel mondodei computer non veramente universale e nemmenopuessere consideratauna lingua.Noncisono standard ed esiste pocacoerenza,

    LA MIA OPINIONE

  • 8/4/2019 Full Circle Magazine 48

    29/48

    full circle magazine n. 48 29 indice ^

    dato che le iconeo sonodeglielementidi interpretazioneartistica e creativaodi marketing e di marchio.

    Quitermina la lezione.

    Minority Report

    Si, intendoproprio comefacevaTomCruise conun guanto digitale, agitandolesue braccia di frontead unaproiezione olograficadi dati. Chiunqueabbia usatoun guanto digitale e unacuffia di realt virtuale, sa quantostupidepossanosembrare (hey, hopreso la maglietta delVR0expodiLondranel1995). La prenderse questosignifica niente pimouse o labirinti di

    men.Neimesi passatiabbiamoavuto iprimi segni conla Kinecte il controllerWii0motion.Si sembrateancoradeglistupidi.

    User0friendly

    Untermine cos vago da non averpersoancora lasua attualit, anzinon hamaiavuto attualit.Faccio riferimentoal

    mioprecedentepunto riguardole icone.Il termineUser0Friendly indica quellochenoitutti vogliamo, nonostante ilfatto chenonpossiamodefinirlo edesso,pure, cambianel corsodel tempo.Propongo chelaprossimagenerazionedi Interfacce Grafiche (GUI) debbaessere:

    flessibile, checoncili tutti i gusti,capacit, handicap e tutte le dissonanzecognitive (i giocatori di bingo possonoandare a prendersi dabere ora); valido/semplicenell'apprendimento enelleoperativit; supilivelli nella sua inevitabilecomplessit, semplicenellecomuni

    operazioni quotidiane e complessoquanto serve pereseguirequellepiavanzate; orientato ai compiti,ma veramente,nonditelo e basta, fatelo.

    Cosavenesembra?Iononnehoidea. Non unOS0X,Ice0Yeti o unKDE4.7. qualcosache vaal dil degli i0OS,Android e Windows Phone 7. Il fattoche

    i nostri bambinisiano rapidi adapprenderli nonsignifica chesianobuoni. Questi sonotutte evoluzioni delpassato e invece deve esserci unarotturaconil passato. Deveesserecostruito attorno alle personereali enonattornoagli ostacoli chegliingegneri softwaretrovanoconl'hardware attualmente disponibile.Semplicemente immaginate.

    LA MIA OPINIONE

    Allan J. Smithie un giornalista ecommentatore con sede a Dubai. Ilsuo blog raggiungibile all'indirizzo:http://allanjsmithie.wordpress.com

    UN CD DI UBUNTU GRATUITO PER TUTTI I LETTORI!*

    *N FullCircleMagazinen tantomenoi suoicreatori,si riterrannoresponsabili qualorail vostro CDdi cartavengamangiatodal vostro lettoreCD/DVD.

    CDdesignbyRikulu:http://rikulu.de

    viantart.c

    om/

    1 Stampate questa pagina utilizzando una moderna stampante a colori. Questo unpassaggio critico.2 Facendo attenzione, utilizzate delle forbici affilate, tagliate attorno al perimetrodel CD qui sopra. Se non avete stampato questa pagina, vi risulter quasi impossibileriuscire a togliere i graffi delle forbici dal vostro monitor.3 Stupidamente inserite il vostro nuovo CD di carta nel vostro lettore CD/DVD.4 Grattatevi la testa domandandovi perplessi perch il vostro CD non si avvia.5 Eventuali reclami sono da inviare all'indirizzo [email protected] che probabilmente non sapr nulla di questo.

    ATTENZIONE: NECESSARIA LA SUPERVISIONE DI UN ADULTOMENTRE UTILIZZATE LE FORBICI, SOPRATTUTTO SE SONO AFFILATE!

    http://allanjsmithie.wordpress.com/http://rikulu.deviantart.com/http://rikulu.deviantart.com/http://rikulu.deviantart.com/http://rikulu.deviantart.com/http://rikulu.deviantart.com/htt