XML/SQL e PostgreSQL: come recuperare due tag in parallelo da un dato XML in una sola SELECT

Tempo fa mi fu chiesto di lavorare ad una procedura interna a DB2 che si occupava di importare alcuni dati: un sistema esterno generava un testo XML con parecchi record da inserire, metteva tutto il testo tramite connessione ODBC in un campo XML di una tabella «di frontiera» e invocava questa procedura che doveva prendere quei dati e inserirli in varie tabelle. Il punto sul quale il DBA locale si era bloccato era che riusciva a fare query XML che  reperivano un singolo campo, ma non ci riusciva quando vi erano più campi da prendere allo stesso tempo (per inserirli nello stesso record).

Anche PostgreSQL è in grado di gestire un campo XML e di estrarre delle parti di XML da quei campi. Questa estensione del linguaggio segue uno standard chiamato SQL/XML. Vediamo come si può affrontare questo problema con PostgreSQL.

Continue reading

Autenticazione postgresql tramite PAM per winbind e shadow

A volte si vuole far sì che gli utenti del database postgresql siano autenticati su un sistema esterno al database stesso. Per questo postgresql permette di verificare le credenziali tramite LDAP o kerberos o altro ancora, ma quando non c’è un metodo direttamente implementato in postgresql è possibile utilizzare PAM, che ha svariati connettori. In questo esempio prendiamo in considerazione l’autenticazione sul sistema operativo (utenti in /etc/passwd e password in /etc/shadow) e su dominio Windows (tramite winbind).

Nel seguito verrà assunto che l’autenticazione tramite PAM sia già configurata e funzionante. I comandi sono riferiti ad un sistema Debian Jessie.
Continue reading

Maremontana 2015

È stata la mia prima Maremontana nonché la mia prima corsa «trial», ma devo dire che nonostante l’evidente difficoltà per chi non è pratico di questa specialità, mi è piaciuta molto.

La pioggia non mi ha disturbato più di tanto, ma ho corso tutto il tempo con la giacca anti pioggia, il che mi ha fatto sudare parecchio. L’acqua è entrata dappertutto: a partire dalle scarpe — nonostante fossero fatte apposta per limitare l’intrusione dell’acqua — fino allo zaino-evidentemente-non-abbastanza-impermeabile che conteneva il materiale obbligatorio, compreso il telefono cellulare che ha preso così tanta acqua che ho dovuto buttarlo (lezione imparata).

Al ristoro «Rifugio Pian delle Bosse» sul percorso dei 23km. (Foto di Irene Gibin, fonte: facebook)

Al ristoro «Rifugio Pian delle Bosse» sul percorso dei 23km. (Foto di Irene Gibin, fonte: facebook)

Invece ho capito cosa vuol dire «finire l’energia». Arrivato circa al 18km non riuscivo più a muovere un passo e mi sono fermato a mangiare e bere, dando fondo alle scorte che avevo portato: mezzo litro d’acqua e un pacco intero di Ringo. Nell’attesa di riprendere le forze mi hanno superato una quarantina di persone, ma a dire il vero non ne ho viste molte messe bene. La mancanza di forze non è arrivata improvvisa, ma evidentemente non ho saputo capire i primi sintomi, che pure c’erano (anche qui, lezione imparata).

Correre nella seconda parte del percorso è stato parecchio più difficile: c’erano discese rese impegnative dal fango che scorreva coprendo le asperità del terreno. Si doveva scegliere: correre sui bordi del sentiero con il pericolo di scivolare frequentemente verso il centro bagnato e ammaccarsi il sedere (minimo) o spezzarsi una gamba, oppure prendere la via centrale affondando nel fango e rischiando le storte alle caviglie per i vari sassi nascosti alla vista. Io — forse perché sono cresciuto accanto a Venezia :-) — ho preso spesso la seconda via, quella centrale, affondando nell’acqua e nella melma senza nessun tentativo di mantenere un aspetto decoroso. Difatti alla fine ero piuttosto… marrone. Inoltre a volte la velocità raggiunta con la pendenza era troppa e ho preferito aiutarmi con i vari alberi laterali per rallentare e fermarmi più volte prima di ripartire. Tra l’altro uno di questi si è rilevato coperto di grosse spine (lezione imparata).

