Come impostare un autocompletamento “umano” per Python in Geany

Da tempo il mio editor preferito per programmare è geany (con gedit buon secondo), così come il mio linguaggio dei sogni è e resta Python.

Uno dei problemi che ho sempre riscontrato in geany era l’autocompletamento del testo: attivandolo ottenevo oltre ai termini pertinenti al file in modifica, una pletora di metodi e classi che nulla hanno a che fare con il mio progetto.

completationWRONG

Indagando un po’ sono arrivato a questa mail del 2009 sulla mailing list degli sviluppatori che dice:

Geany has a file named python.tags, probably located
in /usr/share/geany on your system. This files contains the 
available symbol names for Python. [...]
However, this is far from being good. For instance, the symbol
completion is not context-sensitive, i.e. it doesn't take into 
account of which class the current object is when showing 
completions. It is a more or less a basic or stupid completion 
without any scope information.
"Geany ha un file di nome python.tags, con tutta probabilità 
presente nella directory /usr/share/geany del tuo sistema. Questo 
file contiene i nomi simbolici disponibili per Python. [...].
Comunque, questo (metodo) è lontano dall'essere ottimale. Per 
esempio, il completamento dei simboli non è sensibile al contesto, 
quindi non tiene in conto il tipo di classe a cui l'oggetto corrente
 appartiene mentre mostra i suggerimenti per l'autocompletameno. Si
 tratta più o meno di un basilare/stupido completamento privo di
 qualsiasi informazione sullo scope (del testo)."

Quindi la situazione già nel 2009 non era delle più rosee, e a quanto pare non è migliorata di molto da allora. Cosa fare dunque? Beh, semplicemente basta liberarci da quest’inutile file rinominandolo (così da poterlo ripristinare in caso di ripensamento):

sudo mv /usr/share/geany/python.tags /usr/share/geany/python.tagsBACKUP

ed ecco come cambia il completamento:

completationRIGHT

Certo, l’autocompletamento non è ancora ottimale ma alla fine fa il suo lavoro senza inondare lo schermo di inutili “suggerimenti”.

Enjoy

Pubblicato in informatica, linux, mini guide | Contrassegnato , , , , , , | 1 commento

Come usare più distro Linux e mantenere sincronizzati i propri programmi

Salve a tutti!
Questo pezzo è una premessa ad un altro che scriverò a breve sulla modifica dei PKGBUILD in archlinux.

Una delle cose che preferisco di Linux è la possibilità di ‘saltimbancare’ tra diversi programmi, desktop environment, distribuzioni etc.

Questo mi porta ad avere almeno 2 distro contemporaneamente sul computer di lavoro. In questo periodo ho infatti installati e pronti all’uso elementary OS luna beta e l’onnipresente rolling release archlinux. Oltre a windows 7 che però non fa testo, specie in questo post.

Ora, il problema di quest’approccio è che anche usando gli stessi programmi in entrambi gli OS, questi non vengono sincronizzati.

Facciamo un esempio con Thunderbird, il mio amato client email.
Immaginiamo di stare su elementary OS: scarico la posta e la leggo.
Se poi mi sposto su archlinux, aprendo Thunderbird e scaricando la posta otterrò che tra i messaggi nuovi avrò anche quelli già scaricati (e letti) su elementary OS. Cosa fastidiosa direi, che vanifica il divertimento di utilizzare più distro sul proprio computer.
Stesso discorso lo si può fare con Liferea, il mio lettore di feed RSS.

Ora, il problema non è comune solo al mondo Linux: tutti noi accediamo ai nostri dati (email, feed, bookmarks) da diversi dispositivi e da diversi OS. I modi per risolverlo sono i più svariati, solitamente ci si appoggia alla “nuvola” (cloud computing) e ad opportune opzioni di sincronizzazione dei vari programmi.Fortunatamente però, nel caso specifico di distro Linux si può ovviare al problema in modo banale e senza far passare i nostri dati attraverso oscure connessioni ad internet: basta far condividere la cartella impostazioni del programma tra i due OS.Ogni programma infatti salva le proprie impostazioni nella home dell’utente (solitamente in ~/.nomeProgramma o in ~/.config/nomeProgramma)

 nota 1: ~ è usato in Linux per indicare la home dell’utente, nel mio caso equivale a /home/medeo

