sabato 29 settembre 2012

Google Chrome 22: una breve presentazione


Approfittando della recente uscita della versione 22 di Google Chrome (ebbene sì, siamo già alla 22, anche se la maggior parte degli utenti non se ne sarà neppure accorta, dato che le differenze sono raramente visibili in superficie), vedrò di presentare in modo più completo le funzioni di questo browser, dopo averne esaminate diverse in altri post, quando capitava l’argomento giusto.
Prima di tutto, la differenza che chiunque noterà in questa versione numero 22: la vecchia e cara icona a forma di chiave inglese, nell'angolo in alto a destra del browser, è stata sostituita da un’anonima e piuttosto squallida icona con tre lineette orizzontali. Il menu resta uguale, la posizione anche, cambia solo l’aspetto della icona e, almeno a mio parere, non cambia in meglio. Ma pazienza.
Novità molto più consistenti si trovano invece sotto il motore, legate principalmente al migliorato supporto per le potenzialità offerte dallo HTML5. In particolare, una cosa che piacerà molto agli incalliti videogiocatori online è il supporto della funzione Mouse Lock, che da questa versione di Chrome è diventata “di serie”: il Mouse Lock è una funzione che consente di cedere temporaneamente il controllo del puntatore del mouse al browser, così da poterlo utilizzare all'interno della finestra di un videogioco online in modo simile a quanto avviene in un normale videogioco. In altri termini, nei videogiochi online in cui è abilitata questa funzione, il puntatore del mouse potrà essere “bloccato” all'interno della porzione di schermo in cui si trova il videogioco, come se fosse parte del videogioco stesso. Siccome spiegarla soltanto a parole potrebbe essere difficile, e soprattutto pochi chiaro da capire, ecco un esempio pratico: qui trovate un semplice esempio di gioco in 3D, open source e sviluppato da Mozilla, dove potrete collaudare il funzionamento del Mouse Lock. Provatelo (con Chrome) e tutto dovrebbe diventare più chiaro.
Per inciso, la possibilità di trasferire temporaneamente al browser il controllo di una o più componenti del nostro computer, per eseguire alcune operazioni, è una delle peculiarità dello HTML5 e ne abbiamo già parlato in breve, accennando a Movi Kanti Revo, dove si trattava di lasciar utilizzare la webcam al nostro browser.
Per il resto, Google Chrome continua a conservare la sua natura di browser dall'interfaccia molto semplificata, quasi ridotta all'osso  A detta dei suoi sviluppatori, questo servirebbe a facilitare la vita anche agli utenti meno esperti e con meno voglia di smanettare su un programma, ma è inevitabile ripensare alla battuta di apertura di Panfilo Maria Lippi, personaggio che Luttazzi portava in scena una quindicina di anni fa. A ogni modo, questo è il meno che Chrome ci mette a disposizione (en passant, potete notare in alto a destra l’icona che ha sostituito la vecchia chiave inglese):

Scabro ed essenziale, per l’appunto. Ogni voce è accompagnata da una combinazione di tasti, che permette di attivarla senza passare dal menu, ma soprattutto ha un nome italiano che dovrebbe essere autoesplicativo. O almeno, così è nella maggior parte dei casi; alcune voci, tuttavia, meritano un poco di attenzione in più.
Che cosa sia una finestra di navigazione in incognito, e cosa intenda Chrome per navigazione in incognito e anonimato, è argomento che ho affrontato già in un precedente articolo. Questa funzione non vi renderà anonimi su internet, ma soltanto sul computer che state utilizzando: attivatela se il computer su cui vi trovate è utilizzato anche da altre persone (madre, padre, moglie, marito, figli, eccetera) e non volete che queste persone sappiano che siti visitate; se la vostra preoccupazione è di essere tracciati, individuati o schedati mentre navigate in Rete, allora questa funzione non vi aiuterà.
La voce “Strumenti” apre un sottomenu che, nella maggior parte dei casi, sarà interessante solo per un nerd, o quantomeno per chi traffica abitualmente con HTML, JavaScript e in generale si dedica a sviluppo e manutenzione di siti.
Crea scorciatoie applicazione permette di aggiungere un sito internet al tuo desktop, al menu di avvio, eccetera, come se il sito fosse una normale applicazione: cliccando l’icona o la voce del menu corrispondente, aprirete il sito che avete selezionato. Funzione di dubbia utilità, ma tant'è.
Estensioni permette di gestire le estensioni che abbiamo aggiunto a Chrome, mentre Task manager ci presenta una descrizione accurata di come Chrome stia utilizzando le risorse del nostro computer: quanta RAM consuma ogni estensione, quanta ne consuma invece il browser di base, eccetera. In linea di massima, corrisponde alla Gestione attività di un qualunque sistema operativo Windows.
Le ultime tre voci sono quelle a più alto contenuto nerd. Visualizza sorgente permette di vedere il codice HTML della pagina che abbiamo davanti, mentre Strumenti per sviluppatori e Console JavaScript ci permettono di interagire con questo codice. In particolare, Console JavaScript aprirà un riquadro con una linea di comando, dove potremo testare brevi script in JavaScript all'interno di un ambiente interattivo: scriviamo un comando o una funzione, premiamo “Invio” e abbiamo subito il risultato.
Tornando al menu principale, l’ultima voce che merita qualche parola extra è “Accedi a Chrome”: una voce che può apparire strana, dato che, se la stiamo leggendo, abbiamo già aperto Google Chrome. In realtà, più che di “accesso a Chrome”, sarebbe corretto parlare di “accesso a Google”, perché questa funzione ci connetterà al nostro account su Google. Se non abbiamo un account su Google, dovremo prima crearne uno, se vogliamo utilizzare questa funzione. Ma vogliamo utilizzare questa funzione? Questione di gusti.
Dopo aver selezionato “Accedi a Chrome” e aver effettuato il login al nostro account di Google, le impostazioni di Google Chrome che stiamo utilizzando saranno salvate all'interno del nostro account Google: i siti preferiti, le estensioni, eccetera. Accedendo poi a Chrome da un altro computer, potremo utilizzarlo come se fosse il Chrome del nostro computer: ritroveremo tutte le nostre impostazioni, le estensioni  e tutti i dati che sono stati salvati nel nostro account Google.
Oltre a queste semplici voci, accessibili a tutti, Chrome ha anche altri comandi, rivolti soprattutto a utenti più esperti; nella maggior parte dei casi, vi si può accedere scrivendo nella barra degli indirizzi un testo del tipo “about:”, seguito da un certo comando. Per esempio, about:plugins ci aprirà una pagina con la lista di tutti i plugin installati in Chrome: da lì potremo attivarli o disattivarli. about:gpu ci mostrerà invece svariate informazioni sulla grafica del nostro computer e le funzioni che supporta. about:cache ci mostrerà un lungo elenco di link, che corrisponde agli elementi contenuti nella cache di Chrome. E così via.

