Grimmo.it

Io non mi sento Italiano ma perfortuna o purtroppo lo sono

La mia prima applet per Cinnamon

Written By: grimmo - dic• 18•12

Da quando ho aggiornato il PC alle ultime versioni di Ubuntu sono rimasto inorridito sia da Unity che da Gnome 3.2. Per questo motivo ho scelto la strada di Cinnamon, che mi sembra un buon compromesso tra il vecchio gnome 2 e il nuovo che inevitabilmente avanza.

Una delle cose che apprezzo maggiormente di gnome shell e cinnamon è la possibilità di scrivere facilmente delle applet, utilizzando Javascript. La cosa mi torna proprio a fagiolo perché usando fetchmail in modalità daemon per scaricare la posta ogni 2 minuti, mi capita spesso di dover forzare lo scaricamento immediato delle mail. Normalmente dovrei lanciare fetchmail da un terminale, ma non sarebbe più semplice cliccare su un’applet nel pannello? Vediamo come fare..

Per prima cosa bisogna scegliere un identificativo univoco (UUID) per la nostra applet, che sia nella forma nome@qualcosa. Questo qualcosa può essere un nome di dominio oppure un termine inventato, nel mio caso l’uuid che ho scelto è fetchmail@grimmo

Una volta scelto l’identificativo, andiamo a creare una cartella con lo stesso nome sotto
~/.local/share/cinnamon/applets

(oppure in /usr/share/cinnamon/applets se vogliamo che l’applet sia visibile da tutti gli utenti del sistema)

Nel mio caso la cartella si chiamerà: ~/.local/share/cinnamon/applets/fetchmail@grimmo/

All’interno di questa cartella dovremo creare 2 file

Il primo file si chiama metadata.json e come dice il nome stesso, contiene i metadati che descrivono la nostra applet.

{
"uuid": "fetchmail@grimmo",
"name": "Scarica posta",
"description": "Clicca sull'icona per scaricare
immediatamente la posta",
"icon": "mail-unread"
}
    • uuid è l’identificativo univoco che abbiamo scelto per la nostra applet
    • name è il nome che comparirà nell’elenco delle applet
    • description è la descrizione leggibile sempre nell’elenco delle applet
    • icon è l’icona che compare nell’elenco delle applet.

Ora, non ci crederete, ma capire come funziona il parametro icon è stata la cosa più difficile di tutto il lavoro! Il file con l’icona non è incluso nella cartella dell’applet, il nome non contiene l’estensione del file e guardando i sorgenti delle altre applet o leggendo la documentazione, non si capisce affatto dove diavolo si trovino i file con le icone e in base a quale criterio si possa usare un’icona piuttosto che un’altra. Né come crearsene una propria. Inoltre, questo parametro servirà anche nel prossimo file, quello che rappresenta l’applet vera e propria e sarà fondamentale per scegliere con quale icona verrà visualizzata la nostra applet nel pannello di cinnamon. Ragion per cui non si tratta di un dettaglio trascurabile, eppure il tutorial che ho seguito non ne parla, lo da per scontato.

Dopo lungo rovistare, ho capito che le icone in questione possono essere legate al tema grafico, ma anche no. Io ho “rubato” un’icona da /usr/share/icons/gnome che si chiama mail-unread.png. Questa icona rappresenta una busta da lettere con sopra una stellina gialla. E’ probabile che, volendo perderci tempo, avrei potuto disegnare la mia icona e buttarla nei vari formati dentro /usr/share/icons/gnome e magari sarebbe anche stata riconosciuta, ma sinceramente al momento non ne valeva la pena. Proseguiamo.

Il secondo file che va creato nella cartella della nostra applet si chiama, manco a dirlo, applet.js ed è l’applet vera e propria.