nota 2: una cartella il cui nome inizia con il punto (.) in Linux è una cartella nascosta, se siete nella vostra home e non vedete le cartelle di configurazione provate a premere CTRL+H ;-)

Per esempio liferea salva i propri dati in ~/.liferea_1.8, quindi basta creare un collegamento (a.k.a. link simbolico) tra queste cartelle per fare in modo che i programmi siano automaticamente sincronizzati!

Entriamo nello specifico.

  • Indichiamo i due OS con OS_1 e OS_2.
  • Definiamo con OS_1 il sistema operativo principale (solitamente quello che usiamo più spesso e che prevediamo starà più a lungo sul nostro hard disk) in cui tenere le cartelle reali di configurazione. In OS_2 avremo i collegamenti alle cartelle reali.
  • Prerequisito  per questa operazione è che i due OS ‘si vedano’, ossia che posso accedere ai dati di OS_1 da OS_2 e viceversa. Se non si vedono consultate questa guida o chiedete nei commenti.
  • Non è strettamente necessario che i programmi installati nei due OS siano alla stessa versione: il trucchetto solitamente funziona anche tra versioni diverse dello stesso programma, tranne eccezioni.

Ora vediamo come eseguire l’operazione per Liferea, la cui cartella di configurazione si trova nella home utente.

L’operazione può essere compiuta da file manager o da terminale, vediamo come:

dal file manager di OS_2 (l’OS secondario) procediamo come segue:

1) rinominiamo ~/.liferea_1.8 in ~/.liferea_1.8_BACKUP
2) creiamo nella nostra home un collegamento alla cartella .liferea_1.8 di OS_1
3) testiamo che tutto sia andato come deve
4) cancelliamo tranquillamente la cartella di backup creata al punto 1

come eseguire le operazioni sopra indicate dipende ovviamente dal file manager che usate.

da terminale invece procediamo come segue:

1) creiamo una copia di backup della configurazione semplicemente rinominando la cartella relativa

mv ~/.liferea_1.8 ~/.liferea_1.8_BACKUP

2) creiamo il collegamento alla cartella di configurazione di OS_1.

ln -s /path_per_OS1_home/.liferea_1.8 ~/

(nel mio caso path_per_OS1_home è /archHome/medeo)

3) lanciamo il programma e vediamo se tutto è ok

liferea

4) se tutto ok cancelliamo la cartella di backup precedentemente creata

rm -r ~/.liferea_1.8_BACKUP

Un altra alternativa sarebbe quella di condividere l’intera home tra i due OS, magari ponendo quest’ultima in una postazione separata; Questa soluzione però comporta problemi in caso di Desktop Environment differenti, o di versioni differenti dello stesso DE.

Spero di essere stato utile, se avete dubbi… beh, i commenti sono li apposta per voi :-)

Pubblicato in informatica, linux, mini guide | Contrassegnato , , , , , , , | Lascia un commento

Gnome 3 you are doing it wrong: the close button

Hi all!
In the first release of the new Gnome 3 there was an interesting post of Allan Day  that explained why the classic 3 buttons configuration (minimize, maximize and close) in windows was antiquate.
In the post there was nothing against close button but now things seem to be changed.
The new guidelines for the “new generation gtk3/gnome3 applications” (still a draft) say “Your application’s primary windows should typically be maximized by default and their title bars hidden.
No more title bars? no more close button. So you need one more click to close a window:

first click on Web, than go down and click close (chiudi in the screenshoot)

So let’s examine this solution:

pro: you get less clutter and more space on a maximized windows (since you don’t have the title bar anymore)

cons: close button disappear, new user can’t find it. If you know how to close windows, you still need one additional click for such a common operation.

Please don’t underestimate the importance of one additional click

