planet

Video sorveglianza home made

mm-barabba - Lun, 06/02/2017 - 02:18

Dopo che mi hanno regalato una webcam di poco valore, una D-link DCS-930LB1 ( Wired 10/100 Fast Ethernet or a wireless 802.11g/n wireless network)ho deciso di provarla per dei piccoli test di video sorveglianza, in aiuto è subito venuto il NAS per lo storage delle immagini/video generati dal rilevamento di movimento, successivamente è entrato in scena il raspberryPI B+ per diversi motivi legati alla riservatezza, la connessione WLAN locale non ha una gran velocità e limita le prove (802.11g Compliance Speed Up to 54 Mbps).

Per prima cosa si collega la webcam alla rete con cavo (eth) per configurarla, collegandosi alla webcam attraverso una pagina web da browser, una volta configurato il wifi integrato si potrà piazzare per la casa in modo libero perché basta solo una presa della corrente.

Dopo averla sistemata a dovere e resa operativa, dall’interfaccia web si possono configurare molte cose ed in pratica è già pronta per l’uso, durante i primi test ho generato sul NAS un’utente dedicato con uno spazio ben definito di circa 100 MB per non farmi sfuggire il controllo di registrazioni impazzite e ho impostato il salvataggio dei file attraverso FTP in locale, il flusso video in streaming è buono considerando che non si può ottenere un FPS alto dall’oggetto in questione, qualche difetto sulla qualità dei video è normale, ma tutto sommato non è male.

Da qui abbiamo accesso alle principali configurazioni sulle dimensioni e qualità delle immagini o ottimizzare la rilevazione di movimento con sensibilità e una maschera editabile, possiamo anche aggiornare il firmware, in pratica da qualsiasi apparecchio in LAN è possibile sia visualizzare che controllare la camera.

Per viasualizzare i file salvati basta accedere al NAS in rete.

Per un accesso dall’esterno ho preferito usare un tunnel SSH proxyficando il browser per l’acceso alla web page, mentre per visualizzare immagini e video salvati si proxyfica samba su android, winscp su win e sshfs e fuse su linux.

Per non accontentarsi abbiamo eseguito i test con mydlink / motion / motioneye.

mydlink

Registrandosi al sito mydlink dopo aver generato un proprio account è possibile vedere e gestire la webcam anche da distanza con l’app per android : android mydlink.

Dall’app è possibile visualizzare in diretta il flusso video, è omogeneo e tra tutti i test effettuati quello migliore e con fps più alto, si possono attivare alcuni controlli come l’avvio del rilevamento di movimento (configurato in precedenza su web page), ma non è possibile visionare il file generati e salvati.

Utile la possibilità di attivare un pop-up che in caso di rilevamento di movimento ci avvisa sul cellulare se siamo connessi.

Tutto molto bello ma avere una webcam in casa che fa passare un flusso dati continuo verso ‘ verso non so dove (?)’ non mi piace così parto per la ricerca di nuove strade e in aiuto mi viene il mio raspberryPI con raspbian (testing).

motion

Motion “simple webcam server built in“, questo è un bel progetto che ci permette di gestire la nostra webcam in modo semplice, per certi aspetti poco completo ma alla base di molte altre possibili soluzioni da integrare, installiamo motion :

#aptitude install motion libav-tools

il pacchetto libav-tools occorre per avere il supporto a mpeg

Questa la lista delle dipendenze nella mia raspbian minimale :

