Category Archives: Open Source

Novità su Tuntun

Tuntun si sta quasi trasformando in un programma finito. Ormai le funzionalità principali sono state implementate ed offre già qualche utile servigio.

Ecco i vantaggi rispetto a ovpnClient:

  1. scritto in vala e quindi un minimo più maneggevole rispetto al corrispondente in C
  2. dipendenze esterne ridotte: tolta libglade (rimpiazzata da gtkbuilder) e gnet (rimpiazzata da snul)

Mancano tuttavia ancora una serie di funzionalità prima di portelo definire pronto per un rilascio:

  • internazionalizzazione
  • finestra di log come in ovpClient
  • debug, debug e debug

Inoltre prima di parlare di una versione pubblica vorrei implementare qualche nuova funzione anche per “l’utente non programmatore”, come il supporto per la richiesta di nome utente e password durante la connessione.

Non si può che finire con uno screenshot:

tuntunt in action

Snul 0.0.2 aka “il fluido che uccide” released!

Insomma, mi è toccato… una nuova fiammante ed entusiasmante versione di snul.

I cambiamenti sono pochi, ma derivati da un minimo utilizzo sul campo con Tuntun. Da questa sera ho finalmente un sostituto funzionante e minimamente testato delle 4 chiamate di gnet che utilizzavo!

Dal canto suo anche Tuntun inizia a prender forma, manca ancora tutta la parte di interfaccia, ma ad oggi riesce a:

  1. installarsi come applet nel panel senza crashare mezzo mondo (fino a poche ore fa bloccava tutto il pannello di gnome)
  2. leggere il file config con le connessioni definite (stesso formato di ovpnClient)
  3. presentare un menu’ popup con i collegamenti
  4. determinare lo stato attuale della connessione
  5. aprirla
  6. e chiuderla

Snul

Beh… alla fine non ne potevo più di gnet, scrivere i bindings per vala è veramente, come dire, poco gratificante ed e’ una libreria praticamente non mantenuta da anni.

Avendo bisogno di implementare un client Tcp dalle funzionalita’ veramente minime per Tuntun, mi son messo giù e l’ho fatto direttamente in vala interfacciandomi solo con le funzioni del s.o (BSD sockets).

Il risultato non è il massimo, ma alla fine raggiunge lo scopo e funziona, quindi ho pensato che potrebbe essere utile anche a qualche altra anima informatica se non altro come esempio di come (non!) programmare in vala.

Ecco quindi Snul una semplice libreria da utilizzare con il copia & incolla. (Sì lo so la paginetta è scritta in inglese, che dici? Ah è maccheronico? Beh sono apprezzati aiuti e commenti al riguardo…)

P.s.

Perchè snul? Oltre al simple network utility library penso che si addica ancor meglio questa definizione… rimanendo comunque in attesa di una persona dai modi migliori: GIO.

Nuovo server per perSbaglio

Un mostro di potenza:

persbaglio:~# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 8
model name : Pentium III (Coppermine)
stepping : 6
cpu MHz : 798.313
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse
bogomips : 1597.15

ma con qualche piccolo problema di affidabilità della memoria (non si può pretendere troppo da uno scambio con un router dlink no?)

Debian & Compiz

Ho riabilitato compiz di nuovo e per gioco! Non ci sarebbe nulla di cui scrivere se non fosse per un dettaglio: è usabile sul mio pc.

:~$ cat /proc/cpuinfo
……..
model name : Intel(R) Pentium(R) 4 CPU 1.50GHz
stepping : 2
cpu MHz : 1495.272
cache size : 256 KB
……..

con una semplice ATI 9200SE che non può nemmeno andare a 8x perche’ il mio bus AGP e’ troppo vecchio!

Di solito tutte le volte che mi è capitato di abilitare compiz, dopo pochi giorni di utilizzo ritornavo al fido metacity poichè le animazioni di minimize/maximize ed il resize delle finestre erano leggermente lenti.

Al contrario, questa volta, ho voluto approfondire, ho lasciato XAA per la più nuova EXA e la differenza si è vista immediatamente. Il tutto grazie a questo commento e qualche prova sul campo.

Un’ultima cosa: AGPFastWrite nel mio caso blocca tutto, uomo avvisato…

Cercando l’indipendenza

Come al solito nello spirito di essere il piu’ possibile indipendente da Windows anche per le cose più strane, oggi ho dedicato la giornata (e parte della notte) al mio nuovo lettore mp3 (del quale non ho mai parlato).

L’obiettivo era quello di poter effettuare l’upgrade del firmware senza utilizzare windows. Quindi mi sono messo al lavoro e sorpattutto grazie ai forum / wiki di rockbox sull’argomento creative mi sono fatto un’idea di quello che serviva:

  1. Utility per estrazione firmware dall’exe windows che è possibile scaricare dal sito creative
  2. Programma per trasmettere il firmware allo Zen

Il risultato è che dopo qualche oretta di ricerche e porting di programmi windows etc etc riesco ad avere un software che svolge egregiamente il compito 1 ed un altro che riesce a fare l’upload di un file tramite libmtp. Obiettivo raggiunto!

