Visualizzazione post con etichetta Framework. Mostra tutti i post
Visualizzazione post con etichetta Framework. Mostra tutti i post

venerdì 18 dicembre 2015

Cos'è il Blockchain (Block Chain)


Il Block Chain (letteralmente Catena di Blocchi) è un registro pubblico e condiviso che contiene tutte le transazioni effettuate in Bitcoin
Visto come un nuovo importante protocollo di trasmissione e memorizzazione dei dati, essendo continuamente ricondiviso da tutti i client partecipanti alla rete bitcoin rappresenta la prova di tutte le transazioni, il blockchain è in costante crescita in quanto vengono sempre aggiunti nuovi Blocks per registrare le movimentazioni. 

Un Block (Blocco) è l'anello della catena, quando viene completato con l'inserimento delle informazioni relative alle transazioni recenti, viene chiuso e non è più modificabile. 
Successivamente viene quindi generato e collegato alla catena un nuovo blocco, contenente un identificativo del blocco precedente, alimentando così una banca dati lineare con tutte le operazioni in ordine cronologico.



Per fare un'analogia con i processi bancari tradizionali, il blockchain è come una storia completa delle operazioni bancarie: le transazioni in bitcoin sono gestite cronologicamente come le transazioni bancarie. Mentre i Blocchi possono essere assimilati ad estratti conto di operazioni fatte in determinati spazi temporali.

Vengono chiamati Nodes (Nodi), tutti i computer che partecipano alla rete Bitcoin e che svolgono il compito di convalidare e di ricondividere il blockchain.
Ciascun Nodo utilizza un programma client che riceve automaticamente una copia integrale del blockchain con le informazioni di tutte le movimentazioni contenute, a partire dal primo blocco (Genesis Block) fino a quello completato più di recente.

Questa continua condivisione su tutti i client in rete, di fatto valida tutte le transazioni e ne diventa il database storico distribuito.

Considerando che in media viene creato un nuovo blocco ogni 10 minuti, la dimensione sempre crescente del blockchain è una delle criticità che dovranno essere gestite in futuro, potrebbero infatti nascere problemi di spazio per la memorizzazione e sincronizzazione.


domenica 29 marzo 2015

Ma 'ndo vai se il Big Data non ce l'hai ?

Stiamo vivendo gli anni del Big Data e del Cloud, in questo periodo storico qualsiasi soluzione informatica sembra non poterne fare a meno, soprattutto a livello commerciale e comunicativo però.

Ormai ne parlano tutti, non si può realizzare ma soprattutto vendere o comprare un'architettura software che non abbia questi 2 aspetti ben evidenti.  Chi non lo fa è out.
Una spruzzata qua e la di Big Data e Cloud ci sta sempre bene, serve per far vedere che si sta sulla cresta dell'onda, che si seguono le nuove tecnologie e le tendenze del mercato, poi chissenefrega se invece in quel caso non servono.

