Archivio per il tag python

Enso diventa OpenSource

Il team di Humanized ha deciso di rilasciare Enso, un software nato per semplificare l’usabilità, con . La decisione è maturata per permettere agli sviluppatori di aggiungere comandi per far interagire Enso con le proprie applicazioni, Enso infatti, è nato per garantire una migliore usabilità dei software e la sua utilità è direttamente proporzionale al numero di quelli con cui riuscirà ad integrarsi, citando dal blog di Humanized:

Why are we doing this?

For Enso to have a chance of becoming the universal tool that we envisioned, it has to be compatible with an ever-expanding number of applications as well as providing an ever-expanding number of commands. For instance, there’s a program called GVim; Enso’s text-selection commands are currently incompatible with GVim because the latter has a unique way of handling text selections. A few users have complained to us about this, and while we’re sympathetic, we’ve had to pull a Spock and say “The needs of the many outweigh the needs of the few” as we focused the limited resources of our 4-person development team on getting the most popular commands to work with the most popular applications. The closed-source development model limits what we can do. It doesn’t scale well to the problem of an ever-expanding number of applications and an ever-expanding number of commands

Ora che è Opensource è anche possibile che presto venga resa disponibile una versione per altri sistemi operativi. Cosa che non mi sarei mai aspettato: il codice sorgente è in Python, il più umano dei linguaggi di programmazione e di sicuro quello che al momento conosco un po’ meglio. Non che abbia aspirazioni di sviluppare il codice, ma se vedo che creare comandi è relativamente semplice un pensierino ce lo posso fare :-) .

Per chi non lo conosce, Enso è un tentativo di superare le limitazioni delle attuali interfacce utente proposte dai sistemi operativi, un modo per integrare alle interfacce grafiche la praticità della vecchia linea di comando, che se si sa cosa si vuol fare permette di farlo in maniera molto più veloce. Per ora le uniche due componenti rilasciate come release sono il launcher ed Enso Word (un correttore ortografico globale), ma molte altre vengono rese disponibili in versione beta. Anche se, come app launcher puro e semplice preferisco Launchy, le potenzialità di Enso, soprattutto ora che è OpenSource, sono maggiori e vanno ben oltre la semplice apertura di applicazioni.

Per fare un esempio una delle componenti permette di controllare il proprio player preferito, un’altra di operare traduzioni al volo e così via, tutto questo senza la necessità di aprire il player o il browser ed usare Google Translate.

Per esempio vediamo come si può tradurre dall’inglese all’italiano del testo senza lasciare il text editor in uso o senza aprire una scheda del browser per usare Google Translate. Bene, selezioniamo il testo da tradurre, premiamo CAPSLOCK digitando il comando:

translate to italian

Screenshot di Enso. nell'immagine si vede cosa accade quando si preme CAPSLOCK e si digita il comndo tranlsate

Si noti che non è necessario digitare il comando per intero, è sufficiente digitare le lettere iniziali del comando e l’autocompletamento farà il resto.. Il risultato verrà sostituito al testo selezionato se ci si trova all’interno di un text editor o in una textarea del browser, altrimenti verrà aperta una finestrella che riporterà il testo tradotto.

Non è però che sia tutto rose e fiori :-P . Il traduttore ha almeno un paio di problemi:

  • il risultato della traduzione non è sempre eccelso (credo usi Google Translate), e comunque questo non è un problema imputabile a Enso :-P ;
  • c’è un grosso problema con l’encoding dei caratteri, le accentate ad esempio vengono sostituite da dei punti di domanda :-P ;

il traduttore è comunque in versione Beta ed è quindi probabile che venga migliorato al più presto.

A chi volesse installarlo consiglio di iniziare con il solo Launcher ed eventualmente di installare tutte le componenti solo dopo aver fatto un po’ di pratica con il funzionamento del software. Al momento - purtroppo - non è possibile disinstallare le componenti singolarmente. A prescindere dalle componenti installate è possibile ottenere l’elenco dei comandi attivi premendo CAPSLOCK digitando il comando: commandlist..

Technorati Tags: , , ,

Ti è piaciuto l'articolo? Vota Ok oppure No. Grazie Mille!

Puoi votare l'articolo anche qui, gli articoli precedenti qui.

Da Simple Php a Wordpress

Questo post probabilmente interesserà solo Stormy e in esso spiego un po’ meglio come ho fatto a trasportare il blog da Simple Php Blog a Wordpress.

