lunedì 23 dicembre 2013

Applicazioni remote ed X Server per windows

Con linux l'interfaccia grafica è accessibile anche dalla rete, ovvero è possibile eseguire un programma, su una macchina remota e visualizzarne l'interfaccia sul pc locale.
La cosa straordinaria è che questo è possibile anche se la macchina su cui siete è sfortunatamente equipaggiata di sistema windows.
Se leggete i miei articoli precedenti avrete letto di un server personale dietro il router adsl di casa che fornisce servizi web ed altro.
Se mi trovo a casa di un amico e voglio lanciare il programma  di torrent per scaricare l'ultima release di linux  e trovarla a disposizione appena torno a casa, o semplicemente controllare lo stato dei download, posso lanciare il programma in remoto, vediamo come:
abbiamo bisogno sulla macchina dove ci troviamo del server grafico X, quindi andiamo a scaricare :
http://sourceforge.net/projects/xming/files/Xming/ ed installarlo, installare putty : www.putty.org http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Ora sarà sufficente lanciare putty, configurare il server x come nell'immagine :  quindi collegarsi al server ssh e provare a lanciare un programma qualunque con interfaccia grafica. E' tutto molto più semplice ed efficace di quello che potrebbe sembrare.

giovedì 21 novembre 2013

Arduino : che passione!

ARDUINO in pillole :

Cos'e' arduino ?

Arduino semplicisticamente parlando è una piccola schedina con processore che ci avvicina al mondo dell'elettronica. La sua spettacolarità consiste nel fatto che chiunque amatorialmente può cimentarsi con esperimenti anche se non è un ingegnere.

Cosa si può fare ?

Sarei tentato di dire, quello che riuscite ad immaginare, ma la maggior parte di voi, come me sarete solo appassionati di elettronica, non esperti, quindi, tra le cose più semplici da realizzare troviamo un mondo di sensori da poter collegare dal semplice sensore per la temperatura, a quello dell'umidità, del gas, della luminosità della distanza, il sensore per l'accelerazione, una miriade di moduli aggiuntivi, tipo gps, gsm , ethernet , radio o rs485 e non per finire, ma per continuare una serie di led e schermi  per visualizzare messaggi e moduli per controllare motori o relè, e moltissime altre cose.

Come si fa ?

La schedina si collega al pc tramite una porta usb, quindi un software dedicato opensource permette di programmare gli ingressi/uscite per dialogare con il mondo esterno (sensori, moduli altri apparecchi...). Il linguaggio di programmazione è simile al c++, ma grazie ad una infinità di esempi, sono sicuro che anche chi è all'asciutto di programmazione può fare i primi passi ed imparare facilmente.

Micro storia.

Arduino è un progetto nato ad Ivrea e diffuso in tutto il mondo per la caratteristica di apertura. I fondatori hanno voluto semplificare l'accesso al mondo dell'elettronica e della programmazione di piccoli processori e l'hanno fatto lasciando tutto il loro lavoro a disposizione di tutti, rilasciando e documentando tutto con licenza GPL.
Questo tipo di ragionamento, a mio avviso ha facilitato la diffuzione e crescita del progetto, facendolo diventare di fatto un riferimento per gli apprendisti appassionati di elettronica o robotica.



domenica 2 giugno 2013

Android 4 su asus eeepc 900


Android 4.0 su un asus eeepc.


Il mio portatilino Asus eeepc 900 si lamentava perchè ultimamente trascorreva sempre più tempo abbandonato nel cassetto, un po’ complice anche il tablet che lo aveva rimpiazzato,  per intenderci era nato con xandros, era stato reso utilizzabile con ubuntu per eeepc (2008) e non avevo mai avuto la necessità di aggiornarlo a versioni successive. 
Poi ho pensato: e se ci mettessi android ?

Dopo una attenta ricerca ecco dove scaricare android 4.0 per eee-pc

http://code.google.com/p/android-x86/downloads/list

ci sono anche le versioni per laptop o ad ogni modo per architettura x86.
io scelgo la versione per eeepc ed avvio il download.

http://code.google.com/p/android-x86/downloads/detail?name=android-x86-4.0-RC2-eeepc.iso&can=2&q=

