Europa e accessibilità: standard e software

L’11 Dicembre 2008 è una data importante per l’accessibilità dei siti web in quanto viene ufficialmente pubblicato lo standard WCAG 2.0.

Tale standard è già vecchio di almeno un anno ma ancora non tutti si muovono per applicarlo nei loro siti web.

In Italia, a parte la traduzione italiana dello standard a cura di Roberto Scano (presidente dell’associazione IWA – International Webmasters Association), non abbiamo molto. La legge Stanca (decreto ministeriale dell’8 luglio 2005) fa esplicito riferimento al WCAG 1.0 e allo standard americano S508 spingendo pero’ a documenti HTML o XHTML di tipo Strict e non Transitional.

In altre nazioni abbiamo:

Ora a livello europeo fu pubblicata la metodologia UWEM nel 2007 sulla base del WCAG 1.0 a cui segui un migration plan il 12 Febbraio del 2008 per le specifiche WCAG 2.0 ma nulla di più.

In Europa abbiamo anche l’IPG (Information Providers Guide) dove si invitano i siti web europei a seguire le specifiche WCAG 2.0 AA.

Tra i vari software suggeriti per validare secondo lo standard WCAG 2.0 AA ritroviamo Total Validator, TAW (che segue la normativa spagnola e fa uso di HTMLParser), Wave, Cynthia says, Achecker e altri linkati dal W3C. Esplicitamente ritroviamo la Web Developer Toolbar di Chris Pederick rilasciata come GPL e NVDA e ORCA come screenreader.

All’interno dello stesso sito ritroviamo altri link sul controllo della qualità (tra cui JSlint, applicazione javascript rilasciata con licenza BSD che controlla la qualità del codice javascript).

Ci sarebbe da dire che Plone supporta le WCAG 1.0, su Drupal c’è un intero gruppo sull’interoperabilità mentre sul lato proprietario Sharepoint si annuncia come CMS conforme alle WCAG 2.0 (ci fu una tavola rotonda con la Hi Software (società dietro Cynthia says) dove si è creato il progetto AKS (Accessibility Kit for Sharepoint 2007)).

Advertisements

Web Services e interoperabilità

Lavorando con i web services sorge il problema dell’interoperabilità, magari qualcuno si chiede “ma come è possibile? I web services garantiscono l’interoperabilità grazie al fatto che espongono servizi sulla rete e poi ho li ho anche validati…”. Ebbene si questo è in parte vero in parte perchè spesse volte si riferiscono a xml schema e quindi strumenti (come Eclipse) ne garantiscono la validità se questi schema vengono rispettati.

Ma ciò non basta. Non basta perchè il modo in cui sono scritti influenza il modo in cui le classi java o C# sono generate e ne sto qui a parlare proprio perchè in azienda abbiamo avuto questo problema. Un’altra azienda ha scritto dei file wsdl da cui ha generato classi java (tramite lo strumento di Axis2 wsdl2java) e su cui poi ha lavorato per un progetto. Questo progetto dovrà poi essere realizzato in C# con piattaforma .NET.

Fatto sta che gli strumenti che generano le classi C# non riescono perchè non trovano valido il file wsdl utilizzato!!! Vi domanderete “come faccio a sapere quali sono gli accorgimenti che devo prendere?”

Attualmente la bibbia di riferimento è il Basic Profile, una sorta di studio che ha portato a definire delle regole per ridurre i rischi derivanti dall’interoperabilità. Il BP è stato realizzato dal Web Service Organisation WS-I una specie di consorzio guidato da SAP, Fujitsu, Microsoft, HP, Sun, IBM, Intel, Oracle ecc

In questo BP si fa cenno a diverse tecnologie per usate per i web services SOAP, WSDL UDDI, XML schema, HTTP e HTTPS vi invito quindi a dare uno sguardo.

Al di là della sola lettura occorrono strumenti di verifica e che ho trovato grazie a questo articolo. In pratica il WS-I ha rilasciato uno strumento chiamato Interoperability Testing Tools (su un accenno a come si usa vedere qui) che è stato poi integrato in altri strumenti come soapUI un software in parte rilasciato open source con licenza GNU Library o Lesser General Public License (LGPL) in parte, la versione Pro, in via commerciale. soapUI è stato realizzato come applicazione stand-alone ma anche come plugin per Eclipse, Netbeans, IntelliJ e Maven.

