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
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
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!
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. 😀 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. 😀
Eccovi un paio di esempi dal nuovo sito di La7:
Una puntata “standard”
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.
Qualche volta può succedere che dopo il login Ubuntu si lamenti dichiarando che c’è stato un errore. Il messaggio in particolare suona come:
Si è verificato un problema a un programma di sistema
Il messaggio è seguito da un bottone che permette di segnalare a Canonical l’inconveniente e di solito basta premerlo per farlo sparire.
Tuttavia, in qualche raro caso capita che il messaggio rimanga attivo ad ogni avvio, “disturbando” ogni volta anche se l’errore non viene ripetuto, bensì era accaduto solo una volta ma Ubuntu non riesce a scordarlo. Questo deriva da dei file che vengono salvati in una cartella apposita, solitamente in seguito a “sciocchezze” come il crash di qualche applet.
Per esempio, ecco come si presentano ora questi file nel mio sistema:
Esempio di file di log salvati per le segnalazioni di errore
Per eliminare i messaggi di errore indesiderati e relativi a “vecchi” crash, è sufficiente cancellare i file. Meglio farlo come amministratori, in modo da togliere anche quelli generati da processi di sistema, col seguente comando:
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.
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
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 una VPN 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. 😀
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:
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:
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.
Questo post è nato da un topic aperto su Gimp Italia da Francesco, uno degli utenti con un particolare interesse verso la fotografia, come potete vedere dal suo Flickr. Il topic aveva come oggetto un tutorial di MeetTheGimp per creare una foto della stessa scena in cui una persona compare in più copie.
Il tutorial nella sua forma originaria richiede che le foto vengano scattate con il cavalletto e che la fotocamera sia perfettamente immobile, per evitare disallineamenti. Il risultato di Francesco aveva alcuni problemi sotto questo punto di vista.
Come lui stesso ha poi spiegato:
L’errore è stato quello di sopravvalutare la stabilità del cavalletto, in effetti la pressione del pulsante ha determinato dei disallineamenti.
Ho quindi proposto l’utilizzo di Hugin, un software normalmente usato per creare panorami, per effettuare l’allineamento preciso delle fotografie (anche dal punto di vista dell’esposizione) e poi Gimp per effettuarne l’unione vera e propria. La correzione dell’allineamento consente di lavorare persino con foto scattate “a mano libera”, a patto che il fotografo non si sposti troppo tra i vari scatti. Con ciò intendo che dovrebbe stare sempre in piedi nello stesso punto, per evitare problemi di prospettiva.
Francesco è stato così gentile da fornirmi le foto e quindi riporto qui la mia versione del tutorial. Il risultato ottenuto è mostrato qui di seguito. I colori sono diversi perché ho elaborato la foto finale in modo diverso.
Risultato finale del tutorial, con allineamento preciso delle foto
Le istruzioni sono divise in due parti e richiedono che abbiate installato Hugin e Gimp.
Allineamento delle foto
Salvate in una cartella le foto che volete utilizzare, meglio se con un numero progressivo per evitare confusione. Nel seguito assumerò che la foto iniziale (numero 0) includa l’inquadratura corretta, mentre le altre foto saranno allineate in funzione della prima.
Aprite Hugin e controllate di avere l’interfaccia impostata nella modalità corretta. Per fare ciò, andate su Interfaccia » Avanzato. Fatto ciò, trascinate le fotografie nell’area bianca centrale della scheda Foto. Proseguite quindi aprendo la scheda Punti di controllo.
Vedrete visualizzate a sinistra e a destra la stessa immagine (numero 0). Sulla destra, dal menu a tendina, scegliete la foto numero 1.
La foto di riferimento (a sinistra) e la prima foto da allineare (a destra)
A questo punto dovete cominciare a definire dei punti di controllo sull’immagine, vale a dire cliccare lo stesso punto in entrambe le foto. Facendo clic sulla foto a sinistra, aumenterà lo zoom. La visuale mostrerà un quadrato contenente un forte ingrandimento del punto che avete scelto, e vi permetterà di muoverlo cliccando di nuovo o trascinando il cursore.
Per il primo punto che cliccherete, dovrete fare clic anche a destra, in modo “approssimativo”. Ci penserà Hugin a trovare il punto giusto cercandolo vicino a dove avete cliccato!
Definizione del primo punto di controllo
Quando siete soddisfatti del risultato, cliccate col destro per tornare alla visuale delle due foto intere. Dovete quindi ripetere l’operazione, definendo altri punti di controllo: cliccate sulla foto numero 0 e rilasciate il clic quando vi siete posizionati nel punto desiderato. Nell’immagine a destra il punto verrà messo automaticamente.
Per ottenere dei buoni risultati seguite queste indicazioni:
scegliete solo spigoli o piccole macchie con caratteristiche chiare, non zone uniformi
non utilizzate punti dove in una o nell’altra foto c’è la persona che si sposta
predisponete come minimo 10-12 coppie di punti di controllo, mai meno di 8
molti punti migliorano il risultato, io ne ho usati 15-18 per ciascuna foto da unire
se un oggetto è stato leggermente spostato (es. il cuscino), non piazzateci sopra dei punti
se avete creato una coppia di punti errata, trovate il pulsante Cancella in basso
Una volta finito di lavorare sulla foto numero 1, vi troverete davanti a qualcosa di simile a questo:
Le coppie di punti di controllo usate per allineare l’immagine numero 1
A questo punto, dovete ripetere il processo aprendo l’immagine numero 2 a destra, e così via. Lasciate sempre la foto numero 0 a sinistra. Una volta finito, tornate alla scheda Foto e in basso troverete due pulsanti per ottimizzare il risultato:
Le funzioni di ottimizzazione
Fate clic sul primo pulsante Calcola, confermando il risultato, e poi sul secondo, sempre applicando le modifiche proposte.
Ora è il momento di esportare le foto: aprite la scheda Assemblatore, impostate la proiezione Rettilineare e poi cliccate il pulsante Calcola dimensione ottimale. C’è da poi da selezionare la spunta soltanto per le immagini singole, come mostrato di seguito:
Opzioni per la finestra dell’assemblatore
Infine premete il pulsante Assembla e il programma vi chiederà in quale cartella salvare il progetto e di conseguenza anche le immagini elaborate. Non resta altro che spostarsi su Gimp! 🙂
Fusione degli scatti
Hugin salva le immagini corrette in formato TIFF con trasparenza. Aprite quella di riferimento (la numero 0) con Gimp e poi fate File » Apri come livelli e scegliete l’immagine successiva. Ora invertite i colori del livello appena importato (cioè quello in alto) tramite il menu Colori » Inverti e sul pannello dei livelli impostate l’opacità al 50%. Otterrete una foto grigia in cui si vedono i bordi degli oggetti:
Evidenziazione delle differenze tra i due livelli
Questo trucco funziona in modo molto semplice: se io duplico una foto, e quindi la sovrappongo al 50% con l’inverso, ottengo un grigio completamente uniforme, in quanto i colori “si annullano” col proprio opposto.
Se però uso due foto abbastanza simili ma leggermente non allineate, ottengo un risultato grigio più o meno dappertutto, che però evidenzia i bordi e le differenze. Questa spiegazione è un po’ approssimativa però spero che renda l’idea. 😛
Una volta visualizzata la situazione, bisogna utilizzare lo strumento di spostamento per muovere il livello superiore fino a che i bordi sono più allineati possibile, con particolare attenzione alle aree vicine alla persona (altrove non è necessaria troppa precisione):
Allineamento dei bordi, con particolare attenzione alle aree vicine alla persona fotografata
A questo punto è necessario usare una selezione abbastanza approssimativa intorno alla persona nella sua nuova posizione e anche agli oggetti che si sono mossi, come ad esempio il cuscino del divano che si è abbassato leggermente. Create questa selezione con lo strumento di selezione lazo, poi fate Ctrl+I per invertire la selezione e premete il tasto Canc:
Primo ritaglio approssimativo
Ora deselezionate (premendo Shift+Ctrl+A) e usate lo strumento gomma per “ammorbidire” il bordo. Dovrete scegliere un pennello sfumato e cancellare piano piano quanto basta per ottenere una fusione omogenea. Una volta rifinito il bordo con la gomma, otterrete qualcosa del genere:
Ritaglio rifinito e sfumato
Nel caso in cui ci siano delle sovrapposizioni tra le persone (in questo caso le ginocchia), selezionate la parte che deve rimanere visibile, aiutandovi con lo zoom:
Selezione delle zone di sovrapposizione
Una volta selezionata la zona, ed eventualmente sfocata leggermente tramite Selezione » Sfumata (dipende da caso a caso), premete Canc e poi ripristinate l’opacità del livello superiore al 100%. Infine, invertite nuovamente i colori e otterrete il risultato della prima fusione:
Risultato della prima fusione
Ora dovete ripetere il processo per le altre immagini, una alla volta. Alla fine, unite tutti i livelli selezionando Immagine » Appiattisci immagine e usate lo strumento taglierino per ritagliare le parti trasparenti di troppo sui bordi.
A questo punto avete finito! Poi volendo potete applicare tutti gli effetti che desiderate. Se siete curiosi, nel mio caso ho utilizzato G’MIC per accentuare un po’ i colori. Prima di tutto ho usato l’affilatura con Sharpen (inverse diffusion) e ho duplicato il livello. Sulla copia ho usato Local normalization, giocando un po’ coi parametri e infine ho ridotto l’opacità di quest’ultimo livello al 30%. Poi ne ho aumentato parecchio la saturazione e ho fuso il tutto.
Il risultato è quello che ho inserito all’inizio dell’articolo. Spero che questo tutorial mi abbia consentito di raccontarvi un utilizzo “poco convenzionale” di Hugin, fatemi sapere se avete applicato questo effetto e se vi è stato utile. Buon Gimp! 😉
Ieri ho sviluppato un importante aggiornamento allo script per guardare e scaricare i video da Rai.tv e Rai Replay, grazie anche alla segnalazione e al supporto di Domenico, un lettore che mi domandava come scaricare la prima parte del film su Olivetti.
Infatti la Rai ha pubblicato entrambe le parti, andate in onda il 28 e 29 ottobre, sul servizio Rai Replay, tuttavia la prima parte è stata resa disponibile solo tramite Silverlight (noi pinguini non possiamo nemmeno guardarla) e nella versione per cellulari e tablet. Nessun file MP4 per le Smart TV.
Come avrete già letto qui sul blog, il mio script usava proprio la versione Smart TV per servirvi un file MP4 ad alta qualità. Questo comportava anche il fatto che i video non disponibili per la televisione intelligente risultassero non cliccabili, oltre che non scaricabili.
Da oggi, con la versione 6.0 potete vedere e scaricare anche la versione per tablet. 😀 Questo è necessario solo quando non è disponibile un file MP4, infatti lo script seleziona automaticamente il video migliore e vi fornisce il link per scaricarlo, oppure la linea di comando necessaria.
Infatti se siete costretti a servirvi della versione per tablet, potete usare Gnome Mplayer oppure VLC media player per visualizzare lo stream in formato M3U8 e il software FFmpeg per effettuare il download. Il mio script si occupa di estrarre automaticamente la qualità più alta per voi e genera da solo la linea di comando adeguata.
Output della nuova versione dello script, che consente di scaricare anche i video disponibili solo per dispositivi mobili
Se avete già lo script l’aggiornamento dovrebbe essere automatico. Se volete aggiornare manualmente oppure se volete installarlo da zero, trovate tutti i dettagli nel mio post apposito, assieme alle istruzioni dettagliate per usare la nuova funzionalità. 😉
Il 30 Novembre a Udine si terrà l’Open Source Day 2013, una importante «manifestazione organizzata annualmente da AsCI ed IGLU Gruppo Linux Udine con lo scopo di divulgare, tramite talk, workshop e molto altro, i programmi e la filosofia Open Source». Quest’anno sono stato invitato a partecipare come relatore e terrò una conferenza su Gimp, la quale è stata inclusa all’interno del percorso Multimedia:
Percorso Multimedia (Aula 1)
09.30 — 10.15 RuneAudio: embedded Hi-Fi music player (Andrea Coiutti)
10.30 — 11.15 Mixxx: diventa un DJ col software libero (Micky Perini)
Gli altri percorsi della manifestazione sono Embedded, Professional, Security e Forensics. È superfluo dire che approfitterò dell’occasione per seguire quanti più interventi possibile relativi all’informatica forense. 😉 Per maggiori informazioni vi rimando al programma ufficiale linkato qui sotto.
Data la recente chiusura del repository Medibuntu, ho aggiornato la mia guida all’installazione dei codec, la quale rimane attualmente uno degli articoli più consultati su questo blog. Le indicazioni sono valide anche per le versioni precedenti di Ubuntu (almeno dalla 12.04 in poi). 😉
Nel caso in cui abbiate ancora attivato il repository di Medibuntu, vi consiglio di disattivarlo al fine di non ricevere errori durante gli aggiornamenti.