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.

martedì 11 agosto 2009

Canzone Linux

Girovagando sul web ho trovato questa simpaticissima canzone su Linux....

sabato 8 agosto 2009

Songbird: non solo un player musicale!!

Premessa

Lo scenario dei player musicali per Linux, Windows e Mac è veramente impressionante per la sua vastità. Si passa dal banale Windows Media Player all'ottimo VLC, da Winamp a Xine.
Ci sono player "famosi" e altri meno noti, da quelli pieni di features a quelli scarni e minimali.
In questo scenario si colloca Songbird, un player opensource che fa molto di più che da semplice player....

Songbird...

Installare Songbird è semplice e veloce. Si scarica dal sito il file compresso, lo si scompatta e si lancia l'eseguibile che vi è all'interno.
Non vi è bisogno di installazione.
L'unica avvertenza che bisogna avere è di scegliere la versione consona al proprio sistema operativo... Si perchè Songbird è programmato in Java e quindi, per questo, multipiattaforma: gira su Linux, MacOS e Windows senza alcun problema.

Songbird è supportato dalla Mozilla Fundation e i programmatori sono del calibro di winamp e firefox.
Il programma si presenta con una finestra intuitiva e permette, nella versione minimale di ascoltare musica ma anche di modificare i TAG MP3 delle canzoni (opzione utilissima dato che la catalogazione avviene secondo questi e non per cartelle).
Esistono poi moltissimi temi e plugin per questo programma.
Particolarmente interessante la possibilità di ricercare canzoni su Jamendo o negozi online, ascoltare le radio di Shoutcast, scaricare in modo automatico le copertine degli album sul proprio PC.
Un'altra opzione che trovo assolutamente interessante sono le playlist (per onor di cronaca presenti anche in altri software) che permettono di creare degli "album virtuali"; se ti prepari ad una serata galante o ad una fra amici potresti poter voler far suonare diverse canzoni senza stare davanti al PC per cambiare album di volta in volta: con le playlist ti costruisci una lista prima ;-)
Il programma poi permette di raggiungere autonomamente un sito con plugin disponibili per ampliare le potenzialità del software stesso.

Insomma: secondo me è assolutamente da provare soprattutto se si utilizzano Sistemi operativi e si vuole mantenere il medesimo software per ascoltare la musica.




Aggiornamento su errore gstreamer

Dopo mesi di utilizzo ho riscontrato un probelma in partenza. All'avvio del programma da shell su linux esso mi restituiva il seguente errore:

$ ./songbird

(songbird-bin:3836): GLib-WARNING **: g_set_prgname() called multiple times

(songbird-bin:3840): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-0.10/libgstlibvisual.so': /usr/lib/gstreamer-0.10/libgstlibvisual.so: undefined symbol: gst_adapter_prev_timestamp

(songbird-bin:3840): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-0.10/libgstdv.so': /usr/lib/gstreamer-0.10/libgstdv.so: undefined symbol: gst_tag_list_new_full

(songbird-bin:3840): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-0.10/libgstavi.so': /usr/lib/gstreamer-0.10/libgstavi.so: undefined symbol: _gst_debug_dump_mem

(songbird-bin:3840): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-0.10/libgstmpegdemux.so': /usr/lib/gstreamer-0.10/libgstmpegdemux.so: undefined symbol: gst_structure_id_get

(songbird-bin:3840): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-0.10/libgstapp.so': /usr/lib/libgstapp-0.10.so.0: undefined symbol: gst_buffer_list_get_type

(songbird-bin:3840): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-0.10/libgstdeinterlace.so': /usr/lib/gstreamer-0.10/libgstdeinterlace.so: undefined symbol: gst_video_format_parse_caps_interlaced

(songbird-bin:3840): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-0.10/libgstmatroska.so': /usr/lib/gstreamer-0.10/libgstmatroska.so: undefined symbol: gst_util_array_binary_search

(songbird-bin:3840): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-0.10/libgstvideo4linux2.so': /usr/lib/gstreamer-0.10/libgstvideo4linux2.so: undefined symbol: _gst_debug_get_category

(songbird-bin:3840): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-0.10/libgstjpeg.so': /usr/lib/gstreamer-0.10/libgstjpeg.so: undefined symbol: _gst_debug_get_category
././songbird-bin: symbol lookup error: /usr/lib/python2.6/site-packages/gst-0.10/gst/_gst.so: undefined symbol: gst_task_pool_get_type

Cercando su alcuni forum su internet ho scoperto che è dovuto al gstreamer-python.
Per fare partire il programma correttamente si anteponga il comando "env LD_BIND_NOW=1" e quindi, per risolvere il problema:
env LD_BIND_NOW=1 ./songbird

Plugin per Firefox

Premessa

Firefox è uno dei browser migliori attualmente in circolazione.
Esso, oltre ad essere veloce e rispettoso degli standard è multipiattaforma. Gli utenti, dunque, che utilizzano Linux, MacOS o Windows possono navigare in rete con il medesimo programma indipendentemente dal sistema operativo adottato.
Firefox, però, è molto più personalizzabile delle controparti. Esiste infatti una sezione del sito di riferimento che permette di scaricare ed installare plugin aggiuntivi.
Un plugin estende le funzionalità del browser e, se valido, acquisisce consensi tra gli utenti utilizzatori, gli autori ci guadagnano in popolarità e donazioni e nelle prossime release di firefox il plugin potrebbe essere una delle feature del programma stesso. Geniale!

