martedì 26 gennaio 2010

Ma in Italia c'è internet?


Sapevate che esiste un Google Lab? ... Si? ... Bene!
Sapevate che il Google Lab ha organizzato un tour in giro per il mondo? È proprio una gran figata!!!
Sapevate che Google ha pensato bene di non includere l'Italia nel tour?

Ebbene si, Google, come è accaduto per l'Android Developer Challenge, ha ritenuto che l'Italia non è degna di certi riguardi. Prima però di scagliarsi contro la multinazionale di turno io mi fermerei un attimo a riflettere e guardare in faccia la realtà di ciò che il nostro paese fa nell'era del Web 2.0.

Le infrastrutture sono quelle che sono. Internet sui cellulari lo usa il 2% (stima mia personale fatta ad occhio con una certa ironia) della popolazione e quasi nessuno sa cosa vuol dire cloud.
Vi sembra normale? A me personalmente no! Direi che è giunto il momento di darsi una bella svegliata se non vogliamo rimanere indietro per sempre.

Detto questo Google non ci fa sicuramente una bella figura visto che per quanto riguarda la telefonia l'Italia ha sicuramente un mercato redditizio pari a quello degli altri paesi. Purtroppo è sul piano dei servizi che deficitiamo.

domenica 24 gennaio 2010

Parametri da linea di comando secondo Go

Go-lang è stato pensato per essere il linguaggio definitivo per le applicazioni di sistema.
Una delle cose che più impreziosiscono gli strumenti che (non) tutti i giorni utilizziamo per l'amministrazione del nostro sistema è sicuramente il parco di opzioni e flag che possiamo indicare da linea di comando.

Go-lang permette molto comodamente di dichiarare quali saranno i parametri che ci aspettiamo di ricevere da linea di comando, di che tipo saranno e che cosa comunicare all'operatore per aiutarlo nell'utilizzo del tool.

Vediamo, con un semplice esempio, ciò che Go ci mette a disposizione per rendere la nostra applicazione il più flessibile possibile.

Cominciamo con dichiarare quali flag ci aspetteremo:
//Flags
var file_to_download * string;
var fileType * string;
var configShow * string;
var configEdit * bool;


Successivamente definiamo le keywords con le quali potranno essere attivati i parametri:
/**
*Function used to initialize flags from command line.
*/
func initFlags() int
{
file_to_download = flag.String("d","","Type the name of the file");
fileType = flag.String("t","*","Kind of file you want to download:\n\t*: all\n\tmov: movie\n\tmsc: music");
configShow = flag.String("c","editor","Open the config file into chosen [editor]");
configEdit = flag.Bool("C",false,"Edit parameters of config from inside the program.");
}

Il package flag contiene una funzione di definizione parametro per ogni tipo di comando che desideriamo ricevere. Tutte queste funzioni però hanno tutte la stessa forma. Ricevono infatti tre parametri:

  1. La lettera/Le lettere che identificano il comando;

  2. Il comportamento di default;

  3. Un messaggio da dare all'operatore su come va utilizzato il flag.


Una volta definiti i flag possiamo utilizzare i comandi che arrivano dalla shell all'interno del nostro programma:
/**
*Main function. From here the program starts.
*/
func main()
{

//Initialize flags
initFlags();

flag.Parse(); //Scans the arg list and sets up flags

var fileStr string = "";
var typeStr string = "";
var confStr string = "";
var confMode bool = false;

confStr += *configShow;
confMode = *configEdit;

if(confMode)
{
os.Stdout.WriteString("Config mode\n");
}
else
{
os.Stdout.WriteString("Normal mode\n");
}

if( *file_to_download == "") //Want to download a file
{
fileStr += "errore";
fileStr += Newline;
os.Stdout.WriteString(fileStr);
}
else
{
fileStr += *file_to_download;
fileStr += Newline;
os.Stdout.WriteString(fileStr);
}

typeStr += *fileType;
typeStr += Newline;
os.Stdout.WriteString(typeStr);

//Useless calls
giogolib.LogMessage(def.Debug,"Applicazione partita");
}


Spero di aver mostrato in modo chiaro come Go lang permetta di fornire all'utente che andrà ad utilizzare la nostra applicazione tutti gli strumenti per adattare l'esecuzione del software alle sue esigenze.

giovedì 7 gennaio 2010

Gennaio bollente!

Dopo una breve e meritatissima vacanza passata sul suolo parigino si ricomincia con la nostra battaglia per la libertà nel software (e non solo).


Lo stato italiano finalmente ci da uno strumento importante che è la class action. Sicuramente questo strumento si andrà ad affinare ma già al giorno d'oggi ci consente di battagliare per avere dei computer senza Windows pre installato. In questo modo l'utente sarà libero di scegliere quale sistema operativo e suite da lavoro installare.

