Simple design. Matteo Vaccari http://matteo.vaccari.name/ Milano XP User Group, 19 settembre 2007

Documenti analoghi
Tecnologia e Applicazioni Internet 2011/12

Guida all upgrade alla versione 1.3.1

Wordpress. Acquistare un sito web. Colleghiamoci con il sito

Corso di programmazione di sistemi mobile 1. Android. Google Cloud Messaging

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Installazione e Configurazione della strumentazione necessaria. Antonio Gallo info@laboratoriolibero.com

Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans

INSTALLAZIONE DI JOOMLA! Guida alla installazione di Joomla!

Laboratorio di Informatica Lezione 2

Installazione Alfresco Avanzata

Le command line di Java

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY

SVILUPPO DEL BLOG Autori: Ilari Michele, Cimini Oscar, Zaleski Dawid

Eclipse e Subversion

GovPay 2.0. Manuale Installazione

IB Connector. Architettura

MySQL Database Management System

Tutorial MYSQL. Creazione linked server con Microsoft SQL Server per lettura dati da MYSQL. Validità: Febbraio 2013

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A.

Primi passi con Apache Tomcat. L application server dell Apache group

Configuration Managment. Tutorial. Configuration Managment Creare un progetto SVN su Ubuntu. Creare un progetto SVN su Ubuntu.

1 JSPDynPage, componenti portale e Java Server Pages

Tale attività non è descritta in questa dispensa

Configurazione avanzata di IBM SPSS Modeler Entity Analytics

Corso di Informatica Modulo T3 B2 - Database in rete

Progetto di Ingegneria del Software 2. SWIMv2

01/05/2013 Istruzioni per l installazione

INSTALLAZIONE DI OPENVPN PER MAC OS X

Installazione e configurazione di Java DB in Windows (7)

filrbox Guida all uso dell applicazione DESKTOP Pag. 1 di 27

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software:

GUIDA AL PRONTUARIO MOBILE

Guida all upgrade alla versione 1.4.1

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

Eclipse. Avviare un progetto e compilare un semplice programma

Realizzazione di una classe con un associazione

BREVE MANUALE PER ARCHIVE 2.0. Schermata Principale

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

JNDI. Massimo Merro Programmazione di Rete 214 / 229

Iniziamo la panoramica sul funzionamento dell'svn sulla suite S.A.

Corso Eclipse. Prerequisiti. 3 Window Builder

Corso Eclipse. Prerequisiti. 1 Introduzione

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

NOZIONI BASE SHELL E SCRIPT LINUX

SUDOKU MATCH (beta) Gianpaolo Francesco Trotta

Associazione Culturale VERDEBINARIO

Introduzione ad Eclipse

Guida per la configurazione dei Gateway beronet con SIP Trunk VoIP Voice

AVCP-Xml Manuale per l'aggiornamento alla versione Provincia di Cremona

Portale Suap SPORVIC2 Manuale Prerequisiti tecnici di sistema

Installazione del Software. per lo Sviluppo di Applicazioni Java

Installazione & Configurazione Php e MySQL su Mac Os X. Php

XML e PHP. Gestire XML con PHP. Appendice

I file WAR. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2004/05-1

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

SMS4i. Copyright JetLab S.r.l. Tutti i diritti riservati

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

GLI SCRIPT DI SHELL. Lucidi a cura di B.De Carolis. UNIX shell script UdB- Dip Informatica

Creazione e installazione di un NAS utilizzando FreeNAS

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Manuale d uso della libreria Volta Log

Installazione Archivio CDP su postazioni remote

PG5 Starter Training PG5 Core e WebEditor 8 Daniel Ernst EN Stefano Peracchi IT

Come aggiungere il tuo sito.

ISI s.r.l. Corso di Access 05 CREARE UN ELENCO MAILING ED INVIARE MESSAGGI DI POSTA ELETTRONICA Pag. 1/6

Introduzione a Dev-C++

Manuale LiveBox WEB UTENTE.

Server Galileo.

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014

2.1 Installazione e configurazione LMS [4]

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Eclipse - Nozioni Base

MagiCum S.r.l. Progetto Inno-School

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Fate doppio click sul file con nome postgresql-8.0.msi e impostate le varie voci come riportato nelle immagini seguenti:

Usare Python in Linux

xcatalog gestionale del catalogo locale guida all Installazione versione 1.0

I-DEAS Guida rapida all installazione in ambiente Windows. v.1 Marzo 2006

Laboratorio di PROGRAMMAZIONE - a.a. 2010/2011

Manuale di installazione e/o aggiornamento del client Citrix per la Rete Vendita

ISPConfig: configurazione di un sito

Cliccare su "Esegui" oppure su salva se si desidera effettuare l'installazione in un secondo momento.

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Sviluppo Applicativi personalizzati per automatizzare le Analisi SPC

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

SJphone è disponibile nelle versione per Mac all indirizzo

Breve guida a Linux Mint

ATTIVAZIONE SCHEDE ETHERNET PER STAMPANTI SATO SERIE ENHANCED

Istruzioni installazione mandato Informatico

INSTALLAZIONE DEL NUOVO SERVIZIO VPN VIRTUAL PRIVATE NETWORK (sistemi Windows e Android)

Esercitazione PAM. (Php Apache MySQL)

Laboratorio di Sistemi Distribuiti Leonardo Mariani

Introduzione a Wordpress. Vincenzo Bianculli

Iniziativa PartsPartner Catalogo EWA net

SCS Data Manager. Note sul rilascio. Versione 3.00

operazioni preliminari 1. generare il proprio sito con FCM (stagione in corso) selezionando, nelle interrogazioni, "tutti i dati" come in figura

Transcript:

Simple design Matteo Vaccari http://matteo.vaccari.name/ Milano XP User Group, 19 settembre 2007 1

Simple project configuration Simple interfaces Simple (internal) design 2

5 minuti Installare ed eseguire il progetto non deve richiedere più di 5 minuti 3

I. Scaricare maven >= 2.06 e aggiungere l'eseguibile di maven nella variabile $PATH II. Importare il certificato pubblico del servernel truststore della JVM(tipicamente in $JAVA_HOME/jre/lib/security/cacerts). Questo può essere fatto a riga di comando tramite l'utility keytool o in modalità grafica tramite la comoda utility Portecle 4

III.Configurare la proprie credenziali per maven copiando il file settings.xml opportunamente modificato nella cartella $HOME/.m2 (se si vuole configurare per user) o in $M2_HOME/conf (se si vuole configurare system-wide). Va inoltre impostato il repository per essere usato come repository di proxy. 5

IV.Aggiungere al repository maven la versione da me patchata di wagon-webdav-provider plugin e il suo POM. Questo si ottiene (dopo aver scaricato i file in una cartella che chiameremo $DOWNLOADFOLDER) lanciando il comando cd $DOWNLOADFOLDER mvn install:install-file -DgroupId=org.apache.maven.wagon -DartifactId=wagon-webdav -Dversion=1.0-beta-3 -Dpackaging=jar -Dfile=wagon-webdav-1.0-beta-3.jar mvn install:install-file -DgroupId=org.apache.maven.wagon - DartifactId=wagon-webdav -Dversion=1.0-beta-3 - Dpackaging=pom -Dfile=wagon-webdav-1.0-beta-3.pom 6

V. Scaricare i sorgenti con svn co https://www.example.com/repos/ dev/.../trunk VI... VII... VIII... XLVI.... non abbiamo ancora finito... 7

Ho installato il progetto su 5 macchine, e ogni volta ho perso una giornata. I problemi erano sempre diversi... 8

There must be a better way 9

Per scaricare il progetto: svn co https://svn.mplatform.it/svn/mp/abc-unico/trunk Carica in Eclipse i due progetti abc-unico e abc-da. Per vedere funzionare il progetto: Esegui cd trunk/abc-unico script/create_db.names.sh script/server.sh Apri il browser alla url http://localhost:8080/ Inserisci admin/admin 10

#!/bin/bash # create_db.names.sh -- ricostruisce i DB echo 'Drop db.names...' mysqladmin -uroot --force drop abc_development mysqladmin -uroot --force drop abc_test echo 'Create db.names...' mysqladmin -uroot create abc_development mysqladmin -uroot create abc_test echo 'grant all on abc_development.* to abc@localhost;' mysql -uroot echo 'grant all on abc_test.* to abc@localhost;' mysql -uroot echo 'Build schema...' cat db/???_*.sql mysql -uabc abc_development cat db/???_*.sql mysql -uabc abc_test echo 'Populate development...' mysql -uabc abc_development < db/populate.sql mysql -uabc abc_development < db/user_agents.sql 11

