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.

Ubuntu 9.10

Incredibile!!! Dopo due anni di Linux Day, quest'anno ho dovuto disertare per lavoro.
Mi faccio subito perdonare portando all'attenzione un articolo che parla di Mark Shuttleworth mentre si esprime sul prossimo rilascio di Ubuntu, che avverrà fra 2 giorni come potete vedere dal count down nel blog, e su Windows 7, su quale tutti stanno dicendo la loro.

Personalmente non vedo l'ora di provare il nuovo Ubuntu mentre non mi interesso particolarmente delle evoluzioni di Windows visto che è un sistema nato vecchio perchè doveva essere rilasciato al posto di Vista, che non può essere definito sistema operativo visto che di operativo non ha proprio nulla.

Ecco a voi il link dell'articolo molto interessante da leggere: http://www.ilsoftware.it/articoli.asp?id=5638

Buona lettura :)

sabato 26 settembre 2009

Linux Day 2009, -1 mese

Comincio con lo scusarmi per un lungo periodi di silenzio ma sto preparando un articolino particolarmente interessante, che se funzionerà porterà ad altri interessanti articolini, oltre all'arrivo di un BlackBerry che implora di essere utilizzato per lo sviluppo.

Anche quest'anno si terrà il Linux Day il 24 ottobre. Il Linux Day è l'occasione per tutti i membri della comunità Gnu/Linux di far conoscere al mondo le potenzialità dell'open source. Si terranno iniziative portate avanti dai vari LUG in tutt'Italia e io sarò presente al Linux Day di Lucca per seguire tutto quello che hanno preparato nella cornice di Capannori i ragazzi del LuccaLUG.

Buon divertimento a tutti!!!

sabato 5 settembre 2009

Fedora 11 sul mio pc

La mia scheda di rete, o il mio router, devo ancora capirlo, mi ha sempre dato problemi con ubuntu.

Ho provato molte strade ma nessuna ha portato frutti quindi ho provato a installare Fedora 11 che aggiorna il kernel a una versiona più recente.

Ora vedremo come si comporterà nei prossimi riavvii. Il problema infatti sorge mano a mano che si va avanti.

venerdì 4 settembre 2009

Microsoft non si smentisce mai!

Purtroppo a casa non ho questo "privilegio" ma in ufficio mi è stato chiesto di aggiornare Internet Explorer alla versione 8.

Appena installato ha chiesto se volevo configurarlo ed ecco che domanda fa:



In pratica ci chiedono se possono raccogliere delle informazioni sui siti che visitiamo per poi spammarci in faccia la più grossa violazione della privacy.

Per cortesia Bill non prendere in giro gli utenti. A voi le conclusioni.

domenica 30 agosto 2009

Warsow 0.5 released

Il mondo dei giochi open source è costellato di prodotti di nicchia con un gameplay particolari o esperimenti.


Warsow è sviluppato da un team che a potenziato il motore grafico di quake 2 e sviluppato un gioco dal gameplay originale. Ma non basta. Via via che si procede nelle release, seppure sempre in beta, aggiungono mappe, modalità, armi e migliorano costantemente movimenti e bilanciamento.

Questo processo unito a una community di tutto rispetto rende Warsow una perla veramente rara da non lasciarsi scappare.

Ecco il sito ufficiale da dove è possibile scaricare la nuova versione e partecipare al forum di discussione molto popolato: www.warsow.net

PS: da giocare fra un duel di quakelive e l'altro .

mercoledì 19 agosto 2009

Quake Live for Linux

Questo è sicuramente l'evento dell'estate. Quake Live sbarca con una puntualità svizzera su Gnu/Linux.
Facciamo un po' di chiarezza:
  1. Quake Live è uno sparattutto in prima persona praticamente solo multiplayer
  2. Quake Live ha un motore grafico che è un potenziamento del motore rilasciato sotto GPL di Quake 3 Arena
  3. Quake Live è completamente gratuito
  4. Quake Live si gioca direttamente dal browser scaricando solo:
    • un plug-in per firefox
    • i dati di gioco dal sito
È stato lanciato più di un anno fa su Windows (mannaggia mannaggia) e da ieri lo possono giocare sia gli utentu Mac che gli utenti Gnu/Linux.

Precipitatevi al sito http://www.quakelive.com e provatelo è gratis ;)

venerdì 7 agosto 2009

Meritato riposo

Sono arrivate le tanto sospirate ferie. Quest'anno io e la mia ragazzia puntiamo verso la Toscana.



Per questo il blog questa settimana, come capita da un pochino, non avrà aggiornamenti.

Ci vediamo il 17 agosto ;)

lunedì 3 agosto 2009

Firefox oltre un miliardo di volte

Lo so, lo so. In questi giorni sono usciti diversi articoli che riportano questa notizia.

Il fatto è che proprio non posso fare a meno di riportare questo evento anche sul mio blog. Sono proprio contento di questo traguardo raggiunto da Mozilla Firefox.

