Pagine

martedì 29 dicembre 2009

Difendere dallo spam gli indirizzi mail pubblicati su siti.

Premessa

Ci sono diverse persone che hanno la necessità o la voglia di pubblicare pagine su web o post in blog/forum. Probabilmente costoro sanno che inserendo il proprio indirizzo email su un sito, questo sarà oggetto di attenzione degli spambot.
Lo spambot è un programma che "scandaglia" la rete alla ricerca di indirizzi mail; la finalità è semplice ma tediosa: riempire di spam (le classiche mail spazzatura) a raffica il malcapitato.
Nel giro di pochi mesi, dunque, ci si ritrova il proprio account di posta elettronica zeppo di pubblicità più o meno sconvenienti ma tutte rigorosamente indesiderate.
Per questo motivo è necessario difendersi da questi programmi ma, nel contempo, rendere disponibile il proprio indirizzo a coloro che vogliono comunicare con noi tramite il sito sul quale pubblichiamo materiale.
L'articolo che state per leggere vi offrirà due possibili soluzioni.

Email a fronte di una conferma: scr.im

Scr.im è un servizio che, a fronte di una conferma da parte dell'utente finale, permette di vedere l'indirizzo email desiderato.
Per sfruttare questo servizio è necessario collegarsi ad esso, inserire la propria email e premere il pulsante "Protect my email".
Il sito ci indicherà un indirizzo web del tipo http://scr.im/1zpd: questo URL è da utilizzare sul proprio sito web inserendolo al posto dell'indirizzo email.
L'utente che visita il sito non dovrà far altro che cliccare su tale URL e sarà indirizzato su una pagina dove dovrà scegliere un codice a fronte di una immagine.
Se la scelta sarà corretta potrà visualizzare la email. Ovviamente questa operazione richiede l'intervento di una persona in carne ed ossa: uno spambot, in questo caso non sarebbe in grado di risalire alla email.
Provate per credere: http://scr.im/1zpd.

Email su immagine: Email icon generator

Un altro servizio molto utile ma concettualmente altrettanto differente è Email icon generator.
Questo sito genererà una immagine con il vostro indirizzo web.
Una immagine, infatti, è difficilmente riconoscibile dagli spambot.
Come si vede nella figura, infatti, il servizio visualizza un indirizzo web dove l'immagine con la propria email sarà raggiungibile e l'immagine stessa da inserire sul proprio sito.
L'utente finale, visitando il sito, per contattare l'utente dovrà ricopiare l'indirizzo sul proprio programma di posta elettronica ma almeno un programma automatico non sarà in grado di riconoscere la mail.
Potete trovare la mia email a questo indirizzo o visualizzarla di seguito.

venerdì 4 dicembre 2009

cdparanoia - cd audio in formato WAV



Dopo l'articolo su come usare i cdrtools e quindi lavorare e masterizzare CD, DVD e Bluray, parleremo oggi di un altro software molto interessante: cdparanoia.
Questo programma, in realtà, è una libreria usabile solo in ambiente Linux e sfruttata da numerose GUI: permette di estrarre le tracce audio presenti su un cd musicale e riversarle sull'hard disk come file in formato WAV.
Questo genere di software viene anche definito ripper e cdparanoia è senza dubbio uno dei migliori in circolazione.
Probabilmente alcuni lettori e utilizzatori di linux conoscono cdda2wav: l'oggetto di questo post ne è la riscrittura.

CDparanoia 9 e 10 supportano in modo ottimale supporti ATAPI, IDE-SCSI e SCSI e sotto il kernel 2.6 viene aggiunto il supporto SG_IO che è l'interfaccia di default dei moderni CDROM.
Sono supportati anche i driver USB sempre attraverso SG_IO.

Di particolare nota anche la pagine delle Frequently Asked Question (FAQ) e del manuale (Manuale) presenti sul sito.

Esempi pratici

Per ricercare un driver da utilizzare con relativo report il comando da usare è:
       cdparanoia -vsQ
Per estrarre l'intero disco creando un file per ogni traccia:
       cdparanoia -B
Estrarre la traccia numero 1 dal 0:30.12 a 1:10.00
       cdparanoia "1[:30.12]-1[1:10]"
Estrarre dall'inizio del disco alla traccia numero 3:
       cdparanoia -- "-3"
Estrarre la traccia 3 e 6 nel file myrip.wav
       cdparanoia -- “3-7” myrip.wav
Estrae la medesima traccia in formato AIFF,AIFC
       cdparanoia -f -- “3”
cdparanoia -a -- “3”
Nei prossimi articoli si parlerà ancora di manipolazione file audio

giovedì 3 dicembre 2009

CDRTools - utility per masterizzare e lavorare con CD, DVD, BluRay

Premessa

Il termine "masterizzare" significa memorizzare su un supporto ottico (quali, ad oggi, CD/DVD/BluRay) file di varia natura e genere. La masterizzazione può essere permanente o, nel caso dei riscrivibili, si possono cancellare i dati e sostituirli.
Quando si parla di masterizzazione, la maggior parte degli utenti associa, a questa parola, un famoso software denominato Nero Burning Rom (chiamato per brevità "Nero").
Questo programma indubbiamente molto valido gira esclusivamente su windows (anche se da qualche tempo ho visto che hanno fatto anche la versione alpha per linux) e soprattutto non è gratuito.
Nell'articolo che segue vi propongo un metodo alternativo di gestire i supporti ottici con alcuni strumenti creati su sistemi *unix ma utilizzabili anche su windows (e senza le cygwin...).
I cdrtools sono utility a riga di comando create nel lontano 1996 ed evolute nel tempo.
Esistono svariate interfacce grafiche (GUI) che aiutano l'utente ad utilizzarle senza dover imparare lunghe stringhe di comandi.
In questo articolo, tuttavia, ci concentreremo sulla riga di comando e in prossimi articoli vedremo alcune GUI.

Cdrtools


Copiando direttamente dal sito di riferimento di questo strumento, possiamo vedere che cdrtools è composto dai seguenti software:
  • cdrecord Il programma per masterizzare un CD/DVD/BD
  • readcd Un programma per leggere e clonare CD/DVD/BD multimediali
  • cdda2wav Il più evoluto estrattore CD-audio con il supporto di "paranoia"
  • mkisofs Un programma per creare filesystems ibridi ISO9660/JOLIET/HFS con attributi Rock Ridge opzionali
  • isodebug Un programma per stampare le informazioni di debug di mkisofs
  • isodump Un programma per fare il dump di ISO-9660
  • isoinfo Un programma per analizzare e verificare filesystems ISO/9660/Joliet/Rock-Ridge
  • isovfy Un programma per verificare le strutture ISO-9660
  • rscsi Un demone per abilitare il Remote SCSI

Mkisofs

Questo comando permette di creare delle immagini ISO. Tali immagini sono quelle che il comando successivo, cdrecord, riesce a masterizzare su disco.
Dopo aver raccolto i files e le directory da masterizzare in una unica cartella, è possibile procedere alla creazione della ISO con il seguente comando:
mkisofs -r -o immagine.iso cartellaconfiles
L'opzione -r permette, fedelmente al protocollo Rock Ridge, di memorizzare dentro l'immagine anche informazioni aggiuntive sui files, preservando il nome originario ed impostando i permessi in maniera ottimale per un CD: read/execute globale, write cancellato e i bits special mode sono cancellati perchè inutilizzabili su un CDROM.
Molti CDROM sono avviabili o, per dirla all'inglese, bootable. Questa possibilità è uno standard chiamato “El Torito”.
El Torito gestisce il CD come se fosse un floppy ed il BIOS può avviarlo in fase di boot.
Se si vuole rendere avviabile il CD si necessita di una immagine di floppy adatta.
Qualsiasi CD di una distribuzione linux come Debian, RedHat o altre hanno questa immagine nel proprio CD pronta all'uso: si chiama boot.img.
Prima di creare l'immagine da masterizzare si aggiunga una cartella di nome boot dentro la directory che contiene tutti i files. Si metta il file boot.img in questa sottocartella e si crei l'immagine finale con il seguente comando:
mkisofs -r -b boot/boot.img -c boot/boot.cat -o immagine.iso cartella
Ovviamente l'opzione -b seguita dall'immagine avviabile dichiara cosa deve essere avviato in fase di boot mentre l'opzione -c indica il nome del catalogo (automaticamente creato da mkisofs) richiesto da El Torito.