lunedì 24 settembre 2012

Google, HTML5 e Cirque du Soleil

Google, HTML5 e Cirque du Soleil sono una combinazione strana, a prima vista, ma anche a seconda vista continuano a lasciare perplessi. Sono però una combinazione che ha un suo senso e questo senso è incarnato nel recente progetto Movi Kanti Revo, realizzato attraverso una collaborazione tra Google e il Cirque du Soleil: più precisamente, il Cirque du Soleil ci ha messo la sua arte, mentre Google Chrome ha fornito la base tecnologica necessaria per il progetto. Questa base tecnologica è costituita appunto dallo HTML5, che non è certo limitato a Google Chrome, ma che Chrome supporta particolarmente bene. Per essere ancora più precisi, la base tecnologica è costituita dal progetto WebRTC, un progetto open source supportato da Google, di cui parlerò dopo. Il risultato è osservabile sul sito relativo, ossia Movi Kanti Revo.
Il sito in questione è stato costruito per essere sia il sito dello spettacolo, sia il palcoscenico dello spettacolo, sia lo spettacolo stesso: navigare attraverso il sito significa osservare lo spettacolo, ma anche prendervi parte. O almeno, questa è l’intenzione. Più in concreto, il sito è progettato per essere navigabile in un modo non convenzionale: invece di utilizzare il classico sistema del point-and-click, ossia muovere il puntatore del mouse per cliccare su questo o quell’elemento della pagina, il sito di Movi Kanti Revo propone una navigazione attraverso gesti compiuti davanti alla propria webcam. In questo modo, anche gli spettatori possono idealmente entrare nello spettacolo e muoversi assieme a esso. O qualcosa di simile.
En passant, il nome Movi Kanti Revo è formato da tre verbi in esperanto, che significano “muoversi”, “cantare” e “sognare”; l’esperanto è una lingua artificiale, nata alla fine dell’Ottocento col nobile proposito di divenire linguaggio universale per la fratellanza tra i popoli, ma che ha più o meno lo stesso seguito di altre lingue immaginarie come l’elfico di Tolkien o il Klingon. Qualcosa per nerd linguistici, insomma. Ma torniamo al progetto.
Per utilizzare il sto e assistere-partecipare in forma completa allo spettacolo, due componenti sono necessarie: un computer dotato di webcam (possibilmente accesa) e un browser che supporta la tecnologia utilizzata. Siccome la tecnologia in questione è sviluppata sotto l’ala protettrice di Google (ma non è proprietà di Google: tutto quanto è open source e potete farne ciò che volete), il browser privilegiato è Google Chrome, ma in linea di massima non dovreste aver problemi neppure con Opera e Firefox. Come terzo e quarto componente necessario, io aggiungerei una connessione stabile e di buona qualità, ma anche un computer di buona potenza, se volete evitare immagini a scatti e altri spiacevoli effetti collaterali da animazione rallentata. Detto questo, passiamo a vedere meglio quale sia la tecnologia utilizzata.
Come dicevo prima, lo spettacolo-sito si basa su WebRTC, un progetto supportato da Google, ma reso disponibile a tutti in formato open source: qui trovate la licenza d’uso, mentre qui potete vedere un altro esempio di ciò che si può ottenere con WebRTC. Il codice sorgente, infine, è accessibile da questa pagina. Scopo di questo progetto è fornire ai browser uno strumento per supportare le comunicazioni “in diretta”, senza bisogno di appoggiarsi a Flash o Silverlight, ma usando solo il JavaScript. Il sito di Movi Kanti Revo, per l’appunto, fa uso soltanto del JavaScript per ottenere il risultato che avete potuto vedere. Più nello specifico, WebRTC mette a disposizione gli strumenti per sviluppare comunicazioni audio e video: per fare un esempio, rende possibile programmare una video chat in JavaScript, ma anche molto altro.
Fra le nuove funzioni introdotte dallo HTML5 c’è appunto il supporto diretto per video e audio, che in precedenza era invece delegato a plugin esterni, come il famoso (e famigerato) Flash: tutto ciò è stato ottenuto grazie a una maggiore integrazione del JavaScript nel codice HTML. YouTube, per fare un esempio che sicuramente sarà noto a tutti, ha sempre utilizzato il Flash per la riproduzione dei video, ma negli ultimi tempi offre anche l’utilizzo di una interfaccia in HTML5 per i browser che lo supportano: in questo modo, è possibile guardare i video di YouTube anche su computer e dispositivi in cui il Flash è bloccato o assente, senza accorgersi della differenza.
WebRTC parte da queste basi e si spinge oltre. Accanto alla semplice riproduzione di video, offre infatti anche la possibilità di catturare video e audio attraverso una webcam, come si è visto nel lavoro del Cirque du Soleil: la funzione JavaScript getUserMedia() serve appunto a questo scopo. Al posto di una spiegazione di tutto ciò che si può fare, però, è forse più semplice vederlo in azione: il sito del progetto ci offre appunto una serie di esempi che possiamo provare nel nostro browser (ammesso che li supporti), così da farci una idea di come potrebbero essere molti siti in un futuro più o meno immediato. Se sia un passo avanti, lo lascio decidere a voi; di certo, però, i problemi di sicurezza e le discussioni sulla privacy sono destinati ad aumentare, in modo più o meno sensato. A titolo informativo, attualmente Google Chrome vi chiederà il consenso, prima di accedere a webcam e microfono: potete acconsentire oppure negare, come preferite.