Io uso sempre questo browser ed effettivamente non mi fiderei a circolare su iternet altrimenti.
So che i suoi bug ce li ha anche il pandino ma mi sembra quasi uno scudo impenetrabile rispetto alla concorrenza. (Ok ok, parlatemi pure di Opera ma io mi tengo Firefox).

Per non parlare della miriade di plug-in che praticamente rendono Firefox il coltellino svizzero del terzo millennio.

Continuate cosi! :)

sabato 1 agosto 2009

Utilizzo di Qt per i file

Siamo dunque giunti al primo di una serie di articoli che tratteranno le librerie Qt in maniera un po' più seria (e anche il primo articolo da dott. ihihih!!!).

Apriamo il nostro fidato Qt Creator e proviamo a interagire con un file, che potrebbe essere benissimo un file di configurazione o un file di sistema.

Per allenarci creeremo una funzione preso in input un file, una funzione per effettuare le modifiche a una stringa e una tabella hash (int,qstring) passata per puntatore, riempie la tabella con indice e stringa modificata dalla funzione.

Nel nostro caso la funzione di modifica della stringa sarà semplicemente prendere i primi x caratteri.
void parseString( void * str )
{
QString * objStr = (QString * ) str;

*objStr = (*objStr).left( CODE_LEN );
}

Quindi nella nostra funzione fillHashTable andiamo ad aprire e scorrere il file come segue:

1) Creiamo un oggetto di tipo QFile passandogli il path del file da aprire:
    QFile filePtr (file);


2) Creiamo uno stream di dati sul file in sola lettura e cicliamo fino a che non viene raggiunta la fine del file.
    QTextStream stream( &filePtr );
while( !stream.atEnd() )
{
line = stream.readLine();
}


Ora con la linea ottenuta possiamo fare quello che vogliamo. Nell'esempio cerchiamo i token separati dallo spazio e il primo token sarà il numero il secondo la stringa da formattare.

Ecco quindi l'intera funzione:
void fillHashTable( QString file , void(*parser) (void * str), QHash <int , QString> * tb )
{
QHash <int , QString> table;
QFile filePtr (file);
bool fin = false;

if( !filePtr.open(QIODevice::ReadOnly | QIODevice::Text) )
{
cout<<"ERRORE nell'apertura del file"<<endl;
exit( -2 );
}
table.clear();
QTextStream stream( &filePtr );
QString line, tok01 , tok02;
QStringList tokens;

while( !stream.atEnd() || !fin )
{
line = stream.readLine();
if( line == "" )
{
fin = true;
continue;
}

tokens = line.split( " " );
tok01 = tokens[0];
parseString( &tokens[1] );
tok02 = tokens[1];

table.insert( tok01.toInt() , tok02 );
}


filePtr.close();

*tb = table;
}


Si dovrà dunque scrivere un main che semplicemente stampa a console i valori inseriti nella tabella hash.
Importante: l'oggetto QHash appena creato ha già un elemento in posizione 0. Per questo va pulito con il metodo clear. In merito a questo, che per me è un difetto, sto cercando materiale ma per il momento non ho ancora trovato nulla.

Ecco infine il main creato per quest'esempio:
int main(int argc, char *argv[])
{
QHash <int , QString> table;
table.clear();
fillHashTable( "file.txt", parseString, &table );
cout<<"Stampa della hash di dimensione "<<table.size()<<endl;
for( int i = 0; i < table.size() ; i++ )
{
cout<<i<<" : "<<table[i].toStdString()<<endl;
}

return 0;
}


Per ora ho concluso. Buon divertimento con quest'esempio che può ovviamente essere adattato a molte situazioni.

È arrivato il nuovo computer!!!

Ebbene si. Dopo anni di servizio il mio HP Compaq nx7400 che mi ha accomapagnato in tutti i laboratori e nella stesura della tesi è andato in pensione.

La scelta è stata ardua ma alla fine abbiamo trovato il più degno sostituto:



ecco la scheda tecnica che si può leggere anche qui:


Marca: Asus
Modello: X71SL-7S002C
Processore: Intel Core 2 Duo P8400, 2.26 GHz, 3MB cache L2, FSB 1066 MHz
Memoria: 4Gb DDR2 (ho fatto mettere 2 moduli da 2GB)
Schermo: 17 pollici WXGA+ (1440 x 900) Asus Splendid - Glare Type
Scheda Video: NVIDIA GeForce 9300M GS, 512MB dedicati
Hard Disk: 320 GB SATA 5400 rpm
Drive Ottico: Masterizzatore DVD DL Super Multi
Porte: 1 x VGA D-Sub 15 pin, 4 x USB 2.0, 1 x HDMI, 1 x Kensington Lock, 1 x Uscita Cuffie, 1 x S/PDIF, 1 x jack Microfono, 1 x RJ-11, 1 x RJ-45, 1 x Express Card, Card Reader 8in1
Networking: WiFi 802.11a/b/g/n, Gigabit Ethernet LAN 10/100/1000, Bluetooth 2.0+EDR, Modem V.92/56Kb
Sistema Operativo: Gnu/Linux Ubuntu 9.04 (è stato immediatamente levato Windows Vista Premium che è in dotazione)
Batteria: Li-Ion 8 celle
Dimensioni: 410 x 298.5 x 38.4/41.7 mm
Peso: circa 3.5 Kg
Altro: Webcam 1.3MP, Tastierino numerico