Mount di una immagine

A questo punto è possibile visualizzare ciò che c'è dentro l'immagine appena creata (o, ovviamente, in una immagine qualsiasi).
Per fare questo bisogna "montare" l'immagine dentro una directory con il seguente comando:
mount -r -t iso9660 -o loop cdimage.iso /mnt 
L'immagine sarà, a questo punto, navigabile come se il suo filesystem fosse dentro /mnt.

Cdrecord

E' senza dubbio il software più interessante della suite.
Prima di tutto è necessario conoscere il bus del masterizzatore. Se questa informazione non è in nostro possesso basta digitare il seguente comando:
cdrecord -scanbus
L'output del comando varia da situazione a situazione e a seconda del supporto usato. In generale dovrebbe assomigliare alla seguente riga
0,4,0  4) 'HP  ' 'CD-Writer+ 9600 ' '1.0a' Removable CD-ROM
A questo punto usando la prima informazione 0,4,0 che ci indica il bus del masterizzatore trovato, siamo in grado di masterizzare una immagine ISO:

cdrecord -v speed=8 dev=0,4,0 immagine.iso
Leggermente diverso il caso in cui, al posto di creare un cd di dati si voglia masterizzare un cd con tracce audio da ascoltare su uno stereo. In tal caso, si devono avere una serie di file in formato WAV in una cartella e digitare il seguente comando (si noti che molti lettori non leggono i CDRW; meglio usare dei CDR):
cdrecord -v dev=0,0 -dummy -dao -useinfo -pad -audio *.wav
Il software restituisce una serie di informazioni estremamente utili per l'analisi dell'esito del comando che riportiamo di sotto:

