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. :-)
sabato 13 settembre 2008
Emesene - GoogleSearch Plugin
Pubblicato da
Simone
@
8:31 PM
0
commenti
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
Pubblicato da
Simone
@
4:54 PM
0
commenti
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
Pubblicato da
Simone
@
4:39 PM
5
commenti
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()
for x in range(100):
sys.stdout.write("\r%s%% Complete" % x)
time.sleep(0.5)
sys.stdout.flush()
bar = ""
for x in range(100):
sys.stdout.write("\r%s -> %s%%" % (bar, x))
time.sleep(0.5)
sys.stdout.flush()
bar = bar + "="
Pubblicato da
Simone
@
9:33 AM
4
commenti
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
Pubblicato da
Simone
@
10:55 AM
0
commenti
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
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
Pubblicato da
Simone
@
8:36 PM
2
commenti
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.gzQuesto 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.gzdove 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’
Pubblicato da
Simone
@
3:12 PM
0
commenti
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 congenkernel –menuconfig all
attivando l’opzione Device Drivers -> Graphics support -> Console display driver support -> Support for the Framebuffer Console DecorationsDopo 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.
Pubblicato da
Simone
@
12:12 PM
0
commenti
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.
Pubblicato da
Simone
@
10:22 AM
0
commenti
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 mjoinPotete vederlo in funzione dall'immagine del post.
$ chmod +x mjoin
$ su -c "mv mjoin /usr/bin"
$ mjoin [OPTIONS]
Pubblicato da
Simone
@
11:47 AM
4
commenti
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 cmsPotete vederne un test nell'immagine del post.
print cms.color("Mela <green>verde</green>.")
print cms.color("Mela <red>rossa</red>.")
print cms.color("Mela <yellow>gialla</yellow>.")
Pubblicato da
Simone
@
9:04 AM
5
commenti
lunedì 26 novembre 2007
GNU Emacs @ localhost
Per qualche giorno Foobar sotto mia richiesta ha voluto darmi qualche dritta sull'utilizzo e la personalizzazione di EMACS. Ho sempre saputo quanto potente sia, ma riconosco di non averlo mai utilizzato regolarmente come editor predefinito. Mi ha aiutato a personalizzarlo per renderlo più comodo. Mi ha fatto sistemare lo "i-switch" che è una modalità per semplificare lo spostamento tra i buffer. Mi ha fatto mettere ELScreen che sarebbe come GNU Screen ma fatto apposta per EMACS. Mi ha fatto eliminare la barra dei menù e dei bottoni. Mi ha anche fatto scrivere una "mode" adatta per scrivere secondo lo stile dei programmatori di Linux e tante altre chicche carine. :)
Eccone uno screenshot.
Da notare che la parte evidenziata in azzurro è l'effetto del "bracket matching" che Foobar mi ha fatto mettere. :)
Pubblicato da
Simone
@
2:57 PM
2
commenti
Word Hex
Circa una settimana fa stavo studiando tramite le guide di playhack.net (attualmente è inattivo per via di alcuni problemi tecnici) cos'è e come funziona uno shellcode. Seguendo la guida ho avuto il bisogno di scrivermi uno script in Python per convertire una stringa ASCII nel corrispondente esadecimale.
Potete leggerne il codice da questo link.
Comunque sembra funzionare:
simone@euclide ~/coding $ python word_hex.py checkm
0x6d6b63656863
simone@euclide ~/coding $
Per verificare la validità del risultato, prendetevi una tabella ASCII (io uso questa, che ho stampato e appeso vicino al computer) e controllate la colonna Hex e ricordatevi che il numero si legge al contrario quindi da destra verso sinistra, equivarrà cioè a "mkcehc". :-)
Pubblicato da
Simone
@
2:38 PM
0
commenti
sabato 8 settembre 2007
Pwdgen
Ho fatto un programma in C e GTK+ per generare delle password casuali perchè ho visto che viene considerata una cosa molto banale però nessuno si è degnato di farne uno decente. Per ora sono abbastanza apposto con i memory leaks e se anche valgrind sembra che ve ne dia parecchi è tutta colpa di GLib, ma tranquilli "GLib doesn't leak memory".
La versione disponibile non è per niente modulare. Però siccome ora pensavo di fare una configurazione che permetta di compilarlo con o senza il supporto di GTK+ nel caso in cui uno non l'abbia installato (partirà un'interfaccia testuale in questo caso) credo che appena avrò voglia lo riorganizzerò con Autotools e lo renderò più "piacevole".
Lo trovate quì.
Se non vi funziona il link significa che altervista rompe. :-) Copiate l'indirizzo e apritelo in un'altra scheda.
Pubblicato da
Simone
@
10:19 AM
0
commenti
domenica 10 giugno 2007
Nuovo sito
Ero stanco del vecchio scaccom.altervista.org e ho rimediato cancellandolo e riscrivendolo in modo più corretto e senza metterci tutta quella roba inutile che si può trovare ovunque. Il sito è scritto in XHTML 1.1 e CSS, entrambi validati dal sito del W3C. Nella pagina principale non avevo voglia di sprecare parole e ho fatto parlare Dante al posto mio. :-P Il sito comprende due sezioni di download e screenshot. Nella prima ho messo (per ora) due programmini che ho fatto nel tempo libero per sfizio :-) e nella seconda ho messo alcune immagini dei desktop più belli.
So che non ve lo cacherete nemmeno un po, però almeno non lascio inutilizzati 100MB del mio spazio web.
Pubblicato da
Simone
@
12:00 PM
0
commenti
domenica 3 giugno 2007
os.path.join in C
Da qualche settimana sto studiando C da un tutorial di K&R. Ho fatto vari pezzettini di codice per provare un po a fare quello che leggevo nel manuale e ovviamente li ho buttati tutti.
L'altro giorno Lethalman mi ha chiesto di fare un "algoritmo" che imitasse il comportamento di os.path.join che c'è in Python con il C però in modo portabile.
Su Python:
>>> os.path.join("/home/", "simone")
'/home/simone'
>>> os.path.join("/home/", "/simone")
'/simone'
>>>
Il mio: http://scaccom.altervista.org/files/downloads/path_join.c
Ho imitato al meglio il comportamento di quello originale però non son riuscito a far passare infiniti argomenti alla funzione come succede in Python:
>>> os.path.join("/home/", "simone/", "gnurilla/", "src/")
'/home/simone/gnurilla/src/'
>>>
Ho chiesto a Foobar e mi ha detto che c'è un modo ma è piuttosto scomodo e difficile. Si tratta di utilizzare va_start di stdarg.h . [man stdarg.h] Ho rifiutato l'idea e per ora preferisco passare un array come argomento. :-\
Pubblicato da
Simone
@
8:33 AM
0
commenti
martedì 17 aprile 2007
Password Creator
Mentre il mio computer era rallentato per via della ricompilazione del kernel ho creato questo. È una cagatina scritta con nano che genera password random. Foobar mi ha consigliato di fare in modo che l'utente possa scegliere l'algoritmo per generare la password random e mi ha fatto vedere come sfruttare /dev/dsp o /dev/urandom e perchè no, anche l'orologio di sistema. :-)
Vedrò...
ScaccoMatto.
Pubblicato da
Simone
@
3:18 PM
0
commenti