checkm

domenica 26 ottobre 2008

Piramo e Tisbe

Riassunto del poema mitologico "Piramo e Tisbe" (Ovidio - Metamorfosi, I sec. d.C).

Piramo e Tisbe: due innamorati che non potevano vedersi a causa di una lite tra le loro due famiglie. Ogni giorno riuscivano a comunicare segretamente tramite una parete nascosta che univa le loro stanze. Così, a ogni ora si scambiavano parole d'amore e pensieri sulla la loro triste condizione.
Un giorno decisero di porre rimedio alla penosa lontananza e si diedero appuntamento oltre le mura della città, sotto un grande gelso, accanto a un corso d'acqua.
Nella notte, la prima a raggiungere il luogo fu Tisbe, la quale incontrò una leonessa reduce da una caccia fruttuosa, ancora sporca di sangue. Scappò per rifuggiarsi in una caverna, ma durante la fuga le cadde il velo che le copriva le spalle.

Quando Piramo arrivò, trovò il velo intriso di sangue e vedendo la leonessa pensò erroneamente alla morte della sua amata.

Il poveretto s'uccise, e l'amata fece lo stesso pensando fosse colpa sua, e pregò il gelso affinchè rimanesse di colore rosso per ricordare il sangue versato dai due innamorati.

domenica 14 settembre 2008

Emesene: Cercare nella conversazione

Oggi ho scritto una classe per Emesene che permette di cercare testo nella conversazione corrente con una piccola finestrella di dialogo. :-) A mio parere è molto comodo e supporta anche le espressioni regolari. Non ho mai trovato tanto facile creare una funzione di ricerca per un gtk.TextBuffer, quindi, se trovate qualsiasi bug, segnalatelo qua o nel post originale. ;-)

Download: search_conversation.patch
Url originale del post: topic,1531.0.html

Forse dovrei un po rallentare e fermarmi a pensare cosa serve veramente... :-)

sabato 13 settembre 2008

Emesene - GoogleSearch Plugin

Ho creato un plugin che permette di eseguire delle ricerche su Google mentre si conversa su Emesene utilizzando il comando /google. I risultati vengono inviati alla chat. Il plugin funziona con urllib e con le regex, invece di usare le API di Google che richiedono una chiave API e permettono di fare massimo 1000 ricerche al giorno.

Download: GoogleSearch.py
Url originale del post: topic,1529.0.html

Spero vi piaccia e vi sia utile.

PS: ringrazio Wolf che ha scritto questa guida. Mi ha permesso di camuffare urllib come se fosse Firefox cambiando lo UserAgent. :-)

venerdì 12 settembre 2008

Emesene: Plugin Away/Back

Ho creato un plugin per Emesene che aggiunge i comandi /away e /back per andare Online e Away velocemente durante la conversazione.

Download: Away.py
Url originale del post: topic,1527.0.html

Emesene: Salvare le conversazioni

Ho scritto una patch per Emesene che aggiunge un bottone al menu della finestra di conversazione per salvare il contenuto della chat su un file di testo.

E' la prima volta che partecipo ad un progetto opensource in modo attivo. Devo dire però che la comunità di Emesene sembra abbastanza accogliente. :-)

Download della patch: save_conversation.patch
Url originale del post: topic,1524.0.html

Attesa di caricamento sulla shell in Python

In seguito a questa discussione, ho pensato che fosse utile a diversa gente sapere come fare quelle cosette come le barre di caricamento, le percentuali che avanzano aggiornando la riga in stile wget. :-)

Ho scritto alcune soluzioni (importate time con import time):

1. Per fare la classica barretta roteante fatta di "| \ - /":

load = "| \ - /"
while
1:
for x in load:
sys.stdout.write("\r%s" % x)
time.sleep(0.05)
sys.stdout.flush()
2. Per fare una percentuale che avanza:
for x in range(100):
sys.stdout.write("\r%s%% Complete" % x)
time.sleep(0.5)
sys.stdout.flush()
3. Per fare una barra di caricamento con la percentuale :P :
bar = ""

for x in range(100):
sys.stdout.write("\r%s -> %s%%" % (bar, x))
time.sleep(0.5)
sys.stdout.flush()
bar = bar + "="
Credo che possa tornare utile a qualcuno... per me lo è! :-)