Esistono altri strumenti che troverete nell’articolo che vi ho indicato e che da oggi ho cominciato a valutare.

Benvenuti nel meraviglioso mondo dell’interoperabilità :-)

Applicazioni portabili, le applicazioni sulla mia chiave usb

Di recente avevo bisogno di usare Skype su Windows ma non potevo installarlo e mi scocciava avviarlo da una macchina virtuale con sopra Linux percio’ ho pensato: posso usare skype su una chiave usb (in attesa di avere il mio portatile).

Tra l’altro avevo letto di applicazioni portabili ovvero di applicazioni modificate che possono essere installate su supporti rimovibili (fermo restando che alcune applicazioni non hanno bisogno di un installer) ma sembra che Skype ancora non lo sia e se ho capito bene è per questioni di licenza.

Prima di spiegarvi come installare Skype su chiavetta usb, vi do un po’ di link dove potete trovare applicazioni portabili:

Tra le varie applicazioni di sicuro troverete Firefox, Thunderbird, FreeMind, Dia, VLC, Inkscape, GIMP, OpenOffice, eMule, µTorrent, 7-Zip ecc ecc…

Ora passiamo al caso Skype, in rete ho trovato più o meno consigli tutti uguali, il metodo escogitato è quello di prendere l’eseguibile di skype una volta installato, copiarlo nella chiavetta usb e lanciarlo da un file bat passandogli dei parametri. In dettaglio:

  1. Nella vostra penna usb create una cartella dal nome che volete “Skype” ad esempio;
  2. Installate Skype su un altro computer e andate a trovare il file skype.exe che dovete copiare nella cartella creata;
  3. All’interno della cartella creata create un file bat ad esempio “Skype.bat” il cui contenuto è questo:

@echo off
start skype.exe /datapath:”Data” /removable

La prima linea non mostra a video il comando, il comando “start” in se potrebbe essere tolto ma conviene usarlo per far chiudere il prompt dei comandi subito dopo aver lanciato skype mentre il parametro /datapath:”Data” indica la sottocartella “Data” che dovete creare e che skype usera’ per la sua configurazione.

Ora dovete lanciare Skype cliccando sul file bat che avete creato.

Magari ora vedo di installarmi Xampp con le applicazioni web su chiave usb senza avere tutto sul portatile di lavoro….

Ora siete liberi di muovervi dove volete con le vostre applicazioni!

Jamendo.com: musica gratuita e legale

Stasera ho scoperto il sito Jamendo.com, forse tardi ma meglio tardi che mai, e per quelli che non lo conoscono vi avviso subito che la musica è coperta da licenza Creative Common (è più che legale), anzi gli stessi artisti vengono informati che possono anche guadagnarci grazie alle donazioni degli utenti avvisando inoltre quali sono i diritti in ogni momento (nel caso vogliono vendere il loro album o rimuovere la propria musica).

Gli album si possono sentire e scaricare interamente non solo via semplice connessione http ma anche tramite file torrent attraverso le reti eMule e BitTorrent.

Tra l’altro è possibile inglobare l’album scelto in un widget tra questi tipi di blog: MySpace, Blogger.com, Skyrock, Opera Community, WordPress 2.x, DotClear 1.x e 2.x, GandiBlog e qualsiasi sito/blog che supporta l’html/xhtml.

Buon ascolto/download!

I Microformats: estrarre info da pagine web per riutilizzarle

Probabilmente avete avuto necessità di estrapolare informazioni da siti web come ad esempio delle informazioni riguardo una persona (indirizzo, email ecc) e utilizzarle in un’altra applicazione o ancora cercare velocemente un posto su (google maps ad esempio) partendo dalle coordinate che avete avuto su un altro sito.

Il Web semantico è da poco nato e si preoccupa di come mettere in relazione dei contenuti (informazioni) tra applicazioni diverse ovvero classificando le informazioni, strutturandole in modo che le applicazioni le sappiano riconoscere.

I Microformats tentano di rispondere a questa esigenza. Essi non sono altro che tag nascosti che permettono di identificare una certa informazione contenuta in una pagina web che poi è possibile impiegare in alcune applicazioni.