So here again: trying to give a better interaction to the user ends with force him to do extra tasks. Is it what we all want?

Pubblicato in informatica, linux | Contrassegnato , , , , , , , | Lascia un commento

New games for the good old commodore 64

[Disclaimer]
I’m Italian, i’m trying to write posts in English the best i can in order to improve my skills with it, sorry for any typo you can find, i hope you can still find my posts useful, any suggestion/correction are really appreciated :-D

I love c64! It was my first computer (actually, a c128 eternally in c64 mode) and i’ve spent loads of hours playing with his amazing games!

I still play with it via emulator, and have fun discovering hidden gems that i’ve lost back in the days.

The good ‘news’ is that i’m not the only one, and that there’s still lots of developers heavily active producing great new games for the good old commie.

Don’t you believe me? so take a look at this list

http://ready64.it/giochi/list.php?anno=2011

31 new games last year, not so bad, isn’t it?

if you want to see other list just change the year value in the link above.

From the list let me point your attention to…

C64anabalt

this is the c64 version of the flash games canabalt by Paul Koller aka Paulko64
you can grab the game here: c64anabalt

and, if you thing that the conversion is not so accurate, you can try this other one made by Andreas Varga aka Mr. SID :)

Mr. SID who? mmm, take a look at this other video :)

Prince of Persia

yeah! the good old Prince have never seen a release on the c64… till now!
It was a great work by Mr. SID and you can grab it here: canabalt unofficial

Hope you can enjoy it :D

Pubblicato in giochi, informatica, linux | Contrassegnato , , , , , , , , | Lascia un commento

Restore previous session when erroneously close Firefox

Hi all!

First post of this blog in English language: i need to improve it and writing posts in English may help.

I’ll do loads of mistakes for sure, so i hope that you still can find my posts useful :)

OK, let’s start with this “quick and dirty” for Firefox.

If you have lots of  opened tags in Firefox (5+ depending of your system), the new tab widget may be really close to (sorry for the pan) Firefox close button. So you could erroneously close Firefox and lose all your beloved tags…

Ok, i guess it depends on your setting, my Firefox is set to forget the opened tabs when i close it and reopen it. That’s because i usually don’t want them to be reloaded when i restart Firefox, and it’s really useful if you want to simply shut down your system without closing all your opened application (Firefox included).

So… what do you have to do when accidentally  close Firefox? Digging in the history could be the best way but there is a even better way: in the history menu there is a special item: “Restore Previous Session”, just click it and… ta-dah!!! you have all your tabs restored!

Useful, isn’t it?

Enjoy!

Pubblicato in informatica, linux, mini guide | Contrassegnato , , , , , , , | Lascia un commento

Eseguire codice python in gedit

Salve a tutti!

Riprendo al volo il blog per aiutare un lettore (ciao Stefano!) che ha commentato il mio precedente post completamento testo in gedit dicendo:

manca solo la possibilità di avviare il mio codice python direttamente da gedit e poi è perfetto! esiste un plugin che permette di fare questo (per evitare di uscire dall’editor e andare a scrivere da terminale)?

Ebbene, il plug-in esiste ed è distribuito insieme a gedit stesso: si tratta di “Strumenti esterni” (a.k.a. External Tools).

Il plug-in è molto potente e permette di scriptare in bash il nostro gedit e associare a questi script delle scorciatoie da tastiera in modo da averli sempre a disposizione. Fra gli script presenti di default abbiamo per esempio uno per rimuovere gli spazi di fine riga.

Nel nostro caso lo script è abbastanza semplice, tanto che ho pensato di lasciarvi una semplice schermata in cui sono visualizzati tutti i parametri usati, in modo che basta impostare i settaggi come in foto e avrete magicamente la possibilità di eseguire il vostro codice python direttamente da gedit!

NB1: io ho impostato F5 come shortcut, voi potete usare quello che più vi aggrada

NB2: importante! io uso Arch Linux, dove python 2 viene lanciato con il comando “python2″ mentre usando semplicemente “python” viene lanciato python 3. Per quanto ne so è una caratteristica solo di Arch, quindi se non vi funziona lo script provate a mettere “python” e dovrebbe filare tutto liscio.