Cdrecord 2.0 (i686-suse-linux) Copyright (C) 1995-2002 Jörg Schilling
TOC Type: 1 = CD-ROM
cdrecord: Warning: not running as root user, fs= option ignored.
scsidev: '0,4,0'
scsibus: 0 target: 4 lun: 0
Linux sg driver version: 3.1.24
Using libscg version 'schily-0.7'
cdrecord: Warning: using inofficial libscg transport code version
(okir@suse.de-scsi-linux-sg.c-1.75-resmgr-patch '@(#)scsi-linux-sg.c
1.75 02/10/21 Copyright 1997 J. Schilling').
atapi: 0
Device type : Removable CD-ROM
Version : 4
Response Format: 2
Capabilities : SYNC
Vendor_info : 'HP '
Identifikation : 'CD-Writer+ 9600 '
Revision : '1.0a'
Device seems to be: Generic mmc CD-RW.
Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
Driver flags : MMC-2 SWABAUDIO
Supported modes: TAO PACKET SAO SAO/R96R RAW/R96R
Drive buf size : 4183552 = 4085 KB
FIFO size : 4194304 = 4096 KB
Track 01: data 648 MB
Total size: 745 MB (73:50.37) = 332278 sectors
Lout start: 745 MB (73:52/28) = 332278 sectors
Current Secsize: 2048
ATIP info from disk:
Indicated writing power: 7
Is not unrestricted
Is not erasable
ATIP start of lead in: -11597 (97:27/28)
ATIP start of lead out: 336601 (74:50/01)
Disk type: Short strategy type (Phthalocyanine or similar)
Manuf. index: 20
Manufacturer: Princo Corporation
Blocks total: 336601 Blocks current: 336601 Blocks remaining: 4323
RBlocks total: 346489 RBlocks current: 346489 RBlocks remaining: 14211
Starting to write CD/DVD at speed 12 in real TAO mode for single
session.
Last chance to quit, starting real write 0 seconds. Operation
starts.
Waiting for reader process to fill input buffer ... input buffer ready.
Performing OPC...
Starting new track at sector: 0
Track 01: 648 of 648 MB written (fifo 100%) [buf 99%] 12.1x.
Track 01: Total bytes read/written: 680501248/680501248 (332276
sectors).
Writing time: 400.168s
Average write speed 11.9x.
Min drive buffer fill was 99%
Fixating...
Fixating time: 22.958s
cdrecord: fifo had 10719 puts and 10719 gets.
cdrecord: fifo was 0 times empty and 10592 times full, min fill was 93%.

Tra le informazioni di maggiore importanza c'è l'ultima riga che informa se la coda FIFO è sempre vuota. Se questo numero è sempre basso o si abbassa durante il processo, è necessario chiudere le applicazioni che occupano troppa CPU durante la masterizzazione.

Conclusioni


Molte persone, per pigrizia, tendono a snobbare i software senza interfaccia grafica. C'è da dire che i CDRTools sono dei programmi potentissimi sui quali tutte le interfacce di masterizzazione presenti su linux si basano.
Inoltre, se usati su un PC vecchio, si può trasformarlo in stazione di masterizzazione sempre pronta ed evitare di aggiungere masterizzatori sulla macchina usata tutti i giorni.

lunedì 30 novembre 2009

TechnoRiver: creare codici a barre su windows

Per creare codici a barre esistono moltissimi plugin, software per qualsiasi sistema operativo.

Per windows la maggior parte dei software è shareware o in versione demo.

TechnoRiver è un piccolo plugin; una volta installato, se si apre wordpad o un qualsiasi altro software di gestione testi, è possibile andare nel menù Inserisci->Oggetto.

A questo punto nella lista degli oggetti troverete anche la voce "TechnoRiver Freebar component" come in figura.

Una volta selezionato potete scrivere il vostro codice in formato CODE39.

Semplice e veloce può essere una buona alternativa gratuita ad altri software di questo genere.

venerdì 27 novembre 2009

Arduino e lettore RFID ID-12 Innovations

Premessa: RFID

RFID significa Radio Frequency IDentification ed è un sistema di identificazione di oggetti, animali e persone.
Questo sistema richiede un lettore ed uno o più TAG (o transponder) che non sono altro che oggetti "montati" in qualche modo sull'oggetto da riconoscere.
Quando il TAG passa in prossimità del lettore invia un identificativo univoco (solitamente in formato esadecimale).
La portata di questo sistema è di pochi centimetri ma, grazie ad antenne, è possibile anche arrivare a distanza di qualche metro: tale caratteristica rende questa tecnologia particolarmente interessante.
Facciamo un paio di esempi per semplificare il tutto: un utilizzo classico può trovarsi in fabbrica.
Quando arrivano dei rotoli di metallo ci applico un tag rfid e lo registro. Tutte le volte che un rotolo di metallo esce dal magazzino passa sotto un lettore rfid che identifica l'uscita del rotolo stesso (non DI UN rotolo ma proprio DI QUEL rotolo...) aggiornando la quantità nel database...
Un altro esempio può essere un sistema di tibratura aziendale: all'ingresso dell'ufficio metto un lettore RFID e metto a disposizione di ciascun dipendente un badge che non è altro che un TAG RFID: quando il dipendente entra o esce passa il badge sul lettore che registra ingresso e uscita.
In questo articolo vedremo come montare un lettore RFID su arduino e inviare il segnale al computer. Questo esperimento è stato fatto in collaborazione con Enkel.

Componenti

Gli elementi che servono sono i seguenti:

  • Un arduino da usare come gestore di input ed output tra il lettore, il led ed il PC
  • Un modulo lettore RFID: io ho scelto l'Innovations ID-12
  • Un adattatore di piedinatura per il modulo necessario perchè l'ID-12 ha una piedinatura non compatibile per una breadboard.
  • Uno o più TAG a 125kHz a forma di badge, disco, portachiavi o altro.
  • Componentistica varia (led, buzzer, resistenze)

Procedimento

Prima di tutto occorre saldare il modulo ID-12 (di cui potete trovare il datasheet) sull'adattatore di piedinatura per renderlo compatibile con i fori della breadboard.
Successivamente bisogna collegare i piedini come l'immagine che segue. Alcuni esempi, compreso il datasheet, propone anche di utilizzare un BJT sul piedino del led in modo da amplificare il segnale.
Così facendo, oltre al LED disegnato in figura, è possibile anche inserire un buzzer che permette, nel momento in cui si avvicina il TAG, di segnalare il recepimento della informazione sia in modo visivo (LED), sia in modo sonoro (BUZZ).

Usando una foto effettuata da noi:


La cosa più interessante è stato il codice utilizzato. Abbiamo usato lo sketch per arduino in questa pagina: http://www.arduino.cc/playground/Code/ID12.
Lo riporto di seguito per completezza:

// RFID reader ID-12 for Arduino
// Based on code by BARRAGAN
// and code from HC Gilje - http://hcgilje.wordpress.com/resources/rfid_id12_tagreader/
// Modified for Arudino by djmatic
// Modified for ID-12 and checksum by Martijn The - http://www.martijnthe.nl/
//
// Use the drawings from HC Gilje to wire up the ID-12.
// Remark: disconnect the rx serial wire to the ID-12 when uploading the sketch


void setup() {
Serial.begin(9600); // connect to the serial port
}

void loop () {
byte i = 0;
byte val = 0;
byte code[6];
byte checksum = 0;
byte bytesread = 0;
byte tempbyte = 0;

if(Serial.available() > 0) {
if((val = Serial.read()) == 2) { // check for header
bytesread = 0;
while (bytesread < 12) { // read 10 digit code + 2 digit checksum
if( Serial.available() > 0) {
val = Serial.read();
if((val == 0x0D)||(val == 0x0A)||(val == 0x03)||(val == 0x02)) { // if header or stop bytes before the 10 digit reading
break; // stop reading
}

// Do Ascii/Hex conversion:
if ((val >= '0') && (val <= '9')) {
val = val - '0';
} else if ((val >= 'A') && (val <= 'F')) {
val = 10 + val - 'A';
}

// Every two hex-digits, add byte to code:
if (bytesread & 1 == 1) {
// make some space for this hex-digit by
// shifting the previous hex-digit with 4 bits to the left:
code[bytesread >> 1] = (val | (tempbyte << 4));

if (bytesread >> 1 != 5) { // If we're at the checksum byte,
checksum ^= code[bytesread >> 1]; // Calculate the checksum... (XOR)
};
} else {
tempbyte = val; // Store the first hex digit first...
};

bytesread++; // ready to read next digit
}
}

// Output to Serial:

if (bytesread == 12) { // if 12 digit read is complete
Serial.print("5-byte code: ");
for (i=0; i<5; i++) {
if (code[i] < 16) Serial.print("0");
Serial.print(code[i], HEX);
Serial.print(" ");
}
Serial.println();

Serial.print("Checksum: ");
Serial.print(code[5], HEX);
Serial.println(code[5] == checksum ? " -- passed." : " -- error.");
Serial.println();
}

bytesread = 0;
}
}
}

L'ouput di questo sketch, passando sopra i vari TAG è stato il seguente:

5-byte code: 01 06 8E 2C 95
Checksum: 30 -- passed.
5-byte code: 01 07 84 6B 3F
Checksum: D6 -- passed.
5-byte code: 01 06 8E 1E DE
Checksum: 49 -- passed.
5-byte code: 01 06 8E 2C 95
Checksum: 30 -- passed.


E per chiudere, una foto con birra sullo sfondo e i TAG in primo piano:

mercoledì 25 novembre 2009

Mouse See&Touch

Premessa

Oggi si parla molto di Software Opensource. Con questo termine si intendono programmi liberamente distribuiti ai quali viene allegato il codice sorgente.
In questo modo ogni persona che conosce adeguatamente il linguaggio con il quale quel software è stato scritto, può modificare, migliorare, plasmare il software (scaricato da internet o acquistato dal fornitore) rispetto i propri gusti ed esigenze. Anche wikipedia, parlando di open source fa riferimento solo al software e mai all'hardware.
In questi ultimi anni, però, la comunità si sta muovendo anche nella direzione del hardware open source. In tal caso il produttore, oltre a vendere l'hardware prodotto mette online o fornisce su supporto magnetico, gli schemi per produrre tale hardware in modo del tutto trasparente. In questo modo, se una persona possiede le adeguate conoscenze, può replicare l'oggetto e crearselo "in casa".
Un esempio di questo è la scheda Arduino, prodotto tutto italiano del quale andare fieri: esso è acquistabile online ma si può autocostruire da zero scaricando gli schemi elettronici messi a disposizione sul sito.
Tralascio in questa sede qualsiasi considerazione su questo modello di business che porterebbe il post in una direzione non desiderata e mi limiterò a parlarvi del Mouse See&Touch.

See&Touch: mouse open source per disabili

Il mouse See&Touch significa letteralmente Guarda e Tocca.
L'esigenza che cerca di soddisfare è quella di alcune persone affette da una forma di deficienza motoria che impedisce loro di effettuare movimenti con il mouse di tipo laterale.
Costoro, infatti, riescono solo a effettuare movimenti verticali con la propria mano e, talvolta, senza nemmeno riuscire a dosare la forza.
Per queste persone due ragazzi di Torino, Giovanni Di Mingo e Bruno Benente, hanno progettato e costruito questo mouse.
La richiesta iniziale era stata fatta da Unisinf (unità di soccorso informatico) al GlugTo (Linux User Group di Torino).
Giovanni Di Mingo, socio del GlugTo, ha iniziato a progettare e costruire il mouse See&Touch, rilasciandolo come progetto open source su SourceForge:
http://sourceforge.net/projects/seetouch/
Unisinf e Datarc hanno annunciato in piu' occasioni che il progetto Mouse See&Touch e' open source, come risulta dai seguenti link:
Per chi volesse provarlo già montato e funzionante senza spenderci del tempo sopra... può pensare di acquistarlo presso questo link.
L'autore ve ne sarà grato e voi avreste un'alternativa opensource ad altre tipologie di mouse che potete modificare a vostro piacimento:
http://stores.shop.ebay.it/openhardwaresoftwaresolutions

martedì 17 novembre 2009

Tiddlywiki: un wiki semplicissimo da usare

Premessa

Un wiki è un sistema di condivisione formidabile che permette a più utenti di modificare le pagine direttamente su web senza programmi esterni, senza dover installare software ma interagendo direttamente con il nostro browser. Esistono diversi esempi di wiki su internet ma, a titolo di esempio, basti citare wikipedia la più famosa enciclopedia online redatta completamente da volontari in tutti il mondo e in diverse lingue grazie al wiki.
La maggior parte dei wiki sebbene del tutto trasparente per l'utente e facile da usare (come la struttura usata da wikipedia denominata mediawiki), richiedono l'installazione di software su un server di diversi software quali un webserver (solitamente apache), un sql server (solitamente Mysql) ed un linguaggio che interpreti le informazioni ed i contenuti (solitamente PHP) restituendo una pagina facilmente fruibile dall'utente.

Tiddlywiki: facilità d'uso prima di tutto

Tiddlywiki, a differenza degli altri strumenti che permettono di creare dei wiki, sfrutta una tecnologia decisamente più semplice.
In parole povere, l'utente deve semplicemente scaricare il file,
aprirlo con il browser e iniziare ad usarlo. Punto. I suoi punti di forza sono che non
è necessaria alcuna installazione, la possibilità di utilizzo è agevole con qualsiasi sistema operativo (Linux, Mac, Windows) e qualsiasi browser (Firefox, Camino, Explorer) e soprattutto, estrema portabilità: si può infatti mettere il file su una chiavetta e portarsela in giro sempre con sè.
Ovviamente, per contro, questo wiki ha un uso prettamente personale o, comunque, non permette l'aggiornamento da parte di troppi utenti contemporaneamente. La sua pretesa, comunque, non va certo in questa direzione.
Andando sul tecnico si può dire che gestisce tutti i contenuti in un unico file html ed il motore che permette la modifica, l'aggiornamento, l'aggiunta e la visualizzazione dei contenuti è una serie di javascript che vengono automaticamente caricati sul browser quando apro il file.

Opzioni, configurazioni, informazioni

Il sito principale è http://www.tiddlywiki.com/. Da qui, premendo il link download, si può scaricare il file.
Se si vuole avere una panoramica dei comandi e della sintassi da usare, è possibile fare riferimento a questa pagina http://tiddlywiki.org/wiki/TiddlyWiki_Markup.
TiddlyWiki mette a disposizione anche dei plugin quali la creazione di feed RSS e altre amenità; non avendone ancora testati, però, non mi esprimo in merito ma se qualche lettore ne avesse provati può scrivermelo volentieri.

venerdì 13 novembre 2009

Presenza al Dorkbot Milano 19/11/2009

Il dorkbot è una manifestazione con cadenza mensile che si propone di fare incontrare persone che "lavorano" con l'elettricità in modo più o meno creativa. Artisti, designer, studenti, hobbisti: tutti possono essere i fruitori o i presentatori in questi incontri se maneggiano l'elettricità...

Il 19 settembre del 2009 parteciperò come oratore: se qualcuno dovesse trovarsi da quelle parti (circolo ARCI Metisagge vicino Porta Garibaldi a Milano) imposterò insieme ad un amico (Enkel) un talk sull'uso di Arduino come programmatore di processori AVR. In passato avevo già parlato di questo argomento in questo blog.

sabato 24 ottobre 2009

Linux Day 2009 Torino

Sabato 24 ottobre 2009 ci sarà il Linux Day in tutta Italia.
Il Linux Day è una giornata dedicata a Linux in cui le associazioni che sponsorizzano questo sistema operativo (i LuG), organizzano eventi a tema ed installazioni gratuite sui computer degli utenti che lo richiedono.

A Torino ci sono due associazioni e questi sono i loro siti di riferimento con informazioni sul tema:
Questo anno terrò un talk tecnico su Arduino e Linux presso Cascina Rocca Franca.
In particolare farò vedere come è possibile hackerare il Linksys NSLU2 come mostrato in un mio precedente articolo su questo blog, installando una debian a bordo.
Successivamente mostrerò come Linux possa interfacciarsi con Arduino per creare anche delle applicazioni a livello aziendale.

Questa è la presentazione del mio talk.

martedì 22 settembre 2009

Blat: mail automatiche da Windows

Premessa

Ci sono delle situazioni in cui si desidera l'invio di mail in maniera automatica.
In ambiente Linux e MacOSX questa è una operazione molto semplice grazie al comando mail.
In ambiente Windows, al contrario, non esistono dei programmi all'uopo integrati nel sistema.
Questa esigenza è particolarmente sentita da coloro che amministrano server o macchine remote con windows delle quali, magari, si vuol conoscere periodicamente lo stato di salute o informazioni di varia natura.
Un'altra situazione può essere l'utente che vuole spedire delle newsletter a coloro che sono abbonati al proprio sito web etc etc etc.
In questo articolo vi parlerò di Blat, un ottimo programmino che risponde a queste esigenze in ambiente Windows.

Blat: invio di mail da Prompt MsDOS

Blat è una piccola utility gratuita che funziona da linea di comando e consente di inviare e-mail singole o a più utenti contemporaneamente (tipo newsletter).
Gli autori informano che è possibile usarla anche per fare dello SPAM ma, in questo caso, è necessario pagare 10.000$ agli autori stessi.
Ad un messaggio creato con Blat si possono allegare testi o file in generale con codifica qualsiasi ma non è finita qui.
E' anche possibile mandare mail a server NNTP (server newsgroup) ed in generale qualsiasi tipo di mail siamo abituati a spedire con il nostro programma di posta, blat può inviarlo da linea di comando.
Con delle discrete capacità di programmazione lo si può facilmente integrare all'interno di script che elaborino dei dati ed inviino un report a vari destinatari e qualsiasi cosa la fantasia possa suggerire.

Download e installazione di BLAT

Il sito Web principale di questo
tool è: http://www.blat.net

Da qui è possibile scaricarlo ed installarlo tenendo conto che con poco meno di 100kb avrete un programma di invio mail pienamente funzionante.
Per l'installazione è sufficiente copiare l'esegubile nella cartella
C:\Windows
oppure C:\Windows\System32

Prima di inviare mail con Blat, però, è necessario procedere con una breve configurazione tramite il prompt dei comandi (si da per scontato che l'utente sappia aprire il prompt).
Tale configurazione consiste nell'informare il programma quale sia il Server SMTP di riferimento ed il nome
del mittente che apparirà a chi riceverà le future mail.
Per far ciò si può digitare un comando come segue:

blat -install mail.server.it prova@server.it

Dove mail.server.it è l'indirizzo del vostro server SMTP e prova@server.it
è l'indirizzo del mittente delle e-mail.
Se tutto è andato a buon fine, Blat risponderà che il server SMTP è stato impostato.
Purtroppo queste informazioni di profilo saranno immagazzinate nel registro di Windows e questo implica che se non siete amministratori del sistema sarete interdetti da tali modifiche.

Spedire un'e-mail con Blat

A questo punto tutto è pronto.
Possiamo cimentarci con il primo invio di mail:

blat - -to altraprova@gmail.it -subject "Prova" -body "Hello World"

Questa linea di comando è composta da quattro parametri:

  • (-) il trattino iniziale comunica al programma che il corpo del messaggio non sarà un file di testo ma seguirà una opzione -body.
  • -to comunica l'indirizzo mail del destinatario
  • -subject specifica l'oggetto della mail
  • -body da usare in concomitanza con il trattino iniziale: specifica il corpo del messaggio

Se invece del trattino iniziale si desidera scrivere un messaggio su un file di testo e spedirlo come corpo della mail, possiamo variare il comando precedente come segue:

blat prova.txt -to altraprova@gmail.it -subject "Prova"

In questo caso abbiamo specificato che il corpo dell'e-mail dovrà essere
preso dal file prova.txt
Oltre alle opzioni specificate in questo breve articolo ve ne sono molte altre disponibili. Come sempre accade per questo tipo di utility, esiste una opzione di help che ci viene in aiuto:

blat /?

Come detto precedentemente questo strumento è utilissimo soprattutto se inserito nel contesto di uno script.
Sicuramente colma una lacuna, secondo me enorme, del sistema operativo in questione che non prevede uno strumento integrato che risponda a questa esigenza.

Spegnimento automatico di Windows

Premessa

Gli utenti che utilizzano il sistema operativo Microsoft Windows e desiderano spegnere la propria macchina, devono cliccare sul pulsante Start->Chiudi Sessione e poi scegliere Arresta il Sistema.
In alcune situazioni, però, può essere utile far spegnere il sistema in modo automatico e a una determinata ora.

Gli esempi di utilizzo sono molti.
Se inizi la masterizzazione di un DVD e stai per uscir di casa ma non vuoi lasciare il PC acceso al fine di terminare la masterizzazione, è possibile comandare al sistema di spegnersi magari dopo due ore.
Se siamo amministratori di rete e desideriamo che i PC si spengano ad una determinata ora, magari al termine dell'orario di ufficio, potremmo farlo.
Se, ancora, siamo abbonati ad un servizio internet che dopo una certa ora prevede una tariffazione maggiore, possiamo spegnere la macchina prima di tale ora.
E così via...

Il comando shutdown.exe

Il comando shutdown.exe è un programmino che permette di arrestare o riavviare il proprio PC o uno presente nella propria rete locale.
Il comando ha diverse opzioni.
Tali opzioni sono visualizzabili aprendo un Prompt dei Comandi di Windows e digitando:

    shutdown /?

con la successiva pressione del tasto invio.
Particolarmente interessante è il parametro -i che visualizza l'interfaccia grafica che rende interattivo l'arresto del sistema:


Script per spegnere il PC

La parte interessante è la possibilità di creare uno script che permetta di spegnere o riavviare la macchina e successivamente programmare un lancio dello stesso a determinati orari.

Per creare lo script è sufficiente creare un file con il Blocco Note ed incollare l'istruzione seguente salvando il file con il nome spegnimento.bat sul desktop.

shutdown -s -t 30 -f

Questo comando, spegnerà il PC tramite l'opzione -s; lo farà dopo 30 secondi tramite l'opzione -t 30 e forza l'uscita da qualsiasi applicazione tramite l'opzione -f.
Se si fa doppio click sul file appena salvato il computer comincerà a fare un conto alla rovescia di 30 secondi per poi spegnere il computer.
La schermata che apparirà sarà la seguente:


Se si riesce ad aprire il prompt di MSDOS prima che il conto alla rovescia arrivi a zero, è possibile fermarlo digitando il comando:

shutdown -a

dove l'opzione -a arresta la procedura.


Schedulare / Pianificare lo spegnimento

A questo punto tutto è pronto per programmare tale spegnimento.
In gergo di parla di "schedulare" ovvero pianificare qualche azione.
Per fare ciò basta utilizzare le Operazioni Pianificate.
Esso è uno "Scheduler" simile al CRON dell'ambiente unix ed è rappresentata da un'interfaccia grafica che permette di pianificare certe attività sul PC in modo che partano automaticamente senza la presenza dell'utente a tempi e date prestabilite.
Essa viene usata anche da software evoluti come antivirus che effettuano scansioni automaticamente o deframmentazioni che eseguono la scansione del sistema ad orari dove si presume che il PC sia poco usato.


Questa finestra si può aprire tramite il Pannello di controllo e facendo doppio click su "Operazioni Pianificate" .
Si faccia doppio click su "Aggiungi operazione Pianificata"
A questo punto partirà una autocomposizione guidata molto semplice composta da diversi passaggi; si può passare allo step successivo premendo avanti.
Verrà richiesto il file da usare e la frequenza.
Si scelga lo script creato nel paragrafo precedente e, come frequenza, ogni giorno.

A questo punto basta aspettare l'orario predefinito e si vedrà la schermata presentata precedentemente e quindi la chiusura del sistema.

lunedì 14 settembre 2009

Gresistor: resistenze su Linux

Le resistenze

Nell'utilizzo di componenti
elettronici come quelli legati al mondo
Arduino, si utilizzano spesso delle resistenze.
Il valore di una resistenza è definita tipicamente da quattro o cinque bande colorate (di cui le prime tre sempre presenti) che, tramite un codice colori, definiscono il valore del componente.
Le prime due bande definiscono il valore numerico:


La terza banda rappresenta il moltiplicatore. Ipotizzando un valore numerico di 22, se il moltiplicatore è 1 il componente misura 22 ohm, se il moltiplicatore è 10 la misura di un multimetro sarà 220 ohm e così via.


La banda successiva identifica la tolleranza. Essa non è sempre definita essendo, quindi opzionale.
Se la tolleranza è +- 10% vuol dire che il valore della resistenza varia in tale intervallo:


La temperatura di riferimento è una banda che si trova soltanto nei componenti di precisione.
La cito di seguito ma si trova davvero di rado nell'elettronica amatoriale:


Un esempio di una resistenza
con le bande di riferimento è visibile di seguito:






Gresistor: software per resistenze su Linux

Per coloro che non sono molto pratici, il calcolo del valore della resistenza sotto mano non è sempre immediato.
Esistono diversi tool su internet che aiutano in questi casi ma non sempre la connessione al web è disponibile.
Se utilizzate Linux, dunque, consiglio
gresistor, un semplicissimo software che soddisfa l'esigenza di conoscere quanto vale una resistenza in una pratica finestra.
Dopo averlo scaricato e scompattato è necessario diventare utente root.
Da shell basta lanciare i seguenti comandi:

python setup build
python setup install


A questo punto il software è disponibile dal menù Accessori → Gresistor e di seguito potete vederlo all'opera.

lunedì 7 settembre 2009

Aprire allegati Winmail.dat

Premessa

Due giorni fa ho ricevuto una mail sul mio client di posta Thunderbird che conteneva un allegato con nome winmail.dat.
Dato che stavo utilizzando Linux e la prima parte del nome dell'allegato ("win...") suggeriva l'appartenenza ad un altro sistema operativo, ho deciso di girare la mail sul PC dell'ufficio dove uso questo sistema per leggerla.
Tuttavia, questa mattina, nemmeno la versione di Thunderbird per Windows è stato in grado di leggere questo tipo di allegato.
Ho quindi fatto qualche ricerca e in questo articolo spiegherò come poter leggere file winmail.dat sul proprio computer.

Cosa è winmail.dat

La notizia confortante è che non si tratta di un virus.
Solitamente è una mail spedita da un utente che utilizza Outlook e/o usa un server Exchange per la posta.
La mail inviate con questi sistemi, non essendo proprio ligi al rispetto degli standard, se contengono formattazioni del testo come "grassetto", "corsivo", "sottolineatura" o simili, non vengono riconosciuti dai client di mail che non aderiscono alle loro specifiche.
Infatti Microsoft definisce di
default l'invio delle mail RTFcon un proprio formato chiamato
TNEF (Transport Neutral Encapsulation Format).
In
definitiva il destinatario o utilizza Outlook oppure non riesce a visualizzare
correttamente questi file a meno di avere a sua volta un editor proprietario adatto alla lettura.

Per risolvere il problema si può agire in due modi.

Il destinatario può...:

scaricare un editor che eviti l'utilizzo di Outlook ma abiliti alla lettura di tali allegati. Vi cito, a titolo di esempio, i seguenti software:
Io ho preferito il secondo perchè oltre ad essere un software che funziona bene, l'autore è un italiano (Bruno Marotta).
Si può anche effettuare una donazione per supportare il software.


Il mittente, su sollecito del destinatario, può...:
modificare il formato di invio delle proprie mail (magari impostandolo in formato Html o testo semplice) operando su Outlook come segue:
  1. Scegliere Opzioni dal menu Strumenti.
  2. Nella scheda Formato posta, nel gruppo Formato messaggio,
    selezionare "HTML" o "Testo normale" nell'elenco "Scrivi il messaggio in
    questo formato
    ".
In Outlook 2007 invce c'è un menu ulteriore come in foto, in cui basta scegliere il formato "Testo normale".

venerdì 4 settembre 2009

NFS per condividere file tra macchine Linux

Premessa

Dopo aver installato Debian sul mio NSLU2, ho sentito l'esigenza di condividere una o più partizioni tra il mio PC con Ubuntu e l'NSLU2.
A questo scopo è possibile utilizzare il servizio NFS dato che la condivisione opera tra due macchine linux.

NB: Nel seguente esempio il mio server è l'NSLU2 all'indirizzo 192.168.1.100 mentre il mio desktop può avere un indirizzo tra 192.168.1.2 e 192.168.1.5 mentre il rounter ha indirizzo 192.168.1.1. Nella vostra rete gli esempi sono da adattare di conseguenza.



Lato Server (NSLU2)

Ebbene si, l'NSLU2 viene pensato come il server della situazione...
Si acceda come root da shell e prima di tutto si installino i servizi necessari:

apt-get install portmap nfs-kernel-server

Successivamente è necessario comunicare al NSLU2 quali sono le directory da far visualizzare all'esterno. Per questo si editi il file /etc/exports aggiungendo una o più righe a seconda di quante sono le directory da condividere. Si segua questa sintassi:

/home/nathanvi 192.168.1.2(rw,sync) 192.168.1.3(rw,sync) 192.168.1.4(rw,sync) 192.168.1.5(rw,sync)


dove /home/nathanvi è la directory da condividere, 192.168.1.2 è l'indirizzo IP con il quale condividere e quelle tra parentesi sono le opzioni molto ben documentate anche nel file stesso.
Ora è meglio dare uno sguardo al lato sicurezza ed in particolare andiamo a dire quali client possono e quali non possono accedere al NSLU2 su determinati servizi.
Per far questo editiamo il file /etc/hosts.allow e aggiungiamo la seguente riga al fondo:

portmap mountd nfsd statd lockd rquotad: 192.168.1.2, 192.168.1.3, 192.168.1.4, 192.168.1.5


e modifichiamo /etc/hosts.deny

portmap mountd nfsd statd lockd rquotad: ALL


per inibire l'accesso a tutti gli altri. Al posto di ALL si può mettere anche un singolo indirizzo IP.
Per rendere le modifiche operative, da shell diamo i seguenti comandi:

/etc/init.d/portmap restart
/etc/init.d/nfs-kernel-server restart


Lato Client (il PC Desktop con Linux)

A questo punto ci possiamo concentrare sul nostro desktop.
Installiamo i servizi come abbiamo fatto sul server. Anche qui operiamo come root da shell:

apt-get install portmap nfs-common


E, sempre come abbiamo fatto sul server, spendiamo due parole sulla sicurezza.
Modifichiamo il file /etc/hosts.allow

portmap: 192.168.1.100


e il file /etc/hosts.deny

portmap: ALL


Creiamo una directory dove montare la nostra partizione remota:

mkdir /home/nathanvi_su_NSLU2


e montiamo la directory:

mount -t nfs 192.168.1.100:/home/nathanvi /home/nathanvi_su_NSLU2


A questo punto se visualizzate il contenuto della directory appena creata, dovrebbe contenere ciò che c'è in /home/nathanvi sul NSL2...
Se si vuole che ad ogni riavvio, la directory sia montata in automatico possiamo modificare il file /etc/fstab aggiungendo la riga:

192.168.1.100:/home/nathanvi /home/nathanvi_NSLU2 nfs rw,hard,intr,noauto,exec,suid 0 0

Le varie opzioni si riferiscono a comportamenti differenti. In particolare:
  • defaults Usa le impostazioni di default, ovvero rw,suid,dev,exec,auto,nouser e async

  • ro Monta la condivisione in sola lettura (da usare al posto di rw)

  • noauto Evita di montare automaticamente il filesystem all’avvio. Utile se la condivisione non è sempre disponibile

  • user Permette di montare la condivisione anche da utente normale

  • exec Permette di mantenere i privilegi per i file eseguibili

  • suid Permette di mantenere il suid

  • dev Dispositivi a blocchi

Con questo è tutto.
Prima di terminare ecco l'output sul mio desktop del comando df -h; si noti l'ultima riga....:

# df -h
File system Dimens. Usati Disp. Uso% Montato su
/dev/sda2 24G 5,8G 17G 27% /
varrun 1,5G 140K 1,5G 1% /var/run
varlock 1,5G 0 1,5G 0% /var/lock
udev 1,5G 52K 1,5G 1% /dev
devshm 1,5G 168K 1,5G 1% /dev/shm
lrm 1,5G 39M 1,5G 3% /lib/modules/2.6.24-19-generic/volatile
/dev/sda6 218G 207G 14M 100% /home
192.168.1.100:/home/nathanvi 100G 188M 95G 1% /home/nathanvi_NSLU2

Tasto Power in NSLU2 con Debian

Dopo l'installazione di Debian sul NSLU2, il tasto "Power" serve per accendere l'apparecchio ma se questo è acceso e lo si preme, invece di spegnersi si riavvia.
Per ripristinare la sua funzione e fare in modo che premendo il tasto power questo si spenga, si editi:
/etc/inittab
e cambiare la riga
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

in
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now

dove è stato cambiato la "r" di reboot in "h" di halt

Unixstamp: Ora e minuti in Unix e Linux

Unixstamp: Ora e minuti in Unix e Linux

Premessa

Lavorando con il CMS Tikiwiki, ho notato che le date e ora sul server MySQL sono memorizzate in formato timestamp. Non sapendo cosa fosse mi sono informato e in questo articolo vado a spiegarlo.

Cosa è il timestamp Unix

Il timestamp è un numero intero che descrive una data comprensiva di ore, minuti, secondi in secondi a partire dallo Unix Time Epoque che corrisponde alla mezzanotte del primo gennario del 1970 (00:00:00 UTC 1 gennaio 1970).

Ogni giorno consta di 86400 secondi...
Per questo motivo, l'algoritmo di calcolo è il seguente:
5 giorni 20 ore 8 minuti e 5 secondi corrisponde a
((5*86400)+(20*3600)+(8*60)+5) = 504485

Il motivo per il quale si utulizza il TimeStamp è che un numero intero è molto più semplice da gestire.
Un errore che facevo in precenza, era convertire le date/ore da numero intero a formato leggibile e poi fare i calcoli.
Al contrario consiglio di effettuare i calcoli con il numero intero e poi fare la conversione a valle.

L'algoritmo finale da usare è il seguente:
  • Supponiamo di essere alle 16.42.28 del 4/9/2009
  • La differenza in giorni tra 4/9/2009 e 1/1/1970 = 14491
  • Il risultato finale sarà: 14491*86400+16*3600+42*60+28 = 1252082548

Viceversa l'algoritmo inverso sarà:
  • Supponiamo che l'ora e data corrente sia 1252082548
  • 1252082548/86400 = 14491.6961574074 ==> La parte intera è il numero di giorni
    • Giorni: 14491
  • (14491.6961574074 - 14491)*86400/3600 = 16.7077777777760 ==> La parte intera sono le ore
    • Ore: 16
  • (16.7077777777760 - 16)*3600/60 = 42.46666667 ==> La parte intera sono i minuti
    • Minuti: 42
  • (42.46666667-42)*60 = 28 ==> Ovvero i secondi
    • Secondi: 28

Anche se tutto questo può sembrare complicato, al contrario è un metodo che spesso velocizza di molto i calcoli in fase di programmazione. Ogni calcolo si fa con il TimeStamp e si converte solo alla fine quando si vuole rendere disponibile il risultato all'utente finale.

giovedì 3 settembre 2009

PHP5 su server Lighttpd

PHP5 su server Lighttpd

Premessa

Lavorando sul mio NSLU2 dopo l'hackeraggio effettuato e dopo averci installato debian al posto dell'originario firmware, ho sentito la necessità di installare software leggero data la scarsa disponibilità di memoria ram e frequenza di clock...
Il primo servizio che ho voluto installare è stato il server web con un bel CMS.
Le mie applicazioni web solitamente si avvalgono della seguente tecnologia:
Su una macchina simile ho deciso che un server sql non è necessario; per questo il mio CMS preferito non è utilizzabile e al suo posto ho cercato un CMS che memorizzi le informazioni su files; anche il blasonato Apache, sulle qualità del quale non vi sono commenti da fare, risultava davvero un po', pesante...
Alla fine quindi mi sono orientato sulla seguente tecnologia:
L'ultimo problemino che ho incontrato è stato far funzionare PHP con Lighttpd. Bisogna, infatti abilitare il supporto CGI. Il risultato lo potete ammirare su http://vittoriozuccala.homelinux.net : digitando questo URL arriverete direttamente in casa mia e in particolare sul mio NSLU2 ;-)
In questo articolo spiegerò come ottenere questo risultato.

Lighttpd, CGI e PHP5

Di seguito presumo che il lettore abbia utilizzato Debian o Ubuntu. Su diverse distribuzioni Linux i comandi potrebbero cambiare. Si presume anche che l'indirizzo del proprio server sia 192.168.1.100. I riferimenti, ovviamente, cambiano sul vostro sistema.
Prima di tutto si installi Lighttpd:
apt-get install lighttpd
A questo punto dovreste poter accedere al server da un altro computer digitando sul vostro browser
http://192.168.1.100
Ciò che dovreste vedere è una schermata simile a questa:


Successivamente si installi php5:
apt-get install php5-cgi
Ora si modifichi il file di configurazione /etc/php5/cgi/php.ini dove bisogna aggiungere, anche al fondo del file:
[...]
cgi.fix_pathinfo = 1

A questo punto è necessario modificare il file di configurazione /etc/lighttpd/lighttpd.conf ed aggiungere "mod_fastcgi", al blocco server.modules:
[...]
server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_fastcgi",
# "mod_rewrite",
# "mod_redirect",
# "mod_status",
# "mod_evhost",
# "mod_compress",
# "mod_usertrack",
# "mod_rrdtool",
# "mod_webdav",

ed alla fine del file si aggiunga il seguente blocco:
[...]
fastcgi.server = (
".php" => ((
"bin-path" => "/usr/bin/php5-cgi",
"socket" => "/tmp/php.socket"
)))

A questo punto tutto è pronto e si può riavviare il server web:
/etc/init.d/lighttpd restart

Ora il nostro sistema è pronto per ospitare dokuwiki!!
Se volete vedere questo è l'indirizzo del mio NSLU2 casalingo: http://vittoriozuccala.homelinux.net.
Buon lavoro.



mercoledì 2 settembre 2009

Hackerare Linksys NSLU2 installando D...

Hackerare Linksys NSLU2 installando Debian

Premessa

Il Linksys NSLU2, già recensito in queste pagine, esce dalla fabbrica con un sistema operativo pre installato in fase di fabbricazione.
Il software di gestione consiste in una mini distribuzione Linux studiata ad hoc che mette a disposizione dell'utente una comoda e semplice interfaccia web per la gestione dell'hardware e degli accessi ad esso, un servizio ssh e samba per lo scambio dati e i backup di macchine Windows.
Nella sua semplicità è uno strumento utilissimo in un ufficio o nella propria casa che permette di avere una grande disponibilità di memoria di massa all'interno della propria rete.
Per contro il sistema, con queste premesse, risulta poco duttile; l'NSLU2 nato come gestore di memorie di massa morirà con questo compito.
Fortunatamente la comunità di sviluppatori il cui sito di riferimento è http://www.nslu2-linux.org/ ha reso possibile l'installazione di una distribuzione completa Linux su questo gioiellino.

Distribuzioni Linux

Le distribuzioni installabili sul NSLU2 sono diverse e devono tenere conto del processore ARM del quale questo oggetto è provvisto. In particolare:
  • Unslung: una distribuzione ad hoc per questo sistema.
  • Debian: non ha bisogno di presentazioni; questa è la versione per l'NSLU2.
  • OpenWrt: comunità molto in fermento che sviluppa questa distro ad hoc.
  • SlugOs: distro ad hoc.

Personalmente ritengo che, su un sistema simile, una distribuzione valga l'altra. Tuttavia, essendo amante di Debian ed Ubuntu, ho deciso di installare questa distribuzione.
In questo momento è disponibile Debian 5.0 nome in codice Lenny anche per NSLU2.

Debian su NSLU2

Per l'installazione di Debian su questo apparecchio ho seguito la mini guida sul sito cyrius che ripropongo di seguito tradotta e con alcuni adattamenti.

0-Attenzione

Ci sono alcune cose che voglio premettere e che è bene il lettore tenga ben a mente prima di continuare:
  • In più punti della guida viene espressamente detto di non premere il usare l'EraseAll Tool per installare il sistema operativo perchè questo potrebbe comportare seri danni all'apparecchio; tenetene conto dunque.
  • In qualsiasi momento, se l'installazione non dovesse andare a buon fine, esiste una utility (upslug) che vi permette di ripristinare il sistema operativo originario...
  • L'installazione del sistema, data la bassa RAM e frequenza di clock richiede circa 4 ore. Per questo motivo non fatelo la sera prima di andare a letto. Non è una operazione breve.
  • Si da per scontato che il lettore abbia installato un sistema operativo Linux o quanto meno conosca il concetto di partizionamento dei dischi.

1- Scaricare l'immagine
Fatte le dovute premesse, il primo passaggio, ovviamente, è scaricare l'immagine del sistema operativo. Il sito avverte che esistono due immagini. La prima ufficiale e scaricabile direttamente dal sito Debian e la seconda modificata. La differenza sta nei driver della scheda di rete. In quella ufficiale bisogna aggiungerli a parte per cui, personalmente, ho optato per scaricare la versione già patchata da qui.

2- Impostare i valori di rete sul NSLU

Un punto fondamentale è l'impostazione dei parametri di rete sul NSLU2 prima di iniziare tramite l'interfaccia web originaria. Collegatevi dunque al NSLU2 via web e nel menù "Administration"->"Setup" decidete:
  • indirizzo IP,
  • DNS,
  • netmask,
  • gateway.


3- Upgrade del sistema
Una volta scaricata e scompattata l'immagine, si avrà sul proprio PC, un file con estensione "bin".
Si vada nell'interfaccia web al menù "Administration"->"Upgrade", si selezioni il file e si prema il pulsante "Upgrade".


Dopo i vari messaggi di conferma, si aspettino 5 minuti circa dopodichè il sistema si riavvia automaticamente.
Bisogna avere un po' di pazienza in questa fase; quando si sentirà l'emissione di tre bip consecutivi, il sistema è pronto per la connessione via SSH.

4-Avvio dell'installer
A questo punto ci possiamo collegare al nuovo firmware tramite una shell di linux o un terminale putty tramite il comando
ssh installer@192.168.1.77
dove 192.168.1.77 è l'IP del NSLU. Per la cronaca quello è l'ip con il quale esce dalla fabbrica e vi troverete se non lo avere modificato al passo 1.


Segue una fase di installazione classica della distribuzione.
Il passaggio più delicato è il partizionamento del disco ma si assume che il lettore conosca questi principi.
Per quanto riguarda il passaggio della scelta dei moduli, quelli necessario al funzionamento dell'apparecchio sono già installati di default. Si può tranquillamente saltare questo passaggio e nel caso si avesse necessità di qualche modulo particolare lo si può aggiungere in un secondo momento.


Al termine di questa operazione piuttosto lunga, il sistema conferma l'avvenuta installazione ed il sistema è pronto per il reboot.
La guida consiglia l'installazione di ntpdate per avere l'orario sempre aggiornato...

Per ultimo, in caso di problemi (io non ne ho incontrati e devo dire che è stato molto più semplice di quanto pensassi all'inizio) si può consultare la pagina del troubleshooting.
A questo punto avete un sistema Debian da plasmare a vostro piacimento con file di configurazione, apt-get e quant'altro.
L'unica e ultima avvertenza che posso dare in questo articolo è di tenere sempre conto della scarsa memoria del nostro NSLU2; piccole avvertenze quali disattivare i servizi inutili, installare server web o ftp leggeri al posto dei più famosi e blasonati, sono scelte che alla lunga pagano e danno al sistema maggiore snellezza.

Plugin per Thunderbird


Premessa

Thunderbird è un client di posta duttile e molto funzionale. Esso è multipiattaforma e "gira" su ambiente Windows, Linux, FreeBSD e MacOSX.
Gli utenti che lavorano con diversi sistemi operativi, dunque, possono utilizzare il medesimo programma per gestire la posta elettronica e se condividono una partizione sullo stesso computer possono anche condividere gli stessi dati con sistemi differenti.
E' possibile estendere le funzionalità di Thunderbird con plugin aggiuntivi scaricabili dal sito apposito come descritto su queste pagine per Firefox.

I plugin/addon

In questo articolo vedremo alcuni plugin, quelli che personalmente ritengo tra i più validi. Vi invito a segnalarmi quelli che preferite voi.
Thunderbird:
  • Auto Zip Attachments
    State componendo un messaggio. Questo contiene uno o più allegati e vi viene il dubbio che la dimensione complessiva sia onerosa. Premendo un pulsante, messo a disposizione da questo plugin, i vostri allegati verranno automaticamente compressi. E' un plugin veramente utile.
  • Enigmail
    Solitamente è uno dei plugin più consigliati dagli utenti. Permette di criptare le mail in uscita e decriptare le mail in ingresso di altri utenti con i quali si è scambiata la chiave pubblica in modo del tutto trasparente per l'utente. Assolutamente da provare per la privacy delle proprie mail.
  • Lightning
    Aggiunge la funzionalità di calendario a Thunderbird. In questo modo il programma diventa veramente completo. Questo strumento permette di importare/esportare in CSV e iCal.
  • Provider per Google Calendar
    Questo plugin, associato con il precedente Lightning, è un vero portento. Mentre il precedente mette a disposizione dell'utente un calendario, questo permette l'interfacciamento a Google Calendar. Ciò vuol dire che potete aggiungere, cancellare, modificare i vostri impegni e questi subiranno le modifiche direttamente sul google calendar. Il vantaggio è che se se siete in giro, non vi ricordate cosa dovete fare mercoledì della prossima settimana, potete collegarvi al vostro google calendar ed avere tutti gli impegni sotto mano. A me ha cambiato il modo di lavorare.
  • MinimizeToTray
    Sei in ufficio, leggi la posta ma vuoi che l'icona non occupi spazio nella già affollata barra delle icone. Con questo plugin, quando si riduce ad icona la finestra del programma, questa sparisce e diventa una icona nella task bar vicino all'orologio di windows.
  • Mouse Gesture Redox
    E' un plugin utilissimo se si ha voglia di provarlo... Permette di associare ad alcuni movimenti del mouse delle azioni sul programma. Aprire un nuovo programma: click e trascinamento verso l'alto; Rispondere a un messaggio: click e trascinamento a sinistra.... Permette di risparmiare un bel po' di tempo.
  • Quote Colors
    Quando si instaura il botta/risposta con un'altra persona, il testo dei messaggi precedenti viene evidenziato con colori differenti grazie a questo plugin rendendo più leggibile il messaggio stesso.
  • Signature Switch
    Utile plugin se utilizzi Thunderbird con differenti account. Puoi definire una firma professionale, una spiritosa, una per amici e così via. Quando componi un messaggio puoi decidere, con un pulsante, quale di queste inserire nel corpo del messaggio.
  • SyncMab
    Se volete la vostra rubrica (address book) sempre sincronizzata su postazioni differenti, dovete copiarla tutti i giorni su chiavetta e portarvela dietro. Dopo un po' di tempo non vi ricorderete più se quella aggiornata è quella sulla chiavetta o quella sul portatile... Con questo plugin, ogni volta che aprite e chiudete Thunderbird, il vostro address book viene copiato dove desiderate. SyncMab si avvale del protocollo FTP, HTTP (per l'utilizzo di un server WebDAV), HTTPS o copia su file.
  • Timestamp
    Durante la composizione di un messaggio, premendo un pulsante, appare nel corpo del testo la data ed ora corrente.
  • XNote
    Permette di aggiungere delle note ad un messaggio. Cliccando su esso, infatti, appare una finestrella colorata sulla quale è possibile scrivere. Utilissimo nella vita lavorativa.
  • Tag Toolbar
    Secondo me è uno di quei plugin che ti cambia il modo di lavorare e ragionare. Tag Toolbar sfrutta il concetto di Gmail nella gestione delle mail e spesso incompreso dai propri utenti o poco utilizzato. Esso infatti svincola il messaggio dal concetto di cartella e lo associa a quello di etichetta. Un messaggio, dunque, non sarà più spostato in una singola sotto cartella (che a distanza di tempo se non ricordi quale era avrai seri problemi a rintracciare) ma sarà associato ad una o più etichette.
    In questo modo un singolo messaggio lo potrai trovare sotto l'etichetta "Lavoro", "Riunioni", "Progetto A". Mentre un altro sotto "Famiglia", "Riunioni".
    Adesso tutti i miei messaggi stanno su una singola sotto cartella: "Messaggi Letti".

Conclusioni

Come detto in precedenza quindi, questo software si distingue per la sua duttilità e possibilità di essere espanso.
Aggiungo solo che i plugin maggiormente utilizzati e scaricati sono anche quelli che vengono inclusi nelle prossime versione come facenti parte del programma.
Segnalatemi i vosti e verranno pubblicati in queste pagine.

lunedì 31 agosto 2009

Pax Search Tab e Motore di ricerca

Cosa è e cosa offre

Pax.com è un motore di ricerca molto simile a Google come impostazione grafica...
Non conosco questo servizio perchè sono un amante di Google e di tutto ciò che questo colosso offre.
Tuttavia l'altro giorno, durante la navigazione, ho visto una caratteristica interessante in un sito.
Su una pagina web, infatti, era presente una SEARCH TAB tipo quella che vedete a sinistra in queste pagine con la scritta "Search".
Incuriosito ho voluto provarlasu questo blog e approdando alla pagina di creazione, dopo una breve registrazione e una velocissima procedura di creazione viene restituito del codice javascript da aggiungere nel html delle proprie pagine per avere una search tab personalizzata.

Un piccolo dettaglio che, a mio parere, contribuisce un pizzico a fare uscire il proprio sito dall'anonimato.

martedì 18 agosto 2009

GNU source highlight code syntax

Premessa

Scrivendo post su Blogger (la presente piattaforma di blogging) ho riscontrato la necessità di inserire codice di programmazione C++ o Perl o, all'occorrenza, di altri linguaggi, all'interno di articoli inerenti la piattaforma Arduino .
Blogger, purtroppo, non mette a disposizione strumenti di syntax highlight e quindi ho fatto qualche ricerca sul web per trovare un programma o una utility che rispondesse alle mie esigenze.
In questo articolo vi parlerò di GNU Source Highlight, un software che elabora un file con del codice di programmazione all'interno e genera un file che evidenzia il codice grazie al syntax highlight tramite TAG HTML.
In poche e semplici parole gestisce gli elementi costitutivi del linguaggio separando con colori differenti i commenti, i comandi, le inclusioni di librerie e via dicendo.
Questo processo rende estremamente più leggibile il codice e quindi più fruibile visivamente all'interno di un articolo su un blog o di un documento a corredo in generale.

Gnu Source HighiLight più in dettaglio

Gnu Source HighiLight è un software scritto da Lorenzo Bettini e gira su piattaforma Linux o, tramite Cygwin, anche su piattaforma Windows.
Lo si può scaricare dal sito e compilarlo in pochi passaggi che non analizzerò in questa sede.
In alternativa è possibile installarlo direttamente dai repository della propria distribuzione.
Su Debian/Ubuntu, ad esempio, è bastato digitare (da utente root) il comando:
apt-get install source-highlight

Il programma attualmente gira esclusivamente tramite riga di comando ma, sebbene sia molto semplice da utilizzare, l'autore nel proprio blog afferma di aver creato anche una GUI con librerie QT.
Tuttavia, dato che tale GUI è estremamente recente, non è ancora inclusa nei repository e per questo motivo non ho avuto voglia di provarla ma se qualche lettore lo ha fatto mi farebbe piacere qualche commento al riguardo.
Il sistema di help è veramente molto ben fatto. Il software fornisce una ottima documentazione online e grazie alla opzione "--help" visualizza le varie opzioni anche su shell.
In particolare, nel suo utilizzo minimale, il software richiede il nome del file che contiene il codice, il tipo di codice da gestire ed il file di output che deve generare.
In sostanza:
source-highlight -i input.cpp -o output.htm -s C

trasforma input.cpp che contiene codice C in output.htm
Da notare anche la lista di linguaggi gestibili con questo softwareè davvero molto nutrita; tale lista è ottenibile con
source-highlight --lang-list

e prevede linguaggi più e meno noti; si va dal C++ al php, dal perl al TeX, dal pascal al pyton, dal linguaggio di shell al file syslog....

Un esempio pratico

Vediamo un esempio pratico. Sebbene molto conciso penso che renda l'idea di quello che è stato detto fino ad ora. Di seguito è stato inserito del codice Arduino prima e dopo l'utilizzo di source-highlight.
Prima
unsigned long time; // Variabile che rileva il tempo
unsigned long evento; //Variabile che attiva un evento

void setup(){
time = millis();
evento = millis();
}

void loop(){
time = millis();
}
Dopo diventa
unsigned long time; // Variabile che rileva il tempo
unsigned long evento; //Variabile che attiva un evento

void setup(){
time = millis();
evento = millis();
}

void loop(){
time = millis();
}


Conclusioni

Source-highlight è un ottimo strumento tutto italiano (l'autore lavora a Torino); è un progetto in via di sviluppo e quindi non fermo e vale la pena utilizzarlo se si scrive codice di programmazione.
E' un software molto utile per tutti coloro che devono fornire della documentazione a corredo del proprio codice o per coloro che, come me, vogliono scrivere del codice su piattaforme web che non hanno sistemi di syntax highlight integrati.
In futuro utilizzerò questo strumento per i miei prossimi post.