Che tipo di informazioni è possibile estrarre? Come fare a riconoscerle?

Una cosa per volta…

Il sito ufficiale è Microformats.org , sulla destra vedete gli attuali microformati : hcard (per identificare le informazioni sulle persone e organizzazioni), hCalendar (per gli eventi), geo (per indicare le coordinate geografiche), rel-license (per indicare una licenza), ecc ecc.

E’ chiaro che una volta strutturate queste informazioni e si dispone di una applicazione che riesce ad estraporarle è possibile poi riutilizzarle altrove. Firefox 3 sta appunto puntando alla loro integrazione, al momento in Firefox 2 esistono 2 plugin: Tails Export e Operator

Ora, una volta installato uno dei due , se andate sul sito ufficiale, dove per ogni microformato ci sono gli esempi, vedrete nella barra relativa al plugin comparire le informazioni estrapolate da cui è possibile il loro riutilizzo, esempi:

-) Operator in presenza di un contatto (microformato hCard) da’ la possibilità di esportare il contatto ovvero estrapolare il file vcf da aprire in Outlook o in Thunderbird (per Thunderbird non c’è piena compatibilità, ho trovato solo questo plugin che permette di gestire i vcf ma dovete salvarli prima invece di aprirli direttamente poichè l’Address book è integrato in Thunderbird (potete infatti richiarmarlo con: thuderbird.exe -addressbook) ) oppure aggiungerlo tra i segnalibri di Firefox o ancora aggiungerlo ai contatti di Yahoo!

-) Sempre con Operator in presenza di un evento (microformato hCalendar) si ha la possibilità di esportare l’evento in un file ics, il formato di iCalendar (in fondo al link c’è la lista delle applicazioni che lo supportano), oppure aggiungere l’evento a Google Calendar o Yahoo! Calendar

-) Sempre con Operator in presenza di un luogo (microformato geo) si ha la possibilità di esportare le coordinate nel formato KML o di trovare il luogo su Google Maps o Yahoo! Maps

Nota: ho usato Operator come esempio poichè mi pare più completo

Quindi quando pubblicate qualcosa sul web magari organizzatelo secondo un microformato, non mi resta che augurarvi: Buon Anno :-) !

Ulteriori info:

http://mozlinks-it.blogspot.com/2007/04/operator-e-i-microformati.html

http://www.levysoft.it/archivio/2007/05/21/la-rete-si-evolve-con-i-microformats-hcalendar-hcard-hreview/

Google Web Toolkit vs Echo 2: confronti

Per un progetto a cui sto lavorando mi sono ritrovato ad usare Google Web Toolkit, che per chi non lo sapesse consente di realizzare applicazioni web 2.0 (Ajax, in concreto html e javascript) partendo dal codice Java come è stato fatto per Google Maps o Gmail.

Google Web Toolkit si propone quindi come framework per applicazioni web accodandosi a Ruby on Rails, CakePHP, Zend Framework (in un prossimo articolo cerchero’ di parlare di Openlaszlo, che dovro’ studiare con molto piacere).

Indagando ho scoperto come parte di esso sia libero, essendo precisi solo le API sono rilasciate con licenza Apache 2.0 ma non il compilatore Java-to-Javascript. Ho quindi cercato qualcosa di simile ma effettivamente libero e ho trovato Echo2 (rilasciato con la Mozilla Public Licence), che ha delle differenze di base che vale la pena sottolineare, percio’ vi traduco un articolo che ho preso da qui (l’articolo è stato scritto dal capo sviluppatore di Echo2, potete pensare che è di parte ma non lo è):

“Google Web Toolkit (GWT) è stato confrontato a Echo2 da sempre. Qualcuno di questi confronti è stato equamente accurato, mentre altri contengono con informazioni non molto esatte. Questo articolo, scritto dal capo sviluppatore di Echo2, discute le somiglianze e le differenze tra questi 2 frameworks.

Panorama

Il confronto tra GWT e Echo2 è interessante. Entrambi questi framework hanno un non-tradizionale approccio verso lo sviluppo di applicazioni web, anche considerando l’ultimo genere di “framework basati su AJAX” disponibile ad oggi.

