1

L’ultimo saluto a Windows XP — #conlinuxpuoi

Oggi è un giorno doppiamente speciale. Non solo è la festa delle donne (auguri a tutte le lettrici!), ma segna anche un mese esatto alla fine ufficiale, definitiva e assoluta di Windows XP, cioè l’8 aprile 2014.

L'XPocalypse è vicina!

L’XPocalypse è vicina!

La data fatidica è stata da molti soprannominata XPocalypse, in quanto dopo l’8 aprile i PC che useranno ancora Windows XP saranno ancor di più a rischio di attacchi informatici e virus (come se non lo fossero già) oltre alla carenza di driver e applicazioni.

Come abbiamo spiegato sul sito di GrappaLUG:

L’8 Aprile 2014 termina il supporto a Windows XP e Office 2003. Microsoft non fornirà più supporto, aggiornamenti, o migliorie per un sistema operativo comunque ormai vecchio di 12 anni.

Tutti i possessori di computer con Windows XP si ritroveranno tra le mani un sistema lento, inaffidabile e facile preda di software malevolo (virus e attacchi informatici). Tutto questo nel giro di poco tempo farà diventare il vostro PC obsoleto e insicuro.

In varie città italiane (tra cui Bassano del Grappa) ci sarà una giornata dedicata a chiunque voglia maggiori informazioni sulla fine del supporto a Windows XP e eventualmente provvedere a un aggiornamento gratuito del proprio computer a Linux.

Potete ottenere maggiori informazioni sul sito Con Linux Puoi, nel quale vengono inserite mano a mano le varie manifestazioni.

175

Script per Rai Replay 8.0: breve lista dei cambiamenti

Oggi ho rilasciato la versione 8.0 del mio script che permette di guardare i video della Rai (e scaricarli) anche con Linux. Ci sono stati diversi cambiamenti, molto “sotto al cofano”, ma in breve si possono riassumere nelle seguenti novità:

  • La gestione di Rai Replay è stata completamente ripensata. Ora c’è una componente lato server (su video.lazza.dk) che lavora costantemente per scovare gli URL dei video e mantenerne una cache. Questo si traduce in una maggiore velocità e si evitano i blocchi sui video per tablet.
  • Se siete all’estero potete vedere lo stesso l’indirizzo del video, perché il mio server usa IP italiani quando necessario. Tuttavia potreste non essere in grado di salvarli (compare un messaggio di avvertimento).
  • Ora il player usa HTML5 ogni qualvolta ciò sia possibile, quindi in genere basta un browser aggiornato senza plug-in esterni.
  • I video sui sottodomini tipo raistoria.rai.it non hanno più la linea di comando di rtmpdump, bensì un link diretto al video in MP4, grazie alla segnalazione di un mio lettore.

Come sempre, reinstallate lo script (linkato nella prima frase di questo post) oppure attendete l’aggiornamento automatico. Buona visione.

522

Scaricare i contenuti audio e video presenti nelle pagine web — Guida completa

Una piccola premessa: ho impiegato mesi per lavorare a questo articolo, rivedendo in continuazione le idee di cui parlare e valutando come dare i consigli nel modo migliore possibile. Questo post racchiude quindi numerose informazioni e potrebbe richiedere più di una lettura per assimilarle tutte. Anche per questo motivo, se riscontrate errori o imprecisioni che mi sono sfuggiti vi prego di segnalarmeli.

Ormai 6 anni fa avevo scritto un articolo che continua ad essere tra i più visitati del blog, dedicato a salvare i video incorporati nei siti web in cui ci imbattiamo navigando in rete. Non era una guida dedicata ad atti deplorevoli di pirateria cinematografica (non insegna a scaricare film da reti P2P) bensì era rivolta proprio ai video che sono “dentro” le pagine. Un esempio banale di sito con video può essere Youtube, ma in realtà ce ne sono moltissimi che per un motivo o per l’altro offrono dei filmati (ad esempio siti di news, recensioni di hardware, eccetera) ed essi sono inseriti nei formati e nei modi più disparati.

