• informazione estesa sui cookie
  • privacy policy

Imola Informatica

~ Il blog

Imola Informatica

Archivi della categoria: Senza categoria

Semplicità e adattabilità del connettore Eclipse Mosquitto

11 Gen 2021

Posted by Riccardo Iattoni in Senza categoria

≈ Lascia un commento

Negli ultimi anni lo sviluppo tecnologico ha aperto nuove strade e nuovi orizzonti da esplorare.
Tra i tanti aspetti interessanti che si stanno consolidando, sicuramente l’IoT (Internet of Things) e i microservizi sono pronti a giocare un ruolo importante nei prossimi anni.
Anche se ancora oggi sono considerati come aree diverse nell’IT, prima o poi, questi due mondi saranno considerati due facce della stessa medaglia.
Entrambi, infatti, si occupano di sistemi distribuiti dove le principali differenze sono rappresentate dai protocolli di comunicazione utilizzati: i microservizi di solito si occupano del protocollo HTTP, mentre l’IoT è basato su altri protocolli come MQTT e CoAP.

In particolare, il protocollo MQTT è stato pensato e progettato appositamente per la comunicazione “machine to machine”. Le sue caratteristiche principali sono la semplicità e la leggerezza, caratteristiche ideali in contesti in cui è presente una piccola impronta di codice e una disponibilità di banda limitata.
Proprio grazie alle sue caratteristiche, MQTT sembra essere diventato uno standard de facto per la comunicazione tra dispositivi e quindi più in generale per tutto l’ecosistema IoT.
Il protocollo MQTT si basa su un classico meccanismo di pubblicazione e sottoscrizione (publish and subscribe). In questo pattern ci sono tre diversi soggetti che entrano in gioco nella comunicazione:
– Il publisher è un dispositivo (ad esempio un sensore) che desidera pubblicare dei messaggi;
– Il subscriber è un dispositivo (ad esempio un PC, uno smartphone) che desidera ricevere dei messaggi;
– Il broker è un software che si inserisce nel mezzo della comunicazione e che si occupa di gestire correttamente tutto lo scambio dei messaggi tra publisher e subscriber.

continua a leggere

L’anno della condivisione

04 Dic 2020

Posted by Luca Cappelletti in Senza categoria

≈ Lascia un commento

Negli anni passati abbiamo tentato più volte di organizzare attività di condivisione il venerdì mattina, senza raggiungere mai una partecipazione consistente. Non ci siamo arresi però e, come d’abitudine, abbiamo dato spazio alle idee delle persone che lavorano con noi. Nella primavera del 2019 un collega, Franco Melandri, ha proposto un incontro tra le 13 e le 14.30: l’azienda doveva solo offrire una pizza da asporto. Con un preavviso brevissimo ha raccolto il triplo dei colleghi che mi aspettavo.  Ma cosa c’era di davvero diverso?  Un contesto atipico, informale e open mind. Ma anche il momento e le modalità: la pausa pranzo, libera dagli impegni, e la partecipazione libera e volontaria. Era nato, così, il nostro primo Lunch&Learn.

continua a leggere

Le potenzialità e i vantaggi di JUnit 5

01 Apr 2020

Posted by Giorgio Valentini in Senza categoria

≈ Lascia un commento

Tag

JUnit5, Testing

Quante volte, nella vita di uno sviluppatore, ci si è trovati nella condizione di dover scrivere un test con una logica identica a quella di molti altri scritti in precedenza, in cui cambiavano solo alcuni dettagli come i parametri?
Una soluzione per evitare la ripetitività di queste situazioni è ora disponibile grazie a Junit 5.

Da Junit4 a Jupiter

JUnit è uno dei framework di test più utilizzati nel mondo Java.
Nel 2017, a undici anni dall’ultima major release, è stata rilasciata la versione 5, nota col nome di Jupiter. A differenza delle versioni precedenti, il framework è stato suddiviso in tre artefatti:
• Junit Jupiter, per contenere le API per definire i test
• Junit Vintage, per garantire la retrocompatibilità con la versione precedente di JUnit
• Junit Platform, per l’esecuzione dei test
Le novità riguardanti la parte di refactoring delle API di Jupiter sono spiegate nella documentazione ufficiale, mentre le più interessanti riguardano l’automatizzazione nella scrittura dei test, con l’introduzione di due macrocategorie: i test parametrizzati e i test dinamici.

