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
venerdì 12 aprile 2013
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
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
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 |
----------------------------------------------------------------------
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();
----------------------------------------------------------------------
in pratica si preleva il primo campo (indice = 0) della 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
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
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
-----------------------------------------------------
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
Il software e' a pagamento ma vengono rilasciate licence gratuite per progetti opensource
Iscriviti a:
Post (Atom)
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...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...