Dropbox: facciamo partire il demone all’avvio del sistema

Dropbox è un servizio di storage online molto diffuso, che offre 2GB di spazio cloud gratuito espandibile fino a 16GB se si invitano amici.

L’installazione in un ambiente grafico non desta problemi: esistono pacchetti facilmente installabili su tutte le distribuzioni Debian based e Fedora based ed esiste anche un pacchetto per Arch Linux.

Il problema sussiste quando si cerca di avviare il demone in ambienti senza DE, come può essere un server. Il sito non specifica cosa bisogna fare per avviare il demone all’avvio del computer, ma dice qual’è l’eseguibile che fa partire il servizio. Sulla base di queste informazioni si può costruire un init script che faccia tutto il lavoro.
Dropbox: facciamo partire il demone all’avvio del sistema prosegui la lettura »

Call for Papers Linux Day 2012

È aperto il Call for Papers per il Linux Day di quest’anno. Sarà il Roma2LUG, in collaborazione con l’LSLUG, ad organizzare l’evento.

Invito chiunque abbia voglia di presentare un talk di visitare la pagina sul blog ufficiale per maggiori informazioni.

Bloccare l’accesso a file specifici tramite .htaccess

A volte può essere utile impedire in un web server il download e la visualizzazione di un determinato file o una categoria di file caratterizzati da un’estensione specifica. Un esempio può essere l’uso di SQLite: lasciare libera la possibilità di scaricare il database potrebbe compromettere la sicurezza dei dati registrati in esso. Per ovviare al problema si può applicare una direttiva nel file .htaccess che ne limiti l’accesso da parte di client remoti.

Di seguito è presentata la sezione che impedisce la visualizzazione di tutti i file con estensione .htaccess, .htpasswd, .ini, .log, .sh o .db:

<FilesMatch "\.(htaccess|htpasswd|ini|log|sh|db)$">
Order Allow,Deny
Deny from all
</FilesMatch>

Con un po’ di fantasia si può personalizzare il codice per far in modo che si adatti alle specifiche esigenze. Ad esempio, se volessimo bloccare l’accesso a tutte le immagini:

<FilesMatch "\.(gif|jpe?g|png)$">
Order Allow,Deny
Deny from all
</FilesMatch>

Oppure tutti i file admin.php, admin.html o admin.htm:

<FilesMatch "^admin\.(php|html|htm)$">
Order Allow,Deny
Deny from all
</FilesMatch>

In generale la direttiva FilesMatch accetta delle espressioni regolari come argomento. Per maggiori dettagli rimando alla pagina di documentazione ufficiale di Apache: http://httpd.apache.org/docs/current/mod/core.html#filesmatch.

Abilitare interpretazione .htaccess per Apache2 su Debian 6

I file .htaccess vengono usati nei siti Internet per “scavalcare” (override in inglese) la configurazione base del Web Server.

In un’installazione usuale di Apache avviene questo: all’avvio il demone legge il suo file di configurazione (httpd.conf, 000-default o default, in base alla distribuzione usata) determinando il comportamento da tenere in seguito ad una richiesta HTTP di un client. Prima di elaborare la risposta, però, verifica se nella cartella che contiene il file richiesto (ad esempio una pagina index.html), o nelle cartelle superiori, è presente anche il file .htaccess e in tal caso lo legge modificando a runtime la sua configurazione e quindi il suo comportamento.

La versione di Apache2 che viene installata dai repository ufficiali di Debian 6 (Squeeze) di default non permette la sovrascrittura della configurazione mediante .htaccess, ma si può abilitare. Ecco come:

  1. Per prima cosa occorre abilitare il modulo mod_rewrite:
    # a2enmod rewrite
    Quest’istruzione non fa altro che creare un link simbolico del file “/etc/apache2/mods-available/rewrite.load” in /etc/apache2/mods-enabled/rewrite.load”
  2. Successivamente bisogna imporre nella configurazione base di Apache di cercare eventuali file .htaccess ed interpretarli. È necessario modificare il file “/etc/apache2/sites-enabled/000-default” da così:

    [...]
    DocumentRoot /media/data/www
    <Directory /media/data/www>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
    </Directory>
    [...]

    A così:

    [...]
    DocumentRoot /media/data/www
    <Directory /media/data/www>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
    </Directory>
    [...]

    Il percorso definito in DocumentRoot e in <Directory …> devono essere uguali.
  3. Riavviate Apache e il gioco è fatto:
    # service apache2 restart

