lunedì 15 aprile 2013

Ancora Giove (in alto a destra) trionfa nel cielo invernale, stavolta insieme con la Luna ed Aldebaran

venerdì 12 aprile 2013

Dialog window modale e non modale in Qt

Di seguito un esempio su come aprire una finestra QDialog in modalita' modale e non modale (ovvero sempre in primo piano con focus attivo o meno)   


---------------------------------------------
   Dialog_class *dialog_class = new Dialog_class();
   dialog_class->setAttribute(Qt::WA_DeleteOnClose, true);
   
   //apre la finestra in modo modale
   dialog_class->exec();
   //apre la finestra in modo non modale
   dialog_class->show();
   dialog_class->raise();

Cancellare file in Qt

Un metodo per cancellare file in Qt
--------------------------------------------------------
void MainWindow::on_actionCancella_CVS_triggered()
{
    QFile file( QDir::homePath() + QDir::separator() +"anagrafiche_export.txt");
    if (file.exists())
    {
        file.remove();
    }
}

Aprire una porta UDP su un Firewall Linux

Un metodo rapido per aprire il firewall iptables di Linux per permettere le connessioni UDP sulla porta 55000


iptables -A INPUT -p udp --destination-port 55000 -j ACCEPT

Riportare al firmware originale Nexus S GT-I9023

Mi sono comprato usato un Nexus S GT-I9023.
Il telefono mi e' arrivato con una custom ROM con Android 4.2.2 ed ho deciso riportarlo al firmware originale di Google (un po' perche' mi sembrava un po' scattoso, un po' per avere la sicurezza di compatibilita')

La procedura e' quanto mai semplice:
Si scarica il firmware originale del telefono a questo indirizzo e si scompatta in una macchina con SDK Android installato (in realta' basta avere adb e fastboot)
Si riavvia il telefono in fastboot mode
Si lancia quindi (su Linux) lo script flash-all.sh
Gia' finito...bello avere un Nexus



Il telefono riavviato in Fastboot Mode


Il riavvio dopo aver flashato

Questi sono i messaggi a video, si osservi il tempo totale
----------------------------------------------------------------------
root@debianx40:/home/luca/Downloads/soju-jzo54k# ./flash-all.sh 
sending 'bootloader' (1536 KB)...
OKAY [  0.210s]
writing 'bootloader'...
OKAY [  0.382s]
finished. total time: 0.592s
rebooting into bootloader...
OKAY [  0.001s]
finished. total time: 0.001s
< waiting for device >
sending 'radio' (12288 KB)...
OKAY [  1.641s]
writing 'radio'...
OKAY [  1.903s]
finished. total time: 3.545s
rebooting into bootloader...
OKAY [  0.001s]
finished. total time: 0.001s
archive does not contain 'boot.sig'
archive does not contain 'recovery.sig'
archive does not contain 'system.sig'
--------------------------------------------
Bootloader Version...: I9020XXLC2
Baseband Version.....: I9020XXKI1
Serial Number........: 373342FC9C0400EC
--------------------------------------------
checking product...
OKAY [  0.001s]
checking version-bootloader...
OKAY [  0.001s]
checking version-baseband...
OKAY [  0.001s]
sending 'boot' (3964 KB)...
OKAY [  4.966s]
writing 'boot'...
OKAY [  0.563s]
sending 'recovery' (4308 KB)...
OKAY [  0.768s]
writing 'recovery'...
OKAY [  0.643s]
sending 'system' (337443 KB)...
OKAY [ 75.814s]
writing 'system'...
OKAY [ 42.327s]
erasing 'userdata'...
OKAY [  0.361s]
formatting 'userdata' partition...
Erase successful, but not automatically formatting.
Can't determine partition type.
OKAY [  0.015s]
erasing 'cache'...
OKAY [  1.690s]
formatting 'cache' partition...
Erase successful, but not automatically formatting.
Can't determine partition type.
OKAY [  0.001s]
rebooting...

finished. total time: 127.162s

martedì 9 aprile 2013

StrTok in Qt

Data una QString composta da piu' campi divisi da un separatore si possono ottenere le sottostringhe utilizzando un metodo differente da Strtok tipico di C ovvero passando attraverso una StringList
Nell'esempio che segue la stringa di input e' data da un pacchetto UDP cosi' formato

1;Luca;Innocenti

per ottenere il primo campo (il valore 1) si puo' procedere come segue

----------------------------------------------------------------------
QString pacchetto = datagram.data();




QStringList myStringList = pacchetto.split(";");
QString str_pettorale = myStringList.at(0);

----------------------------------------------------------------------
in pratica si preleva il primo campo (indice = 0) della StringList



Validare l'input di una QLineEdit

Per validare direttamente al momento della digitazione l'input in una QLineEdit di Qt si procede definendo prima un QRegExp con l'opportuna espressione regolare e poi si associa il validatore alla Line Edit

Piu' nel dettaglio


QRegExp re( "^[0-9]*$" );
QRegExpValidator *validator = new QRegExpValidator( re, 0 );
ui->linepettorale->setValidator( validator );

in questo modo nella QLineEdit denominata linepettorale saranno accettati solo valori numerici

Attenzione: questo metodo non funziona con i widget TextEdit

Feature Matching OpenCv

Il problema e' il seguente: trovare le differenze tra le due foto. Le due immagini sono state riprese a distanza di oltre un anno ed il ...