Siamo arrivati al punto in cui per registrare 1000 records e farci qualche conteggio statistico sopra, si parla di Big Data ed Analitycs (ecco un'altra parola magica di questi anni), il tutto possibilmente in Cloud.

Sono le mode del mondo IT, chi ci vive da sempre ha imparato a riconoscerle e anche a sfruttarle.

Nel periodo a cavallo tra il vecchio ed il nuovo secolo si parlava solo di Data WareHouse, un qualsiasi database veniva descritto come DWH, non importava se ne avesse effettivamente le caratteristiche, l'importante era utilizzare questa locuzione difficile per enfatizzare il tutto.

Poi a seguire sono arrivate l'EAI (Enterprise Application Architecture), la SOA (Service Oriented Architecture) e la BI (Business Intelligence) che, oltre a imporre realmente nuove tecnologie e metodologie strutturate, sono servite a riempire, troppo spesso anche a sproposito, presentazioni ed articoli per più di un decennio.

Fa comodo a tutti dare enfasi a prodotti, soluzioni ed architetture utilizzando termini cool di ampio respiro, aiuta a vendere ma anche a comprare.

Poi, come tutte le mode passano e di queste tecnologie diventa difficile anche parlarne quando invece servono effettivamente e devono essere utilizzate.
Ci sarà sempre qualcuno che ti dirà "io di queste cose ne parlavo 10 anni fa" presupponendo quindi una tua scarsa visione innovativa, allora è sempre meglio proporre quello che gli interlocutori si aspettano e vogliono sentirsi dire, anche se le soluzioni non sono completamente appropriate al contesto.

I veri professionisti ed amanti dell'Information Technology sanno riconoscere dopo pochi minuti chi parla con cognizione di causa e coloro che invece si riempiono la bocca con tematiche più grandi di loro per sentirsi adeguati. Quest'ultimi non bisogna mai contraddirli, basta guardarli e sorridere, in cuor loro sanno che tu sai.

Image courtesy of photoexplorer at FreeDigitalPhotos.net






lunedì 31 marzo 2014

Open Source non vuol dire Free o Gratis

Si leggono spesso notizie tipo "l'università non ha più fondi e sceglie programmi open source", "nella pubblica amministrazione arriva l'open source", "l'open source azzera i costi", ecc., tutte affermazioni che tendono a far credere che Open Source significhi risparmio economico e basta, cosa di fatto sbagliata o quantomeno incompleta.

Per certe tipologie di software, ad esempio programmi Office, il principio opensource=gratis può essere considerata vero in assoluto. Quando si decide di usare OpenOffice o LibreOffice sul proprio PC, a ben pochi importa se si può vedere il codice o se si può entrare nella community per partecipare allo sviluppo, alla maggioranza interessa solo che sia funzionale e gratis.

Le cose possono cambiare per i software aziendali, applicativi in grado di gestire processi e funzionalità server all'interno di uno scenario IT più complesso.

Image courtesy of cuteimage / FreeDigitalPhotos.net

Open Source e scelte enterprise

Si fa molta confusione.
Associare il termine Open Source (codice sorgente aperto) al fatto che un software sia Libero e Gratuito è un errore in quanto non è sempre vero che le cose vadano insieme. 
Avere a disposizione il codice sorgente di una applicazione informatica non è detto che ne autorizzi l'utilizzo gratuito in qualsiasi circostanza oppure la ridistribuzione libera.

Bisogna anche smontare l'assioma che software Free significhi sempre risparmiare. Come già detto, sicuramente è così per i programmi da PC, ma non sempre la cosa vale per le applicazioni aziendali.
Infatti, oltre ai costi di licenza vanno considerati anche quelli accessori per i servizi professionali necessari alla installazione, integrazione e manutenzione evolutiva del sistema.
Può essere una brutta sorpresa selezionare un applicazione open source e free per poi accorgersi successivamente che bisogna pagare una società software integrator per personalizzarlo e metterlo in funzione, mentre magari acquistando un prodotto di mercato si riesce ad ottenere l'assistenza ed il supporto necessario del software vendor.

In molti casi, se si va ad approfondire soprattutto quando si parla di sistemi operativi, databases e application servers ed in generale di BSS (Business Support System), non si riesce più a distinguere fino in fondo le differenze che un cliente ha scegliendo tra open e non open:

  • i proprietari sono gli stessi, 
  • il supporto e la garanzia a cui una azienda non può rinunciare sono a pagamento, 
  • la community di sviluppatori è affiancata da una corporate (vendor/integrator) che certifica e propone ai clienti il prodotto con una normale azione commerciale B2B.

Anche sul piano tecnico ormai le cose non sono più così in antitesi, infatti dietro a quasi tutte le community più affidabili e conosciute ci sono da tempo i soliti colossi che ne utilizzano il lavoro (librerie, framework, ecc.) anche per includerlo embeddeb nelle loro proposte commerciali di punta.

Un altro errore è credere che un software proprietario o di mercato sia sempre a pagamento:

  • i programmi detti freeware e shareware sono concessi gratuitamente dal software vendor; 
  • nel caso di applicazioni di tipo enterprise, quando lo scopo commerciale è vendere servizi professionali a corredo del prodotto, il software vendor può anche decidere di concedere gratuitamente al proprio cliente la licenza d'uso ed addirittura su richiesta includere nel contratto il codice sorgente per evitare il vendor lock-in (dipendenza da un fornitore).

A livello aziendale quindi, la valutazione sulla opportunità di scegliere una soluzione applicativa Open Source rispetto ad una di mercato non può essere basata solo sugli aspetti economici, ma deve considerare i seguenti parametri:

  • la qualità: le soluzioni open source hanno ormai raggiunto standard elevati (chiaramente vanno valutate caso per caso) e dettano sicuramente i trend informatici anche rispetto alle soluzioni proprietarie;
  • il livello di maturità: l'affidabilità e la stabilità della piattaforma/framework;
  • la roadmap evolutiva:  la capacità della community di sviluppatori di migliorare la piattaforma e farla evolvere in futuro (evoluzione funzionale, compatibilità con nuovi sw di base, protocolli e configurazioni hw);
  • il supporto ed il livello di assistenza (SLA - Service Level Agreement) che possono garantire la community o la corporate parallela;
  • i costi accessori necessari per i servizi professionali per: 
    • integrazione inziale nel contesto progettuale;
    • per le future evoluzioni;
    • per il supporto tecnico e la garanzia.


Licensing

Le combinazioni possibili sull'utilizzo di un software sono moltissime, alla base di tutto c'è il licensing, cioè le condizioni con cui il proprietario o detentore dei diritti d'autore ne regola l'utilizzo definendo il regime giuridico di circolazione e le eventuali limitazioni.

Una licenza software è di fatto un contratto d'uso che può essere sottoscritto in maniera esplicita, ad esempio se si acquista un programma con un normale contratto, oppure implicita, accettata cioè nel momento in cui si effettua il download o l'installazione dopo averne letto le condizioni (ma chi lo fa ?).

Esistono diverse licenze di riferimento a cui ogni software può essere associato, tuttavia ciascun proprietario può di fatto personalizzarla un po' come vuole.

Per avere una visione più chiara riguardo alle tipologie di software e relative licenze, consiglio di dare un'occhiata qui:  https://www.gnu.org/philosophy/categories.it.html .


Image courtesy of Stuart Miles / FreeDigitalPhotos.net

martedì 24 settembre 2013

Il valore di un Framework software

In informatica, un Framework software e' lo scheletro di un'applicazione che deve essere esteso e customizzato per ottenere la soluzione specifica ad un dato problema riguardante un ambito applicativo.

L'utilizzo di un framework impone allo sviluppatore una precisa metodologia di implementazione del software facilitandone nel contempo il lavoro:  si e' sollevati dalla necessità di rifare molte funzionalità comuni dato che vengono fornite dalle componenti di base del framework stesso (infrastruttura) e ci si può concentrare maggiormente sui problemi riguardanti lo specifico scenario in esame e le funzionalità applicative richieste.

Un framework è sicuramente sempre estendibile seguendo le direttive ed i modelli di programmazione pre-definiti (pattern)  e, se il codice è OpenSource, è anche customizzabile nei suoi moduli fondamentali chiamati Engine o Core.

L'arricchimento delle funzionalità del framework avviene seguendo le specifiche e sviluppando i moduli software di cui si ha bisogno, le nuove implementazioni ereditano la filosofia di funzionamento dei moduli Core.
Le caratteristiche principali di un buon framework sono:
  • il livello di maturità della infrastruttura Core
  • il rispetto degli standard, dei protocolli e delle best practices di quell'ambito tecnologico ed applicativo
  • l'alta configurabilità (configuring, not coding)
  • la facilità con cui si riescono a realizzare ed aggiungere i nuovi moduli (plugin)
  • la chiarezza e la completezza dei pattern
  • le facilities di contorno (debugging, monitoring, logging, console, ecc.)
  • la qualità della documentazione fornita che ne facilità l'uso
  • l'esistenza di un supporto tecnico o di una community di sviluppatori a cui rivolgersi
  • l'esistenza di una roadmap evolutiva che prevede anche l'adeguamento verso le nuove versioni del software di base
  • la retro-compatibilità delle nuove versioni.
Ad oggi, esistono Framework applicativi di tutti i tipi, per tutti gli ambiti applicativi e tecnologici a diversi livelli di qualità e maturità.
La maggior parte nascono e vengono evoluti in un contesto di community OpenSource ma i più consolidati sono spesso utilizzati esplicitamente o re-impacchettati anche all'interno di soluzioni commerciali di tipo Enterprise in ambito Business.

Image courtesy of Stuart Miles / FreeDigitalPhotos.net

Perchè odio i frameworks

(libera traduzione del post “Why I hate frameworks” di BenjiSmith  http://discuss.joelonsoftware.com/?joel.3.219431.12)

Attualmente sto pianificando la realizzazione di una applicazione web in Java (deve essere Java per una serie di ragioni che non ho voglia di raccontare in questo momento).
In relazione alla suddetta attività, sto valutando una serie di portlet J2EE-enabled JSR-compliant MVC role-based CMS web service application container frameworks.

Dopo aver speso decine di ore a leggere lunghi elenchi di funzionalità e tanta tanta documentazione, sono pronto a storcere il naso nell’utilizzo di un framework.
Per spiegare i miei dubbi in tal senso, procedo con un esempio: facciamo finta che io abbia deciso di costruire un Portaspezie.

In passato ho fatto piccoli lavoretti con il legno e quindi credo di avere un'idea abbastanza precisa di quello che mi serve, un po’ di legno e altri strumenti fondamentali: un metro, una sega, una livella e un martello.
Se dovessi costruire una intera casa piuttosto che un portaspezie, tra le altre cose avrei ugualmente bisogno di un metro a nastro, di una sega, di una livella ed un martello.

Quindi vado al negozio di ferramenta per comprare gli strumenti e chiedo al commesso dove posso trovare un martello.

"Un martello?" chiede sorpreso il commesso, "Nessuno compra più martelli. Sono una cosa vecchio stile, ormai superata. "

Io, basito da questa affermazione, gli chiedo perché.

"Beh, il problema con martelli è che possono essere di tanti diversi tipi: mazzette, martelli artigliati, martelli a rotondi, ecc.. Cosa succederebbe se, dopo aver comprato un tipo di martello, vi rendeste conto che avevate bisogno di un altro tipo ? Dovreste comprare un altro martello per fare il vostro lavoro.
Come abbiamo riscontrato, la maggior parte dei clienti vorrebbe un singolo martello universale in grado di andare bene per tutti i tipi di lavoro".

"Hmmmmmm. Bene, posso essere d’accordo. Puoi dirmi dove posso trovare un martello universale ?"
"No, noi non li vendiamo più. Sono obsoleti."

"Davvero?!!?? Anche questi ?!?!? Ma mi sembra di aver capito che mi hai appena detto che il martello universale è la cosa più richiesta per poter fare anche in futuro lavori di tutte le tipologie".

"Si, ma come abbiamo riscontrato, se avessi un solo tipo di martello universale in grado di eseguire tutte le operazioni fattibili con tutti i diversi tipi di martelli, non sarebbe in effetti specifico per nessuna di esse.
Per esempio, mettere un chiodo con un mazza non è molto efficace oppure se volete uccidere la vostra ex-fidanzata non c'è davvero niente di meglio di un martello con la testa arrotondata ".

"OK, quindi se nessuno compra più martelli universali e voi non state più vendendo i vecchi tipi di martelli di una volta, che tipo di martelli vendete? ".

"In realtà, noi non vendiamo martelli per niente".

"Quindi ...".

"Secondo la nostra ricerca, quello di cui la gente ha davvero bisogno, dopo tutto non è un martello universale dato che è 'sempre meglio avere il giusto tipo di martello per ciascun lavoro.
Quindi, abbiamo iniziato a vendere fabbriche di martelli in grado di produrre qualunque tipo di martello che potrebbe essere utile.
Tutto quello che devi fare è riempire la fabbrica con i lavoratori, attivare le macchine, comprare le materie prime, pagare le bollette e ... avrai esattamente il tipo di martello che ti serve".

"Ma io non voglio comprare una fabbrica di martelli ...".

"Giusto !! E’ per questo che noi non le vendiamo più.".

"Come ?!??!?!    Ma... io pensavo di aver capito che ....".

"Si, ma abbiamo scoperto che la maggior parte delle persone non ha effettivamente bisogno di un’intera fabbrica di martelli. Alcune persone, per esempio, non hanno mai bisogno di un martello con la testa rotonda (forse non hanno mai avuto ex-fidanzate o forse le uccidevano con le pinze per ghiaccio),
quindi non c'è alcun motivo per chi compra una fabbrica di martelli di produrre ogni tipo di martello".

"Certo, quello che dici è sensato".

"Così, abbiamo iniziato a vendere Template di fabbriche di martelli, permettendo ai nostri clienti di costruire le loro fabbriche di martelli, personalizzando i progetti al fine di produrre solo i tipi di martelli di cui hanno effettivamente bisogno. ".

"Lasciami indovinare.... ora non vendete più neanche i template".

"No, certo che no. A quanto pare, la gente non vuole progettare e personalizzare un’ intera fabbrica solo per costruire un paio di martelli ".

"Mi pare chiaro".

"Quindi abbiamo smesso di vendere i template ed iniziato a vendere fabbriche di fabbriche di martelli. Ogni fabbrica di fabbriche di martelli è realizzata per voi dai migliori esperti in fabbrica di fabbriche di martelli, quindi per il cliente non c'è bisogno di preoccuparsi di tutti i dettagli che servono nella costruzione di una fabbrica.
In questo modo, i clienti hanno ancora tutti i benefici di avere una propria fabbrica di martelli al fine di produrre i propri martelli personalizzati secondo le proprie specifiche, ma non hanno problemi di progettazione e realizzazione".

"Beh, ma poi....".

"So cosa stai per dire!! ... Che noi non vendiamo più neanche quelle.
Infatti, per qualche ragione, non molte persone hanno acquistato le fabbriche di fabbriche di martelli, così siamo arrivati ​​a una nuova soluzione per affrontare il problema".

"Dimmi dimmi".

"Abbiamo fatto un passo indietro e guardato l'infrastruttura globale, stabilendo che le persone erano frustrate dal dover gestire una fabbrica di martelli, nonché la fabbrica di fabbriche che l’ha prodotta.
Questo tipo di sovraccarico può diventare molto pesante quando bisogna gestire analoghe situazioni di fabbriche di fabbriche di metro a nastro, fabbriche di fabbriche di seghe, fabbriche di fabbriche di livelle.
Quando abbiamo analizzato la situazione, abbiamo determinato che questo è troppo complesso per chi davvero vuole solo costruire un portaspezie ".

"Sì, condivido".

"Così questa settimana, stiamo introducendo un strumento generico, la fabbrica di fabbriche di fabbriche, in modo che tutte le tue fabbriche di fabbriche di utensili possano essere prodotte da una singola, unica fabbrica.
La fabbrica di fabbriche produrrà solo le fabbriche di fabbriche di cui si ha veramente bisogno e ciascuna di queste fabbriche di fabbriche produrrà una singolo fabbrica in base alle specifiche da voi fornite riguardo allo strumento personalizzato.
Alla fine, gli strumenti che usciranno da questo processo, saranno gli strumenti ideali per lavorare al vostro particolare progetto. Avrete esattamente il martello che vi serve ed esattamente il metro giusto per il vostro scopo, il tutto con la semplice pressione di un pulsante (anche se potrebbe essere necessario valorizzare alcuni files di configurazione per far funzionare il tutto secondo le vostre aspettative). ".

"Quindi non ci sono martelli? Niente? Neanche un avanzo di magazzino ?".

"No. Se si vuole veramente produrre qualcosa alta qualità, ad esempio un portaspezie realizzato industrialmente, hai disperatamente bisogno di qualcosa di più avanzato di un semplice martello preso in un negozio di ferramenta ".

"Chiariscimi bene, questo è quello che tutti stanno facendo ora ? Tutta la gente usa un general-purpose tool-fabbrica di fabbriche di fabbrica ogni volta che hanno bisogno di un martello? ".

"Sì".

"Beh ... Va bene. Credo che è quello che dovrò fare. Se questo è il modo con cui le cose vanno fatte, credo che sia meglio imparare a farlo".

"Buon per te!".

"Scusami ancora, con questa tool fabbrica di fabbriche di fabbrica di...... viene fornita la documentazione, giusto ?".

Giorni dopo l’acquisto....

Ora che sono l'orgoglioso proprietario del mio general-purpose tool-fabbrica di fabbriche di fabbrica, sono soddisfatto di sapere che esso soddisfa con il progetto 0,97 specifiche GPTBFFF RC2 per lo strumento di costruzione fabbrica di fabbriche.
Per fortuna, il 70% dei lavoratori nel Tool-Oriented Metafactory Union sono certificati con questa versione di specifiche.
All'orizzonte però c’è uno standard concorrente: il molto convincente metafactory technology chiamato UXCTBFFF (Universal Trans-Continental strumento per la creazione FFF), che promette di unificare la fabbrica fabbrica industria fabbrica per rispettare le linee guida dei paesi che utilizzare entrambi gli strumenti metrici e standard.
La mia comprensione è che ci sarà un service pack al mio GPTBFFF0,97 RC2 per portare in quasi il 95% di conformità con il UXCTBFFF standard, semplicemente creando un livello di astrazione attraverso la sua facilità di utilizzo dell’interfaccia.
Grandioso !!
Sicuramente questo nuovo sviluppo migliorerà la qualità del mio portaspezie.
(che dovrò in effetti costruire uno di questi giorni, appena avrò in esecuzione la mia fabbrica fabbrica di fabbriche, la mia forza lavoro addestrata, le mie materie prime importate dalla Cambogia, ecc.).

Traduzione di Savedev


Image courtesy of jscreationzs / FreeDigitalPhotos.net