The following NEW packages will be installed: ffmpeg{a} libaacs0{a} libasound2{a} libasound2-data{a} libass5{a} libasyncns0{a} libav-tools libavc1394-0{a} libavcodec57{a} libavdevice57{a} libavfilter6{a} libavformat57{a} libavresample3{a} libavutil55{a} libbdplus0{a} libbluray1{a} libbs2b0{a} libcaca0{a} libcairo2{a} libcdio-cdda1{a} libcdio-paranoia1{a} libcdio13{a} libchromaprint1{a} libdc1394-22{a} libdrm-amdgpu1{a} libdrm-freedreno1{a} libdrm-nouveau2{a} libdrm-radeon1{a} libdrm2{a} libebur128-1{a} libegl1-mesa{a} libfftw3-double3{a} libflac8{a} libflite1{a} libgbm1{a} libgl1-mesa-dri{a} libgl1-mesa-glx{a} libglapi-mesa{a} libgme0{a} libgraphite2-3{a} libgsm1{a} libharfbuzz0b{a} libiec61883-0{a} libjack-jackd2-0{a} libllvm3.8{a} libmariadbclient18{a} libmodplug1{a} libmp3lame0{a} libogg0{a} libopenal-data{a} libopenal1{a} libopencv-core2.4v5{a} libopencv-imgproc2.4v5{a} libopenjp2-7{a} libopus0{a} liborc-0.4-0{a} libpostproc54{a} libpq5{a} libpulse0{a} libraw1394-11{a} librubberband2{a} libsamplerate0{a} libschroedinger-1.0-0{a} libsdl2-2.0-0{a} libsensors4{a} libshine3{a} libsnappy1v5{a} libsndfile1{a} libsndio6.1{a} libsodium18{a} libsoxr0{a} libspeex1{a} libssh-gcrypt-4{a} libswresample2{a} libswscale4{a} libtheora0{a} libtwolame0{a} libtxc-dxtn-s2tc{a} libva-drm1{a} libva-x11-1{a} libva1{a} libvdpau-va-gl1{a} libvdpau1{a} libvorbis0a{a} libvorbisenc2{a} libvpx4{a} libwayland-client0{a} libwayland-cursor0{a} libwayland-egl1-mesa{a} libwayland-server0{a} libwebpmux2{a} libx11-xcb1{a} libx264-148{a} libx265-95{a} libxcb-dri2-0{a} libxcb-dri3-0{a} libxcb-glx0{a} libxcb-present0{a} libxcb-render0{a} libxcb-shape0{a} libxcb-shm0{a} libxcb-sync1{a} libxcb-xfixes0{a} libxcursor1{a} libxdamage1{a} libxinerama1{a} libxkbcommon0{a} libxrandr2{a} libxrender1{a} libxshmfence1{a} libxss1{a} libxtst6{a} libxv1{a} libxvidcore4{a} libxxf86vm1{a} libzmq5{a} libzvbi-common{a} libzvbi0{a} mariadb-common{a} mesa-va-drivers{a} mesa-vdpau-drivers{a} motion va-driver-all{a} vdpau-driver-all{a} 0 packages upgraded, 124 newly installed, 0 to remove and 0 not upgraded. Need to get 51.0 MB of archives. After unpacking 261 MB will be used. configurazione

I file di configurazione si trovano in /etc/motion/, quello principale che copre anche la configurazione della webcam quando se ne deve gestire solo una è motion.conf( qui una lista di tutti i parametri ), nel caso ci siano più camere occorre generare file in ordine numerico come camera1.conf e indicarlo nel file principale.

Per poter cominciare occorre per prima cosa conoscere l’origine del flusso dati della webcam, se non si trova l’indirizzo nella documentazione della nostra camera si può vedere nel vecchio sito di motion, nel mio caso con una D-link ho trovato informazioni utili qui.

Flusso JPEG: netcam_url http://x.x.x.x/image.jpg Flusso MJPEG netcam_url http://x.x.x.x/mjpeg.cgi

Dopo aver ottenuto l’indirizzo del flusso dati possiamo cominciare a modificare il file motion.conf nelle parti utili:

#; netcam_url value #per dlink 930 wifi netcam_url http://address/image.jpg # Username and password for network camera (only if required). Default: not defined # Syntax is user:password #; netcam_userpass value netcam_userpass user:pass

Per visualizzare da browser su http://motion_server:8081 vedremo il solo flusso video mentre su http://motion_server:8080 potremo avere a disposizione anche la gestione e la modifica di tutti i parametri presenti in motion.conf, non essendo in locale sul PI e volendo accedere a motion dalla rete occorre mettere a off alcune opzioni.

webcam_localhost off control_localhost off

Controllare Live stream server e HTTP based control con i dovuti settaggi.

Per il salvataggio di foto/video nel rilevamento di movimento ho usato:

# Target base directory for pictures and films # Recommended to use absolute path. (Default: current working directory) target_dir /motion

Nel mio caso ho deciso di inviare su server FTP che nel mio caso è il mio NAS in locale.

on_picture_save wput -B ftp://USERNAME:PASSWORD@YOUTFTP.COM %f

Per usare cambozola disabilitare

Disable despeckle (comment it out in motion.conf). Disable smartmask

Cambozola (java applet) è spesso usato in diverse GUI che ci possono venire utili, un elenco di vecchi progetti di cui alcuni ancora funzionanti.

link

Alcuni link che ho trovato utili per il mio primo approccio a motion :