Al tempo avevo dedicato quasi tutta la guida all’uso di Unplug, un’estensione per Firefox che era tra le migliori per questo tipo di compito. In seguito è stata sorpassata da altri strumenti, per poi migliorare di nuovo nell’ultimo periodo. Lo scopo di questo mio nuovo articolo vuole essere più ad ampio raggio: vorrei cercare di spiegare quale approccio usare quando ci si trova di fronte a un sito con video: a partire da come riconoscere la tecnologia utilizzata, fino al salvataggio vero e proprio del contenuto multimediale. Accennerò anche qualcosa riguardo alla conversione.

Devo precisare subito che per quanto cercherò di essere chiaro e spiegare le cose in modo semplice, inevitabilmente alcuni dei concetti qui spiegati potrebbero non essere banali. In alcune circostanze sarà necessario “esplorare” del codice HTML, XML o Javascript (non è comunque necessario conoscere questi linguaggi). Inoltre dovrebbe essere chiara la differenza tra un file e uno stream. Oltre a questo va aggiunto che nell’articolo mi concentrerò sui video, ma i concetti sono tali e quali anche per delle eventuali tracce audio ascoltabili online.

Continua a leggere

6

Aggiungere rapidamente software a una distribuzione live sfruttando i pacchetti Slackware

Ultimamente mi capita con una certa frequenza di utilizzare delle distribuzioni live, in particolare quelle dedicate al recupero dati. Possiedo una chiavetta che ho creato appositamente, contenente una decina di dischi di ripristino e distribuzioni dedicate, chiamata Lemur Toolkit.

Nota: so di avervi promesso il tutorial su come crearla, però poi ci sono stati in mezzo l’Erasmus e altri impegni… prima o poi arriverà!

Tra i suddetti dischi ce ne sono due in particolare che prediligo: Parted Magic e RIPLinux. Entrambe le distribuzioni, come capita spesso, sono leggere e oltre a contenere moltissimi strumenti specifici, contengono poche altre applicazioni essenziali.

Inoltre, può succedere che non contengano le ultime versioni dei software: nel mio caso, per esempio, uso una versione di Parted Magic rilasciata nel 2012 e RIPLinux non viene più mantenuta dallo stesso anno.

Per questi motivi, torna molto utile poter installare applicazioni mancanti o che richiedono un aggiornamento mentre si sta usando la sessione live. Ho cercato un modo di poterlo fare in modo veloce e facilmente replicabile, possibilmente senza repository.

È stato a questo punto che ho scoperto la semplicità dei pacchetti Slackware: sono infatti poco più che “semplici” archivi tar compressi con xz, con aggiunto un piccolo script che svolge l’essenziale per completarne l’installazione. Tendenzialmente sembrano avere poche dipendenze e sui sistemi Slackware si installano con un semplice strumento chiamato installpkg.

Ho creato uno script per usarli anche su altre distribuzioni (RIPLinux, al contrario di Parted Magic, non è basata su Slackware) e devo dire che funziona bene: è una soluzione “sporca” ma veloce che decomprime il pacchetto direttamente nella directory radice del sistema, e se non ci sono librerie mancanti il software si avvia senza problemi! :)

Lo script è il seguente:


PKG="$1"
TEMP="`mktemp -d`"

echo "Estraggo i file"
cp "$PKG" $TEMP
cd $TEMP || exit 1
unxz "$PKG"
TARFILE="`ls *.tar`"
cd /
tar -xvf "$TEMP/$TARFILE"
echo "File estratti"
bash "/install/doinst.sh"
rm -rf /install/
rm -rf "$TEMP"
echo "Installazione completata"

Io personalmente lo tengo salvato come myinstall.sh in un disco esterno (o una chiavetta) assieme ad alcuni pacchetti che possono tornare utili. Si può quindi richiamare lo script col comando:

./myinstall.sh [nomepacchetto]

Ricordatevi che è fondamentale eseguirlo come utente root e dovete spostarvi nella directory giusta prima di lanciare il comando.