I plugins/addons

In questo articolo vedremo alcuni plugin, quelli che personalmente ritengo tra i più validi. Vi invito a segnalarmi quelli che preferite voi.

  • xmarks
    A mio avviso uno dei plugin migliori. Permette di sincronizzare i
    bookmarks. Se si usa Firefox in ufficio, a casa e dalla ragazza...
    Xmarks permette di "trasportare" in modo automatico i bookmarks da una
    parte all'altra. I bookmarks, inoltre, sono raggiungibili dal sito internet di Xmarksin
    modo che se si è a casa di amici o in un chiosco web si possono
    raggiungere previo Login e senza installare nulla sul PC "estraneo".
    Esso inoltre contiene interessanti feature quali, ad esempio, la
    possibilità di mettere in condivisione delle cartelle dei segnalibri
    generando un feed RSS per far seguire agli amici eventuali
    aggiornamenti.
  • FoxyProxy
    Questo plugin permette di attivare la navigazione in modo permanente o
    temporaneo su uno o più proxy. Ovviamente è necessario conoscere degli
    indirizzi di proxy. Facendo qualche ricerca su web si possono trovare
    interi siti dedicati all'argomento. Questo plugin può essere
    estremamente utile in due scenari:
    • Sei in ufficio con una marea di siti interdetti dalla navigazione
      quali Youtube, siti di social networking, vmeo e via dicendo; con
      questo plugin puoi bypassare il problema.
    • Sei a casa o dove ti pare e vuoi navigare in modo anonimo. In
      questo modo l'indirizzo che resterà nei log dei server che visiti non
      sarà il tuo bensì quello del proxy.
  • MinimizeToTray
    permette, nel momento in cui si preme il pulsante di riduzione ad icona, di far sparire dalla barra delle applicazioni l'icona riferita a Firefox e di inserirla a fianco dell'orologio.
  • Download Statusbar
    Tutte le volte che si scarica qualcosa da web, firefox apre una finestra con l'elenco dei download passati e la barra del download in corso che avanza. Questo plugin permette di non far aprire questa finestra. Al suo posto si aprirà una più discreta barra di stato in fondo alla finestra di firefox.
  • Download Helper
    Uno dei plugin migliori se si frequenta spesso Youtube siti di video. Questo plugin, infatti, mostra una icona a fianco la barra di navigazione. Quando si entra in una pagina con un filmato stile Youtube l'icona inizia a "movimentarsi". Cliccandoci sopra è possibile scaricare il filmato che, altrimenti, non potrebbe essere trasferito sul proprio PC.
  • Errorzilla Mod
    Permette all'utente di personalizzarsi le pagine di errore per i siti non raggiungibili aggiungendo alcuni pulsanti che permettono di fare ricerche su Google, pingare il sito e quant'altro.
  • Firebug
    Plugin impagabile per gli sviluppatori web. Permette di visualizzare il codice della pagina che si sta guardando, cambiarne il codice e vederne gli effetti immediatamente (senza ovviamente poter salvare la pagina se questa è su un server remoto), ha funzioni di debug e molto altro ancora.
  • GSpace
    Se si possiede un account Google, probabilmente si sa che esso può essere anche utilizzato come Hard disk virtuale. Questa estensione permette di gestire i file come un hard disk remoto. Molto utile per non portare in giro chiavette USB.
  • GooglePreview
    Genera nelle pagine di ricerca di Google una anteprima della pagina che si sta per visualizzare. Molto comodo per velocizzare le ricerche
  • Mouse Gesture Redox
    E' un utilissimo plugin per interpretare i gesti effettuati con il mouse al fine di trasferirli ad azioni nel browser. Questo velocizza molto la navigazione. Ad esempio click con pulsante sinistro-destro va indietro di una pagina, click destro e trascinamento in alto apre una nuova scheda... I Gesture sono ovviamente personalizzabili.
  • SQLite Manager
    Per gli amanti di questo mini gestore di database, un plugin che integra una interfaccia grafica perfettamente funzionante per la gestione di db in SQLite
  • TinyUrl Creator
    Se hai a che fare con indirizzi web lunghi ti trovi spesso nella difficoltà di fare il copia ed incolla per spedirli ad amici o parenti... TinyURL è un sito che ti permette di "tradurre" in un indirizzo estremamente compatto uno estremamente lungo. Questo plugin integra questa funzionalità nel browser.
  • TrashMail.net
    Molti siti ci tediano per fare la registrazione richiedendo, in questo modo, la nostra mail... Per fare delle registrazioni volanti si può usare una mail temporanea ma con questo plugin la procedura di creazione mail è... con un click.
  • Twitterbar
    Comodo plugin che permette di aggiungere frasi sul proprio feed tweeter

giovedì 6 agosto 2009