Il primo passo ora consiste nel testare l’iso sul laptop prima di installarla. l’eeepc ha il lettore di schedine ed io mi trovo una schedina sd a portata di mano, ma sarebbe andata bene anche una penna usb.
Su un sito consigliano si usare un programma per mettere l’iso bootabile sul dispositivo esterno chiamato LiLi, voglio sperimentare anche se vedo che è un programma per winzoz.

scarico quindi  LiLi  ( Li nux Li ve ) il cui nome mii piace molto. http://code.google.com/p/android-x86/downloads/list
inseriamo la chiavetta al pc o la sd.

Il programma lili va installato e questo non è il massimo per un programma free ed open

La grafica di LiLi è accattivante e minimale, seleziono il drive , il file iso scaricato, tolgo tutti i flag delle opzioni in basso e creo la mia secure digital auto startante.

Avvio l’eepc ed entro nel setup con f2

controllo l’ordine di boot e mi assicuro nella seconda scelta che sia la schedina sd ( già inserita  altrimenti non esce nell’elenco ) a partire per prima, inoltre vado nelle proprietà avanzate ed indico che ho intenzione di installare il sistema operativo mettendo una voce a “start”.

al riavvio parte la schedina ed il prompt mi chiede cosa voglio fare : avviare la versione live o installare Android.
Avviata la versione live, fa un certo effetto vedere partire android sul laptop, subito ho una notizia cattiva ed una buona.... la cattiva è che non funziona benissimo il touchpad, devo usare un mouse esterno in qualche occasione, tipo dopo lo stand by, la buona invece è che la wi-fi funziona benissimo, quindi posso collegare l’account google e scaricare qualche app.
Dopo aver fatto un giro di prova, testato che l‘hardware funziona benone, riavvio in modalità installazione.
L’installazione mi sembra abbastanza banale, indico solo il disco su cui installare e se /system deve essere in scrittura.
Installazione finita estraggo la sd e riavvio.
Android 4 è fluido, si avvia abbastanza velocemente ed ha installato un emulatore terminale che mi permette anche di diventare root.
Il sistema funziona bene ed è reattivo. Una sola pecca, ogni tanto metto le dita sul monitor e mi aspetto che succeda qualcosa :). Consiglio una applicazione per spegnere il dispositivo. Per il resto sono scomode le applicazioni che forzano la rotazione dello schermo. Detto questo sono molto soddisfatto.

lunedì 8 aprile 2013

Tagliare una parte di mp3 come suoneria

Avevo bisogno di un software per poter selezionare solo una determinata parte di mp3 per poi salvarla ed usarla come suoneria o come tono per gli sms.
Mi sono messo alla ricerca di un software semplice sul web, in effetti l'idea di dover scaricare dei potenti editor audio per una operazione così semplice, mi spaventava, avevo bisogno di quello che fa virtualdub per i video, ma per un file audio.
Alla fine l'offerta sul web è vastissima ed è facile perdersi su software inutili o che fanno da editor per le informazioni o per i cataloghi multimediali o che funzionano a tempo.
Solo ad un certo punto ho trovato quello che stavo cercando, un semplicissimo applicativo flash che ti fa tagliare in maniera visuale un file mp3.
Potete trovarlo qui : http://cutmp3.net/ caricate l'mp3 e scaricate la parte tagliata ascoltando man mano il risultato.

mercoledì 20 marzo 2013

Un sistema di "video sorveglianza" fatto in casa

Un sistema di "video sorveglianza" fatto in casa (con linux ovviamente).


L'esperimento riportato è un esempio molto alla buona, non ottimizzato o su cui sarebbe possbile lavorare tantissimo per apportare migliorie in quasi tutti i passaggi, è stato realizzato per spirito di curiosità ed  apprendimento, spirito che permette alle persone umili di crescere.

Materiale necessario :

connessione ad internet

1 o più portatile / eeepc / rasberry / mini pc collegati in wifi o rete ad internet

1 o più webcam

un sito internet pubblico con accesso ftp ed almeno 300 mega di spazio.

Come obiettivo ci poniamo quello di scattare una foto ogni 10 secondi, di creare una miniatura al minuto e di pubblicare sul sito l'elenco delle miniature in maniera tale da tenere sott'occhio eventuali movimenti all'interno della casa.

primo passo : scattare una foto con la webcam :


dopo qualche ricerca mi è venuto in aiuto vlc http://www.videolan.org/ un player altamente maneggevole.

se usiamo ubuntu possiamo scrivere sudo apt-get install vlc