Buon San Valentino!

Molta gente afferma che la festa di San Valentino sia solo una trovata commerciale, mentre altri ci credono fermamente. In ogni caso io ne approfitto per mostrarvi cosa si può fare con un paio di variabili e un piano cartesiano:

Heart curve

L’espressione matematica da cui si ricava la curva è la seguente:

x^2 + ( y - \sqrt{|x|} )^2 = 1

Si può graficare utilizzando Wolfram|Alpha, oppure una matita e una paginata di conti… A voi la scelta :) .

Altri modi per rappresentare matematicamente il cuore sono visibili qui.

Auguri a tutti gli innamorati!

Il mondo un po’ più RISC

Il recente articolo di Paolo Attivissimo riguardo la lezione tenuta da Cory Doctorow mi ha dato modo di esprimere un pensiero che mi è balenato per la testa negli ultimi tempi.

Parlando di calcolatori, con il passare del tempo il mercato si è spinto sempre più verso delle soluzioni integrate e soprattutto portatili, che hanno favorito lo sviluppo di architetture RISC a discapito delle vecchie e care CISC. Se con un PC si può fare di tutto, in un sistema embedded si è molto limitati.

Perché non si è rimasti nel mondo del Complex Instruction Set Computer? Semplice, perché consumano troppo. L’architettura che tutti conoscono come x86 non è altro che un vecchio, vecchissimo processore 80386 del 1985 a cui si sono aggiunte le istruzioni che con le nuove generazioni di computer diventavano indispensabili. Ovviamente questa continua ristrutturazione non ha certo giovato, ma ha garantito la retrocompatibilità. Ai giorni d’oggi un processore x86 consuma troppo per poter essere impiantato su un dispositivo tascabile ed è per questo che ci si è diretti verso delle alternative. Guarda un po’, l’alternativa ideale era l’architettura ARM. Completa, affidabile, efficiente dal punto di vista energetico e anche a basso consumo. Però è RISC, ha un set ridotto di istruzioni che lo rendono non proprio idoneo a quelle mansioni General Purpose che si affibbiavano al PC. Per un utente che usa il computer solo per navigare o controllare la posta non è un problema, ma lo diventa non appena si tenta di fare qualche operazione un po’ più complessa.

Recentemente sono emersi dei rumor di possibili PC con processore ARM. Alla luce di quanto detto, questo potrebbe portare alla morte dei computer come li conosciamo, a vantaggio di soluzioni ”castrate“. L’acquisto della BeagleBoard mi ha dato modo di provare sul campo una distribuzione Linux tipicamente usata su un computer (Ubuntu), ricompilata per architettura armv7 (armhf). Beh i risultati sono disastrosi. È vero che non scalda ed è affidabile, ma è come mettere un motore Ferrari su una Fiat. Si vede come il collo di bottiglia sia proprio la potenza di calcolo, in quanto si manifestano blocchi del sistema durante operazioni di elaborazione dati.

Il mio consiglio quindi è di godere dei bei vecchi processori che scaldano come forni, ma con cui ci si può fare di tutto, almeno fin quando non verranno soppiantati dai più eleganti e carismatici RISC.

Navigando tra le distro

“Alt! Chi siete? Cosa portate? Si, ma quanti siete? Un fiorino!”
Cit. Non ci resta che piangere (1984)

Siamo sommersi di distribuzioni di ogni forma e dimensione ormai. Se non altro è facile trovare quella che soddisfa appieno le proprie esigenze, anche se l’hard disk chiederà pietà molto presto, a forza di format…
In questi ultimi tempi ho provato quelle principali e ora vi esporrò le mie impressioni.

Navigando tra le distro prosegui la lettura »