giovedì 20 settembre 2012

Adventure e le avventure testuali


Discendendo lungo le ere geologiche dei videogiochi per computer, le avventure testuali occupano uno degli strati più profondi della Terra, se non il più profondo, prima che comparissero sulla scena persino i più rudimentali esempi di interfaccia grafica, come quella fornita da Rogue. La loro fase di massimo splendore e massima diffusione si colloca tra la seconda metà degli anni ’70 e la prima metà degli anni ’80, periodo in cui il computer era ancora un oggetto alieno per la maggior parte degli esseri umani, ma soprattutto periodo in cui la potenza di calcolo e di memoria di un computer non era neppure paragonabile a quella di un qualsiasi aggeggio odierno, il che poneva grandi limitazioni ai primi programmatori di videogiochi. Le avventure testuali nascono proprio da queste limitazioni, volgendole a proprio favore, proprio come avrebbe fatto Rogue qualche anno dopo.
Un’avventura testuale è all’incirca la versione computerizzata di un libro-game (o, a seconda dei punti di vista, un libro-game è la versione cartacea di un’avventura testuale): l’interfaccia è costituita da solo testo e il testo racconta una storia descrivendo ambienti e situazioni, con cui l’utente potrà interagire descrivendo le proprie azioni. In pratica, sono basate su una interfaccia in linguaggio naturale: il gioco descriveva un ambiente, l’utente scriveva l’azione da eseguire su quell’ambiente e il gioco interpretava l’azione, descrivendo poi le conseguenze di quella azione. Il giocatore, quindi, interagiva con il gioco parlandogli (o meglio scrivendogli) nella propria lingua, che era generalmente l’inglese; stava poi al gioco interpretare gli ordini e agire di conseguenza. Le interfacce in linguaggio naturale erano un esperimento molto interessante, in seguito accantonato in favore delle interfacce grafiche e adesso rispolverate nell'era degli smartphone: le presunte novità rivoluzionarie sono vecchie di oltre trent’anni, ma di questo parleremo un’altra volta.
Adventure è il capostipite delle avventure testuali. Noto anche come Colossal Cave Adventure (e varianti sul tema), è un videogioco sviluppato tra il 1975 e il 1976 e rappresenta, o meglio racconta, una esplorazione di un complesso di caverne realmente esistente, ma riveduto e corretto per renderlo più affascinante ai giocatori. Come è facile da intuire, lo schema di gioco è lo stesso che sarà ripreso qualche anno dopo da Rogue: l’esplorazione di un dungeon sotterraneo. Peraltro, il vero anello di congiunzione tra avventure testuali e roguelike sarà Zork, un successore di Adventure che apparirà nel 1979, sempre a titolo informativo. In questo complesso di caverne è possibile trovare svariati oggetti, che il giocatore potrà raccogliere e utilizzare in altre parti del gioco, per risolvere i puzzle che si troverà davanti. Esempi classici sono le porte chiuse, che dovranno essere aperte con chiavi perse in qualche punto della caverna, oppure porzioni di cibo da raccogliere e utilizzare, in seguito, per distrarre animali feroci, e così via: tutti elementi che, con l’aggiunta della grafica, alla metà degli anni ’80 daranno vita a un nuovo genere di videogiochi, ossia le avventure grafiche.
La struttura di Adventure era complessamente semplice, o semplicemente complessa. Come detto in precedenza, una tipica sessione di gioco consisteva in un dialogo rudimentale tra il giocatore e il gioco: il gioco descriveva il luogo, il giocatore scriveva una breve azione, composta di solito da un verbo e un eventuale complemento (“raccogli chiave”, “vai nord”, “guarda”, eccetera), il gioco descriveva la situazione risultante dall’azione, e così via. Per dare un esempio, attingerò di nuovo alle mille e una risorsa di Emacs, un programma che è più o meno la versione digitale della tasca di Doraemon o del gonnellino di Eta Beta: fra le sue innumerevoli risorse è incluso anche Dunnet, una semplice avventura testuale. Ecco come si presenta una sessione di gioco:
Come si può capire, un videogioco di questo tipo è sia semplice che complesso da realizzare. È semplice perché utilizza soltanto uno dei mattoni fondamentali di qualsiasi linguaggio di programmazione: la stringa di testo, qualcosa che qualsiasi computer può riprodurre su schermo senza problemi, fin da quando esistono gli schermi. Realizzare una interfaccia grafica richiede molto più lavoro rispetto a scrivere una serie di frasi e appiccicarle sullo schermo. La parte complessa, però, è un’altra ed è l’interazione col giocatore. Il programma, infatti, deve capire gli ordini del giocatore, che sono dati in una lingua umana (e cioè in un linguaggio che il computer non può capire), tradurli in qualcosa che abbia senso, applicarli al gioco e poi fornire una risposta in lingua umana. Non è una operazione semplice. Nel caso di Adventure e delle avventure testuali, però, il compito era facilitato dalla loro struttura: gli ordini impartiti dall'utente erano limitati di solito a una o due parole, almeno nelle prime versioni di questi giochi, ed era dunque possibile rendere il programma capace di “capire” un numero sufficiente di ordini e reagire a ognuno di essi in modo adeguato alla situazione. Come è ovvio, il verbo “capire” è usato in senso molto lato; il programma non capiva l’inglese (o qualsiasi altra lingua naturale), ma confrontava le parole digitate dall'utente col vocabolario di parole in suo possesso: quando riusciva a farle coincidere, costruendo un comando eseguibile, il programma lo eseguiva. Più o meno, Adventure capiva l’inglese tanto quando una serratura capisce una chiave. Delle interfacce in linguaggio naturale, però, parlerò meglio in un’altra occasione.
Come dicevo all’inizio, l’età dell’oro delle avventure testuali si è conclusa all’incirca verso la metà degli anni ’80, mentre il declino è arrivato con gli anni ’90, quando più o meno ovunque ha cominciato a imporsi la grafica. Come avviene anche in natura, le avventure testuali hanno reagito ai cambiamenti del loro habitat in due modi: evolvendosi, oppure estinguendosi. L’evoluzione ha portato alla nascita delle avventure grafiche e alle visual novel, una specie che ha trovato ambiente favorevole in Giappone, dove è tuttora una delle forme di vita dominanti nel mondo dei videogiochi per computer. Un’altra branca, passata attraverso Zork, ha prodotto Rogue e i successivi roguelike, i quali si sono a propria volta evoluti in Diablo e videogiochi analoghi: evoluzione non indolore e non “pura”, in quando Diablo è il prodotto di vari incroci, ma è pur sempre un discendente di Rogue.
Come abbiamo già visto parlando dei roguelike, anche nel caso delle avventure testuali esistono i celacanti, che hanno scelto di avere a che fare il meno possibile con l’evoluzione e conservare il sano gusto dei giochi di una volta: attorno alle avventure testuali si è infatti sviluppata una comunità “di nicchia”, che continua tuttora a produrne con entusiasmo e che, a differenza di altre branche di videogiochi, ha concentrato la propria attenzione sullo sviluppo dei dialoghi tra utente e gioco, cioè l’interfaccia in linguaggio naturale. Le avventure testuali prodotte oggi, quindi, permettono una maggiore interazione e “capiscono” comandi più complessi rispetto ai tradizionali verbo-più-complemento, proprio come la comunità dei roguelike ha arricchito il proprio mondo ludico introducendo forme sempre più complesse di AI, come le reti neurali e gli algoritmi genetici. In breve, anche le avventure testuali sono oggi un patrimonio della comunità mondiale dei nerd.
Per chiunque fosse interessato a sperimentarne una, questi sono i link a un paio di versioni di Adventure:
Un’altra avventura testuale è contenuta in Emacs, come ho già detto, mentre chi fosse interessato a produrre avventure testuali, anche solo per divertimento o per esercitarsi, esistono varie soluzioni: una facile guida (in inglese) per programmare avventure testuali in Prolog, che funziona benissimo con SWI-Prolog, ma soprattutto il magico mondo di Inform, un pratico ambiente di sviluppo per storie interattive (una forma evoluta di avventura testuale), gratuito e disponibile anche in italiano.