const Lang = imports.lang;
const Applet = imports.ui.applet;
const GLib = imports.gi.GLib;
const Gettext = imports.gettext.domain('cinnamon-applets');
const _ = Gettext.gettext;
function MyApplet(orientation) {
this._init(orientation);
}
MyApplet.prototype = {
__proto__: Applet.IconApplet.prototype,
_init: function(orientation) {
Applet.IconApplet.prototype._init.call(this, orientation);
try {
this.set_applet_icon_name("mail-unread");
this.set_applet_tooltip(_("Clicca qui per scaricare immediatamente la posta"));
}
catch (e) {
global.logError(e);
}
},
on_applet_clicked: function(event) {
GLib.spawn_command_line_async('fetchmail');
}
};
function main(metadata, orientation) {
let myApplet = new MyApplet(orientation);
return myApplet;
}

Potete trovare la spiegazione dettagliata, in inglese, sul significato di ogni riga sul blog di Cinnamon, ma quello che ci interessa sapere è:

try {
this.set_applet_icon_name("mail-unread");
this.set_applet_tooltip(_("Clicca qui per scaricare immediatamente la posta"));
}

Questo blocco di codice imposta, ancora una volta, l’icona da visualizzare e il testo del tooltip che compare quando si posiziona il puntatore del mouse sulla stessa.
L’altro costrutto importante è

on_applet_clicked: function(event) {
GLib.spawn_command_line_async('fetchmail');
}

Questo dice a Glib di lanciare il comando fetchmail ogni qualvolta verrà cliccata l’icona della nostra applet. Ovvero tutto ciò che ci serve! Naturalmente non c’è nessun feedback visivo sul fatto che il comando sia andato a buon fine e sia realmente successo qualcosa. Eppure funziona! Potete iniziare da subito ad utilizzare la vostra nuova applet, basta andare su “aggiungi applet” e sceglierla dall’elenco delle applet esistenti. Se avete seguito correttamente le istruzioni la troverete lì, in bella mostra, con l’icona che avrete scelto. Come primo tentativo penso che sia sufficiente. Tutto il resto è stato preso da How to make a Cinnamon applet (Force quit applet tutorial) nel blog di Cinnamon, che vi invito a leggere.

Tachimetro in javascript e html5 che si aggiorna automaticamente via ajax

Written By: grimmo - ott• 12•12

L’altro giorno mi è capitato di implementare un widget per visualizzare il conteggio di quante persone si trovano all’interno della biblioteca in un certo momento. Ho pensato ad un indicatore analogico vecchio stampo, stile tachimetro da automobile e dopo alcuni tentativi ho trovato questo: https://github.com/Mikhus/canv-gauge

E’ open source, è interamente fatto in Javascript e sfrutta il nuovo tag <CANVAS> di HTML5. Per questo motivo non funziona su internet explorer.. oh beh, tanto meglio!

Il dato mi arriva in formato JSON da un web service che ho creato appositamente, ma si può utilizzare qualsiasi dato in qualsiasi modo, l’importante è chiamare la funzione gauge.SetValue(valore) per aggiornare la lancetta sul tachimetro.

Una volta decompresso il file zip scaricato da GitHub, vi troverete il file gauge.js da includere nella vostra pagina web, più due pagine html di esempi che vi mostreranno le varie possibilità di configurazione del tachimetro.

Il javascript di base da includere nella vostra pagina è minuscolo e comprende già tutto quello che occorre.

<html>
<head>
<script src="gauge.js" />
</head>
<body>
<h1>Prova tachimetro</h1>
<canvas id="miotachimetro"></canvas>
<script type="text/javascript">
// Ricordatevi di sostituire miotachimetro
// con l'id che avete assegnato al tag canvas
// nella vostra pagina web!
var Gauge = new Gauge({ renderTo: 'miotachimetro' });
// disegna il tachimetro
gauge.draw();
</script>
</body>
</html>

Così però il tachimetro è ben poco attraente: segna zempre zero e ha la grafica predefinita. Adesso provate a migliorarlo impostando qualche opzione in più nel Javascript che avete inserito prima..

