Mi sono imbattuto in un comportamento piuttosto curioso utilizzando DBeaver con un server MySQL locale. All’avvio di DBeaver, il tentativo di connessione falliva con il messaggio: La cosa sorprendente era che bastava aprire un terminale …
Per anni avevo sentito ripetere che Docker è una virtualizzazione leggera. È una frase comoda per iniziare, ma in realtà è fuorviante. L’ho capito nel modo migliore: cercando di capire perché MySQL si comportasse in …
Aprendo Thunderbird mi è comparso un avviso che invitava a intervenire entro il 21 luglio 2026 per continuare a ricevere gli aggiornamenti ESR (Extended Support Release). Partiamo con le istruzioni operative per chi sa già …
Negli ultimi tempi termini come LLM, embedding e database vettoriali sono usciti rapidamente dall’ambito della ricerca e sono diventati argomenti quasi quotidiani. Sono mattoncini coi quali possiamo costruire sistemi capaci di interrogare grandi collezioni di …
Ho condotto un esperimento di scrittura di software per analizzare i risultati di una esportazione delle mie conversazioni con ChatGPT. Ma ho deciso di aiutarmi nell’analisi con un Large Language Model che sicuramente sa fare molto bene questo lavoro e in più con un LLM in locale, per vedere come funziona.
Piwik è un software open source con una notevole velleità: battere Google Analytics.
Piwik si basa sulla tecnologia PHP/MySQL; il software è rilasciato con licenza GPL versione 3 e ha diverse caratteristiche interessanti che riporto dal sito:
Reports sulle statistiche web in tempo reale: in Piwik, i reports sono generati in tempo reale per default. Nel caso di siti web ad alto traffico, puoi scegliere la frequenza con cui generare i reports. (Non è necesario attendere il giorno dopo per vedere ciò che è successo oggi, anche se esiste la funzionalità Live anche per GA).
Le features di Piwik sono nei plugins: puoi aggiungere nuove features ed eliminare quelle di cui non hai bisogno. Se sei uno sviluppatore, puoi velocemente creare i tuoi plugins per le statistiche web.
tu gestisci i tuoi dati: perché Piwik è istallato sul tuo server, i dati sono archiviati nel tuo database e puoi ottenere tutte le statistiche usando le API pubbliche (pubblicando i dati in numerosi formati: xml, json, php, csv). Non diamo i dati al fornitore del servizio ma ce li teniamo in pancia: sono nostri.
L’ interfaccia utente è completamente customizzabile: puoi usare il drag and drop dei widgets che preferisci per visualizzare e creare un report personalizzato per te.
Cercando notizie su USENET ho trovato questo post meraviglioso che mi ha fatto tornare ai primordi del Web.
Un piccolo estratto:
WorldWideWeb – Executive Summary
The WWW project merges the techniques of information retrieval and hypertext to make an easy but powerful global information system.
The project started with the philosophy that much academic information should
be freely available to anyone. It aims to allow information sharing within
internationally dispersed teams, and the dissemination of information by
support groups.
Reader view
The WWW world consists of documents, and links. Indexes are special documents
which, rather than being read, may be searched. The result of such a search is
another (“virtual”) document containing links to the documents found. A simple
protocol (“HTTP”) is used to allow a browser program to request a keyword
search by a remote information server.
Ho dovuto reinstallare Thunderbird in una partizione del disco per motivi che non sto a ricordare.
Ho tutta la posta sul server remoto, uso IMAP come protocollo per cui nessun problema per quanto riguarda i messaggi. Per recuperare la rubrica invece, che è in locale, ho dovuto importarla. Come si fa?
La rubrica è contenuta nel file
~/.thunderbird/eawvwa8a.default/abook.mab
La cartella dal nome “esotico” eawvwa8a.default viene creata con un nome diverso per ogni installazione di Thunderbird, quindi non vedrete esattamente quella cartella nel vostro file system, ma, sotto la cartella .thunderbird/,una cartella con il suffisso .default c’è: state sicuri che è quella! Il file abook.mab contiene i contatti in formato testo.
Ho copiato questo file dalla directory della vecchia installazione alla directory della nuova installazione
$ cd .thunderbird/eawvwa8a.default/
$ cp <old_tb_directory>/abook.mab .
Una nota: non so quante persone usino ancora i client di posta, vista la diffusione dei siti di webmail del calibro di Gmail. Penso siano ancora parecchie. Io continuo a trovarlo più comodo della webmail, anche se spesso le intranet bloccano la porta 25 per cui non si può spedire la posta, e quindi la via più breve è usare la mail via web.
Presto sarà aperto a nuovi Power User. Nuova grafica, funzionalità migliorate e, secondo me, bellissimo da usare!
Il comunicato dello staff di oggi:
Ancora aggiornamenti in atto. Come anticipato nel post del 21 Maggio, da oggi Volunia mette a disposizione nuove funzionalità.
È inoltre nostro dovere tenere in considerazione tutte le critiche ed i reclami ricevuti dalle persone che non hanno avuto ancora accesso a Volunia. Il nostro team ha lavorato alacremente per poter accreditare tutti, soprattutto in vista della fase finale di Testing. Dal giorno 4 Giugno 2012 riprenderemo il processo di attivazione di tutti gli utenti che in questi mesi ne hanno fatto richiesta.
Finora ho realizzato applicazioni Mirth che leggevano da servizi web. E’ interessante anche sapere che i web service si possono fare con Mirth. Il contesto è questo: un’azienda “periferica” produce una informazione (ad esempio: un laboratorio che produce l’analisi di un campione di sangue) e il dato deve essere trasmesso all’azienda “madre” perché lo registri nel suo gestionale. L’azienda madre realizza un servizio web che verrà chiamato dal laboratorio il quale spedirà al servizio il referto con un messaggio HL7. All’arrivo del messaggio l’azienda madre esegue il parsing del messaggio e salva i dati nel gestionale (un database relazionale).
Nella fattispecie il messaggio viene “affettato” a righe e viene salvata una intestazione e una serie di dettagli collegati, uno per ogni riga del messaggio.
L’impianto è questo:
Il source
Il source è un SOAP listener che risponde con un WDSL che Mirth stesso genera e che mette a disposizione un metodo standard detto acceptMessage() (teniamo d’occhio ma per il momento soprassediamo sulla casella di selezione Respond from)
Le destination
Le destination sono parecchie perché la lavorazione del messaggio è piuttosto laboriosa: devo capire il tipo di messaggio (che leggo nell’intestazione del messaggio stesso) e a seconda di questo compiere diverse operazioni: per messaggi di un tipo estraggo dal file HL7 un file PDF che salvo nel NAS, e poi, in ogni caso, devo salvare in una tabella Oracle una intestazione e in una tabella figlia tutte le righe del messaggio numerandole e collegandole alla testata con un vincolo di chiave esterna:
Mirth2_destination
Un passetto in più: lo script
Per questo tipo di applicazione devo personalizzare lo script che viene eseguito una volta eseguita l’applicazione del canale: con questo personalizzo la risposta del web service al programma che lo ha chiamato. Nelle figure precedenti si possono vedere questi punti in ciascuna delle 4 tab superiori.
Anche se ci sono diversi prodotti già attivi all’interno di Mirth per eseguire ognuna di queste operazioni atomiche, per convenienza o per forza alcune cose me le sono dovute scrivere a mano in JavaScript utilizzando classi embedded di Mirth, come la classe DatabaseConnectionFactory. Per esempio mi serviva eseguire una lettura di Oracle in una delle destinazioni, ma nelle destination non si può selezionare il tipo di connettore DatabaseReader che invece si può richiamare dal source. Quindi me lo sono fatto a mano. Inoltre, pur essendo possibile selezionare dei tipi di connettori standard che sono anche semplici da usare (ad esempio: FileWriter: gli passo la directory, il nome del file e il contenuto e lui me lo scrive dentro il filesystem), alcuni tipi di connettori dovevano comportarsi in modo non standard, ma Mirth è programmabile! per cui ho potuto estendere le funzionalità scrivendo i programmi a mano.
Per me, che non sono tanto in confidenza con il Java, scrivere in JavaScript (che è un po’ meno rigido del Java) in modo così approfondito è stata comunque un’esperienza formativa.
Alla fine di questo lavoro – salvare i dati – bisogna rispondere al software che ha chiamato il servizio e: come si fa? Non lo so.
Ho usato per la prima volta la quarta TAB (Scripts). Ho selezionato “Postprocessor” nella select Script in alto (vedi figura), ho definito una serie di variabili e una istruzione di scrittura nel log, e poi se la variabile di canale error è valorizzata (e, se succede qualcosa, la valorizzo nelle destinazioni precedenti – esse vengono eseguite nell’ordine una alla volta), istanzio un tipo di risposta altrimenti un’altra.
Il cuore di tutto è l’oggetto di Mirth responseMap che mi permette di modificare quel messaggio di risposta del metodo di default acceptMessageResponse che avevamo lasciato in sospeso nel primo punto. Il valore che questa variabile può assumere non è una stringa ma un oggetto che viene inizializzato dal metodo ResponseFactory.getSuccessResponse(ack) in caso di OK, oppure dal metodo ResponseFactory.getFailureResponse(ko) in caso di KO (ack e ko invece sono due stringhe che definisco io all’inizio dello script). La presenza dell’istruzione responseMap.put() in questo script mi fa comparire la voce acceptMessageResponse nella tendina di selezione Respond from del source! Il tutto è riportato in figura:
Mirth3_script
Come ultimo passaggio ecco come si presenta la chiamata al WS fatta da soapUI (a sinistra) e la response del servizio (a destra):
SoapUI MSG
Di soapUI ne parlo più avanti. Buona questa risposta nel forum di Mirth
Un oggetto curioso, come il nastro di Möbius che è una varietà di dimensione 2 non orientabile: sul nastro di Möbius una formica che parte da un certo punto del nastro, cammina cammina e si ritroverà nello stesso punto (perché il nastro è chiuso) ma dall’altra faccia del nastro.
Come farsi un nastro di Möbius in casa, stile ArtAttack: prendete un foglio di carta A4, un paio di forbici e della “colllla vinilica”. Tagliate una strisciolina larga 5 cm nel senso della lunghezza. Fatto? Bene! Prendete in mano la strisciolina tenendola per i lati corti e fate ruotare un lato di mezzo giro come quando si scartano le caramelle. Fatto? Bene! Adesso unite i due lembi e attaccateli con la “colllla vinilica”, ed avrete il vostro nastro di Möbius fatto in casa! 🙂
La bottiglia di Klein è un oggetto simile ma un po’ più complicato. Il filmato spiega bene come ci si possa costruire una bottiglia di Klein in casa, ma non bastano carta, forbici e colla vinilica. Si parte da un cilindro che però deve autointersecarsi vivendo noi in uno spazio a 3 dimensioni. Se fossimo in uno spazio a 4 dimensioni potremmo anche farlo senza che si autointersechi, ma questo è Universo 2.0.
La stranezza di questa bottiglia, dotata di una auto-intersezione, è che non ha un dentro ed un fuori. Mentre la distinzione tra dentro e fuori, nello spazio tridimensionale, è supportata dall’esperienza – normalmente sappiamo distinguere tra il dentro ed il fuori di un pallone da calcio: se vogliamo entrarci dentro, dobbiamo fare un buco -, essa invece non è così chiara in questo oggetto, visto che con continuità possiamo passare dall’esterno all’interno senza dover bucare la superficie.
Questa animazione al computer (quanta grazia i computer in queste cose! Fossero vivi Klein e Poincaré…) spiega come si costruisca una bottiglia di Klein a partire da un cilindro elastico (sulla indicazione dello stesso Felix Klein).
Inoltre, sezionando la bottiglia di Klein, si passa per deformazione continua (diffeomorfismo) ad un nastro di Moebius. Oppure, incollando due nastri si ottiene la bottiglia. Anche la bottiglia di Klein è una superficie (una varietà) di dimensione 2 non orientabile. Tutto visibile nell’animazione.
Dal 18 maggio Volunia si è presentato ai suoi power user con alcune novità.
Nel comunicato del team, si sono spiegati i motivi del silenzio stampa degli ultimi mesi e sono stati ringraziati gli utenti che hanno testato il sistema fornito una messe di segnalazioni. Sulla base di queste si sono decisi tre passi innovativi:
l’integrazione con un motore di ricerca commerciale per consentire un uso più estensivo delle funzionalità seek & meet, pur continuando a sviluppare il proprio motore di ricerca;
è stata rinnovata la grafica, resa meno grezza, anzi decisamente più accattivante, dalle segnalazioni degli utenti
è stato migliorato l’aspetto comunicativo aprendo un blog in cui lo staff riferirà regolarmente sugli sviluppi e sono stati precisati i documenti riguardanti termini e condizioni dell’uso del servizio e sul trattamento della privacy.
Il team di Volunia sta lavorando “con solerzia” per aprire a tutti il sito di ricerca sociale il 14 giugno 2012.
Yii è il frameword MVC del momento, lo sto studiando e mi sono preso la libertà di ripensare un po’ al pattern di sviluppo MVC secondo un contesto che mi ha aiutato a chiarire alcune cose sul suo funzionamento. Ho scritto questo articoletto per ricordarmi che questo modo di vedere le cose me le ha fatte capire un po’ meglio. E, magari, può servire a qualcuno.
Sempre nell’ambito della guerra degli acronimi, un dubbio lecito che può venire quando qualche software ci richiede Java a bordo (lecito visto che lo mettono in evidenza nel sito dell’Oracle quando si vuole scaricare un ambiente di sviluppo o di esecuzione) è:
Ho bisogno di JDK o di JRE?
Qui la semplice risposta dell’Oracle:
“What Java Do I Need?” You must have a copy of the JRE (Java Runtime Environment) on your system to run Java applications and applets. To develop Java applications and applets, you need the JDK (Java Development Kit), which includes the JRE.
Utilizziamo tecnologie come i cookie per memorizzare e/o accedere alle informazioni del dispositivo. Lo facciamo per migliorare l'esperienza di navigazione e per mostrare annunci personalizzati. Il consenso a queste tecnologie ci consentirà di elaborare dati quali il comportamento di navigazione o gli ID univoci su questo sito. Il mancato consenso o la revoca del consenso possono influire negativamente su alcune caratteristiche e funzioni.
Funzionale
Sempre attivo
L'archiviazione tecnica o l'accesso sono strettamente necessari al fine legittimo di consentire l'uso di un servizio specifico esplicitamente richiesto dall'abbonato o dall'utente, o al solo scopo di effettuare la trasmissione di una comunicazione su una rete di comunicazione elettronica.
Preferenze
L'archiviazione tecnica o l'accesso sono necessari per lo scopo legittimo di memorizzare le preferenze che non sono richieste dall'abbonato o dall'utente.
Statistiche
L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici.L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici anonimi. Senza un mandato di comparizione, una conformità volontaria da parte del vostro Fornitore di Servizi Internet, o ulteriori registrazioni da parte di terzi, le informazioni memorizzate o recuperate per questo scopo da sole non possono di solito essere utilizzate per l'identificazione.
Marketing
L'archiviazione tecnica o l'accesso sono necessari per creare profili di utenti per inviare pubblicità, o per tracciare l'utente su un sito web o su diversi siti web per scopi di marketing simili.
Commenti recenti