Con l'arrivo della nuova macchina digitale le foto sono un po' migliorate
In questa ripresa (18/2/2013 alle 22:21 da Firenze) si vede Aldebaran (a sinistra), la Lune (chiaramente al centro) e Giove (a destra) nella stessa porzione di cielo
Qui la simulazione in Stellarium
martedì 19 febbraio 2013
C4Droid
C4Droid e' la prima applicazione in assoluto che abbia acquistato (2.29 euro) e devo ammettere che ne vale la pena
L'applicazione permette di programmare all'interno di un terminale Android in C/C++ con Gcc come compilatore ed con alcune librerie di uso comune all'interno di Linux come SDL e Qt. In questo modo ci si svincola dall'impiego di Java e dalla macchina virtuale Dalvik per fare applicazione di livello piu' basso come e' possibile fare con l'NDK
Per mettere alla prova il compilatore ho preso il sorgente del post che permette di disegnare l'insieme di Mandelbrot
Il codice e' stato copiato ed incollato senza nessuna modifica, quindi compilato ed eseguito
Il risultato e' riportato nella immagine sottostante
Come si puo' osservare il risultato e' quello atteso. Il tempo di esecuzione, che su un pc attuale non e' quasi misurabile dato che il risultato e' quasi istantaneo, nel telefono Samsung GT-S5570i e' di circa 18 secondi
Con lo stesso compilatore si puo' usare Ncurses. Sempre prendendo a prestito da un precedente post si puo' ottenere
La cosa divertente e' che con questo compilatore si riesce a superare il controllo della latenza di Dalvik. In pratica di norma Android interrompe una applicazione se questa per circa 30 secondi non restituisce la possibilita' di interazione all'utente
L'immagine sottostante e' stata effettuata mediante un calcolo di circa 2 minuti e 25 secondi ed e' stata terminata senza nessuna segnalazione di anomalia da parte del sistema operativo
Un buon acquisto in fine dei conti anche se in fine dei conti si tratta di un giochino piu' che di uno strumento di produzione
L'applicazione permette di programmare all'interno di un terminale Android in C/C++ con Gcc come compilatore ed con alcune librerie di uso comune all'interno di Linux come SDL e Qt. In questo modo ci si svincola dall'impiego di Java e dalla macchina virtuale Dalvik per fare applicazione di livello piu' basso come e' possibile fare con l'NDK
Per mettere alla prova il compilatore ho preso il sorgente del post che permette di disegnare l'insieme di Mandelbrot
Il codice e' stato copiato ed incollato senza nessuna modifica, quindi compilato ed eseguito
Il risultato e' riportato nella immagine sottostante
Come si puo' osservare il risultato e' quello atteso. Il tempo di esecuzione, che su un pc attuale non e' quasi misurabile dato che il risultato e' quasi istantaneo, nel telefono Samsung GT-S5570i e' di circa 18 secondi
Con lo stesso compilatore si puo' usare Ncurses. Sempre prendendo a prestito da un precedente post si puo' ottenere
La cosa divertente e' che con questo compilatore si riesce a superare il controllo della latenza di Dalvik. In pratica di norma Android interrompe una applicazione se questa per circa 30 secondi non restituisce la possibilita' di interazione all'utente
L'immagine sottostante e' stata effettuata mediante un calcolo di circa 2 minuti e 25 secondi ed e' stata terminata senza nessuna segnalazione di anomalia da parte del sistema operativo
Un buon acquisto in fine dei conti anche se in fine dei conti si tratta di un giochino piu' che di uno strumento di produzione
venerdì 15 febbraio 2013
Riportare il firmware originale un Samsung Galaxy Next Turbo (GT-5570i)
Un po' scocciato dalle varie Rom custom ho deciso di riportare il telefono in oggetto al firmware originale
(la Optimus e' carina ma con tre launcher installati e non rimuovibili lascia ben poco spazio per altre applicazioni)
La procedura per ritornare al firmware originale e' il seguente
1) Scaricare l'ultimo firmware disponibile per il telefono (nel caso S5570IXILG1_S5570IITVLG2_ITV)
2) Scaricare il programma Odinatrix e inserire il file del firmware scompattato nella directory di Odinatrix (S5570IXILG1_S5570iITVLG2_S5570IXXLF3_HOME.tar.md5)
3) lanciare Odinatrix ed attendere il termine delle operazioni. Il risultato saranno 3 file (CSCxxx, MODEMxxx e PDAxxx) dentro la sottodirectory output
4) recuperare il file tassve_0623.pit
5) Mettere il telefono in Download Mode (ovvero accenderlo tenendo premuto il tasto Home+Volume Giu' e Accensione). Si deve confermare di voler procedere premendo il tasto Volume Su al primo menu
5) Collegare il telefono e lanciare il programma Odin 1.83 con le impostazioni della schermata nell'immagine
Il risultato e' il seguente
(la Optimus e' carina ma con tre launcher installati e non rimuovibili lascia ben poco spazio per altre applicazioni)
La procedura per ritornare al firmware originale e' il seguente
1) Scaricare l'ultimo firmware disponibile per il telefono (nel caso S5570IXILG1_S5570IITVLG2_ITV)
2) Scaricare il programma Odinatrix e inserire il file del firmware scompattato nella directory di Odinatrix (S5570IXILG1_S5570iITVLG2_S5570IXXLF3_HOME.tar.md5)
3) lanciare Odinatrix ed attendere il termine delle operazioni. Il risultato saranno 3 file (CSCxxx, MODEMxxx e PDAxxx) dentro la sottodirectory output
4) recuperare il file tassve_0623.pit
5) Mettere il telefono in Download Mode (ovvero accenderlo tenendo premuto il tasto Home+Volume Giu' e Accensione). Si deve confermare di voler procedere premendo il tasto Volume Su al primo menu
5) Collegare il telefono e lanciare il programma Odin 1.83 con le impostazioni della schermata nell'immagine
Il risultato e' il seguente
giovedì 14 febbraio 2013
Rotazione di immagine in CSS3
Un altro metodo per ruotare una immagine e' quello di utilizzare CSS3 con le proprieta' di rotazione delle immagini.
Questo metodo ha il problema che non tutti i browser supportano il medesimo set di modificatori (nell'esempio e' stato usato il metodo per i browser derivanti da WebKit)
-----------------------------------------------
<!DOCTYPE html>
<html>
<head>
<style>
div
{
width:160px;
height:160px;
background-image:url('http://junefabrics.com/images/android160.jpg');
-webkit-transform:rotate(45deg); /* Safari and Chrome */
}
</style>
</head>
<body>
<div></div>
</body>
</html>
-------------------------------------------------
Accelerazioni in HTML5/PhoneGap
Un esempio di come registrare le accelerazioni su un dispositivo mobile senza utilizzare le API native
In questo caso e' stata usata la libreria PhoneGap ... la stessa cosa sarebbe stata possibile anche con il solo HTML5 con il problema di dover gestire le differenti implementazioni sui differenti browsers
-----------------------------------------
<!DOCTYPE html>
<html>
<head>
<title>Accelerazione</title>
<script type="text/javascript" charset="utf-8" src="cordova-2.3.0.js"></script>
<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
var options = { frequency: 100 };
navigator.accelerometer.watchAcceleration(onSuccess, onError);
}
// onSuccess: Get a snapshot of the current acceleration
//
function onSuccess(acceleration) {
var accx = document.getElementById('accx');
var accy = document.getElementById('accy');
var accz = document.getElementById('accz');
accx.innerHTML = 'Accelerazione X : ' +acceleration.x;
accy.innerHTML = 'Accelerazione Y : ' +acceleration.y;
accz.innerHTML = 'Accelerazione Z : ' +acceleration.z;
}
// onError: Failed to get the acceleration
//
function onError() {
alert('onError!');
}
</script>
</head>
<body>
<p id="accx">Accelerazione X : </p><br>
<p id="accy">Accelerazione Y : </p><br>
<p id="accz">Accelerazione Z : </p><br>
</body>
</html>
-----------------------------------------
In questo caso e' stata usata la libreria PhoneGap ... la stessa cosa sarebbe stata possibile anche con il solo HTML5 con il problema di dover gestire le differenti implementazioni sui differenti browsers
-----------------------------------------
<!DOCTYPE html>
<html>
<head>
<title>Accelerazione</title>
<script type="text/javascript" charset="utf-8" src="cordova-2.3.0.js"></script>
<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
var options = { frequency: 100 };
navigator.accelerometer.watchAcceleration(onSuccess, onError);
}
// onSuccess: Get a snapshot of the current acceleration
//
function onSuccess(acceleration) {
var accx = document.getElementById('accx');
var accy = document.getElementById('accy');
var accz = document.getElementById('accz');
accx.innerHTML = 'Accelerazione X : ' +acceleration.x;
accy.innerHTML = 'Accelerazione Y : ' +acceleration.y;
accz.innerHTML = 'Accelerazione Z : ' +acceleration.z;
}
// onError: Failed to get the acceleration
//
function onError() {
alert('onError!');
}
</script>
</head>
<body>
<p id="accx">Accelerazione X : </p><br>
<p id="accy">Accelerazione Y : </p><br>
<p id="accz">Accelerazione Z : </p><br>
</body>
</html>
-----------------------------------------
Angoli di tilt in HTML5
Anche con il solo utilizzo di HTML5 (con un browser moderno) e' possibile determinare gli angoli di tilt di un dispositivo mobile. Un esempio puo' essere trovato a questo link
Attenzione: questo metodo non funziona con il browser stock di Android 2.3.6 perche' il browser non gestisce queste API di HTML5
-----------------------------
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div align=center id="gamma">Left Right (Gamma) </div>
<div align=center id="beta">Front Back (Beta)</div>
<div align=center id="alpha">Direzione (Alpha)</div>
<script type="text/javascript">
if (window.DeviceOrientationEvent) {
console.log("DeviceOrientation is supported");
window.addEventListener('deviceorientation', function(eventData) {
var LR = eventData.gamma;
var FB = eventData.beta;
var DIR = eventData.alpha;
var gamma_element = document.getElementById('gamma');
var beta_element = document.getElementById('beta');
var alpha_element = document.getElementById('alpha');
gamma_element.innerHTML = 'Left Right (Gamma) : ' + LR;
beta_element.innerHTML = 'Front Back (Beta) : ' + FB;
alpha_element.innerHTML = 'Direzione (Alpha) ' + DIR;
}, false);
} else {
alert("Not supported on your device or browser. Sorry.");
}
</script>
</body>
</html>
-----------------------------
Attenzione: questo metodo non funziona con il browser stock di Android 2.3.6 perche' il browser non gestisce queste API di HTML5
-----------------------------
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div align=center id="gamma">Left Right (Gamma) </div>
<div align=center id="beta">Front Back (Beta)</div>
<div align=center id="alpha">Direzione (Alpha)</div>
<script type="text/javascript">
if (window.DeviceOrientationEvent) {
console.log("DeviceOrientation is supported");
window.addEventListener('deviceorientation', function(eventData) {
var LR = eventData.gamma;
var FB = eventData.beta;
var DIR = eventData.alpha;
var gamma_element = document.getElementById('gamma');
var beta_element = document.getElementById('beta');
var alpha_element = document.getElementById('alpha');
gamma_element.innerHTML = 'Left Right (Gamma) : ' + LR;
beta_element.innerHTML = 'Front Back (Beta) : ' + FB;
alpha_element.innerHTML = 'Direzione (Alpha) ' + DIR;
}, false);
} else {
alert("Not supported on your device or browser. Sorry.");
}
</script>
</body>
</html>
-----------------------------
DriveDroid
Ho provato ad usare DriveDroid, una applicazione per Android che maschera l'unita' di memorizzazione del telefono come una chiavetta USB con montata sopra una distribuzione Live di Linux
Puo' essere utile per avviare un livecd quando si e' dimenticata a casa la propria chiavetta USB ma ci sono un po' di problemi
1) la applicazione richiede privilegi di root per avviarsi
2) e' necessario il cavetto USB da telefono a PC e per esperienza e' piu' semplice dimenticare il cavetto che non una chiavetta USB (il telefono e' sempre in tasca...il cavo no)
3) ho provato su tre portatili ed in nessun caso sono riuscito ad avviarli da DriveDroid mentre il computer fisso si avvia normalmente...non ho capito bene il motivo ma sembra il bios dei portatili sia talmente veloce in partenza da non riuscire a vedere il telefono (che da quando sente la corrente sulla porta USB a quando rende disponibile il live cd ci mette piu' di un secondo)
Esperimento interesssante ma sostanzialmente inutile
Puo' essere utile per avviare un livecd quando si e' dimenticata a casa la propria chiavetta USB ma ci sono un po' di problemi
1) la applicazione richiede privilegi di root per avviarsi
2) e' necessario il cavetto USB da telefono a PC e per esperienza e' piu' semplice dimenticare il cavetto che non una chiavetta USB (il telefono e' sempre in tasca...il cavo no)
3) ho provato su tre portatili ed in nessun caso sono riuscito ad avviarli da DriveDroid mentre il computer fisso si avvia normalmente...non ho capito bene il motivo ma sembra il bios dei portatili sia talmente veloce in partenza da non riuscire a vedere il telefono (che da quando sente la corrente sulla porta USB a quando rende disponibile il live cd ci mette piu' di un secondo)
DriveDroid in esecuzione su Samsung SG-5570i con Debian Testing Live |
Esperimento interesssante ma sostanzialmente inutile
Iscriviti a:
Post (Atom)
Change Detection with structural similarity
L'idea di base e' quella di cercare le differenze tra le due immagini sottostanti Non e' immediatamente visibile ma ci sono dei ...
-
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...
-
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...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...