var gauge = new Gauge({
renderTo : 'gauge',
// Dimensione del tachimetro
width : 400,
height : 400,
// Attiva i contorni luminescenti
glow : true,
// Visualizza l'unità di misura
// utilizzata dal tachimetro
units : 'Km/h',
title : 'Contachilometri',
// Valore minimo della scala
minValue : 0,
// e valore massimo
maxValue : 220,
// Lista delle cifre sul tachimetro
// per le quali vogliamo le tacche grandi
majorTicks : ['0','20','40','60','80','100','120','140',
'160','180','200','220'],
// Quante tacche intermedie
// ci sono tra ogni tacca grande?
minorTicks : 2,
// Qui definisco dei colori
// di sfondo per le tacche a seconda del valore

/*highlights : [
{ from : 0, to : 100, color :
'rgba(0, 255, 0, .15)' },
{ from : 100, to : 160, color :
'rgba(255, 255, 0, .15)' },
{ from : 160, to : 220, color :
'rgba(255, 30, 0, .25)' }
],*/

// Questi sono i colori dei
// vari componenti del tachimetro

colors : {
plate : '#222',
majorTicks : '#f5f5f5',
minorTicks : '#ddd',
title : '#fff',
units : '#ccc',
numbers : '#eee',
needle : { start : 'rgba(240, 128, 128, 1)',
end : 'rgba(255, 160, 122, .9)' }
}
});

// Piccola funzione che aggiorna il tachimetro
// con un valore casuale fino a un massimo di 220
// ogni 1000 millisecondi, cioé una volta al secondo.

gauge.onready = function() {
setInterval( function() {
gauge.setValue( Math.random() * 220);
}, 1000);
};
gauge.draw();

Una volta applicate le modifiche, dovreste ottenere qualcosa del genere:

molto meglio, vero?

Ora non rimane che aggiungere l’aggiornamento periodico del valore indicato dal tachimetro usando una richiesta AJAX, nel mio caso fatta a un web service che
restituisce il valore in formato JSON costruito in questo modo:

{"presenti": [[157]]}

Per comodità ho usato jQuery, per cui tutto ciò che ci serve è modificare la funzione gauge.onready() includendo la chiamata AJAX:

gauge.onready = function() {
setInterval( function() {
jQuery.getJSON("url_conteggio_presenti.json",
function(json) {
// Utilizzo l'attributo presenti dell'oggetto json
// per aggiornare il valore del tachimetro
gauge.setValue(json.presenti);
});
// ogni 3 secondi
}, 3000);
};
gauge.draw();

Fatto!

Il 2 agosto 1980 e altre storie

Written By: grimmo - ago• 06•12

Giusva Fioravanti ha tutto il diritto di continuare a proclamare la sua innocenza. Ha tutto il diritto di dire, come chiunque altro, ciò che vuole. Ma io il diritto di ricordarmi che era Giusva Fioravanti. Ricordarmi di lui e di quelli che erano con lui: Alessandro Alibrandi, Massimo Carminati, Gilberto Cavallini che il 27 aprile 1976 insieme ad altri camerati in via Uberti, a Milano, squarciò a coltellate l’addome di Gaetano Amoroso, “vestito da compagno”. Ricordarmi di quando Fioravanti e i suoi venivano a Milano, per cercare compagni da ammazzare anche in trasferta.

Ci sono storie che continuano a mettere i brividi. Il 28 febbraio 1978 Fioravanti e i suoi a Roma sono a “caccia di rossi”. In piazza San Giovanni Bosco ci sono alcuni ragazzi su una panchina che si stanno facendo una canna: Fioravanti e i suoi scendono dall’auto, sparano. Scialabba è colpito al torace ma non è morto. Fioravanti gli sale a cavalcioni, lo guarda e lo finisce con due colpi in testa. Si stava solamente facendo una canna, Roberto Scialabba.
Ce ne sono tante di cose da ricordare, non solo il 2 agosto 1980.

L’articolo completo su Il post. Via nipresa

Un paese senza verità

Written By: grimmo - lug• 04•12