Continua a leggere →

ZFS e container su Linux? Ecco come, su Ubuntu

12 Gen 2017

Posted by Filippo Bosi in Senza categoria

≈ Lascia un commento

Tag

DevOps

Volete ottenere una densità dieci volte superiore rispetto a quella delle virtual machine? E avere la possibilità di utilizzare funzionalità avanzate come block deduplication, copy-on-write o snapshot?
Ora è possibile senza rinunciare a Linux e all’Open Source.

Le prime prove che abbiamo effettuato in laboratorio sono molto promettenti.

Un container con Tomcat ed una web app girano in qualche centinaio di MB in memoria. E la partenza di un nuovo container richiede qualche secondo.

Fino ad oggi ZFS e i container erano supportati solo su sistemi operativi che derivavano da Solaris, ad esempio SmartOS.

Dal rilascio di Ubuntu 16.04, ZFS è supportato da Canonical. E il sistema di container lxd ne consiglia l’utilizzo.

Sfruttare i vantaggi di ZFS e dei container su Linux non è mai stato così semplice. Per configurare un sistema di container con ZFS è sufficiente digitare questi comandi:

$ sudo apt install lxd zfsutils-linux
$ sudo lxd init

Per chi fosse interessato ad approfondire l’argomento, ho trovato molto utili le informazioni fornite da questi siti:

Introduzione a lxc e lxd

ZFS is the FS for Containers in Ubuntu 16.04

Motore di ricerca semantico in ambito enterprise per facilitare la gestione delle informazioni

16 Feb 2016

Posted by giwordpress in Senza categoria

≈ Lascia un commento

Nella primavera del 2015 abbiamo effettuato una riunione con un nostro cliente storico per riprogettare alcune componenti del suo parco applicativo, che ha le seguenti caratteristiche:

  • applicativi differenti, ognuno con le sue informazioni (parco dati);
  • ogni applicativo gestisce le informazioni e il modo di reperirle in maniera differente;
  • l’utente deve conoscere i percorsi di ricerca specifici per ogni applicativo;
  • i dati sono disomogenei tra gli applicativi, di conseguenza per trovare o gestire una determinata informazione può rendersi necessario effettuare ricerche su più applicativi.

Nel corso della riunione è emersa l’idea di creare un motore ricerca semantico Google style per valorizzare e facilitare la gestione dell’enorme insieme di informazioni memorizzate e gestite dai vari applicativi:

  • oltre 1000 servizi;
  • applicazioni e integratori per un totale di 1200 installazioni;
  • oltre 13 milioni di anagrafiche.

Motore di ricerca Imola Informatica

Il motore di ricerca è una soluzione un po’ fuori dagli schemi:

  • l’utente ricerca un’informazioni sui dati di tutti gli applicativi contemporaneamente; è poi il motore di ricerca a suggerire all’utente su quali applicativi specifici è presente l’informazione ricercata.
  • è possibile, attraverso il motore di ricerca, aprire l’applicativo che gestisce o contiene l’informazione, facilitando e velocizzando il lavoro quotidiano dell’utente.

Per ottenere un risultato analogo si dovrebbe riprogettare ed integrare gli applicativi con costi decisamente superiori. Il motore di ricerca fornisce una nuova modalità di ricerca mantenendo le logiche di scrittura e l’indipendenza delle applicazioni.

Perché un motore di ricerca semantico? Le informazioni hanno un significato specifico all’interno degli applicativi di provenienza. Il motore di ricerca deve mantenere questa peculiarità e contemporaneamente utilizzarla per raggruppare e categorizzare le informazioni. Le tecnologie semantiche sono utili per raggiungere l’obiettivo in quanto, da un lato consentono di creare un modello di alto livello con all’interno tutti i significati attribuibili alle informazioni e dall’altro permettono di mappare sul modello le informazioni gestite dai sistemi, così da renderle omogenee per l’utilizzatore finale. Ad esempio, il concetto di anagrafica della persona è unico, ma le singole istanze sono trattate differentemente da applicativo ad applicativo (informazioni gestite, persistenza, … ): quando un motore di ricerca le indicizza, deve riconoscere che si tratta di anagrafiche di persona e, nel caso, di una stessa persona.

