ia: Benvenite! In mi blog io scribe in interlingua, italiano e anglese.

it: Benvenuti! Nel mio blog scrivo in interlingua, italiano e inglese.

en: Welcome! In my blog I write in Interlingua, Italian and English.

QHtmlParser: writing an HTML parser with your brain switched off

While developing MiTubo I've recently felt the need of parsing HTML pages: the first problem I wanted to solve was implementing proper RSS feed detection when the user entered a website URL into MiTubo's search box, so that MiTubo would parse the site's HTML, look for <link rel="alternate"...> URLs in the HEAD section, and let the user subscribe to any video feeds found there.

A quick search in the internet did not provide a clear answer: I found a Qt HTML parser in (stalled) development, and a few other C++ or C parsers (among the latters, lexbor is the most inspiring), but all of them seem to take the approach of parsing the HTML file into a DOM tree, while I was hoping to find a lightweight SAX-like parser. Pretty much like Python's html.parser.

Anyway, I don't remember how it happened, but at a certain point I found myself looking at html.parser source code, and I was surprised to see how compact it was (apart, of course, for the long list of character references for the HTML entities!). Upon a closer look, it also appeared that the code was not making much use of Python's dynamic typing, so, I thought, maybe I could give it a try to rewrite that into a Qt class. And a few hours later QHtmlParser was born.

As this post's title suggests, the process of rewriting html.parser with Qt was quite straightforward, and the nice thing about it is that I didn't have to spend any time reading the HTML standard or trying to figure out how to implement the parser: I just had to translate Python code into C++ code, and thanks to the nice API of QString (which in many ways resembles Python's — or vice versa) this was not too hard. I even left most of the original code comments untouched, and reused quite a few tests from the test suite.

It was time well spent. :-)

If you think you might need an HTML parser for your Qt application, you are welcome to give it a try. It's not a library, just a set of files that you can import into your project; for the time being I only have a build file for QBS, but I'll happily accept contributions to make it easier to use QHtmlParser with projects built using other build systems. You can see here the changes I made in MiTubo to start using it and detect RSS feed in a webpage's HEAD.

That's all for now. And in case you missed the link before, you can find QHtmlParser here.

MiTubo 0.3 brings basic RSS support

I just pushed MiTubo 0.3 to the Ubuntu Touch app store, added a link to the AppImage package in the Releases page and later during the night the Launchpad builders should import it and build it for Ubuntu 18.04 and 20.04.

This release adds basic support for RSS feeds. One just needs to type the address of an RSS (or Atom) feed in the search bar and the "Search" button will transform itself into a "Subscribe" one. Unfortunately no discovery mechanism is implemented yet, so one cannot just enter the address of a webpage and expect MiTubo to find the feed URL(s); I plan to bring that in a future release, but for the time being you'll have to enter the exact address of the RSS feed.

Also, there's no tracking of which videos are new and which ones have been already watched. Again, that's material for a next release.

But as a start, feed are remembered in the configuration, and the next time you open up MiTubo you'll see them in the main page, and the most recent videos will be shown.

As usual, you're welcome to report issues in gitlab.

La premiazione di Maria Shukshina al Cremlino

Il 31 agosto di quest'anno all'attrice russa Maria Shukshina è stata conferita una medaglia per “servizio alla Patria” nell'ambito della cultura. A consegnarle la medaglia è stato il primo ministro russo Michail Mishustin, che probabilmente però non si aspettava dall'attrice un discorso di questa portata:

L'ho sottotitolato per voi con tanto amore, e spero con pochi errori. Cercate di non farvi troppo distrarre dal volto impassibile del primo ministro, anche se effettivamente questo da solo varrebbe la visione del video.

La domanda per voi, chiaramente, è questa: vi sono stati episodi analoghi in Italia, in cui un personaggio dello spettacolo si sia rivolto così a Draghi, davanti alle telecamere nazionali?

Recepta del crostata de piras

Le arbores del dacia produceva multe piras iste anno, e infortunatemente illos non se conserva ben pro un longe tempore. Alora, pro non lassar los guastar, io decideva de utilisar los pro facer crostatas, un dulce que me place multo, ma que io nunquam ha cocinate. Ben, il ha un prime vice pro toto.

Le recepta del crostata de piras

Io trovava un recepta pro le crostata de pomos in internet, e lo adaptava un poco.

Ingredientes
  • 300 grammas de farina
  • 140 grammas de sucro
  • 1 parve coclear de levatura (it: lievito, en: yeast)
  • 2 ovos (on usa uno complete, e un vitello del altere)
  • 100 grammas de butiro
  • 1 coclear de oleo de tornasol (it: girasole, en: sunflower)
  • 500 grammas de piras a peciettas
Preparation