Buongiorno a tutti, al blog di Beppe Grillo, mi presento, sono Antonio Ingroia, pubblico Ministero alla Procura distrettuale antimafia di Palermo ormai da 20 anni, quando iniziai la mia attività con Paolo Borsellino, ero a Palermo quando vi furono le stragi terribili del ’92 di Falcone e Borsellino. Sono ancora a Palermo e svolgo le funzioni di Pubblico Ministero.
Io credo che il nostro paese sia un paese strano, anomalo. Lo è soprattutto perché ha un rapporto difficile con la verità, da un lato, e dall’altro ha una forte esigenza di verità. Troppi fatti determinati della sua storia, del suo passato, sono rimasti ancora avvolti da una nebbia di silenzi, di menzogne, di reticenze a volte perfino anche istituzionali, di una verità dimezzata e negata.
Un Paese che non riesce a conquistare tutta la verità sulla sua origine, sulla storia di fatti sanguinosi come le tante stragi che hanno contrassegnato la storia del nostro paese, è un Paese che non potrà mai crescere, mai conquistare la democrazia.
Noi siamo un Paese incapace di ricordare il proprio passato, di appropriarsene attraverso la verità, perché poi la verità è anche uno strumento per ricostruire il passato. È un Paese che rimane senza passato e senza memoria perché non ha verità sul suo passato, un paese che non può costruire nessun futuro.
L’Italia è un paese senza verità sulle stragi, sui grandi delitti polico-mafiosi, su tutte queste tragedie dello Stato, incapace di illuminare gli angoli bui e sporchi del suo passato, senza coraggio, dove a volte la ragione di Stato è finita per prevalere sulle ragioni del diritto, sulle ragioni della giustizia. Per esempio, c’è una verità che si è andata concretizzando quella sullo stragismo del 92/93, la verità su quella trattativa stato – mafia che nello sfondo del ‘92/’93 si è sviluppata. Su questa ragione la Magistratura in questi anni ha svolto un’opera complicata, con un obiettivo preciso, cercare di fare il proprio dovere fino in fondo, col dovuto rigore, individuare fatti, reati concreti, accertare le responsabilità penali.
Credo che in un Paese normale di fronte a questa azione della Magistratura, il paese delle istituzioni e la società si stringerebbero attorno ai magistrati, li si sosterrebbe in questo compito difficile, anzi ciascuno cercherebbe di fare la propria parte. La politica dovrebbe occuparsene, accertando quello che alla politica tocca accertare rispetto al passato, la verità politica, la verità storica – politica. Non tocca alla Magistratura appurare la verità storica. La politica dovrebbe anche individuare responsabilità storiche e responsabilità politiche, non certo le responsabilità penali e invece questo in Italia non è avvenuto. Almeno fino a oggi non è avvenuto perché per esempio tante e tante commissioni parlamentari antimafia si sono avvicendate in questi vent’anni, nessuna di questa ha messo al centro della propria attenzione, al centro della propria indagine, l’accertamento della verità su quel terribile biennio 92/93, che è poi il biennio sul quale è nata questa Repubblica. Perché questa Seconda Repubblica affonda letteralmente i suoi pilastri nel sangue di quelle stragi, in quella trattativa che si sviluppò dietro le quinte di quelle stragi.
Non solo la politica non ha fatto questo, ma né dalla politica, né dal mondo dei mass media, il mondo dell’informazione è venuto un sostegno nei confronti della Magistratura, anzi queste iniziative di verità, di realtà giudiziaria ovviamente – non tocca alla Magistratura scoprire la verità storica – sono state accolte con freddezza, fastidio, a volte con ostilità come se questo Paese la verità non la volesse, come se ci fosse una grande parte del Paese che preferisce vivere in quell’eterno presente immobile senza conoscere le proprie origini, forse per la paura di scoprire qualcosa di cui vergognarsi nella propria vita.