vlc -I dummy v4l2:///dev/video0 --video-filter scene --no-audio --scene-path /home/utente/webcam --scene-prefix foto --scene-format jpg vlc://quit --run-time=1

vediamo di capire almeno le basi:

/dev/video0                   questa è la mia webcam
--scene-path /home/utente/webcam    percorso in cui salva l'immagine
--scene-prefix foto             nome con cui inizia il file
--scene-format jpg            formato con cui salva le foto ( potrebbe sare anche png ma occuperebbero + spazio )
--run-time=1                            quanto tempo deve stare accesa la webcam ( 1 secondo )

a conti fatti questo comando ci scatta una foto dalla webcam e la mette in formato jpg nella cartella /home/utente/webcam

secondo passo : rinomimare la foto e creare una miniatura :


per rinominare la foto useremo la data e l'ora di sistema inclusi i secondi, partendo dall'anno, quindi:

data=$(date +"%y%m%d%H%M%S")
crea una variabile d'ambiente chiamata $data contenente annoMeseGiornoOraMinutiSecondi es: 20130320095800

copia:
cp /home/utente/webcam/foto00001.jpg /home/utente/webcam/storico/foto$data.jpg

creazione miniatura :

convert -thumbnail x40 /home/utente/webcam/storico/foto$data.jpg /home/utente/webcam/storico/thumb/foto$data.jpg

dove x40 indica la grandezza della miniatura, più è piccolo questo valore più piccola sarà la miniatura

terzo passo : caricare le foto su un server ftp



# nome o indirizzo del server ftp :
HOST='nomenostrohost.ftp'
# nome utente per la connessione :
USER='nomeutente'
# password per la connessione
PASSWD='password'
# cartella da cui prelevare il file da caricare
FILE1='/home/utente/webcam/storico/'
# cartella da cui caricare il file della miniatura da caricare
FILE2='/home/utente/webcam/storico/thumb'
# cartella destinazione dell'immagine sul server
DIRE1='wbcm'
# cartella di destinazione delle miniature sul server
DIRE2='thumb'

# processo di uoload ftp :
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd $DIRE1
lcd $FILE1
put foto$data.jpg
cd $DIRE2
lcd $FILE2
put foto$data.jpg
quit
END_SCRIPT


quarto passo : automazione ogni 10 secondi :

basta creare 6 job che devono essere lanciati ogni minuto, e che attendono qualche secondo prima di partire, ad esempio, volendo creare il primo script, ovvero quello che parte ogni minuto e che crea la miniatura, si aggiungono alle righe che abbiamo individuato sopra :