Di seguito la schermata:

Eseguire codice python direttamente da GEdit

Enjoy!

Pubblicato in informatica, linux, mini guide | Contrassegnato , , , , , , , , , , | 3 commenti

Intervista a GCampax, italianissimo coder di Gnome e delle sue estensioni!

Bentrovati ragazzi!

Post speciale quest’oggi, ho infatti il piacere di presentarvi la mia prima intervista!

Avendo avuto modo di conoscere Giovanni Campagna, l’italianissimo manutentore della pluriscaricata estensione dock di gnome-shell e di tantissime altre! Ho ben pensato di chiedergli un’intervista e, come potete vedere, la mia richiesta è stata esaudita :)

Bando alle ciance quindi, e iniziamo con le domande!

Ciao Giovanni, innanzitutto benvenuto e grazie per aver accettato l’invito!

Di nulla, ci mancherebbe!

L’inizio è d’obbligo: presentati ai nostri lettori :)

Salve, sono Giovanni Campagna e sono uno studente del primo anno di ingegneria informatica al Politecnico di Milano, che a tempo perso contribuisce a GNOME, soprattutto per la Shell.

Come sei entrato a far parte del fantastico mondo Linux? È stato amore a prima vista?

Il primo sistema con Linux (un Red Hat 9) l’ho avuto molti anni fa, poi ero passato per un periodo a Kubuntu (8.04 la prima), che però puzzava di distro poco supportata perché Ubuntu come desktop primario ha GNOME, quindi avevo installato Fedora KDE (ero giovane e inesperto!). Sono passato a GNOME attorno a Fedora 12, e il motivo principale è che GNOME è il desktop ufficiale di GNU (che non vuol dire nulla, ma comunque…). Ci sono stati negli anni un po’ di conflitti, e tante giornate passate davanti a un terminale fisico cercando di recuperare il recuperabile, però ormai ci sono affezionato. In più, straordinariamente, a me il sistema funziona ormai out-of-the-box, mentre a chi cerco di diffonderlo da una pila di problemi.

Qual è stato il tuo primo contributo al mondo FLOSS (Free Libre Open Source)?

Non ricordo esattamente come ci fossi arrivato, però a un certo punto sono capitato sulle pagine di design della Shell, mi son detto “figo!”, e da lì ho cominciato a “rompere le balle” in bugzilla. Il primo bug in assoluto era una richiesta di API per cominciare a scrivere estensioni (all’epoca [2.27.spiccioli] delle estensioni c’era solo l’idea e il modo di caricare un file JS), con lo scopo di usarle per gli indicatori di stato (ossia le icone in alto a destra nel pannello della Shell che raggruppano funzionalità specifiche in comodi menù, N.d.R.), che sono stati la mia prima occupazione e ad oggi il contributo più grande che ho dato alla Shell. (L’idea era che Ubuntu già usciva con gli appindicators, e upstream GNOME non poteva essere da meno)

Che ne pensi di Gnome 3 e della nuova impostazione all’esperienza Desktop che sta portando avanti?

All’inizio ero scettico anch’io per certi versi (soprattutto l’assenza di una taskbar), poi in realtà è una questione di abitudine. A un certo punto uno comincia a doppio-cliccare le finestre per massimizzarle (in gnome3 il pulsante per massimizzare la finestra è stato rimosso, lo si può comunque reimpostare facilmente, N.d.R.), o a muovere il mouse nell’angolo per cambiare app, o aspettarsi che lo spazio di lavoro sparisca insieme all’ultima finestra, anche quando usa un altro sistema (rimanendo per un attimo perplesso).

Va detto che la Shell è davvero bella da vedere, assolutamente non paragonabile a GNOME 2, ma nemmeno a KDE 4.7.