A voi i commenti.

mercoledì 22 luglio 2009

Un punto della situazione

Non uso quasi mai questo blog per comunicazioni personali ma questa volta mi sembra doveroso farlo.



Dopo quattro anni sudati e con alti e bassi di ogni tipo sono giunto alla fine della laurea con un risultato tutto sommato, visto la corsa fatta, niente male.

Ho anche cominciato a lavorare presso Capgemini Italia, qui nella città dove abito. Questo lavoro unito a una preparazione maniacale della tesi e di tutto ciò che riguarda la laurea hanno reso i post su questo blog una vera rarità.

Sono stati molto più frequenti i twit soprattutto per una questione di velocità, ma il mio strumento preferito rimane sempre il blog.

Ora che l'università, per il momento, è finita posso ritornare con un po' più di frequenza a fare i miei esperimenti e quindi i post sul blog e a seguire più assiduamente tutto ciò che avviene nel mondo open source.

Quindi un bel "stay tuned" mi sembra d'obbligo.

mercoledì 8 luglio 2009

Google Os, la notizia innonda la rete!

Sapevo che esisteva. Non poteva non esistere. Infatti eccolo fra noi.



Una notizia echeggia per tutta la rete: Google sta per far uscire un nuovo sistema operativo web based. Ecco il link diretto al blog di Google dove mamma G da l'annuncio.

Ora staremo a vedere. Pare che questo sistema operativo si basi su Linux e che sia fatto apposta per il web e i netbook.

Staremo a vedere, ma sicuramente questa è una di quelle notizie che infiammano l'estate.

lunedì 6 luglio 2009

Arena Live

Non c'è che dire, bisogna fare veramente i complimenti a questi ragazzi che hanno fatto un lavorone.



Esisteva già Open Arena, un gioco free basato sull'engine di Quake 3 Arena. Ma ora hanno fatto di più: Arena Live. Questo gioco si propone di essere l'alternativa free al nuovo gioco di casa id, di prossimo arrivo su Gnu/Linux, Quake Live.

L'ho provato ed il gioco è abbastanza giocabile, ma il peso di tale novità è grande. Un segnale alla casa: "ID, datti una mossa che qui se no ci si organizza altrimenti!".

Dopo il 20, giorno della laurea tanto sudata, mi ci troverete ogni tanto. Nel frattempo, buon divertimento!

WiMax è La tecnologia

Finalmente le prime notizie sulla tecnologia, la prima tecnologia, del futuro: WiMax.

Ebbene, come si può leggere in quest'articolo su Repubblica WiMax batte indiscutibilmente Umts decretando la sconfitta di una tecnologia, a mio avviso fallimentare fino dall'inizio, ma tanto spinta dagli operatori che volevano guadagnare senza spendere.

Solo così si batte il digital divide, banda larga ovunque a prezzi ragionevoli. Forza WiMax!

domenica 21 giugno 2009

Scopriamo Twitter

In effeti questa smentita nei miei confronti proprio non me l'aspettavo.

Ho sempre pensato a facebook e compagnia bella come a una perdita di tempo mascherata da programma di social networking.

Negli ultimi giorni invece si è fatto un uso sempre più "social" di twitter.
La questione delle elezioni iraniane infatti ha dimostrato quanto l'interazione, tramite messagi testuali, con il portale di microblogging permette di comunicare con il mondo intero,istantaneamente, situazioni e pensieri censurati dalle autorità.

Sulla scia di questa ritrovata fiducia ho creato anche io un mio account di twitter raggiungibile all'indirizzo http://twitter.com/mrgiov. Vediamo se potrà tornare utile anche a me.

giovedì 11 giugno 2009

Magic "povera" Italy

Non mi piace parlare di politica, o di ciò che riguarda i politici. Infatti volevo scrivere un articolo composto solo dall'immagine qua sotto.

Mi preme solo fare sapere il contesto in cui si colloca questa meraviglia pubblicitaria. Questo "logo" è la nuova faccia di italia.it, che per chi non lo sapesse è un portale sul turismo in italia. Il sito è stato più volte al centro dell'attenzione non per i "preziosi" contenuti quanto per lo spreco di denaro pubblico al quale a portato e per il fatto di essere stato attivo solo per 1 anno.

Che sia il definitvo colpo di grazia a un progetto nato già fallito?