new site:https://motion-project.github.io/
git :https://github.com/Motion-Project/motion
motion guida : https://htmlpreview.github.io/?https://github.com/Motion-Project/motion/blob/master/motion_guide.html#Basic_Setup
old wiki : http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome
cambozola e web page con apache2 : http://www.lavrsen.dk/foswiki/bin/view/Motion/WebcamServer
motion gui : http://www.lavrsen.dk/foswiki/bin/view/Motion/RelatedProjects
aumentare maximum sensitivity : https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=68299
https://www.linux.com/learn/tutorials/780055-how-to-operate-linux-spycams-with-motion
http://www.stefanolaguardia.eu/2008/08/30/linux-videosorveglianza-con-webcam-facile-come-bere-un-bicchiere-dacqua-grazie-a-motion/
https://raymii.org/s/tutorials/Setting-up-motion-with-ftp-and-email-support.html

motioneye

Qui siamo al TOP, abbiamo un web frontend che si adatta a monitor PC,tablet o smartphone, con i dovuti permessi si riesce a configurare tutto dall’interfaccia web.

motioneye

Requisiti :

  • a machine running a recent Linux distro
  • python 2.7
  • tornado 3.1+
  • jinja2
  • PIL or pillow
  • curl, libcurl & pycurl
  • motion (optional)
  • ffmpeg (optional)
  • v4l-utils (optional)

Installare i pacchetti necessari

#aptitude install python-pip python-dev curl libssl-dev libcurl4-openssl-dev libjpeg-dev libx264-148 libavcodec57 libavformat57 libmysqlclient18 libswscale3 libpq5

I pacchetti opzionali

#aptitude install motion ffmpeg v4l-utils

Come prima installazione ho provato a usare il metodo Install on Raspbian, ma con pip abbiamo dei problemi a terminare l’operazione perché si inceppa su pillow.
Procediamo con l’installazione manuale : Installazione manuale

Scarichiamo il file aggiornato : https://github.com/ccrisan/motioneye

$tar zxvf motioneye-x.y.tar.gz $cd motioneye-x.y #python setup.py install --prefix=/usr

Se il prefix non viene digerito come successo a me:

#python setup.py install

Troveremo tutto installato in : /usr/local/lib/python2.7/dist-packages/motioneye-0.35.1-py2.7.egg/

#mkdir -p /etc/motioneye #cp /usr/local/lib/python2.7/dist-packages/motioneye-0.35.1-py2.7.egg/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf

Per avviare basta

#meyectl startserver

una volta avviato basta un ctrl+c, oppure avviarlo come demone

#meyectl startserver -b

per spegnere possiamo usare

#meyectl stopserver

In alternativa possiamo realizzare su un dispositivo dedicato con motioneyeOS : https://github.com/ccrisan/motioneyeos/wiki/Installation

Per il salvataggio dati ho preferito indirizzare motioneye a una cartella locale, montando il nas :

mount -t cifs -o username=user,password=my_pass,gid=1000,uid=1000,sec=ntlm //IP_NAS/dir/ /media/nas

Dopo aver avviato motioneye spostiamoci con il browser alla pagina http://IP.macchina:8765, se desideriamo cambiare porta modificare il file /etc/motioneye/motioneye.conf :

# the TCP port to listen on port 8765

L’utente di default è admin, inserire una password, è possibile inserire anche un altro utente con password ma solo per la visualizzazione e senza accesso alle configurazioni.
Ora basta aggiungere quante camere si vuole, e si potranno visualizzare secondo un ordine che stabiliremo noi nella finestra principale, ogni camera ha le proprie configurazioni.
Molto interessante e utile è poter accedere direttamente ai dati salvati che siano essi immagini o video, nel caso siano immagini possiamo visualizzarle direttamnte sul browser mentre per i filmati occorre scaricarli, la gestione ci permette oltre alla visualizzazione, la cancellazioni di singoli file o direttamente di cartelle complete.
Tra le impostazioni di motioneye è presente una durata massima di permanenza delle immagini salvate nella scheda STILL IMAGE l’opzione Preserve Pictures ci permette di scegliere :

  • one day
  • one week
  • one month
  • one year
  • forever
  • custom (impostare manualmente in numero di giorni)

Attualmente sono ancora in fase di test e posso dire che funziona tutto bene, forse il raspberryPI B+ è un pò limitato come risorse (single core + 256MB di RAM) e con una sola webcam mi trovo la CPU in media al 30%, questo è dovuto al numero di FPS che più sarà elevato maggiore sarà la richiesta di lavoro alla CPU.

Test

Abbiamo eseguito alcuni test per vedere il comportamento associato alle prestazioni, sono state seguite 2 strade:

  • software della camera + motioneye (solo viasualizzazione e gestione file salvati)
  • motioneye (gestione completa)
software della camera + motioneye

In questa condizione la camera gestisce in modo autonomo il rilevamento di movimento e salva le immagini sul NAS, per rendere più sicura la trasmissione dati verso l’esterno ho inserito una regola nel firewall del router chiudendo alla camera le comunicazioni verso l’esterno, in LAN to WAN ho bloccato TCP e UDP all’IP statico della camera.

