Soluzioni tecniche adottate

In questa sezione ho riportato le principali soluzioni tecniche adottate durante la realizzazione di un progetto. Non esiste di fatto una soluzione tecnica migliore in senso assoluto, è sempre necessario individuare qual è la migliore in base alla problematica da risolvere, al budget di progetto, ai tempi di realizzazione, ecc… Certamente è necessario essere aggiornati sulle soluzioni a disposizione oggi e talvolta “osare” a sperimentarne di nuove.

PrestaShop vs VirtueMart vs Magento

PrestaShop è un CMS open source utilizzato per realizzare siti di commercio elettronico.

Nasce nel 2007, e a differenza dei CMS più generici diffusi all’epoca della sua prima release (WordPress e Joomla!), PrestaShop è interamente pensato per lo sviluppo e la gestione degli e-commerce.

I temi PrestaShop sfruttano il motore di template Smarty, il quale permette una netta separazione tra contenuti, grafica e programmazione. Grazie a questa impostazione, il web designer può occuparsi della grafica del sito lavorando sui file tpl e CSS, mentre il developer può intervenire sui files PHP (difatti la documentazione ufficiale è divisa in due sezione ben distinte, una per i web designer ed una per gli sviluppatori).

L’interfaccia utente semplice e intuitiva, e il sistema modulare (per implementare una funzionalità basta installare il relativo modulo), hanno reso PrestaShop uno dei CMS per l’e-commerce più diffusi e utilizzati sia dai professionisti sia dai neofiti.

Senza dilungarmi negli aspetti positivi di VirtueMart e Magento, riporterò invece alcuni aspetti negativi per i quali ho scelto di adottare in alternativa, PrestaShop.

VIRTUEMART

  • Backoffice “annegato” nel backoffice di Joomla poco chiaro e spesso ricco di imprecisioni
  • Si è costretti ad utilizzarlo ancora con Joomla 2.5.X in quanto non esiste ad oggi una versione compatibile con Joomla 3.X
  • Community poco attiva nel rilascio di nuova versioni ed aggiornamenti

MAGENTO

  • Requisiti (e quindi costi) del server che ospita il sito
  • Tuning iniziale della piattaforma
  • Difficoltà ad intervenire “al volo” sul sito di produzione, oltre ad un sito di test è meglio in genere avere un sito locale per lo sviluppo in quanto è più complesso apportare direttamente le modifiche ad un sito online anche se di test

Attorno a PrestaShop c’è una comunità molto attiva, soprattutto in Francia e in Spagna, che contribuisce al costante miglioramento del software e allo sviluppo di moduli per implementare sempre nuove funzionalità.

Ritengo ad oggi PrestaShop la giusta via di mezzo fra VirtueMart e Magento.

Microsoft MapPoint

Microsoft MapPoint consente di visualizzare dati sulle vendite, sulla concorrenza e sui clienti per favorire decisioni aziendali mirate e comunicare idee con impatto immediato.

mappoint

Ho realizzato applicativi personalizzati di geomarketing e geolocalizzazione utilizzando le API messe a disposizione del motore di MapPoint.

RWD – Responsive Web Design

Il termine Responsive Web Design (RWD) viene utilizzato per indicare una particolare tecnica di Web design per la realizzazione di siti web in modo che le pagine adattino automaticamente il layout per fornire una visualizzazione ottimale in funzione dell’ambiente nei quali vengono visualizzati (pc su desktop con diverse risoluzioni, tablet, smartphone, cellulari di vecchia generazione, web tv) riducendo al minimo all’utente la necessità di ridimensionamento e scorrimento, in particolare quello orizzontale.

responsive-web-design-vancouver-paladin-security1

La necessità di dover adattare la visualizzazione alle diverse dimensioni e risoluzioni degli schermi, ha introdotto il concetto di Resolution breakpoints per poter suddividere in un numero discreto le tipologie di layout ovvero di organizzazione dei contenuti, in funzione della larghezza del device. Tali breakpoint sono generalmente espressi in pixel, anche se l’aumento della densità dei pixel nelle nuove generazioni di device comporta che non si possa considerare il viewport solo in termini di pixel senza considerarne l’effettiva dimensione.

Ethan Marcotte nel suo libro “Responsive web design” identifica 6 Resolution breakpoints:

  • 320 pixel per device con schermi piccoli, come cellulari, mantenuti con orientamento verticale (portrait)
  • 480 pixel per device con schermi piccoli, come cellulari, mantenuti con orientamento orizzontale (landscape)
  • 600 pixel piccoli tablet, come Kindle di Amazon (600×800) e Nook di Barnes&Noble (600×1024), tenuti con orientamento verticale
  • 768 pixel tablet da 10 pollici come l’iPad (768×1024) mantenuti con orientamento verticale
  • 1024 pixel computer da scrivania, laptop e netbook, e tablet come l’iPad (1024×768) mantenuti con orientamento orizzontale
  • 1200 pixel computer con schermi larghi, tipicamente desktop ma anche laptop

Tali tipologie possono essere più genericamente ricondotte a 4 principali:

  • mobile: per cellulari
  • narrow: per tablet
  • normal: pc desktop
  • wide: schermi di grandi dimensioni

