martedì 30 giugno 2015

Port forwarding su Cisco AS520

Il router Cisco AS520 e' una macchina vecchiotta che ha gia' raggiunto il tempo di fine vendita e tra un anno terminera' anche il supporto per gli upgrade firmware ma si trova ancora in ambiente di piccole attivita'.

Per effettuare il port forwarding di un servizio standard (per esempio di un web server sulla rete interna) si entra nel menu Firewall/IPv4 Rules/Add

A questo punto si imposta
From Zone : Insercure (WAN)
To Zone : LAN
Service : Http (e' un menu a tendina con alcuni valori preimpostati)
Action : Allow always (di default e' su Deny)
Source Hosts : Any
Internal IP Address : 10. x. x. x (indirizzo della macchina su rete interna che fa da web server)
External IP Address : Dedicated WAN

Nel caso si voglia fare port forwarding di un servizio non predefinito, per esempio un sistema di amministrazione remota come VNC NoMachine, si deve andare in Firewall/Services/Add Custom Service indicando un nome e la porta del servizio che si vuole forwardare



Fatto cio' si torna in Firewall/IPv4 Rules e si ripete la procedura vista per il web server con la differenza che adesso nel menu a tendina dei Services si trovera' quello da noi aggiunto



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

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

mkdir /ro 
mv /var /ro 
mv /home /ro 
 mkdir /var /home

e si aggiorna /etc/fstab

unionfs-fuse#/tmp=rw:/ro/var=ro /var fuse cow,allow_other,nonempty 
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

mount / -o remount,rw

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 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


Luna Giove e Venere 20 Giugno 2015

Tre in un colpo solo. Luna Giove e Venere cosi' luminosi da poter essere ripresi anche da cellulare (eravamo usciti per la manifestazione Occhi su Saturno ...)




Ingradire per vedere i dettagli del cielo

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");
?>

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



Opencv camera calibration in cpp

Oltre che con uno script Python come visto qui la calibrazione della camera si puo' fare anche con il programma in CPP Questo il proce...