29 gennaio 2007

Creazione di un Tunnel SSH


Molto spesso capita di trovarsi all'interno di una rete aziendale, o di una scuola e di non avere la possibilità di connettersi ad un servizio esterno perchè la policy aziendale magari non prevede che ci si possa connettere a determinati servizi (come ad esempio Skype, MSN, ICQ, IRC ecc...).

Tramite SSH è possibile creare un vero e proprio tunnel cifrato dal nostro computer ad un server SSH esterno, che provvederà a fare da ponte con il servizio al quale vogliamo connetterci.

Potete trovare la guida completa sul wiki del PtLUG.

27 gennaio 2007

Wardriving con Nokia 770 Kismet e Google Earth/Maps

Con la diffusione delle reti wireless, è nato un fenomeno chiamato wardriving. Il wardriving consiste nel muoversi a piedi, in bicicletta o in macchina, muniti di un portatile o di un palmare con una scheda di rete wireless (802.11 a/b/g) e cercare informazioni sulle reti wireless esistenti.

Molti wardriver oltre al computer si portano dietro anche un ricevitore GPS in modo da acquisire l'esatta locazione della zona dove si trova la rete.

Lo scopo di questa guida è proprio quello di dimostrare come acquisire i dati delle reti wireless mediante l'utilizzo dell'internet table Nokia 770 e di un ricevitore GPS bluetooth.

Per praticità, il resto della guida l'ho pubblicato sul Wiki del PtLUG (sul quale potete trovare tantissime altre guide scritte da me e da altri collaboratori del PtLUG) e lo potete trovare a questo indirizzo.

25 gennaio 2007

Nokia 770: Linux nel palmo di una mano.

Da tempo cercavo un palmare che mi permettesse di fare cose che con altri palmare non potevo assolutamente fare e che avesse buone prospettive future di sviluppo.

Dopo tanta attesa, la scelta è ricaduta sul Nokia 770. Oltre ad avere fiducia nella Nokia ormai da anni per i suoi ottimi prodotti, questo palmare aveva un ottimo motivo in piu' (almeno per me) per essere acquistato: il fatto di essere basato completamente su Linux e di essere completamente opensource (ok.. eccetto il driver di riconoscimento della scrittura).

L'N770, pur essendo prodotto dalla Nokia (che solitamente siamo abituati ad associare ai telefoni cellulari), non è un telefono ma un mini tablet che permette di navigare su internet, chattare, leggere la posta elettronica, fare chiamate VOIP, vedere video, ascoltare mp3, ascoltare le radio in streaming (quelle di Shoutcast), e fare girare buona parte delle applicazioni linux/gtk.

La connettività è sicuramente uno dei punti di forza di questo dispositivo: integra infatti sia il Bluetooth che la scheda di rete Wireless 802.11 b/g. Le procedure di connessione sono inoltre state rese così semplici da essere molto intuitive e di rapido utilizzo.

Come già accennato in precedenza, il punto di forza di questo palmare è sicuramente il sistema operativo: Linux. Piu' esattamente si tratta di una versione ad-hoc chiamata Maemo e derivata da Debian. Maemo, oltre ad essere sviluppato e supportato direttamente da Nokia, puo' contare su una numerosa community di utenti e smanettoni che stanno contribuendo di giorno in giorno allo sviluppo di nuove applicazioni o al porting di quelle già esistenti per Linux.

L'interfaccia grafica del Nokia 770 si basa sulle librerie Gtk e prende il nome di Hildon. Le applicazioni sono sviluppabili in C oppure in Python. Esistono ovviamente anche i porting di altri linguaggi di sviluppo, come ad esempio Mono/C#, Perl, SmallBasic ed altri ancora.

E' disponibile per gli sviluppatori un vero e proprio kit di sviluppo che comprende addirittura un emulatore che permette di testare le applicazioni sul proprio PC prima di testarle sul palmare stesso, permettendo di compilare sia per i386 che per armel.

Prossimamente cercherò di pubblicare (sempre su queste pagine) un tutorial in italiano che spieghi passo per passo come installare e configurare l'ambiente di sviluppo di Maemo sul proprio PC.

