Installazione di Mirth Connect

Prerequisito: installazione della JVM

L’installazione non partirà nemmeno se l’installer non avvertirà la presenza di Sun JDK. Ho provato anche con OpenJDK, ma non c’è verso.

Prerequisito: installazione del driver JDBC Oracle

Scaricare un driver jdbc che si vuole dal sito dell’Oracle. Io ad esempio ho scaricato l’Oracle Thin Client per Oracle 10.2 e all’interno c’era già il file ojdbc14.jar.

Nella mia installazione il file con la libreria Java jdbc l’ho messo in

 /opt/oracle/instantclient_10_2

dove si trovano anche i tnsnames; questo percorso va inserito nella variabile di ambiente CLASSPATH:

  $ CLASSPATH=/opt/oracle/instantclient_10_2

Nota bene

Il client Oracle serve affinché i servizi possano interagire con un DB relazionale.

Anche Mirth stesso scrive le sue configurazioni in un database, e si può configurare una serie di db relazionali molto usati: MySQL, PostGRES, Oracle affiché esso salvi tutti i parametri per il suo funzionamento.

Mirth “out-of-the-box” utilizza un Db con poche pretese, giusto per valutare il prodotto: Apache Derby.

Altre informazioni

Ulteriori informazioni su Mirthconnect sono disponibili nel mio Wiki.

Come faccio a testare se Java funziona sul mio computer?

How do I test whether Java is working on my computer?

Ci sono diversi modi, uno semplice e simpatico è questo: http://ow.ly/7xGyF

 

i18n & l10n

Cosa significano queste sigle?

  • internationalization → i[ altre 18 lettere ]n → i18n
  • localization → l[altre 10 lettere]n → l10n

Fine della magia.

Stando al sito del Consorzio Web la localizzazione è la declinazione di un prodotto nella lingua (ma anche negli usi e costumi) di una particolare comunità (Italia, Catalogna, USA etc); l’internazionalizzazione è la integrazione di un software con un componente che permetta al prodotto di essere facilmente localizzato.

Misurare il software

Come si fa a misurare un progetto software? In chilogrammi? in metri cubi? Esiste una specifica unità di misura e un algoritmo per il calcolo. E anche un esempio su un progetto di Cloud Computing.

  • COCOMO: Constructive Cost Model è un modello matematico per la stima dei costi di realizzazione di una applicazione software, espressi in termini di tempo di consegna o di mesi-uomo per la loro realizzazione [Wikipedia]. Il CoCoMo può essere calcolato secondo tre gradi di raffinatezza crescente (Basic, Intermediate, Detailed) e viene espresso in KNCSS.
  • KNCSS: Kilo Non Commenting Source Statements, sono 103 linee di codice esclusi i commenti: è un’unità di misura della grandezza di un programma: conto le istruzioni (un’istruzione distribuita su più righe la conto una volta soltanto) escludendo i commenti [Wikipedia].

Come esempio: il Basic COCOMO è stato utilizzato per misurare la stazza del progetto OpenNebula, che è di circa 170 KNCSS e la stima in dollari è pari a $ 2,392,496 [Fonte: ohlho]. OpenNebula è un progetto Open Source di piattaforma per il  Cloud Computing.

hg Mercurial: sistema di versionamento ad alte prestazioni

Mercurial Logo Fantastico! Provengo da CVS (Concurrent Versioning System) e ho trovato questo sistema di versionamento, per dirla coi matematici, un meraviglioso prolungamento analitico di CVS: l’interfaccia testuale è molto simile (gli usuali comandi di init, add, commit, log, eccetera).

sito: http://hgbook.red-bean.com/ , oppure qui per un bellissimo ground-up tutorial).

hg è un sistema di versionamento multi repository che permette di lavorare su più ambienti che possono fondersi con una operazione di merge in un repository centrale.

Cos’è un sistema di versionamento concorrente? E’ uno strumento software che permette di gestire senza errori la produzione di documenti (tipicamente codice di programmazione, ma non esclusivamente) scritti a molte mani, tipica situazione per gruppi che sviluppano uno stesso progetto software e nel quale ogni programmatore può intervenire sul lavoro di altri (ad esempio: correggere un bug, aggiungere una funzionalità, eccetera). Come fare in modo che le modifiche di ognuno non sovrascrivano quelle degli altri? Si usa un sistema di versionamento.