PS: per acculturarsi un po' su questo prodigio grafico vi lascio il link dell'articolo del corriere della sera che ne parla. L'opinione dei netizen è una soltanto!

mercoledì 10 giugno 2009

Linux 2.6.30 is out

Linus comincia la sua solita mail di annuncio parandosi già da eventuali bug che la 2.6.30 potrebbe avere, ma un dato è certo:

abbiamo fra le mani il nuovo kernel che contiene una discreta quantità di succose novità.



As mentioned last week, -rc8 was the last -rc, and there really isn't any
point in delaying the real release any more.

I'm sure we've missed something, and I know we have some regressions
pending. At the same time, we do need the coverage of a eral release, and
on the whole it looks pretty good. We've fixed a few regressions in the
last few days, and there's always 2.6.30.x.


La cosa che mi ha colpito per prima e della quale do subito il link sono i filesystems.

Un link tutto da leggere e da gustare!

sabato 6 giugno 2009

Google Chrome for Gnu/Linux

Voglio stupirvi con un immagine del mio desktop:


Ebbene si, non si tratta di chromium, la versione sviluppata tempo fa che "emulava" google chrome su Gnu/Linux. Questa è proprio la versione ufficiale di Google.

La sto provando in questi minuti e l'unico problemino è che non ha riconoscito automaticamente il plug in di flash.

Ci tengo però a precisare che è una versione unstable di testing, è comunque un gran prodotto.

A presto per ulteriori aggiornamenti.

domenica 31 maggio 2009

Disegnare 2d con Qt4

Facciamo una piccola divagazione rispetto alla gestione dei Todo.
Con le Qt è molto semplice anche disegnare in 2D.


Per disegnare una linea o un cerchio come quelli appena mostrati il procedimento è molto semplice.

Cominciamo con il mostrare per intero il codice:
void MainWindow::paintEvent(QPaintEvent * event)
{
QPainter painter( this );
painter.setPen(QColor(255,0,0));
painter.drawLine(QPointF(0,0),QPointF(50,50));
QRectF rect (60,60,100,100);
QPainterPath path (QPointF(100,100));

path.addEllipse(rect);
painter.fillPath(path,QColor(0,255,0));
}


Per prima cosa va fatto l'override del metodo paintEvent() proprio dei widget.

painter.setPen(QColor(255,0,0));
painter.drawLine(QPointF(0,0),QPointF(50,50));

Con queste due semplici linee di codice è molto semplice disegnare e definire anche la formattazione.
Per riempire invece un tondo bisogna creare un QPainterPath, ovvero un insieme di primitive di disegno da disegnare tutte insieme.
Queste semplici istruzioni sono ovviamente utilizzabili ovunque e il metodo paintEvent è reimplementabile in ogni componente per poterne definire lo stile di disegno.

Buon divertimento :)

mercoledì 27 maggio 2009

Android Developer Challenge il ritorno

Visto l'incredibile successo della prima edizione, e la discreta diffusione del nuovo sistema operativo per palmari e smart phone, prossimamente anche per netbook, Google ha deciso di fare una nuova edizione del concorso per sviluppatori di applicazioni per la sua piattaforma.



Le categorie di sviluppo restano pressochè le solite. Qui la pagina dove viene presentato il nuovo concorso.

Questa volta speriamo di poter partecipare anche noi italiani.

sabato 23 maggio 2009

Altra occasione persa

La newsletter italiana di Ubuntu diventa ogni settimana più interessante anche se ogni tanto riporta una brutta, anzi bruttissima notizia, come questa.

Se seguite questo link, potrete leggere che il comitato delle olimpiadi ha detto no ai formati aperti e open source per il sistema informatico delle olimpiadi.

Ciò mi porta a una riflessione molto seria. Da una parte l'insensata ostinazione a rinunciare ai formati proprietari in un momento di crisi come questo. Dall'altra però anche questa rinuncia potrebbe voler dire che c'è bisogno di un'offerta più aggressiva per poter invertire le tendenze.

Io penso che è questo il momento di spingere sull'acceleratore, però l'acceleratore va spinto sul serio, con una proposta compatta e convincente che spinga anche gli ultimi "anacronistici" scettici a passare all'open source.

sabato 16 maggio 2009

NetBeans, la strada verso la 6.7

NetBeans è un IDE completo e molto potente che si basa su tecnologia Java, ma permette di svillupare, praticamente, in tutti i principali linguaggi di programmazione.

Possiamo già scaricare la beta della nuova versione, 6.7, che contiene delle succose novità.
La prima che mi è saltato all'occhio è il supporto alle librerie Qt, che stanno prendendo sempre più campo.

Da questo link è possibile raggiungere la notizia del rilascio e il link per scaricare la beta, per quanto mi riguarda già in download.

martedì 12 maggio 2009

Mozilla Prism 1.0 beta

L'avevo già presentato un po' di tempo fa sempre su questo blog.