A questo punto faccio una bella pausa per la cena, poi un po’ di tv ed infine decido di buttare un occhio al forum per vedere se ci sono novita’. Trovo che zook ha appena pubblicato una nuova e piu’ completa versione delle sue utilita’.

Macino, compilo, qualche piccolo riadattamento e mi metto a fare delle prove con zen_crypt, più per curiosità che per altro.

Con grande sorpresa, dopo qualche tentativo, scopro la chiave con la quale è criptato il programma che gira nello ZEN (il file TL) e scorrendolo con un editor esadecimale becco anche il codice HMAC per firmare i firmware ed uploadarli cosi’ al dispositivo.

Bene si puo’ dire che lo Zen 4GB è un passo più vicino a RockBox (2 chiavi su 3)! Ora manca solo quella del programma di rescue (FRESC) che però credo sia la più difficile da scovare.

Come andrà a finire lo si potrà leggere qui.

Ho perso la memoria

Breve ed interessante sessione di debug di mtpfs con valgrind e alleyoop!
Come si evince dal secondo tentativo, nessun leak rimasto a parte qualche segnalazione (spero spuria) di libfuse.

mtpfs valgrind

Nota: se provando a debuggare un filesystem fuse, valgrind vi risponde con un bel:

fuse: failed to exec fusermount: Permission denied

Provate a togliere l’attributo sticky sia da /usr/bin/fusermount che /bin/mount ed eseguite il tutto da root. Una volta terminato il debug ricordatevi di rimettere tutto a posto.

Emacs & Windows

Una caratteristica molto carina di emacs è la possibilità di abilitare la modalità server in una finestra dell’editor già avviata.

Questa funzionalità unita al programma emacsclient rende l’apertura di un qualsiasi file successivo al primo praticamente istantanea poichè emacs è già in memoria ed ha già eseguito il file di startup.

Tuttavia su windows e credo anche con linux, ma lì non si vede, successivamente alla prima esecuzione all’avvio di emacsclientw si ottiene un messaggio di errore simile a questo:

Emacs Client Windows Error

Esistono vari modi per aggirarlo, in alcuni forum parlano di bug, altri consigliano di installare EmacsW32, qualcun’altro ha capito che il problema è legato al file server di emacs.
In effetti il motivo del messaggio è la presenza del file server di una precedente sessione di emacs, in quanto le informazioni in esso contenute sono ovviamente errate poichè si riferiscono ad un’istanza dell’editor non più in esecuzione.

Capita la causa del problema, la soluzione è alquanto semplice: vedere se esiste un’istanza dell’editor in esecuzione ed in caso contrario eliminare il file ed eseguire emacs. Tuttavia esiste anche un modo ancora più immediato ricorrendo a qualche riga di elisp.

Infatti basta inserire un hook che alla chiusura dell’editor verifichi la presenza del file e lo elimini:

; elimina il file server all'uscita
(add-hook 'kill-emacs-hook (function (lambda () (
if (file-exists-p "~/.emacs.d/server/server") (delete-file "~/.emacs.d/server/server")))))

Il lato oscuro della forza…

Per questioni di lavoro e non, oggi mi sono imbattuto in due situazioni molto diverse fra loro che in una qualche maniera mi hanno fatto pensare. Da un lato ho dovuto valutare se l’impiego di MySQL in una determinata applicazione commerciale e closed-source fosse percorribile o meno, dall’altro con questo brevetto Microsoft mi ha veramente fatto ridere.

Per quanto riguarda MySQL, sono rimasto veramente esterefatto dall’ambiguità di MySQL AB nel gestire la questione licenze. Come si può dedurre da questo forum e soprattutto leggendo questo thread la posizione di MySQL AB non è mai resa esplicita. Tutto quello che si riesce ad ottenere in sintesi è:

  1. Non so leggi la GPL
  2. Non so leggi le FAQ della GPL
  3. Non so consulta un avvocato
  4. Nel dubbio (ed i punti 1,2,3 non chiariscono nulla) paga

Ora queste sono tutte risposte tecnicamente corrette, ma è proprio il non sapere che mi tiene alla larga da MySQL AB e quindi dal loro valido prodotto. Infatti io preferisco conoscere con certezza dove mi sto avventurando, se posso distribuire o meno MySQL o se considerano “linking” anche l’utilizzo dei driver ODBC (tecnicamente sono sicuro che non ci sia alcun intervento del linker e che codice proprietario e codice GPL siano di fatto separati e costituiscano un “prodotto ottenuto per aggregazione” e quindi non soggetto a GPL, ma non ci scommetterei sopra…).

La cosa che più mi lascia atterrito è che MySQL AB utilizza la stessa tecnica impiegata da Microsoft/altri con i brevetti: nel dubbio paga!

Tutto ciò è inoltre aggravato dal fatto che non sia importante capire nel minimo dettaglio cosa sia scritto nella GPL, poichè come tutte le licenze è in legalese e quindi soggetta ad interpretazioni, ma è fondamentale sapere l’interpretazione che gli avvocati della MySQL AB danno a quel testo e su questo argomento non c’è nessun comunicato ufficiale (che io sappia).