sabato 15 settembre 2012

4K Download, uno sguardo veloce


Sotto l’etichetta di “4K Donwload” si raccoglie una serie di programmi gratuiti che, come suggerisce la seconda parte del nome, servono appunto a permettere o semplificare lo scaricamento di materiale da siti di condivisione video come YouTube e altri. La prima parte del nome, “4K”, deriva invece dalla risoluzione massime in cui è possibile scaricare un video di YouTube, ossia la cosiddetta risoluzione in 4K, all'incirca 4000 pixel di larghezza (e proporzionalmente 3000 pixel di altezza). Sul sito di riferimento, che ovviamente si chiama 4kdownload, è possibile trovare cinque diversi programmi gratuiti, il cui funzionamento in gran parte si sovrappone:
  • 4K Video Downloader
  • 4K Video to MP3
  • 4K YouTube to MP3
  • 4K Stogram
  • 4K Vimeo Downloader.

A eccezione dell’ultimo, che al momento è soltanto per Windows, questi programmi sono disponibili per i principali sistemi operativi: Windows, Mac OS X, Ubuntu e Debian. Dovreste quindi riuscire a trovare quello che fa per voi, senza troppi problemi di adattamento. La pagina di download rimanda a Sourceforge, per lo scaricamento di ogni programma, ma non dovrebbe comunque dare grandi problemi. Potrebbe semmai essere più difficile decidere cosa scaricare, dato che più o meno tutti sembrano fornire lo stesso servizio.
Nonostante questa abbondanza di offerte, il programma di cui avrete bisogno, nella maggior parte dei casi, è il primo, ossia 4K Video Downloader: gli altri li potrete prendere in considerazione solo in caso di emergenza, oppure se 4K Video Downloader non ha soddisfatto le vostre necessità.
4K Video Downloader permette di scaricare video da YouTube e altri siti analoghi, selezionando la qualità video che preferite tra quelle disponibili; permette anche di estrarre l’audio da un video, scaricandolo come file MP3. In linea di massima, funziona più o meno come Songr, che abbiamo già visto, ma ha una interfaccia più professionale e forse più semplice da usare; prima di scaricare un file (video o audio che sia) ci informa anche sulle dimensioni del file, così da farci una idea sul consumo della banda e sul tempo di scaricamento. Anche la procedura di scaricamento è la stessa a cui probabilmente sarete ormai abituati e che, con minime varianti, si ripropone per tutti i siti e i programmi di download da YouTube:
  1. copiare l’indirizzo del video;
  2. premere il pulsante “Paste URL” nella finestra di 4K Video Downloader (il link che avete copiato sarà incollato automaticamente);
  3. scegliere se scaricare solo l’audio, oppure una delle qualità di video disponibili;
  4. scegliere dove salvarlo sul vostro computer.