Cosi Marco può rilasciare una versione 0.1, Alessio può accorgersi ci un bug e correggerlo, rilasciando una versione 0.2, e quando Marco torna a lavorare sullo stesso file, ripartirà dalla versione senza bug, per produrre la sua versione 0.3 e così via; si può anche lavorare contemporaneamente sullo stesso file e il sistema di versionamento deve avvertire i concorrenti in casi di conflitti e deve segnare tutte le modifiche secondo uno storico che possa anche permettere di ripartire da un punto precedente che era noto funzionare. Questo sistema consente anche di effettuare i cosiddetti fork, ovvero delle derivazioni in cui il software iniziale prende una strada indipendente ad esempio perché la versione che si va a sviluppare è verticale per una determinata architettura hardware, pure essendo lo stesso software.

Yii framework: sviluppo rapido secondo il pattern MVC e PHP 5

Yii è un framework PHP opensource per lo sviluppo di applicazioni Web 2.0.

Tra le features che lo rendono il framework di punta: adozione del pattern MVC, DAO/ActiveRecord, I18N/L10N, caching, autenticazione a controllo accesso role-based, scaffolding, testing, ecc.

In linea di principio lo sviluppo è rapido attraverso questi semplici passi:

  1. tu crei il database;
  2. Yii genera il codice PHP di base;
  3. tu personalizzi il codice per soddisfare le tue specifiche necesssità.

Il pattern MVC (ho già scritto di questo qualche tempo fa) permette di separare dati/business (M) da logica di controllo (C) e dalla presentazione (V).

Coorperazione applicativa con Mirth, puntata 1

Dopo aver fatto un po’ di training sono in grado di spiegare un po’ meglio cos’è e come funziona Mirth.

Mirth è un software che assomiglia molto ad un PLC: elaboro una serie di input (sorgenti) e produco una molteplicità di output (destinazioni) in modo sincrono con la frequenza di scansione del programma. Ovvero ad ogni colpo di clock faccio una istantanea degli ingressi ed elaboro i valori delle uscite; se nel corso della scansione i valori cambiano non me ne curo.

Entrambi sorgenti e destinazioni possono essere webservice, database, file di testo… varie combinazioni:

  • leggo da un database, scrivo su un webservice
  • leggo da un webservice, scrivo su un servizio HL7
  • leggo da un servizio HTTP, scrivo su database e su file di testo…

Al pari della frequenza di scansione degli ingressi dei PLC, anche Mirth ha una frequenza di polling che però può essere impostata in modo indipendente da sorgente a sorgente.

Un’applicazione Mirth si compone di canali che sono processi che leggono da un insieme di sorgenti, eseguono una serie di operazioni (trasformazioni e filtri) e producono degli output su una o più destinazioni.

Esempio: scrivo in una istanza di Oracle, in un certo host, la temperatura registrata da un webservice ipotetico messo a disposizione da www.ilmeteo.it. In questo caso, definisco un nuovo canale che chiamerò “Temperature giornaliera delle ore 13” (nella scheda Summary) definendo una frequanza di polling in millisecondi, poi nella scheda Source definisco il tipo di connettore (in questo caso SOAP o HTTP Listener), scrivendo ad esempio l’indirizzo, il metodo di trasmissione GET/POST eccetera; infine, nella scheda Destinations definirò un connettore Oracle 10g Release 2, scriverò un template di SQL che verrà valorizzato con le variabili di canale (analogamente al PLC, è possibile definire delle variabili interne con uno scope variabile, da utilizzare a livello di canale, di singolo connettore o di tutta l’applicazione – globale).

Da un punto di vista generale è così che Mirth funziona.

Elettrotecnica ed Elettronica

Un mio caro amico, insegnante di Meccanica in un Istituto Navale, mi ha chiesto con una domanda secca che differenza esista tra Elettrotecnica ed Elettronica. Cose a cui di solito non si pensa. Al di là delle definizioni ufficiali e forbite che di certo già si trovano in letteratura, voglio provarmi nel dare una mia definizione.

Elettrotecnica

Elettrotecnica: produzione, trasporto, trasformazione, utilizzazione dell'energia elettrica
Credit:TebNad – Fotolia

L’Elettrotecnica si occupa della tecnologia della produzione, del trasporto, la trasformazione e dell’utilizzazione dell’energia elettrica per e a beneficio di macchinari ed apparati elettromeccanici ed elettronici.
In sostanza l’Elettrotecnica si occupa di mettere in pratica i modelli e le equazioni dell’Elettromagnetismo classico nell’analisi e nella progettazione di impianti elettrici, macchine elettriche (trasformatori, alternatori, motori a corrente continua o alternata, dinamo),  dispositivi di sezionamento e di distribuzione dell’energia.

Elettronica

Elettronica: analisi e sintesi di dispositivi e circuiti su scala micrometrica
Credit: CC0 Public Domain