La più ovvia similitudine tra GWT e Echo2 è che entrambi permettono allo sviluppatore di creare interfacce web utente dinamiche AJAX usando solo Java. In entrambi i progetti, le UI (interfacce utente) sono sviluppate in modo simile a SWT o Swing: assemblando gerarchie di componenti e registrando gestori di eventi. Nessun progetto richiede allo sviluppatore di lavorare con HTML, Javascript o XML.

La più ovvia differenza tra GWT e Echo2 è che tutto il tuo codice GWT è eseguito sul client mentre il codice Echo2 è eseguito sul server. Ci sono vantaggi e svantaggi in entrambi gli approcci che saranno evidenziati attraverso l’articolo.

Il nucleo di GWT è il compilatore Java-to-Javascript. Questo compilatore ti permette di sviluppare l’interfaccia web alla tua applicazione in Java e quindi compilarlo in JavaScript. GWT limita lo sviluppatore ad un sottoinsieme delle librerie Java 1.4. Le applicazioni GWT possono essere servite da qualunque web server, come Apache, senza il bisogno di una elaborazione dal lato server.

Le applicazioni Echo2 sono compilate in byte code Java e vengono eseguite su un server Java. Il loro codice Java è eseguito dalllo strato “Web Application Container” di Echo2, che siede sopra una Servlet Java. Dal lato browser, il “Client Engine” di Echo comunica cio’ che è stato inviato dall’utente al Web Application Container tramite richieste AJAX, con il server che risponde con direttive in modo da apportare aggiornamenti incrementali allo stato del browser client.

Prestazioni dell’interfaccia utente

Con GWT, tutto il codice relativo alle interfacce utente esiste sul browser client. In operazioni che non richiedono la comunicazione con il server, — ovvero, che non richiedono il recupero dallo strato di mezzo (middle tier) — questa configurazione da luogo a tempi di risposta che non sono dipendenti dal server. Quando i dati devono essere recuperati dallo strato di mezzo o dallo strato business logic, il tempo di risposta è soggetto alle stesse condizioni come ogni altra applicazione Java, ad esempio, latenza di rete, banda e prestazioni del server.

Il codice di una applicazione Echo2 viene eseguito dal server, cosi per ogni interazione utente che richiede una chiamata allo strato di mezzo o una immediata esecuzione del codice Java dell’applicazione, una connessione AJAX è fatta al server. Le componenti Echo2 sono progettate per minimizzare una comunicazione client/server il più possibile, limitandola nei tempi in cui il server deve essere notificato immediatamente di eventi. Per esempio, semplici eventi cone un input dell’utente in un componente TextField non darà luogo ad un contatto al server. La risposta del server è il minimo insieme di istruzioni all’aggiornamento incrementale del client in modo da riflettere uno nuovo stato dello schermo.

Le applicazioni GWT sono servite al client come un singolo file HTML/Javascript, contenendo la totalità dell’interfaccia utente. La dimensione di questo file srà proporzionale alla dimensione del codice della tua interfaccia utente e delle librerie del toolkit usate dalla tua applicazione.

I moduli Javascript di Echo2 sono caricati pigramente(lazy-loaded) al client e da li’ in poi messi in cache. Un modulo sarà recuperato quando un componente che appare sullo schermo lo richiede. Il codice dell’applicazione non è mai mandato al client, solo lo stato dell’interfaccia utente.

Strato di mezzo / Recupero dati

Per accedere ai busines data o effettuare un business process, una interfaccia utente GWT da una chiamata di procedura remota (RPC) dal browser alla Servlet. GWT fornisce un meccanisco per fare una invocazione RPC trasparente allo sviluppatore, permettendogli di costruire l’applicazione con “Plain Old Java Objects” (POJOs). Comunque, qualunque applicazione che fornisce una capacità RPC è una applicazione distribuita — anche quando l’RPC avviene trasparentemente allo sviluppatore. Applicazioni distribuite in ditte o aziende di solito prendono in considerazione la sicurezza e gli oggetti remoti che servono i client GWT devono essere progettati focalizzandosi sulla sicurezza in modo da deviare attacchi da applicazioni client imitate o ostili