I vari passaggi sono riassunti anche nella pagina di istruzioni sul sito ufficiale, corredata da immagini: il tutto è in inglese, ma dovrebbe essere comprensibile anche a chi non conosce la lingua. Una volta scaricato, il file potrà essere in formato MP3 (se avete scelto solo l’audio), oppure in formato MP4 o FLV (se avete scelto il video) e avrà la qualità che avete scelto voi. Siccome per la qualità dell’audio avete a disposizione una sola scelta, nella maggior parte dei casi, potreste anche scegliere di scaricare tutto il video, magari ad alta qualità, ed estrarre l’audio in un secondo momento, utilizzando un programma che vi permetta di scegliere la qualità di cui avete bisogno.
4K Video Downloader funziona con YouTube, Facebook, Vimeo, Dailymotion e Metacafe.
Siccome col primo programma è possibile fare più o meno tutto, a cosa servono gli altri quattro? Ottima domanda, che andrebbe però girata agli sviluppatori: in linea di massima, sono versioni più specializzate, mentre 4K Video Downloader è il “coltellino svizzero” della situazione. L’unico a presentare un funzionamento diverso è 4K Stogram, che non è dedicato allo scaricamento di video o audio, ma alle immagini di Instagram: inserendo il nome utente di una persona, questo programma promette di rendere disponibili tutte le sue foto.
Infine, per tutti e cinque i programmi esiste la possibilità di tradurli nella lingua che preferiamo. Le istruzioni per tradurre un programma in una lingua non ancora disponibili si possono trovare sul sito ufficiale di distribuzione. Ovviamente, sono in inglese.

martedì 11 settembre 2012

LibreJS: che cosa è e come funziona

Se avete mai visitato il sito di Richard Stallman, allora probabilmente vi sarete già imbattuti nel nome di LibreJS: lo trovate menzionato nella parte alta della pagina di apertura, tra le notizie in evidenza. Se non sapete chi sia Richard Stallman, possiamo descriverlo in breve come un geniaccio paranoico, con svariate fissazioni più o meno razionali e giustificate. È anche il “creatore” di Emacs e questo è sufficiente ad assicurargli un posto nel pantheon informatico. Ma torniamo a LibreJS.
LibreJS è una estensione per browser basati su Mozilla (per intenderci, Firefox è l’esponente più famoso) che, a seconda dei punti di vista e delle convinzioni personali, può essere completamente inutile, oppure fondamentale: il suo compito è infatti quello di analizzare tutti gli elementi in JavaScript contenuti in una pagina web e bloccare quelli che non sono “liberi”. Un esempio pratico appare nella immagine sottostante:
Questo è il risultato che si ottiene aprendo la prima pagina di Google, con LibreJS attivo. Quando carichiamo una nuova pagina, LibreJS ne analizza tutto il JavaScript presente al suo interno; se una o più parti è definita in un file esterno, scaricato assieme alla pagina, allora LibreJS provvederà ad analizzare anche quegli elementi. Al termine dell’analisi, tutto ciò che è stato identificato come non-libero è bloccato da LibreJS; l’unica eccezione è costituita dal JavaScript considerato semplice, ossia il JavaScript che
-non definisce funzioni;
-non carica files esterni alla pagina;
-non utilizza AJAX.
Questo sono i principali elementi che rendono “semplice” un elemento in JavaScript e, di conseguenza, immune all’attività censoria di LibreJS; un elemento in JavaScript che esegue almeno una di queste operazioni, o altre analoghe, non è considerato semplice e sarà quindi analizzato a fondo (e bloccato, se necessario). Come possiamo vedere dall'immagine soprastante, Google brulica di JavaScript non libero, secondo l’analisi di LibreJS, ma in effetti si può ottenere lo stesso risultato su quasi tutti i siti, dato che solo una sparuta minoranza di siti (quelli gestiti da membri e attivisti di GNU e Free Software Foundation, in linea di massima) si adegua ai canoni di LibreJS.
Quando una pagina è stata caricata, possiamo cliccare sull’icona nell’angolo in basso a destra del browser (quella col simbolo JS) per visualizzare il risultato, che poi corrisponde all’immagine inserita in precedenza. Di base, tutto il JavaScript considerato “non-libero” è bloccato: possiamo però sbloccarlo cliccando sul pulsante “Allow all scripts in this page”, che autorizzerà l’esecuzione di tutto il JavaScript presente nella pagina, che sia libero o meno. Questa autorizzazione resterà valida per tutta la sessione del browser, ossia fino a che non lo chiuderemo. Se invece vogliamo concedere un’autorizzazione permanente a una o più pagine, oppure a uno o più siti, dovremo modificare le impostazioni di LibreJS e aggiungere alla “lista bianca” i siti che ci interessano. Per farlo, apriamo la finestra delle estensioni di Firefox (o del browser basato su Mozilla che stiamo utilizzando), cerchiamo LibreJS e clicchiamo poi sul pulsante “Opzioni”. Si aprirà questa schermata:
Nella parte bassa troviamo uno spazio editabile, introdotto da “Whitelist domains, separated by comma, omit protocol”: qui dovremo scrivere, oppure incollare, l’indirizzo dei siti che vogliamo autorizzare sempre, separandoli tra loro con una virgola. Dovremo scrivere solo la parte dell’indirizzo che segue il www: se vogliamo autorizzare Google, ad esempio, dovremo scrivere google.com, non scrivere www.google.com o peggio ancora http://www.google.com.
A titolo informativo, nel corso della procedura di installazione LibreJS vi chiederà di cancellare la cache del vostro browser
il che è normale e giustificato. LibreJS ha bisogno che il browser scarichi tutto il contenuto di una pagina, per poterlo esaminare e bloccare (ove necessario); siccome la cache serve anche a evitare di dover scaricare tutto il contenuto dei siti che abbiamo visitato in precedenza, mantenere il contenuto precedente l’installazione di LibreJS ne ostacolerebbe il funzionamento sui siti già visitati da noi.
Detto questo sul suo funzionamento, la domanda che resta è: perché una persona dovrebbe utilizzarlo? LibreJS non serve ad aumentare la sicurezza del computer, perché non blocca elementi in JavaScript che potrebbero essere dannosi, ma soltanto gli elementi che non sono rilasciati con una licenza “libera” (una lista delle licenze considerate libere è consultabile sul sito GNU). Se ci interessa una gestione più accurata e personalizzabile del JavaScript, allora dovremo rivolgerci a NoScript, altra estensione per Firefox e simili, orientata verso la sicurezza del codice e dell’utente che lo esegue. LibreJS è invece orientato verso tutti quegli utenti a cui interessa la liberta del software, ossia tutti quelli che vogliono eseguire sul proprio computer soltanto programmi (e script) che siano liberi, non proprietari. In pratica, interessa solo a una piccola minoranza di utenti.
Per chi volesse approfondire il discorso sul JavaScipt libero e i problemi connessi al JavaScript chiuso, almeno dalla prospettiva del GNU, un buon punto di partenza è la lettura dell’articolo “The JavaScript Trap” (in inglese).

