Feeds:
Posts
Comments

Archive for the ‘Virtual world’ Category

So che è un’applicazione piuttosto semplice, ma mi è finalmente arrivato il Budget Pack della AdaFruit, e di conseguenza la primissima cosa per verificare che funzionasse il tutto è stata costruire due righe di codice che mettessero in comunicazione entrambe le mie schede.

La prima sceglie quante volte far lampeggiare il led e la comunica al PC via seriale; uno script Python gira tale comunicazione alla seconda scheda, che replica quindi il comportamento della prima.

La qualità video è quella che è, ma si capisce cosa succede direi…

Read Full Post »

Un breve post per introdurre una caratteristica di Erlang che non viene spiegata in modo così chiaro: le guards per le funzioni lambda (o fun nel linguaggio in questione).

Ordunque: anche Erlang ha la possibilità di filtrare gli input di una funzione utilizzando alcune funzioni predefinite; questo permette di evitare l’uso di condizionali, che peraltro non sono il massimo dell’usabilità in un linguaggio del genere.

Qualunque manuale vi mostrerà, ad esempio, un listato come il seguente:

abs(Number) when Number < 0 ->
    -Number;
abs(Number) ->
    Number.

Questo è un banale esempio di una funzione che calcola il valore assoluto di un numero: quando questo è minore di zero, viene ritornato il suo opposto, in caso contrario viene ritornato il numero stesso.

E fin qui, tutto bene. La questione è: è possibile filtrare anche nelle lambda allo stesso modo? E la risposta è sì, anche se la sintassi non è proprio chiarissima e soprattutto non è segnata nei manuali; ad esempio, riprendendo l’esempio di prima:

abs(List) when is_list(List) ->
    lists:map(fun(Element) when Element < 0 ->
                     -Element;
                 (Element) ->
                     Element end, List).

In questo caso, il filtraggio avviene esattamente come prima, in una funzione che prende in input una lista di numeri e ne restituisce una versione con i valori assoluti di ciascun valore. Da notare la sintassi per applicare le guards nella lambda interna alla map: bisogna ripetere i parametri della funzione, parentesi comprese, ma senza ripetere la dichiarazione fun.

E’ una caratteristica che cercavo da tempo, ed ora finalmente ho scoperto come si applica…

Read Full Post »

Bangarang 2.0

Bangarang 2.0

Spesso mi si chiede qual è il bello del desktop semantico: ad esempio, se installate Bangarang 2.0 ed avete già fatto registrare a Strigi le vostre directory contenenti la libreria musicale, alla prima apertura vi ritroverete tutti i vostri artisti ed album già registrati, pronti per essere eseguiti!

Read Full Post »

Crashed tab

Crashed tab

Citazione magnifica, nella pagina di crash dell’ultima versione di Chrome!

Read Full Post »

Faceted Dolphin

Faceted Dolphin

Faceted Dolphin

Ecco Dolphin con la navigazione faceted: avevo già rigirato la notizia un po’ di tempo fa, ora ho anche uno screenshot preso dal mio computer… un solo peccato: non una riga di codice è mia, purtroppo, il mio lavoro si ferma al vecchio prototipo.

Read Full Post »

KDE SC 4.6

KDE SC 4.6

KDE SC 4.6

Read Full Post »

Ati control center

Ati control center

Magari è una cosa risaputa, ma io l’ho scoperta (in parte) solo oggi, a mie spese: su Ubuntu 10.10, a differenza che sulla 10.04 (o forse a causa dell’upgrade dalla prima alla seconda), i settaggi di uno schermo esterno non possono essere fatti dal modulo delle impostazioni di KDE, è necessario agire dall’Ati control center, mostrato in figura. E’ una novità che mi ha fatto perdere qualche minuto ieri, abituato ai driver Intel dell’eeepc, dove mi capita più spesso di usare due schermi (o uno schermo ed un proiettore), ma non è questo il problema.

