Feed RSS

Progetto CassiaJS disponibile

Inserito il

È da oggi disponibile all’uso la nuova libreria crittografica in JavaScript CassiaJS (Cassia for JavaScript).

CassiaJS è una libreria scritta in JavaScript che fornisce molti metodi per usare algoritmi crittografici, steganografici e di generazione chiavi, ovvero tutto il necessario per creare comunicazioni sicure.

CassiaJS è un progetto open source pubblicato sotto licenza MIT (X11 License) e mantenuto da Daniele Veneroni, quindi chiunque volesse contribuire può trovare il repository al seguente link: https://github.com/Venerons/CassiaJS

Chi volesse invece solamente utilizzarla, può visitare la pagina ufficiale del progetto (http://venerons.github.com/CassiaJS/) dove può scaricare tutti i file necessari e trovare tutte le istruzioni e le API necessarie al suo utilizzo.

I file essenziali all’utilizzo della libreria sono cassia.js, che contiene il codice non compresso da utilizzare in fase di debug, e cassia.min.js, che contiene il codice compresso ed ottimizzato da utilizzare in fase di pubblicazione.

CassiaJS è il primo frutto del progetto Cassia, che ambisce a fornire una libreria crittografica per i più importanti linguaggi di programmazione. CassiaJS infatti fornisce la libreria JavaScript ma nel prossimo futuro saranno disponibili altre librerie del progetto Cassia, tra cui CassiaPy (Cassia for Python), CassiaJava (Cassia for Java), CassiaPHP (Cassia for PHP) e Cassia (l’originale, ovvero Cassia for C).

Tutorial – Usare AJAX per server request asincrone

Inserito il

AJAX, acronimo di Asyncronous JavaScript And XML, è una tecnologia che combina per l’appunto JavaScript e XML per scambiare dati tra il client e il server in modo asincrono, ovvero non necessariamente al momento del caricamento della pagina. In realtà ad oggi la tecnologia AJAX non è più strettamente legata all’XML, ma tramite AJAX è possibile accedere a dati di qualsiasi tipo sul server, ad esempio file, dati formattati con JSON, ecc.

Ma a che serve AJAX, vi domanderete? La risposta è molto semplice: ad alterare i dati della pagina web senza ricaricarla. In questo modo è possibile implementare sistemi come ad esempio le notifiche su Facebook, i tweet su Twitter, i suggerimenti di ricerca su Google, liste dinamiche, e quant’altro.

Come usare AJAX? Guardate il codice JavaScript qui sotto:

// creare un oggetto XMLHttpRequest
if (window.XMLHttpRequest) {
   // code for IE7+, Firefox, Chrome, Opera, Safari
   xmlhttp = new XMLHttpRequest();
} else {
   // code for IE6, IE5
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

In questo modo abbiamo creato un oggetto XMLHttpRequest con il quale possiamo creare la connessione. Ora proviamo a caricare un file di testo presente sul server:


xmlhttp.open("POST", "esempio.txt", true);
xmlhttp.send();

Come è facile intuire con queste due righe si imposta una richiesta tramite POST al file “esempio.txt”. L’impostazione true serve per indicare che vogliamo che la richiesta sia asincrona, ovvero che non blocca lo script. Se impostata a false, lo script rimarrà bloccato finchè la richiesta non avrà ricevuto risposta, il che può andare bene per piccole richieste, altrimenti usate true.

Nel caso abbiate impostate il parametro async a false, il codice per la gestione della risposta va messo direttamente in seguito alle istruzioni


// async settato a false
xmlhttp.open("POST", "esempio.txt", false);
xmlhttp.send();
document.getElementById("testo").innerHTML = xmlhttp.responseText;

Nel caso invece più probabile che sia settato a true, va impostate un listener che si attiva quando la risposta è pronta


// async settato a true
xmlhttp.onreadystatechange=function() {
   if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      document.getElementById("testo").innerHTML = xmlhttp.responseText;
   }
}
xmlhttp.open("POST", "esempio.txt", true);
xmlhttp.send();

Nell’esempio precedente abbiamo caricato un file di testo e abbiamo preso il suo contenuto e scritto all’intetno di un elemento HTML (ad esempio un <div> o un <p>). Tuttavia possiamo ricevere vari tipi di risposta:


// risposta tipo XML
xml = xmlhttp.responseXML;

// risposta tipo testo
text = xmlhttp.responseText;

Ora passiamo a qualcosa di più serio che caricare un file di testo. Ad esempio possiamo creare una richiesta ad un servizio e catturare la risposta. Ad esempio possiamo fare una richiesta ad una pagina PHP che restituisce dei dati. La pagina PHP per restituire dati dovrà semplicemente stampare tramite echo la risposta (che può essere testo, xml, html…). La richiesta però possiamo farla tramite GET o POST:


// GET request
xmlhttp.open("GET", "pagina.php?codice=12345&nome=Daniele", true);
xmlhttp.send();

// POST request
xmlhttp.open("POST", "pagina.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("codice=12345&nome=Daniele");

Come potete vedere è molto semplice. A questo punto tramite il metodo più appropriato possiamo prendere la risposta e gestirla come più ci pare adatto.

Questo è il modo nativo di JavaScript per gestire l’AJAX. Ci sono però molti framework che consentono di fare richieste AJAX in modo ancora più semplice. Prendiamo ad esempio jQuery:


$("#testo").load("esempio.txt");

Con questa semplicissima istruzione jQuery abbiamo caricato la risposta del file esempio.txt (ovvero il suo contenuto) e caricato all’interno dell’elemento “testo”. Possiamo anche assegnargli una funzione da eseguire quando si ottiene la risposta, per esempio per controllare se la richiesta ha avuto buon esito:


$("#testo").load("esempio.txt", function(responseTxt, statusTxt, xhr){
   if(statusTxt == "success") alert("External content loaded successfully!");
   if(statusTxt == "error") alert("Errore: " + xhr.status + ": " + xhr.statusText);
});

Di nuovo, possiamo chiamare esplicitamente una richiesta GET o POST:


// GET request
$.get(URL, callback);

// POST request
$.post(URL, data, callback);

Dove data sono i dati passati in formato JSON (es. { codice: 12345, nome: “Daniele” }) mentre callback è una funzione da eseguire quando si ottiene la risposta. Infine jQuery mette a disposizione un’ultimo metodo ancora più esplicativa per eseguire una richiesta AJAX:


$.ajax({
   url: "esempio.txt",
   success: function(result){
      $("#testo").html(result);
   }
});

Anche questo esempio prende il contenuto del file esempio.txt e lo imposta come contenuto dell’elemento “testo”.

Come avete potuto constatare da questa rapida carrellata di esempi, eseguire una richiesta AJAX è molto semplice, e il suo utilizzo permette di realizzare funzioni molto interessanti. Ovviamente in questi esempi abbiamo più che altro caricato il testo di un documento .txt, ma possiamo come accennato in precedenza fare una richiesta ad una pagina PHP che restituisce tramite echo la risposta richiesta. In questo modo si può implementare sistemi come una pagina PHP che interroga un database MySQL e tramite AJAX si può fare la richiesta in modo asincrono, ad esempio ripetendola ad intervalli regolari in modo che la pagina si aggiorni ad intervalli regolari.

SoundLab e le prossime novità dei Venerons Labs

Inserito il

È un bel po’ che non faccio sapere tramite il (nuovo) blog notizie riguardo ai progetti dei Venerons Labs, tuttavia non sono rimasto con le mani in mano: anche se non sono stati pubblicizzati sul blog, ci sono stati vari aggiornamenti alle applicazioni già distribuite (in particolare un major update molto sostanzioso per iRoller), è stata rilasciata l’app ufficiale Formula Aleator 2012 e nel frattempo mi sono anche dedicato ad un nuovo e promettente progetto.

Le mie applicazioni per Android riguardano principalmente la creazione di musica e suoni. E già questo è problematico perchè fare una cosa del genere su Android è un impresa colossale. Ma tant’è, che io avevo avviato ben tre progetti al riguardo: DrumLab (inizialmente conosciuto come Sounderoid), SampleLab (inizialmente conosciuto come ProtoSampler) e SynthLab.

Solo l’ultimo di questi tre, ovvero SynthLab, è arrivato alla distribuzione su Google Play Store. Perché? Il motivo è legato più che altro alla complessità dello sviluppo su Android che porta via molto tempo e nonostante le applicazioni DrumLab e SampleLab fossero pressochè pronte e l’unico lavoro da fare prima della distribuzione fosse la creazione dei millemila layout che bisogna fare per supportare in maniera decente l’app nel frammentatissimo mondo Android, per motivi di tempo/voglia non le ho mai completate e distribuite. Il che è un peccato. Ora però vi invito a dare un occhiata all’immagine qui sotto:

Immagine

Cosa vi ricorda? L’immagine sopra è praticamente identica alla plancia di SynthLab, con la differenza che dimostra un layout più pulito e professionale, e dalle funzioni molto più ampie e promettenti… vi dice niente?

Ebbene sì, ho deciso di riunire tutti i miei progetti di creazione musicale in un unica app, rendendola quindi più comoda da usare. Nel contempo però la volevo rendere da subito più professionale rispetto alle precedenti, il che significa che ho voluto subito studiare il funzionamento delle nuove interfacce così da dargli un interfaccia più intuitiva, comoda e professionale. Il risultato al momento devo dire che mi soddisfa.

Un altro vantaggio che deriverà dall’unione delle varie app è che in questo modo in un unico aggiornamento in futuro potrò aggiornare più funzioni al posto di una sola. Altro enorme vantaggio è la capacità di poter condividere risorse all’interno dell’app, ovvero ad esempio potrete registrare un sample e poi usarlo indipendentemente sulla Drum Pad oppure nel Sampler.

L’applicazione si chiamerà SoundLab e al momento è in uno stato avanzato dello sviluppo, quindi posso affermare con relativa sicurezza che sarà pronta entro natale.

Le future novità dei Venerons Labs però non finiscono qui, e ci sono altri progetti sia software sia di altro tipo in corso, di cui però al momentro preferisco non rivelare la natura. Sappiate però che sono pieno di progetti interessanti e che le novità nei mesi a venire non mancheranno.

A presto per nuovi aggiornamenti e ricordate: science is fun!

I Laboratori Venerons si trasferiscono

Inserito il

Chi mi conosce sa come mi piace cambiare spesso layout del sito… in questo caso il sito si è trasferito in blocco da Blogger a WordPress.

E’ da un bel po’ che volevo provare a vedere com’era WordPress, e mi sono finalmente deciso a provarlo, rifacendo il sito dei Venerons Laboratories.

Al momento promette decisamente bene, perchè mi consente di editare le pagine in maniera più pratica e libera… ma mi riservo di cambiare idea e di rimanere al vecchio sito (che infatti non è ancora chiuso).

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.