Si tratta di un programma che consente di utilizzare le applicazioni web come applicazioni studiate per il desktop.

Ora Prism è giunto alla versione 1.0 beta e bisogna assolutamente testarne le novità e soprattutto il modo innovativo di utilizzare le web application.

Ecco il post dell'annuncio: link.

lunedì 11 maggio 2009

Laboratorio Programmazione di Rete Open

Oggi è stato completato l'esame di Laboratorio di Programmazione di rete.

Pubblichiamo quindi il codice che è già presente su internet dall'inizio del progetto.
E' possibile quindi scaricarlo, testarlo e utilizzarne il codice.

Se individuate dei problemi potete sempre inserire una "issue" nel pannello delle segnalazioni, ne saremo veramente grati.

Cliccate qui per andare al sito "ufficiale" del progetto.

sabato 2 maggio 2009

Qt Tutorial - QToDo

È già da un po' che pensavo a un piccolo programmino da fare per poter esplorare le librerie Qt stimolato da qualcosa. Quel giorno è arrivato.

Ho pensato a un piccolo programmino che consenta di gestire il ToDo. Non solo per i programmatori, ma una sorta di organizzazione per tutti i gusti.
Per lo sviluppo di questa piccola applicazione utilizzeremo QtCreator 1.1.0 che fornisce tutti gli strumenti utili.
È possibile scaricare l'IDE da qua.

Comiciamo con il creare la form come avevo già mostrato tempo fa sempre su questo blog.

Creiamo una form con i seguenti componenti:
  1. QTreeWidget lista todo

    1. è possibile creare una QTreeView e poi trasformarla in QTreeWidget con il tasto destro e poi cliccando su change into-> tree widget

    2. Nome dell'oggetto: todoList

  2. PushButton con label Aggiungi e objectName add_bt

  3. PushButton con label Rimuovi e objectName remove_bt

  4. Horizontal separator da posizionare alla sinistra del pulsante "Rimuovi"


Dopo aver inserito tutti questi componenti sistemiamo il layout selezionando i due bottoni e il separator e poi cliccando su Layout Horizzontally in alto.

Poi fare click sulla form e cliccare su Grid Layout sempre nella solita barra.
Si otterrà pressochè il seguente risultato:

Ora andiamo a creare gli slots per gli eventi dei due pulsanti.
Nel file mainwindow.h modifichiamo il codice portandolo nelle seguente forma:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QMainWindow>
#include <QtGui/QTreeWidgetItem>
#include <QtGui/QInputDialog>

namespace Ui
{
class MainWindowClass;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = 0);
~MainWindow();

private slots:
void on_add_bt_clicked();
void on_remove_bt_clicked();

private:
Ui::MainWindowClass *ui;
};

#endif // MAINWINDOW_H

Innanzitutto occorre modificare il costruttore per fare in modo che il treewidget abbia una sola colonna che si chiama "Activity".
Lo si fa con il codice presentato di seguito da inserire nel costruttore.
 ui->todoList->setObjectName(QString::fromUtf8("treeWidget"));
ui->todoList->setColumnCount( 1 );

ui->todoList->headerItem()->setText( 0, QApplication::translate( "widget", "Activity",
0, QApplication::UnicodeUTF8 ) );

Ora andiamo a creare le due funzioni nel file mainwindow.cpp

Per prima cosa creiamo la funzione che aggiunge un item sotto a quello selezionato nell'albero.
Lo facciamo salvandoci nella variabile selected la selezione dell'utente e poi richiamando una QInputDialog che farà inserire all'utente una stringa tramite la funzione getText().
Dopo di che creiamo un QTreeWidgetItem e gli assegnamo come parent la root del widget se non è selezionato alcun item, altrimenti gli assegnamo come parent il primo elemento che si trova nella selezione, selected[0].

Ecco il codice che fa tutto questo.
void MainWindow::on_add_bt_clicked()
{
QList<QTreeWidgetItem *> selected = ui->todoList->selectedItems();
bool ok;
QString text = QInputDialog::getText(this,QString("Inserisci attività"),QString("Inserisci nuovo ToDo nella lista:"),QLineEdit::Normal,QString(""),&ok);
QTreeWidgetItem * i;
if(selected.length() > 0)
i = new QTreeWidgetItem(selected[0],0);
else
i = new QTreeWidgetItem(ui->todoList,0);

i->setText(0,text);
}


Andiamo ora a scrivere la seconda funzione, quella che rimuove l'item selezionato nell'albero.
Ovviamente se non ci sono item selezionati non si fa nulla. Se invece si ha un item selezionato lo si rimuove semplicemente invocando il suo distruttore come mostrato sotto.
{
QList <QTreeWidgetItem *> selected = ui->todoList->selectedItems();

if(selected.length() > 0)
selected[0]->~QTreeWidgetItem();

}


Se ora si prova a compilare ed eseguire si avrà più o meno il risultato che segue.