KNX, BatiBUS, EIB ed EHS

KNX è il primo standard di building automation aperto, coperto da royalty ed indipendente dalla piattaforma, approvato come standard europeo (EN 50090 – EN 13321-1) e mondiale (ISO/IEC 14543). Lo standard è stato sviluppato da KNX Association sulla base dell’esperienza dei suoi predecessori BatiBUS, EIB ed EHS.

KNX

Esistono tre modalità di KNX:

  • Automatic-Mode : riprende le specifiche di EHS.
  • Easy-Mode : riprende le specifiche di BatiBUS.
  • System-Mode : riprende le specifiche di EIB.

Uno dei punti di forza del sistema KNX, è che qualsiasi prodotto etichettato con il marchio KNX non è una semplice dichiarazione del produttore, ma si basa su prove di conformità effettuate dai laboratori di KNX. Durante questi test, si verifica non solo che il dispositivo supporta il protocollo KNX, ma che i suoi dati utili sono codificati secondo i tipi di dati standardizzati KNX. Ciò permette di realizzare impianti funzionanti anche mediante la combinazione di dispositivi di produttori diversi. Le aziende membre dell’ Associazione KNX hanno più di 7000 prodotti nei loro cataloghi. Questa vasta gamma di prodotti permette, per esempio, l’integrazione di alcune funzioni:

  • Controllo dell’illuminazione
  • gestione dell’impianto di riscaldamento/ventilazione
  • monitoraggi degli allarmi
  • gestione energia e elettricità/gas
  • gestione di impianti audio e video
3 agosto 2013 Azure,cloud

Windows Azure – La piattaforma Microsoft per il cloud computing

Windows Azure è la piattaforma di sviluppo che consente di creare ed eseguire applicazioni nella cloud, lanciarle in pochi minuti ed effettuare la codifica in diversi linguaggi e tecnologie.

7217_windows-azure-logo-v_6556ef52

Il cloud computing rappresenta un modello di utilizzo dell’IT, dall’infrastruttura alle applicazioni, che combina alcuni trend tecnologici consolidati come la virtualizzazione, con altri concetti più legati al business come il pay-per-use.

Quali sono i vantaggi offerti da Windows Azure?

  • Flessibilità
    Windows Azure Platform fornisce due macro funzionalità: da un lato un ambiente di deployment e di esecuzione di applicazioni scritte in linguaggi diversi (.NET, Java, PHP, Ruby, C++ e molti altri), dall’altro un insieme di funzionalità applicative, quali i servizi di autorizzazione, il service bus, lo storage relazionale e non relazionale, le code ecc., che gli sviluppatori potranno scegliere di usare se e quando lo troveranno necessario.
  • Focus sui servizi e non sui prodotti
    A differenza dei sistemi operativi tradizionali, la gestione dell’infrastruttura e di tutti gli aspetti di operations sono interamente a carico di Microsoft e tali funzionalità verranno sfruttate solo quando servono.
  • Scalabilità
    Windows Azure offre funzionalità scalabili di elaborazione e archiviazione ed elimina l’esigenza di aggiungere ulteriori risorse hardware per far fronte a improvvisi e imprevedibili picchi di attività.
  • Affidabilità
    La piattaforma Windows Azure è ospitata in data center Microsoft distribuiti e accessibili tramite Internet, che garantiscono elevata disponibilità, scalabilità e continuità, con i vantaggi di processi di sicurezza all’avanguardia.

jBPM Business process management

jBPM è un motore di workflow open source scritto in Java in grado di eseguire i processi di business descritti in BPMN 2.0 (o il proprio processo definizione lingua jPDL nelle versioni precedenti). È rilasciato sotto l’ASL (o LGPL nelle versioni precedenti) dalla comunità di JBoss.

In sostanza jBPM prende le descrizioni grafiche processo come input. Un processo è composto da compiti che sono connessi con i flussi di sequenza. I processi rappresentano un flusso di esecuzione. Il diagramma grafico (diagramma di flusso) di un processo viene utilizzato come base per la comunicazione tra gli utenti non tecnici e sviluppatori.

Ogni esecuzione di una definizione di processo è chiamato una “istanza di processo”. jBPM gestisce le istanze di processo. Alcune attività sono automatiche come l’invio di un’e-mail o richiamare un servizio. Alcune attività di agiscono come aspettare gli Stati, come per esempio attività umana o in attesa di un servizio esterno restituire i risultati. jBPM sarà gestire e mantenere lo stato delle istanze del processo in ogni momento.

process_concurrency

Ho particapato allo sviluppo di un portale web di gestione pratiche utilizzando jBPM su piattaforma JBoss-Hibernate-Oracle
31 luglio 2013 CMS,Joomla,componenti

Creazione di componenti per Joomla

I componenti di Joomla! sono estensioni specifiche che permettono di aggiungere funzionalità complesse a un sito realizzato usando il CMS Joomla!.