Quanto all’impostazione in generale, sono contento che ci stiamo dirigendo verso un GNOME OS, unico per tutti, un vero e proprio prodotto integrato destinato all’utente finale, anche se nella fase di transizione potrebbe far comodo essere più aperti verso le distribuzioni (vedi la questione del control center).

Cosa ti ha spinto a partecipare attivamente allo sviluppo di estensioni per Gnome-shell? Sentivi la mancanza di qualcosa?

Per alcune sì, in particolare alternative-status-menu, dato che ancora oggi non riesco a capire perché, perché, perché uno debba premere Alt per spegnere il computer (o peggio, fare prima logout) (di default è impostata la sospensione…, N.d.R.). In generale però l’idea era che molta gente aveva postato la propria estensione sulla mailing list, e dopo un po’ rischiavano di andare perse nel mucchio (eravamo prima della 3.0, e le lamentele erano all’ordine del giorno), quindi decisi di aprire un repository per contenerle tutte (o per lo meno, quelle più importanti o meglio sviluppate). Nel tempo, soprattutto dopo le release stabili, ci sono stati tanti altri centri di aggregazione (come le Frippery o le MGSE), e sono esplosi con l’apertura di extensions.gnome.org, ma l’idea originale era raccogliere e conservare il lavoro degli altri.

Sul sito extension.gnome.org risulti essere uno degli sviluppatori più attivi, sono tutte tue?

Assolutamente no. Io figuro come “owner” di quelle estensioni perché sono il loro manutentore e periodicamente le aggiorno (oltre a correggere bug e garantire che continuino a funzionare shell dopo shell), ma originariamente sono state scritte praticamente tutte da altri. Completamente mie sono removable-drive-menu, alternative-status-menu e monitor-status-indicator (e tutte e tre nascevano come modifiche alla core shell).

Qual è fra le tue estensioni quella a cui tieni di più? Quali quelle che usi regolarmente?

Ovviamente alternative-status-menu! Quanto all’uso però non sono regolare, sia perché sono convinto dell’esigenza di “una shell” e non mille, e sia perché, dovendo alternare tra la versione 3.3.* e la 3.2.*, ogni volta sono sempre installate per la versione sbagliata.

L’era pre-gnome3 ha visto un esplosione di dock (docky, awn, cairo-dock, plank), una competizione che ha portato ad avere prodotti molto validi e ricchi di funzionalità (in alcuni casi anche troppe, sto pensando a cairo-dock…). Con gnome 3 e soprattutto con le notifiche poste in basso al centro dello schermo l’interesse per queste dock è andato scemando. Come ti poni nei loro confronti? Ce n’è qualcuna che ti piace particolarmente e a cui ti inspiri?

Non ho mai usato dock esterne, né per GNOME né prima per KDE, dato che ritengo ibridino il sistema, mescolando toolkit e policy da progetti diversi. Per quanto avanzata e ben fatta, una dock non può sostituirsi a un componente del sistema operativo che opera in accordo al compositor e al resto della shell (e il fatto che X lo permetta è un difetto incolmabile che Wayland risolverà), quindi secondo me spariranno da sole, o rimarranno vive per i “desktop modulari” come Xfce o LXDE.

In quest’ottica, quali sono i progetti futuri per la tua dock? Quali novità potremo attenderci in futuro?

La dock, come per altro tutte le altre estensioni, sono in maintenance mode, dato che se ci sono funzionalità davvero utili, queste devono finire nella core shell e non in un’estensione. Quanto a novità, probabilmente cercherò di riallinearmi alla dash, sia come stile, sia come contenuto dei menu (che, forse, presto guadagneranno delle jumplist), cercando di sfruttare più codice possibile. Oltre a quello, beh, cercherò di fixare i vari problemi.

Mai come in questo momento il mondo Desktop è in fermento: ogni team cerca di dare la sua visione di quella che sarà l’esperienza utente del futuro, cercando di ibridarla con il mondo tablet e mobile oramai difficile da ignorare. Che ne pensi dei tentativi di far convivere interfacce touch e ‘mouse-driven’? Gnome3 è forse l’ambiente che più si sta muovendo in questo senso…