Ho fatto una prova con RIPLinux, che contiene una versione vecchia di Firefox e un solo font (per di più a larghezza fissa), con un’interfaccia di default del genere:

Navigazione internet con l'interfaccia predefinita di RIPLinux

Navigazione internet con l’interfaccia predefinita di RIPLinux

Ho deciso di installare un paio di pacchetti con dei font di base e una versione non troppo recente, ma comunque moderna, di Google Chrome, assieme al plugin di Flash Player:

L’ultimo pacchetto l’ho usato in quanto la versione di Flash interna a Chrome crasha su alcuni siti, quindi l’ho disattivata da about:plugins, lasciando attiva solo l’altra (NPAPI). Ho anche modificato il file /root/.gtkrc-2.0 cambiando il font: gtk-font-name="Liberation Sans 10". Il browser va lanciato da terminale specificando una cartella del profilo, per esempio col comando google-chrome --user-data-dir=/tmp/chrome.

Il tutto risulta in una navigazione più piacevole:

RIPLinux con Google Chrome e dei font aggiuntivi

RIPLinux con Google Chrome e dei font aggiuntivi

Naturalmente questi sono solo degli esempi, potete scegliere di installare i pacchetti più adatti alle vostre esigenze sulla distribuzione live che state utilizzando, per esempio su Parted Magic si può installare Firefox 25 usando questo pacchetto.

In sintesi, i pacchetti Slackware e il piccolo script che ho postato vi permettono di installare velocemente dei software salvati su una chiavetta o scaricati al momento, che spesso funzionano senza problemi di dipendenze, e questo si può fare su moltissime distribuzioni!

40

Ex script per scaricare da La7.tv diventa script per La7.it

Mi avete scritto in tanti per segnalarmi che lo script che avevo messo a punto per il vecchio sito La7.tv non era più utilizzabile per il nuovo portare La7.it. In effetti l’emittente non ha semplicemente modificato il proprio sito, l’ha totalmente rimpiazzato con uno nuovo.

Venerdì ho finito gli esami, perciò oggi ho potuto dare un’occhiata. Non ero molto fiducioso in quanto utilizzano player in Flash con tecnologia HTTP dynamic streaming, i video vengono frammentati in piccoli pezzetti e l’accesso al file che li descrive richiede pure una piccola chiave crittografica (tecnicamente un HMAC).

Stavo tentando di raccapezzarmi in tutta questa confusione quando mi sono reso conto che La7 mantiene anche una copia del video in formato MP4, ed è pure estremamente semplice da trovare. :D Per farvi un paragone, il mio vecchio script era formato da 59 righe di codice, di cui una quindicina puramente “estetiche”. La versione 2.0 è formata da 27 righe di codice, delle quali 16 dedicate all’aspetto del pulsante finale. :D

Eccovi un paio di esempi dal nuovo sito di La7:

Una puntata "standard"

Una puntata “standard”

Puntata "piccola" in una pagina con formato diverso

Puntata “piccola” in una pagina con formato diverso

Per poter utilizzare la versione 2.0 dello script potete attendere l’aggiornamento automatico che dovreste ricevere a breve, oppure reinstallare manualmente lo script. Se volete installare lo script vi rimando alle istruzioni del mio precedente articolo che provvederò ad aggiornare a momenti.

Come sempre, buona visione! ;)

119

Il tasto MP4 per Rai Replay è tornato — versione 7.0

Premessa & chiarimenti

Cercherò di essere breve, ma è importante dire alcune cose in merito a cosa è successo negli ultimi giorni riguardo al mio script per guardare e scaricare i video dal sito Rai. Dato che ci sono stati alcuni fraintendimenti secondo me perfettamente evitabili con un po’ di buona volontà da parte di tutti, userò una metafora che spero renda tutto chiaro.

Immaginate un paesino in cui i bambini conoscono una gentile vecchietta che offre loro le caramelle. La signora è una persona buona e tutti i bambini vanno da lei a trovarla, le fanno compagnia e mangiano le caramelle. Per evitare incomprensioni di ogni genere, ogni volta che un bambino nuovo arriva, la signora gli spiega chiaramente:

Caro bambino, ogni volta che verrai a trovarmi ti regalerò una caramella. Di solito ho due gusti di caramelle, all’arancia e al mirtillo. Ogni giorno deciderò io quale caramella darti in base alla mia disponibilità, e non dovrai mai fare i capricci.

Discorso molto semplice, tutti i bambini capiscono. Anche se preferiscono le caramelle all’arancia, il mirtillo non è poi una gran tragedia dopotutto, quindi anche se capitasse nessun problema. Passano i giorni, le settimane, e tanti bambini vanno a trovare la vecchietta e ricevono le caramelle. Lei tende a dare loro quasi soltanto i bonbon all’arancia, perché sa che li preferiscono.

Arriva un giorno in cui un bimbo si lamenta del gusto della caramella che di solito gli è sempre piaciuta, la signora verifica e scopre che i dolciumi all’arancia più recenti sono stati realizzati male dal produttore ed è meglio non darne ai bambini. Passa quindi al mirtillo, e man mano che gli altri si ritrovano solo tra le mani caramelle al gusto di mirtillo, si scordano completamente di quello che la signora aveva detto loro, cioè che sarebbe stata lei a fare la scelta più opportuna.

Cominciano quindi a fare i capricci, criticare la vecchietta e pur ricevendo in mano una caramella al mirtillo esclamano addirittura “Perché non mi dai più le caramelle?”.

Fine storiella.

Con questo dove voglio arrivare? La domanda è, trovate giusto l’atteggiamento dei bimbi? Bene, sostituite ora le parole nel seguente modo:

  • vecchietta → Lazza
  • caramella → video della Rai
  • arancia → formato MP4
  • mirtillo → stream M3U8
  • bambini → utenti dello script

Come avrete già capito, nel caso finora vi foste persi tutti i commenti e le informazioni scritte nel post, di recente (un paio di giorni fa) era stato aggiornato il mio script. Volutamente aggiornato! Perché? Be’ è semplice, Rai ha attualmente messo dei blocchi per tentare di evitare il download dei video su Rai Replay. Non tutti sono stati bloccati, ma una discreta parte sì.

Non era più sicuro fornire agli utenti link MP4 in gran parte non funzionanti. È per questo che l’aggiornamento dello script ha fornito a tutti la versione in M3U8 tranquillamente scaricabile con ffmpeg.

I problemi sorti

Dov’è stato quindi il problema?  Di fatto, non doveva essercene nessuno. Mi sono basato sul fatto che il post che tutti leggono (o dovrebbero leggere) quando installano lo script, contiene conteneva (ora non più perché la versione 7.4 dà solo video MP4) tutte le informazioni su come comportarsi anche nel caso di flussi M3U8 da diverse settimane, in particolare dal giorno 2 novembre 2013! Oltretutto, i video di Rai Yoyo sono sempre stati disponibili in questo modo e nessuno ha mai fatto storie, al limite qualcuno ha solo chiesto un paio di chiarimenti.

In questo caso, invece, si è aperto letteralmente il vaso di Pandora. Ho ricevuto decine di commenti, email e messaggi su Facebook, e persino una recensione sul sito degli script in cui mi veniva riferito:

  • che lo script “non funziona”
  • che compare “un messaggio di errore”

Quando semplicemente lo script mostrava chiaro e tondo il comando da dare per scaricare il video a partire dallo stream M3U8.

Tutto questo anche dopo alcuni commenti di chiarimento in merito. Ciò dimostra che non solo diverse persone non hanno letto il post che è lì da 3 mesi, ma hanno trovato più facile reperire il mio indirizzo email piuttosto che guardare gli ultimi 4-5 commenti del post.

Mi spiace aver dovuto spiegare tutto, ma purtroppo ho notato che alcune persone non leggono o non vogliono capire le motivazioni di un aggiornamento, ben calcolato e intenzionale, che ha permesso di continuare a scaricare fin da subito nonostante i blocchi della Rai; preferendo invece dare “la colpa” a me o a difetti nello script.