Sicuramente avrete notato che nella grafica finale c'è anche il menù file nella barra dei menu. Ma di questo parliamo la prossima volta ;)

domenica 26 aprile 2009

E' giunta l'ora X

Stamattina ecco con che mail mi sveglio:


Hi evoc_jazz,

Your free trial to Last.fm Radio is about to end. If you're enjoying it, why not
subscribe for only €3.00/month and continue listening to non-stop personalised
radio.

http://www.last.fm/subscribe

Best Regards,
The Last.fm Team



Bisognerà abbonarsi, che ne dite?

mercoledì 22 aprile 2009

Tomorrowbutntu!!!

Ci siamo!!!



Seguite la freccia e noterete che domani è l'X-day. Ho già l'ADSL che scalpita per scaricare l'ISO di Ubuntu 9.04.

A domani!!!

sabato 18 aprile 2009

Google App Engine Java Support

La notizia non è fresca fresca, anche se sono passati solo pochi giorni, ma ora sarà possibile scrivere applicazioni web sulla "piattaforma" App Engine di google anche con il linguaggio Java™.

Sul blog ufficiale ecco come comincia l'annuncio:
Today, we're very excited to announce the availability of a new programming language for Google App Engine. Please welcome the Java runtime!

Gli articoli su questo nuovo arrivato nel mondo App Engine non si fermano e Google afferma addirittura che:
...we're expanding the early look signups to 25,000 developers...

L'intero intervento si trova a questo indirizzo.

Il piatto sembra veramente gustoso, come d'altronde lo era già quando App Engine supportava solo Python.

Anche in questo caso Google ci ha semplificato molto la vita fornendo, SDK, Plug-in per Eclipse, Emulatore offline e tanta documentazione.

Possiamo vedere quanto è semplice creare un applicazione di Guestbook, questa volta in Java, nel video che si trova sul sito ufficiale:



Mi sono già venute in mente un paio di ideuzze per vedere di cosa è capace questo strumento.

Buon coding a tutti ;)

lunedì 13 aprile 2009

Pubblicità per linux.

Sono stati annunciati i vincitori del "concorso" lanciato dalla Linux Foundation che chiedeva agli utenti Linux di fare il proprio video di pubblicità a Linux.

A questo indirizzo trovate i primi classificati: http://www.ossblog.it/post/4798/i-vincitori-del-concorso-were-linux

Devo dire che sono usciti proprio dei bei video, come il primo classificato:



Enjoy ;)

domenica 5 aprile 2009

L'esempio di Rai.tv non è servito

E' domenica mattina e tutto dovrebbe scorrere in maniera tranquilla e serena, ma non è così. Un'altra volta mi hanno costretto a venire su questo blog e a sparare a tutto spiano sulle decisioni in campo IT delle aziende che dovrebbero fare servizio in Italia e in particolare sulle TV.

Già in passato rai.tv aveva commesso questo errore: senza windows e IE era impossibile guardare i contenuti dell'archivio rai.

Oggi vado per vedere le superbike su internet nel sito internazionale e subito noto una differenza: il sito si connette alle varie tv locali per la trasmissione dell'evento.

Ed ecco subito la seconda sorpresa:



Non aggiungo commenti mentre sto cercando di aggirare questo blocco. Ci risiamo, ogni volta è sempre la stessa storia. Complimenti!

sabato 4 aprile 2009

Android: nuovi orizzonti

Ho già parlato di Android nel mio blog ma questa volta non voglio farlo nella suo ambito naturale, gli smart phone, ma in un contesto "completamente" nuovo.



E' di un paio di giorni fa la notizia che HP sia al lavoro per una soluzione netbook + Google Android.

Questa notizia mi ha molto colpito perchè, a mio modesto avviso, è proprio quello che ci voleva. Un dispositivo netbook con sistema operativo studiato proprio per il mondo mobile.

Secondo me un prodotto di questo tipo si incastra perfettamente nello scenario attuale della tecnologia. Mi spiego meglio.

Da qualche settimana è arrivato anche in italia Dream il primo Googlefonino con sistema operativo Android. Subito due sono state le cose che mi sono balzate all'occhio:


  1. Un prezzo spropositato: io ritengo che 450 euro + tutta una serie di costi dovuta alla connettività che deve avere un dispositivo del genere siano un'assurdità, ma se il mercato è recettivo evidentemente se lo merita. Proprio su Hacker Journa di queste due settimane, nella pagina dell'editoriale è esposto un bell'epigrafo, "C'è vero progresso solo quando i vantaggi di una nuova tecnologia diventano per tutti." (Henry Ford). Mi sarei aspettato ben altro ingresso nel mercato da parte del Googlefonino e soprattutto di Tim se vuole giocare d'anticipo.

  2. Tutta una serie di blocchi imposti da Google/HTC/Tim e chi più ne ha più ne metta che taglia fuori una serie di smanettoni. Senza contare che anche per google varrà la regola: blocco inserito - sblocco trovato.