I componenti per Joomla! differiscono dai moduli essenzialmente per il livello di complessità supportato. Tradizionalmente, i moduli vengono utilizzati per implementare funzionalità elementari mentre i componenti possono aggregare più moduli per realizzare funzionalità più complesse e più complete. In generale, l’aggiunta di un componente corrisponde all’aggiunta di un’intera sezione al sito dove viene installato.

Per esempio, nel caso della gestione di una newsletter i moduli coprono funzioni tipo “iscrizione (aggiunta) di un nuovo utente”, “cancellazione di un utente” eccetera mentre un componente potrebbe gestire la newsletter nel suo complesso.

A loro volta, secondo il medesimo schema modulare, i componenti possono essere usati da applicazioni che coprono livelli di funzionalità ancora più complessi.

I componenti possono essere realizzati da qualsiasi utente di Joomla!. In rete si possono inoltre trovare componenti già pronti, prodotti da sviluppatori indipendenti.

home-try-joomla

Ho realizzato componenti personalizzati sia modificando componenti già esistenti che creandone da zero (in base alle esigenza dello specifico caso)
31 luglio 2013 CMS,Joomla,moduli

Creazione di moduli per Joomla

I moduli di Joomla! sono estensioni che permettono l’aggiunta di piccole porzioni di HTML a un sito realizzato usando Joomla!. Sono usati per mostrare elementi di informazione o funzionalità interattive all’interno di un sito Joomla!, in maniera collaterale al contenuto principale. Si possono considerare come finestre aggiuntive attraverso le quali dare informazioni non necessariamente correlate alla pagina visualizzata, magari per mostrare le altre funzionalità del sito.

I moduli recuperano le informazioni, o parti di informazioni definite attraverso parametri, e le visualizzano nella zona di loro competenza; ad esempio il modulo “ultime notizie” recupera di default i soli titoli degli articoli per visualizzarli nel sito come lista, dando la possibilità di anticipare al visitatore ciò che si trova all’interno del sito stesso e quali sono le notizie più recenti. All’utente viene data la possibilità di scegliere quali moduli visualizzare e dove collocarli all’interno del layout della pagina, in accordo con un template (vedi sotto). Moduli sono anche i menu di navigazione all’interno di un sito Joomla!.

home-try-joomla

Ho realizzato moduli personalizzati sia modificando moduli già esistenti che creandone da zero (in base alle esigenza dello specifico caso)

Replica di SQL Server

La replica è costituita da un set di tecnologie per la copia e la distribuzione di dati e oggetti di database da un database a un altro e la successiva sincronizzazione dei database in modo che risultino consistenti. Grazie alla replica è possibile distribuire dati a diverse posizioni e a utenti remoti o mobili tramite reti locali e WAN, connessioni remote, connessioni wireless e Internet.

La replica transazionale viene in genere utilizzata negli scenari server-server con esigenze di elevata velocità effettiva, inclusi il miglioramento delle caratteristiche di scalabilità e disponibilità, funzionalità di data warehouse e di creazione di report, integrazione di dati da più siti, integrazione di dati eterogenei e ripartizione del carico di lavoro dell’elaborazione batch. La replica di tipo merge è principalmente progettata per le applicazioni mobili o server distribuite con possibili conflitti di dati. Tra gli scenari comuni sono inclusi lo scambio di dati con utenti mobili, applicazioni POS e integrazione di dati da più siti. La replica snapshot viene utilizzata per fornire il set di dati iniziale per la replica di tipo merge o transazionale, nonché nel caso sia necessario un aggiornamento completo dei dati. Con questi tre tipi di replica, SQL Server costituisce un sistema potente e flessibile per la sincronizzazione dei dati aziendali.

In alternativa alla replica, è possibile sincronizzare i database utilizzando Microsoft Sync Framework. Sync Framework include componenti e una API intuitiva e flessibile che facilitano la sincronizzazione fra i database di SQL Server, SQL Server Express, SQL Server Compact e SQL Azure. Sync Framework include anche classi che possono essere adattate per la sincronizzazione tra un database di SQL Server e un qualsiasi altro database compatibile con ADO.NET.

SQLServerReplication

Ho utilizzato principalmente repliche di tipo merge per allineare i dati tra un applicativo in uso ad agenti geograficamente distribuiti con un database centrale.
31 luglio 2013 REST,SOAP,Web Services

Web Services SOAP e REST

Allo stato attuale esistono due approcci alla creazione di Web Service:

  • Un approccio è basato sul protocollo standard SOAP (Simple Object Access Protocol), per lo scambio di messaggi per l’invocazione di servizi remoti, si prefigge di riprodurre in ambito Web un approccio a chiamate remote, Remote Procedure Call, tipico di protocolli di interoperabilità come CORBA, DCOM e RMI.
  • Un secondo approccio è ispirato ai principi architetturali tipici del Web e si concentra sulla descrizione di risorse, sul modo di individuarle nel Web e sul modo di trasferirle da una macchina all’altra.

imagesCA3GYXGC

Ho utilizzato entrambi gli approcci sia lato server che client, sia in tecnologia Java che .NET (e miste)
Pagina 1 di 212
Lisario Rinaldo | Consulente Informatico | Senior Software Developer | Senior Analyst | Project Manager