Il risultato ottenuto è una visione dei dati ad alto livello che mantiene allo stesso tempo l’eterogeneità delle fonti dei dati.

Il supporto dell’approccio semantico consente inoltre di mettere le informazioni in relazione le une con le altre. Ad esempio: una persona ha un indirizzo inerente ad una città; la città, a sua volta, è un concetto legato a molte altre informazioni . Si crea quindi un grafo navigabile di relazioni. Il grafo è estendibile senza modificare le informazioni indicizzate.

In questo modo è possibile eseguire ricerche su informazioni di tipo differente evitando la replicazione. Ad esempio: cercando “Imola”, si può ottenere Imola come città, ma navigando il grafo si possono ottenere tutte le aziende che hanno delle sedi a Imola e quindi le persone che vi lavorano.

Utilizzando un motore di ricerca tradizionale, si sarebbero potuti ottenere risultati analoghi mettendo in ogni blocco di informazioni anche le altre informazioni ad esso correlate, ad esempio indicizzando le anagrafiche assieme alle informazioni sulla città, l’azienda in cui si lavora e quant’altro. Senza il motore semantico le correlazioni sono pensate durante l’indicizzazione dei dati, con il supporto semantico occorre conoscere il modello e durante la ricerca navigare il grafo per un adeguato numero di livelli. Un’eventuale cambio di correlazioni porta da un lato a dover modificare tutti i dati indicizzati, dall’altro a cambiare solamente il modello semantico.

Le performance cambiano. Il supporto semantico risulta meno performante in quanto deve risolvere i livelli di navigazione del grafo. I dati sono denormalizzati in entrambi i casi, garantendo le prestazioni su grosse moli di dati. Si tratta di un piccolo costo da pagare per avere una elevata dinamicità nell’aggregazione dei dati.

Per il POC che abbiamo implementato abbiamo usato:

  • Virtuoso come storage (Triple Store), che fornisce anche un endpoint SPARQL;
  • SPARQL come linguaggio di interrogazione;
  • OWL / RDF come linguaggio per la modellazione delle informazioni di dominio (modello);
  • JAVA per il front-end.

Dal punto di vista architetturale Virtuoso rappresenta lo strato di persistenza, mentre il front-end Java implementa il layer di presentazione, in cui presentiamo dinamicamente le informazioni ricercate, un layer di logica applicativa che permette di attuare:

  • logiche di autorizzazione;
  • logiche autenticazione;
  • logiche di reperimento di dati per contestualizzare i risultati della ricerca;
  • un layer di accesso ai dati.

Per quanto riguarda la presentazione Google style delle informazioni, oltre ad elencare i dati e a creare i “link” per aprirli nei corrispondenti applicativi, è stato anche introdotto un sistema che mostra dinamicamente le informazioni correlate al singolo risultato della ricerca, in modo tale da contestualizzarlo, ampliarlo e facilitare quindi l’operatore nell’individuare l’informazione di suo interesse. Cercando ad esempio “Mario Rossi”, oltre al nome ed il cognome vengo mostrati il codice fiscale, il luogo di residenza e l’azienda pressa la quale lavora.

Motore di ricerca Imola Informatica - Risultati

Il Proof Of Concept (POC) è stato realizzato in 10-15 giornate, avendo una piena conoscenza del dominio. Il cliente ha apprezzato il POC, che verrà evoluto ampliando il numero di concetti all’interno del modello e la quantità di informazioni presenti, modificando di conseguenza l’interfaccia grafica.

 

Andrea Ravagli

Francesco Panico

Normanno Cacciari

Le motivazioni come motore del team di lavoro

30 Nov 2012

Posted by giwordpress in Senza categoria

≈ Lascia un commento

Gestire un team apre spunti di riflessione non solo sulle modalità di soddisfacimento degli obiettivi di progetto, ma anche su quelli personali del team.

Da qui, è compito del referente di progetto capire le motivazioni del proprio gruppo e di ciascun singolo, ponendosi l’obiettivo di soddisfarli, perché questo si coniuga con l’obiettivo di progetto, perché se il team è motivato farà meglio il suo lavoro!