On pone le farina, le sucro e le levatura in un salatiera (o altere contenitor bastante ample pro poter laborar le impasto con le manos), e on los misce con un coclear. Postea on adde le oleo e le butiro, taliate a pecias (le dimension non importa). On labora con le digitos del mano, usque quando le butiro se ha reducite in partes plus parve, e le impasto ha acquirite un consistentia granulose. Alora on adde le ovo e le vitello (isto es le parte jalne central) del altere ovo (le resto del secunde ovo on non va utilisar lo), e on misce e impasta con le manos, fin a quando le massa non plus es collose (le manos resta munde quando on lo labora).

A iste puncto on inveloppa le impasto in un pellicula transparente (o lo pone in un sacchetto pro alimentos) e on lo pone in le refrigerator (non in le congelator!), ubi illo debe reposar pro al minus 30 minutas. Intertanto, vos non va reposar: vos debe taliar le piras in parve partes, usque le peso del fructa arriva a circa 500 grammas.

Le prime crostata de mi production

Quando vos ha finite (ma non prima que 30 minutas ha passate!), on recupera le massa del refrigerator e on remove un tertio o un quarto de illo, que essera utilisate postea. Le parte le plus grande on va poner sur un folio de carta pro furno, e on lo extende in un forma approximatemente circular, del spissor de circa 4 millimetros. Le diametro debera esser sufficiente pro coperir tote le fundo del tortiera, plus 2 centimetros pro le bordos del torta. Post que le impasto es in le tortiera, on face alicun foros con le puntas de un furchetta (non demanda a me le ration — io non lo sape!), e on versa le fructa. Alora, on prende le parte del impasto que on removeva precedentemente, e on lo extende e talia in bandas de un centimetro o poco plus de largor, que on pone super le strato de fructa pro formar le texitura a quadrettos.

In fin, on pone le tortiera in le furno, a 150 grados de calor, pro circa 40 minutas.

Variantes

In vice que piras, on pote obviemente utilisar un altere fructo de vostre gradimento; si le fructo es dulce, alora il poterea esser un bon idea adder succo de lemon — isto es particularmente consiliate con le pomos, anque pro evitar que illos deveni nigre.

Bon appetito!

Un libro per riflettere: Donbass

Il giornalista Vittorio Nicola Rangeloni ha recentemente pubblicato un libro, “Donbass — Le mie cronache di guerra”, in cui racconta la sua esperienza in Ucraina, paese in cui ha trascorso buona parte degli anni tra il 2014 ed oggi. A differenza dei suoi rapporti dal fronte, per il cui rigore ed obiettività si è fatto sempre apprezzare da chi lo segue sulle reti sociali, questo libro è una sequenza di pagine vive, in cui i numeri delle statistiche sulle vittime della guerra lasciano il posto alle storie di queste persone, che l'autore raccoglie e ci fa rivivere tramite la sua penna.

È un libro che non può che produrre emozioni forti e lo fa con un linguaggio colto e fluido, in cui non mancano passaggi che non esiterei a definire poetici, in particolare per come viene dipinto il contrasto tra il futuro che i protagonisti del racconto si aspettano (o che noi lettori siamo indotti ad auspicare per loro) e la triste realtà che vive chi trascorre la sua vita a poche centinaia di metri da un fronte di guerra. Rangeloni non usa parole forti, non descrive apertamente le sue emozioni, eppure (o forse proprio per questo) tramite la viva descrizione delle sue giornate e dei suoi incontri riesce a farle rivivere benissimo nel lettore, che a tratti si trova spaesato, a tratti impaurito, a tratti angosciato.

Civili o combattenti, gli amici che l'autore ci fa conoscere ed amare vengono cancellati dalla pagina con la stessa rapidità dei proiettili che hanno posto fine alle loro vite. Il susseguirsi delle introduzioni alle nuove conoscenze ed amicizie del giornalista, le brevi descrizioni delle loro case danneggiate dai colpi dei mortai, le tazze di tè offerte al visitatore da chi ha poco o nulla da mangiare, e, talvolta, la notizia della loro prematura scomparsa, ci portano in una dimensione dove i freddi bollettini di guerra (pur spesso taciuti dai mezzi di informazione occidentali) non riescono ad entrare: è la dimensione umana della guerra, in cui non vi sono numeri ma volti, emozioni e speranze.

Il valore del libro sta principalmente in questo: è un'arma contro l'indifferenza, contro la convinzione di saperne abbastanza di un conflitto che, dimenticato dalle televisioni, sembra non aver più nulla da dirci. Mentre nel cuore dell'Europa si continua a morire.

Ho letto con inconsueta (per me) avidità, e spesso con occhi lucidi, le più di trecento pagine di questo libro, e apprezzato la piccola raccolta fotografica che ne costituisce le ultime pagine. Come avrete già capito, il fatto che abbia preso la briga di parlare di questo libro significa che ne consiglio caldamente la lettura.

Dove aquistarlo

“Donbass — Le mie cronache di guerra” è edito da Idrovolante edizioni ed è anche disponibile in molte altre librerie in linea.