venerdì 12 aprile 2013

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

lunedì 8 aprile 2013

Sqlite Manager come estensione di Firefox

In ambiti in cui non e' possibile installare programmi puo' risultare utile utilizzare l'estensione SQLite Manager

L'installazione e' quella comune a tutti i plugin di Firefox e l'uso e' sostanzialmente immediato con la possibilita' di caricare il file ed eseguire query


venerdì 5 aprile 2013

Condividere variabili tra piu' classi (C++/Qt)

A causa dell'incapsulamento della programmazione ad oggetti non banale condividere dati tra piu' classi.

Un metodo per effettuare questa operazione e' quella di creare una classe apposita che gestisca le variabili con funzioni apposite per settare e recuperare il valore delle variabili

per esempio si puo' fare (chiamando la nuova classe variabili)
variabili.h
-----------------------------------------------------
#ifndef VARIABILI_H
#define VARIABILI_H

class variabili
{
public:
    variabili();
    void set_id(int id);
    int get_id();
private:
    static int m_int;
};

#endif // VARIABILI_H
-----------------------------------------------------

variabili.cpp
-----------------------------------------------------
#include "variabili.h"

int variabili::m_int;

variabili::variabili()
{

}
int variabili::get_id()
{
   return m_int;
}
void variabili::set_id(int id)
{
    m_int = id;
}
-----------------------------------------------------

per settare e leggere il valore della variabile condivisa nelle due classi si puo' operare come segue

Classe 1 (setta la variabile)
-----------------------------------------------------
#include <variabili.h>
.
.
.
variabili *myid = new variabili;
myid->set_id(2);
//int t1 = myid->get_id();
//qDebug() << "Main" << t1;
delete myid;
-----------------------------------------------------

Classe 2 (legge la variabile settata dalla Classe 1)
-----------------------------------------------------
#include <variabili.h>
.
.
.
variabili *myid = new variabili;
int t1 = myid->get_id();
//qDebug() << "Dialog" <<  t1;
delete myid;
-----------------------------------------------------

giovedì 4 aprile 2013

BitRock InstallBuilder

Un programma piu' complesso ma con le stesse funzionalita' di base di InstallJammer e' BitRock InstallBuilder

Il software e' a pagamento ma vengono rilasciate licence gratuite per progetti opensource



Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...