Oltretutto, è bene precisare una cosa: molti di coloro che si sono lamentati o hanno avuto problemi usano Windows. Sembrerà rude, ma questo è un blog su Linux, scritto da un utente Linux per aiutare gli utenti Linux. Non vi obbligo io (né nessuno, penso) a usare Windows, ed è ovvio che con quel S.O. alcune cose sono meno “comode” (tipo usare i tool a linea di comando).

Dev’essere anche chiaro che io, non usando Windows, posso tentare di aiutarvi fino a un certo punto, e di sicuro non è tra le priorità del blog aiutare voi. Per il resto, non sono materialmente in grado di farlo, perché non lo uso e perciò dovete accettare questa piccola “conseguenza” della vostra scelta.

La versione 7.0

Tornando allo script, caricherò tra due minuti la versione 7.0 del medesimo. Dovrebbe aggiornarsi automaticamente ma se siete impazienti vi basta reinstallarlo. ;)

La cosa divertente è che i blocchi della Rai sugli MP4 sono stati aggirati quasi subito (e nel frattempo avete sempre potuto scaricare i video tramite stream M3U8). :D La soluzione mi è arrivata tramite le email molto utili di Alessandro Strazzanti, un mio lettore che mi ha fatto notare delle “debolezze” sul blocco, diverse da quelle che avevo notato già io in precedenza e più semplici da sfruttare.

In pratica, dal messaggio di “accesso negato” si riesce a capire l’URL del video e quindi lo script lo trova comunque. Un’altra news importante viene da Paolo Pancaldi, l’autore della pagina web dove potete trovare il link ai file copiando e incollando l’URL della pagina.

Paolo, oltre ad aver aggiunto da un paio di giorni il supporto a Rai Replay basandosi sul mio script (sono felice che sia stato utile) è anche riuscito a trovare un metodo alternativo di aggirare il blocco, che consiste nell’attaccare la stringa &output=25 al relinker della Rai, che quindi restituisce un XML.

Tecnicismi a parte, entrambe le soluzioni sono perfettamente valide. Io ho deciso di tenere la soluzione di Alessandro S., a cui dedico la versione 7.0, che quindi reintroduce il pulsante MP4 aggirando gli ultimi blocchi della Rai.

Concludo con un’immagine che raffigura ciò che tutti quanti dovrebbero pensare di colui che mi ha inviato i preziosi suggerimenti. ;)

Caro amico, te la meriti!

Caro amico, te la meriti!

Aggiornamento 30/01/2014: la tecnica “taglia e cuci” per ricostruire gli URL, suggerita da Alessandro S., funziona anche per i video di Rai Yoyo che quindi ora si riescono a salvare direttamente in MP4. Aggiornate lo script alla 7.4! ;)

7

La mia tesi di laurea — Un nuovo algoritmo per il mining dei condensed colocation pattern

A novembre mi sono ufficialmente laureato in informatica e ho deciso di pubblicare su Scribd la mia tesi, nel caso qualcuno fosse interessato a consultarla. Il testo del documento è sotto licenza Creative Commons Attribution-Share Alike e il documento lo potete trovare anche nella mia pagina di presentazione. :)

L’abstract è il seguente:

Il mining dei colocation pattern è stato studiato per diverse tipologie di applicazioni. Nonostante ciò, spesso tale processo porta alla generazione di un numero eccessivamente elevato di candidati. In molti contesti, è sufficiente o preferibile esaminare un’approssimazione del participation index invece di un valore esatto. Questa scelta determina un insieme di colocation pattern compatto, i cui elementi vengono definiti condensed colocation pattern. Lo scopo di questa tesi è quello di proporre un algoritmo per il mining dei condensed colocation pattern. Tale algoritmo viene messo a confronto con altri algoritmi per i colocation pattern presenti in letteratura, per analizzarne l’efficienza e la qualità dei risultati.

Potete leggere la tesi al link: Un nuovo algoritmo per il mining dei condensed colocation pattern