Il problema è che nel primo riavvio del computer senza il monitor esterno collegato, è necessario entrare nel control center ed applicare i cambiamenti, i quali non faranno altro che confermare la presenza di un solo schermo: questo perchè il PC si “ricorda” le impostazioni precedenti ed invia comunque i segnali alla porta VGA; questo è un comportamento differente rispetto al modulo di KDE, che invece è (più furbo ed) autonomo nel ripristinare le impostazioni iniziali, ed ha fatto sì che il mio (povero) Dell si sia spento per surriscaldamento questo pomeriggio, dato che l’invio simultaneo di Urban Terror su entrambi gli schermi (UT infatti ignora il numero di monitor e manda l’output su tutti) ha sovraccaricato la scheda video e provocato lo sgancio dell’alimentazione, con notevole sorpresa mia e di tutti gli altri, dato che stavo anche fungendo da server.

Qualche minuto di raffreddamento è stato sufficiente a far riprendere il tutto, ma certamente è stata una sorpresa del tutto inaspettata e decisamente fastidiosa…

Read Full Post »

Read Full Post »

C’è un nuovo arrivato nel mio PPA: si tratta di Tsung, uno strumento per eseguire test di carico verso server Web ma non solo; è scritto in Erlang, e ne sfrutta tutte le caratteristiche di distribuzione tra i processi per un’esecuzione rapida ed indolore (per il PC da cui viene lanciato), e può essere configurato per lanciare richieste utilizzando HTTP, WebDAV, Jabber, [My|Postgre]SQL ed LDAP.

La configurazione avviene tramite un file XML, che può essere parzialmente generato tramite una sorta di “registrazione” delle proprie azioni: il programma infatti può installare un proxy tramite cui è in grado di salvare tutte le richieste effettuate in remoto, sia http che https, e successivamente si può partire da questo e personalizzarne solamente la configurazione dei client e la tempistica delle richieste stesse.

Offre inoltre la possibilità di effettuare un parsing della risposta del server, per confrontarla con quanto ci si aspetta di ricevere, o di inserire dinamicamente dei parametri ricavati ad esempio da funzioni sviluppate ad hoc in Erlang.

Le statistiche prodotte vengono ricavate tramite diversi agenti in grado di monitorare la rete: il primo è nativo del linguaggio ma richiede configurazioni particolari di ssh; il secondo è SNMP ed il terzo è Munin: entrambi devono essere presenti lato client, sono installabili facilmente sulle distribuzioni più diffuse, ed io personalmente ho puntato sul secondo dato che la configurazione base del nodo è sufficiente allo scopo (si tratta solamente di modificare l’IP in ingresso, da loopback a quello del PC da cui lanciate i client simulati).

Insomma, dateci un’occhiata: i sorgenti del pacchetto Debian erano già presenti sul sito dell’applicativo, quindi il passo verso la pubblicazione nel PPA è stata piuttosto breve, ed i miei test hanno dato esito positivo; in caso di problemi, fatemi sapere!

Edit: ho appena scoperto che esiste un tool secondario installato con il programma, chiamato tsplot, che è in grado di produrre grafici di confronto, mettendo assieme fonti differenti e permettendo così di individuare facilmente variazioni a fronte di diverse configurazioni passate al sistema. Risultati spettacolari…

Read Full Post »

Oggi ho pubblicato il progetto scritto per la mia tesi di laurea specialistica (il cui testo sarà inserito tra le pubblicazioni dopo il 20 dicembre) su Github, è possibile scaricare il codice sorgente sia del framework che della demo.

CREST-Erlang è un framework Web in grado di supportare il paradigma Computational REST, uno stile architetturale che evolve REpresentational State Transfer e permette la trasmissione di computazioni assieme ai dati.

Ho una lista di ulteriori modifiche da integrare, in parallelo ad un articolo che sto preparando per l’università, e qualunque nuova modifica verrà quindi inserita nel repository pubblico; il tutto è pubblicato sotto licenza LGPL (salvo le librerie integrate, che seguono le proprie licenze, ed i moduli per la demo che sono pubblicati sotto GPL), ed è utilizzabile all’interno di progetti compatibili. L’ultima versione è la 0.7.1, quindi si consiglia di non andare oltre il test delle applicazioni.

Read Full Post »

« Newer Posts - Older Posts »