Quindi sebbene mi sia fatto un’idea precisa di come sia possibile utilizzare MySQL in un contesto commerciale e closed source, ho deciso che a parte l’utilizzo in progetti con licenza GPL o in portali web non destinati alla rivendita (leggi: distribuzione) non valga nemmeno la pena prendere in considerazione il database server se non si è disposti a pagare la licenza per sviluppatori.

Ed anche in quest’ultimo caso, direi che è meglio pensarci su bene, dato che grazie a queste non-informazioni MySQL AB ha messo a nudo proprio il lato più oscuro (e chi si fida adesso…).

Tornando a mamma Microsoft questa volta si è proprio superata: ha brevettato la mia rubrica telefonica cartacea. Una lista di informazioni (nomi e numeri di telefono) suddivisa in macrocategorie per una consultazione più comoda e veloce (lettere dell’alfabeto sulla destra del quaderno). Se questo è il sistema di incentivare la ricerca ed il progresso stiamo freschi!

Un’ultima nota, di carattere più sociale. La diatriba che si legge nei vari commenti della serie Microsoft ha rubato l’idea ad Apple che l’ha rubata a “Pino Pino Pilotino” che a sua volta, preso dal vortice dell’heavy metal rappresentato dalla “Fiera dell’est” di Branduardi, si è ispirato all’inventore del “quaderno telefonico” mi ha fatto sbellicare dalle risate!

Per fortuna che non tutti i commenti sono su questa linea, c’è ancora qualcuno con 2 o 3 neuroni funzionanti in giro!

Venti di guerra?

Confesso che ci sono rimasto male: gli utenti redhat devono pagare microsoft?

E non mi meraviglia una reazione di questo tipo: jdub su microsoft vs redhat

Ho sempre considerato Ballmer il classico cafone, ma al solito il piano è piu’ subdolo di quello che appare, anzi secondo me è proprio Ballmer a parlarne perchè con la sua rozzezza riesce a sviarne l’intento di fondo: divide et impera!

Bene il calcio d’inizio è stato dato, non ci rimane che vedere come risponderà Novell e se entrerà nella partita anche Miguel.

Giusto una precisazione. Personalmente non credo che Ballmer sia così sveglio da capire quello che stia facendo, in realtà gli vengono trasmesse delle idee che ripete come un megafono rotto, percependo semplicemente che è importante farlo.
Inoltre credo che l’uso di un personaggio come Ballmer sia veramente efficace data la sua “forte presenza” che spesso è…. come dire… un po’ imbarazzante e che proprio per questo svia una parte dei commenti sul suo “modo di essere” azzerando le discussioni sui fatti.

Tuntun: una scusa per cambiare i propri strumenti di lavoro

Diversi cambiamenti nella mia vita da programmatore “hobbista” tutti scaturiti dalla malsana idea di riscrivere ovpnClient in vala.

Prima difficoltà: non esistono i binding per gnet e gnet stessa sembra una libreria destinata all’oblio.

Seconda difficoltà: anjuta, seppur un bel IDE è ancora un po’ immaturo e per me è arrivato il momento di fare una scelta con la quale convivere per un po’ di tempo (intanto continuero’ a tenerlo sott’occhio).

E per non farmi mancare nulla perche’ non cambiare anche il ben amato svn con il più indicato (in questo caso) git?

Bene 2 settimane di test, ritest, letture di manuali tutorial ed howto.
Inoltre ho mosso qualche timido passo nella comunità #vala nonostante il mio inglese non sia certamente fra i migliori.

Il risultato?

GNet: primi binding per vala e qualche patch inviata a Juerg per vapigen (di sicuro ho scritto del pessimo codice, ma ho individuato almeno quello che manca in vapigen per gestire librerie cosi’ “difficili” come gnet)

Editor o meglio IDE: emacs. Per configurarlo ho penato un po’ soprattutto per i caratteri e l’indentazione, ma inizio ad ambientarmi e mi piace (qui c’è il mio .emacs).

GIT: ho solo scalfito la superficie, ma per ora clono, tengo traccia delle modifiche nel repository svn di vala, riapplico le mie patch riesco a far diff e quant’altro senza troppe difficoltà e sinceramente, anche se git presenta alcuni lati oscuri, non mi è sembrato troppo complicato e soprattutto mi ha agevolato non poco nel mantere il mio “patchset” personale da applicare a vapigen.

Tornando al titolo del post: tuntun sarà una lenta riscrittura di ovpnClient in Vala, con qualche “minima” miglioria e nulla di piu’.

Perche’ lo sto facendo? Beh per divertimento, per avere una scusa per stravolgere il mio modo di programmare con linux, piu’ semplicemente per riprendere un po’ di confidenza con Vala dato che ne sono cambiate di cose ed inoltre perchè io sono il primo e forse unico utente di ovpnClient e vorrei avere qualche cosa di piu’ maneggevole da modificare.

P.S.
Non ho intenzione di installare network manager solo per gestire qualche (una) vpn su questo povero P-IV 1.4GHz, che già di cose ne fa troppe.