Google Calendar sul desktop con Conky

December 2nd, 2009

Desktop con Conky Grazie ad una wave con Ely ho scoperto Conky. Un monitor di sistema per linux il quale, configurato opportunamente, si sovrappone allo sfondo del desktop mostrando informazioni relative CPU, memoria, spazio disco, temperature, traffico di rete e molto altro.
Mi sono appassionato alla configurazione di questo tool e nelle varie peripezie affrontate sono riuscito a portare in conky gli eventi creati con Google Calendar in maniera efficiente. Riportero’ di seguito la procedura che ho effettuato ed uno script creato di getto.

Il primo passo è consistito nel trovare un modo per ottenere i dati di Google Calendar da linea di comando, per questo è stato d’aiuto il programma gcalcli che pur risentendo di qualche difetto si è comunque prestato all’impresa. L’ho quindi scaricato e copiato nel path di sistema:

wget http://gcalcli.googlecode.com/files/gcalcli-1.4.tgz
tar -xvf gcalcli-1.4.tgz
sudo mv gcalcli /bin

Conky può essere configurato per mostare l’output di alcuni comandi di sistema. Specificando i comandi direttamente nel file di configurazione si otterra che ogni volta che conky aggiorna il suo stato (lasso di tempo dell’ordine del secondo) tali programmi saranno riavviati. Interrogare la rete ogni secondo non era nelle mie intenzioni ho quindi creato uno script per lanciare conky costruendo il file di configurazione in modo dinamico:

#!/bin/bash
cd; # get home directory
today=`date +"%m/%d/%Y"` # current date
nextmonth=`date --date "now 30 days" +"%m/%d/%Y"` # current date + 30 days
# get the conky configuration code for the calendar
echo -e "\${font Purisa}\${color red}Google Calendar \${hr}\$color\$font \n\${font Purisa:size=10}`gcalcli --nc --user $1 --pw $2 agenda $today $nextmonth | sed '/^$/d'` \$font \n\${color red}\${hr}\$color" > caltemp
# build a conky configuration file
cp .conkyrc_base .conkyrc
cat caltemp >> .conkyrc
rm caltemp
# launch conky
sleep 10
conky &
exit

La variabile today conterrà la data corrente mentre nextmonth è la data corrente più trenta giorni, avremo quindi sul desktop gli eventi in agenta dal giorno in corso fino al mese successivo. In base ai valori di tali date viene lanciato gcalcli ed il risultato viene innestato in codice di configurazione conky per il quale si rimanda all’apposita documentazione. Il codice generato viene copiato in coda ad un file con la configurazione di base. Facendo partire conky con questo script Google Calendar sarà interrrogato una sola volta durante il suo ciclo di vita.

Per far partire conky all’avvio è necessario copiare il file con la configurazione di base, scaricabile da qui, nella propia home e posizionare lo script appena visto al path (di norma /bin). Poi bisogna aggiungere lo script alla lista dei programmi di avvio di gnome andando in System -> Preferences -> Startup Applications clickando su Add, compariranno le finestre mostrate in figura, e nel campo Command immettere conky_gcal , naturalmente le credenziali devono essere quelle dell’account Google dove si ha il calendario da monitorare.
Chi non volesse modificare il proprio file di configurazione conky può semplicemente usarlo come file di configurazione di base posizionandosi nella propria home e rinominandolo come segue:

mv .conkyrc .conkyrc_base

In questo modo gli eventi Google Calendar saranno mostrati sotti i dati solitamente monitorati.

Posted in Tutorial, Varie | No Comments »

Contabilità

August 4th, 2009

Si dice che un insieme infinito è contabile, o numerabile, se esiste una corrispondenza biunivoca tra esso e l’insieme di tutti i numeri naturali.

Lemma di Cantor
Sia f0,f1,f2,… una successione contabile di funzioni tale che ogni fi applica i numeri naturali in {0,1}. Esiste una funzione f che applica i numeri naturali in {0 1} ma non è uguale ad alcuna delle fi.
Dimostrazione. Definendo f(i) come 1 -fi allora f(i) sarà sicuramente diverso da fi(i), dunque f è diversa da fi per ogni i.

Dal lemma di Cantor segue che l’insieme di tutte le funzioni dai numeri naturali a {0,1} non è contabile.

Consideriamo adesso l’insieme S di tutte le successioni finitamente non nulle di 0 ed 1. Tale insieme è contabile e possiamo mostrarlo consideranto s0s1s2 una successione di 0 ed 1 e definendo una funzione che prende in input quella sccuessione:

contab2