giovedì 6 settembre 2012

ELIZA e le intelligenze artificiali illusorie

Una moda molto diffusa in questo periodo è quella di appioppare una etichetta di “smart” a qualsiasi tipo di oggetto: abbiamo telefoni smart, televisori smart, lavatrici smart, tostapane smart e probabilmente arriveranno anche i gabinetti smart, se già non ci sono. Tutto ciò, oltre a essere alquanto buffo, mi riporta sempre alla mente due articoli piuttosto datati, ma terribilmente attuali: il primo è “Artificial Intelligence Meets Natural Stupidity”, pubblicato da Drew McDermott nel 1976, e il secondo è la presentazione del programma ELIZA, pubblicata nel 1966 dal suo creatore, Joseph Weizenbaum. Era un periodo che si può considerare vicino all’età antica, nel campo della ricerca sull’intelligenza artificiale, eppure erano già emersi alcuni difetti, nel modo di pensare umano, che sono tuttora presenti e attivi e, complice una pubblicità ingannevole, ci fanno considerare “smart” più o meno qualsiasi cosa. Oggi parlerò di ELIZA.
ELIZA è il nonno (o la nonna, come preferite) degli attuali chatbot, ossia quei programmi che simulano una conversazione con un essere umano, cercando di suonare il più possibile “umani” agli occhi del loro interlocutore. In linea di massima, è la (discutibile) idea alla base del celebre test di Turing: un computer è intelligente se riesce a emulare l’intelligenza umana al punto da ingannare un vero essere umano. Per mostrare quanto fosse illusoria questa idea, perlomeno nella formulazione che aveva assunto in quegli anni, il professor Weizanbaum preparò e presentò un programma che sapesse dialogare con gli esseri umani, imitando la personalità di uno psicanalista di scuola rogeriana: è la nascita di ELIZA.
Se avete una copia di Emacs sul vostro computer, potete farvi una idea molto precisa di come funzionasse ELIZA, grazie al suo clone che Richard Stallman ha inserito in Emacs: lo trovane nel menu “Help”, sotto la voce “Emacs Psychoterapist”, ed è una buona riproduzione del vecchio programma ELIZA. A titolo di esempio, ecco come si può presentare una normale discussione:

Non suona molto naturale, vero? Dipende tutto dall’argomento di cui si parla: se l’utente umano sta al gioco e parla come farebbe con un autentico psicanalista, si può ottenere una passabile illusione di dialogo, perché alcune risposte di ELIZA sembrano davvero attinenti al tema in discussione. Altre, invece, suonano fin troppo generiche e vaghe rispetto a quelle che darebbe un vero essere umano. O meglio, rispetto a quelle che darebbe un vero essere umano con cui stiamo dialogando: un essere umano che fingesse di ascoltarci, mentre in realtà sta pensando ai fatti suoi, probabilmente ci darebbe risposte analoghe. Tutto ciò dipende dal modo in cui funziona ELIZA: ELIZA non capisce davvero ciò che diciamo, ma si limita ad analizzare la struttura della frase, cercare alcune parole chiave e costruire una risposta sulla base di ciò. Un principio che rimane tuttora valido in buona parte di quanto etichettiamo come “smart”.
La tecnica su cui si fonda ELIZA è il pattern-matching, che può essere schematizzata nelle seguenti quattro fasi:

  1. il programma riceve un input (nel caso di ELIZA, l’input è la frase che noi scriviamo);
  2. il programma cerca un modello a cui sia possibile far corrispondere l’input;
  3. il programma traduce l’input in risposta;
  4. il programma ci fornisce una risposta (un output, se preferite).
