0
Gen 01 2012

Socket e thread in Python

Chi è interessato a sviluppare un’applicazione che utilizzi in un modo anche semplice la rete deve spesso documentarsi sulle socket, in qualsiasi linguaggio di programmazione, anche per il python.

In questo campo ho lavorato più di una volta, però mi sono limitato alla creazione di socket con una sola connessione alla volta.

Tuttavia non è molto utile: penso che la maggior parte delle applicazioni pratiche richiedano più di un client connesso e “addirittura” la possibilità di dialogare tra di loro.

Quindi intervengono i thread.

Non so darvi la spiegazione tecnica di cosa siano, però so darvi una spiegazione pratica: i thread permettono di eseguire contemporaneamente più operazioni, senza però creare un altro processo. Il vantaggio è che si ottiene il famoso multi tasking.

Documentandomi ho trovato che uno degli svantaggi è che non avviene il controllo sull’uso contemporaneo di alcune risorse come file, tuttavia in questo caso usiamo solo la RAM e perciò non ci poniamo il problema.

In python usare i thread è abbastanza semplice: una volta importato il modulo threading o solamente la classe Thread da esso, bisogna estenderla e fare una funzione chiamata run in cui… [Leggi il resto...]

0
Dic 24 2011

Blender: ruotare la camera col mouse

Continuano i miei esperimenti con Blender.

Una delle mie più grandi domande riguardanti la game mode è: come fare per spostare la telecamera col movimento del mouse?

Beh, mi sono messo ad affrontare questo problema.

Il metodo che io utilizzerei è quello di analizzare il movimento del mouse e quindi di applicarlo alla rotazione.

Per fare ciò è mia intenzione associare uno script python al controller mousemove.

Ecco un prototipo di codice, con i commenti che spiegano cosa fa questo codice:

[Leggi il resto...]
25
Dic 06 2011

pyLoad

Qualche giorno fa avevo detto che mi serviva un downloader in stile jDownloader.

Quest’ultimo è ottimo, però ha due grossi problemi: è pesante e necessita di X.Org o un altro server X su Linux.

Così mi serviva un’alternativa le cui caratteristiche dovevano essere queste:

  1. Ovviamente funzionare su Linux (il muletto ha Debian ;-) )
  2. Essere più leggero di jDownloader
  3. Possibilmente essere software libero
  4. Non aver bisogno di un server X attivo
  5. Possibilmente non essere scritto in Java

Inizialmente stavo pensando di scrivermene uno io, però sarebbe stato difficile. Per la parte dell’interfaccia mi sarei accontentato, però mi sarebbe stata sicuramente utile la funzione di decodifica captcha automatica, troppo difficile per me.

Google mi ha aiutato: immediatamente mi ha dato ciò che cercavo: pyLoad.

Mi è subito parso buono: è multipiattaforma, è così leggero da funzionare anche sui router, è rilasciato sotto la GPL. È multi interfaccia: ha sia l’interfaccia a linea di comando, sia una grafica sia un’interfaccia web che volendo si può dotare di SSL. In più, si capisce subito dal nome, è scritto in python.

L’installazione è molto, molto facile.

Se usate Debian non potete usare… [Leggi il resto...]

0
Ago 25 2011

Plugin Local Cover Art [Picard]

È da quasi due anni che uso Music Brainz Picard, il programma di cui avevo già parlato che serve per taggare in automatico e con precisione la musica.

Già allora mi ero lamentato della mancanza del supporto delle copertine, cosa che, per chi ha un iPod Touch, è insopportabile.

All’inizio ho usato il plugin Cover Art Downloader, solo che il risultato non era del tutto soddisfacente: infatti il plugin non poteva distinguere le copertine belle da quelle meno.

La mia soluzione al problema allora è stata scaricare le copertine da Google immagini e inserirle con un altro programma: EasyTag. Come software quest’ultimo non è affatto male, però io continuavo a usare comunque Picard, perché più veloce, immediato e preciso e dover usare due programmi mi risultava scomodo.

Così oggi ho cambiato ancora le mie abitudini: per Picard è possibile scrivere plugin in python, linguaggio che mi piaciucchia, così ho scritto un plugin per fare da solo ciò che prima dovevo fare io, cioè cercare un’immagine chiamata Front.png o Front.jpg nella cartella dell’album e poi aggiungerla.

Non è stato proprio immediato da fare perché non conoscevo bene le API di MusicBrainz e il plugin da cui sono partito (Cover Art Downloader, di Oliver Charles e Philipp Wolfer) non andava più bene con la versione di Picard/Python della mia Debian Unstable.

Se avete voglia di provarlo, il file è localcoverart.py.

Va installato come tutti gli altri plugin del programma.

Per la licenza, fin quando non scoprirò quella del plugin originale è Creative Commons 3.0 con obbligo di Attribuzione: potete farne quel che volete, fino a quando io, Oliver Charles e Philipp Wolfer (gli autori del plugin da cui ho preso spunto) saremo riconosciuti come gli autori originali del plugin.

2
Giu 28 2010

Dottk Updater v1.0

Ho creato uno script che permette di usare Dot Tk come un servizio di dns per IP dinamici (come DynDNS e No-Ip).

Gli unici requisiti che ha lo script è che si usi il Dot Tk Free DNS Service e che ci sia almeno un dominio di tipo A.

Lo script esegue il login al my.dot.tk, quindi va nella pagina dei siti, cerca il link per modificare il dominio interessato, quindi controlla se l’indirizzo IP del campo A omonimo al dominio - o di tutti i campi A a proprio gusto - è uguale all’indirizzo IP in uso che ricava da una pagina web. In caso di esito negativo, lo sostituisce e poi salva. Per fare il tutto ho dovuto usare l’analisi dell’HTML della pagina.

È scritto in Python e rilasciato secondo licenza GNU GPLv2.

È molto semplice da usare, soprattutto per Linux visto che ogni distribuzione praticamente include python.

Occorre scaricare il file dottk_updater_v1.0.py e modificare l’ultima riga con email di registrazione a dot tk, password di dot tk, e il dominio che si vuole aggiornare con un qualsiasi editor di testo semplice o meglio ancora con un editor apposta per python.

Più precisamente si chiama la classe DottkUpdate(username, password, dominio, [every_a=True,… [Leggi il resto...]