Sempre secondo me, un netbook a prezzo oramai consolidatamente popolare unito a un sistema operativo, in primis Open Source, e studiato apposta per il mobile porta una ventata di "novità" molto interessante per questo settore.

domenica 29 marzo 2009

Full Circle Magazine issue 22 e strumenti per la programmazione in C

Preso dal lavoro e dallo studio mi sono dimenticato, si lo ammetto, di scaricare il numero 22 di Full Circle Magazine (così ora ne avrò due da leggere visto che oggi è uscito anche il numero 23).



Ma la notizia vera e propria è che nel numero 22 c'è un articolo molto interessante.

Elie De Brauwer nella oramai consolidata sezione "Program in C" parla di uno strumento molto comodo per la programmazione in C: strace.

strace è un programma che intercetta le chiamate di sistema fatte dal processo. Uno strumento molto importante per tenere il controllo della sequenza logica che segue il programma.

Vi consiglio quindi di scaricare il numero 22 da questo link e già che ci siete anche il numero 23.

Buona lettura a tutti :D

sabato 28 marzo 2009

Venditori Ubuntu

Sono un accanito lettore della newsletter italiana di Gnu/Linux Ubuntu.



Nel numero 12 della newsletter, raggiungibile a questo indirizzo, mi ha colpito una notizia in particolare:

Avviato il Progetto Venditori Ubuntu


L'idea è quella di creare una lista dei produttori e rivenditori di pc con sopra installato Ubuntu.

Un progetto veramente interessante che offre un servizio comodo per chi vuole comperare un cd e vuole essere libero di scegliere Gnu/Linux come sistema operativo del proprio computer.

Ubuntu 9.04 Countdown.

A fine aprile uscirà la nuova versione di Ubuntu: 9.04

Come sempre ci prepariamo alla nuova uscita con il countdown sulla destra!!!

Dai ragazzi che mancano solo 26 giorni!

venerdì 20 marzo 2009

Riparmiate anche da Piccol

I Gialappi si sono inventati questo spot del fantasioso Piccol supermarket.

Questa settimana solo a singapore:


Ma ricordiamo che solo con Windows questi tre tasti vengono veramente usati con una certa frequenza. Quindi con Gnu/Linux risparmiate anche questi 1 0 0 0 € ! ! !

Gnu/Linux a 0 euro.

C/C++ Lavorare con tipi generici

Ecco una lezione dell'università di Stanford che mi è piaciuta particolarmente per l'argomento trattato.

Questa lezione insegnerà a scrivere una funzione di Swap che funziona con qualsiasi struttura dati passata alla funzione.

Buona visione!!!

sabato 14 marzo 2009

Primo programma Qt - Convertitore

Avete scaricato Qt Creator di cui ho parlato nello scorso post?
Se no, MOLTO MALE!!!! Correte a scaricarlo immediatamente.

Se si, M O L T O B E N E!
Possiamo cominciare a vedere come funziona e come è facile creare programmini utili (o anche meno utili).

Oggi proveremo a creare un convertitore lira-euro, oramai non più utile ma che può essere molto utile per imparare qualche nozione di base su librerie grafiche.

Bene apriamo l'IDE e creaimo un nuovo progetto ( File->New->Qt4GuiApplication ) e chiamiamolo Convertitore e la classe di grafica MainWindow.

Automaticamente il nostro IDE avrà creato 4 file come in questa figura:


Ora creaimo i seguenti controlli:
  1. una label text con object name "valuta" e il testo (si cambia cliccandoci sopra due volte) "Lira";
  2. un push button con object name "ok_bt" e il testo "Converti";
  3. un line edit con object name "line" e nessun testo al suo interno.
Rinominiamo anche il testo della finestra in "Convertitore Lira-Euro".

Otteniamo in questo modo una finestra che assomiglia a questa:


Ora dobbiamo aggiungere la logica del programma all'interno dei file "mainwindow.h" e "mainwindow.cpp".

Apriamo il file mainwindow.h e fra gli attributi pubblici e privati inseriamo le seguenti linee:

void on_ok_bt_clicked();


L'IDE automaticamente collegherà questa funzione alla pressione del tasto "Converti" dell'interfaccia, l'importante è che abbia lo stesso nome "void on__clicked();"

Ora scriviamo il corpo del metodo nel file C++:

void MainWindow::on_ok_bt_clicked()
{

QString money = ui->valuta->text();

if(money == "Lira")
{
//Convertiamo le lire in euro
QString line = ui->line->text();

float numero = line.toFloat();
numero = numero / 1936.27;

QString a = QString::number(numero);

ui->line->setText(a);
ui->valuta->setText("Euro");
}
else
{
//Convertiamo gli euro in lire
QString line = ui->line->text();

float numero = line.toFloat();
numero = numero * 1936.27;

QString a = QString::number(numero);

ui->line->setText(a);
ui->valuta->setText("Lira");
}


}