Simple configuration 12

## TEST ## # portal.url = https://www.xxx.net:8449/foo # portal.db.username = zero9it # portal.db.password = 8an81r0 # OPTIONS portal.type = all portal.encoding = UTF-8 portal.language = it portal.incremental = false portal.xml = content.xml... 13

Capisco il significato delle var di configurazione? Sono tutte necessarie? Posso conservare le configurazioni di tutti gli ambienti in un solo progetto? 14

development: db.name: abc_development db.username: abc db.password: "" db.host: localhost test: db.name: abc_test db.username: abc db.password: "" db.host: localhost production: db.name: abcdb db.username: abc_user db.password: secret db.host: localhost 15

SimpleConfig.get( db.hostname ); SimpleConfig.setEnvironment( test ); 16

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- livello di debug --> <appender name="console" class="org.apache.log4j.consoleappender"> <param name="target" value="system.out"/> <layout class="org.apache.log4j.patternlayout"> <param name="conversionpattern" value="[h3gflat] %d{dd-mmm HH:mm:ss} [%C.%M] [%L] %p - %m%n"/> </layout> </appender> <appender name="appender" class="org.apache.log4j.dailyrollingfileappender"> <param name="append" value="true"/> <param name="datepattern" value=".yyyy-mm-dd"/> <param name="file" value="${catalina.home}/logs/h3gflat/webapp.log"/> <layout class="org.apache.log4j.patternlayout"> <param name="conversionpattern" value="%d [%t] %c.%m %p - %m%n"/> </layout> </appender> <appender name="selector" class="org.apache.log4j.dailyrollingfileappender"> <param name="append" value="true"/> <param name="datepattern" value=".yyyy-mm-dd"/> <param name="file" value="${catalina.home}/logs/h3gflat/content_selector.log"/> <layout class="org.apache.log4j.patternlayout"> <param name="conversionpattern" value="%d [%t] %c.%m %p - %m%n"/> </layout> </appender> <appender name="hbappender" class="org.apache.log4j.dailyrollingfileappender"> <param name="append" value="true"/> <param name="datepattern" value=".yyyy-mm-dd"/> <param name="file" value="${catalina.home}/logs/h3gflat/hibernate.log"/> <layout class="org.apache.log4j.patternlayout"> <param name="conversionpattern" value="%d [%t] %c.%m %p - %m%n"/> </layout> </appender>... 17

public class SimpleLogger { private static final Log log = LogFactory.getLog(SimpleLogger.class); private static final String DEFAULT_LEVEL = "INFO"; public static void info(object message) { log.info(message); } public static void configure(simpleconfig config) { String level = config.get("log.level", DEFAULT_LEVEL); String pathname = config.get("log.pathname"); if ("".equals(pathname)) { configurestandardoutput(level); } else { configurefileappender(pathname, level); } } 18

static public void configurefileappender(string pathname, String level) { Properties p = new Properties(); p.setproperty("log4j.appender.file", "org.apache.log4j.dailyrollingfileappender"); p.setproperty("log4j.appender.file.file", pathname); p.setproperty("log4j.appender.file.append", "true"); p.setproperty("log4j.appender.file.datepattern", "'.'yyyy-mm-dd"); p.setproperty("log4j.appender.file.layout", "org.apache.log4j.patternlayout"); p.setproperty("log4j.appender.file.layout.conversionpattern", "%d [%c] %m%n"); p.setproperty("log4j.rootlogger", level + ", File"); } System.setProperty("log4j.defaultInitOverride", "true"); PropertyConfigurator.configure(p); 19

SimpleLogger.configure(SimpleConfig.getConfig());... SimpleLogger.info( hai visto com è semplice?!? ); 20

Simple architecture Don t do the database s work EJB vs. Plain Old Java Objects (POJOs) Don t do the network s work WS_* vs. REST CORBA, RMI, DCOM vs. plain socket Don t do the operating system s work 21