Sunday, August 4, 2013

Download all files on a site

After tons of times I stumbled upon the problem of downloading many files listed on a single web page... after trying browser extensions, apps, and looking for a not too complicated bash script to use for the purpose... okay, I realized it's time to get hands dirty and write my definitive solution.

So here it is:
curl URL | grep -o http.*pdf | while read pippo; do wget $pippo; done 
Seems too simple, doesn't it?

I don't want to digress here about how it works: if you can't understand it, read
Actually, I didn't read the stuff above, just spotted what I needed!

You can easily modify the regular expression http.*pdf  to fit your needs (download different file formats etc).

Saturday, March 9, 2013

First paper

Il mio primo articolo come coautore è finalmente online su Arxiv, qui: http://arxiv.org/abs/1302.5607
L'abbiamo inviato a ICALP, vedremo come andrà.

Thursday, March 7, 2013

Come installare EiffelStudio

Eiffel è un linguaggio di programmazione ad oggetti con la sua storia e i suoi pregi. Per caso ho cercato di installare  EiffelStudio (una IDE ufficiale per Eiffel,  sotto GPL) su Ubuntu 12.10, e riporto di seguito come ho fatto (ho seguito la guida ufficiale).
Nel mio caso si è trattato di Eiffel72 nella versione a 64 bit, per versioni successive sostituire tale nome nei comandi seguenti, e per architetture a 32 bit togliere il "-64" nel secondo comando "export" del punto 3 e nel percorso del punto 4.
Ecco la procedure:
  1. scaricare il pacchetto da https://www2.eiffel.com/download/download_info.aspx?id=eiffelstudio&info=false&mirrors=eiffelstudio dopo essersi registrati sul sito (se vi dà fastidio si trova su SourceForge); 
  2. spacchettare il pacchetto aprendo il terminale, andando nella cartella dove si trova il pacchetto, ed eseguendo
     tar xvfj Eiffel72_gpl_91169-linux-x86-64.tar.bz2 -C ~/  
    
  3. aprire il file ".bashrc" in un editor di testo, ad esempio digitando nel terminale
     gedit ~/.bashrc  
    
     ed incollare dunque alla fine del file le seguenti righe per aggiungere le necessarie variabili d'ambiente:
     #environment variables for EiffelStudio   
      export ISE_EIFFEL=~/Eiffel72   
      export ISE_PLATFORM=linux-x86-64    
      export PATH=$PATH:$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin   
    
  4. sloggarsi e riloggarsi nell'utente attuale;
  5. digitare nel terminale "estudio", ed EffelStudio si avvierà ;) 
  6. alla prima esecuzione, creando il primo progetto, chiede di compilare i precompilati. Scegliere "yes".

Tuesday, February 12, 2013

Laziodisu&Unidata + low_bandwith + javascript = connettersi con un click

Come suggerito dal titolo (...) qui si fornisce un piccolo trick per diminuire di una briciola lo stress cui sono sottoposti gli studenti delle residenze universitarie gestite da Laziodisu. Pare infatti che una connessione internet decente (un diritto tanto fondamentale che il M5Stelle ne ha fatto uno dei punti fondamentali del proprio programma), sia considerato da Laziodisu poco più che un optional: il (dis)servizio è fornito agli studenti sulla base di un contratto con Unidata che... beh, basta chiedere opinione agli stessi studenti delle residenze...

Il solo atto di connettersi inserendo le proprie credenziali nel captive portal in certi periodi della giornata è spesso impossibile. Un primo accorgimento che si può prendere è senz'altro quello di salvarsi la pagina sul PC in modo da risparmiare al browser lo sforzo di scaricarla da Internet. 