0

Spotify rimuove il limite di 10 ore mensili e introduce la riproduzione casuale gratuita per cellulari

Spotify è uno dei maggiori servizi di streaming musicale legale e gratuito in circolazione, con in più la possibilità di pagare per alcune funzioni premium. Io personalmente ne sono diventato un avido utilizzatore fin da quando mi ero trasferito in Danimarca (dove è attivo da anni) per l’Erasmus, mentre in Italia è stato introdotto solamente a febbraio.

Spotify è utilizzabile gratuitamente — con saltuarie pubblicità — dal computer, inclusa la piattaforma Linux, ma fino a pochissimo tempo fa in tutti i paesi europei c’erano delle pesanti limitazioni per questo tipo di account: solo 10 ore al mese dopo i primi 6 mesi di utilizzo, e nessuna possibilità di usare l’app per cellulari.

Più fortunati gli utenti statunitensi: nessun tetto di ore e la possibilità di usare gratuitamente la modalità “radio” da mobile, meglio di nulla. Da mercoledì scorso, invece, è cambiato tutto! Spotify ha rimosso la barriera delle 10 ore mensili e ha attivato una nuova modalità di riproduzione casuale gratis per cellulari, in tutti i 55 paesi coperti dal servizio.

La nuova funzionalità gratuita è in evidenza sulla home page del servizio

La nuova funzionalità gratuita è in evidenza sulla home page del servizio

Anche se non ho trovato nessun annuncio ufficiale che confermasse la rimozione del limite delle 10 ore mensili, lo potete facilmente verificare e vi accorgerete che è così. Riguardo alla funzione di ascolto casuale per cellulari, il blog del servizio riporta:

Ecco quello che puoi fare con Spotify free sul tuo cellulare:

  • Puoi portare le tue playlist con te, ovunque.
  • Creare nuove playlist. Ascoltarle in modalità shuffle. Condividerle.
  • Cercare qualsiasi artista e ascoltare la sua raccolta in modalità shuffle
  • Scegliere una playlist già pronta che sia adatta al tuo stato d’animo.
  • Seguire artisti e amici.
  • Sintonizzarti sulla Spotify Radio.

Cosa vuol dire questo, in concreto? Vuol dire innanzitutto che non serve più usare Hola Unblocker per fare credere a Spotify che viviamo negli USA, con conseguente mancanza di certi brani di artisti italiani.

Significa anche non essere più costretti ad usare solo la radio sul cellulare in modo gratuito con un account americano. Vuol dire inoltre che possiamo scegliere una playlist dal telefono e farla partire, senza problemi.

Infine, la cosa che apprezzo di più del pulsante “riproduzione casuale”: se scegli l’album di un artista, lo riproduce tutto. L’unico “scotto” da pagare è l’inserimento di alcuni brani consigliati scelti da Spotify. Ma qui viene il bello!

I brani proposti infatti sono coerenti: quindi non ci toccherà più trovarci in situazioni imbarazzanti quali la riproduzione di canzoni di Miley Cyrus quando avevamo deciso di ascoltare Avril Lavigne. Ho idea che questa cosa metterà costantemente a rischio il GB mensile di navigazione Internet fornito dal mio operatore. :D

Via Musica per tutti. Gratuita sul tuo cellulare. | Spotify Blog.

0

Usare Jquery per gestire tabelle e altri elementi con overflow su dispositivi mobili

Qualche tempo fa mi stavo occupando di rendere un sito web mobile-friendly e mi sono trovato di fronte alla necessità di gestire delle tabelle molto larghe. Purtroppo non era possibile pretendere che le tabelle fossero tutte quante di larghezza ridotta o con poche colonne, perciò era necessario usare l’overflow orizzontale con il CSS.

Oltre alle tabelle, ci sarebbero state anche delle formule visualizzate con Mathjax che — se molto lunghe — avrebbero “sfondato” la pagina. Ho avuto modo di accorgermi ben presto che la soluzione è leggermente meno semplice di quanto si possa pensare.