Buone feste!

Buon Natale e Felice Anno Nuovo a tutti!

Doodle di Google per le feste di quest'anno

Roma2LUG Opening: test succeeded!

Spinto dall’articolo già pubblicato da Alessio Biancalana sul suo blog personale, ho deciso anche io di buttare giù qualche riga sulle mie impressioni dell’evento di ieri: il Roma2LUG Opening.

Possiamo dire che è stata la prova del nove del nascente gruppo Roma2LUG dell’università Tor Vergata ed è stata passata con successo. Considerando che è stato il primo evento pubblico del LUG, l’affluenza è stata oltre le mie aspettative ed i talk sono stati tutti molto interessanti e ben esposti. C’è stato anche un “talk-sorpresa“, aggiunto solamente il giorno prima alla scaletta, che nonostante tutto ha trovato il suo spazio raccontando argomenti molto interessanti.

La maggior parte della gente che ha partecipato conosceva già Linux e questo ha fatto sì che nessuno usufruisse del banchetto adibito ad Install Fest. È stato un vero peccato, dopo tutto il lavoro svolto per riuscire a condividere la rete internet dalla connessione wireless dell’università ad uno switch ethernet a 24 porte. Sarà per la prossima volta :)

Anch’io ho partecipato al dietro le quinte dell’evento ed ho presentato un talk sulle differenze tra Linux, Windows e Mac OS X. Le mie slide sono raggiungibili qui. Ringrazio Cristina che mi ha aiutato e supportato nella realizzazione delle slide, soprattutto negli aspetti grafici.

Tutte le slide dei talk sono state pubblicate nell’ultimo articolo del blog ufficiale.

BeagleBoard: un cane con sopra Linux

Beagle_logoOggi vi parlerò di un giocattolino piuttosto interessante: la BeagleBoard. In sostanza è una scheda elettronica grande poco più di un Floppy Disk in cui è condensato un intero sistema, con tanto di USB, uscite video digitale e analogico, porta seriale e molto altro.

Ho recentemente acquistato la versione xM della scheda che vanta caratteristiche hardware superiori rispetto alla versione base. Il cuore di tutto il sistema c’è un processore ARMv7 Cortex A8 con frequenza operativa di 1GHz, affiancato da una memoria RAM di 512MB. Non ha memorie Flash o EEPROM, il che rende essenziale l’uso di una scheda microSD esterna su cui va caricato, oltre al sistema operativo, il Bootloader e il  Bootstrap. A differenza della versione base conta ben 4 porte USB e una porta Ethernet 10/100Mbps. C’è da dire, inoltre, che l’intera piattaforma è free (libera), ad eccezione del brevetto per l’architettura ARM…

La scheda cambia di utilità in base a ciò che ci si aspetta da essa: sicuramente non è adatta come personal computer, sebbene abbia una GPU integrata e sappia riprodurre filmati in FullHD, ma risulta molto interessante per chi vuole lavorare su sistemi embedded oppure vuole mettere su un server casalingo fanless dalle prestazioni “discrete” (non vi aspettate nulla di velocissimo, è comunque un’architettura RISC!).

Vale la pena spendere due parole riguardo alle potenzialità in ambito embedded. Infatti la BeagleBoard è dotata di numerosi slot di espansione che mettono a disposizione dello sviluppatore molti segnali direttamente provenienti dal processore OMAP. Spiccano tanto per cominciare le porte GPIO (General Purpose Input Output), con le quali si possono pilotare semplici LED oppure gestire apparati più complessi per gli utenti che hanno qualche conoscenza approfondita sull’elettronica. Altre segnali messi a disposizione dell’utente sono l’I2C, l’UART, tutti i segnali di pilotaggio per un display e per una camera e altri ancora. Insomma, per un utente che sa destreggiarsi tra software, protocolli e hardware la BeagleBoard risulta il suo paese dei balocchi.

Prossimamente scriverò un articolo in cui spiegherò in dettaglio la sequenza di avvio della BeagleBoard xM; si tratta di pochi file essenziali per il corretto funzionamento della scheda. Stay tuned!