Dobbiamo per forza usare gli oggetti QString che ci mette a disposizione Qt per prendere i dati dai controlli e reinserire i risultati.

Clicchiamo su e "come per magia" comparirà il nostro convertitore in tutto il suo splendore:



Questo è il punto di partenza per una marea di terre inseplorate. Diamo pure sfogo alla nostra fantasia.

giovedì 5 marzo 2009

Qt Creator released

In concomitanza con l'uscita delle qt 4.5 ecco un IDE veramente potente:

Qt Creator



QtCreator permette di creare comodamente applicazioni grafiche basandosi sulle potenti librerie Qt, recentemente acquistate e rilasciate sotto licenza LGPL da Nokia.

Ho provato questo ide e l'ho trovato molto comodo e semplice da usare. Permette di creare form con pochi click e ha un editor C++ molto avanzato che completa automaticamente il codice in modo intelligente.

La news è riportata in questo link:
http://www.qtsoftware.com/about/news/nokia-releases-new-qt-developer-offerings-to-increase-productivity-and-performance

Scaricate e provate con mano questo gioiellino!!!

domenica 15 febbraio 2009

Rilasciata Debian 5.0

Gli sviluppatori di Debian vogliono augurare buon S. Valentino a tutti e lo fanno con una nuova release.

14 Febbraio 2009

Il Progetto Debian è lieto di annunciare il rilascio ufficiale di Debian GNU/Linux versione 5.0 (nome in codice "lenny"), dopo 22 mesi di sviluppo costante. Debian GNU/Linux è un sistema operativo libero che supporta un totale di dodici architetture di processori e include gli ambienti desktop KDE, GNOME, Xfce e LXDE...

questo è solo l'inizio dell'articolo con il quale gli sviluppatori hanno annunciato la nuova release.

Il mio pensiero va anche a
Thiemo Seufer, uno sviluppatore Debian deceduto il 26 dicembre 2008 in un tragico incidente d'auto. Thiemo era coinvolto in Debian in molti modi: provvedeva alla manutenzione di numerosi pacchetti ed era il sostenitore principale del port di Debian verso le architetture MIPS. Era inoltre un membro del nostro gruppo del kernel, così come del gruppo dell'installatore Debian. I suoi contributi vanno oltre il progetto Debian: ha anche lavorato sul port MIPS del kernel di Linux, sull'emulazione MIPS di qemu e a molti altri progetti minori, troppi per essere menzionati qui.
come si può leggere nel solito articolo alla voce "Dedica".

Ora non ci resta che scaricarla e provare con mano le novità.

venerdì 13 febbraio 2009

Bespin, qualcosa di nuovo sotto il sole.

Eccoci a presentare un nuovo tool di mamma Mozilla: Bespin!

Nell'intento degli sviluppatori c'è l'idea di creare un tool di sviluppo web collaborativo direttamente sul web. Un tool molto interessante con il quale ho provato a fare già qualche prova e mi è sembrato un po' pesantuccio da renderizzare nel browser.

Questa è un'immagine dell'editor integrato per HTML 5.0 e Javascript. Ho già testato che non è possibile inserire del codice PHP all'interno della pagina .html perchè oltre a non essere interpretato proprio impedisce la visualizzazione della pagina.

Dal sito ufficiale è possibile registrarsi gratuitamente e provare questo nuovo e promettente tool.

domenica 8 febbraio 2009

Full Circle Magazine issue 21

Arriva puntuale come un orologio, ogni mese, un nuovo numero di Full Circle Magazine, la rivista "ufficiale" di Ubuntu.

In questo numero spicca sicuramente un articolo su un nuovo videogame, ancora in fase di beta, per il nostro pinguino: Tribal Trouble 2.
Continuano inoltre le rubriche che parlano di comandi da shell e programmazione in C.
E' un numero molto gustoso che va letto dalla prima all'ultima pagina.

Non vi resta che scaricarla al volo dal sito ufficiale.

venerdì 6 febbraio 2009

Interfacce e MONO

Da qualche giorno mi sono appassionato allo studio del C Sharp, abbreviato come C#.

Ovviamente per fare alcune prove ho cercato materiale che parlasse di interfacce grafiche e come ora mi è arrivato questo video su YouTube.



Buona visione!

lunedì 19 gennaio 2009

Python, un po' di storia.

Mi piace leggere articoli e informazioni riguardanti l'informatica, ma direi che la storia mi mancava.

Ho scoperto solo oggi l'esistenza di questo blog.
E' un sito tenuto dall'inventore del Python, Guido van Rossum, nel quale ci spiega un pochino come è nato e cresciuto quello che all'inizio era un semplice linguaggio di script, ma che sta diventando un linguaggio di programmazione sempre più completo e potente.

Nel post del 13 gennaio, ad esempio, Guido parla della filosofia del design del linguaggio Python. Una lettura molto interessante.