Nonostante le ultime versioni di Android e di iOS per iPhone/iPad supportino lo scorrimento di parti di pagina affette da overflow, le versioni vecchie di Android non permettono di scorrere correttamente con il dito, mentre quelle di iOS richiedono due dita e ciò è poco intuitivo.

Fortunatamente, ho trovato una soluzione interessante in Javascript sul blog di Chris Barr. Leggendo i commenti, ho anche scoperto con piacere che un lettore (Jeff) ne aveva fornito una versione Jquery, mentre un altro (Cormac) suggeriva l’utilizzo del metodo .live() per consentirne un corretto utilizzo anche su elementi caricati nel DOM in un momento successivo.

Ho deciso di unire i due approcci ed è venuto fuori il seguente risultato, che potete includere all’interno della pagina:


function isTouchDevice(){
	try {
		document.createEvent("TouchEvent");
			return true;
	}
	catch(e) {
		return false;
	}
}

function touchScroll(selector) {
    if (isTouchDevice()) {
        var scrollStartPosY=0;
        var scrollStartPosX=0;
        $("body").delegate(selector, 'touchstart', function(e) {
            scrollStartPosY=this.scrollTop+e.originalEvent.touches[0].pageY;
            scrollStartPosX=this.scrollLeft+e.originalEvent.touches[0].pageX;
        });
        $("body").delegate(selector, 'touchmove', function(e) {
            if ((this.scrollTop < this.scrollHeight-this.offsetHeight &&
                this.scrollTop+e.originalEvent.touches[0].pageY < scrollStartPosY-5) ||                  (this.scrollTop != 0 && this.scrollTop+e.originalEvent.touches[0].pageY > scrollStartPosY+5))
                    e.preventDefault();
            if ((this.scrollLeft < this.scrollWidth-this.offsetWidth &&
                this.scrollLeft+e.originalEvent.touches[0].pageX < scrollStartPosX-5) ||                  (this.scrollLeft != 0 && this.scrollLeft+e.originalEvent.touches[0].pageX > scrollStartPosX+5))
                    e.preventDefault();
            this.scrollTop=scrollStartPosY-e.originalEvent.touches[0].pageY;
            this.scrollLeft=scrollStartPosX-e.originalEvent.touches[0].pageX;
        });
    }
}

La cosa interessante della soluzione proposta da Jeff (e che ho riutilizzato) è quella di permettere il corretto funzionamento dei link contenuti nell’elemento che scorre.

Come potete intuire dal codice, la prima funzione controlla se il dispositivo è dotato di touchscreen oppure no, mentre la seconda accetta un selettore Jquery e associa un evento che viene azionato quando l’utente scorre con il dito sopra gli elementi corrispondenti.

Per applicare lo scorrimento alle tabelle, è necessario racchiuderle con un contenitore (in questo caso un <div>) in modo da applicare l’overflow, che con le tabelle non funziona in modo convenzionale.

La funzione deve essere richiamata dentro a $(document).ready(), e può essere utilizzata così, tenendo presente il trucco per le tabelle:


$(document).ready(function() {
    touchScroll(".MathJax_Display");
    $("table").wrap('<div class="table-scroll"></div>');
    $(".table-scroll").css('overflow', 'auto');
    touchScroll(".table-scroll");
});

La prima chiamata a touchScroll() si occupa delle formule prodotte da MathJax, i cui elementi compaiono nel DOM in un momento successivo ma sono catturati ugualmente grazie all’uso di .delegate(). Le seguenti righe si occupano invece di racchiudere le tabelle con un contenitore di classe table-scroll e applicano la funzionalità di scorrimento usando il selettore adeguato.

Questo è quanto! Come avete visto, una volta predisposta la funzione di Chris Barr modificata da Jeff, Cormac e me è sufficiente usare una chiamata per applicare l’overflow agli elementi desiderati. Nel caso delle tabelle, è necessario inserire un contenitore addizionale, ma questo si può fare con Jquery, in modo da evitare di introdurre modifiche al markup della pagina.