Le applicazioni Echo2 supportano, ma non richiedono, l’uso di una logica di applicazione distribuita o un SOA (Service Oriented Architecture). Alternativamente, le applicazioni Echo2 possono essere costruite per girare interamente su una singola istanza della JVM, appoggiata da uno strato di mezzo di tipo POJO. Questo permette agli sviluppatori di Echo2 di costruire applicazioni senza preoccuparsi della sicurezza della logica di applicazione distribuita — facendo leva sul fatto che molti robusti framework vengono costruiti attorno allo sviluppo POJO come Spring Framework e Hibernate. Echo2 riesce in questo tenendo lo stato dell’interfaccia web dell’utente sul server cosi nessuno oggetto remoto ha bisono di essere esposto.

Prestazioni sotto carico

Il GWT è una tecnologia UI thick-client (l’applicazione gira sul client) mentre Echo2 è una tecnologia UI thin-client (le applicazioni girano sul server). Un thick-client avrà dunque meno carico sul server anche se il numero degli utenti aumenta. Questo vantaggio di GWT è molto pronunciato nei casi dove applicazioni sono semplici e l’accesso ai dati memorizzati è limitato, e meno con più applicazioni complesse che richiedo più frequenti richieste alla memorizzazione dei dati. In un tipico ambiente, dove ciascun framework satura la banda di rete prima dell’uso della risorsa dal server, ad esempio potenza di elaborazione e memoria, cio’ diventa un problema.

Ambiente Run-time

GWT ha qualche limitazione dovuta al fatto che le applicazioni devono essere eseguite sul browser client. Per primo, le applicazioni GWT sono limitate ad usare un sottoinsieme delle librerie Java, che consistono di 27 classi, 11 interfacce e 18 tipi di eccezioni che si trovano inei package java.util e java.lang (in GWT 1.0.21). Questa limitazione previene le applicazioni GWT dal linkare molte librerie Java esistenti. Inoltre, tutto il codice Java deve essere compatibile con le specifiche Java 1.4; 1.5 non è supportato. Porzioni di codice delle API Java relativo alla localizzazione non è fornito

Debugging

GWT fornisce un alternativo ambiente di deploy per le applicazioni al fine di facilitare il debugging. L’ambiente, chiamato “Hosted Mode”, permette ad una applicazione GWT di essere eseguito come byte code Java in una JVM locale, al quale un debugger di un IDE puo essere connesso. In questo modo, l’interfaccia utente dell’applicazione è mostrata in uno speciame browser web (derivato da Mozilla/Firefox).

Le applicazioni Echo2 possono essere debuggate nel modo convenzionale, connettendo un debugger di un IDE alla JVM corrente che esegue la Servlet container.

Licenze

La primaria componente di GWT, il compilatore Java-to-Javascript, è proprietario, software distribuito solo in binario. Le librerie API Java sono libere, distribuite sotto licenza Apache. Le librerie API non hanno significato senza il compilatore proprietario. Il (non critico) browser hosted-mode è anche esso sotto licenza proprietaria. GWT è fornito senza alcuna spesa.

Echo2 è software libero, distribuito con licenza Mozilla Public License e fornito senza alcuna spesa.

Applicabilità

GWT puo’ essere usato come un mezzo per la creazione di componenti AJAX da incorporare nelle tradizionali applicazioni web (o anche in pagine web statiche) come anche per la creazione di complete applicazioni per interfacce utente. Ci sono alcuni problemi per la creazioni di grandi applicazioni, dove il download di un’intera applicazione verso un browser web in un colpo potrebbe essere non pratico. La perdita di localizzazione e la mancanza del pieno supporto alle API Java presenta un problema per grandi soluzioni.
Echo2 è pratico per la creazione di applicazioni web di ogni dimensione. E’ comunque non inteso all’uso di semplici funzioni per una piattaforma il cui scopo è la creazione di componenti AJAX in framework web (o siti web statici) tradizionali.”

Se siete arrivati fin qui nella lettura e siete incuriositi, ho trovato 2 link dove cominciare a scrivere il vostro Hello World con GWT e Echo2:

Hello World con GWT

Hello World con Echo2

Spero che con la traduzione e con i 2 esempi di avervi illuminato un po’

Mpd e Icecast: radio web e musica libera per tutti