Mini Tutorial per usare Arduino come programmatore ATMEGA8 / ATMEGA168

Il "cervello" di Arduino è il microprocessore ATMEGA. Partito con la versione ATMEGA8 si è passati al ATMEGA168 e, oggi il ATMEGA328.

E' possibile "staccare" il processore oppure acquistarne uno (un ATMEGA8 si acquista in un negozio di elettronica o su web a circa 3€) ed utilizzarlo standalone ovvero senza la nevessità di abbinarlo ad un Arduino.
Vantaggi:
  • Dimensioni estremamente compatte (paragonabili ad un Arduino mini)
  • Costo decisamente minore rispetto ad un Arduino (3€ rispetto 25€ di un Arduino)
  • Consumi minori dovuti a:
    • tensioni minori necessarie (dai 3V --due batterie da 1,5V in serie-- ai 5V contro i 5V-9V-12V di un Arduino)
    • frequenza di clock minore (8Mhz riducibile anche a 1Mhz contro i 20Mhz di un Arduino)
  • Oggetto completamente standalone
  • Maggiore spazio a disposizione (dato che non necessita del bootloader inserito in Arduino: il firmware viene flashato direttamente in esadecimale)
  • Utilizzo del IDE Arduino e non del linguaggio ASSEMBLY
Il problema fondamentale è riuscire a flashare il firmware all'interno del ATMEGA in modo che questo funzioni correttamente.
In questo minitutorial verrà spiegato come usare un Arduino per programmare un ATMEGA.

Passi preliminari

Preparazione dell'Arduino

Prima di tutto è necessario prendere un Arduino e caricare lo sketch presente in questa pagina come si è soliti caricare un qualsiasi sketch:
http://code.google.com/p/mega-isp/
Questo firmware permette di usare il nostro Arduino come programmatore del ATMEGA; in pratica, alla fine di questo tutorial è possibile passare un firmware al Arduino e questo, grazie al programma linkato lo trasferisce sul processore.
Successivamente è necessario dissaldare o tagliare in modo netto con un taglierino il jumper del reset presente subito sotto alla porta USB nella seguente immagine:

Questo passaggio è indispensabile per evitare di resettare sia l'ATMEGA sia l'arduino quando si passeranno i firmware.

Preparazione del ATMEGA

A questo punto si prenda l'ATMEGA e lo si sistemi sulla breadboard a cavallo della scanalatura.


Collegare Arduino al ATMEGA

L'arduino e l'ATMEGA comunicano con il protocollo ISP che sfrutta le porte MISO, MOSI, SCK, RESET come nello schema seguente


In pratica si colleghino i PIN dell'arduino posti in fondo alla scheda (che nella figura qui sopra si trovano nell'immagine in alto a destra) all'ATMEGA (come indicato nella figura qui sopra in fondo la penultima).
Per maggiore chiarezza riporto una immagine esplicativa rilevata dal sito tinker.it dove si vedono schematicamente le connessioni:

Si tenga conto che la connessione XTAL2 non è necessaria.
Ciò che viene fuori è la seguente figura:


Preparazione software e caricamento sketch

A questo punto tutto è pronto a livello hardware e si può procedere alla parte software.
L'IDE di Arduino contiene il programma avrdude.
Si deve preparare l'ATMEGA a ricevere i comandi. Per fare questo si apra una console, ci si sposti in dir_arduino/hardware/tools e si troverà l'eseguibile avrdude.
Quindi, da shell (per gli utenti windows sarebbe il prompt del dos) si digiti il seguente comando:

avrdude -pm8 -P/dev/ttyUSB0 -cavrisp -b19200

Ora l'ATMEGA è pronto per ricevere gli sketch.
Io ho provato il Blink ed il Fade.
Dall'IDE Arduino si prenda lo sketch desiderato (nel nostro esempio Blink), da Tools->Boards si scelga la scheda Arduino NG or older w/ATMEGA 8. Si compili e si faccia l'upload (questo passaggio genererà un errore ma serve per generare il file .HEX da caricare).
A questo punto ci si sposti nella directory sketckbook/Blink/applet e si digiti il comando:

avrdude -p m8 -c avrisp -U flash:w:/home/enkel/sketchbook/Blink/applet/Blink.hex -P

Dopo una serie di messaggi si dovrebbe ricevere la scritta "Thank you!" e se tutto va bene il nostro LED si accenderà e si spegnerà.

Nel mio caso si è usato un ATMEGA8; se si usasse un 168 o un 328 i comandi contemplerebbero m168 o m328 al posto di m8.

Note: opzioni particolari


E' possibile, tramite varie opzioni, fare in modo che l'ATMEGA funzioni in modalità differenti.
A questo proposito si può seguire il seguente sito:
http://code.rancidbacon.com/LearningAboutArduinoATMega8

Note: ATMEGA standalone

La cosa ancora più interessante è vedere lavorare l'ATMEGA senza necessità di essere alimentato dal PC. Nella figura che segue abbiamo preso due batterie da 1,5V collegate in serie e con queste abbiamo alimentato il processore che fa accendere e spegnere in modalità FADE un LED