Blog

  • Come aggirare i captcha tramite OCR

    Segnalo questa serie di articoli scritti da Silvio che spiegano come aggirare i captcha, ovvero i fastidiosi test somministrati da una macchina ad un umano per sapere se il “testato” è una macchina o un umano (un test di Turing al contrario?).

    In sintesi, il processo è diviso in più attività:

    • la riduzione del rumore di fondo;
    • l’identificazione del contorno dei caratteri, la loro segmentazione (sono rimasto affascinato dall’algoritmo di flood filling) e la normalizzazione;
    • ed infine la parte più interessante: il riconoscimento dei caratteri tramite algoritmi OCR basati sulle reti neurali.

    La spiegazione di Silvio è molto accurata e semplice, e indica numerosi ed interessanti riferimenti per l’approfondimento, oltre ai link dei programmi utilizzati (rigorosamente opensource). Da leggere!

  • Post di servizio: questo sito ora supporta PubSubHubbub

    Nonostante il nome esotico, ho deciso di implementare le specifiche  di PubSubHubbub in questo sito per due motivazioni principali:

    1. l’idea alla base di PubSubHubbub è estremamente interessante perché inverte i ruoli definiti dai feed RSS/Atom (si tratta di notifiche push, al contrario delle comuni notifiche pull);
    2. i feed RSS sono overrated, e usare un nuovo sistema di notifica, più intelligente e modulare, è senza dubbio la direzione in cui muoversi;
    3. perché volevo imparare qualcosa di nuovo ;)

    Al solito, se riscontrate qualche problema, contattatemi!

  • Google Chrome e OSX: impostare uno shortcut per la ricerca

    In tutti i browser che utilizzo (Chrome, Safari e Firefox, in ordine di frequenza di utilizzo) sono abituato a usare lo shortcut ⌘+K (o CTRL+K su Windows) per effettuare una ricerca sul motore di ricerca predefinito. Ho preso quest’abitudine grazie a Firefox, il primo vero browser che ho utilizzato; la combinazione di tasti di cui parliamo, infatti, è impostata di default su Firefox, e io ho mantenuto quest’abitudine.

    Anche Chrome mantiene lo stesso shortcut (l’usabilità ringrazia) ma soltanto su Windows: infatti, alla pressione di CTRL+K, vi accorgerete che la omnibar di Chrome vi permette di inserire il testo di ricerca preceduto da un ‘?’, che rappresenta il pattern predefinito per impostare una ricerca su Google (anziché usare il paradigma “I’m Feeling Lucky” per il testo inserito).

    Lo shortcut non è però presente su Chrome per OSX. Fortunatamente, OSX ci permette di definire una combinazione di tasti personalizzata per ogni programma, e così potremo ristabilire il comportamento da noi desiderato. Vediamo come:

    • Aprite le preferenze di sistema e andate sulle preferenze della tastiera;
    • Posizionatevi sulla scheda “Keyboard shortcuts”, selezionate “Application shortcuts” e poi premete su “+”, in modo da aggiungere uno shortcut personalizzato;
    • Selezionate l’applicazione “Google Chrome” e in “Menu Title” inserite “Search the Web…” (si, anche i 3 puntini) e come shortcut premete ⌘+K. In questo modo specifichiamo a OSX di associare l’azione del menu “Search the Web…” di Google Chrome allo shortcut ⌘+K.
    • Premte “Add” e otterrete una schermata simile a quella qui presentata (eccetto Safari).

    Il procedimento è completo! Nel mio caso è presente lo shortcut anche per Safari: con le informazioni che vi ho fornito potete procedere da soli, introducendo lo shortcut anche per Safari, in modo da capire e riutilizzare questa preziosa funzionalità di OSX anche per altri programmi.

  • Trenitalia: rimborso straordinario del 10% per tutti

    In via straordinaria, Trenitalia ha concesso un rimborso pari al 10% dell’abbonamento mensile per tutti [link all’annuncio] [Trenitalia ha prontamente rimosso il link al modulo di richiesta dopo il raggiungimento del termine ultimo per la presentazione del rimborso].

    Quindi, se a dicembre 2010 avete acquistato un abbonamento mensile e l’avete conservato:

    1. Stampate il modulo di richiesta;
    2. Compilate il modulo in ogni parte (scegliete se ottenere un assegno direttamente a casa o uno sconto sull’acquisto di un abbonamento) e allegate l’abbonamento originale del mese di dicembre 2010;
    3. Recatevi in una biglietteria Trenitalia, presentate il modulo, e conservate la ricevuta che vi fornirà l’addetto.

    La mia esperienza: Mi sono recato alla biglietteria FS della mia città. Sia che abbiate il normale abbonamento che l’abbonamento stampato tramite lo sportello virtuale (il biglietto con il QR code che stampate a casa), il rimborso è garantito! Nel mio caso ho dovuto spiegare all’addetto che il mio abbonamento stampato da Internet non era una fotocopia, ma bensì l’abbonamento originale che regolarmente presentavo al controllore. A quel punto mi è stata fornita la ricevuta che attesta l’avvenuta richiesta di rimborso correttamente formalizzata.

    Vi terrò informati sull’esito della richiesta!

    Update: il rimborso è finalmente arrivato. La data della lettera riporta maggio 2011, tuttavia la lettera è stata recapitata agli inizi di settembre 2011. E ovviamente, il buono è da utilizzare entro settembre 2011. Notevole.

  • L’esame di Stato per l’abilitazione alla professione di Ingegnere: la mia esperienza

    L’esame di Stato per l’abilitazione alla professione di Ingegnere: la mia esperienza

    Durante il periodo di giugno-ottobre ho sostenuto l’esame di Stato per l’abilitazione alla professione di Ingegnere presso l’Università di Bergamo, e volevo condividere qualche informazione che potrebbe essere utile a chi è interessato ad iscriversi a quest’esame. Nel mio caso ho sostenuto l’abilitazione per la classe di Laurea di Ingegneria dell’Informazione.

    Perché serve fare quest’esame?

    L’esame è utile a chi pensa di esercitare la professione di Ingegnere (libero professionista) ed in particolare per chi esercita collaborazioni tramite partita IVA. L’abilitazione si può ottenere:

    • per la Sezione A (riservata a chi ha conseguito una Laurea Specialistica)
    • per la Sezione B (detta anche abilitazione per Ingegnere junior, riservata a chi ha conseguito una Laurea Triennale o Specialistica).

    Se conseguite l’abilitazione per la Sezione B, e volete (in un secondo tempo) ottenere l’abilitazione per la Sezione A, dovete ripetere gran parte dell’esame. Il mio consiglio, in questo caso, è quello di aspettare ed affrontare l’esame una solta volta, quando avete conseguito la Laurea Specialistica, e sostenere l’esame per l’abilitazione alla Sezione A.

    Quanto costa?

    Ovviamente, essendo in Italia, dobbiamo pagare per effettuare quest’esame, e nel mio caso l’importo totale è stato di 220€. Un consiglio che vi posso dare è quello di iscriversi all’esame di Stato nella stessa facoltà presso cui vi siete laureati.
    In questo modo risparmierete i tempi (e i costi) per ottenere la documentazione necessaria (certificato di Laurea e annessi) da presentare per iscriversi all’esame di Stato (se lo fate nella stessa facoltà non serve presentare questa documentazione in quanto già in possesso dell’ateneo).

    In cosa consiste l’esame?

    L’esame consiste di quattro prove da effettuare in quattro date diverse. All’esame vi viene fornito tutto, dalla penna ai fogli. I fogli su cui scrivete devono essere totalmente anonimi, e la vostra prova deve essere consegnata in busta chiusa corredata da una busta con il vostro nome (ovviamente per identificarvi). A seconda dell’Università presso la quale sostenete l’esame, può essere possibile portare tutto il materiale che si vuole (in questo caso vi consiglio un trolley) oppure non è possibile portare nulla. Nel caso di Ingegneria a Bergamo, è possibile portare tutto il materiale che si vuole, eccetto, ovviamente, quello informatico
    (quindi niente computer).

    1. La prima prova (4 ore) consiste in una prova scritta riguardante il settore per cui è richiesta l’iscrizione. Solitamente la prova permette la scelta tra due o più temi. Nel mio caso gli argomenti erano così suddivisi:
      • La prima prova riguardava l’informatica industriale. Veniva richiesto di descrivere le architetture dei principali sistemi di controllo e regolazione utilizzate per la gestione di macchinari automatici, linee di produzione, controlli di processo etc. (PLC, DCS, SCADA, CNC).
      • Il secondo tema riguardava i sistemi informativi. Veniva richiesto di descrivere le diverse tipologie di approccio sistemistico utilizzate nello sviluppo di applicazioni gestionali ERP, distinguendone i livelli e specificandone le caratteristiche.

      Il mio commento: le richieste fatte sono per lo più ad ampio spettro ed è quindi sufficiente portare la documentazione giusta.

    2. La seconda prova (4 ore), svolta due settimane dopo la prima, riguarda le materie caratterizzanti la classe di laurea per cui è richiesta l’iscrizione. Solitamente la prova permette la scelta tra due o più temi. Nel mio caso gli argomenti erano così suddivisi:
      • La prima prova riguardava l’automazione industriale. Veniva richiesto di descrivere le principali reti di comunicazione utilizzate nell’ambito dell’automazione industriale, specificando gli ambiti applicativi e le caratteristiche di funzionamento. Inoltre veniva richiesto di elencare i dispositivi attivi e passivi per l’implementazione delle reti stesse, evidenziando i punti di forza di ogni soluzione.
      • La seconda prova riguardava i sistemi informativi. Veniva richiesto di descrivere quali sono i parametri critici da verificare per sviluppare un’applicazione gestionale ad-hoc per un cliente che ha già una struttura three tier esistente e come convincere il cliente a modificare la struttura preesistente.
      • Il mio commento: anche in questo caso le richieste erano per lo più nozionistiche, e una ricerca su del materiale ben preparato è sufficiente.

    3. La terza prova (20 minuti), avvenuta un mese dopo la prima prova, consiste in una prova orale che (in teoria) dovrebbe riguardare le materie oggetto delle precedenti prove scritte e la legislazione e deontologia professionale, ma in pratica è stata la visione delle prove e relative domande per quanto riguarda la correzione dei testi.
      Il mio commento: evitate di prepararvi sulla parte di legislazione e deontologia professionale se siete informatici (potete trovare i testi su cui prepararvi per questa parte presso la sede dell’Ordine degli Ingegneri di qualsiasi città).
    4. La quarta prova (8 ore), avvenuta circa 3 mesi dopo la prima prova, riguarda la progettazione specifica per le materie caratterizzanti la classe di laurea. Solitamente la prova permette la scelta tra due o più temi.
      Nel mio caso gli argomenti erano così suddivisi:

      • Il primo tema riguardava l’informatica industriale. La prova riguardava la progettazione di uno strumento di misura da laboratorio che utilizzi un PC per acquisire grandezze analogiche e digitali. Veniva richiesto di descrivere con uno schema a blocchi l’interfaccia di acquisizione e scegliere le modalità di comunicazione dei sensori con il PC stesso. Veniva inoltre richiesto di descrivere come strutturare il software indicando gli strumenti e i linguaggi utilizzati, implementando routine di basso livello di acquisizione a scopo esemplificativo.
      • Il secondo tema riguardava i sistemi informativi. Veniva richiesto lo sviluppo di un applicativo web-based per la gestione di un provider di film per cineamatori (simile a Netflix). Veniva richiesto di progettare la base dati e indicare le tecnologie utilizzate, i componenti software e la relativa interazione. Inoltre veniva richiesto di implementare una buona parte del sistema a scopo esemplificativo.

      Il mio commento: la prova pratica è sicuramente la prova dove si può fare la differenza e dove vengono considerate le caratteristiche e le attitudini di un Ingegnere. A differenza delle altre prove, infatti, nella prova pratica non basta dotarsi di buon materiale, piuttosto bisogna dimostrare di aver acquisito una determinata forma mentis per affrontare il problema, mettendo nero su bianco le scelte che conviene fare per il progetto e per quali motivazioni. Non a caso è la prova più corposa e che mette a disposizione più tempo, proprio perché si deve gestire un intero progetto motivando la realizzazione dall’inizio alla fine.

    Per fornire qualche altro esempio ho raccolto una serie di temi d’esame.

    Qual è l’esito dell’esame?

    L’esame viene valutato da 5 professionisti nell’ambito dell’ingegneria, coordinati da un presidente di commissione che è interno all’Università (un professore). La commissione è composta per ogni singola sessione, e viene variata ad ogni nuova sessione. Nel mio caso, dopo circa 4 mesi dalla prima prova, sono stati pubblicati gli esiti delle prove, e ho ottenuto una votazione pari a
    150/200. Dopo aver sentito la segreteria dell’Università, mi hanno avvisato che la copia dell’abilitazione arriverà direttamente dal Ministero dopo circa 5 ANNI.

  • Aggiornare le estensioni di Google Chrome

    Da quando ho iniziato ad utilizzare Chrome ho subito cercato la possibilità di installare estensioni, che in passato hanno reso Firefox insostituibile. Una funzionalità di Firefox (piuttosto fastidiosa, a mio avviso) era il controllo degli aggiornamenti delle estensioni in fase di avvio; Chrome non utilizza questa funzionalità, ma piuttosto lascia all’utente il controllo degli aggiornamenti per le estensioni installate.

    Vediamo come fare: dal menu di Chrome (quello con la chiave inglese):

    • selezioniamo “Strumenti” e poi “Estensioni”, o apriamo un tab su chrome://extensions
    • clicchiamo poi su “Developer mode”
    • clicchiamo su “Aggiorna estensioni”, ed il gioco è fatto!
  • Il tasto ⌘ (cmd) di Apple e il nodo di Salomone

    Il sistema operativo di Apple, OSX, ha una forte inclinazione per l’apprendimento e l’uso dei cosiddetti shortcuts, o combinazioni di tasti, che permettono di velocizzare il lavoro sulla base di un’idea molto semplice: anziché cercare la funzione richiesta nei menu dell’applicazione, si usa una combinazione di tasti, richiamabile in qualsiasi momento, che esegue la funzione ricercata.Backlit Keyboard

    Utilizzare gli shortcut permette un notevole guadagno di tempo, e quasi la totalità dei power user li ricorda e li utilizza per tutti gli applicativi di uso più frequente. È anche vero che gli shortcut sono presenti e utilizzabili anche su Windows, tuttavia la gestione degli shortcut su Windows è molto meno usabile che in OSX.

    Infatti, su OSX, tutti gli shortcut sono uniformati per tutte le applicazioni:

    • ⌘+Q per uscire dall’applicazione
    • ⌘+W per chiudere la finestra corrente
    • ⌘+S per salvare il file/contesto attualmente in modifica
    • ⌘+P per stampare il file corrente

    …e così via.

    Come vedete, tutti gli shortcut si basano sul tasto , chiamato command o cmd, e questo è merito delle Apple Usability Guidelines, che ogni sviluppatore di applicativi per OSX legge prima di sviluppare per OSX. Il risultato è un ecosistema di applicazioni consistenti, che si basano su un’interfaccia comune e su una base di interattività comune per l’utente (come, in questo caso, gli shortcut).

    Command-P for Pretzel

    Su Windows, invece, la situazione è più variegata: le applicazioni supportano gli shortcut costruiti usando il tasto CTRL (control), ma alcune applicazioni seguono lo schema soprastante, altre invece utilizzano combinazioni proprie (avete mai provato a stampare un documento usando CTRL+P in Office?). La situazione sta cambiando, infatti Office 2010 supporta lo schema di shortcut che abbiamo mostrato, tuttavia rimangono comunque applicazioni che utilizzano uno schema di shortcut diverso da quello utilizzato da tutte le altre applicazioni.

    Ma torniamo al tasto ⌘: leggendo la relativa pagina di Wikipedia, sono venuto a conoscenza di una particolarità interessante. Il simbolo ⌘, infatti, è spesso utilizzato anche nella cultura popolare. Innanzitutto, ⌘ rappresenta un nodo particolare, detto Nodo di Salomone (ma in realtà non è un nodo!). Inoltre, il simbolo è anche usato nella cultura nord europea, per indicare i cosiddetti punti di interesse. Curioso, vero?

  • UML Distilled, guida rapida al linguaggio di modellazione standard (terza edizione): la mia recensione

    Per rispolverare la mia preparazione in ingegneria del software, ho deciso di leggere la terza edizione di UML Distilled, scritta dall’autorevole Martin Fowler; in passato ho letto la seconda edizione, ma i libri di Fowler sono una lettura sempre piacevole e sopratutto utile. Il libro è condensato (solo 155 pagine) ma pregno di argomenti e tecniche utili. Innanzitutto, specifico subito che il libro si basa sulla specifica UML2 e in particolare presenta una descrizione chiara e concisa sulle tecniche fondamentali e utili a chi si occupa di progettazione del software. Le tecniche sono presentate in modo semplice e descrittivo, corredati da un paio di esempi per ogni tecnica. Inoltre, si illustrano i punti di forza e debolezza di ogni tecnica. Oltretutto, per ogni tecnica è presente una sezione che spiega quando è utile utilizzare una determinata tecnica piuttosto che un’altra. Ad esempio, i diagrammi di package sono utili nella progettazione di sistemi di grande scala per documentare le dipendenze tra i componenti più importanti. Al termine di ogni capitolo, Fowler introduce un repertorio di esercizi corredati di soluzione. A mio avviso, le tecniche più utili tra quelle presentate sono:

    • Diagrammi delle classi: consentono di descrivere le classi che compongono il progetto e le relazioni tra di esse;
    • Diagrammi dei package: descrive le relazioni tra i package che compongono il model;
    • Diagrammi di deployment: permette di definire come le componenti software saranno distribuite fra i vari nodi hardware a disposizione per il progetto;
    • Casi d’uso (use case): descrivono le funzioni e i servizi offerti dal progetto dal punto di vista di un attore esterno;
    • Diagrammi di attività: definisce una serie di attività per svolgere una determinata funzionalità. È simile ad un diagramma di flusso;
    • Diagrammi dei componenti: complementa i diagrammi di deployment ed indica i componenti software che compongono il sistema e le relazioni tra di essi;
    • Diagrammi di sequenza: esplora il comportamento dei componenti dal punto di vista temporale, e spiega l’evoluzione e la relazione dei componenti in relazione ai messaggi inviati e ricevuti agli altri componenti.

    Nel libro vengono anche presentate tecniche non strettamente UML, ma sicuramente utili come le schede CRC ed i design pattern. Il testo è pensato per un pubblico che già possiede conoscenze di OOP e che conosce qualche altra metodologia di progettazione standard. In definitiva, quindi, un libro da avere assolutamente nella propria collezione personale. Costo: 25€

  • HTML5, video in autoplay e iOS4

    Come sapete i dispositivi handheld di Apple (iPhone, iPad e iPod Touch) non permettono di visualizzare contenuti Flash (per fortuna, dico io), ma permettono di sfruttare tutte le nuove potenzialità messe a disposizione da HTML5, come la possibilità di visualizzare video e animazioni (che fino a poco tempo fa erano prerogative di Flash). In tempi molto rapidi, HTML5 è stato eletto come la soluzione alternativa a Flash, se non addirittura come soluzione definitiva a Flash.

    Un’opportunità interessante che viene offerta da HTML5 su iOS4 (l’ultima release del sistema operativo di iPhone, iPad e iPod Touch) è la possibilità di visualizzare video integrati in una pagina web tramite il tag <video>, e realizzare il cosiddetto autoplay (il play automatico di un video non appena si visualizza la pagina).

    Fino alla versione di iOS3, per realizzare l’autoplay esisteva un workaround che faceva ricorso ad un fakeclick in jQuery (simulava il click del video).

    Da iOS4 in poi, il workaround non funziona e siamo costretti a modificare il codice (semplificandolo!). Vediamo come.

    Prima di tutto dobbiamo utilizzare il nuovo tag di HTML5, ovvero il tag video, indicando il video di cui vogliamo che venga fatto il playback in automatico:

    <video id="myVideo" width="640" height="480" controls>
    <source src="video.mp4" type="video/mp4; codecs=’avc1.42E01E, mp4a.40.2′">
    </video>
    

    In secondo luogo, tramite JavaScript, indichiamo al browser che il video deve essere lanciato in autoplay:

    window.onload = function() {
        var pElement = document.getElementById("myVideo");
    
        pElement.load();
        pElement.play();
    };
    

    Come vedete, rispetto alla soluzione “workaround” per iOS, il codice è più semplice e comprensibile (non richiede nemmeno jQuery).
    E in più, la soluzione è retrocompatibile con iOS3.

    Link alla Link al post [Matthew Congrove].

  • AddressBookSync: sincronizzare i contatti Facebook con AddressBook (Rubrica Indirizzi) su OSX

    Dopo essere passato a OSX, lo strumento che utilizzo per la rubrica è AddressBook (Rubrica Indirizzi per chi ha OSX in italiano); è già preinstallato e integrato perfettamente con il sistema operativo (non per questo è stato sviluppato da Apple). Inoltre, grazie alla sincronizzazione con iTunes e Google Contacts, condivido i contatti anche su iPhone. In questo modo ho un’unica rubrica condivisa tra PC e iPhone, modificabile da entrambi i dispositivi.

    Come vi ho già detto in passato, ritengo la gestione dei contatti un’attività molto importante; infatti, dedico spesso del tempo per ordinare ed integrare i dettagli dei contatti della mia rubrica.

    Proprio per integrare le informazioni dei miei contatti, tempo fa vi avevo parlato di Fonebook, un applicativo per Windows per aggiornare i dati presenti in rubrica con quelli condivisi dai vostri contatti eventualmente presenti su Facebook. Fino ad ora sono stato alla ricerca di un degno sostituto per OSX/AddressBook… e finalmente l’ho trovato: AddressBookSync.

    L’applicazione permette di integrare i dettagli dei vostri contatti presenti in AddressBook con i dettagli condivisi dagli amici eventualmente presenti su Facebook, come ad esempio:

    • la foto profilo (utile nel caso in cui ci telefoni: all’arrivo della chiamata, iPhone visualizzerà il nome del contatto ed anche la sua foto, consentendoci di riconoscere a colpo d’occhio chi ci sta chiamando);
    • il compleanno (integrandosi con AddressBook e quindi con iCal, potremo ricordarci anniversari importanti).

    L’associazione tra il contatto presente in AddressBook e il relativo profilo Facebook è automatica (a patto che i nomi siano identici, quindi i contatti con “soprannomi” Facebook faticheranno ad essere identificati).

    Dopo aver utilizzato il prodotto per un paio di settimane, la sincronizzazione con AddressBook è semplicetrasparente: è sufficiente selezionare gli utenti che volete aggiornare, premere “Sync to Address Book” ed il gioco è fatto. Il processo è molto veloce (ma dipende dal numero di contatti che avete sia in rubrica che in Facebook, quindi YMMV).

    In conclusione, quindi, sicuramente da provare!

    AddressBookSync è scaricabile gratuitamente dall’indirizzo web dello sviluppatore.