Lo scopo di questo articolo è la creazione di una radio web installata su Ubuntu tramite strumenti come Mpd e Icecast che è uno streaming media server. Nel concreto Mpd è fondamentalmente un player (che funziona in modalità client/server avrete cioè bisogno di un client come Gmpc) che redirige l’output su Icecast il quale vi permette di ascoltare la musica via web tramite il protocollo http.

Di cosa avete bisogno? Presto detto, installate tramite apt Mpd, Icecast2 e gmpc:

sudo apt-get install mpd icecast2 gmpc

Gmpc in pratica dovrà collegarsi alla porta 6600 dove è in attesa Mpd il quale dovrà redirigere l’output sulla porta 8000 di IceCast al quale potrete poi collegarvi con un player audio come VLC. Non è complicato, non vi preoccupate.

Andiamo quindi a modificare il file di configurazione di Mpd che è /etc/mpd.conf. Come potete vedere alla linea:

music_directory: “/var/lib/mpd/music”

viene impostata la directory che dovrà contenere la vostra musica. Copiate ad esempio il file ubuntu Sax.ogg che si trova nella directory /usr/share/example-content in /var/lib/mpd/music tramite il comando:

sudo cp /usr/share/example-content/ubuntu\ Sax.ogg /var/lib/mpd/music/

Ora dovete aggiornare il database di mpd tramite il seguente comando:

sudo mpd –create-db

il quale vi risponderà:

added ubuntu Sax.ogg

Ora nella sezione Audio Output di /etc/mpd.conf decommentate (togliete in ogni riga il simbolo #) la terza struttura relativa ad IceCast, se decommentate la prima relativa ad ALSA potrete anche sentirla (nella struttura relativa ad IceCast lasciate commentato la voce quality perchè dovete scegliere tra quality e bitrate).

Ora proviamo intanto la trasmissione, fate partire mpd:

sudo /etc/init.d/mpd start

Lanciate gmpc:

gmpc

In fondo a destra vedete 2 pulsanti, uno per la configurazione, l’altro per la gestione delle playlist. Cliccate sul primo e nella connessione premete sul pulsante che vi permette di connettervi al server Mpd. Andate ora nella gestione delle playlist e nella sezione del file system clicccate con il tasto destro del mouse sul file ubuntu sax in modo da scegliere l’opzione Add oppure basta cliccare due volte sul file. Il file viene aggiunto alla sezione playlist corrente. Mettete la musica in ripetizione e fate su play, partirà la musica.

Ora passiamo a Icecast. Aprite il file icecast2 in /etc/default:

sudo gedit /etc/default/icecast2

mettete a true la voce ENABLE per far partire il programma come demone.

Giusto per informazione potete modificare la configurazione di Icecast modificando il file /etc/icecast2/icecast.xml tra cui la password di accesso (che come forse avete notato la deve conoscere anche Mpd) o ancora il numero massimo di connessioni.

Fate partire icecast:

sudo /etc/init.d/icecast2 start

Ora dal vostro browser, ad esempio Firefox, digitate l’url:

locahost:8000

dovete inserire admin come username e hackme come password (quella di default). Vi ritroverete nello status di Icecast che vi presenta una serie di informazioni se invece andate nella sezione admin potete vedere molti più dettagli, in particolar modo nella sezione del mount point potete vedere la lista degli ip dei client connessi, da quanto tempo sono connessi, il software che usano e avete anche la possibilità di kickarli.

Come potete vedere al flusso viene assegnato un mount point nel caso di esempio: mpd.ogg.

Vi manca un ultimo passo, collegarvi da un qualunque pc con un player che supporti il codec ogg, ad esempio VLC, alla seguente url:

http://<ip del computer o localhost>:8000/mpd.ogg

ad esempio:

http://192.168.93.128:8000/mpd.ogg

e sentirete la vostra radio preferita!!!

Una nota: dovete disabilitare l’output audio ALSA altrimenti sentirete la musica 2 volte se lanciate il player dallo stesso pc del server, lo potete fare direttamente da gmpc nel pannello configurazione alla sezione impostazioni server.

Buona radio e mi raccomando diffondete la musica legalmente!

Ah, per ogni info su mpd digitate:

man mpd

o

man mpd.conf