Per approfondire questo interessante argomento vi consiglio di dare una sbirciatina a ossblog.it che ha un articolo veramente ben fatto ;)

domenica 20 dicembre 2009

Go Language - go statement

Il linguaggio Go, sviluppato da Google, mi ha subito affascinato. I programmatori di Google hanno da subito sostenuto che questo linguaggio di sistema sarebbe stato "divertente" da usare.
Non posso far altro che confermare quando dichiarato da big G e in questo video-tutoria cerco di far vedere con un semplice esempio quanto sia facile scrivere codice multithread con Go.



Perdonatemi l'audio che è leggermente "a scatti" ma recordmydesktop ha deciso che oggi lo vuole fare così. Una volta risolti i problemi pubblicherò una versione con l'audio migliore.

Per quanto riguarda un po' di documentazione ecco la specifica del comando "go": Go docs.

Ecco invece il codice dell'esempio per poterlo provare con mano:
package main

import "fmt";

func main()
{
var a int;

a = 10;

go thread1(&a);
}

func thread1(v * int)
{
//do nothing
fmt.Printf("Value %d",*v);
}

martedì 8 dicembre 2009

Vipera IDE now on svn

Con un po' di ritardo rispetto all'inizio dei lavori ho messo sotto SVN il mio nuovo progetto sviluppato in Qt.

Spero possa essere d'aiuto a molti che non solo vogliono avvicinarsi a python (per il momento può essere un editor di qualsiasi cosa) ma anche a coloro che vogliono giocare un po' con le librerie Qt.

Il link dove poter consultare/scaricare il codice sorgente è all'indirizzo https://code.google.com/p/viperaide/.

Sono molto graditi tutti i suggerimenti e tutte le critiche.

domenica 6 dicembre 2009

How To Pythonize - Letture impegnate

Per la serie imparare Python voglio ora comunicare l'uscita, in ottobre, di un libro completo e molto utile.

Learning Python è giunto alla quarta edizione. La terza edizione copriva praticamente tutti gli aspetti core di Python 2.5 ma dopo l'uscita di Python 3.x è stato necessario anche aggiornare tutta la letteratura di riferimento. Ecco come si pone questa nuova edizione.

Ho ottenuto ieri il libro e mi è sembrato subito molto completo e chiaro in pieno stile O'Reilly. Tratta veramente un'infinità di aspetti su Python 2.6 e 3.x (Siamo arrivati alla versione 3.1). È un libro molto grande, sia dal punto di vista del volume visto che si tratta di più di 1200 pagine, sia dal punto di vista degli argomenti trattati.
Mi sembra un deciso passo avanti rispetto all'edizione 3 e non solo una semplice revisione che molto spesso vediamo arrivare sugli scaffali.

Insomma un must di ogni programmer-bilioteca.

mercoledì 11 novembre 2009

Let's GO

Il mio aggregatore di notizie mi vomita tonnellate di news ogni giorno in una pagina dal design minimale (GOOGLE RULEZ).
Oggi però, proprio parlando di Google, mi è saltato all'occhio un trafiletto veramente interessante:

Have you heard about Go? We released a new, experimental systems programming language today. It is open source and we're excited about sharing it with the development community. For more information, check out the Google Open Source blog.

By Robert Griesemer, Rob Pike, Ken Thompson, Ian Taylor, Russ Cox, Jini Kim and Adam Langley - The Go Team


Allora mi sono precipitato sul sito ufficiale: http://golang.org e ho scoperto che è un linguaggio di sistema dinamico come python ma che si compila e ha una velocità di esecuzione come C/C++.
In pratica ora non resta che prendersi i tutorial e cercare di capire che cosa ci ha nascosto mamma Google per tutto questo tempo...

È ora di tuffarsi in un nuovo linguaggio tutto da imparare...

martedì 27 ottobre 2009

Vipera - Python IDE

Devo dire una cosa: NetBeans è molto pesante, così come il "più performante" Eclipse.
Visto che mi sono stancato dei tempi di caricamento ho pensato di scrivermi io stesso un comodo ide molto veloce e leggero che consenta di gestire i progetti e permetta un minimo di autocompletamento e di sintassi evidenziata.

Ecco com'è nato Vipera di cui voglio far vedere le prime immagini del progetto. Il set di icone è un po' rudimentale ma assolutamente chiare.



Il programma è sviluppato in C++ utilizzando le librerie Qt per una massima portabilità ma devo già da ora precisare che sarà ottimizzato per Gnu/Linux.
Spero di poter rilasciare una versione beta molto presto.