# imposta i precorsi per i file eseguibili
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# indica il display a cui allacciare i programmi
export DISPLAY=:0.0
# cancella i file temporanei precedenti
rm -f /home/utente/webcam/*.jpg

prendiamo questi comandi ed accodiamo quelli che abbiamo visto prima per formare uno script, lo possiamo chiamare ad esempio webcam.sh

poi editiamo il crontab che ci permette di schedulare lo script ogni minuto:

crontab -e

* * * * *     /home/utente/bin/webcam.sh

quindi creiamo lo script che deve partire dopo 10 secondi e non creare la miniatura :

lo script sarà uguale a webcam.sh con dei passaggi in meno, ed una riga in più ovvero

prima di cancellare i file temporanei andiamo ad aggiungere

sleep 10

che indica al sistema di aspettare 10 secondi.

inoltre commentiamo la riga convert, la riga file2,dire2 e sotto dove pubblica il file thumb

possiamo quindi salvare questo script come webcam10.sh e cambiando i secondi di attesa
creare webcam 20,30,40,50 ...

crontab -e

* * * * *     /home/utente/bin/webcam.sh
* * * * *     /home/utente/bin/webcam10.sh
* * * * *     /home/utente/bin/webcam20.sh
* * * * *     /home/utente/bin/webcam30.sh
* * * * *     /home/utente/bin/webcam40.sh
* * * * *     /home/utente/bin/webcam50.sh

oppure potete passare una variabile allo script che indica il numero di secondi da attedere e se deve fare la miniatura....



quinto passo : visualizzazione e pulizia archivio :


sul server web adesso abbiamo in una cartella con le immagini ogni 10 secondi, ed una con le miniature ogni minuto....

dobbiamo innanzi tutto visualizzarle, e lo facciamo scrivendo poche righe di codice php

Nella pagina iniziale andiamo a mettere una piccola password per precludere al pubblico la visualizzazione , andiamo a creare una pagina per vedere le miniature, ed in fine una per pulire i file più vecchi di tot giorni, le pagine php vanno protette da un sistema di password per permettere solo al proprietario di accedere alle informazioni, ma qui si ci potrebbe dilungare troppo :


analizziamo i punti fondamentali degli script :
innanzi tutto prendiamo una funzione che ci fa l'elenco delle immagini contenute nella cartella :

questa funzione prende tutti i file che iniziano per "foto"
function elencafiles($dirname){
        $arrayfiles=Array();
        if(file_exists($dirname)){
                $handle = opendir($dirname);
                while (false !== ($file = readdir($handle))) {
                        if(is_file($dirname.$file) && substr($file,0,4)=="foto")
                               array_push($arrayfiles,$file);                      
                }
                $handle = closedir($handle);
        }
        sort($arrayfiles);
        return $arrayfiles;
}


se aggiungiamo del codice tipo

$arrayfile=array();
$arrayfile=elencafiles("./thumb/");
$size=sizeof($arrayfile);

for ($x=$size-1;$x>-1;$x--){
$minuti=substr($arrayfile[$x],12,2);
$ore=substr($arrayfile[$x],10,2);
 echo "<a href=mostra.php?name=".$arrayfile[$x]."><img src=thumb/".$arrayfile[$x
]." alt=\"$ore:$minuti\" ></a>";
if ($minuti=="00" || $minuti=="15" || $minuti=="30" || $minuti=="45")
        echo ($ore.":".$minuti."<br>");
// se 13 e 14 = 00 vai da capo ?
}


prendiamo tutte le miniature ed andiamo a capo ogni volta che i minuti sono = a 00,15,30,45 avendo 15 immagini per riga e l'orario stampato a fine riga, questo favorisce la visualizzazione, inoltre mettiamo su ogni miniatura il link all'immagine ingrandita...
Nel file mostra.php viene visualizzata l'immagine $arrayfile[$x] e vengono messi i link all'immagine successiva e quella precedente per pter navigare nel tempo di 10 secondi.
Per i dettagli sui file php non esitate a contattarmi o a commentare...

Per concludere c'e' il file delle cancellazioni, ovvero pulire l'archivio per evitare che si riempia all'infinito occupando tutto lo spazio sul server... se facciamo un file pulisci.php e poi creiamo uno script che lo lancia dal nostro pc collegato ad internet ogni giorno, potremmo risolvere il problema.


$mGiorni=1;
$mOre=3;

cancella tutti i file più vecchi di 1 giorno e 3 ore... come :
// per ogni file
$filename = $arrayfile[$x];

if ( filectime($filename) < mktime(date("H")-$mOre, date("i"),date("s"), date("m"), date("d")-$mGiorni,   date("Y")))
            // se è più vecchio cancella il file
{
echo "<br>devo cancellare $filename   : ..........";
if (    unlink($filename))
 echo "$filename e' stato cancellato:<br>";


ovviamente questa operazione va fatta per i file immagine e per la cartella delle miniature

creiamo pulisciremoto.sh
wget http://miosito/cartellafile/pulisci.php
lo aggiungiamo al crontab con cadenza giornaliera o a nostra scelta.

giovedì 17 gennaio 2013

tee worlds un gioco apparentemente semplice

Un gioco apparentemente semplice perchè in effetti si gioca in un ambiente a 2 dimensioni e si usano 3 tasti ed il mouse, si perchè tutto quello che si può fare è andare a sx o a dx, saltare arrampicarsi cambiare arma e sparare. Fine.
Sembra facile, ma provate a fare un giro, dopo qualche salto vi accorgerete che la dimestichezza non è immediata, ma da parecchie soddisfazioni permettendovi man mano di fare acrobazie più complicate….
Il gioco è di pubblico dominio, scaricabile per linux o windows dal sito ufficiale https://www.teeworlds.com/.
Sono disponibili le modalità deathmatch e ctf per chi sa cosa significhi, ad ogni modo se vi viene voglia di fare una partitella fatemelo sapere che ci mettiamo daccordo sull'orario e ci suoniamo 2 sane legnate in compagnia….
ho anche fatto un server sperimentale che dovrebbe stare nell’elenco dei server, si chiama tecnocchio o nello specifico potete specificarlo inserendo tecnocchio.dnsd.info come indirizzo.