Le istituzioni hanno una grande occasione
Perché alla verità inevitabilmente corrisponde sempre la responsabilità e c’è gran parte del Paese che è allergico alla verità, è anche allergico al principio di irresponsabilità, troppo affezionato, soprattutto la nostra classe dirigente, al principio di irresponsabilitàattraverso la ricerca dell’impunità, dell’impunità penale e dell’impunità politica secondo il criterio per cui nessuno deve rispondere dei fatti che ha commesso, esattamente il contrario dei principi di uno stato di diritto e di una democrazia.
Allora probabilmente questa allergia verso la verità nasce da quel peccato originale: rifiutare qualsiasi forma di responsabilità. Alla verità integrale dovrebbe corrispondere la responsabilità penale, quella politica per i politici, quella etico-morale davanti ai cittadini, quei cittadini che sono tanti, assetati di verità e di giustizia.
Noi fino a quando non conquisteremo una sufficiente parte di verità, fino a quando non ristabiliremo principi di responsabilità, non diventeremo mai una democrazia.
Il nostro è un Paese senza responsabilità: troppi assassini in libertà,troppi mandanti di stragi ancora col volto coperto, perché alla Magistratura non vengono dati strumenti efficienti per trovare i colpevoli, perché non ci sono circuiti di responsabilità che vigilano in un paese avanzato e democratico di responsabilità politica e morale. Perché l’Italia è un paese di irresponsabili, senza giustizia e senza verità. La giustizia e la verità a cui hanno diritto le vittime, i familiari delle vittime, a cui hanno diritto i cittadini. Per riconquistare il piacere di sentirsi cittadini di questa Repubblica.
Negli ultimi anni è calato di molto la credibilità delle istituzioni. Abbiamo ora a portata di mano, un momento di un pieno accertamento della verità, una grande occasione, le istituzioni hanno una grande occasione: cercare di riconquistare la verità, riconquistare la fiducia dei propri cittadini che la verità vogliono. Per fare questo occorre che i cittadini interpretino il loro ruolo di cittadini nel modo più attivo possibile. Loro sanno quanto tengono alla verità a per quanto tempo questa verità gli è stata negata.
Noi siamo un po’ orfani, non solo di tanti grandi uomini che hanno fatto la storia più nobile del nostro Paese, e mi riferisco a uomini dello Stato, ai servitori dello Stato, mi riferisco in particolare a quelli che sono stati i miei maestri da magistrato come Falcone e Borsellino. Ma noi ancora più che orfani di questi uomini, siamo orfani della verità, orfani della verità su quella stagione, orfani della verità su quelle nostre origini.
Allora io credo che di fronte a questo scandalo di un Paese che non riesce a conquistare la verità su quella stagione cruciale della sua storia, non vogliamo che l’Italia resti soltanto un paese degli scandali. Vogliamo costruire un’Italia diversa, vogliamo costruire un’Italia libera per liberarla dal ricatto dei poteri criminali di ogni specie. Io credo che i cittadini debbano impegnarsi ciascuno per la sua parte, ciascuno nel suo ruolo, ciascuno nel ruolo che svolge nella società per dare il proprio contributo per conquistarla insieme questa verità, pretendendo ed esigendola, da cittadini, perché la verità è difficile, imbarazzante, può essere solo frutto di una conquista collettiva, di uno sforzo collettivo.
Bisogna spalancare ogni porta chiusa, ripristinare il binomio verità e giustizia per costruire il Paese, per costruire una vera democrazia come fecero i nostri padri costituenti. Dobbiamo, abbiamo il diritto, non soltanto noi da magistrati, ma ognuno di noi cittadini fare tutto ciò che possiamo per conquistare tutta la verità e pretenderla a voce alta, passate parola tra voi cittadini, per conquistare tutta la verità.

Antonino Ingroia

http://www.beppegrillo.it/2012/07/02/passaparola_un_paese.html

Che cosa è il D.R.M. ?

Written By: grimmo - mag• 04•12

Ecco un breve video che ho fatto per sperimentare le funzionalità del sito www.xtranormal.com, che permette di creare piccoli film con degli attori fittizi, basandosi sul testo scritto.

C.R.A.M.PY! Corso Rapido di Apprendimento Minimo PYthon

Written By: grimmo - apr• 19•12

Mi è stato chiesto di tenere un corso rapido di python e ho pensato di farlo con dei video su youtube.

Se vi interessa qui ci sono la lezione 1

