Apache Maven - Gestione di progetti Java e build automationTiziano Serritella
Apache Maven è un tool per la gestione di progetti e build automation, utilizzato principalmente per progetti Java, il cui obiettivo è: semplificare, uniformare e automatizzare il processo di build di sistemi complessi.
In questa presentazione / guida verranno illustrati i problemi e le criticità dei tool di build automation tradizionali: make e Apache Ant, vedremo poi come installare e configurare Maven, le caratteristiche, gli obiettivi e i punti di forza del tool, le fasi del ciclo di vita, i plugin e i goal, le dipendenze, gli scope e la risoluzione di eventuali conflitti, i repository, i plugin "esterni" e i progetti multi-modulo.
La presentazione è ricca di esempi pratici.
Hip Hop Virtual Machine
- Performance HHVM
- Compatibilità con PHP
- Compatibilità con Magento
- Compatibilità Piattaforma: Debian, Centoos, Ubuntu
Ambiente in Produzione
- Caso Studio
- Statistiche
- Problematiche
Apache Maven - Gestione di progetti Java e build automationTiziano Serritella
Apache Maven è un tool per la gestione di progetti e build automation, utilizzato principalmente per progetti Java, il cui obiettivo è: semplificare, uniformare e automatizzare il processo di build di sistemi complessi.
In questa presentazione / guida verranno illustrati i problemi e le criticità dei tool di build automation tradizionali: make e Apache Ant, vedremo poi come installare e configurare Maven, le caratteristiche, gli obiettivi e i punti di forza del tool, le fasi del ciclo di vita, i plugin e i goal, le dipendenze, gli scope e la risoluzione di eventuali conflitti, i repository, i plugin "esterni" e i progetti multi-modulo.
La presentazione è ricca di esempi pratici.
Hip Hop Virtual Machine
- Performance HHVM
- Compatibilità con PHP
- Compatibilità con Magento
- Compatibilità Piattaforma: Debian, Centoos, Ubuntu
Ambiente in Produzione
- Caso Studio
- Statistiche
- Problematiche
Corso base linux, percorre i concetti fondamentali per l'amministrazione di una distribuzione linux. In particolar modo, ci sofferma su: file system, partizionamento, shell, bash, kernel, distribuzioni, amministrazione utenti, sicurezza e cron. Sono presenti alcuni esercizi pratici di programmazione bash per una comprensione pratica dello strumento.
An overview of technologies and best practices for the development of a full-stack web application using JavaScript. How to realize an entire Application Server with a single programming language, the use of event-driven logic and the potential of Node.js.
Sistemi di virtualizzazione in ambiente LinuxTruelite
Presentazione delle principali tecnologie di virtualizzazione disponibili in ambiente GNU/Linux: panoramica, caratteristiche e principali strumenti di gestione.
Relatore: Simone Piccardi
Evento: Corso "Sistemi di virtualizzazione software in ambiente Linux" - 13 Maggio 2014
Organizzatore SIAF - Sistema Informatico dell'Ateneo Fiorentino
Luogo: Università degli studi di Firenze
Il talk prevede una breve introduzione alla piattaforma Maemo ed ai Nokia Internet Tablet, sia dal punto di vista dell'utente comune, sia da quello dello sviluppatore.
Verrà poi spiegato come configurare ed installare l'ambiente Scratchbox, il principale ambiente utilizzato per sviluppare applicazioni per Maemo.
Infine verranno presentati due plugin per Eclipse: ESbox e PluThon. Il primo si interfaccia con Eclipse e Scratchbox, permettendo di sviluppare sia applicazione C/C++ che Python e di testarle all'interno dell'ambiente Scratchbox. Il secondo è un plugin specifico per Python e permette di eseguire e debuggare le applicazioni direttamente sul dispositivo.
Un piccolo vademecum su un insieme di programmi open source utili a migliorare l'infrastruttura informatica di scuole, comuni, ospedali, cliniche e piccole e medie imprese
Designed to speed up implementation of common automation tasks, the kaliop workflow bundle brings together existing technologies (the eZ Platform SignalSlot mechanism and the Kaliop Migrations Bundle) to bring back to eZ one of the few missing functionalities at the core of a modern CMS.
More Related Content
Similar to php day 2008 - Introduzione agli ez components
Corso base linux, percorre i concetti fondamentali per l'amministrazione di una distribuzione linux. In particolar modo, ci sofferma su: file system, partizionamento, shell, bash, kernel, distribuzioni, amministrazione utenti, sicurezza e cron. Sono presenti alcuni esercizi pratici di programmazione bash per una comprensione pratica dello strumento.
An overview of technologies and best practices for the development of a full-stack web application using JavaScript. How to realize an entire Application Server with a single programming language, the use of event-driven logic and the potential of Node.js.
Sistemi di virtualizzazione in ambiente LinuxTruelite
Presentazione delle principali tecnologie di virtualizzazione disponibili in ambiente GNU/Linux: panoramica, caratteristiche e principali strumenti di gestione.
Relatore: Simone Piccardi
Evento: Corso "Sistemi di virtualizzazione software in ambiente Linux" - 13 Maggio 2014
Organizzatore SIAF - Sistema Informatico dell'Ateneo Fiorentino
Luogo: Università degli studi di Firenze
Il talk prevede una breve introduzione alla piattaforma Maemo ed ai Nokia Internet Tablet, sia dal punto di vista dell'utente comune, sia da quello dello sviluppatore.
Verrà poi spiegato come configurare ed installare l'ambiente Scratchbox, il principale ambiente utilizzato per sviluppare applicazioni per Maemo.
Infine verranno presentati due plugin per Eclipse: ESbox e PluThon. Il primo si interfaccia con Eclipse e Scratchbox, permettendo di sviluppare sia applicazione C/C++ che Python e di testarle all'interno dell'ambiente Scratchbox. Il secondo è un plugin specifico per Python e permette di eseguire e debuggare le applicazioni direttamente sul dispositivo.
Un piccolo vademecum su un insieme di programmi open source utili a migliorare l'infrastruttura informatica di scuole, comuni, ospedali, cliniche e piccole e medie imprese
Designed to speed up implementation of common automation tasks, the kaliop workflow bundle brings together existing technologies (the eZ Platform SignalSlot mechanism and the Kaliop Migrations Bundle) to bring back to eZ one of the few missing functionalities at the core of a modern CMS.
This document discusses using message brokers like RabbitMQ to asynchronously process tasks like generating Microsoft Office documents from XML content. It describes how using a message broker and queueing bundle improves over a synchronous approach that is slow, unreliable, and does not scale. Specifically, it allows processing jobs to run in parallel without interfering with each other by placing jobs on a message queue where worker processes can pick them up. The document recommends using the Kaliop Queueing Bundle which provides an easy to use and safe way to integrate queues into a Symfony application using multiple broker protocols.
Designing a Docker Stack for Symfony apps: lessons learnedGaetano Giunta
This document summarizes a presentation about designing a Docker stack for Symfony applications. It discusses getting started with Docker and some of the challenges that arise when using it in more complex situations. It then introduces Docker Compose as a way to define and run multiple linked containers together more easily. The rest of the document demonstrates a Docker stack created for Symfony apps, explaining how it works to provide a development environment that replicates production and allows for running multiple projects and environments simultaneously in a simple way. It concludes with a demonstration of the Docker stack in action.
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...Gaetano Giunta
1. The workshop will cover Docker, managing environments, database changes, and automated deployments for eZPublish websites.
2. A Docker stack is proposed that includes containers for Apache, MySQL, Solr, PHP, and other tools to replicate a production environment for development. Configuration and code are mounted as volumes.
3. Managing environments involves storing settings in the code repository and using symlinks to deploy different configurations. Database changes should be managed via migration scripts rather than connecting directly to a shared database.
4. Automating deployments is important and involves tasks like updating code, the database, caches and reindexing content. The same deployment script should be used for development and production. Testing websites is also recommended.
This document discusses using message brokers like RabbitMQ to introduce queues for processing document conversions. It describes how using a queue allows processing to be distributed across multiple consumers for better reliability and scalability compared to a single process approach. Specifically, it outlines how the Kaliop QueueingBundle for Symfony provides an easy way to integrate queues and supports multiple broker protocols with a common API.
Symfony2 for legacy app rejuvenation: the eZ Publish case studyGaetano Giunta
This document discusses the rejuvenation of the legacy eZPublish content management system through adoption of the Symfony full-stack framework. Key aspects of the migration included maintaining backwards compatibility, integrating the legacy codebase through a dual-core architecture, refactoring the front controller, integrating routing, adopting Symfony caching practices, building a REST API, using the Doctrine database abstraction layer, improving performance through caching, and replacing the legacy templating language with Twig. The migration aimed to balance maintaining the existing system functionality while modernizing the codebase and architecture.
Making Symfony Services async with RabbitMq (and more Symfony)Gaetano Giunta
This document discusses using RabbitMQ and Symfony to generate Microsoft Office documents asynchronously from XML content. Currently, using just LibreOffice is slow, unreliable, and does not scale well. The proposed solution is to use RabbitMQ with Symfony services to queue document generation jobs and process them in parallel with multiple worker processes. This improves performance, reliability and allows the process to scale. Some challenges that still need to be addressed are network security, throughput and determining if a existing solution could be used instead of a custom one.
The document discusses tools for monitoring and analyzing the performance of eZ Publish websites. It introduces Graphite, an open-source tool for monitoring and storing time-series data, and StatsD, which collects application metrics and sends them to Graphite. It then describes eZPerformanceLogger, an eZ Publish extension that measures key performance indicators and sends the data to Graphite for visualization and analysis. A live demo is presented of using eZPerformanceLogger and Graphite to break down metrics by content classes and identify poorly performing pages.
Symfony HTTP Kernel for refactoring legacy apps: the eZ Publish case study - ...Gaetano Giunta
This document summarizes a presentation about migrating an existing 10-year old content management system built with eZ Publish to Symfony2. Key points discussed include:
- The existing codebase has high maintenance costs and technical debt that makes it difficult to support new features.
- Symfony2 is chosen as the new framework due to its support for features needed like dependency injection, routing, and caching.
- Backwards compatibility is a major challenge to ensure existing customers are not upset by changes in the new system. The new system will maintain the same database schema and support including legacy templates.
The document discusses eZPublish transitioning to use Symfony as its framework. It describes the challenges of maintaining backwards compatibility while refactoring over 10 years of legacy code. The presentation outlines the objectives to ensure data compatibility and legacy functionality. It details how eZPublish implemented a dual-core architecture using Symfony, enabling both new and legacy code to function independently or together.
How to make sure a website can survive go-live and cope with ever increasing
traffic and amounts of data: knowing what to measure and log, during both
development and production phases; load testing ; identifying bottlenecks;
preventing disasters
The document summarizes eZ Content Staging, a tool that allows content editors to stage content changes on a separate server before pushing them live. It works by registering all content changes on the source server and using the RESTful ggwebservices extension to sync changes between servers. While functional, it is still a beta implementation with some limitations like requiring identical content definitions and sections on both servers.
The document summarizes several tools presented at an eZ Publish conference. It describes tools for syntax highlighting, debugging templates, inspecting variables, viewing system logs and statistics, performing QA checks, and potential future tools like an online code editor and database consistency checks. It concludes by providing links to the related projects.
3. eZ Systems
Società creatrice di eZ Publish e degli eZ Components
Fondata in Norvegia nel 1999
85 Dipendenti - 23 nazionalità
HQ a Skien / Norvegia, cinque uffici regionali
Nordics : Oslo – Copenhagen -Skien
Central and eastern Europe : Dortmund
Western Europe : Paris – Lyon – Bruxelles
Nothern America : Vancouver - Chicago
A breve ... London & Tokyo
100% Open Source
100% PHP
4. eZ Components – di cosa si tratta?
« Una piattaforma enterprise ready di componenti php general
purpose »
cioè
Non è un framework
... ma un insieme di componenti debolmente accoppiati. Si
possono usare insieme o singolarmente
Non è dedicata esclusivamente allo sviluppo web
... ma soprattutto allo sviluppo web
Disponibile con licenza New BSD e con supporto eZ Systems
5. Obiettivi della libreria
Costruire una piattaforma solida che semplifichi lo sviluppo
di applicazioni PHP 5 permettendo allo sviluppatore di non
“reinventare la ruota” ogni volta
API semplice e consistente, design OO « pulito »
Non forzare una struttura obbligata: non è un framework
Mantenere a lungo la compatibilità binaria e delle API
Mantenere la stabilità e limitare le regressioni
100% Open Source, con chiara attribuzione dei diritti di PI
Sviluppata, manutenuta e supportata da eZ Systems
6. Metodologia di sviluppo
Pieno utilizzo delle librerie e funzionalità disponibili da
PHP 5.1 (versione minima supportata: 5.1.6, a volte +)
Discussione e documentazione di tutte le API prima della
loro implementazione
Utilizzo pervasivo di unit testing – scrittura dei test
PRIMA del codice
Documentazione sia inline (phpdoc à gogo) che offline
(tutorials, reference, guida di installazione). La
documentazione si scrive durante lo sviluppo, non dopo
7. Architettura: naming delle classi
Utilizzazione di un prefisso, a causa della mancanza di
namespacing (in attesa di PHP 5.3): ezcXXX
Leggibili: meglio nomi lunghi ma parlanti che criptici
Talvolta « aggiustati » per una migliore leggibilità
eg: ezcMailSmtpTransport vs. EzcMailSMTPTransport
ezcTestSuite vs. PHPUnit2_Framework_TestSuite
...e molte altre regole su
http://ezcomponents.org/contributing/coding_standards.html
8. Architettura: dipendenze
Meno ce n'è, meglio è...
... evitando però la duplicazione del codice
solo dove necessario
Componenti separati
che le implementano
10. Roadmap
Release 2008.1 (expected: Giugno 2008)
Nuovi componenti:
Document – conversione tra differenti formati di dati
ExtendedReflection
Feed
Search – front-end per Solr e altri motori di ricerca
11. Ultime novità
2008.1 alpha1
Nuovo: Cache gerarchica multilivello
PersistentObject supporto per più datatypes
Nuovo componente: Search
Migliorie a: Archive, Authentication, Configuration,
ConsoleTools, Database, DatabaseSchema, EventLog,
Graph, Mail, Tree e Workflow
2008.1 alpha2
Nuovo componente: Document
Migliorie a: Base, EventLog, Search e Userinput
2008.1 beta: a partire dal 27 maggio
12. Requisiti di sistema
PHP versione 5.1.6 (per Tree e Webdav PHP 5.2.1)
Alcune estensioni php sono necessarie per alcuni componenti,
oppure ne aumentano le capacità
es: Archive necessita di zlib (presente nell'installazione
standard di PHP) e bz2, opzionalmente può utilizzare
« posix » per la gestione dei permessi dei file
Elenco esaustivo: su
http://ezcomponents.org/overview/requirements.html
(c'è anche un quick reference su come compilare le estensioni
mancanti)
13. Ambiente di sviluppo: suggerimenti
Sempre sviluppare con display_errors = On, log_errors = On,
error_reporting = E_ALL
Dove si trova il log degli errori di PHP? E del webserver?
XDebug - l'amico del PHP OOP (e non solo):
stack traces completi
Debugging step-by-step (con IDE adeguati)
Analisi della code coverage (con tool di visualizzazione)
Profiling (con kcachegrind/wincachegrind)
14. Ambiente di sviluppo: altri suggerimenti
● Imprescindibile per lo sviluppo web: Firebug
● altre estensioni Firefox utili: « Web developer »,
« YSlow », « LiveHTTPHeaders », « IETab »,
« Console2 », « Selenium IDE »
● Per gli sviluppatori windows: UNXUTILS
● In produzione:
● Sempre utilizzare una opcode cache (APC, Eaccelerator,
Xcache, Zend)
● Utili nel troubleshooting: Phpinfo, server-status e
server-info
15. Installazione 1: via PEAR
1. Avere una installazione di PHP 5.1 e PEAR funzionante
2. Aggiungere il canale components.ez.no all'installer PEAR
pear channel-discover components.ez.no
3. Scaricare effettivamente i componenti
pear install -a ezc/eZComponents
Per aggiornare una installazione esistente:
pear upgrade ezc/eZComponents
pear help <nomecomando> è vostro amico!
16. Installazione 2: via SVN
Per chi è interessato allo sviluppo della libreria o ha bisogno
di una patch appena rilasciata
1. Avere una installazione di PHP 5.1 e un client SVN
2. Creare una directory dove installare i componenti e ivi
svn co http://svn.ez.no/svn/ezcomponents/trunk
3. Scaricare lo script che imposta l'ambiente di sviluppo
svn co http://svn.ez.no/svn/ezcomponents/scripts
./scripts/setup-env.sh (o scriptssetup-env.bat)
E' ovviamente possibile fare un checkout limitato di solo
qualche componente – attenzione alle dipendenze!
17. Installazione 3: old school (a.k.a. "a mano")
1. Scaricare e decomprimere la tarball
wget
http://ezcomponents.org/files/downloads/ezcomponents-2007
tar -xjf ezcomponents-2007.2.1.tar.bz2
3. Impostare correttamente l'Include Path (manca il 2!)
18. Configurazione
Include path: settato in automatico da PEAR, altrimenti
va messa la directory radice in cui si è scaricato il software
Autoload: in automatico tutte le classi degli
eZComponents vengono caricate da ezcBase
require_once "Base/base.php";
function __autoload( $className )
{
ezcBase::autoload( $className );
}
NB: per installazioni via SVN o tarball
require_once "Base/src/base.php";
20. Domande?
Grazie dell'attenzione!
Gaetano Giunta
Senior consultant
eZ Systems Western Europe
26 rue de la république
69002 Lyon
tel : +33 (0)4.78.37.01.56
email : gg@ez.no
http://ezcomponents.org
http://ez.no/community/forums/ez_components
http://lists.ez.no/mailman/listinfo/components