Che, si può dire quello che si vuole, ma “cic e ciac, pinch e stich” è davvero figo, e io non vedo l’ora di avere uno schermo full touch. Naturalmente, a questo si affianca una tastiera fisica, ma l’idea di ridurre l’uso del mouse esterno (che è scomodo da portare in giro e su un sacco di superfici non funziona bene) secondo me è appropriata. Per altro, la Shell non è affatto un’interfaccia “per tablet”, se mai è un misto che cerca di adattarsi a tastiera (Super, Alt-Tab), mouse (hot corner, message tray), touch (on screen keyboard, workspace/app view), cercando di sfruttare il meglio di tutti e tre, e secondo me ci riesce abbastanza bene. Meglio della concorrenza, se non altro.

Che ne pensi di Unity?

È Ubuntu. E patcha (apporta modifiche, sue o di terzi, al codice originale, N.d.R.), pesantemente, per riuscire ad avere l’integrazione necessaria.

Come desktop in sé non è male, soprattutto per la ricerca che sfrutta le varie applicazioni installate (per altro, questo prima o poi arriverà anche alla Shell). Poi vabbè, notify-osd è una cosa impossibile, sempre in mezzo quando non serve.

E del progetto Elementary?

Non lo conosco molto, ma mi sembra una cosa di nicchia.

KDE, forse il DE linux tecnologicamente più avanzato. Cosa ne pensi? Personalmente non sono mai riuscito a farmelo piacere, e si che ci ho provato :-)

Come ho detto, KDE l’ho usato per un periodo, ed è anche bellino, se uno ci impiega quella settimana circa a renderlo usabile. Il problema è che non si può pretendere che un utente sappia cos’è il “backend di Solid” o il “plasmoide delle notifiche Freedesktop”. E poi i menu delle app KDE fanno paura, ci sono troppe cose inutili! (su quest’ultimo punto non posso che concordare… N.d.R.)

Linux Mint cerca invece di far convivere le nuove tecnologie di Gnome3 con una visione classica del desktop (MGSE, Cinnamon). È la strada da seguire?

Da un lato, rimanere con GNOME 2 e correlati è sicuramente sbagliato, perché (a parte GTK in sé, e Glib che non hanno aggiornato), praticamente tutte le librerie sono state o stanno per essere deprecate. Dall’altro, è una questione di quale metafora desktop si vuole perseguire. Al desktop summit di quest’anno mi è rimasta impressa una frase “GNOME 2 was the perfect Windows 95”: se a uno piaceva quello, ben venga, ma certo non può negare che il mondo va avanti, e la taskbar classica o il menu come quello di Windows XP/Vista/7 sono concetti ormai superati.

Terminiamo questo excursus fra i vari ambienti desktop con “il principale esponente dello schieramento a noi avverso” (cit.): che ne pensi di Metro, la nuova interfaccia del futuro Windows 8?

L’ho vista, ma non l’ho provata. Sembra però troppo phone/tablet-like, nel senso che si focalizza sul sistema e sul social (fornendo quindi ad esempio accesso da una sola schermata alla posta e alla chat). Sarebbe da vedere com’è usare un Visual Studio o una Creative Suite su un sistema così.

Personalmente non sono molto aggiornato sul mondo Apple, hai qualche opinione sull’OS della mela morsicata?

Non so molto neanche io, tranne che è molto lucido e tuttavia privo di reali funzionalità. Una trappola per allocchi con elevata disponibilità a pagare.

Ok siamo arrivati al termine di questa lunga intervista, c’è qualcosa che vorresti aggiungere prima di salutarci?

È scontato, però spero che a questo punto passiate tutti a un sistema con GNOME 3.4, abbandonando il male (Windows, Mac) e il meno bene (Unity).

Grazie mille per il tempo concessoci, ora puoi tornare a sviluppare :-)

Torno ad Analisi 1, a dire la verità, ma non diciamolo troppo forte in giro!

Pubblicato in informatica, linux | Contrassegnato , , , , , , , , , , , , , , | Lascia un commento