Novità sul progetto Joomla!, panoramica sulle nuove versioni e compatibilità con nuovi database

Documenti analoghi
Creare un sito Multilingua con Joomla 1.6

Sommario. Introduzione L ambiente di lavoro Configurazioni generali e la struttura di Joomla La struttura di Joomla...

MagiCum S.r.l. Progetto Inno-School

IL MIO PRIMO SITO: NEWS

Progetto ittorario Anno scol

CONTENUTI 1. INTRODUZIONE CONCETTI BASICI SU EQUINOX CMS XPRESS ACCESSO A EQUINOX CMS XPRESS PAGINA D INIZIO...

PROGETTAZIONE DI UN SITO WEB

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

CONTENT MANAGEMENT SY STEM

Introduzione alla teoria dei database relazionali. Come progettare un database

Manuale Utente Albo Pretorio GA

Architettura MVC-2: i JavaBeans

Soluzione dell esercizio del 2 Febbraio 2004

The new VirtueMart 2. la rivoluzione del più diffuso e-commerce per Joomla

Panoramica: che cosa è necessario

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

L o. Walter Ambu japs: una soluzione agile (

manuale utente per Viabizzuno online

Installazione e caratteristiche generali 1

Lezione V. Aula Multimediale - sabato 29/03/2008

1. BASI DI DATI: GENERALITÀ

Software Gestionale per alberghi e strutture ricettive

MANUALE UTENTE UTILIZZO MODULO FILE-STORAGE DI ACS - CANALE AMBIENTE PROVINCIA DI TORINO

Base di dati e sistemi informativi

Corso Joomla per ATAB

Configuration Management

SOMMARIO... 3 INTRODUZIONE...

Dispensa di Informatica I.1

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Al giorno d oggi, i sistemi per la gestione di database

Joomla! 2.5:Utenti e permessi - Il wiki di Joomla.it

Concetti fondamentali dei database database Cos'è un database Principali database

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Volumi di riferimento

Organizzazione degli archivi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

L architettura MVC (Model- View-Controller) Introduzione

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

CONTENT MANAGEMENT SYSTEM

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Invio SMS. DM Board ICS Invio SMS

Aggiornare applicazioni virtualizzate con App-V

Progetto di Sistemi Web-based

Manuale Utente Amministrazione Trasparente GA

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Visual Basic.NET La Gestione degli Errori di Federico BARBATI

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

RISOLUTORE AUTOMATICO PER SUDOKU

Manuale utente Volta Control

Mon Ami 3000 Centri di costo Contabilità analitica per centri di costo/ricavo e sub-attività

Introduzione al Model-View-Controller (MVC)

MANUALE PARCELLA FACILE PLUS INDICE

Mon Ami 3000 Provvigioni agenti Calcolo delle provvigioni per agente / sub-agente

In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori.

Settaggio impostazioni tema. Cliccando nuovamente su aspetto e poi su personalizza si avrà modo di configurare la struttura dinamica della template.

Sistemi Web! per il turismo! - lezione 3 -

MySQL Database Management System

Guida all installazione e all aggiornamento di Virtuemart 2.0.x

Manuale Utente. Gestione Richieste supporto Data Warehouse. Della Ragioneria Generale dello Stato. Versione 1.0. Roma, Ottobre 2015

Sito web parrocchiale: STRUMENTI E PROGRAMMI

EXPLOit Content Management Data Base per documenti SGML/XML

Guida all installazione di Easy

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Manuale utente per la gestione delle richieste di interventi sul Patrimonio Edilizio Sapienza

I tutorial di MadLabs.. Installazione e prima configurazione

Access. P a r t e p r i m a

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Guida all amministrazione VPH Webmin/Virtualmin

MAGAZZINO FISCALE (agg. alla rel )

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

Sistemi per la gestione di database: MySQL ( )

MService La soluzione per ottimizzare le prestazioni dell impianto

Una metodologia di progettazione di applicazioni web centrate sui dati

NOVITÀ SITI COMMERCIALISTA

Corso di Informatica

Guida all'uso del CMS (Content Management System, Sistema di Gestione dei Contenuti)

Novità di Access 2010

Strumenti per la gestione della configurazione del software

DBMS (Data Base Management System)

Attività federale di marketing

Database e reti. Piero Gallo Pasquale Sirsi

Soluzione dell esercizio del 12 Febbraio 2004

Manuale Knowledge Base

REALIZZARE UN BUSINESS PLAN CON MICROSOFT EXCEL 2007

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

Corso Drupal «Project management»

Esercizi su. Funzioni

Realizzare un sito con Google sites

Introduzione a PostgreSQL e phppgadmin

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

design patterns e GRASP

MANUALEDIUTILIZZO MODULO CRM POSTVENDITA

DINAMIC: gestione assistenza tecnica

Informatica per le discipline umanistiche 2 lezione 14

Come modificare la propria Home Page e gli elementi correlati

Progettazione : Design Pattern Creazionali

Distribuzione Software. Documentazione Tecnica. Copernico. Iva 22% - Interventi Predisposti

Transcript:

Novità sul progetto Joomla!, panoramica sulle nuove versioni e compatibilità con nuovi database Ing. Gabriele Pongelli Team leader e lead developer del driver PostgreSQL per Joomla!

Outline Joomla! da i numeri Il nuovo ciclo di rilascio di Joomla! Le novità per gli utenti e gli sviluppatori del progetto Che cos è la platform di Joomla! Da dove nasce e perché Joomla! incontra PostgreSQL I perché Il driver e le query I test

Joomla! da i numeri Il numero di versione che identifica Joomla segue una convenzione a tre livelli, dove ognuno definisce il significato del cambio (1.5.23, 1.6.6, 1.7.1, etc ) I tre livelli, in ordine di importanza, sono: Major Minor Maintenance Ad ogni nuovo rilascio i livelli inferiori vengono impostati a zero (1.5.23 - > 1.6.0, 2.5.x - > 3.0.0 )

Joomla! da i numeri 1. 7. 1

Joomla! da i numeri Un rilascio classificato come Major include un alto grado di cambiamenti se comparato con il rilascio precedente. Generalmente cambiamenti di questo genere includono un massiccio cambio nell architettura e/o nell interfaccia. Anche cambi sostanziali nel datamodel sottostante possono causare un rilascio Major

Joomla! da i numeri Un rilascio classificato come Minor indica un alto grado di continuità presente nell architettura e nel datamodel rispetto al rilascio precedente. In questi rilasci le funzionalità esistenti vengono mantenute ed eventualmente migliorate, rispetto al rilascio precedente

Joomla! da i numeri Un rilascio classificato come Maintenance viene effettuato perché risolve bug, vulnerabilità di sicurezza e solamente problemi di usabilità Le nuove funzionalità non sono introdotte, a meno che non risolvano un problema con il precedente rilascio che deve essere risolto prima della prossima Minor release

Joomla! da i numeri Con una serie di rilasci Maintenance siamo passati dalla 1.6.0 alla 1.6.6 Dalla 1.6.6 siamo passati alla 1.7.0 con un rilascio Minor e successivamente, con un rilascio Maintenance, ci troviamo ora alla 1.7.1 A gennaio avverrà il rilascio della prossima versione stabile, Joomla! 2.5 Inizialmente era 1.8, ora si chiamerà 2.5, diamo proprio i numeri!

Da 1.8 a 2.5 Il cambio di numerazione è stato scelto dalla community di Joomla! per 272 voti su 527, il 52% 1.8 avrebbe continuato la numerazione attuale ma sarebbe stato contro la regola di identificare una versione x.5 come stabile e utilizzabile per anni, es. 1.5 2.5 continua a rispettare la regola precedente, ma passeremmo da 1.7 a 2.5 evitando la 2.0, indice di un rilascio Major

Il nuovo ciclo di rilascio di Joomla! Per rilascio di software si intende la distribuziome del codice, documentazione e materiale di supporto. La nuova strategia del progetto Joomla segue fortemente quella già utilizzata nel progetto Ubuntu, quindi nel progetto GNOME, nel quale i rilasci sono periodici nel tempo. Software stabile con supporto a lungo termine (LTS), 18 mesi Software di test con supporto a breve termine (STS), 6 mesi Ogni due rilasci STS c è un rilascio LTS

Ciclo di vita di un rilascio Il ciclo di vita di un rilascio di software è composto da distinte fasi e pietre miliari ( milestone ) che ne esprimono la maturità durante la sua evoluzione (pianificazione, sviluppo, rilascio, supporto) Non sempre si attraversano tutte le fasi, ad esempio i rilasci di tipo Maintenance saltano direttamente alla fase di rilascio, essendo presenti dei cambiamenti minimi

Software Milestone Il ciclo di vita Joomla! comprende quattro milestone Alpha Alto grado di sviluppo, continuo inserimento e rimozione di software Beta & Release Candidate, due milestone molto vicine Medio- basso grado di sviluppo, principalmente test di retrocompatibilità & stabilità, creazione di documentazione General Availability Software distribuito al pubblico, possibili rilasci Maintenance, inizio della fase di Supporto

Le fasi tra le Milestone Feature Merge: fase tra la milestone Alpha e la Beta & RC della nuova versione, circa 12 settimane Release Testing: fase tra la milestone Beta & RC e GA, circa 8 settimane Maintenance: fase tra GA e le 6 settimane successive Supporto: dalla fine della fase Maintenance al termine del supporto (LTS, STS) Il periodo di 18 mesi per LTS e di 6 mesi per STS comprendono la fase Maintenance e quella di Supporto

Milestone vs fasi Feature Merge Inclusione delle nuove feature nel ramo principale di sviluppo, che non rappresenta più il codice del rilascio corrente ma traccia il percorso per il nuovo rilascio.

Milestone vs fasi Feature Merge Release Testing Test del software, traduzione, documentazione Periodo utile a chi sviluppa estenzioni in modo da risolvere i problemi con la nuova versione prima del suo rilascio GA

Milestone vs fasi Feature Merge Release Testing Maintenance & Supporto Software disponibile al pubblico, i team sono impegnati a fixare i problemi che si presentano, nuova Feature Merge Solo rilasci di tipo Maintenance per problemi di sicurezza e stabilità, fino al termine del ciclo di vita della release

Le novità per gli utenti del CMS Le novità per gli utenti del CMS Joomla! sono Sito multilingua, senza JoomFish! Modulo di notifica automatica di aggiornamenti disponibili Miglioramenti a livelli di performance Un nuovo motore per la ricerca all interno del sito Finder Manipolazione delle immagini

Sito multilingua senza JoomFish! Con la nuova release 2.5 sarà possibile realizzare un sito multilingua senza installare il componente JoomFish! che rimane un progetto molto valido Sullo stile di JoomFish! per avere un sito multilingua si deve pubblicare il plugin Language Filter e il modulo Language Switcher, quindi pubblicare i contenuti tradotti assegnandoli alla relativa lingua

Finder Il Finder è un progetto che vuole migliorare lo strumento di ricerca presente in ogni sito Joomla! Si basa sul nuovo motore di ricerca implementato nel core di Joomla! Crea un indice delle parole contenute negli articoli Possibile ricerca per rilevanza Internazionalizzazione Usa algoritmi per il ranking dei risultati

Le novità per gli sviluppatori Le novità per chi sviluppa software per Joomla! sono molte e di vario tipo Suddivisione tra il CMS e la platform Introduzione delle eccezioni PHP e JException JRequest sarà rimpiazzata da JInput Il framework PHPUnit per testare il software prima di poter essere incluso in Joomla! JDatabase e i driver, non solo MySQL

CMS e platform C era una volta il file zip di Joomla! c è ancora, ma adesso il contenuto non è più relativo a un singolo progetto, è la fusione di due progetti: CMS e platform La platform è la base, si occupa della query request, dei database, degli eventi, degli errori e di molto altro; senza la platform non funzionerebbe nulla Il CMS, con i suoi componenti e moduli, che tutti utilizziamo per aggiungere articoli, voci di menù, gallerie di foto; la parte visibile di un sito web

Da dove nasce la platform La platform è una semplice cartella contenuta nel file zip che scaricate È l evoluzione della cartella libraries, da sempre presente all interno delle release Il rilascio stabile del progetto platform viene inserito all interno della cartella libraries

Perché è nata la platform Col tempo il software che costituiva Joomla! è cresciuto ed è diventato sempre più difficile gestire in maniera ottimale l intero prodotto Il dividi et impera vale ancora, soprattutto nel software La platform è stata quindi separata dal CMS Ciò da la possibilità di sviluppare applicazioni diverse dal CMS, che si basano comunque sulla platform (es. l installer Joomla!, il backend e il frontend, JCli attualmente in sviluppo)

Cosa cambia Prima Dopo CMS installer JCli Joomla! platform

La platform da Joomla! 1.6 Lo sviluppo su Joomla! 1.6 è radicalmente cambiato rispetto alla versione 1.5 La platform è stata riscritta seguendo il design pattern MVC: Model, View, Controller Chiunque voglia ora realizzare qualsiasi componente deve rispettare questo design pattern Per l attuale platform si richiede PHP 5.3, linguaggio ad oggetti

Le eccezioni Come ogni linguaggio ad oggetti che si rispetti, anche PHP implementa il meccanismo delle eccezioni Le eccezioni vengono alzate (throw) per segnalare casi di errore e DEVONO essere prese (catch) per gestirli Joomla utilizza la classe PHP Exception come classe base per derivare le classi di eccezioni specifiche (eg. JDatabaseException ) Questo meccanismo rimpiazza JLog.

Esempio di eccezione Il costruttore della mia classe JDatabasePostgreSQL controlla se è presente la funzione PHP pg_connect, se non esiste alza una eccezione if (! function_exists( 'pg_connect' ) ) { } throw new JDatabaseException(JText::_ ('JLIB_DATABASE_ERROR_ADAPTER_POSTGRESQL') );

Esempio di eccezione Il codice che circonda la costruzione di questa classe deve contenere un blocco try- catch per catturare l eccezione, se venisse sollevata dalla mancanza del driver PHP try { $postgreobj = new JDatabasePostgreSQL() ; } catch ( JDatabaseException ex ) { ex- >getmessage(); // segnalazione dell errore }

JRequest vs JInput L idea che sta dietro a JInput è quella di astrarre la sorgente di input per permettere al codice di essere riusato in differenti contesti e applicazioni Cambiare la sorgente di dati all interno di un componente vuol dire solamente estendere JInput per la nuova sorgente, senza dover riscrivere anche il controller e la view Ciò non limita l input alle sole variabili superglobali POST e GET

Il testing del software Un altro step importante nel processo di sviluppo software per Joomla! introdotto di recente è l uso di un framework di test per validare la correttezza del nuovo software Lo sviluppo di software è importante, ma è ancora più importante garantire che il nuovo codice non diminuisca la stabilità, la sicurezza e la manutenibilità del prodotto finale

Il testing del software I test utilizzano il codice implementato e ne verificano la correttezza evidenziando, nelle modifiche future, cosa queste ultime vanno a cambiare Per ogni funzione implementata dalla classe in sviluppo si crea una funzione che la testa Per lo sviluppo dei test su Joomla! si utilizza il framework PHPUnit

Testing con PHPUnit Il framework PHPUnit è responsabile dell esecuzione della sequenza di test, implementata separatamente dalla platform L esecuzione tipo di un test si divide in Creazione degli oggetti necessari Richiamo del singolo metodo da testare Verifica del corretto risultato durante l esecuzione e attraverso i log generati

Joomla! incontra PostgreSQL

I perché In questo ambiente in forte evoluzione, conoscendo la limitazione di Joomla! nell utilizzare soltanto MySQL e in vista della prossima release stabile 2.5, è nata la mia voglia di contribuire a questo progetto opensource sviluppando il driver per il database PostgreSQL

Cosa cambia Oltre al mio driver per PostgreSQL, sono in sviluppo driver per altri tipi di database: MSSQLSrv, SQLAzure L utente finale di un sito web, aziendale o amatoriale, non noterà nessuna differenza Il professionista che lavora realizzando siti web con Joomla! potrà vendere il proprio prodotto a molti più clienti e non sarà limitato a far usare sempre MySQL, potendo andare incontro alle richieste del cliente stesso se questo non può usare MySQL

Cos è PostgreSQL MySQL è un RDBMS opensource, Relational Database Managment System PostgreSQL è un ORDBMS opensource, Object- Relational Database Managment System Qualsiasi cosa è un oggetto: database, tabelle, tuple, viste, funzioni, sequenze, utenti... Ereditarietà tra gli oggetti Transazioni, forward key constraint, role

Lo sviluppo del driver L attuale platform fa molto uso di ereditarietà e polimorfismo, quindi di interfacce Ciò significa che mentre prima esisteva solo una classe per comunicare con un database MySQL, ora si utilizza una interfaccia database, senza conoscere qual è lo specifico database sottostante Si utilizzano sempre gli stessi metodi, cambia la traduzione nel linguaggio SQL proprio del database

Classe singola o interfaccia Uso di una classe singola Query sul database Uso di una interfaccia Query sul database Classe MySQL Interfaccia Database... Classe MySQL Classe PostgreSQL db MySQL db MySQL db PostgreSQL

Il driver La classe driver implementa ciò che l interfaccia astrae: i comandi sono tradotti nelle chiamate PHP corrette per il database in questione mysql_connect per MySQL, pg_connect per PostgreSQL Le variabili sono specifiche per il database MySQL quota con ` e, PostgreSQL solo con La data nulla per MySQL 0000-00- 00 00:00:00, per PostgreSQL è 1970-01- 01 00:00:00+00

Il driver Altre differenze più sostanziali riguardano le query tipiche di MySQL e le funzioni PHP di MySQL REPLACE INTO INSERT IGNORE INTO... ON DUPLICATE KEY... Supporto character set UTF8 mysql_insert_id() mysql_select_db()

Le query Altro grande problema di incompatibilità tra diversi tipi di database è la sintassi delle query che è possibile eseguire Anche per risolvere questo problema la strada seguita è quella di usare una interfaccia comune Si utilizzano gli stessi metodi per creare la query, che poi viene tradotta nella sintassi corretta

Esempio di query Una query può essere eseguita all interno di un componente semplicemente con $db- >setquery( SELECT * FROM # abc WHERE... ); $db- >query(); Potrebbe funzionare senza problemi, se si escludono le differenze appena citate

Esempio di query La stessa query, sicuramente più indipendente dal tipo di database, è $query = $db- >getquery( true ); $query- >select( * ) - >from( # abc ) - >where(... )... ; $db- >setquery( $query ); $db- >query(); Personalmente consiglio vivamente di usare questa procedura

I test Per poter inserire del codice nel progetto Joomla! si devono anche allegare i test relativi al codice, così da provare l effettivo funzionamento e la non regressione del resto del progetto Le sequenze di test che ho realizzato sono relative, ovviamente, al driver e alla classe che gestisce le query

Esempio di test $query = $this- >object- >getquery(true); $query- >select( '* ); $query- >from( 'jos_dbtest ); $query- >where( 'description=. $this- >object- >quote( 'one ) ); $this- >object- >setquery( $query ); $res = $this- >object- >query(); $this- >assertthat( $this- >object- >getnumrows( $res ), $this- >equalto( 2 ), LINE );

Q&A