Un trucco minimamente più ingegnoso è quello di inviare direttamente le proprie credenziali per la connessione senza passare per il captive portal, cioè facendo "a mano" ciò per cui si viene indirizzati al captive portal. 
In pratica, basta prendere questo URL: 
https://romawireless.unidata.it:8081/login?81bd1635640576bf2301102209f04d1a=1&original_url=http://geoip.ubuntu.com/lookup&username=PIPPO&password=PLUTO
scrivendo al posto di PIPPO il nome utente che inseriamo nel rispettivo campo del captive portal (di solito si tratta più o meno del proprio numero di cellulare), e al posto di PLUTO la password corrispondente.
A questo punto, basta creare un segnalibro (in generale, qualsiasi browser si usa, basta cliccare col destro la barra dei segnalibri e dovrebbe esserci un'opzione del tipo "aggiungi segnalibro"), chiamandolo con qualcosa come "ConnessioneRomaWireless", e incollando nella voce dell'URL quello che abbiamo appena costruito.
Ad esempio, su Chrome si arriva alla finestra che potete vedere bene cliccando sulla seguente immagine
E voilà! Quando siamo sconnessi basta cliccare su tale segnalibro ed è come se avessimo già caricato la pagina del captive portal e inserito le credenziali e cliccato su "Invia". 

Wednesday, January 30, 2013

MOOC


Dopo vari tentativi evaporati nell'inettitudine, sembra che finalmente io stia seguendo un MOOC su Coursera.

Più che per il corso in sé, ero molto curioso di fare l'esperienza di seguire un MOOC, e devo dire che finora sono molto impressionato da come sia molto superiore il rapporto tra quanto si apprende dal corso rispetto al tempo dedicatovi,  in confronto a quanto invece sperimentato in un ordinario corso universitario. 

Certo, la parte che non stupisce, in tale divario, è quanto è dovuto alla bassa qualità del sopracitato normale corso universitario, per fattori tra cui i seguenti:
  • insegnanti privi di talento e/o motivazione per il proprio incarico didattico;
  • mancanza di fondi da parte dell'università (per pagare assistenti, tutor, esercitatori...);
  • obsolescenza del modello a lezione frontale, con l'insegnante che svolge il proprio monologo e gli studenti che trascrivono materiale già disponibile su libri di testo;
  • mancanza di adeguati strumenti per lo studente che complementino la sua formazione al di fuori della lezione e dello studio sul testo (forum ove scambiare idee con altri studenti e reperire materiale utile, etc)
In parte sull'ultimo punto sto assistendo ad un po' di positiva informatizzazione: gli studenti possono scambiarsi informazioni tramite la pagina Facebook di cui oramai ogni singolo corso di laurea dispone, e reperire materiale utile al corso su cartelle condivise su Google Drive.

Il MOOC, dal canto suo, coi video delle lezioni che si possono vedere e rivedere quando e come si vuole, il materiale didattico che per forza di cose è ben ordinato e curato, il forum e il wiki del corso dove, oltre che col corpo docente, si può trovare l'aiuto delle decine di migliaia di colleghi, i quiz che appena completati mostrano il risultato e dove sono stati commessi gli eventuali errori... crea un ambiente di apprendimento che, per quanto ho sperimentato finora, risulta molto più adattabile alle proprie esigenze e molto meno "massificato" del corso tradizionale (sempre, rispetto alla mia vita scolastica italiana).

Prima che ci fosse questo boom dei MOOC, qualche hanno fa, ricordo di aver discusso con un ex-collega universitario sul proporre ai professori di far filmare le proprie lezioni per renderle disponibili online; il collega mi spiegò che aveva già provato a proporre la cosa, ma senza successo: i professori ai quali aveva chiesto non volevano saperne di farsi filmare. Non mi lancio nelle speculazioni psicologiche sui perché dietro tale rifiuto... 

Una cosa è certa: un fattore cruciale nell'assicurare la qualità dei MOOC è proprio il fatto che l'insegnante si ritrova a tenere un corso a tutto il mondo... le sue lezioni, ogni dettaglio del corso, è visibile all'intera umanità! La qualità della didattica del docente e dell'università si ritrova dunque in discussione al 100%, e per non perderci la faccia non resta che offrire agli studenti un'insegnamento che sia il meglio del meglio.

Spot: chi si ferma è perduto.

IMHO decisamente un bel video da vedere, anche se non propriamente rilassante....


Tuesday, January 29, 2013

Dannate tessere, dannati circuiti e dannata porta

Un problema che mi è stato posto giorni fa e alla cui soluzione sono arrivato dopo rosicati fallimenti.

Problema:
Hai tre tessere e sei davanti a una porta con tre fessure in cui puoi infilarle. Ciascuna tessera è la tessera corretta di una sola fessura e viceversa.
Ogni fessura è collegata ad un circuito che non puoi vedere e che inizialmente può essere o aperto o chiuso, e la porta si aprirà solo quando tutt'e tre i circuiti saranno chiusi. Puoi cambiare lo stato dei circuiti solo inserendo tutt'e tre le tessere, e il cambiamento avviene così: se il circuito è chiuso, si apre; se il circuito è aperto, si chiude solamente se nella sua fessura è inserita la tessera corretta.
Qual'è il minimo numero di inserimenti necessario ad aprire la porta?

Soluzione