Quasi alla fine, quando si rientra nel centro urbano e pare di essere arrivati, c’è una salita che spunta a tradimento dopo una curva stretta a destra — credo sia l’accesso al sagrato di una chiesa –. Quella salita è una specie di Golgota e, secondo me, cercando bene tra i ciottoli che lo compongono, vi si potranno trovare parecchi accidenti lasciati lì dai partecipanti alla gara :-(

Poi c’è l’arrivo. Nel mio caso un arrivo in solitaria: nessuno davanti a me, nessuno dietro di me, nessuno che mi guardava, nessuno che mi aspettava, nessun sorriso: era un attimo di silenzio anche per lo speaker. L’unico ad avermi notato è stato il cronometro ufficiale, di certo solo perché ligio al suo ordine elettronico. Questo arrivo è stato di quelli che ti fanno pensare: ma perché sono qui, tutto bagnato, a fare una corsa (la mia) della quale non interessa niente a nessuno? La risposta è ovviamente dentro di me ed è quella che mi farà iscrivere anche l’anno prossimo.

Intanto riprendo con le mie corse in pianura: domenica prossima c’è la tuttadritta a Torino. Solo 10km, ma questa volta in compagnia e con l’intento di battere il mio record.

Torino Map-Party: non mi è parso poi così legato all’«open data»

Sono stato al Torino map party organizzato da Piemonte Visual Contest (Consiglio Regionale del Piemonte, TOP-IX e CSI Piemonte) e dalla Fondazione Torino Musei nel giorno dell’«open data» (il 21 febbraio 2015).

L’evento aveva come scopo dichiarato quello di «mappare insieme alcuni percorsi storico-artistici torinesi» con le app Mapillary e Wheelmap. E in effetti così è stato: siamo stati brevemente edotti sul funzionamento delle app in questione e ci siamo dispersi per la città, a gruppi, secondo vari percorsi prestabiliti.

Mapillary è un servizio online di una azienda svedese che permette alle persone di pubblicare con licenza cc-by-sa foto georeferenziate. L’app permette di scattare foto a ripetizione e di inviarle al sito web, poi con il browser è necessario controllarle per sfocare le parti che possono generare problemi (almeno le targhe di auto e i visi delle persone). Una volta che le foto sono a posto, il sito cerca di collegarle alle altre foto del database per riproporre una visita della città (o, in generale, del luogo) visuale. Se le foto sono sufficienti allora sarà possibile visitare un percorso della città rimanendo al computer.
L’azienda Mapillary non lo fa gratis: anche se le foto sono distribuite con quella licenza e rimangono accessibili (si spera), i dati che vengono estrapolati non sono pubblici. Ad esempio l’azienda può cercare di recuperare dalle foto i cartelli stradali, rilevando i limiti di velocità o i civici delle abitazioni, per rivendere queste informazioni.
Da quanto ho capito, alcune informazioni prese dalla singola foto (dalla parte EXIF, non quelle estrapolate da Mapillary) sono passabili automaticamente a OpenStreetMap. L’incredibile collegamento richiede che l’utente inserisca nell’app sia le proprie credenziali di Mapillary, sia le proprie credenziali di OSM (che, a seconda da come viene implementata l’autenticazione, può voler dire che si consegnano le credenziali di OSM ad una azienda terza).

Wheelmap è invece interamente un servizio che sembra veramente pubblico: i dati sono quelli di openstreetmap e prevede la catalogazione dell’accessibilità per persone che si muovono con la sedia a rotelle, o comunque con limitata mobilità. L’idea che ovunque si vada, l’app mostra i PDI di OSM di un colore specifico: grigio per non catalogato, verde per completamente accessibile, giallo per parzialmente accessibile, rosso per non accessibile.

La cosa veramente triste di questo incontro è stata la motivazione che dovrebbe indurci al partecipare a questa raccolta di dati: più volte è stato disegnato google come grande antagonista che grazie ai soldi compra le aziende che hanno i dati e ci fa fantastiche applicazioni (google maps e street view) contro il quale noi piccoli impotenti possiamo fare qualcosa nonostante lo scontro sia titanico. E cosa possiamo fare? Chiaro: popolare i dati di Mapillary e Wheelmap.

Perché ritengo che questo approccio sia semplicemente penoso? Perché non è assolutamente vero che noi siamo dei poveri tapini che, messi assieme, possono fare qualcosa. No, non è vero per nulla. Siamo qui sotto l’egida della Regione Piemonte, e allora perché non chiedere: che cosa sta facendo la regione Piemonte in questo senso? Perché non rende completamente fruibili i propri dati, magari mettendoli proprio su OSM? E che ci vuole a organizzare delle squadre di persone che vadano in giro con il telefono tutto il giorno seguendo percorsi predefiniti per ottenere le foto che di certo mancano al catasto? Siamo un paese in recessione, abbiamo una percentuale elevata di disoccupati, sicuramente molti accetterebbero di fare questo lavoro ad un prezzo decoroso. Cara regione: fai una bella leggina che dice: tu che sei senza lavoro o in cassa integrazione, se vuoi uno stipendio minimo, devi in cambio svolgere dei lavori. E tra questi lavori ci metti pure quello di aggiornare le mappe e magari quello di aggiungere le foto. Ovviamente non lo puoi fare su Mapillary, visto che è privato, ma se ti metti d’accordo con altre regioni, e visto che possiedi quell’azienda informatica chiamata CSI Piemonte, perché non ti organizzi per realizzare un servizio decente, basato su software open source, che rilasci come software open source, e al quale permetti l’accesso partecipativo da parte di tutti i cittadini?

Beh, io una domanda così non l’avevo in mente, ma ne avevo in mente la prima parte e l’ho posta. Mi hanno risposto, dal «palco» sia un esponente del consiglio regionale, sia un secondo relatore. Il primo ha riferito che in effetti eventi come quello attuale sono la scintilla di quanto la pubblica amministrazione sta facendo (mi viene da ridere al solo pensiero che questa sia veramente la scintilla: persone che regalano dati ad una azienda straniera sarebbero la scintilla della liberazione dei dati della PA); il secondo ha fatto notare che più che nelle alte sfere i problemi sono alla base: i geometri che hanno questi dati sono molto gelosi e non li vogliono rendere «aperti» (e inoltre non li aggiornano neppure al computer: ricordano a memoria tutte le cose più evidenti senza dover ricorrere al computer, quindi perché dovrebbero perdere tempo ad aggiornare i dati?)

In tutto questo, ho avuto la fortuna di fare parte di un gruppetto che aveva persone molto preparate sulla storia della città, e sono stato molto contento di aver potuto vedere qualche angolo interessante del quale ero completamente all’oscuro, come il passaggio che arriva da piazza San Giovanni al Palazzo Reale, ma non quello che arriva al cortile davanti il Palazzo Reale, bensì quello ospita la caffetteria di Palazzo Reale.

A proposito, le mappe che segnano i luoghi da mappare, nonché i punti pubblici WiFi, sono sul sito di Palazzo Madama.

La trappola per la scimmia, rivista

Tempo fa qualcuno mi ha raccontato che se si lega una noce di cocco vuota per terra o ad un albero, le si pratica un buco e la si riempie con una manciata di riso, allora si è realizzata una trappola per la scimmia. Difatti la scimmia — che è una gran curiosa — scova il riso, infila la zampa nel buco e afferra il riso, ma non riesce a tirare fuori la zampa perché quando è chiusa forma un pugno che non esce dal buco. Per liberarsi dovrebbe mollare il riso, ma la cosa non le passa minimamente per la testa.

Bene, io ieri ho scoperto la mia trappola; una trappola dalla quale sembra impossibile uscire nonostante sia semplice: avevo fretta di andare via ma stavo facendo una telefonata che volevo chiudere presto, però mi è stato passato un bimbo piccolo, di quelli che cominciano a dire le prime parole, e mentre la sua mamma gli chiedeva di dirmi qualcosa, io attendevo e facevo la mia parte. Dopo un po’ volevo terminare la chiamata, ma la mamma (che si sentiva in lontananza) continuava a stimolare il bimbo senza che lui dicesse nulla. Allora io ho cominciato a dire «devo andare!» anche alzando un po’ la voce per farmi sentire dalla mamma, ma nessuno mi sentiva e il bimbo continuava a non parlare… siamo andati avanti per un bel po’ e io mi sono sentito in una trappola dalla quale non potevo uscire :-)