Partirei da una distinzione fondamentale delle motivazioni: intrinseche ed estrinseche.

Le motivazioni intrinseche sono quelle naturali, basate sulla curiosità e sul il bisogno di esplorare l’ambiente alla ricerca di nuove informazioni e soluzioni. Importante per la motivazione intrinseca è, inoltre, la padronanza, cioè il bisogno di sentirsi sempre più competenti.

Le motivazioni estrinseche sono quelle dettate da un impegno in un’attività per scopi che sono estrinseci all’attività stessa, quali, ad esempio, ricevere lodi, riconoscimenti, buoni voti o per evitare situazioni spiacevoli.

Image

Notate queste caratteristiche trai propri membri del team, non sarà facile trovare il giusto compromesso tra le due; spingiamo su quelle intrinseche che mi ispirano parecchio.

La Self-determination theory (Deci, Ryan 2004) propone queste caratteristiche intrinseche:

Image

Competence: ciò che una persona dimostra di saper fare (anche intellettualmente) in modo efficace, in relazione ad un determinato obiettivo, compito o attività in un determinato ambito disciplinare o professionale [ Centro studi Erickson].

Autonomy: non è da intendere come il dover sapere fare tutto da soli, ma consiste nella capacità di saper ricavare le giuste informazioni dai giusti interlocutori, necessarie a portare avanti il proprio lavoro.

Relatedness: la capacità di sapersi relazionare non solo coi propri colleghi ma anche coi propri clienti,  al fine di riuscire a soddisfare gli obiettivi business e commerciali.

Notare come queste 3 caratteristiche siano strettamente correlate tra loro.

Da queste 3 caratteristiche sono state formulate altre teorie basate sulle motivazioni, sino ad arrivare alla definizione di quelli che sono i 10 Desideri dei membri del team (di cui 3 sono quelli sopra descritti):

Image

Feel accepted: sentirsi parte integrante del team, mediante la collaborazione con tutti e la condivisione delle proprie esperienze e del proprio background professionale;

Curiosity: trovare, anche di fronte ad un’attività noiosa, qualcosa di nuovo che possa stimolare la propria curiosità;

Honor: la squadra deve proporre le proprie regole di gioco (condivise dal referente), così saranno più facili da seguire;

Purpose: avere sempre obiettivi di breve, medio e lungo termine, non solo circoscritti al perimetro dell’attività che si sta portando avanti in quel periodo;

Order: recepire le norme aziendali sufficienti a consentire il buon vivere all’interno della propria organizzazione;

Influence: percepire ciò che sta accadendo intorno a noi, ascoltando ciò che hanno da dire gli altri e aiutarli col nostro contributo e col nostro carisma (avendo la fortuna di averlo;))

Status: capire il proprio valore all’interno dell’organizzazione.

New relase of Jbi4Corba and Jbi4Cics

02 Mag 2007

Posted by raffaelespazzoli in Senza categoria

≈ 1 Comment

Imola Informatica is pleased to announce the relase 0.2 of Jbi4Corba and Jbi4Cics, our binding components for integrating CORBA and CICS services into a JBI Enterprise Service Bus.
This release will be demoed at the JavaOne (San Francisco 8-10 May 2007) and is already included in NetBeans Enterprise installer as partner contribution.
The main features of this release are as follow:
Jbi4Corba:

  • Support for OpenESB
  • Netbeans plugin for using Jbi4Corba inside Netbeans Enterprise
  • Support for consumer mode
  • Support for i18n

Jbi4Cics:

  • Support for OpenESB
  • Netbeans plugin for using Jbi4Cics inside Netbeans Enterprise
  • Support for i18n

SCA e JBI: amici o nemici?

12 Apr 2007

Posted by giwordpress in Senza categoria

≈ Lascia un commento

Ultimamente c’è molto rumore attorno ai tentativi di standardizzazione legati al mondo SOA. I due standard più promettenti sembrano essere JBI e SCA (quest’ultimo recentemente trasferito a OASIS).

Si tratta di standard che spesso vengono presentati in contrapposizione, ma la realtà è diversa, come risulta evidente dall’analisi degli obiettivi che si pongono.