Per farlo ho utilizzato un piccolo script in Python che salva in un file WXR (Wordpress Extended RSS) tutti i post e i commenti del vecchio blog. Questo file sarà poi importabile in Wordpress che si arrangerà a riempire il database. Lo script non è perfetto ed è ottimizzato per funzionare con il codice che io avevo usato nel vecchio blog, in particolare, non ho previsto una conversione del tag [;img] visto che non lo avevo mai usato (o quasi).

Una volta installato Python (è facile basta cliccare sempre “Avanti”) dovrai scompattare il file che contiene lo script (link) nella cartella di Python (in teoria “C:\Python25″ se scarichi l’ultima versione disponibile). Ora dovrai modificare i due file che ci sono:

head.xml

Contiene delle informazioni generali circa il blog, la sua modifica non è indispensabile in quanto si può sempre cambiare i dati in esso presenti in un secondo momento. In ogni caso, se si decide di modificarlo assicurarsi di salvarlo con codifica utf-8, motivo per cui serve un editor serio tipo Crimson Editor o Notepad++, il Notepad in questo caso non può essere usato.

spb2wp.py

Bisogna modificare le variabili globali (hanno un prefisso gb_, nello specifico:
gb_perc contiene la cartella in cui è salvato il database di Simple Php Blog in locale (attenzione che bisogna usare la doppia “\\” nei percorsi dei file)
gb_url l’url in cui verrà installato il nuovo blog Wordpress (consiglio personale di lasciare il localhost seguito dalla cartella in cui hai installato Wordpress localmente)
gb_categorie le categorie di Simple Php Blog come (numero -> categoria)
gb_feed l’url del feed RSS (o atom) del vecchio blog. Non è indispensabile, serve solo nel caso si voglia creare il file per i redirect 301

Poi ci sarebbe il “gialloporpora” come autore per cui non è stata prevista una variabile, ma anche se lo lasci in fase di importazione Wordpress ti chiederà di assegnare gli articoli ad uno degli utenti presenti sul tuo blog e ignorerà questo campo.

Una volta fatte le modifiche salvare il file normalmente (non con codifica utf-8).

Bene ora basta avviare Python, da commandline:

C:\>cd \python25
C:\>Python25> python

Quando appare il prompt di benvenuto di Python dare i seguenti comandi:
>> from spb2wp import *
> createwxr()
>>> optimizewxr()

Bene, ora il file dovrebbe essere stato creato in “C:\Python25″ con il nome di spb2wp.xml. Non è detto che sia tutto perfetto, anzi è probabile il contrario, ma il file è modificabile con un editor di testo e contiene tutti i post e i commenti del vecchio blog.. Diciamo che con un buon editor di testo con un po’ di Search&Replace si possono correggere in una decina di minuti gli eventuali problemi rilevati. In particolare, cercare eventuali tag ?[;img] o [url=....] ancora presenti nel codice. E’ importante salvarlo con codifica utf-8.

Bene, una volta fatte le eventuali correzioni basta importarlo in Wordpress e sperare !

Purtroppo lo script non è stato pensato per esportare un generico Simple Php Blog ma bensì per esportare solo il mio di blog :P, ci sono quindi delle cose particolari che potrebbero generare problemi su un altro blog (in particolare io ho sempre fatto l’encode degli & quando inserivo HTML puro, se non lo si è fatto bisogna rimuovere una riga di codice).

Non è pensato per esportare le entry statiche per quello bisogna fare a mano. Non ho modificato i vecchi link, ma è possibile creare un file index.php che faccia i giusti redirect 301 e che va messo nella home del vecchio blog (se i due blog sono installati nello stesso percorso bisogna aggiungere il codice all’index.php di Wordpress). Per reindirizzare anche i commenti rinominare il file “index.php” in “comments.php” e caricarlo sul server. Non ho previsto un redirect delle pagine statiche (si sta prima a farlo a mano) nè delle categorie.

Se poi ti trovi bene e vedi che funziona anche a te ti posso dire come modificare i file di SPB in modo da generare una sitemap della morte (update odierno e aggiornamento a never) , ricordo che l’avevo fatta quando avevo traslocato da altervista, ma non mi ricordo di preciso come avevo fatto :-P.

Se ti dà qualche errore (il che è probabile) me lo segnali che provo a personalizzarti il codice.

Nota: il database deve essere vuoto per fare l’import del file perchè non sovvrascrive i vecchi post durante l’importazione (almeno mi sembra)
Questo post probabilmente interesserà solo Stormy e in esso spiego un po’ meglio come ho fatto a trasportare il blog da Simple Php Blog a Wordpress.

Per farlo ho utilizzato un piccolo script in Python che salva in un file WXR (Wordpress Extended RSS) tutti i post e i commenti del vecchio blog. Questo file sarà poi importabile in Wordpress che si arrangerà a riempire il database. Lo script non è perfetto ed è ottimizzato per funzionare con il codice che io avevo usato nel vecchio blog, in particolare, non ho previsto una conversione del tag [img] visto che non lo avevo mai usato (o quasi).

Una volta installato Python (è facile basta cliccare sempre “Avanti”) dovrai scompattare il file che contiene lo script (link) nella cartella di Python (in teoria “C:\Python25″ se scarichi l’ultima versione disponibile). Ora dovrai modificare i due file che ci sono:

head.xml

Contiene delle informazioni generali circa il blog, la sua modifica non è indispensabile in quanto si può sempre cambiare i dati in esso presenti in un secondo momento. In ogni caso, se si decide di modificarlo assicurarsi di salvarlo con codifica utf-8, motivo per cui serve un editor serio tipo Crimson Editor o Notepad++, il Notepad in questo caso non può essere usato.

spb2wp.py

Bisogna modificare le variabili globali (hanno un prefisso gb_, nello specifico:
gb_perc contiene la cartella in cui è salvato il database di Simple Php Blog in locale (attenzione che bisogna usare la doppia “\\” nei percorsi dei file)
gb_url l’url in cui verrà installato il nuovo blog Wordpress (consiglio personale di lasciare il localhost seguito dalla cartella in cui hai installato Wordpress localmente)
gb_categorie le categorie di Simple Php Blog come (numero -> categoria)
gb_feed l’url del feed RSS (o atom) del vecchio blog. Non è indispensabile, serve solo nel caso si voglia creare il file per i redirect 301

Poi ci sarebbe il “gialloporpora” come autore per cui non è stata prevista una variabile, ma anche se lo lasci in fase di importazione Wordpress ti chiederà di assegnare gli articoli ad uno degli utenti presenti sul tuo blog e ignorerà questo campo.

Una volta fatte le modifiche salvare il file normalmente (non con codifica utf-8).

Bene ora basta avviare Python, da commandline:

C:\>cd \python25
C:\>Python25> python

Quando appare il prompt di benvenuto di Python dare i seguenti comandi:
>> from spb2wp import *
> createwxr()
>>> optimizewxr()

Bene, ora il file dovrebbe essere stato creato in “C:\Python25″ con il nome di spb2wp.xml. Non è detto che sia tutto perfetto, anzi è probabile il contrario, ma il file è modificabile con un editor di testo e contiene tutti i post e i commenti del vecchio blog.. Diciamo che con un buon editor di testo con un po’ di Search&Replace si possono correggere in una decina di minuti gli eventuali problemi rilevati. In particolare, cercare eventuali tag ?[;img] o [url=....] ancora presenti nel codice. E’ importante salvarlo con codifica utf-8.

Bene, una volta fatte le eventuali correzioni basta importarlo in Wordpress e sperare !

Purtroppo lo script non è stato pensato per esportare un generico Simple Php Blog ma bensì per esportare solo il mio di blog :P, ci sono quindi delle cose particolari che potrebbero generare problemi su un altro blog (in particolare io ho sempre fatto l’encode degli & quando inserivo HTML puro, se non lo si è fatto bisogna rimuovere una riga di codice).

Non è pensato per esportare le entry statiche per quello bisogna fare a mano. Non ho modificato i vecchi link, ma è possibile creare un file index.php che faccia i giusti redirect 301 e che va messo nella home del vecchio blog (se i due blog sono installati nello stesso percorso bisogna aggiungere il codice all’index.php di Wordpress). Per reindirizzare anche i commenti rinominare il file “index.php” in “comments.php” e caricarlo sul server. Non ho previsto un redirect delle pagine statiche (si sta prima a farlo a mano) nè delle categorie.

Se poi ti trovi bene e vedi che funziona anche a te ti posso dire come modificare i file di SPB in modo da generare una sitemap della morte (update odierno e aggiornamento a never) , ricordo che l’avevo fatta quando avevo traslocato da altervista, ma non mi ricordo di preciso come avevo fatto :-P.

Se ti dà qualche errore (il che è probabile) me lo segnali che provo a personalizzarti il codice.

Nota: il database deve essere vuoto per fare l’import del file perchè non sovvrascrive i vecchi post durante l’importazione (almeno mi semb

Thunderbird: usare l'ultimo post di Twitter come firma

Tempo fa su Lifehacker avevano presentato un programmino che inseriva nella firma di Outlook l’ultima entry di un feed RSS, il programma però non funzionava con Mozilla Thunderbird :-P. Prendendo spunto da questo e dalla firma random presentata su Mente Digitale (che fra l’altro è un SPB :-)), mi è venuto in mente di creare un piccolo script Python per inserire come firma dei Messaggi di posta l’ultima entry di Twitter. Nel caso specifico lo script funziona solo con Mozilla Thunderbird ed è multi piattaforma. Teoricamente si potrebbe utilizzare un qualunque feed RSS e non limitarsi a quello di Twitter, però con un feed normale ci sarebbero dei problemi aggiuntivi che date le mie non eccelse doti di programmatore non sono al momento capace di risolvere, in un futuro si vedrà :-).

I problemi riguardano la lunghezza delle entry nei normali feed, che sono troppo invadenti per potersi usare come firma in una mail, nonchè il problema di gestire la formattazione HTML della entry stessa; con il feed di Twitter questi due inconvenienti sono risolti direttamente alla fonte: una entry di Twitter è un breve messaggio che ha al massimo 160 caratteri e non contiene nessuna formattazione HTML. Tagliare il feed dopo 160 caratteri è semplice, più complicato sarebbe fare un taglio “intelligente”, e gestire la formattazione a seconda che si usi una firma HTML o una firma in puro testo. Per tagliare la testa al toro per ora lo script funziona solo con i feed di Twitter :-P.

Requisiti:

Non mi dilungo oltre su come installare Python, ne su come installare il modulo Feedparser, in caso qualcuno dimostri interesse posso provare a “compilare” (non è proprio una compilazione in realtà) lo script con py2exe in modo da farlo funzionare come file EXE, nel qualcaso cercherò di scrivere qualcosa a prova di gengiscan2005 (beh forse questo è difficile :-P).

Qui di seguito il codice che va salvato nella stessa cartella in cui si trova il file usato come firma in Mozilla Thunderbird e che io ho chiamato twittersig.py:

File: twittersig.py

# File twittersig.py - autore: gialloporpora
# importa il modulo feedparser.py
import feedparser
# nella variabile twitter_feed va inserito il feed che volete sia usato per la firma delle vostre email
twitter_feed="http://twitter.com/statuses/user_timeline/1320531.atom"
# *nome_file_firma* deve contenere il percorso del file usato come firma in Thunderbird, se il file twittersig viene creato nella stessa cartella in cui si trova il file di firma
#  non e' necessario  specificare  il percorso, ma solamente il nome del file stesso, in ogni caso, per evitare  di dover fare l'escape dei backslash  (\\  al posto di \) viene definita come stringa grezza (r che precede la stringa stessa)
nome_file_firma=r"e:\firme\firma.txt"
# crea l'oggetto file
file_firma=open(nome_file_firma,"w")
# usa il metodo parse definito nel modulo feedparser per leggere il feed
x=feedparser.parse(twitter_feed)
# la prima entry del feed viene  usata come firma
firma=x['entries'][0]['title']
# scrittura del file di firma, e’ necessario utilizzare la giusta codifica caratteri, se si utilizza una codifica diversa da utf-8 nella composizione
# dei messaggi e’ necessario modificare utf-8 con la codifica in uso
file_firma.write(firma.encode(”utf-8″))
# chiude il file
file_firma.close()

I parametri da modificare sono:

  • twitter_feed - l’indirizzo del feed di twitter;
  • nome_file_firma - il nome (eventualmente con il relativo percorso) del file utilizzato come firma in Mozilla Thunderbird;
  • opzionale - la codifica caratteri utilizzata per comporre i messaggi.

Per togliere eventuali problemi legati al PATH si può utilizzare un file BAT per lanciare lo script:

PATH=%PATH%;C:\Python24\
python twittersig.py

Per eseguire lo script ogni TOT secondi io ricorrerei alle operazioni pianificate di Windows, su Mente Digitale invece viene spiegato come derogare questo compito al file BAT stesso. Il file Choice.com utilizzato per impostare l’attesa nell’esecuzione non è però disponibile su Windows XP, potete scaricarlo da qui, o scegliere un modo alternativo per settare l’attesa in un file BAT, che consiste nel fare “N” ping a localhost. Personalmente non è che mi piaccia molto, in ogni caso inserendo una riga del genere nel file BAT:

ping -n 60 127.0.0.1 >NULL

si blocca l’esecuzione dello script per circa un minuto. Ritengo comunque preferibile la scelta di utilizzare le Operazioni pianificate. Nel post su Mente Digitale viene spiegato come creare il file VBS per bloccare il pop-up della shell dei comandi e come ottenere la stessa cosa su sistemi Linux (dove la cosa è molto più semplice anche perché Python è incluso in molte distribuzioni).