L’Elettronica si occupa della tecnologia per l’analisi, la sintesi e la produzione di dispositivi che sono di supporto a tutte le attività umane (anche all’Elettrotecnica). E’ propriamente una branca della Fisica che si occupa del funzionamento e la progettazione di dispositivi che si situano, nel senso della scala di grandezza, a livello più basso dell’Elettrotecnica, occupandosi di come funziona la materia stessa su scala nanometrica per poter realizzare, a queste dimensioni, dispositivi elementari come diodi, transistor, componenti passivi e interi circuiti anche molto complessi come i microprocessori, o dispositivi per l’I/O e la memorizzazione come DVD, hard disk, USB/SD card, monitor LED, o i sensori e gli attuatori (convertitori tra grandezze fisiche ed elettriche).

In sostanza l’Elettronica si occupa di mettere in pratica i modelli e le equazioni della Meccanica Quantistica in dispositivi come quelli menzionati. L’armamentario matematico che si utilizza in Elettronica è in parte mutuato dall’Elettromagnetismo classico (ad esempio l’adozione di circuiti lineari equivalenti, che rappresentano linearizzazioni dei modelli non lineari attorno al punto di funzionamento) ma in determinate situazioni (ad esempio quando si studia come funziona una giunzione pn) occorre affrontare lo studio dei modelli con le equazioni di continuità e la statistica di Fermi.

Dal punto di vista pratico, il discrimine tra le due discipline è spesso molto sfumato. Per un impianto fotovoltaico possiamo dire in modo molto grezzo, ad esempio, che dalla cella fotovoltaica all’inverter è Elettronica, mentre dall’inverter alla rete elettrica nazionale è Elettrotecnica. Ma poi la distinzione è molto imprecisa, in quanto per esempio anche il contatore può essere elettronico. La stessa cosa si può pensare per i motori passo-passo, una macchina elettrica (motore a induzione) che viene fatta funzionare in stretto collegamento con un dispositivo elettronico (un generatore di impulsi che la fa ruotare).

Link utili

Brian Kernighan e il suo modo di fare debugging

Leggo con sorpresa nel sito dell’Apache Group, a proposito di log4j, un tool che permette di far loggare in modo controllato una applicazione che gli colleghiamo, che Brian Kernighan (l’autore del famosissimo The C Programming Language, con Dennis Ritchie, inventore dello stesso linguaggio C) preferisce vedere l’output dell’applicazione per controllarne il comportamento e gli errori, piuttosto che usare i debugger.

Letteralmente (tratto da “The Practice of Programming”, con Rob Pike, Addison-Wesley Professional, 1999)

As personal choice, we tend not to use debuggers beyond getting a stack trace or the value of a variable or two.

One reason is that it is easy to get lost in details of complicated data structures and control flow; we find stepping through a program less productive than thinking harder and adding output statements and self-checking code at critical places.

Clicking over statements takes longer than scanning the output of judiciously-placed displays. It takes less time to decide where to put print statements than to single-step to the critical section of code, even assuming we know where that is.

More important, debugging statements stay with the program; debugging sessions are transient.
(Fonte)

Io, da quando programmo per il web, uso questa modalità: sinceramente, pensavo di essere un troglodita ma sono felice di vedere che sono in buona compagnia!

OPERA e i neutrini più veloci della luce

Al di là del rumore destato dall’entusiasmo del Ministro dell’Istruzione per la scoperta, mi pare di poter sottoscrivere la consueta correttezza del mondo dei fisici davanti a dei risultati che mettono in discussione un secolo di Fisica e la reputazione di una intera categoria di ricercatori.

Il portavoce scientifico dell’esperimento OPERA dell’INFN, Antonio Ereditato, ha dichiarato che «considerando le straordinarie conseguenze di questi dati, si rendono necessarie misure indipendenti prima di poter respingere o accettare con certezza questo risultato. Per questo motivo la collaborazione Opera ha deciso di sottoporre i risultati a un esame più ampio nella comunità» [Fonte]

Nel video seguente l’ottima spokeswoman italiana del CERN Paola Catapano, illustra l’esperimento congiunto tra CERN e INFN (Fonte).

Si può dire che è, se confermata, una situazione molto simile a quella in cui dovette trovarsi nel 1900 Max Plank, quando la curva di emittenza spettrale del corpo nero andava contro la teoria elettromagnetica di Maxwell (che prevedeva la cosiddetta catastrofe ultravioletta). Con un atto di disperazione (come lo definì egli stesso) fu costretto, per poter giustificare la realtà, ad inventare i quanti.

Il mio professore di Fisica II, Massimo Nigro, mi insegnava che tutto si spiegava mettendo le sommatorie al posto degli integrali 🙂