L’obiettivo di SCA è la definizione di un modello architetturale coerente con SOA e la specifica delle relative API. I componenti di SCA devono contenere logica di business (che può essere scritta utilizzando diversi linguaggi come Java, C++ e BPEL) e possono a loro volta essere composti per produrre ulteriore logica, collegati tramite binding standard. Si tratta quindi un modello estendibile per la costruzione e l’evoluzione dei sistemi informativi.

JBI invece, basandosi su un modello architetturale a bus (ESB), si occupa in maniera più specifica di integrazione. JBI non prevede un set di implementazioni “iniziali”: descrive due tipologie di componenti (binding component e service engine) che devono essere installabili su qualunque ESB JBI-compliant. Questo significa che, se si hanno esigenze di integrazione di qualunque tipologia, possono essere risolte procurandosi i componenti JBI adatti alle proprie esigenze. Un esempio di questo sono i componenti Jbi4Corba e Jbi4Cics sviluppati da Gruppo Imola.

In sintesi si tratta di specifiche sostanzialmente diverse (anche se entrambe basate su concetti SOA): JBI è orientato all’integrazione ed è meno vincolante di SCA che, dall’altra parte, si pone degli obiettivi più ambiziosi.

Non ci sono però reali sovrapposizioni! Si può tranquillamente ipotizzare in futuro di utilizzare sia SCA che JBI allo stesso tempo, ottenendo quindi i vantaggi di entrambi. Ad esempio, integrando servizi SCA su un bus attraverso un opportuno Service Engine JBI, potremmo avere i vantaggi del modello SOA di SCA uniti alla capacità di integrazione assicurata da JBI.

 

Meta

  • Accedi
  • RSS degli articoli
  • RSS dei commenti
  • WordPress.org

Category Cloud

Blogroll Complexity Digital Society English Enterprise2.0 Enterprise Architecture Enterprise Information Management Imola Industry 4.0 Infografica IT Management IT Transformation Linked Open Data Management Open Data Open Innovation Lab SemWeb Senza categoria Sicurezza SOA Strategy Università Web2.0

Post Recenti

  • Addio e grazie per tutto il pesce
  • A Lunch and Learn with Ballerina
  • Semplicità e adattabilità del connettore Eclipse Mosquitto
  • L’anno della condivisione
  • La didattica che insegna

Categorie

  • Blogroll
  • Complexity
  • Digital Society
  • English
  • Enterprise Architecture
  • Enterprise Information Management
  • Enterprise2.0
  • Imola
  • Industry 4.0
  • Infografica
  • IT Management
  • IT Transformation
  • Linked Open Data
  • Management
  • Open Data
  • Open Innovation Lab
  • SemWeb
  • Senza categoria
  • Sicurezza
  • SOA
  • Strategy
  • Università
  • Web2.0

Archivi

  • Aprile 2021
  • Marzo 2021
  • Gennaio 2021
  • Dicembre 2020
  • Luglio 2020
  • Giugno 2020
  • Aprile 2020
  • Marzo 2020
  • Gennaio 2020
  • Novembre 2019
  • Settembre 2019
  • Agosto 2019
  • Luglio 2019
  • Aprile 2019
  • Dicembre 2018
  • Settembre 2018
  • Agosto 2018
  • Luglio 2018
  • Giugno 2018
  • Maggio 2018
  • Febbraio 2018
  • Dicembre 2017
  • Novembre 2017
  • Settembre 2017
  • Agosto 2017
  • Luglio 2017
  • Giugno 2017
  • Marzo 2017
  • Febbraio 2017
  • Gennaio 2017
  • Novembre 2016
  • Ottobre 2016
  • Agosto 2016
  • Febbraio 2016
  • Dicembre 2013
  • Agosto 2013
  • Febbraio 2013
  • Gennaio 2013
  • Dicembre 2012
  • Novembre 2012
  • Febbraio 2012
  • Gennaio 2009
  • Marzo 2008
  • Gennaio 2008
  • Dicembre 2007
  • Agosto 2007
  • Maggio 2007
  • Aprile 2007
  • Marzo 2007
  • Febbraio 2007
  • Gennaio 2007
  • Dicembre 2006

Imola Informatica S.P.A. - via Selice 66/a 40026 Imola (BO) - P.I. 00614381200    Privacy e cookie