ott
10

L’annuncio: Installation Report Generator

 

Ecco una schermata:

La schermata di avvio del programma

A partire dalla configurazione hardware dell’utente, il programma genera il resoconto dell’installazione di Ubuntu, pronto per essere inserito nella sezione Hardware/Notebook del nostro wiki. Lo correttezza stilistica della pagina viene garantita dal template standard.

Per installare l’applicazione (per ora disponibile solo per Ubuntu 8.04 «Hardy Heron»), è sufficiente aggiungere le seguenti righe in fondo al proprio /etc/apt/sources.list:

deb http://ppa.launchpad.net/irgenerator-developers/ubuntu hardy main
deb-src http://ppa.launchpad.net/irgenerator-developers/ubuntu hardy main

Per autenticare i pacchetti è sufficiente digitare il seguente comando in una finestra di terminale:


wget -q http://wiki.ubuntu-it.org/AlessioTreglia?action=AttachFile&do=get&target=alessio_treglia.asc -O - | sudo apt-key add -

Link all’annuncio sul forum

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

ott
10

Una piccola anticipazione

 

Non ho neanche il tempo di scrivere più di questa riga, pubblicherò tutto a tempo debito.

Nel frattempo date un’occhiata qui.

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

set
30

Fine della corsa per Feisty Fawn

 

Dopo un anno e mezzo di vita, è arrivata l’ora di Feisty: ecco l’annuncio di Steve Langasek.

E a noi che ce frega?

Ce frega eccome! Sul nostro wiki ci sono molte guide che contengono procedure esclusivamente dedicate a Feisty (qualcuna ancora è rimasta a Edgy) ed è necessario, quando possibile, aggiornare tali pagine oppure, per motivi di ordine e pulizia, rimuoverle dalla documentazione.

In ogni caso, ho già inserito un avviso nella board del Gruppo documentazione.

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

set
19

Nuovo sistema di ticket per il wiki di Ubuntu-it

 

Insieme agli altri Amministratori del Gruppo documentazione, abbiamo deciso di introdurre un nuovo sistema automatico per gestire le sempre più numerose richieste di revisione/inserimento delle guide presenti sul wiki italiano.

Il sistema è in fase di testing ed è temporaneamente ospitato qui, per maggiori informazioni leggete l’annuncio.

Un sentito grazie! a Riccardo Coccioli per il lavoro svolto.

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

set
17

Python e MVC, una storia tutta da scrivere (Prima parte)

 

Qualche giorno fa, girovagando per l’Universo, ho scoperto un pacchetto fantastico di cui ignoravo completamente l’esistenza: si tratta di python-gtkmvc, contenente un’interessantissima implementazione di MVC per lo sviluppo in Python di applicazioni GTK+.

Prima di illustrarvi le innumerevoli possibilità offerte dai moduli contenuti nel pacchetto in questione, mi sento in dovere di fornirvi perlomeno un’introduzione a MVC: l’acronimo sta per Model-View-Controller (capita sovente di incontrarlo orribilmente tradotto nella lingua di Dante come Modello-Vista-Controllore) e indica uno dei design pattern maggiormente noti e diffusi nello sviluppo di interfacce grafiche, soprattutto negli ambiti della programmazione web (per la quale è nato), basato sul principio di divisione delle responsabilità fra i componenti che interpretano i tre ruoli fondamentali di un sistema software:

  • Model (modello): rappresenta il modello di dominio (o modello business), contiene lo stato del sistema, definisce le operazioni necessarie per accedervi (logica di business) ed è indipendente dalla strato di UI (user interface).
  • View (vista): definisce l’interfaccia utente per interagire con le entità del modello; può fornire una rappresentazione completa o parziale del dominio.
  • Controller (controllore): crea e gestisce la connessione fra il modello e la UI; è a conoscenza dello stato dell’applicazione e mantiene aggiornata la sua rappresentazione.

Chi ha studiato un minimo di analisi e progettazione del software avrà sicuramente avuto a che fare con il pattern Controller, che delega la gestione e il coordinamento dei messaggi provenienti dall’interfaccia ad un oggetto controllore (FacadeController, UseCaseHandler, ecc.), il quale non deve nè appartenere allo strato di UI nè occuparsi della risposta del sistema alle richieste dell’utente; completamente diverso è il controller MVC, parte integrante dell’interfaccia, controllata e gestita in maniera diretta dallo stesso controllore, che provvede anche all’aggiornamento della vista in base al contenuto del modello.

Chiariti i punti fondamentali, possiamo iniziare a esplorare pygtkmvc. Innanzitutto, installiamolo con:

sudo apt-get install python-gtkmvc python-gtkmvc-doc

Nei repository ufficiali di Ubuntu 8.04 «Hardy Heron» è presente la 1.2.1, mentre l’ultima versione è scaricabile dal mio archivio personale; per aggiungere quest’ultimo alla propria lista dei repository è sufficiente inserire la seguente riga nel proprio /etc/apt/sources.list:
deb http://ppa.launchpad.net/quadrispro/ubuntu hardy main