dove N è un numero coì garande che sn=0 per ogni n>=N. f è una corrspondenza biunivoca tra S e i numeri naturali. Per esserne sicuri basta osservare che per ogni j, s0=0 solo se il più grande intero tra le somme di si2i diviso per 2j è pari.

Ogni sottoinsieme infinito di un insieme contabile è a sua volta contabile. Infatti, sia sia X un sottoinsieme di N={0,1,2,3,…}. Definiamo una funzione f che va da N ad X nel seguente modo:

  • f(0) = min(X)
  • f(n+1) è il più piccolo elemento di X maggiore di f(n)

f è invertibile e rappresenta una corrispondenza biunivoca tra N ed X. La sua inversa è una corrispondenza tra X ed N che dimostra la contabilità di X.

Possiamo dire anche che l’insieme F di tutte le successioni finite di numeri naturali è contabile. Sia n* una successione di n+1 uno. Per ogni successione di numeri naturali n0n1n2 sia:

contab3

f è quinid una corrispondenza tra F e l’insieme S visto in precedenza. Ciò mostra che F è contabile.

Posted in Varie | No Comments »

Il rompicapo di Merkle

March 31st, 2009

Gli algoritmi di cifratura a chiavi simmetriche sono sistemi di cifratura dove due interlocutori (Alice e Bob) concordano preventivamente un algoritmo e una chiave con la quale possono sia cifrare che decifrare dei messaggio. Se gli interlocutori sono più di due e utilizzano lo stesso algoritmo, allora ogni coppia dovrà concordare una chiave diversa. Ciò comporta il delicato problema della distribuzione delle chiavi.

Ralph Merkle, uno dei pionieri della crittografia, negli anni 70 propose una tecnica basata su rompicapi(puzzle) facili da risolvere per il ricevente ma non per un eventuale ascoltatore malintenzionato (Eve). La soluzione di tali puzzle è data provando tutte le possibili chiavi di un messaggio fino a che si trova quella effettivamente corretta (attacco a forza bruta).

(1) Bob genera 220, circa un milione, di messaggi con scritto: “This is puzzle number x. This is the secret key number y“, dove x è un numero a caso ed y una chiave segreta casuale. Sia x che y sono differenti per ogni messaggio. Usando un algoritmo simmetrico Bob cifra ogni messaggio con una chiave di 20 bit e li manda ad Alice.
(2) Alice sceglie a caso uno dei messaggi ed esegue un attacco a forza bruta recuperandono il testo in chiaro.
(3) Alice cifra il suo messaggio segreto con la chiave scoperta e lo invia a Bob insieme ad x.
(4) Bob adesso, basandosi sull’indice x, conosce la chiave y con la quale Alice ha cifrato il messaggio. Può cosi’ decifrarlo.

Eve per decifrare la conversazione dovrà fare molto più lavoro di Alice o Bob. Per decifrare il messaggio inviato da Alice al passo 3 deve effettuare un attacco a forza bruta su tutti i 220 messaggi inviati in 1. Considerando che una chiave a 20 bit ha 220 possibili combinazioni, un attacco a forza bruta ha bisogno, al più, di 220 operazioni per trovare la chiave di un singolo messaggio, 220 * 220 = 240 per trovare le chiavi di tutti. Con un calcolatore che può effettuare 220 in un secondo Alice troverà la propria chiave in un secondo ma Eve, data la mole di messaggi da scandire, impiegherà circa 12 giorni.

Posted in Varie | No Comments »

Art of Illusion

January 5th, 2009

Art of Illusion (AoI) è un ambiente di modellazione 3D free ed OpenSource, esso consente di creare scenari ed animazioni tridimensionali di ottimo impatto. Punti di forza di tale software sono la suddivisione delle superfici ed animazioni basate su scheletri, inoltre fornisce un linguaggio grafico per la progettazione di texture procedurali e materiali.
Forse non è il migliore software OpenSource della sua categoria ma è l’unico scritto in Java.
E’ espandibile attraverso plugin e script con i quali è possibile accedere a tutte le classi del programma.


Finestra principale di Art of Illusion

AoI supporta il Ray tracing, il quale è una tecnica basata sulla simulazione del percorso fatto dalla luce. Grazie ad essa è possibile creare delle immagini fotorealistiche proprio come queste.
Dal sito ufficiale del software sono scaricabili gli installabili per i tre sistemi operativi principali Windows, Linux, Mac OS X ed un pacchetto contenente soltanto il jar per tutte le altre piattaforme su cui gira java.

Posted in Varie | No Comments »

Next Page »