e la lezione 2

è una cosa “alla buona” eh, non vogliatemene troppo :-)

Clifford Stoll su.. tutto

Written By: grimmo - apr• 11•12

http://www.ted.com/talks/lang/it/clifford_stoll_on_everything.html

Cambiare una parte del nome a una serie di file

Written By: grimmo - apr• 03•12

Vi siete mai chiesti come poter rinominare in maniera automatica una parte del nome di un file e come poter ripetere questa operazione, anche su migliaia di file, in una volta sola?
Supponiamo che vi venga chiesto di cambiare nome a una serie di un file chiamati

QUALCOSA-2011-02.xls

in

QUALCOSA-2010-01.xls

Come procedereste per farlo utilizzando un unico comando da shell?

Per prima cosa, spostate tutti i file da rinominare in una cartella apposita,
in modo da ottenere un elenco simile a questo:

-rw-r--r--   1 utente    gruppo    2415 Apr  2 12:34 BIOLOGIA-2011-02.xls
-rw-r--r--   1 utente    gruppo    3002 Apr  2 12:34 CHIMICA-2011-02.xls
-rw-r--r--   1 utente    gruppo  111924 Apr  2 12:34 ECONOMIA-2011-02.xls
-rw-r--r--   1 utente    gruppo   16876 Apr  2 12:34 FISICA-2011-02.xls
-rw-r--r--   1 utente    gruppo    1666 Apr  2 12:34 GEOLOGIA-2011-02.xls
-rw-r--r--   1 utente    gruppo  116345 Apr  2 12:34 GIURISPRUDENZA-2011-02.xls
-rw-r--r--   1 utente    gruppo   46985 Apr  2 12:34 INFORMATICA-2011-02.xls
-rw-r--r--   1 utente    gruppo   70292 Apr  2 12:34 MATEMATICA-2011-02.xls
-rw-r--r--   1 utente    gruppo   98333 Apr  2 12:34 MEDICINA-2011-02.xls
-rw-r--r--   1 utente    gruppo   12212 Apr  2 12:34 OPERE_GENERALI-2011-02.xls
-rw-r--r--   1 utente    gruppo   76271 Apr  2 12:34 PSICOLOGIA-2011-02.xls
-rw-r--r--   1 utente    gruppo   44121 Apr  2 12:34 SCIENZE_DELLA_FORMAZIONE-2011-02.xls
-rw-r--r--   1 utente    gruppo  124910 Apr  2 12:34 SOCIOLOGIA-2011-02.xls
-rw-r--r--   1 utente    gruppo   29047 Apr  2 12:34 STATISTICA-2011-02.xls

che non contenga file spurii e non abbia sottocartelle.

A questo punto basta un semplice trucco di parameter substitution in bash e un ciclo for:

bash-2.03$ for ciccio in `find . -type f -name \*.xls` ; \
do mv $ciccio ${ciccio%%-2011-02.xls}-2011-01.xls; \
done

Nello script qui sopra, ho detto al comando for di inserire nella variabile $ciccio
tutti i nomi dei file trovati dal comando find che hanno estensione .xls.
Ora viene il bello: utilizzando la parameter substitution di bash dico al comando mv di rinominare il nome del file corrente all’interno del ciclo for, contenuto nella variabile $ciccio, in qualcosa composto da parte della variabile $ciccio, in cui però al posto di 2011-02.xls venga sostituito 2010-01.xls
Voilà!

Discussione MOLTO interessante sul futuro della fibra in Italia

Written By: grimmo - feb• 28•12

e sul perché non c’è fibra nel prossimo futuro…

http://blog.quintarelli.it/blog/2012/02/il-fud-vectoring-è-di-gran-moda.html

L’italia approva ACTA

Written By: grimmo - gen• 27•12

Forse il peggior trattato mondiale nella storia della libertà di espressione. A rischio non solamente la libertà su internet ma anche la libertà di ricerca, la possibilità di avere medicinali generici a basso costo e molto altro. Tutto in nome del copyright e della protezione della proprietà intellettuale.