Una volta installato tutto il necessario, cerchiamo di capire come funziona. Innanzitutto, analizziamo l’esempio fornito con la documentazione, cominciando dal modello definito nel file model.py:


from gtkmvc.model import Model
class MyModel (Model):
    # observable properties:
    __properties__ = { 'counter' : 0 }
    def __init__(self):
        Model.__init__(self)
        return
    pass # end of class

Il codice è molto semplice: viene definita una nuova classe MyModel, che estende la classe base Model, fornita dal framework, nel corpo della quale vengono dichiarati e inizializzati degli attributi osservabili (in accordo con Observer, esiste una letteratura infinita che tratta di tale pattern).

Sistemato il modello, concentriamoci sulla sua rappresentazione e prendiamo in esame l’implementazione realizzata senza l’utilizzo di Glade (fra breve vi spiegherò il motivo), presente nel file view.py:


from gtkmvc.view import View
import gtk

class MyViewNoGlade (View):
    def __init__(self, ctrl):

        # Qui l'interfaccia non viene costruita partendo
        # da un file glade. La registrazione viene ritardata
        # e i widget verranno aggiunti a mano
        # successivamente.
        View.__init__(self, ctrl, register=False)

        # Ecco i widget utilizzati:
        w = gtk.Window()
        h = gtk.VBox()
        l = gtk.Label()
        b = gtk.Button("Press")
        h.pack_start(l)
        h.pack_end(b)
        w.add(h)
        w.show_all()

        # Aggiungiamo tutti i widget che ci interessano,
        # assegnando loro un nome. Supponiamo che sia
        # necessario accedere solo alla finestra principale,
        #  all'etichetta e al pulsante. I widget vengono
        # aggiunti come in una mappa:
        self['main_window'] = w
        self['label'] = l
        self['button'] = b

        # Ora possiamo procedere alla registrazione
        # della vista. Ciò consente al controller di
        # configurare tutte le connessioni dei segnali
        # e le altre operazioni:
        ctrl.register_view(self)
        return
    pass # end of class

Ho pensato di tradurre i commenti embedded originali in modo da facilitare la comprensione del codice, già molto semplice di suo.

Definita l’interfaccia, non resta che curarne il collegamento con il modello. A tale scopo, nel file ctrl.py viene definita una nuova classe, MyController, che contiene i collegamenti sia alla vista che al modello e ne gestisce la sincronizzazione:


from gtkmvc import Controller
import gtk
class MyController (Controller):
    def __init__(self, model):
        Controller.__init__(self, model)
        # Il controller osserva le proprietà
        # presenti nel modello:
        return
    def register_view(self, view):
        """
        Questo metodo viene richiamato dalla vista,
        una volta pronta alla registrazione. Qui
        colleghiamo il clic del pulsante al metodo
        al quale desideriamo far gestire la risposta.
        Lo stesso discorso vale per il segnale di
        'distruzione' della finestra principale.
        """
        Controller.register_view(self, view)
        # collega i segnali:
        self.view['main_window'].connect('destroy', gtk.main_quit)
        self.view['button'].connect('clicked', self.on_button_clicked)
        # inizializza il testo dell'etichetta:
        self.view[’label’].set_text("%d" % self.model.counter)
        return
        # qui inseriamo i gestori dei segnali:
    def on_button_clicked(self, button):
        self.model.counter += 1 # modifica il modello
        return
    # e qui i metodi di notifica delle
    # modifiche alle proprietà
    # osservabili del modello:
    def property_counter_value_change(self, model, old, new):
        self.view['label'].set_text("%d" % new)
        print "Property 'counter' changed value from %d to %d" % (old, new)
        return
    pass # end of class

Penso che i commenti embedded e la documentazione allegata possano chiarire anche i punti più oscuri del codice illustrato. Ho preferito utilizzare l’esempio no-Glade per un motivo di completezza, in modo da mostrarvi ogni piccolo aspetto implementativo.

Ci fermiamo qui, almeno per ora. Nella prossima puntata vi mostrerò una piccola applicazione d’esempio, completa e funzionante, sviluppata proprio con questo fantastico framework.

Riferimenti

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

set
16

“Quando meno te lo aspetti”

 

Più si invecchia e più ci si rende conto che Sua Maestà il Caso fa i tre quarti del lavoro in questo miserabile universo.
Federico il Grande

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

set
09

Ubuntu 9.04, chiamiamola per nome

 

Mark Shuttleworth ha annunciato in questa mail il nome in codice della versione successiva a Intrepid, attuale Ubuntu+1, ormai prossima al lancio: la futura versione avrà come nome Jaunty Jackalope.

Ma cosa indica il termine jackalope? Non sono a conoscenza di una interpretazione certa (cosa gira nella testa del CEO di Canonical mi risulta ancora nebuloso), ma girovagando per la rete ho scoperto del materiale interessante.

Alcune tradizioni popolari raffigurano tale animale mitologico come un incrocio fra una lepre e un’antilope (ed ecco spiegata l’etimologia del nome), insomma: una sorta di coniglio con le corna, ma in alcune rappresentazioni compaiono anche delle varianti dotate di ali.

