martedì 20 dicembre 2011

Cura dimagrante per OS X: eliminare le lingue inutilizzate


Uno dei pregi di OS X e' la facilità con la quale si può cambiare la lingua di sistema dalle preferenze di sistema. OS X infatti contiene tutte le lingue più diffuse al suo interno ed ogni applicazione, all'interno del suo pacchetto, ha le varianti dell'interfaccia utente per ogni lingua.
Il prezzo da pagare e' il maggior spazio su disco occupato da tutte le lingue installate.
E' vero che adesso gli hard disk sono molto capienti, ma perché sacrificare 1 Gb di spazio per lingue che non conosciamo e che non utilizzeremo mai?
Ho visto sul Mac App Store diverse utility a pagamento che permettono di rimuovere le lingue, ma io personalmente utilizzo un'applicazione free che e' a disposizione da diversi anni: Monolingual.
Questa piccola applicazione permette di rimuovere le lingue dell'interfaccia, i metodi di inserimento ed infine le architetture.
La rimozione delle lingue le eliminerà non solo dal sistema operativi, ma da tutte le applicazioni installate. I metodi di inserimento servono a gestire la scrittura in tutte quelle lingue che non utilizzano i caratteri latini, come ad esempio il cinese o l'arabo. Per finire la rimozione delle architetture permetteva di rimuovere il codice PowerPc dalle applicazioni Universal, ma ormai penso che di codice PowerPc se ne veda davvero poco in giro.
Io utilizzo Monolingual solo per rimuovere le lingue e funziona bene anche su Lion, anche se il sito ufficiale ne garantisce il funzionamento solo con Tiger, Leopard e Snow Leopard.
Fate attenzione a non rimuovere mai l'inglese, altrimenti il vostro sistema diventerà inutilizzabile!
Altra cosa importante da considerare e' che le lingue eliminate non si possono reintrodurre se non reinstallando il sistema operativo.
Monolingual si puo scaricare dal sito ufficiale.


Le lingue selezionate verranno rimosse

venerdì 2 dicembre 2011

Programmare con GTK+ in linguaggio C++: creare la prima applicazione!

Questo tutorial vi guiderà alla creazione di un programma con interfaccia grafica utilizzando il linguaggio C++ e la libreria Gtkmm, ma a differenza di molti altri tutorial sulla rete, utilizzeremo Glade e GtkBuilder per creare l'interfaccia.
Prima di iniziare, assicuratevi di aver installato Anjuta, Glade e la libreria libgtkmm, se non avete provveduto potete installarli tramite Ubuntu Software Center (se sei alle prime armi leggi questo ).
Faremo un programma semplice che illustrerà l'utilizzo di tre semplici elementi dell'interfaccia utente: un'etichetta per visualizzare del testo, un campo di inserimento per inserire una stringa di testo ed un pulsante. Alla pressione del pulsante, il testo inserito nel campo verrà visualizzato nell'etichetta.

La prima cosa da fare e' creare un nuovo progetto con Anjuta
  • Iniziamo con lanciare Anjuta e selezionare NuovoProgetto nel menu File o sulla barra degli strumenti.
  • Quando compare la finestra di selezione del tipo di progetto, selezionate C++ e quindi GTKmm, quindi cliccate su continua.
  • Nella schermata successiva date un nome al progetto, ad esempio tutorial, quindi se volete il vostro nome ed indirizzo email. Il numero di versione non e' importante, andiamo avanti.
  • Nel campo destinazione cliccate sul tasto apri e selezionate la posizione dove mettere il progetto. Vi consiglio di creare una cartella apposita.
  • Le altre opzioni le lasciamo con i valori di default, assicuriamoci soltanto che sia attiva la voce “Utilizzare GtkBuilder per l'interfaccia utente”, clicchiamo su continua e successivamente su applica.
Creazione di un progetto C++ GTKmm