giovedì 4 settembre 2008

iComboBox - gtk.ComboBox con i menu

Per CodePaint ho avuto bisogno di un ComboBox che supportasse anche i menu. Ho quindi creato un widget che eredita da gtk.ComboBox e che utilizza gtk.TreeStore al posto del gtk.ListStore (quello predefinito).

Download: i_combo_box.py

Modificatelo come vi pare. :P

mercoledì 3 settembre 2008

CodePaint - Coloratore di codice

CodePaint è un programma in Python e GTK che permette di trasformare codice dei più comuni linguaggi/markup/templates in codice HTML evidenziato.
CodePaint sfrutta la libreria Pygments per la formattazione del codice HTML in diversi stili di colorazione. È possibile generare codice HTML che utilizzi CSS o con i colori definiti linea per linea. Offre inoltre una funzione di anteprima e permette di fare l'upload del codice HTML sul servizio di nopaste rafb.net e del CSS su FTP.

Non è ancora pienamente supportato Unicode ma spero che qualche buon'anima scriva un patch. :)

Download: codepaint-1.0.tar.gz

Una volta decompresso l'archivio, da root:

# python setup.py install
[...]
$ codepaint
Vi prego di segnalarmi qualsiasi bug o incomprensione nel funzionamento del programma. Accetto anche correzioni a livello di codice.

PS: ho avuto bisogno di questo programma perchè non sempre è possibile/facile mettere un syntax-highlighter su un blog o su un sito. Per esempio, in questo post la porzione di codice presente è stata scritta con CodePaint. Non ho voglia di lottare con blogger. :P

martedì 2 settembre 2008

FeedBurner

Ho aggiunto un link a pie' di pagina per iscriversi al blog.

Powered by FeedBurner

martedì 26 agosto 2008

Dividere un file da shell in più parti

Se abbiamo un file molto grande che vogliamo dividere in più parti per poterlo, ad esempio, salvare su più CD-ROM o mandare come allegato via email si può ricorrere al comando split.

Ad esempio:

split -b 500000 file_grande.tar.gz
Questo creerà una serie di file della dimensione di 500kb circa con nomi del tipo: ‘xaa’, ‘xab’, ‘xac’ ecc.
La flag ‘-b’ serve a specificare appunto la dimensione dei chunk (le parti).

Per riunire i chunk basta copiarli tutti nella stessa cartella e dare il comando:
cat * > file_grande_ricreato.tar.gz
dove al posto di ‘file_grande_ricreato.tar.gz’ può esserci qualunque nome anche non uguale a quello del file originario purchè l’estensione sia la stessa. Dunque se era un ‘.tar.gz’ all’inizio dovrà avere come estensione ‘.tar.gz’

Installare lo splash per il framebuffer su Gentoo 2007.0

E’ molto semplice. Basta installare i pacchetti splashutils splash-themes-gentoo splash-themes-livecd così:

flagedit media-gfx/splashutils fbcondecor && emerge
splashutils splash-themes-gentoo splash-themes-livecd
poi bisogna configurare il kernel con
genkernel –menuconfig all
attivando l’opzione Device Drivers -> Graphics support -> Console display driver support -> Support for the Framebuffer Console Decorations

Dopo aver riavviato con il nuovo kernel bisogna creare un immagine initramfs con il tema che si vuole (per avere una lista dei temi basta dare ls -l /etc/splash). Per farlo:
genkernel –splash=livecd-2007.0 initrd
Nel mio caso ho scelto lo splash di default della live distro di Gentoo 2007.0.

Succesivamente modificare il file /boot/grub/menu.lst e aggiungere alla fine della riga kernel la stringa
vga=791 splash=silent,theme:livecd-2007.0 console=tty1 quiet

Salvare, riavviare e godersi lo spettacolo.

Musica per programmare

Mio fratello ha fatto un elenco delle stazioni radio online che trasmettono musica adatta e immergersi nella programmazione. Ovviamente si tratta di gusti personali. Ha cercato qualcosa che faccia pensare al computer, chip, circuiti, elettronica. Insomma cyber-robba...