Si tratta a mio avviso di un'ottima piattaforma per poter sviluppare applicazioni. La recente uscita del Nokia 800 (il successore del 770) fa ben sperare sui progetti futuri che la Nokia ha in mente. Speriamo solo che non si tratti di un trend del momento ma che invece si voglia dimostrare la potenza e la convenienza nel realizzare un dispositivo basandosi su software opensource.

24 gennaio 2007

OpenGL e wxWidgets


Cosa c'è da dire su OpenGL?? Famosissima libreria che mette a disposizione chiamate a basso livello per realizzare grafica 2D e 3D.
Per lavorare con queste librerie ci vuole un po' di pazienza perchè non sono molto immediate, ma presa la dimestichezza si riescono a realizzare cose molto carine.
Per incominciare a studiare OpenGL consiglio o un libro, The Red Book, consultabile anche on-line oppure se imparate meglio con del codice questo sito girando per internet si trovano anche le traduzioni delle lezioni.

Se vi state chiedendo ma io non so programmare C++(linguaggio più usato per queste librerie) devo imparare per forza a programmare C++?
No, potete usare anche altri linguaggi di programmazione.

Ovviamente OpenGL è soltanto una libreria con funzioni a basso livello ma dobbiamo creare anche una finestra per contenere questi "disegni", per creare il container abbiamo moltissime possibilità.
Visto che uso Linux, ma devo avere portabilita verso il mondo Windows mi sono buttato su librerie portabili, le scelte erano diverse.
Le principali QT e wxWidgets, ho guardato un po' i codici sorgenti di entrambe e mi sono trovato più a mio agio con wxWidgets(ovviamente offrono compatibilità con le OpenGL).

Le wxWidgets permettono di usare C++, Python, Perl e C#/.NET.
Visto che la mia esperienza è orientata più verso C/C++ ho scelto quest'ultimo.
Queste librerie mettono anche a disposizione molti esempi per la maggior parte delle funzionalità, e c'è una buona documentazione(in stile javadoc) per le funzioni.

Dopo un po' di difficoltà iniziali, siamo riusciti ad usare efficacemente queste due librerie con molte potenzialità(imho).
La parte più difficile è stata l'integrazione, abbiamo dovuto giocare un po' per far girare i cubi :), ma alla fine degli sforzi fatti siamo molto contenti.

In definitiva consiglio l'uso di questi due strumenti, anche se vuol dire perdere un po' di tempo per impararli ad usare un minimo.
L'unica cosa negativa che abbiamo riscontrato è stato installare le librerie per lo sviluppo wxWidgets sotto Windows, dato che oltre ad installarle con il comodo installer vanno ri-compilate tutte modificando un opzione.
Ma comunque sono tutti passi descritti nei file di help.

Buona Programmazione a tutti quanti :)

21 gennaio 2007

iPhone: è tutto oro quello che luccica?

Ancora non è uscito e già fa parlare di se.

Trascorsi pochi giorni dall'annuncio ufficiale fatto da Steve Jobs, sono trapelate anche le prime indiscrezioni sulla politica che Apple intenderà adottare al riguardo degli sviluppatori.

Pare infatti che non sarà consentito a tutti sviluppare applicazioni per l'iPhone, ma soltanto a coloro che avranno un'autorizzazione diretta da parte di Apple (ovviamente a pagamento).

Se questa cosa fosse confermata, rallenterebbe sicuramente la diffusione di questo nuovo dispositivo e non incentiverebbe nessuno a creare applicazioni gratuite come invece avviene per altre piattaforme (Symbian, Java, ecc...).

Avere un hardware così evoluto e non avere la possibilità di utilizzarlo se non essendo dei passivi utilizzatori, di fatto farà perdere l'interesse a molte persone (me ad esempio) che speravano di avere finalmente un gioiellino sul quale poter sviluppare qualche applicativo interessante.

Oltre al discorso dello sviluppo delle applicazioni, non è ancora ben chiara invece la politica che Apple intende adottare nei confronti degli operatori telefonici. Verrà consentito solo ad alcuni operatori di sfruttare questo telefono? Sarà concessa la possibilità a chiunque?