Creare l'interfaccia utente con Glade

  • Adesso abbiamo un progetto, se proviamo ad eseguire il programma, dal menu EseguiEsegui o dalla barra degli strumenti ( l'icona con gli ingranaggi ), si aprirà una finestra intitolata “Hello world!”. Chiudendo la finestra il programma terminerà.
  • Lanciate Glade, il disegnatore di interfacce, e aprite il file che definisce l'interfaccia del vostro programma. Se avete chiamato il progetto tutorial, lo troverete in tutorial/src/tutorial.ui
  • Il file contiene solo una finestra vuota. Selezionando la finestra nell'elenco in alto a destra, potrete vedere le proprietà nel riquadro in basso a destra. Il nome della finestra main_window e' quello di riferimento usato dal vostro codice per ottenere il puntatore alla finestra. Il titolo della finestra e' “Hello World!”, cambiamolo in “Tutorial 1”.
  • Il nostro programma necessita di tre elementi: un'etichetta, un campo inserimento ed un pulsante. Abbiamo quindi bisogno di un contenitore che contenga tre elementi. Nella colonna a sinistra di Glade potete vedere un pannello degli strumenti. Nella sezione Contenitori, selezionate il primo contenitore, quello denominato Casella, e' un widget di tipo Gtk::Box. Adesso cliccate all'interno della finestra del vostro programma. Vi verrà chiesto il numero di elementi, inserite 3 e cliccate su Crea.
  • Ora la nostra finestra può contenere tre elementi. Nel pannello degli strumenti, nella sezione Controllo e visualizzazione, selezionate Inserimento testo. La nostra finestra e' divisa in tre parti, cliccate sulla prima parte in alto, avete aggiunto il campo di inserimento testo. E' un widget di tipo Gtk::Entry.
  • Ora selezionate il widget Etichetta, posta nella sezione Controllo e visualizzazione del pannello degli strumenti. Quindi cliccate nel secondo spazio libero della vostra finestra. Avete così aggiunto l'etichetta, e' un widget di tipo Gtk::Label.
  • Per finire selezionate il widget Pulsante e cliccate nell'ultimo spazio libero della finestra. Il pulsante e' un widget di tipo Gtk::Button.
finestra vuota

aggiunto Gtk::Box di tre elementi

aggiunto Gtk::Entry

aggiunto Gtk::Label

aggiunto Gtk::Button

Adesso la nostra interfaccia e' completa, la sua composizione e' riassumibile con questo schema:

  • Gtk::Window
    • Gtk::Box
      • Gtk::Entry
      • Gtk::Label
      • Gtk::Button

Salvate l'interfaccia cliccando su Salva il progetto corrente nella barra degli strumenti in alto o dal menu File – Salva e tornate ad Anjuta.

Creare la classe di controllo dell'interfaccia Controller

Ora che avete salvato la nuova interfaccia, se provate ad eseguire il programma da Anjuta, vedrete comparire la finestra intitolata “Tutorial 1”, contenente i tre widget che avete aggiunto. Adesso dobbiamo creare una classe che si occuperà di gestire gli elementi dell'interfaccia grafica.

  • Create una nuova classe cliccando su Nuovo – Classe nella barra degli strumenti o dal menu File Nuovo – Classe. Selezionate la sezione Classe C++ generica, chiamate la classe Controller, quindi cliccate su Crea. Si aprira un'altra finestra intitolata “Aggiungi sorgente”, nel riquadro sotto l'etichetta “Selezionare l'obbiettivo per i nuovi file sorgente:”, aprite la cartella src cliccando sul triangolino a sinistra, quindi selezionate tutorial e cliccate su Aggiungi. Ora abbiamo una nuova classe Controller, iniziamo ad implementarla.





  • Nel nostro main.cc potete vedere che viene creato un'istanza della classe Gtk::Builder leggendo il file tutorial.ui della nostra interfaccia. Dobbiamo quindi implementare un costruttore pubblico della classe Controller che riceva come parametro un puntatore a Gtk::Builder. Aggiungiamo quindi:
    inline Controller( Glib::RefPtr<Gtk::Builder> _bldr );
  • Dimenticavo, la nostra classe Controller dovrà lavorare con gli elementi dell'interfaccia, quindi dobbiamo includere il file header di gtkmm.
    Aggiungiamo quindi
    #include <gtkmm.h>
  • Controller necessita di tre variabili per contenere i puntatori degli elementi dell'interfaccia. Aggiungiamo quindi le seguenti variabili come private:
    Gtk::Entry *campoInserimento;
    Gtk::Label *campoEtichetta;
    Gtk::Button *pulsante;
  • Il compito del costruttore e' ottenere i puntatori dei tre elementi dell'interfaccia tramite l'istanza di Gtk::Builder e memorizzarli nelle tre variabili che abbiamo dichiarato come private. Aggiungiamo in Controller.h la definizione del costruttore:

    inline Controller::
    Controller ( Glib::RefPtr<Gtk::Builder> _bldr )
    {

    _bldr->get_widget ("entry1", campoInserimento);

    _bldr->get_widget ("label1", campoEtichetta);

    _bldr->get_widget ("button1", pulsante);
    }
    get_widget(nome, puntatore) e' un metodo di Gtk::Builder che richiama l'elemento con il nome posto nella stringa usata come primo parametro e mette il puntatore dentro alla variabile fornita come secondo parametro. entry1, label1 e button1 sono i nomi dei nostri widget, se tornate in Glade e selezionate gli elementi potrete verificarne i nomi. Ovviamente se modificate i nomi ricordatevi di modificare i nomi anche nel vostro codice sorgente.

Adesso il vostro Controller.h dovrebbe essere come questo:

#ifndef _CONTROLLER_H_
#define _CONTROLLER_H_

#include <gtkmm.h>

class Controller
{
      public:
            inline Controller( Glib::RefPtr<Gtk::Builder> _bldr );

      protected:

      private:
            Gtk::Entry *campoInserimento;
            Gtk::Label *campoEtichetta;
            Gtk::Button *pulsante;

};

inline Controller::
Controller ( Glib::RefPtr<Gtk::Builder> _bldr )
{
      _bldr->get_widget ("entry1", campoInserimento);
      _bldr->get_widget ("label1", campoEtichetta);
      _bldr->get_widget ("button1", pulsante);
}

#endif // _CONTROLLER_H_

Implementare il metodo aggiornaEtichetta

Il metodo aggiornaEtichetta ha il compito di prelevare la stringa inserita nel campo di inserimento e metterla nell'etichetta, vediamo come.

  • Dichiariamo il metodo aggiornaEtichetta come protetto nella nostra classe Controller, aggiungiamo quindi la dichiarazione:
    void aggiornaEtichetta ( void );
    Questo metodo non prende alcun parametro e non rilascia alcun valore alla sua uscita.
  • Adesso implementiamo la definizione di aggiornaEtichetta nel file controller.cc

    void Controller::
    aggiornaEtichetta ( void )
    {
          Glib::ustring stringa = campoInserimento->get_text ();
          campoEtichetta->set_text ( stringa );
    }

    Il funzionamento e' banale, prende la stringa contenuta in campoInserimento con il metodo get_text() e la mette in una variabile di tipo Glib::ustring*, quindi passa la stringa al campoEtichetta con il metodo set_text().

Collegare il pulsante al metodo aggiornaEtichetta

Adesso dobbiamo fare in modo che quando si clicca sul pulsante venga chiamato il metodo aggiornaEtichetta.

  • Andiamo a modificare il costruttore della classe Controller per aggiungere il collegamento.

    pulsante->signal_clicked ().connect (sigc::mem_fun (this, &Controller::aggiornaEtichetta) );

    Questa istruzione collega il segnale signal_clicked() del pulsante al metodo aggiornaEtichetta della nostra classe Controller.
  • La nostra classe Controller e' completa, ora modifichiamo il file main.cc per utilizzarla.
    Prima cosa da fare e' includere il file header controller.h

    #include “controller.h”
  • Quindi inseriamo la creazione di un'istanza di Controller invocando il costruttore che abbiamo implementato.

    Controller *controllo = new Controller ( builder );

    Dobbiamo passare al costruttore il puntatore dell'istanza di Gtk::Builder, quindi va messo dopo la creazione della stessa.
    Prima della fine di main() bisogna deallocare l'istanza di Controller

    delete controllo;

    main.cc sarà più o meno così

    #include <gtkmm.h>
    #include <iostream>
    #include "config.h"
    #include "controller.h"
    #ifdef ENABLE_NLS
    # include <libintl.h>
    #endif
    /* For testing propose use the local (not installed) ui file */
    /* #define UI_FILE PACKAGE_DATA_DIR"/tutorial_1/ui/tutorial_1.ui" */
    #define UI_FILE "src/tutorial_1.ui"
    int
    main (int argc, char *argv[])
    {
          Gtk::Main kit(argc, argv);
          //Load the Glade file and instiate its widgets:
          Glib::RefPtr<Gtk::Builder> builder;
          try
          {
                builder = Gtk::Builder::create_from_file(UI_FILE);
          }
          catch (const Glib::FileError & ex)
          {
                std::cerr << ex.what() << std::endl;
                return 1;
          }
          Gtk::Window* main_win = 0;
          builder->get_widget("main_window", main_win);
          Controller *controllo = new Controller ( builder );
          if (main_win)
          {
                kit.run(*main_win);
          }
          delete controllo;
          return 0;
    }

Compilazione e test del programma Tutorial

Il programma e' completo, potete compilare cliccando sull'icona di compilazione nella barra degli strumenti o sul menu Genera – Compila. Lanciate il programma e provate a scrivere qualcosa nel campo di inserimento, quindi cliccherete sul pulsante, vedrete l'etichetta visualizzare la stringa che avete inserito.

Il programma Tutorial 1 e' completo


Questo piccolo programma e' banale, ma penso che dia un'idea di come utilizzare Gtk::Builder.

mercoledì 30 novembre 2011

Stranezze della Wi-Fi: vede le reti dei vicini ma non quella di casa


Questo e' un problema che mi ha afflitto per sei mesi ed ho risolto per caso solo un paio di giorni fa. Non riuscendo a trovare nessuna soluzione su internet mi sono promesso di dedicare un post a questo problema se mai lo avessi risolto.
Vi parlo di un router Wi-Fi di Fastweb e del mio MacBook bianco del 2007 con dual boot OS X e Ubuntu 11.04 (successivamente aggiornato a 11.10 ).

Inizialmente tutto funzionava senza problemi, entrambi i sistemi si collegavano alla rete in Wi-Fi , poi un giorno all'improvviso nessun computer a casa riesce a collegarsi in Wi-Fi. Dopo una chiamata al servizio di assistenza la rete Wi-Fi viene ripristinata, tutti gli apparati si collegano di nuovo alla rete, tranne il MacBook, o meglio solo OS X trova la rete e si collega, mentre Ubuntu non la vede.

La cosa frustrante era che nell'elenco delle reti disponibili appaiano quelle dei vicini, ma non compare quella di casa. I tentativi per risolvere il problema sono stati tanti, ho provato a cambiare il canale della Wi-Fi, cambiare nome identificativo della rete e password, e come soluzione estrema la formattazione e installazione da zero di Ubuntu, ma niente. Gli altri computer, lo smartphone e OS X sul MacBook vedono la rete di casa, mentre Ubuntu non la vede, ma vede senza problemi quelle dei vicini e si collega ad altre reti.

Qualche settimana fa ho aggiornato il sistema operativo del mio smart-phone Android ed anche questo non ha trovato più la rete di casa!
Un paio di giorni fa ho quindi collegato il MacBook al router tramite cavo Ethernet e sono andato sulla pagina delle impostazioni della rete Wi-Fi. Mi sono limitato a disabilitare la Wi-Fi e poi ad abilitarla, quando ho cliccato sul tasto salva modifiche, come per magia, Ubuntu mi ha segnalato la presenza della rete! Ho staccato il cavo e mi sono collegato alla rete Wi-Fi.
Ho provato anche con lo smart-phone e si e' collegato senza problemi.
Non capisco il motivo del problema e ancor meno la banale soluzione, comunque ho voluto pubblicare la mia esperienza sperando di poter aiutare chi ha incontrato un problema simile.

venerdì 18 novembre 2011

Studiare la lingua giapponese su Linux con il mio progetto: Nihongo

Se vi è capitato di dare un'occhiata al mio profilo, avrete notato che il computer e la programmazione non sono l'unico interesse che coltivo, ci sono anche la lingua e la cultura giapponese. Iniziato come interesse per i manga e l'animazione giapponese, questa passione si è evoluta ed allargata alla cultura in tutte le sue forme e soprattutto allo studio della lingua.
Il progetto di cui voglio parlarvi oggi nasce appunto dallo studio della lingua giapponese. Ho studiato giapponese per quasi quattro anni presso l'istituto Is.I.A.O. di Milano e successivamente ho anche frequentato un corso intensivo a Tokyo. In quel periodo avevo bisogno di uno strumento che mi aiutasse a studiare, fu così che iniziai a lavorare su un programma che ho chiamato Nihongo.
Nihongo è una parola giapponese che vuol dire appunto “lingua giapponese” (lo ammetto, non ho avuto grande fantasia nella scelta del nome). Questo programma nasce nell'ottobre del 2005 come piccolo dizionario personale dove inserire le parole utilizzate durante le lezioni, con la capacità aggiuntiva di eseguire test mnemonici. Negli anni ho perfezionato e aggiunto altre funzioni, quali gli esercizi con i kanji, i numeri, ed altri aspetti della grammatica.
Dalla sua nascita e fino allo scorso anno, ho continuato a sviluppare Nihongo in Objective-C e solo su Mac OS X, ma quest'anno ho deciso di riscriverlo da zero in C++ per sistemi GNU/Linux in ambiente GNOME.
L'idea sarebbe quella di rilasciarlo con licenza GPL e distribuirlo tramite l'Ubuntu Software Center il prossimo anno, commenti e suggerimenti saranno molto graditi.
(Aggiornamento: ora il progetto nihongo lo potete trovare al seguente indirizzo: http://code.google.com/p/nihongo/ )
Proseguendo nello sviluppo di Nihongo pubblicherò alcuni tutorial riguardanti il C++ e le librerie GTK+ e GTKmm.


la finestra principale con il dizionario

modalità e opzioni degli esercizi con le parole


esercizio per la memorizzazione delle parole


fogli di esercitazione alla scrittura dei kanji

giovedì 3 novembre 2011

Doniamo il tempo inutilizzato del nostro computer per la ricerca scientifica


Oggi vi voglio parlare del World Community Grid e di come potete contribuire alla ricerca scientifica con il vostro computer.



La ricerca scientifica ha bisogno di grandi capacità di calcolo ed i costi per realizzare i super computer necessari sono molto elevati. Per abbattere i costi e velocizzare i calcoli si e' pensato di dividere il lavoro in tante piccole parti ed affidare i calcoli ad altrettanti computer in rete. La missione del WCG e' creare la più grande rete mondiale di calcolo per la ricerca scientifica e metterla a disposizione di organizzazioni pubbliche o comunque non a scopo di lucro. I risultati ottenuti saranno di pubblico dominio e messi a disposizione della ricerca mondiale.

Per poter contribuire basta registrarsi sul sito, scaricare ed installare il programma client sul vostro computer e configurare le opzioni di funzionamento. Nei momenti di inattività il vostro computer richiederà i dati su di uno specifico progetto di ricerca, quindi eseguirà i calcoli e, quando terminato, invierà i risultati. Questo sistema e' assolutamente sicuro e non comporta rischi di nessun tipo. I pacchetti ricevuti e i risultati inviati sono pacchetti di pochi kilobyte che non avranno nessun impatto sul vostro traffico di rete. Inoltre potrete scegliere a quali progetti di ricerca dare il vostro contributo e la quantità di risorse del computer da mettere a disposizione. Lo spazio su disco necessario e' minimo, ad essere utilizzato intensamente e' il processore.

Il software utilizzato si chiama BOINC ( Berkley Open Infrastructure for Network Computing ). L'omonimo programma client e' scaricabile anche dal sito ufficiale, per quanto riguarda Ubuntu, e' installabile direttamente dall'Ubuntu Software Center. Ovviamente BOINC e' multipiattaforma e funziona su Windows, Mac OS X e qualsiasi distribuzione GNU/Linux.


Io personalmente sono registrato da anni e penso sia un modo molto valido di contribuire alla ricerca scientifica per scopi umanitari.

mercoledì 26 ottobre 2011

Il computer al centro del vostro salotto con xbmc


Oggi vi voglio presentare un ottimo esempio di free software open-source che non può mancare sul vostro computer: xbmc.
Che cos'è?
E' un media player audio/video nonché centro di intrattenimento digitale, in pratica il software ideale se il vostro computer e' in salotto. Con xbmc potete infatti vedere file video e ascoltare file audio di qualunque formato, oltre a poter leggere direttamente DVD, Blu-Ray e CD audio, nonché visualizzare le vostre foto.
La grafica a tutto schermo trasforma il vostro computer in un elegante media player, facile ed intuitivo.
La schermata principale

Un altro punto di forza di xbmc e' la capacità di collegarsi ad internet per guardare video in streaming, ascoltare musica e accedere a molti altri servizi online.
L'aspetto e le funzioni sono ampiamente personalizzabili, e' possibile installare nuove skin ed estendere le funzioni grazie all'installazione di appositi plug-in.
Probabilmente vorrete utilizzare questo software quando siete seduti comodamente in poltrona, quindi sarete felici di sapere che sono supportati un'infinità di telecomandi.
Agli utenti Mac ricorda molto da vicino Front Row, ma vi assicuro che e' fatto decisamente meglio e supporta anche il telecomando fornito da Apple.

Dimenticavo, xbmc e' multi-piattaforma e disponibile per Linux, OS X e Windows.
Lo potete scaricare direttamente dal sito ufficiale.
Per gli utenti di Ubuntu e' possibile installarlo tramite repository, sul sito sono indicati i repository da aggiungere in base alla versione del vostro sistema.

Buon divertimento!

venerdì 14 ottobre 2011

Il padre del linguaggio C e di Unix ci lascia all'età di 70 anni

Dennis MacAlistair Ritchie
Dennis Ritchie, nato a Bronxville N.Y. nel 9 settembre 1941, si laureo' ad Harvard ed inizio' a lavorare presso i Bell Labs nel 1967 seguendo le orme del padre.
Insieme a Ken Thompson ha sviluppato la prima versione di Unix, successivamente ha creato il linguaggio C, ancora oggi ampiamente utilizzato nello sviluppo di applicazioni e sistemi operativi.
Famoso il libro pubblicato insieme a Brian Kernighan The C Programming Language, pubblicato in Italia con il titolo Programmare in C, ancora oggi e' considerato un testo fondamentale per tutti i programmatori ( io ne possiedo una copia edita dallo storico Gruppo Editoriale Jackson ).
L'impatto del suo lavoro e' stato enorme nell'evoluzione dell'informatica, basti pensare che Linux e BSD derivano dal kernel Unix, quindi se oggi possiamo usare Linux, FreeBSD od OS X sul nostro computer o anche Android o iOS sul nostro smartphone, lo dobbiamo anche a lui.


Un saluto ad una vera icona dell'informatica che ci ha lasciati.

giovedì 13 ottobre 2011

Come rimuovere l'icona di stato del modem dalla barra dei menu di OS X


L'icona di stato del modem, raffigurata da una cornetta telefonica, e' un residuo del passato che indica lo stato della connessione tramite modem alla linea telefonica.
Al giorno d'oggi quasi nessuno usa la vecchia connessione 56k, inoltre da diversi anni i Mac non hanno più un modem incorporato, quindi e' quasi impossibile rivedere questa icona sulla barra dei menu.
Mi e' capitata una cosa curiosa dopo aver installato OS X Lion, l'icona di stato del modem e' comparsa sulla barra dei menu.

La fantomatica cornetta telefonica in bella mostra sulla barra dei menu

Per toglierla bastava andare sulle preferenze Network, selezionare il modem e deselezionare la voce “mostra lo stato del modem sulla barra del menu”.
Il problema e' che su un Mac senza modem incorporato ovviamente le preferenze Network non mostrano il modem e quindi sembra impossibile rimuovere quell'inutile icona.
La soluzione e' semplice, tenete premuto il tasto Command e fate il Drag 'n' Drop dell'icona indesiderata fuori dalla barra dei menu, vale a dire tenete premuto il pulsante del mouse e trascinatela via.

lunedì 10 ottobre 2011

Iniziare a programmare con Ubuntu GNU/Linux


Prepariamo gli strumenti necessari per programmare usando il linguaggio C/C++

Il primo passo per iniziare a programmare e' installare gli strumenti di sviluppo sulla nostra macchina. Aprite Ubuntu Software Center, cliccate sulla categoria “Strumenti per lo sviluppo”, poi sulla sotto categoria IDE e quindi su Anjuta IDE.

Installare Anjuta tramite Ubuntu Software Center


Anjuta e' un ambiente di sviluppo integrato, cioè un software che aiuta i programmatori nello sviluppo del codice. In particolare e' rivolto allo sviluppo di applicazioni in ambiente GNOME.
Una volta selezionato Anjuta in Ubuntu Software Center, cliccate sul pulsante “Ulteriori informazioni” ed assicuratevi che tutti i componenti aggiuntivi siano selezionati, quindi cliccate su “Installa”.

Al termine dell'installazione tornate nella categoria “Strumenti per lo sviluppo” e selezionate la sotto categoria “Progettazione interfacce grafiche”, quindi cliccate su Glade Interface Designer.

Installare Glade Interface Designer


Glade e' un software che aiuta a progettare e realizzare le interfacce grafiche dei nostri programmi. Cliccate su “Ulteriori informazioni” ed assicuratevi che tutti i componenti aggiuntivi siano selezionati, quindi installatelo.

Ancora una volta tornate alla categoria “Strumenti per lo sviluppo” e selezionate la sotto categoria Librerie. Scrivete nel campo di ricerca in alto a destra la parola “gtkmm”, quindi selezionate ed installate la libreria libgtkmm-2.4-dev, denominata “C++ wrappers for GTK+ (development files)”.
Questa libreria e' fondamentale per poter creare applicazioni GTK+ (cioè applicazioni funzionanti in ambiente GNOME) utilizzando il linguaggio C++.

Installare la libreria libgtkmm-2.4-dev


Le librerie GTK+ infatti sono scritte interamente in linguaggio C, che e' il linguaggio di riferimento sui sistemi GNU/Linux.
Forse vi starete chiedendo, perché non usare il C per sviluppare le nostre applicazioni?
Utilizzare il C e' senza dubbio la scelta più facile, ma personalmente penso che il C++, in quanto linguaggio di programmazione orientata agli oggetti, e' sicuramente più moderno e potente del caro vecchio C. Tutti quelli che già sviluppano in C++, Java od Objective-C conoscono bene le potenzialità della programmazione orientata agli oggetti rispetto alla classica programmazione procedurale.
Il mio personale consiglio a chi si avvicina per la prima volta alla programmazione e' di imparare il C, che rimane un linguaggio fondamentale ed ampiamente utilizzato, e quindi passare al C++.

Ultima cosa che vi consiglio di installare e' Devhelp, un programma per visualizzare e consultare la documentazione delle librerie. Basta scrivere “devhelp” nel campo di ricerca di Ubuntu Software Center e lo troverete immediatamente.

Congratulazioni, adesso la vostra macchina e' pronta ad essere utilizzata come workstation di sviluppo!

E' giunto il momento di creare la vostra prima applicazione per prendere confidenza con gli strumenti di sviluppo.
Lanciate Anjuta e selezionate la voce preferenze del menu Modifica. Nella categoria Generale, potete configurare i seguenti valori predefiniti:
  • Directory progetto predefinita: selezionate la cartella di riferimento che conterrà i file di tutti i vostri progetti. Io, per esempio, ho creato una cartella chiamata Sviluppo nella mia home directory.
  • Nome sviluppatore: verrà aggiunto automaticamente nel commento posto all'inizio di ogni file del codice sorgente.
  • Indirizzo email sviluppatore: anche questo verrà aggiunto al commento iniziale di ogni file del codice sorgente. Se distribuirete liberamente il vostro codice, gli utilizzatori sapranno come contattarvi.
Adesso siete pronti a creare un nuovo progetto, chiudete le preferenze e selezionate Nuovo → Progetto dal menu File.
Comparirà una finestra per la scelta del tipo di progetto da realizzare. Selezionate il linguaggio C++ e quindi l'icona denominata GTKmm, cioè il punto di partenza per creare un'applicazione in C++ che utilizzi l'interfaccia grafica GTK+. L'icona C++ generico invece vi permette di creare programmi in C++ senza alcuna interfaccia grafica, l'eventuale output del programma sarà diretto sulla console dello standard output. Questa opzioni e' utile per creare applicazioni da richiamare tramite Terminale o anche per studiare ed esercitarsi con il linguaggio C++.

Creazione di un nuovo progetto C++


Cliccate sul pulsante avanti, a questo punto dovete dare un nome al vostro progetto, scrivete HelloWorld. Il vostro nome e la vostra email saranno quelle indicate nelle preferenze, infine il campo della versione indica il valore 0.1, lasciamolo cosi' e cliccate su avanti.
La destinazione indicata sarà all'interno della cartella indicata nelle preferenze e verrà creata una cartella con il nome del progetto. Potete cliccare su avanti e quindi su applica.

Destinazione della cartella del progetto


La finestra principale di Anjuta e' divisa in tre parti, sulla parte sinistra in alto abbiamo la sezione dedicata alla gestione del progetto. Nella parte destra in alto c'è la sezione dell'editor del codice sorgente. Infine nella sezione in basso c'e' la sezione dedicata alla console.
Guardando la sezione in alto a sinistra, noteremo che in basso ci sono tre pulsanti:
  • File: visualizza tutti i file contenuti nella cartella del progetto.
  • Progetto: visualizza i file appartenenti al progetto. Questo tipo di visualizzazione e' simile a File, ma più ordinata e molto utile per gestire progetti particolarmente grandi.
  • Simboli: visualizza i simboli contenuti nel progetto, i simboli possono essere nomi di variabili, oggetti, funzioni, ecc...
La finestra principale di Anjuta


Cliccate sul pulsante File ed aprite la cartella src. I file importanti in questa cartella sono main.cc, che contiene il codice sorgente del progetto, ed helloworld.ui, che definisce l'interfaccia grafica del programma.
Con un doppio click su main.cc potremmo aprire il file nell'editor e modificare il codice. Con un doppio click su helloworld.ui invece si aprirà l'editor grafico di progettazione dell'interfaccia.
Io, personalmente, preferisco aprire i file .ui con Glade piuttosto che aprirli all'interno di Anjuta, siete liberi di provare entrambi i metodi.
Senza bisogno di apportare alcuna modifica possiamo compilare questo progetto ed avviarlo.
Per compilare, cliccate sull'icona “Genera tutto il progetto” posta nella barra degli strumenti in alto, oppure potete selezionare la voce “Genera progetto” nel menu Genera.
Adesso potete avviare il programma cliccando sull'icona “Esegui il programma” nella barra degli strumenti o selezionando la voce “Esegui” dal menu Esegui.
Il programma crea una finestra intitolata “Hello world!”, chiudendola si esce dal programma e si torna ad Anjuta.

Adesso potete dare sfogo alla vostra creatività, buon divertimento!

giovedì 6 ottobre 2011

Ciao Steve

Oggi ci ha lasciato un genio, un uomo che amava il suo lavoro e che ha rivoluzionato l'informatica.
La cosa più importante che ci rimane di lui e' l'insegnamento ad avere passione per ciò che facciamo e ad avere fede nelle nostre capacita'.

Ciao Steve, grazie per averci insegnato a "pensare differente".


giovedì 29 settembre 2011

Disinstallare le applicazioni su OS X

Come rimuovere i file lasciati dalle applicazioni disinstallate

Uno dei punti forti di Mac OS X e' sempre stata l'estrema semplicità con la quale si installano le applicazioni. Nella maggior parte dei casi e' sufficiente trascinare l'icona del programma nella cartella Applicazioni ed il gioco e' fatto, ma disinstallare le applicazioni e' altrettanto facile?
Spesso abbiamo sentito dire che e' sufficiente trascinare l'icona del programma nel cestino, ma in verità non tutti i file creati dal programma vengono eliminati.
In questa breve guida vedremo dove scovare i file delle applicazioni e come rimuoverli tutti.

Generalmente le applicazioni che utilizziamo creano dei file necessari alla loro esecuzione all'interno della cartella Libreria nella nostra cartella Home (cioè quella cartella che ha il nostro nome utente).

Recentemente, con la versione 10.7 di OS X, la suddetta cartella Libreria e' apparentemente scomparsa dalla nostra Home! In realtà e' sempre li al suo posto ma e' nascosta alla vista del Finder. Potete raggiungerla andando con il mouse sul menu Vai del Finder e quindi tenere premuto il tasto alt (anche detto option) per vederla comparire nella lista delle cartelle e quindi selezionarla.

La cartella Libreria e' invisibile!


All'interno di Libreria ci sono molte cartelle, quelle che generalmente dovrebbero contenere i file delle applicazioni sono:
  • Application Support (Supporto Applicazioni);
  • Preferences (Preferenze);
  • PreferencePanes (Pannelli delle Preferenze).
Ho sottolineato generalmente perché non tutti gli sviluppatori rispettano le regole.

Il contenuto della cartella Libreria


La cartella Application Support sta li appositamente per contenere le eventuali cartelle create dalle applicazioni installate, ma non e' raro trovare la cartella di un programma all'interno di Libreria e al di fuori di Application Support. Di solito queste cartelle hanno il nome del programma che le ha generate o il nome dello sviluppatore. Ad esempio Firefox crea la cartella Mozilla, mentre Skype crea la cartella Skype.
Primo passo per disinstallare completamente un programma e' quindi quello di scovare ed eliminare la sua cartella.

Il secondo posto dove andare a cercare e' Preferences (o anche Preferenze). In questa cartella ci sono i file che memorizzano le impostazioni dei programmi. I nomi di questi file più o meno rispettano questo schema:

com.sviluppatore.nomeDelProgramma.prefs

o anche

org.sviluppatore.nomeDelProgramma.prefs

Di solito i programmi commerciali utilizzano com. mentre quelli open source org.
Anche l'estensione finale .prefs può variare da programma a programma, in alcuni può essere .preferences o in altri può essere omessa.
In realtà, la maggior parte dei file presenti in questa cartella ha il suffisso .plist, che sta per property list (lista delle proprietà). E' un file di pochi kilobyte che di solito contiene le impostazioni dell'interfaccia grafica del programma, tipo le dimensioni e la posizione delle finestre, ecc...
Questi file vengono creati e aggiornati ad ogni avvio del programma e nel caso vengano eliminati per errore, verranno ripristinati con i valori di default. In alcuni casi e' utile eliminarli quando l'applicazione di riferimento presenta un'interfaccia corrotta o inutilizzabile. Eliminare il file plist e riavviare l'applicazione spesso risolve il problema.
Nel nostro caso stiamo disinstallando un'applicazione e quindi, una volta scovato il suddetto file possiamo cestinarlo.

Ultimo posto dove andare a cercare e' PreferencePanes. In questa cartella ci sono i file con estensione .prefPane che aggiungono un pannello delle preferenze a Preferenze di Sistema. Andate a cercare qui solo se l'applicazione disinstallata ha un pannello di preferenze visualizzato all'interno di Preferenze di Sistema.

Fatto questo, nel 90% dei casi avete ripulito il sistema da tutti i file generati dall'installazione di un programma. Ricordatevi che non tutti gli sviluppatori rispettano le regole e potreste trovare cartelle dedicate nei posti più impensabili, anche in bella vista all'interno della vostra cartella Home.

Alcune applicazioni forniscono un programma di disinstallazione, se presente usate quello e non rimuovete i file manualmente per evitare problemi.
Ultimo consiglio, se non siete sicuri di quello che fate e' meglio non gettare niente nel cestino e lasciare le cose come stanno.

martedì 20 settembre 2011

Modificare l'aspetto della schermata di blocco dello schermo di Ubuntu 11.04


Come installare i temi offerti dal sito GNOME-LOOK.ORG

In questo secondo appuntamento con la personalizzazione di Ubuntu 11.04, vi guiderò alla modifica dell'aspetto della schermata di blocco dello schermo utilizzando i temi liberamente scaricabili dal sito GNOME-LOOK.ORG.

Per chi non lo sapesse, iniziamo con ildire che cosa e' la schermata di blocco dello schermo e quando viene visualizzata. Quando ci allontaniamo dal computer per qualche minuto viene visualizzato il salvaschermo e successivamente lo schermo va in stand-by ( modalità e tempi dipendono dalle impostazioni delle preferenze ). Quando ritorniamo al computer ci verrà richiesta la nostra password utente per tornare alla sessione di lavoro, questa e' la schermata che andremo a personalizzare.

Di default l'aspetto della suddetta schermata e' piuttosto semplice, una finestra al centro di uno schermo completamente nero. La prima cosa da fare e' trovare un tema da scaricare ed installare sul nostro sistema. Sul sito gnome-look.org possiamo trovare questi temi, denominati Lock Screen od anche Lock Dialog, cliccando sulla categoria Screensavers. In questo guida userò il tema NSA Lock Screen, ma ovviamente potete usare il tema che preferite.

  • Una volta scaricato il tema, di solito e' un archivio .tar.gz, aprite il file con un doppio click e vi apparirà la finestra del Gestore di archivi. Cliccate sull'icona Estrai per estrarne il contenuto , scegliendo come destinazione la Scrivania.
  • Se avete scaricato il tema NSA Lock Screen vi troverete la cartella nsa sulla Scrivania. I file importanti al suo interno sono:
    • la cartella nsa-images, contiene le immagini utilizzate dal tema;
    • il file lock-dialog-nsa.gtkrc, un file di testo utile per modificare l'aspetto del tema;
    • il file lock-dialog-nsa.glade, il file che definisce l'interfaccia grafica del tema.
    Il contenuto della cartella nsa
    Quest'ultimo e' un file in formato LibGlade, modificabile con Glade, il programma di sviluppo delle interfacce grafiche per GNOME. Purtroppo in Ubuntu 11.04 questo file non e' utilizzabile, al suo posto dobbiamo utilizzare un file in formato GtkBuilder con estensione .ui, il nuovo formato utilizzato da Glade. Ho provato ad aprire il file .glade e poi salvarlo nel formato .ui, ma comunque non funziona. Bisogna modificarlo per renderlo compatibile, per il momento ho una soluzione più semplice e veloce, adesso andiamo avanti.
  • I file che definiscono il tema di default della schermata di blocco di Ubuntu si trovano in / usr / share / gnome-screensaver. Nella stessa posizione dobbiamo copiare la cartella nsa-images ed il file lock-dialog-nsa.gtkrc. Potete farlo con i comandi da Terminale oppure con Nautilus avviandolo da Terminale con il comando sudo Nautilus ( in questo modo Nautilus ha i privilegi di sistema per accedere in scrittura alla cartella gnome-screensaver ).
  • Il contenuto di gnome-screensaver con il tema nsa
    Non potendo utilizzare il file lock-dialog-nsa.glade possiamo crearcene uno copiando il file lock-dialog-default.ui, che troverete all'interno di gnome-screensaver ( non e' altro che l'interfaccia grafica del tema di default ), ed incollatelo nella stessa posizione per farne un duplicato. Quindi rinominate il duplicato con il nome lock-dialog-nsa.ui.
  • Adesso, dal Terminale, digitate il comando gconf-editor, comparirà la finestra dell'Editor di configurazione, utile per modificare vari aspetti del sistema. Aprite la cartella denominata apps, posta sulla colonna di sinistra dell'Editor, cliccando sul triangolo. Selezionate con un click la voce gnome-screensaver. Sulla parte sinistra della finestra compariranno diverse voci divise in nome / valore. Trovate la voce lock-dialog-theme e modificate il valore da default ad nsa ( basta cliccarci su per modificarlo ). Ora potete chiudere la finestra.
  • Adesso, se provate a bloccare lo schermo ( con la voce Blocca schermo nell'ultimo menu a destra contrassegnato dal simbolo di accensione oppure da tastiera premendo i tasti Ctrl + Alt + L ) e muovete il mouse vi comparirà la nuova schermata di blocco dello schermo con il tema che avete installato.
Il problema e' che abbiamo sostituito il file .glade con una copia di quello di default .ui, quindi la posizione del testo e degli elementi dell'interfaccia possono risultare sballati. Per ovviare a questo problema possiamo modificare il file lock-dialog-nsa.ui aprendolo con Glade. Chi sviluppa programmi per GNOME ed ha un minimo di pratica nell'uso di Glade non avrà problemi a farlo, ma per tutti gli altri non sarà cosi' facile.

la modifica del file lock-dialog-nsa.ui
Per quanto riguarda il tema NSA che ho usato in questa guida, mi sono limitato a spostare verso il basso la posizione del testo modificando il parametro Riempimento superiore del widget alignment2, come potete vedere nell'immagine. Inoltre ho modificato i colori del testo da nero a bianco modificando il file lock-dialog-nsa.gtkrc. Per farlo aprite il file con l'Editor di testo, andate alla fine del file e modificate la stringa “label-black” in “label-white”, come evidenziato nell'immagine.
la modifica del file lock-dialog-nsa.gtkrc

Queste modifiche non saranno necessarie sui temi compatibili con Ubuntu 11.04 che utilizzano i file in formato GtkBuilder .ui.