Se siete amanti dell’orrido e l’immagine qui sopra non ha esercitato alcun effetto su di voi, vi consiglio di dare una sbirciata a questa pagina, sono sicuro che le foto presenti in esso vi lasceranno a bocca aperta.

Fatto? Bene, chiudetela pure (la bocca), vi spiego tutto io: gli animali ritratti nelle foto sono malati di un tipo di cancro, causato da una particolare variante di papilloma virus che colpisce solo conigli e lepri e che causa comporta la comparsa sul corpo di calcificazioni, solitamente vicino alla testa.

Così, dopo l’origine del nome, ecco spiegata anche quella della leggenda popolare[¹].

Per quanto riguarda le cose importanti (nuove caratteristiche, miglioramenti etc) beccatevi quest’articolo di Maurizio Moriconi.

Concludo esponendo la mia personalissima opinione sulla scelta (mai così infelice) del nome in codice: ma non era meglio Cookie Cock? :D

[¹] Che volete di più? Un Lucano?

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

set
05

Misura la censura!

 

Ricordate i numerosi post apparsi sul planet di Ubuntu-it a proposito della chiusura di The Pirate Bay?

E chi se li scorda?

Bene, allora beccateve pure questo: ho deciso di partecipare anche io all’iniziativa di Tophost, Misura la censura.

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

set
03

Di ritorno in ritorno

 

Ri-eccomi al lavoro su tutti i fronti ed ecco il mio rapporto, stilato secondo il modello Milo:

  • Tanta puzza (tipica di Barcellona)
  • Tanto il mal di stomaco
  • Tante le risate
  • Due le buste rimorchiate da Ciccio (per l’occasionare ribattezzato el puerco Olimpico)
  • Pochi i giorni di vacanza
  • Troppi gli esami

Tornando seri, prima di partire avevo annunciato delle novità e ora vi presento la prima: ho rilasciato la nuova versione dell’autenticatore per la rete della mia università, la quale risolve il bug segnalato da Luca. Il nuovo pacchetto, reperibile dal mio Personal Package Archive (altra novità), è disponibile solo per Ubuntu 8.10 «Intrepid Ibex», per maggiori informazioni consultate la pagina dedicata.

L’ultima novità riguarda… mmmno… preferisco mostrarvela:

Ebbene sì, ho cominciato a contribuire allo sviluppo del sistema e nella pagina su Launchpad potete trovare tutti i miei lavori.

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

ago
28

In partenza per Barcellona

 

Due jeans, due paia di scarpe, un paio di infradito, una polo, una camicia e una valanga di magliette.

Ci sono alcune novità di cui dovrei parlarvi ma ora sono davvero di fretta.

A domenica!

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

ago
13

Come creare un plugin OpenSearch per il proprio blog

 

Se desiderate anche voi un plugin OpenSearch simile a quello attivo su questo blog [¹], quest’ottima guida di Aldo Latino vi spiegherà come procedere.

[¹] “pluginopensearc-che?” Fate clic con il tasto destro sulla barra di ricerca di Firefox [²] e capirete ;)

[²] “Firefox-che?” Dai, non mi fate diventare volgare…

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

ago
11

Ubuntu aiuta a diffondere i virus per Windows

 

O almeno così sostiene informiloud, il tizo che ha riportato questo bug su Launchpad.

So bene che non potete vedermi, ma credetemi sulla parola: sto letteralmente rotolando :D

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

ago
06

Installare Ubuntu su una periferica di archiviazione esterna USB

 

Sono lieto di annunciare la fine dei lavori di revisione di una delle guide più richieste e ricercate del wiki italiano: mi riferisco a questa pagina, contenente la procedura per installare Ubuntu (e derivate) su una penna USB, corretta e aggiornata a Hardy da Filippo Meloni, il quale mi ha anche aiutato nella risoluzione di un bug nel pacchetto cellwriter per Intrepid.

E, a proposito di bug, devo ricordarmi di offrire una birra all’amico devfil, che quasi tutti i giorni mi su(/o)pporta nel canale italiano per lo sviluppo.

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

lug
29

Brand personality e Linux

 

Desidero portare all’attenzione dei miei lettori una recente ricerca della prima Università di Roma che come obiettivo ha lo studio del coinvolgimento dei consumatori e il loro orientamento verso le marche dei sistemi operativi.

Per partecipare alla ricerca e compilare il questionario online, nel quale vi verranno poste domande su Windows, Mac OS X e Linux, sono richiesti solo un nome utente e una password.

ShareThis

Popularity: 3% [?]



Puoi visualizzare il post originale qui.

lug
23

And the winner is…

 

Sono lieto di annunciare i vincitori del gioco proposto nel mio ultimo articolo: complimenti a TheSgrash e clhona per aver trovato il Fottuto Errore!

La Giuria ha inoltre deciso di assegnare il Premio speciale per la risposta più completa a Luca Ferretti!

E ora tutti al mare! [¹]

[1] Invito riservato a tutti i membri attivi del team ubuntu-rome.

ShareThis

Popularity: 2% [?]



Puoi visualizzare il post originale qui.

top