http://radio.hbr1.com:19800/ambient.ogg
http://radio.hbr1.com:19800/trance.ogg
http://160.79.128.242:8054
http://213.186.42.187:8100
http://207.88.49.49:10500 - colonne sonore videogames
http://91.121.125.64:8005

Scaricare video da YouTube ed estrarne l’audio

Spesso capita di trovare un video su YouTube e volerne estrarre l’audio. Come fare?

Per prima cosa bisogna scaricare il video con youtube-dl (scritto da Ricardo Garcia Gonzalez), che se non dovesse esserci nel proprio repository, potete ricavare da qua.

Basta avviarlo e dare l’url del video come argomento, per esempio:

python youtube-dl http://www.youtube.com/watch?v=11KaKhGAa3I
Al termine della procedura verrà salvato un file che avrà come nome il numero del video e come estensione .flv (Flash Video), nel mio caso 11KaKhGAa3I.flv.

Ora il secondo passo è estrarre l’audio da ciò che abbiamo scaricato. Per farlo bisogna usare mplayer e assicurarsi che sia installato.

Bisogna eseguire il seguente comando:
mplayer -dumpaudio -dumpfile file.mp3 11KaKhGAa3I.flv
Ovviamente ho messo 11KaKhGAa3I.flv come esempio, ognuno usi il nome del proprio file .flv, idem per quello .mp3.

Si può finalmente ascoltare l’audio del proprio video in MP3.

domenica 24 agosto 2008

MJoin - Join multiplo tramite lxsplit

Mi son trovato a dover unire (joinare) dei file precedentemente divisi (splittati) utilizzando lxsplit (con l'opzione -j). Purtroppo però questo programma manca di una funzionalità banale: non mi permette di joinare più file alla volta. Ho quindi creato uno script, MJoin, che se avviato senza alcun parametro joina tutti i file all'interno di quella directory. Si possono anche specificare i file su cui si vorrebbe operare. La funzione di help dovrebbe essere abbastanza comprensibile.

Scaricatelo da qua e per averlo eseguibile rinominatelo da mjoin.py a mjoin e rendendolo eseguibile copiatelo in /usr/bin o /usr/local/bin, a vostra scelta.

$ mv mjoin.py mjoin
$ chmod +x mjoin
$ su -c "mv mjoin /usr/bin"
$ mjoin [OPTIONS]

Potete vederlo in funzione dall'immagine del post.

Colorare l'output in shell

Ho avuto bisogno diverse volte di colorare l'output di un programma Python in shell. Ho ripreso l'idea da una funzione di Luciano Ferraro, l'ho migliorata aggiungendo una specie di linguaggio di markup... una fesseria.

Si chiama color_markup_string.py.

La potete usare così:

import color_markup_string as cms

print cms.color("Mela <green>verde</green>.")
print cms.color("Mela <red>rossa</red>.")
print cms.color("Mela <yellow>gialla</yellow>.")

Potete vederne un test nell'immagine del post.

venerdì 20 giugno 2008

Ritorno

Ok, il mio periodo di assenza dovrebbe essere terminato. Spero di riuscire a rimanere attivo almeno per tutte le vacanze estive. :-) A dispetto del post precedente, ho dimenticato parecchie cose. Non so più da che parte ricominciare. Non so che cosa avevo lasciato incompleto e che cosa avevo finito. Non mi ricordo più Emacs :'(. Spero di recuperare.

Ci vediamo. ;-)

mercoledì 6 febbraio 2008

Assenza

Con questo articolo voglio informare tutte quelle persone che da un po di tempo non hanno notizie di me. Purtroppo, per colpa mia, ho avuto particolari problemi con la scuola e son stato costretto ad abbandonare le mie attività da nerd. :-) Da qualche mese non ho più un computer fisso e quello da cui scrivo non è il mio. Vorrei dire che non ho dimenticato le persone che probabilmente in questo ultimo periodo mi hanno cercato, come non ho dimenticato niente di tutto quello che sapevo. ;-)
È soltanto una questione di tempo, più lunga di quanto pensassi. È possibile che ci si risente tra una o due settimane, come è possibile anche solo d'estate. Non ho assolutamente scordato gli amici di #vim su Azzurra.

Comunque tra gli umani non si sta poi così tanto male.

Ci sentiamo, amici.