Avremo tutto il tempo per riflettere su questi interrogativi, visto che iPhone non uscirà sul mercato americano prima di Giugno e su quello Europeo prima della fine del 2007.

06 gennaio 2007

Un bridge wifi fatto in casa con DD-WRT


Da tempo stavo cercando un prodotto che permettesse al mio decoder satellitare (un DreamBox 7000), che ha solo la porta ethernet, di collegarsi alla rete che invece ho concentrata tutta dall'altra parte della casa.

Portare un cavo dalla camera al salotto avrebbe significato forare almeno 3 pareti, senza contare il brutto cavo che si sarebbe visto.

L'unica soluzione praticabile era quindi connetterlo via wireless, ma come? Così come altri dispositivi (Playstation, Xbox ecc...) il DreamBox non supporta nativamente i dispositivi wireless, c'era bisogno quindi di un qualcosa che facesse da "ponte" rendendo trasparente il fatto che ci si stava in realtà connettendo ad un router wireless (nel mio caso un Netgear 834G).

Da un po' di tempo mi ero messo a pensare se fosse possibile realizzare tutto questo riciclando un vecchio Linksys WRT54GL che possedevo. La risposta è arrivata trovando questo tutorial.

In sintesi (ma vi rimando al tutorial, in inglese, per maggiori dettagli) installando il firmware opensource DD-WRT al posto del firmware originale, impostando il nostro dispositivo come Client-bridge nella sezione wireless e facendolo associare al nostro router wireless è possibile realizzare tutto questo.

Ogni dispositivo che viene collegate ad una delle porte del bridge viene automaticamente connesso alla nostra rete wireless.

Come ultima cosa vi suggerisco due piccoli consigli che mi sono serviti a risolvere alcuni problemi incontrati: per quanto riguarda la versione di DD-WRT vi consiglio la .24 beta, altrimenti il dispositivo non si era dimostrato molto stabile sugli alti flussi di traffico; infine vi consiglio di aumentare il parametro che regola la potenza di trasmissione (sul bridge) che per default è 24 e che si puo' impostare fino a 240 (io l'ho messo a 120).

Nagios

Uno dei problemi di chi deve gestire un numero relativamente alto di macchine è la scoperta, con successiva diagnosi, dei vari problemi (software o hardware) che inevitabilmente prima o poi si possono presentare.

Ci sono principalmente due tipi di approccio al problema:

  1. Speriamo in bene aspettando il “patatrac”
  2. Controlliamo assiduamente le varie macchine per ridurre il numero dei “patatrac”

Essendo la prima ipotesi molto pericolosa, prendiamo in considerazione solo il punto numero 2.
Nell’universo GNU/Linux ci sono una marea di applicativi per “semplificare” il controllo remoto di alcune macchine: ultimamente mi sono soffermato sull’applicativo NAGIOS.

Come possiamo leggere sul sito ufficiale:
“Nagios is a host and service monitor designed to inform you of network problems before your clients, end-users or managers do. It has been designed to run under the Linux operating system, but works fine under most *NIX variants as well. The monitoring daemon runs intermittent checks on hosts and services you specify using external “plugins” which return status information to Nagios. When problems are encountered, the daemon can send notifications out to administrative contacts in a variety of different ways (email, instant message, SMS, etc.). Current status information, historical logs, and reports can all be accessed via a web browser.

Dunque si tratta di un’architettura client/server per monitorare da remoto lo stato di un insieme di macchine: dal carico della CPU allo spazio su disco, dall’utilizzo di memoria al numero dei processi.
Lo scopo di tutto ciò è di prevenire eventuali problemi o, al massimo, riuscire a “intercettare” il problema prima che se ne accorgano gli utenti.

Anche se la configuazione iniziale è un pò complicata, l’interfaccia web di controllo è tanto semplice quanto efficace.


Un comodo grafico ad albero ci informa sullo stato dei vari server e dei servizi che essi ospitano.

Prossimamente pubblicherò un dettagliato HOW-TO su come configurare Nagios in maniera ottimale.

04 gennaio 2007

Gmail & Co - Capitolo 1