Come è facile da capire, i punti fondamentali sono il secondo e il terzo. Il secondo punto può essere sviluppato in vari modi, ma il più semplice e generale consiste nel preparare una serie di modelli di frasi di uso comune, che il programma potrà utilizzare per trovare una risposta a ciò che l’utente gli sta dicendo. Un esempio classico potrebbe essere il modello “io mi chiamo X”, dove X rappresenta una variabile: quando il programma incontra una frase strutturata su questo modello, per esempio un utente che scrive “io mi chiamo Pincopallino” come frase di input, potrà sovrapporre la frase di input al modello corrispondente.
Una volta trovato un modello per la frase di input, si può passare al terzo punto e costruire la risposta, di nuovo utilizzando lo stesso principio. Alla frase “io mi chiamo X”, ad esempio, potrebbe essere abbinata una risposta del tipo “piacere di conoscerti, X”: il programma utilizzerà dunque il nome che ha abbinato a X, nella fase precedente, e costruirà una risposta adeguata, che potrebbe essere “piacere di conoscerti, Pincopallino”. Non siamo molto lontani dall’unificazione, che già abbiamo visto parlando del Prolog. Se poi nella seconda fase non è stato possibile abbinare alcun modello all’input ricevuto, nella terza fase sarà previsto un “caso generale”, per gestire questo tipo di eventi: potrebbe essere una risposta sul modello “non ho capito, potresti ripetere?”, per esempio. In questo modo, si può ottenere una parvenza di dialogo, senza che il programma capisca davvero ciò che stiamo dicendo: si limita a cercare un modello per le nostre frasi e ci risponde col modello corrispondente. La regola che ne governa il funzionamento può essere riassunta così: “se vedi X, allora rispondi con Y”. Si può poi perfezionare inserendo una scelta multipla tra le risposte, trasformandolo in un “se vedi X, allora rispondi con Y, Z o W, scegliendo a caso tra le tre soluzioni”, oppure inserendo una graduatoria di risposte, dalla più specifica alla più generale, per dare una maggiore parvenza di intelligenza. Sempre illusione resta, in ogni caso.
In sostanza, ELIZA è un programma che funziona come “spalla” in una conversazione con un essere umano: non sa formulare frasi autonome, ma può replicare in modo più o meno sensato agli input che riceve dall'utente umano. Finché l’utente continua a stare al gioco e fornire input sensati, ossia frasi di senso compiuto e coerenti col discorso, l’illusione di un dialogo con una intelligenza artificiale si mantiene; quando l’utente comincia a fornire input insensati, l’illusione si sgretola, perché non c’è mai stata alcuna traccia di intelligenza dall’altra parte dello schermo. Tutto ciò che avevamo era un programma capace di riconoscere alcuni modelli nelle nostre frasi, per risponderci con altri modelli di frase, più o meno riadattati in base agli input ricevuti: una intelligenza non molto superiore a quella di una poltrona che si adatta alla forma del nostro sedere, insomma.
A cosa serviva ELIZA? A mostrare quanto fosse facile illudersi (e illudere) di aver raggiunto grandi risultati nelle ricerche sull'intelligenza artificiale, quando in realtà si stavano solo realizzando progetti che, per quanto utili e funzionali, di intelligenza non avevano alcuna traccia. Più o meno la stessa cosa che dirà, dieci anni dopo, Drew McDermott nel suo già citato articolo “Artificial Intelligence Meets Natural Stupidity”, ma anche la stessa cosa che si potrebbe ripetere oggi, davanti alla pletora di oggetti “smart” che vediamo pubblicizzati in tutte le salse. Per ironia della sorte, ELIZA è stato ricevuto a suo tempo come “un enorme passo avanti verso la realizzazione di un computer pensante”, con somma disperazione di Weizenbaum, ma questo è un altro discorso. Per inciso, ELIZA è stato anche uno dei primi esempi di programma con interfaccia in linguaggio naturale, ossia un programma a cui si potevano dare istruzioni in una lingua umana (inglese, in questo caso), ma di queste interfacce parlerò semmai in un’altra occasione.

sabato 1 settembre 2012

Navigazione anonima con Ultrasurf

