martedì 30 giugno 2015
Congiunzione Venere Giove 30 giugno 2015
E' necessario ingrandire a piena risoluzione la fotografia per apprezzare la congiunzione tra Giove e Venere. Dal vivo ed ad occhio nudo la separazione tra i due pianeti e' assolutamente apprezzabile ma rimane sempre un bello spettacolo
martedì 23 giugno 2015
Raspberry Kiosk (read only mode)
Per una installazione di un monitor informativo (una semplice pagina web che si autoaggiorna) ho pernsato di installare una Raspberry in modo da avere un sistema economico e con poco consumo di corrente
Cio' che non avevo previsto e' che il luogo dell'installazione e' particolarmente soggetto a mancanza di corrente e nel giro di dieci giorni dalla messa in esercizion il sistema e' crollato perche' il filesystem sulla SD Card si e' corrotto
Un sistema che e' provato e' quello suggerito da questo link ma mi sono subito insospettito perche' viene disinstallato il server X. Facendo le prove infatti il filesystem va effettivamente in modalita' di sola scrittura ma X ha necessita' di scrivere dentro la directory /home e quindi la strada proposta non e' perseguibile perche' X Windows non si avvia (rimane uno schermo nero con un cursore che lampeggia beffardo)
L'altra soluzione e' quella di rendere il sistema a sola lettura in generale e di creare invece un filesystem virtuale in memoria per quelle directory in cui e' necessario scrivere come proposto da questo link
Vale comunque la pena di seguire il consiglio di disinstallare i sistemi di log
apt-get remove --purge wolfram-engine triggerhappy cron anacron logrotate dphys-swapfile
in sintesi si modifica /etc/fstab per mettere in sola scrittura il filesystem della schedina
/dev/mmcblk0p2 / ext4 defaults,noatime,ro 0 1
(io per essere sicuro ho messo in sola lettura anche la partizione di boot) e si mette la directory /tmp in memoria
mkdir /ro
unionfs-fuse#/tmp=rw:/ro/var=ro /var fuse cow,allow_other,nonempty
mount / -o remount,rw
Cio' che non avevo previsto e' che il luogo dell'installazione e' particolarmente soggetto a mancanza di corrente e nel giro di dieci giorni dalla messa in esercizion il sistema e' crollato perche' il filesystem sulla SD Card si e' corrotto
Un sistema che e' provato e' quello suggerito da questo link ma mi sono subito insospettito perche' viene disinstallato il server X. Facendo le prove infatti il filesystem va effettivamente in modalita' di sola scrittura ma X ha necessita' di scrivere dentro la directory /home e quindi la strada proposta non e' perseguibile perche' X Windows non si avvia (rimane uno schermo nero con un cursore che lampeggia beffardo)
L'altra soluzione e' quella di rendere il sistema a sola lettura in generale e di creare invece un filesystem virtuale in memoria per quelle directory in cui e' necessario scrivere come proposto da questo link
Vale comunque la pena di seguire il consiglio di disinstallare i sistemi di log
apt-get remove --purge wolfram-engine triggerhappy cron anacron logrotate dphys-swapfile
in sintesi si modifica /etc/fstab per mettere in sola scrittura il filesystem della schedina
/dev/mmcblk0p2 / ext4 defaults,noatime,ro 0 1
(io per essere sicuro ho messo in sola lettura anche la partizione di boot) e si mette la directory /tmp in memoria
tmpfs /tmp tmpfs defaults,size=30M 0 0
a questo punto si installa unionfuse, il sistema per creare il filesystem in memoria (il valore di 30M e' puramente indicativo, si puo' andare tranquillamente fino a 200M)
apt-get install unionfs-fuse
si spostano le directory /var e /home che saranno quelle ad essere realizzate in memoria
mv /var /ro
mv /home /ro
mkdir /var /home
e si aggiorna /etc/fstab
unionfs-fuse#/tmp=rw:/ro/home=ro /home fuse cow,allow_other
al succesivo riavvio si potra' scrivere in /home e /var (ma le modifiche saranno in memoria e quindi perse al successivo riavvio) mentre nel resto del file system sara' impossibile accedere in scrittura a meno di non digitare
Questo sistema e' ottimo e funziona ma ovviamente si va ad occupare parte della ram con un disco virtuale quindi i processi che gireranno non dovranno essere esosi di ram
Per far partire il sistema direttamente in X conviene riconfigurare
sudo raspi-confige poi scegliere il menu "Enable Boot to Desktop" > select "Desktop Log in .."
Per far partire il sistema direttamente in X conviene riconfigurare
sudo raspi-confige poi scegliere il menu "Enable Boot to Desktop" > select "Desktop Log in .."
per vari motivi puo' essere conveniente installare un browser come Chromium (piu' pesante di quello preinstallato ma con meno problemi nella visualizzazione dei siti)
per mandare in esecuzione automatica Chromium quando parte X si edita il file
nano /etc/xdg/lxsession/LXDE-pi/ autostart
aggiungendo la linea
@chromium --kiosk --ignore-certificate-errors --disable-restore-session- state "http://www.domain.com"
lunedì 22 giugno 2015
Fauna caldinese
E' tempo di lucciole ma anche di questi simpatici animaletti
Le chiavi danno un'idea delle dimensioni
Le chiavi danno un'idea delle dimensioni
Luna Giove e Venere 20 Giugno 2015
sabato 20 giugno 2015
Slow Php Redirect
Uso spesso il redirect verso una pagina html nei siti scritti in Php, piu' che altro per pagine di validazione di password, e non ho mai avuto problemi
basta indicare
<?php
header("Location: www.google.com");
?>
echo "<html></html>";
flush();
ob_flush();
exit;
?>
il reindirizzamento e' immediato
basta indicare
<?php
header("Location: www.google.com");
?>
e non effettuare nessuna operazione di scrittura (leggasi print od echo) e la cosa funziona
Ultimamente ho sviluppato una applicazione per Android/IOS che usa una WebView all'interno della quale c'e' una pagina (ospita su un server esterno) che usa la funzione di redirect ed ho notato un ritardo anche di 10 secondi tra quando viene effettuata la richiesta e quando la connessione viene reindirizzata
Il problema non era nella applicazione mobile. Riscrivendo il codice php in questo modo
<?php
header("Location: www.google.com",true,307);echo "<html></html>";
flush();
ob_flush();
exit;
?>
il reindirizzamento e' immediato
venerdì 19 giugno 2015
Aggiungere directory raw in Android Studio
La directory /raw non e' creata di default da Android Studio.
Per includerla si deve cliccare destro sull'albero del progetto /New/Android resource directory
e poi selezionara rae dal secondo menu a tendina
Includere librerie aar in Android Studio
In questo post viene descritto come includere librerie Android in formato aar in un progetto di Android Studio. Per questo esempio viene indicato come installare Android Beacon Library
1) Esempio 1 : partendo dal file aar
In questo caso si scarica in locale il file aar dal sito del produttore
1) Esempio 1 : partendo dal file aar
In questo caso si scarica in locale il file aar dal sito del produttore
Dal progetto precedentemente create si clicca destro per New/Module
Selezionando Import Jar or Aar Package
Per selezionare il file si usa il quadratino all'estrema destra della prima casella di testo
Al termine si osserva che compare la nuova libreria nell'albero del progetto
Per includere la nuova libreria nella catena di compilazione di Gradle si deve editare il file build.gradle relativo al Modulo app (attenzione, esistono diversi file build.gradle all'interno di un progetto Android Studio) come indicato dalla riga evidenziata
-----------------------------------------------
apply plugin: 'com.android.application'
android {
compileSdkVersion 21 buildToolsVersion "21.1.2"
defaultConfig {
applicationId "luca_innocenti.nearbeewear" minSdkVersion 21 targetSdkVersion 21 versionCode 1 versionName "1.0" }
buildTypes {
release {
minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' }
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.support:wearable:1.2.0' compile 'com.google.android.gms:play-services-wearable:7.5.0' compile 'org.altbeacon:android-beacon-library:2+'}
-----------------------------------------------
1) Esempio 2 : usando un repository remoto
al posto di installare la libreria in locale si puo' richiederla al momento della compilazione da un server remoto. Per ottenere cio' basta indicare l'indirizzo del server remoto ed il nome della libreria che si vuole includere sempre nel file build.gradle del modulo dell'applicazione (vedi parti in giallo)
Per seguire questa strada e' necessario che la macchina di sviluppo sia sempre connessa con Internet
al posto di installare la libreria in locale si puo' richiederla al momento della compilazione da un server remoto. Per ottenere cio' basta indicare l'indirizzo del server remoto ed il nome della libreria che si vuole includere sempre nel file build.gradle del modulo dell'applicazione (vedi parti in giallo)
Per seguire questa strada e' necessario che la macchina di sviluppo sia sempre connessa con Internet
-----------------------------------------------
apply plugin: 'com.android.application'
android {
compileSdkVersion 21 buildToolsVersion "21.1.2"
defaultConfig {
applicationId "luca_innocenti.beacontrasmitter" minSdkVersion 21 targetSdkVersion 21 versionCode 1 versionName "1.0" }
buildTypes {
release {
minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' }
}
}
final def var = repositories {
jcenter{
url "http://jcenter.bintray.com/" }
}
var
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.support:wearable:1.2.0' compile 'com.google.android.gms:play-services-wearable:7.5.0'}dependencies {
compile 'org.altbeacon:android-beacon-library:2+'}
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...