Piero V.

Bisca

Ho realizzato che è da un pezzo che non lavoro seriamente su un progetto mio.

Negli ultimi mesi, ho realizzato il plugin su cui ho scritto la mia tesi di laurea, però non conta troppo, perché, anche se qualche volta ho approfondio e fatto test durante il weekend, ci lavoravo principalmente durante la giornata lavorativa. E proprio per questo, tecnicamente non è neanche mio, perché la proprietà intellettuale del progetto è dell’azienda dove l’ho realizzato.

Adesso comunque per la tesi dovrei essere in dirittura d’arrivo e, appunto, ho deciso di cominciare un progetto che potessi dire completamente mio.

Già tempo addietro un mio amico mi aveva insegnato un gioco che noi chiamiamo “bisca”, ma non ho trovato un altro nome con cui sia conosciuto in giro per l’Internet.

Il gioco è carino e coinvolgente, quindi ho deciso di farne una versione online, anche perché col tempo ci siamo tutti un po’ sparsi, così è un modo anche per ritrovarsi virtualmente.

Come ho già detto in altre occasioni, trovo abbastanza noioso lo sviluppo di cose per il web, siano siti, oppure app, o altro ancora, tuttavia devo dire che mi sembra il modo migliore per sviluppare questo progetto. … [Leggi il resto]

Kinect, Kinect One, OpenCV e OpenNI, come siamo messi?

Di recente ho giocato un pochino con i dispositivi del titolo: Kinect per Xbox 360 e Kinect per Xbox One. Ma non ci ho giocato né con l’Xbox, né per scopo (puramente) ludico: potrebbero diventare l’argomento della mia tesi di laurea.

Ma torniamo indietro un secondo, anzi di qualche mese. A metà febbraio ho cominciato il mio tirocinio obbligatorio per la laurea, e ho deciso di farlo presso un’azienda che sviluppa un software di modellazione 3D per Windows e Mac. Più precisamente, io mi sto concentrando sulla possibilità di creare plugin per questo software in Python, in aggiunta alla possibilità di farlo in C++, già esistente.

La cosa più diffusa per il mio corso di laurea è quella di fare il tirocinio lungo e poi la tesi che lo riguardi. Siccome il mio relatore si occupa di Computer Vision (il corso più bello che io abbia fatto
in 5 anni di università, davvero) abbiamo pensato di fare un qualche plugin che riguardi la computer vision per il software, almeno per scopo didattico.

Abbiamo avuto diverse idee, e alcune di queste riguardano l’uso di sensori che possano rilevare la profondità, tra questi ci sono le due Kinect, che sono abbastanza diffuse. In ufficio avevamo già una Kinect per Xbox 360, poi il mio amico Giacomo mi ha prestato una Kinect per Xbox One. … [Leggi il resto]

Whoosh come motore di ricerca per un blog

Da un bel po’ di tempo il mio sito sta aspettando un bell’aggiornamento, ma ogni volta mi blocco per un motivo o per l’altro. Questa volta è stato il turno della ricerca.

Questa funzionalità è una delle più complicate da implementare, per una moltitudine di fattori, che vanno dalla necessaria attenzione alle prestazioni al fatto che la ricerca non è un problema con una soluzione precisa. Non a caso i motori di ricerca di oggi si basano completamente su algoritmi di machine learning, che però per un piccolo sito come il mio, che vuole comunque offire questa possibilità, sarebbe un’esagerazione, peraltro impossibile, in quanto non avrei nemmeno i dati per il training.

In ogni caso, non voglio rimuovere questa funzionalità dal sito, né implementarla in maniera troppo inefficace, né rivolgermi a servizi di terzi, quindi mi sono guardato un po’ attorno per decidere sul da farsi e ho provato diverse soluzioni.

Come già annunciato, sto lavorando in Python, con Django, quindi il mio primo passo è stato provare Haystack.

Questo è un framework che fa da ponte tra i modelli dell’ORM di Django e diversi backend per la ricerca, tra cui i celebri Elasticsearch e Solr, entrambi basati su Apache Lucene, e i meno famosi Xapian e Whoosh. Precisamente Haystack mette a disposizione delle API agnostiche dal backend per indicizzare, eseguire ricerche ed altre operazioni sui modelli di Django. Quindi, una volta creato il codice basato su Haystack, si possono facilmente provare i vari backend. … [Leggi il resto]

Filtri di FlatPress portati in Python

Da un bel po’ di tempo sto pensando di passare ad un sistema in Python per gestire il mio sito.

C’è solo una cosa che mi ferma: quando scrivo un articolo, la maggior parte è scritta in HTML puro, però ci sono anche alcuni tag speciali che usano dei plugin FlatPress ed in generale prima di mandare in output un post ci sono diversi filtri, ereditati da WordPress, che ne modificano il contenuto, abbellendone la tipografia (per esempio cambiando gli apici e le virgolette normali), bilanciando i tag se mi ero dimenticato di farlo etc.

Sono tanti anni che scrivo questo articoli su questo sito e ormai ne ho già accumulato un discreto numero, quindi passarli uno ad uno è un’opzione improponibile. Rimangono le due possibilità di prerenderizzare tutto e portare nel nuovo sistema un codice in puro HTML, oppure portare al nuovo sistema i vecchi filtri. Io ho scelto quest’ultima.

Alla fine FlatPress non ne usa così tanti: di default solo wpautop, wptexturize e conver_chars, che rispettivamente sistemano gli a capo, i break e i paragrafi, sistemano la tipografia e convertono alcune entities. Poi però ci sono anche alcuni plugin, in particolare il BBCode che aiuta davvero molto con l’inserimento delle immagini e la gesione di lightbox. … [Leggi il resto]

vCard Cleaner

Una funzionalità che trovo molto comoda della rubrica Android è la possibilità di poter esportare la rubrica in VCF.

Non so se più per romanticismo o più per fondata paranoia, non voglio salvarla su un servizio cloud come Gmail, però non voglio neanche rischiare di perderla, quindi questi file sono la scelta migliore.

Sul mio vecchio Huawei Y530 andavo abbastanza bene, perché riuscivo a esportare insieme tutti i contatti da un unico provider di rubrica, in particolare dall’archiviazione locale del telefono, possibilità che non ho più trovato nella Cyanogenmod che uso sul mio Oneplus One.

Infatti adesso posso sì decidere che contatti esportare, ma vedo tutti i contatti insieme, compresi i duplicati creati da Telegram e Whatsapp e i contatti di cui ho solo l’indirizzo e-mail su Gmail.

Ho così deciso di fare uno script in Python che ripulisce il file esportato, cancellando i contatti privi di numero telefonico e mette insieme i duplicati. Inoltre se uno stesso numero è ripetuto più di una volta per il contatto, viene tenuto solo una volta.

Lo script potrebbe essere un po’ migliorato, facendo in modo che, per esempio, accetti da argomenti i file da pulire, anziché scriverli nel file stesso.

Come dipendenza ha solo VObject che può essere installata tramite pip oppure tramite altri gestori di pacchetti (è presente, per esempio, nei repository Debian, sotto nome di python-vobject).

Il mio script è rilasciato nel pubblico dominio, invece VObject (almeno al momento di scrittura dell’articolo) è rilasciato sotto licenza Apache 2.0.

Download: vcard_cleaner.py.