Tornerò oggi a parlare di navigazione anonima e di accesso ai siti bloccati, con un giocattolino che, per quanto limitato nei suoi scopi, può sempre tornare utile per la sua semplicità di utilizzo e per il suo ingombro quasi nullo: Ultrasurf.
Ultrasurf è un programma di dimensioni ridotte (circa 1,5 MB), gratuito, che non richiede installazione e può essere utilizzato con un click, senza richiedere complessi aggiustamenti delle sue impostazioni. Di contro, però, è disponibile soltanto per sistemi operativi Windows, non è open source ed è impostato per utilizzare Internet Explorer; inoltre, tende ad avere un approccio un po’ bigotto e impedisce la navigazione su certi siti. Ad alcuni di questi limiti si può però rimediare, ad altri invece no; per questo motivo non è un programma che può interessare tutti, come invece lo è Tor. Può comunque tornare utile in diverse occasioni, come vedremo.
Ultrasurf è stato originariamente sviluppato per aiutare gli utenti cinesi ad aggirare la censura imposta dal loro governo, o almeno così ne descrive la genesi la società che lo ha sviluppato. Di fatto, può essere utilizzato ovunque si voglia accedere a un sito bloccato (cosa che non accade solo in Cina), oppure si voglia navigare senza rendere nota la nostra identità a qualsiasi sito: più in generale, rientra nella categoria degli strumenti per la navigazione indiretta, ossia quel programmi che ci permettono di raggiungere un sito passando da una strada laterale, invece di collegarci direttamente.
Ultrasurf è infatti un programmino che si occupa di semplificare la navigazione attraverso proxy: noi lanciamo Ultrasurf, lui si collega a un proxy della sua rete e, da quel momento in poi, la nostra navigazione passerà attraverso quel proxy, permettendoci così di accedere a un sito senza svelare la nostra vera identità, oppure di accedere a un sito che è bloccato nel paese in cui ci troviamo. Rispetto ad altre soluzioni, Ultrasurf è discretamente veloce e su molti siti non si noterà una grande differenza rispetto alla navigazione diretta: può diventare lento se cerchiamo di scaricare qualcosa di grandi dimensioni, come succede sempre in caso di proxy, ma nella navigazione normale si comporta bene e passa pressoché inosservato.
Una volta scaricato dal suo sito ufficiale, ci ritroveremo con una cartella zip di nome “u”, al cui interno troveremo un unico file eseguibile, di nome u1203 (la versione attuale; nei prossimi aggiornamenti il numero sarà diverso, dato che corrisponde alla versione in uso): tutto ciò può apparire molto sospetto, ma in questo caso è normale. Possiamo anche controllarlo con un antivirus, giusto per sicurezza. Una volta scaricato, estraiamo il file dalla cartella compressa e avviamolo con un doppio click. Ci chiederà il permesso di accedere alla Rete e poi si aprirà questa finestrella:
seguita dall'apertura di una nuova finestra di Internet Explorer. Come ho detto all’inizio, Ultrasurf è impostato per funzionare con Internet Explorer e ne aprirà una nuova finestra ogni volta che lo lancerete. Se siamo consenzienti alla navigazione con questo browser, allora non ci sono problemi: possiamo usare quella nuova finestra e visitare qualunque sito vogliamo, utilizzando Ultrasurf. Se non siamo consenzienti e vogliamo utilizzare un altro browser, come Firefox o Google Chrome, allora ci sarà qualche passaggio in più. 
La soluzione meno semplice è quella di impostare a mano il proxy a cui il nostro browser preferito si dovrà collegare: per puntarlo verso Ultrasurf, dovremo impostare 127.0.0.1 come indirizzo e 9666 come porta. Firefox dispone di una estensione per utilizzare Ultrasurf in modo più semplice, senza quindi dover smanettare con le impostazioni del proxy. Google Chrome, invece, utilizza le stese impostazioni proxy di Internet Explorer e possiamo sfruttare questa caratteristica a nostro vantaggio: lasciamo che Ultrasurf apra una finestra di Internet Explorer, chiudiamo la finestra e il nostro Google Chrome sarà magicamente impostato per funzionare con Ultrasurf, proprio perché Ultrasurf ha già modificato le impostazioni di Internet Explorer, che sono le stesse di Chrome. Non sarà molto elegante, ma è una soluzione molto semplice.
Mentre navighiamo attraverso Ultrasurf, nell’angolo in basso a destra del nostro browser vedremo un lucchetto giallo:
Possiamo nasconderlo modificando le opzioni, se non ci piace, ma è utile per ricordarci che stiamo navigando con un proxy, oltre a fornirci un più rapido accesso alla finestra principale di Ultrasurf: cliccando sul lucchetto col tasto destro del mouse, infatti, si aprirà un menu che ci propone tutte le voci della finestra principale.
Una volta che siamo connessi con Ultrasurf, cosa succede? Succede che tutto il nostro traffico è deviato verso il miglior proxy disponibile della rete di Ultrasurf. La comunicazione tra il nostro computer e il proxy avviene attraverso un tunnel criptato, più o meno come succederebbe utilizzando un VPN e come succede anche all’interno della rete Tor, mentre la protezione del traffico tra il proxy e il sito finale dipende dal tipo di connessione che si utilizza: con una connessione http il traffico sarà in chiaro, con una connessione https il traffico sarà criptato. In ogni caso, il sito a cui ci colleghiamo vedrà l’indirizzo IP del proxy, non il nostro indirizzo reale. Alla fine della sessione, poi, Ultrasurf cancellerà automaticamente tutti i dati dalla finestra di Internet Explorer, come misura ulteriore di sicurezza: spazzerà via i cookies e svuoterà cronologia e cache.
Passiamo adesso agli svantaggi. Come ho già detto, di base utilizzerà Internet Explorer, ma si può impostare anche per utilizzare altro browser: indirizzo 127.0.0.1 e porta 9666, giusto per ricordarlo. Una limitazione più seria è quella di poter funzionare soltanto su un sistema operativo Windows, ma anche a questo si può rimediare, in attesa che ne sviluppino una versione anche per altri sistemi operativi: la soluzione è utilizzare Wine. Non il massimo della vita, lo so, ma meglio di niente.
Infine, non è possibile accedere a tutti i siti, utilizzando Ultrasurf. Per ragioni misteriose ma alquanto ironiche, uno strumento che dichiara di essere nato per aiutare utenti cinesi a sottrarsi ai filtri governativi fa uso esso stesso di flirti, per limitare i siti a cui si può accedere: non potrete dunque accedere a siti porno, erotici o giudicati tali, perché gli sviluppatori di Ultrasurf non vogliono.
Nonostante questi limiti, può tornare utile per accedere rapidamente a un sito bloccato, come ThePirateBay e i vari altri aggregatori di torrent, soprattutto per la sua buona velocità di navigazione, ed è anche molto semplice da usare: anche il suo livello di sicurezza è decisamente alto. Diciamo che, nel complesso, è un ottimo programma anticensura per un pubblico bigotto, oppure per avvicinare i bambini al magico mondo dell’anonimato, tenendoli al riparo dalla pornografia (tanto la raggiungeranno in altri modi, non credete). Chi non ama i filtri, di qualunque tipo essi siano, e chi non ama i programmi chiusi, invece, farà meglio a orientarsi verso Tor, sopportandone stoicamente la bassa velocità media.