Motioneye è attivo sul Raspberry PI e nelle configurazioni usa la stessa locazione per il salvataggio delle immagini, accedendo a motioneye dall’esterno (SSH tunnel con browser proxificato) riesco a visualizzare la camera in “live” e volendo posso accedere alle immagini salvate sul NAS.

In termini prestazioni visualizzando in LAN con il programma mydlink da cellulare ottengo circa 15fps mentre dalla WAN (prova con connessione non bloccata) circa 7fps, per il salvataggio delle immagini abbiamo circa 5fps con 320×240 e 3fps con 640×480.

Motioneye è impostato per un limite in Video Device con 2 frame rate, questo mi permette un flusso costante mentre visualizzo dall’esterno con browser perché la mia connessione a 7 mega non mi permette un grande upload, anche se il flusso dati passa in modo costante a motioneye e genera un traffico giornaliero di circa 5 GiB su motioneye.

Il traffico può sembrare elevato, ma motioneye fa passare tutti i fotogrammi anche se il motion detection non è attivo e anche quando non si visualizza da browser, a seconda del tipo di fotogrammi il traffico sarà più o meno elevato, ad esempio di notte (la camera non ha visione notturna) l’immagine nera ha piccole dimensioni mentre di giorno sarà più grande per il numero di colori presenti nel fotogramma.

motioneye

In questo caso le prestazioni live riescono a essere migliori arrivando a 25 fps in LAN e 7 da WAN, ma a parte un leggero uso di CPU in più non sono riuscito a registrare fotogrammi con un fps superiore a 1, il traffico dati dalla camera al PI è rimasto invariato.

Considerazioni finali

Per ora lascio fare alla camera il motion detection con il suo software e quando mi serve avvio motion sia per vedere in live che per visualizzare le immagini registrate in questo modo riesco a risparmiare l’uso di CPU e ottengo un risultato migliore come fps nelle immagini salvate.

Con una sola camera i test da fare non sono molti, sarebbe interessante con almeno 2 o 3.

Un test che non ho fatto e mi ha sempre incuriosito è DomusBoss (bel lavoro di mrdebug), solo perché non ho trovato un pò di documentazione per cominciare, mentre invece in passato avevo provato ZoneMinder ma l’obbligo a installare e usare MySQL mi aveva impedito di proseguire, infatti sul mio vecchio raspberryPI B+ con 256MB di ram quando il servizio mysql si avviava voleva (da file conf) 512MB di memoria, l’impossibilità di soddisfare la richiesta bloccava il servizio e il seguente avvio di zoneminder.

Anche provando a ridurre le dimensioni della memoria in /etc/mysql/my.cnf rimanevano grossi problemi a livello di prestazioni, con il PI 3 si potrebbe provare.

Categorie: planet

bash colorata

mm-barabba - Dom, 29/01/2017 - 02:08

Da tempo avevo notato che la bash di Raspbian era colorata rispetto quella che avevo a disposizione sul server, la Raspbian era più recente e veniva da un’installazione del 2012 con un’opzione già abilitata, mentre sul server la vecchia installazione nasceva da una Lenny quando ancora era in testing e nel tempo si era persa qualcosa durante gli aggiornamenti.

Aprire il file .bashrc dell’utente desiderato e decommentare :

# uncomment for a colored prompt, if the terminal has the capability; turned # off by default to not distract the user: the focus in a terminal window # should be on the output of commands, not on the prompt force_color_prompt=yes

Per rendere efettive le modifiche aprire un nuovo terminale oppure:

$ source ~/.bashrc

Se non avete l’opzione disponibile, allora occorre inserire la parte completa.

Aprire il file .bashrc dell’utente desiderato e inserire:

# uncomment for a colored prompt, if the terminal has the capability; turned # off by default to not distract the user: the focus in a terminal window # should be on the output of commands, not on the prompt force_color_prompt=yes if [ -n "$force_color_prompt" ]; then if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then # We have color support; assume it's compliant with Ecma-48 # (ISO/IEC-6429). (Lack of such support is extremely rare, and such # a case would tend to support setf rather than setaf.) color_prompt=yes else color_prompt= fi fi if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w \$\[\033[00m\] ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"  ;; *)  ;; esac

Per rendere efettive le modifiche aprire un nuovo terminale oppure:

$ source ~/.bashrc

Possiamo anche personalizzare manualmente i colori inserendo una semplice riga all’inizio di .bashrc del’user e di root come negli esempi

  • Un prompt verde e blu per utenti normali:

puppa~/documenti $ sample output text

PS1='\[\e[0;32m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[1;32m\]\$\[\e[m\] \[\e[1;37m\]'
  • Un prompt rosso e blu per root:

root~/documenti $ sample output text

PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;31m\]\$ \[\e[m\]\[\e[0;37m\]'

Una lista dei colori :

# Regular Colors Black='\e[0;30m' # Nero Red='\e[0;31m' # Rosso Green='\e[0;32m' # Verde Yellow='\e[0;33m' # Giallo Blue='\e[0;34m' # Blu Purple='\e[0;35m' # Viola Cyan='\e[0;36m' # Ciano White='\e[0;37m' # Bianco

Link : Color Bash Prompt

 

PS. Dopo tanto tempo ho sostituito il mio glorioso Raspberry PI B+ con un nuovo Raspberry PI 3 B, e devo ammettere che il quad core fa la differenza in elaborazione contro il single core, ma la cosa che mi ha risolto molti problemi sulle prestazione è stato passare da 256MB a 1GB di RAM.

Categorie: planet

[ Check-Raid ] Stoppare il controllo del Raid

toshidex - Mar, 22/07/2014 - 00:18
A volte potrebbe capitare di dover stoppare lo script raid-check e per farlo non basta un kill -9 PID. Per stoppare il processo bisogna cambiare lo status del file sync_action. # echo "idle" >/sys/block/DEVICE/md/sync_action dove al posto di DEVICE dovete scrivere il vostro device, esempio (md1,md3 o md0).   Dev Null Articoli Correlati:
  1. JCKEditor su Joomla 1.5 problemi controllo corpo dell’articolo
  2. IPv6 addrconf: prefix with wrong length 56
  3. L’antico Hard Disk andava portato in salvo.
Categorie: planet

Generare le traduzioni per i modelli di ActiveRecord

maxer - Lun, 17/03/2014 - 09:30

Ruby on Rails è sicuramente un framework molto potente, ma lo sviluppatore italiano soffre spesso del problema della traduzione dei modelli, in quanto la nomenclatura usata è prevalentemente inglese ed è best practice usare l’inglese nei modelli e negli attributi. Da qui la necessità di tradurre i nomi dei modelli e i nomi degli attributi dei modelli.

Dopo aver speso una considerevole quantità di tempo a ricopiare a mano gli attributi dei modelli e inserire le traduzioni ho trovato questa gemma: i18n_generators che permette di generare il file usato per poi tradurre il nome dei modelli e degli attributi.

Una volta installata come gemma, il funzionamento è semplice:

$ rails g i18n_translation it

il comando (ci metterà un po’) analizzerà i nostri modelli e genererà il file con tutti gli attributi, pronto per accogliere le nostre traduzioni. Inoltre, se eseguito nuovamente in seguito, conserverà le chiavi esistenti aggiungendo quelle mancanti, semplificandoci di molto il lavoro.

 

Categorie: planet

Pulire l’html da tag non necessari con sanitize

maxer - Gio, 06/03/2014 - 13:56

Continuando quanto detto ieri, circa la chiusura di tag html lasciati aperti, oggi vi presento un’altra gemma molto interessante: sanitize.

L’obiettivo di questa gemma, basata su nokogiri, è di pulire l’html da tag non voluti o malevoli.

Una volta installata, potremo accedere al metodo “clean” della classe “Sanitize” nel seguente modo:

Sanitize.clean(html)

questo rimuoverà, come impostazione di default, tutti i tag html. Oltre al filtro di default, moooolto restrittivo, sono presenti anche i seguenti filtri:

Sanitize::Config::RESTRICTED che permette solo la formattazione del test

Sanitize::Config::BASIC che permette la formattazione del testo, le liste e i link

Sanitize::Config::RELAXED che permette quanto detto sopra con l’inclusione di immagini e tabelle

L’uso è semplice:

html = '<!DOCTYPE html><html><b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg"></html>' Sanitize.clean(html, Sanitize::Config::RELAXED) # => '<b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg">'
Categorie: planet

Forzare la chiusura dei tag html con nokogiri

maxer - Mer, 05/03/2014 - 13:36

Affrontando l’esportazione di un sito sviluppato alcuni anni fa in Ruby on Rails, mi sono accorto che chi ha inserito i contenuti ha lasciato dei tag html aperti. La cosa da non pochi problemi nel sistema di destinazione in quanto destabilizza la grafica (sapete anche voi quanto casino può generare un <div> non chiuso).

Per risolvere questo problema possiamo usare la gemma nokogiri, un parser html e xml.

La sintassi è semplice:

Nokogiri::HTML.parse('<div>').inner_html

Ci restituirà la struttura completa di una pagina html con il <div> correttamente chiuso:

"<html><body><div></div></body></html>"

Ovviamente noi non abbiamo bisogno di tutta la struttura della pagina, quindi possiamo sfruttare il metodo .children che restituisce il tag successivo a quello più esterno:

Nokogiri::HTML.parse('<div>').children.children.inner_html => "<div></div>"

In questo modo abbiamo il nostro codice html corretto.

Categorie: planet

Sclero da e-commerce

maxer - Gio, 30/01/2014 - 16:31

Oggi sono vicinissimo allo sclero… per colpa di un e-commerce realizzato con un prodotto (opencart) che, insieme ai vari prodotti ecommerce e anche qualche forum, mi hanno deluso profondamente.

Veniamo a noi: quando uno un cms/framework/prodotto ben fatto (drupal o wordpress) mi trovo davanti a moduli self-containet che, tramite hook o funzioni, interagiscono col cms/framework e fanno il loro dovere.

Con opencart (il colpevole in questo caso) questo non succede e i moduli più interessanti richiedono patch o l’utilizzo di vqmod, che in pratica va a modificare i sorgenti a runtime… l’idea di base potrebbe essere buona, se non fosse che ad ogni aggiornamento c’è da sperare che tutto combaci alla perfezione, che tutti i plugin siano compatibili con la nuova versione e che le modifiche che apportano ai sorgenti non vadano in conflitto tra di loro…

Così non è possibile lavorare, secondo me… ora inizio a studiare spree

Categorie: planet

Report attivitá del mese

risca - Ven, 06/09/2013 - 19:31

Cari internauti,

prendendo ispirazione dal planet di debian.org ho deciso periodicamente di fare il punto delle mie attivitá correlate al software libero mese per mese.

Agosto é stato un periodo ricco di emozioni legate alla comunitá Debian, ma con un sapore un po' amaro per il susseguirsi di vicende personali e lavorative che mi sono stato fonte di cruccio e distrazione. Peró permettetimi adesso di concentrarmi sulle prime e dimenticare per un po' le seconde.

In questo agosto 2013 c'é stato il 20o compleanno di Debian e la 13a edizione del DebConf. L'ubicazione é stata una delle piú appropriate, uno splendido camp nei pressi di Vaumarcus, vista lago e montagne. Per fortuna il posto é comodo anche per noi italiani, traducendosi in poco meno di 3 ore di auto da Torino e Milano. Ossia una occasione troppo ghiotta per non provare a farci un salto, e cosí è stato. Sono riuscito infatti a tagliarmi almeno tre giorni per partecipare al meeting. Come al solito i talk sono stati di altissimo livello ma devo ammettere che, essere là e partecipare dal vivo é tutta un'altra cosa rispetto a vedersi. Ho avuto modo di conoscere persone fantastiche ed il piacere di scambiare libere opinioni, o di abbinare alcuni nomi che vedo periodicamente nelle mailing list e IRC con i rispettivi volti. Consiglierei a tutti di fare un salto alla prossima occasione buona, seppure conscio che purtroppo la prossima edizione sia parecchio lontana (Portland, Oregon, USA).

Finalmente ho pubblicato su github gitorious il codice di proprietary OS destroyer. A dire il vero dovrei migliorare ancora un po' lo stile del messaggio, peró il piú é già stato fatto. Non posso che augurarmi che lo script abbia un buon successo e sia adottato anche da altri portali oltre il mio!
Ulteriore informazioni sono reperibili sul mio wiki (work in progrss).

Sará forse il lungo periodo di totale far niente in spiaggia al mare (ma che interminabile noia) ma ho finalmente rimesso in cantiere il progetto di costruirmi la mia prima RepRap, la stampante 3-D libera! Ad essere sinceri il progetto langue giá da un po' nel mio cassetto dei sogni irrisolti. Avevo giá provato ad iniziare il progetto circa un annetto fa, ma senza poi alcun seguito. Quest'anno invece ho l'intenzione di appoggiarmi ad un FabLab per avere un po' di aiuto ed assistenza. Forse cosí sará la volta buona ;-)

Bene, per agosto é tutto, speriamo con settembre di riuscire finalmente a fare qualcosa di interessante...

 

P.S.: inoltre ad agosto ho iniziato a seguire qualche post di programmazione di Coursera. Consiglio a tutti di buttarci un occhio...

Categorie: planet

The Beauty of Programming

risca - Mer, 26/06/2013 - 01:52

Perchè l'informatica può affascinare così tanto, seppure vista da fuori i più la percepiscono come una attività noiosa? Come è possibile che 797 cm2 possano essere più interessanti di tutto ciò che accade attorno?

Penso che (stima molto a ribasso) per il 99,999% del suo tempo di vita ad un generico processore del computer sia richiesto di eseguire compiti tristi, al pari dell'intelligenza di una lavatrice1. Ad esempio rapire l'utente di un social network illudendolo di avere un vita sociale, lobotomizzare il giocatore con uno sparatutto o fare imprecare il lavoratore con un programma di merda scritto da un programmatore che nulla sa in merito a ciò che il suo software andrà ad effettuare ma che si fa pagare ugualmente bei soldoni. Poi, in alcuni casi più unici che rari, la CPU non viene impiegata per far girare il solito pornazzo con flash, né per cliccare sul primo allegato dell'amico ed infettare il computer, o far girare un antivirus talmente intelligente da ciucciare talmente tante risorse da bloccare il computer stesso.

Qualche rara volta invece il PC da strumento diventa il fine. Ossia esiste qualche strano2 individuo della società moderna che usa il PC per amore del PC stesso. Non sta davanti al monitor né per produrre qualcosa di utile né per diletto o per trascorrere del tempo. Invece lo usa per capire come funziona e per crearsi le proprie regole.

Certo, alcuni di questi individui a volte presentano tratti singolari, ma i più li riconosci semplicemente perché hanno lo sguardo curioso, sanno meravigliarsi e stupirsi delle piccole cose, quelle a cui i più non danno peso. Sanno apprezzare la bellezza della logica e spesso sul loro computer gira qualcosa di insolito. Alcuni non usano persino il topo! e per fare qualsiasi cosa digitano parole su parole e sigle incomprensibili. E se li guardi stupito rispondono, bhe è così perché comodo e più veloce, guardano lo schermo (monitor nero soffocato di caratteri bianchi) è dicono che sia bello...

Invece no, non è bello, è magnifico. Il nostro acaro può con la forza della parola plasmare mondi paralleli, creare nuove regole e ordini. Si tratta di universi talmente complessi in cui a volte è facile perdersi nella propria logica. L'algoritmo è un esempio di poesia. Saper descrivere una legge nel modo più elementare possibile, quello che appena lo vedi capisci che è quello giusto.

Così dedico queste due righe al piacere di giocare con l'informatica in sé. Certo, il computer può essere anche un elettrodomestico utile e divertente, ma il massimo piacere è la possibilità di giocare con la logica e la matematica in una propria dimensione.

Grazie a tutta la comunità e a tutti gli appassionati del software libero.

 

Come diceve il sommo poeta...
6661747469206e6f6e20666f737465206120766976657220636f6d652062727574692c206d612070657220736567756972207669727475746520652063616e6f7363656e7a610a

Note
  1. sì, proprio come molti non sanno come usare la lavatrice altrettante persone non sanno usare minimante un computer.
  2. Ad esempio ecco cosa pensa Linus Torvalds della bellezza di programmare.
Categorie: planet

Chiavetta ONDA TM201 (1ee8:0064). Come non sviluppare il software libero.

risca - Mer, 19/06/2013 - 15:23

Ebbene sì, i cellulari da 100 Eurozzi hanno a volte una capacità di connessione un po' infima. Da qui l'urgenza di comprarmi la chiavetta Internet per la mia connessione in mobilità.

Pur volendo fare una scelta consapevole, specie se in un posto di villeggiatura, si è costretti a prendere quel che capita sullo scaffale del negoziante TIM/WIND/Vattelapesca. E non puoi nemmeno chiedere consiglio perché se parlassi di potenza e di onde tutt'al più il commesso ti risponderebbe cosa centri il capoluogo più alto d'Italia con il mare.

E così mi finì tra le mani lei, bianca e lucida come un supposta, ma di dimensione un po' più grande e meno scivolosa: la chiavetta ONDA TM201, riferimento lsusb 1ee8:0064. Antenna interna e, udite udite, supporto Linux ben indicato sulla confezione. Ganzo ganzo me la porto a casa e non aspetto altro che inserirle nel posteriore del mio portatile, sapendo che come dice la confezione con Linux va che è un bomba.

Aspetto.

Aspetto ancora un poco.

Non succede nulla: la chiavetta non lampeggia, in network-manager non la visualizza e la vedo solo come disco cdrom1 (e poi perché cavolo visualizzarla come cdrom se è solo una chiavetta USB?).

Per fortuna il web ti è amico. Così scopro che il dispositivo funziona già bene con il kernel e i driver Linux di wheezy (penso probabilmente anche quelli di squeeze seppure non abbia effettuato alcuna prova). L'unico problema è far effettuare il passaggio del dispositivo da periferica di massa a modem seriale. Però dai changelog si vede benissimo che il supporto è già stato inserito nel pacchetto usb-modeswitch/usb-modeswitch-data di sid.

Perfetto, installo usb-modeswitch >= 1.2.6 prelevandola da sid (al momento versione: 1.2.6+repack0-1) et voilà, tutto funziona!

A questo punto mi sorge una spontanea riflessione sui cavoloni della Onda Communication S.p.a.: vuoi supportare Linux perchè è cool e figo? Allora lavora alla maniera di Linux!

Perché cavolo crei un software che:

  • è totalmente proprietario (ma qui siamo nel regno della Free Software Foundation!);
  • probabilmente per larga parte ricorre a software libero;
  • non è necessario siccome il device è già supportato in Linux;
  • richiede la disabilitazione di programmi già installati sul sistema (sì, proprio vero, tra i requisiti chiede di fermare il network-manager).

Una persona sana di mente non avrebbe agito proprio così! Piuttosto avrebbe:

  • verificato quali software fossero già disponibili nel variegato panorama Linux;
  • avrebbe collaborato allo sviluppo del software necessario (usb-modeswitch in questo caso), o fornito le patch necessarie. Notare che a proposito qui stiamo discutendo di proprio 2 righe di codice;
  • avrebbe indicato i requisiti minimi del software necessario per usare il dispositivo (ossia la versione di usb-modeswitch, wvdial e network-manager);
  • al limite avrebbe creato come ultima spiaggia, dopo tutti i passi precedenti che non richiedono comunque un grosso sforzo, un programma che, senza bisogno di alcuna installazione sul sistema, possa permetterne l'utilizzo anche a quegli sfigati che non possano agire diversamente.

E così invece in rete si trovano miriadi di discussioni su come installare il software proprietario della Onda - molte spesso con target utente Ubuntu - che invece non serve a a una beata mazza, perché tutto funziona con il solito software libero!

Riguardo invece ai programmatori della ONDA penso che piuttosto che fare poco e male sia meglio non fare proprio nulla.

Mi dispiace solo che spesso vi sia l'andazzo alla W$, installiamo questo e quello, la licenza non importa, non so cosa faccia ma va bene così. Va bene così un cavolo, perché non dimentichiamoci che se abbiamo una così bella piattaforma e solo perché libera, perché tutti possono contribuire e metterci le mani.

Forse non sarà chiaro a molti utonti, ma uscire da questo sistema basato sulla collaborazione significa la fine stessa di questo magnifico universo.

Note su usb-modeswitch

Il codice da inviare è il seguente:

# Onda TM201 14.4 (TIM Italy)

TargetVendor = 0x1ee8
TargetProduct = 0x0064

MessageEndpoint = 0x01
MessageContent = "555342431849128600000000000008FF000000000000030000000000000000"
Fonte: www.draisberghof.de/usb_modeswitch/

Categorie: planet

Paese nel pallone. Vince il metodo STAMINA.

risca - Gio, 06/06/2013 - 23:47

Gioite compagni di disavventura, imbarcati in una nave sanza nocchiere in gran tempesta!, il metodo STAMINA alla fine l'ha spuntata. E l'ha spuntata a man bassa!

Non solo ha ottenuto un blebiscito alle camere (un solo contrario!) ma si porta a casa anche 3 milioni di "investimenti in ricerca" dal ministero della sanità. E per fortuna che avevamo in parlamento gente nuova, con un grillo per la testa, capace di fare la differenza. E per fortuna che abbiamo trasmissioni di inchiesta che sanno discernere tra il vero e la truffa. Macché, la TV è fatta solo di Iene che inseguono audience a scapido di insinuare false speranze a che vive nella disperazione più totale. Speranze a persona che già poter pensare ad un anno, un mese di vita potrebbe essere un miracolo.

Grazie anche a tutti gli allocchi che hanno creduto al complotto, alle lobby farmaceutiche e agli scienziati invidiosi. Ma che importa, tanto questi allocchi hanno le gambe per andare a protestare contro i mulini a vento!

Siccome la storia non insegna nulla, il faccendiere Davide Vannoni era già noto alle cronache. Non solo alle aule giudiziare e pm torinesi ma anche al pubblicoarticolo la stampa del 24/05/2011. Ma anche all'estero stanno ridendo di noi e della nostra capa cava: ben due articoli dedicati alla stupidità umanaitaliana da nature.

Ma non vi siete convinti e volete ancora credere al grande mago Vannoni? Perdete almeno ancora un attimo a leggere wikipedia o Le Scienze. Ridete ancora adesso?

Categorie: planet
Condividi contenuti