Oggi affronto un argomento scivoloso... le nostre care caselle di posta elettronica.
Tutti ormai ne hanno almeno una: l'e-mail è diventata in pochi anni un essenziale strumento di lavoro. Nessuno, però, si è mai chiesto che fine fanno i nostri messaggi una volta consegnati al provider? Qual'è la differenza tra caselle "a pagamento" e gratuite? E, soprattutto, perchè alcuni provider si fanno pagare per un servizio che altri offrono gratuitamente o a cifre veramente ridicole?
Cerchiamo di distinguere le varie tipologie di servizi:
  1. Servizi gratuiti: forniti da Google (con Gmail), Libero, Telecom Italia, ecc...
  2. Servizi a pagamento: forniti da piccoli/medi/grandi provider
  3. Servizi "fai da te": forniti dagli utenti stessi (quelli più smanettoni) che hanno la possibilità di avere in casa un server di posta.
Per analizzare meglio la situazione prendiamo ad esempio due piccole aziende che non hanno la possibilità o la competenza di avere un mail server "in casa": le chiameremo "X" e "Y".
X utilizza una servizio gratuito, Y utilizza un servizio a pagamento: i due si scambiano quotidianamente una media di N messaggi.
Un bel giorno l'incantesimo si spezza e cominciano i problemi: le e-mail non arrivano a destinazione. Cosa è successo?
Y chiama il suo fornitore del servizio e-mail il quale, essendo obbligato a rispondere al telefono e a tenere traccia delle e-mail che partono ed arrivano sui propri server, gli fornisce tutte le informazioni del caso: orario e data di spedizione o arrivo del messaggio, consegna al server del destinatario o alla casella del cliente, ecc...
X, invece, dopo una lunga attesa al telefono riceve la confortante notizia, da un risponditore automatico, che i server di posta del suo provider da qualche giorno non ne vogliono proprio sapere di funzionare... e siccome il servizio e gratuito, rispondere al telefono è un optional.

L'esempio, posto intenzionalmente con tono provocatorio, non si discosta molto dalla realtà delle cose.

Nel prossimo capitolo parleremo dei filtri antispam e di come vengono gestiti dai vari provider.

02 gennaio 2007

C++ Gui Programming With Qt4: perchè l'ho acquistato

Dopo una piccola ricerca su Amazon e dopo essermi consultato con alcuni colleghi, mi sono deciso ad acquistare questo libro. Le mie conoscenze di C/C++ sono molto basilari, inoltre non avevo nemmeno mai programmato con le Qt.

La decisione di dedicarmi all'apprendimento di C++/Qt4 è stata dettata da vari motivi. Per prima cosa non conoscevo ancora a fondo nessun toolkit tra quelli disponibili anche per Linux. Inoltre volevo fare pratica con un linguaggio che fosse portabile e abbastanza a basso livello e che mi permettesse di realizzare qualsiasi cosa. Il binomio è stato quindi perfetto.

Personalmente mi sento di consigliare questo libro anche a chi non ha mai programmato in C++, vista la comodissima appendice che si occupa di spiegare le differenze tra il C++ ed il C# e Java. Questa è una vera manna dal cielo per chi appunto proviene dal mondo C#/.Net oppure dal mondo Java.

Conviene iniziare con le Qt4 anche se non si è mai programmato con le Qt3? Sicuramente si. Le Qt4 sono la base dell'imminente (ok, non troppo, si parla di ancora qualche mese) Kde 4. Anticiparsi vuol dire partire avvantaggiati ed essere subito operativi quando Kde 4 uscirà. Inoltre, fra le Qt3 e le Qt4 ci sono stati notevoli miglioramenti ed alcune modifiche di base (anche se è stata mantenuta la compatibilità all'indietro) e se uno imparasse prima le Qt3 dovrebbe fare il doppio lavoro di doversi poi aggiornare.

Al momento sono arrivato al 3° capitolo del manuale e per adesso posso ritenermi soddisfatto dell'acquisto.

Non sono ovviamente ancora in grado di poter scrivere una recensione completa del libro (non avendolo ancora letto), ma mi riprometto di farlo non appena lo avrò terminato.