<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-189647308945669346</atom:id><lastBuildDate>Mon, 16 Apr 2012 03:35:29 +0000</lastBuildDate><category>ode bpel jboss mysql java deploy admin</category><title>michele mondora</title><description>un blog verde pisello</description><link>http://mmondora.mondora.com/</link><managingEditor>noreply@blogger.com (Michele Mondora)</managingEditor><generator>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-189647308945669346.post-3939257572164054439</guid><pubDate>Tue, 20 Jan 2009 20:26:00 +0000</pubDate><atom:updated>2009-01-20T12:56:53.883-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>ode bpel jboss mysql java deploy admin</category><title>apache Ode, JBoss and MySql.</title><description>Today topic is installing on JBoss 4.2.3-GA, &lt;a href="http://ode.apache.org/"&gt;apache ODE 1,2&lt;/a&gt; using MySql as a db.&lt;br /&gt;&lt;br /&gt;A brief search with google and no interesting documentation available, and after going through the apache ode war install for tomcat, I starting deploy.&lt;br /&gt;&lt;br /&gt;First of all, get your ode binary war from a &lt;a href="http://www.apache.org/dyn/closer.cgi/ode/apache-ode-war-1.2.zip"&gt;mirror.&lt;/a&gt;&lt;br /&gt;Unpack zip, and unpack war: you are going to modify the war configuration. Let's assume that the unpack ODE is in "ode" directory.&lt;br /&gt;&lt;br /&gt;Under ode/WEB-INF/conf create file ode-axis2.properties with:&lt;font style="font-style: italic; color: rgb(51, 51, 255);"&gt;&lt;br /&gt;ode-axis2.db.mode=EXTERNAL&lt;br /&gt;ode-axis2.db.ext.dataSource=java:comp/env/jdbc/ODEDB&lt;br /&gt;ode.persistence=hibernate&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# the default tx factory is geronimo. org.apache.ode.il.EmbeddedGeronimoFactory&lt;br /&gt;# change it with the JBoss one.&lt;br /&gt;#&lt;br /&gt;ode-axis2.tx.factory.class=org.apache.ode.axis2.util.JBossFactory&lt;br /&gt;#ode-axis2.dao.factory=org.apache.ode.daohib.bpel.BpelDAOConnectionFactoryImpl&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Hibernate configuration&lt;br /&gt;# http://www.hibernate.org/hib_docs/reference/en/html/configuration-optional.html&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;hibernate.dialect=org.hibernate.dialect.MySQL5Dialect&lt;br /&gt;hibernate.hbm2ddl.auto=update&lt;br /&gt;hibernate.show_sql=true&lt;br /&gt;hibernate.current_session_context_class=jta&lt;br /&gt;hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;Add your Hibernate Configuration, the one provided in the one I use. Using&lt;br /&gt;&lt;font style="font-style: italic;"&gt;ode-axis2.db.ext.dataSource=java:comp/env/jdbc/ODEDB&lt;br /&gt;&lt;/font&gt;you are going to declare usage of a jdbc pool, through a resource-ref, so please configure the &lt;resource-ref&gt; in your web.xml like:&lt;br /&gt;&lt;font style="font-style: italic; color: rgb(51, 102, 255);"&gt;&lt;resource-ref&gt;&lt;/resource-ref&gt;&lt;/font&gt; &lt;font style="font-style: italic; color: rgb(51, 102, 255);"&gt;        &lt;res-ref-name&gt;jdbc/ODEDB&lt;/res-ref-name&gt;&lt;/font&gt; &lt;font style="font-style: italic; color: rgb(51, 102, 255);"&gt;        &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;&lt;/font&gt; &lt;font style="font-style: italic; color: rgb(51, 102, 255);"&gt;        &lt;res-auth&gt;Container&lt;/res-auth&gt;&lt;/font&gt; &lt;font style="font-style: italic; color: rgb(51, 102, 255);"&gt;        &lt;res-sharing-scope&gt;Shareable&lt;/res-sharing-scope&gt;&lt;/font&gt; &lt;font style="font-style: italic;"&gt;&lt;font style="color: rgb(51, 102, 255);"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/resource-ref&gt;&lt;br /&gt;&lt;br /&gt;Then you must create a jboss-web to resolve the resource-ref into a concrete jdbc datasource. In WEB-INF, create jboss-web and add:&lt;font style="font-style: italic;"&gt;&lt;br /&gt;&lt;font style="color: rgb(51, 51, 255);"&gt;&lt;/font&gt; &lt;font style="color: rgb(51, 51, 255);"&gt;&lt;jboss-web&gt;&lt;/jboss-web&gt;&lt;/font&gt; &lt;font style="color: rgb(51, 51, 255);"&gt;    &lt;resource-ref&gt;&lt;/resource-ref&gt;&lt;/font&gt; &lt;font style="color: rgb(51, 51, 255);"&gt;        &lt;res-ref-name&gt;jdbc/ODEDB&lt;/res-ref-name&gt;&lt;/font&gt; &lt;font style="color: rgb(51, 51, 255);"&gt;        &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;&lt;/font&gt; &lt;font style="color: rgb(51, 51, 255);"&gt;        &lt;jndi-name&gt;java:/ODEDB&lt;/jndi-name&gt;&lt;/font&gt; &lt;font style="color: rgb(51, 51, 255);"&gt;    &lt;/font&gt; &lt;font style="color: rgb(51, 51, 255);"&gt;&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;Ensure to have a jdbc/ODEDB concrete datasource, and JBoss is configured with mysql jdbc driver. Ensure also to have the MySql database, with user and grants to access it.&lt;br /&gt;&lt;br /&gt;I had some troubles with Hibernate MySQL hbm2ddl.auto and Sql generation with error:&lt;br /&gt;&lt;font style="color: rgb(255, 0, 0);" size="2"&gt;&lt;font style="font-style: italic;"&gt;LARGE_DATA (ID bigint not null auto_increment, BIN_DATA blob(2G), INSERT_TIME datetime, MLOCK integer not null, primary key (ID));&lt;/font&gt; &lt;font style="font-style: italic;"&gt;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2G)&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;So with some patience (a lot of) I look into source to discover and get all the MySQL DDL to manually create all the tables needed by apache ODE:&lt;br /&gt;&lt;font style="color: rgb(51, 51, 255);" size="2"&gt;&lt;span style="font-style: italic;"&gt;CREATE TABLE ODE_ACTIVITY_RECOVERY (ID BIGINT NOT NULL, ACTIONS VARCHAR(255), ACTIVITY_ID BIGINT, CHANNEL VARCHAR(255), DATE_TIME DATETIME, DETAILS TEXT, REASON VARCHAR(255), RETRIES INTEGER, INSTANCE_ID BIGINT, PRIMARY KEY (ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_CORRELATION_SET (CORRELATION_SET_ID BIGINT NOT NULL, CORRELATION_KEY VARCHAR(255), NAME VARCHAR(255), SCOPE_ID BIGINT, PRIMARY KEY (CORRELATION_SET_ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_CORRELATOR (CORRELATOR_ID BIGINT NOT NULL, CORRELATOR_KEY VARCHAR(255), PROC_ID BIGINT, PRIMARY KEY (CORRELATOR_ID)) TYPE = innodb;&lt;br /&gt;CREATE TABLE ODE_CORSET_PROP (ID BIGINT NOT NULL, PROP_KEY VARCHAR(255), PROP_VALUE VARCHAR(255), CORRSET_ID BIGINT, PRIMARY KEY (ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_EVENT (EVENT_ID BIGINT NOT NULL, DETAIL VARCHAR(255), DATA BLOB, SCOPE_ID BIGINT, TSTAMP DATETIME, TYPE VARCHAR(255), INSTANCE_ID BIGINT, PROCESS_ID BIGINT, PRIMARY KEY (EVENT_ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_FAULT (FAULT_ID BIGINT NOT NULL, ACTIVITY_ID INTEGER, DATA TEXT, MESSAGE VARCHAR(255), LINE_NUMBER INTEGER, NAME VARCHAR(255), PRIMARY KEY (FAULT_ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_MESSAGE (MESSAGE_ID BIGINT NOT NULL, DATA TEXT, TYPE VARCHAR(255), MESSAGE_EXCHANGE_ID VARCHAR(255), PRIMARY KEY (MESSAGE_ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_MESSAGE_EXCHANGE (MESSAGE_EXCHANGE_ID VARCHAR(255) NOT NULL, CALLEE VARCHAR(255), CHANNEL VARCHAR(255), CORRELATION_ID VARCHAR(255), CORRELATION_KEYS VARCHAR(255), CORRELATION_STATUS VARCHAR(255), CREATE_TIME DATETIME, DIRECTION INTEGER, EPR TEXT, FAULT VARCHAR(255), FAULT_EXPLANATION VARCHAR(255), OPERATION VARCHAR(255), PARTNER_LINK_MODEL_ID INTEGER, PATTERN VARCHAR(255), PIPED_ID VARCHAR(255), PORT_TYPE VARCHAR(255), PROPAGATE_TRANS BIT, STATUS VARCHAR(255), CORR_ID BIGINT, PARTNER_LINK_ID BIGINT, PROCESS_ID BIGINT, PROCESS_INSTANCE_ID BIGINT, REQUEST_MESSAGE_ID BIGINT, RESPONSE_MESSAGE_ID BIGINT, PRIMARY KEY (MESSAGE_EXCHANGE_ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_MESSAGE_ROUTE (MESSAGE_ROUTE_ID BIGINT NOT NULL, CORRELATION_KEY VARCHAR(255), GROUP_ID VARCHAR(255), ROUTE_INDEX INTEGER, CORR_ID BIGINT, PROCESS_INSTANCE_ID BIGINT, PRIMARY KEY (MESSAGE_ROUTE_ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_MEX_PROP (ID BIGINT NOT NULL, PROP_KEY VARCHAR(255), PROP_VALUE VARCHAR(255), MEX_ID VARCHAR(255), PRIMARY KEY (ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_PARTNER_LINK (PARTNER_LINK_ID BIGINT NOT NULL, MY_EPR TEXT, MY_ROLE_NAME VARCHAR(255), MY_ROLE_SERVICE_NAME VARCHAR(255), MY_SESSION_ID VARCHAR(255), PARTNER_EPR TEXT, PARTNER_LINK_MODEL_ID INTEGER, PARTNER_LINK_NAME VARCHAR(255), PARTNER_ROLE_NAME VARCHAR(255), PARTNER_SESSION_ID VARCHAR(255), SCOPE_ID BIGINT, PRIMARY KEY (PARTNER_LINK_ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_PROCESS (ID BIGINT NOT NULL, GUID VARCHAR(255), NUMBER_OF_INSTANCES INTEGER, PROCESS_ID VARCHAR(255), PROCESS_TYPE VARCHAR(255), VERSION BIGINT, PRIMARY KEY (ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_PROCESS_INSTANCE (ID BIGINT NOT NULL, DATE_CREATED DATETIME, EXECUTION_STATE BLOB, LAST_ACTIVE_TIME DATETIME, LAST_RECOVERY_DATE DATETIME, PREVIOUS_STATE SMALLINT, SEQUENCE BIGINT, INSTANCE_STATE SMALLINT, FAULT_ID BIGINT, INSTANTIATING_CORRELATOR_ID BIGINT, PROCESS_ID BIGINT, ROOT_SCOPE_ID BIGINT, PRIMARY KEY (ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_SCOPE (SCOPE_ID BIGINT NOT NULL, MODEL_ID INTEGER, SCOPE_NAME VARCHAR(255), SCOPE_STATE VARCHAR(255), PARENT_SCOPE_ID BIGINT, PROCESS_INSTANCE_ID BIGINT, PRIMARY KEY (SCOPE_ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_XML_DATA (XML_DATA_ID BIGINT NOT NULL, DATA TEXT, IS_SIMPLE_TYPE BIT, NAME VARCHAR(255), SCOPE_ID BIGINT, PRIMARY KEY (XML_DATA_ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_XML_DATA_PROP (ID BIGINT NOT NULL, PROP_KEY VARCHAR(255), PROP_VALUE VARCHAR(255), XML_DATA_ID BIGINT, PRIMARY KEY (ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE OPENJPA_SEQUENCE_TABLE (ID TINYINT NOT NULL, SEQUENCE_VALUE BIGINT, PRIMARY KEY (ID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE STORE_DU (NAME VARCHAR(255) NOT NULL, DEPLOYDT DATETIME, DEPLOYER VARCHAR(255), DIR VARCHAR(255), PRIMARY KEY (NAME)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE STORE_PROCESS (PID VARCHAR(255) NOT NULL, STATE VARCHAR(255), TYPE VARCHAR(255), VERSION BIGINT, DU VARCHAR(255), PRIMARY KEY (PID)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE STORE_PROCESS_PROP (id BIGINT NOT NULL, PROP_KEY VARCHAR(255), PROP_VAL VARCHAR(255), PRIMARY KEY (id)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE STORE_PROC_TO_PROP (ProcessConfDaoImpl_PID VARCHAR(255), element_id BIGINT) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE TABLE STORE_VERSIONS (id BIGINT NOT NULL, VERSION BIGINT, PRIMARY KEY (id)) TYPE = innodb;&lt;br /&gt;&lt;br /&gt;CREATE INDEX I_D_CTVRY_INSTANCE ON ODE_ACTIVITY_RECOVERY (INSTANCE_ID);&lt;br /&gt;CREATE INDEX I_D_CR_ST_SCOPE ON ODE_CORRELATION_SET (SCOPE_ID);&lt;br /&gt;CREATE INDEX I_D_CRLTR_PROCESS ON ODE_CORRELATOR (PROC_ID);&lt;br /&gt;CREATE INDEX I_D_CRPRP_CORRSET ON ODE_CORSET_PROP (CORRSET_ID);&lt;br /&gt;CREATE INDEX I_OD_VENT_INSTANCE ON ODE_EVENT (INSTANCE_ID);&lt;br /&gt;CREATE INDEX I_OD_VENT_PROCESS ON ODE_EVENT (PROCESS_ID);&lt;br /&gt;CREATE INDEX I_OD_MSSG_MESSAGEEXCHANGE ON ODE_MESSAGE (MESSAGE_EXCHANGE_ID);&lt;br /&gt;CREATE INDEX I_D_MSHNG_CORRELATOR ON ODE_MESSAGE_EXCHANGE (CORR_ID);&lt;br /&gt;CREATE INDEX I_D_MSHNG_PARTNERLINK ON ODE_MESSAGE_EXCHANGE (PARTNER_LINK_ID);&lt;br /&gt;CREATE INDEX I_D_MSHNG_PROCESS ON ODE_MESSAGE_EXCHANGE (PROCESS_ID);&lt;br /&gt;CREATE INDEX I_D_MSHNG_PROCESSINST ON ODE_MESSAGE_EXCHANGE (PROCESS_INSTANCE_ID);&lt;br /&gt;CREATE INDEX I_D_MSHNG_REQUEST ON ODE_MESSAGE_EXCHANGE (REQUEST_MESSAGE_ID);&lt;br /&gt;CREATE INDEX I_D_MSHNG_RESPONSE ON ODE_MESSAGE_EXCHANGE (RESPONSE_MESSAGE_ID);&lt;br /&gt;CREATE INDEX I_D_MS_RT_CORRELATOR ON ODE_MESSAGE_ROUTE (CORR_ID);&lt;br /&gt;CREATE INDEX I_D_MS_RT_PROCESSINST ON ODE_MESSAGE_ROUTE (PROCESS_INSTANCE_ID);&lt;br /&gt;CREATE INDEX I_D_MXPRP_MEX ON ODE_MEX_PROP (MEX_ID);&lt;br /&gt;CREATE INDEX I_D_PRLNK_SCOPE ON ODE_PARTNER_LINK (SCOPE_ID);&lt;br /&gt;CREATE INDEX I_D_PRTNC_FAULT ON ODE_PROCESS_INSTANCE (FAULT_ID);&lt;br /&gt;CREATE INDEX I_D_PRTNC_INSTANTIATINGCORRELATOR ON ODE_PROCESS_INSTANCE (INSTANTIATING_CORRELATOR_ID);&lt;br /&gt;CREATE INDEX I_D_PRTNC_PROCESS ON ODE_PROCESS_INSTANCE (PROCESS_ID);&lt;br /&gt;CREATE INDEX I_D_PRTNC_ROOTSCOPE ON ODE_PROCESS_INSTANCE (ROOT_SCOPE_ID);&lt;br /&gt;CREATE INDEX I_OD_SCOP_PARENTSCOPE ON ODE_SCOPE (PARENT_SCOPE_ID);&lt;br /&gt;CREATE INDEX I_OD_SCOP_PROCESSINSTANCE ON ODE_SCOPE (PROCESS_INSTANCE_ID);&lt;br /&gt;CREATE INDEX I_D_XM_DT_SCOPE ON ODE_XML_DATA (SCOPE_ID);&lt;br /&gt;CREATE INDEX I_D_XMPRP_XMLDATA ON ODE_XML_DATA_PROP (XML_DATA_ID);&lt;br /&gt;CREATE INDEX I_STR_CSS_DU ON STORE_PROCESS (DU);&lt;br /&gt;CREATE INDEX I_STR_PRP_ELEMENT ON STORE_PROC_TO_PROP (element_id);&lt;br /&gt;CREATE INDEX I_STR_PRP_PROCESSCONFDAOIMPL_PID ON STORE_PROC_TO_PROP (ProcessConfDaoImpl_PID);&lt;br /&gt;&lt;br /&gt;# IMPORTED FROM OPENSYMPHONY QUARTZ, SEE NOTICE FILE FOR DETAILS&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# In your Quartz properties file, you'll need to set&lt;br /&gt;# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate&lt;br /&gt;#&lt;br /&gt;#&lt;br /&gt;# By: Ron Cordell - roncordell&lt;br /&gt;#  I didn't see this anywhere, so I thought I'd post it here. This is the script from Quartz to create the tables in a MySQL database, modified to use INNODB instead of MYISAM.&lt;br /&gt;&lt;br /&gt;DROP TABLE IF EXISTS QRTZ_JOB_LISTENERS;&lt;br /&gt;DROP TABLE IF EXISTS QRTZ_TRIGGER_LISTENERS;&lt;br /&gt;DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;&lt;br /&gt;DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;&lt;br /&gt;DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;&lt;br /&gt;DROP TABLE IF EXISTS QRTZ_LOCKS;&lt;br /&gt;DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;&lt;br /&gt;DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;&lt;br /&gt;DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;&lt;br /&gt;DROP TABLE IF EXISTS QRTZ_TRIGGERS;&lt;br /&gt;DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;&lt;br /&gt;DROP TABLE IF EXISTS QRTZ_CALENDARS;&lt;br /&gt;&lt;br /&gt;CREATE TABLE QRTZ_JOB_DETAILS(&lt;br /&gt;JOB_NAME VARCHAR(80) NOT NULL,&lt;br /&gt;JOB_GROUP VARCHAR(80) NOT NULL,&lt;br /&gt;DESCRIPTION VARCHAR(120) NULL,&lt;br /&gt;JOB_CLASS_NAME VARCHAR(128) NOT NULL,&lt;br /&gt;IS_DURABLE VARCHAR(1) NOT NULL,&lt;br /&gt;IS_VOLATILE VARCHAR(1) NOT NULL,&lt;br /&gt;IS_STATEFUL VARCHAR(1) NOT NULL,&lt;br /&gt;REQUESTS_RECOVERY VARCHAR(1) NOT NULL,&lt;br /&gt;JOB_DATA BLOB NULL,&lt;br /&gt;PRIMARY KEY (JOB_NAME,JOB_GROUP))&lt;br /&gt;TYPE=InnoDB;&lt;br /&gt;&lt;br /&gt;CREATE TABLE QRTZ_JOB_LISTENERS (&lt;br /&gt;JOB_NAME VARCHAR(80) NOT NULL,&lt;br /&gt;JOB_GROUP VARCHAR(80) NOT NULL,&lt;br /&gt;JOB_LISTENER VARCHAR(80) NOT NULL,&lt;br /&gt;PRIMARY KEY (JOB_NAME,JOB_GROUP,JOB_LISTENER),&lt;br /&gt;INDEX (JOB_NAME, JOB_GROUP),&lt;br /&gt;FOREIGN KEY (JOB_NAME,JOB_GROUP)&lt;br /&gt;REFERENCES QRTZ_JOB_DETAILS(JOB_NAME,JOB_GROUP))&lt;br /&gt;TYPE=InnoDB;&lt;br /&gt;&lt;br /&gt;CREATE TABLE QRTZ_TRIGGERS (&lt;br /&gt;TRIGGER_NAME VARCHAR(80) NOT NULL,&lt;br /&gt;TRIGGER_GROUP VARCHAR(80) NOT NULL,&lt;br /&gt;JOB_NAME VARCHAR(80) NOT NULL,&lt;br /&gt;JOB_GROUP VARCHAR(80) NOT NULL,&lt;br /&gt;IS_VOLATILE VARCHAR(1) NOT NULL,&lt;br /&gt;DESCRIPTION VARCHAR(120) NULL,&lt;br /&gt;NEXT_FIRE_TIME BIGINT(13) NULL,&lt;br /&gt;PREV_FIRE_TIME BIGINT(13) NULL,&lt;br /&gt;TRIGGER_STATE VARCHAR(16) NOT NULL,&lt;br /&gt;TRIGGER_TYPE VARCHAR(8) NOT NULL,&lt;br /&gt;START_TIME BIGINT(13) NOT NULL,&lt;br /&gt;END_TIME BIGINT(13) NULL,&lt;br /&gt;CALENDAR_NAME VARCHAR(80) NULL,&lt;br /&gt;MISFIRE_INSTR SMALLINT(2) NULL,&lt;br /&gt;JOB_DATA BLOB NULL,&lt;br /&gt;PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),&lt;br /&gt;INDEX (JOB_NAME, JOB_GROUP),&lt;br /&gt;FOREIGN KEY (JOB_NAME,JOB_GROUP)&lt;br /&gt;REFERENCES QRTZ_JOB_DETAILS(JOB_NAME,JOB_GROUP))&lt;br /&gt;TYPE=InnoDB;&lt;br /&gt;&lt;br /&gt;CREATE TABLE QRTZ_SIMPLE_TRIGGERS (&lt;br /&gt;TRIGGER_NAME VARCHAR(80) NOT NULL,&lt;br /&gt;TRIGGER_GROUP VARCHAR(80) NOT NULL,&lt;br /&gt;REPEAT_COUNT BIGINT(7) NOT NULL,&lt;br /&gt;REPEAT_INTERVAL BIGINT(12) NOT NULL,&lt;br /&gt;TIMES_TRIGGERED BIGINT(7) NOT NULL,&lt;br /&gt;PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),&lt;br /&gt;INDEX (TRIGGER_NAME, TRIGGER_GROUP),&lt;br /&gt;FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)&lt;br /&gt;REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))&lt;br /&gt;TYPE=InnoDB;&lt;br /&gt;&lt;br /&gt;CREATE TABLE QRTZ_CRON_TRIGGERS (&lt;br /&gt;TRIGGER_NAME VARCHAR(80) NOT NULL,&lt;br /&gt;TRIGGER_GROUP VARCHAR(80) NOT NULL,&lt;br /&gt;CRON_EXPRESSION VARCHAR(80) NOT NULL,&lt;br /&gt;TIME_ZONE_ID VARCHAR(80),&lt;br /&gt;PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),&lt;br /&gt;INDEX (TRIGGER_NAME, TRIGGER_GROUP),&lt;br /&gt;FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)&lt;br /&gt;REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))&lt;br /&gt;TYPE=InnoDB;&lt;br /&gt;&lt;br /&gt;CREATE TABLE QRTZ_BLOB_TRIGGERS (&lt;br /&gt;TRIGGER_NAME VARCHAR(80) NOT NULL,&lt;br /&gt;TRIGGER_GROUP VARCHAR(80) NOT NULL,&lt;br /&gt;BLOB_DATA BLOB NULL,&lt;br /&gt;PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),&lt;br /&gt;INDEX (TRIGGER_NAME, TRIGGER_GROUP),&lt;br /&gt;FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)&lt;br /&gt;REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))&lt;br /&gt;TYPE=InnoDB;&lt;br /&gt;&lt;br /&gt;CREATE TABLE QRTZ_TRIGGER_LISTENERS (&lt;br /&gt;TRIGGER_NAME VARCHAR(80) NOT NULL,&lt;br /&gt;TRIGGER_GROUP VARCHAR(80) NOT NULL,&lt;br /&gt;TRIGGER_LISTENER VARCHAR(80) NOT NULL,&lt;br /&gt;PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_LISTENER),&lt;br /&gt;INDEX (TRIGGER_NAME, TRIGGER_GROUP),&lt;br /&gt;FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)&lt;br /&gt;REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))&lt;br /&gt;TYPE=InnoDB;&lt;br /&gt;&lt;br /&gt;CREATE TABLE QRTZ_CALENDARS (&lt;br /&gt;CALENDAR_NAME VARCHAR(80) NOT NULL,&lt;br /&gt;CALENDAR BLOB NOT NULL,&lt;br /&gt;PRIMARY KEY (CALENDAR_NAME))&lt;br /&gt;TYPE=InnoDB;&lt;br /&gt;&lt;br /&gt;CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS (&lt;br /&gt;TRIGGER_GROUP VARCHAR(80) NOT NULL,&lt;br /&gt;PRIMARY KEY (TRIGGER_GROUP))&lt;br /&gt;TYPE=InnoDB;&lt;br /&gt;&lt;br /&gt;CREATE TABLE QRTZ_FIRED_TRIGGERS (&lt;br /&gt;ENTRY_ID VARCHAR(95) NOT NULL,&lt;br /&gt;TRIGGER_NAME VARCHAR(80) NOT NULL,&lt;br /&gt;TRIGGER_GROUP VARCHAR(80) NOT NULL,&lt;br /&gt;IS_VOLATILE VARCHAR(1) NOT NULL,&lt;br /&gt;INSTANCE_NAME VARCHAR(80) NOT NULL,&lt;br /&gt;FIRED_TIME BIGINT(13) NOT NULL,&lt;br /&gt;STATE VARCHAR(16) NOT NULL,&lt;br /&gt;JOB_NAME VARCHAR(80) NULL,&lt;br /&gt;JOB_GROUP VARCHAR(80) NULL,&lt;br /&gt;IS_STATEFUL VARCHAR(1) NULL,&lt;br /&gt;REQUESTS_RECOVERY VARCHAR(1) NULL,&lt;br /&gt;PRIMARY KEY (ENTRY_ID))&lt;br /&gt;TYPE=InnoDB;&lt;br /&gt;&lt;br /&gt;CREATE TABLE QRTZ_SCHEDULER_STATE (&lt;br /&gt;INSTANCE_NAME VARCHAR(80) NOT NULL,&lt;br /&gt;LAST_CHECKIN_TIME BIGINT(13) NOT NULL,CHECKIN_INTERVAL BIGINT(13) NOT NULL,&lt;br /&gt;RECOVERER VARCHAR(80) NULL,&lt;br /&gt;PRIMARY KEY (INSTANCE_NAME))&lt;br /&gt;TYPE=InnoDB;&lt;br /&gt;&lt;br /&gt;CREATE TABLE QRTZ_LOCKS (&lt;br /&gt;LOCK_NAME VARCHAR(40) NOT NULL,&lt;br /&gt;PRIMARY KEY (LOCK_NAME))&lt;br /&gt;TYPE=InnoDB;&lt;br /&gt;&lt;br /&gt;INSERT INTO QRTZ_LOCKS values('TRIGGER_ACCESS');&lt;br /&gt;INSERT INTO QRTZ_LOCKS values('JOB_ACCESS');&lt;br /&gt;INSERT INTO QRTZ_LOCKS values('CALENDAR_ACCESS');&lt;br /&gt;INSERT INTO QRTZ_LOCKS values('STATE_ACCESS');&lt;br /&gt;INSERT INTO QRTZ_LOCKS values('MISFIRE_ACCESS');&lt;br /&gt;commit;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DROP TABLE IF EXISTS ODE_JOB;&lt;br /&gt;&lt;br /&gt;CREATE TABLE ODE_JOB (&lt;br /&gt;  jobid CHAR(64)  NOT NULL DEFAULT '',&lt;br /&gt;  ts BIGINT  NOT NULL DEFAULT 0,&lt;br /&gt;  nodeid char(64)  NULL,&lt;br /&gt;  scheduled int  NOT NULL DEFAULT 0,&lt;br /&gt;  transacted int  NOT NULL DEFAULT 0,&lt;br /&gt;  details blob(4096)  NULL,&lt;br /&gt;  PRIMARY KEY(jobid),&lt;br /&gt;  INDEX IDX_ODE_JOB_TS(ts),&lt;br /&gt;  INDEX IDX_ODE_JOB_NODEID(nodeid)&lt;br /&gt;)&lt;br /&gt;TYPE=InnoDB;&lt;br /&gt;&lt;br /&gt;create table LARGE_DATA (ID bigint not null auto_increment, BIN_DATA blob, INSERT_TIME datetime, MLOCK integer not null, primary key (ID));&lt;br /&gt;&lt;br /&gt;COMMIT;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;after creation of tables, but before deploy the new ode custom war delete the jta impelemtation provided in WEB-INF/lib/geronimo-jta_1.1_spec-1.1.jar Simply delete the file.&lt;br /&gt;&lt;br /&gt;Repack the war or keep it unpack (as I prefere in this customization) and deploy it copying to your JBoss server deploy directory.&lt;br /&gt;&lt;br /&gt;Your apache ode is ready to go.&lt;br /&gt;One more thing:&lt;br /&gt;start your JBOSS with&lt;br /&gt;&lt;code&gt;JAVA_OPTS="-Dode.persistence=hibernate"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And welcome to the open ODE, hosted on JBOSS and MySql.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/189647308945669346-3939257572164054439?l=mmondora.mondora.com' alt='' /&gt;&lt;/div&gt;</description><link>http://mmondora.mondora.com/2009/01/apache-ode-jboss-and-mysql.html</link><author>noreply@blogger.com (Michele Mondora)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-189647308945669346.post-2019016171528271154</guid><pubDate>Fri, 13 Jun 2008 13:44:00 +0000</pubDate><atom:updated>2008-06-13T06:46:52.698-07:00</atom:updated><title>Fourth day of the Enterprise 2.0 conf</title><description>&lt;span style="font-size:130%;"&gt;Day four&lt;/span&gt; is been full of stuff to do and no minutes to waiste. Starting with a ealy breakfast, with a round trip in the lounge and breakfast room to search for and talk with people.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;After breakfast&lt;/span&gt; Hotel checkout items. Funny, it's first time I do an "express checkout". No human interface. Only check the bill and put the authorization for the expenses into a bowl.&lt;br /&gt;Thinking about how no-social is, and on the other side time and resource save for the infrastructure; however standard checkout is available. I, as a digital social community oriented, choose for express checkout and invoice via e-mail.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The first speech &lt;/span&gt;I attend is about opensource and Enterprise 2.0. Three opensource party:&lt;br /&gt;Bob bickel: for ringside.  A new company thatis focus on creating a new community open source platform.&lt;br /&gt;John Newton: Alfresco. CMS is transforming. Content as a service, in the enterprise but coming also from customer.&lt;br /&gt;Jeff Whatcodd, acquia. Acquia is building opensource on Drupal. 2.0 success with 2.0 features.&lt;br /&gt;Networking works fine in this session.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Session two &lt;/span&gt;is the "Lockeed Martin case study". The hall was over full. No seat available, and no air to breath. I attended, with others 10, all the speech standing up.&lt;br /&gt;Interesting case, but at the end of the day is another "networking" oriented platform. We have wiki, we have blog, we have networking. On top of Sharepoint.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The third and last speech&lt;/span&gt; was a panel of bloggers that talk about "Microbologgin". Panel is @chrisbrogan @pistachio @dennishowlett @1938media @rhappe.&lt;br /&gt;&lt;br /&gt;Some interensting stuff comes out from that discussion. At first point no one is able to convince on implementation/success case of microblog in enterprise.&lt;br /&gt;Some random notes:&lt;br /&gt;@crisbrogan says brevity scares the enterprise. This tools need serving suggestion. sharing, presence, journalism, styleish ...&lt;br /&gt;@pistachio: sharing business card is superorganize. against community.&lt;br /&gt;twitter allows natural ways to connect and exchange. Culturally shocking allow people communicate at different level. Twitter is not ready for the enterprise&lt;br /&gt;@dennishowlett the most important thing out there for you, if you have one, regardless, is your blog, personal &amp;amp; enterprise. they follow me. I dont care to follow them.&lt;br /&gt;@rhappe: information that go out of the enterprise, cannot be regulated.&lt;br /&gt;&lt;br /&gt;I learned the concept of "Continous Partial Attention" that define in a amazing way the approach of microblogging. After the panel, a little break and then in the hall, for a wrap up.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;An easy retrospective.&lt;/span&gt; Fun is apologize about the awkward wifi (that worked well only when we were leaving) and the request -I agree at all- of more warm environment; we where in a freezer. And it's time to leave, with purpose of join in Enterprise 2009 - will be 2.1 ?&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Thankyou all for the great event.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/189647308945669346-2019016171528271154?l=mmondora.mondora.com' alt='' /&gt;&lt;/div&gt;</description><link>http://mmondora.mondora.com/2008/06/fourth-day-of-enterprise-20-conf.html</link><author>noreply@blogger.com (Michele Mondora)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-189647308945669346.post-9067371621206830485</guid><pubDate>Thu, 12 Jun 2008 03:18:00 +0000</pubDate><atom:updated>2008-06-11T20:25:11.161-07:00</atom:updated><title>Third day of the Enterprise 2.0 conf</title><description>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;Morning started fine&lt;/span&gt;, finally I sleep for more than 4 hours. After a quick shower and a inroom wakecup of starbuck coffee, agent Michele is ready to go.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Breakfast&lt;/span&gt; in a meeting room, during while I meet some people from France, one Taiwan and one from Singapore. Everyone has been asked by me: why you are here ? what are you looking for ? But I have been answered always with "confused" response... that I can summarize with "looking for knowledge".&lt;br /&gt;That's it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;everyone is looking&lt;/span&gt; for knowledge and other experience in this Enterprise 2.0 hype. The basic needs is to have more communications and socialization&lt;br /&gt;Today, again, network doesn't work, despite to apologize from Westing and technical effort of the internet provider.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The first meet&lt;/span&gt; I attend is "Enterprise 2.0 Tools: A Critical Evaluation" by Tony Byrne, Founder CMS watch. It has been really interesting and pointed out, in a structured way which are some issue in evaluating vendor and tools and to match it in business area. Areas are defined in very high level, but really interesting. The most interesting outcome, for me, is that each of the software solution on the market is network oriented and not Social oriented; we are far away from social orientation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Then I moved in the keynote hall&lt;/span&gt; for the big presentation. First to speech is Oracle, talks about "Power to the People: Driving Business Innovation through Communities" by  Mark Woollen that point out the "obvius". People in organization are "hierarchy organized".&lt;br /&gt;Then came wachovia, that talks about "context social awareness" and introduce me the concept of "Generation Y worker".&lt;br /&gt;Pfizer talk about his impelemtation of a wikipedia like knowledge base and bring "meet charlie" as example. Interesting and fun a tag cloud showed about their work when the most relevant word is "scrappy".&lt;br /&gt;After some blackout (slides/pc/break) is Sony's turn to speech. They talks about their 3 years plan, started and in progress, to communitize groups. A lot of tools, for a lot of activities.&lt;br /&gt;Then a little break.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Lunch Panel Finalist. &lt;/span&gt;A short advertise, 5 minutes each, to promote his product and ask for voting. In list are: newsgator, groupswim, spaceo.us, socialSite and veodia. Running and live demo from spaceo.us and veodia. The winner is veodia that showed us a realtime streaming from the Panel.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Finally the lunch in Pavillon&lt;/span&gt;. During lunch we meet and asked info for a lot of tools. In short we talked to: traction software, veodia and connectbeam.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;It's time for a panel about mashup. &lt;/span&gt;Sadly this is the worst panel I attended, because no-one of the partecipants ( New Markets, Microsoft and IBM ) demostrated a solid knowledege in mashup and in their implementation. Only marketing knowleadge, good to pre-sale consultancy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Panel:&lt;/span&gt; Title is "Soocial Computing Platforms: Three Alternatives for the Enterprise". Partecipants are nGenera Corporation, sabre Holdings, Microsoft and Jive Software. The discussion has been not so hot, with outstanding Jiva and bad Microsoft attitudes; the say "&lt;br /&gt;people buy from Microsoft because they will be around, like IBM, for quite some time". This is frustrating. Is this Social Microsoft a new Ibm ?&lt;br /&gt;Brian from nGenera indicate a "preference to take customers to an on demand model"; in my opinion we are far forward from this. Maybe Brian is Vintage and nostalgic guy. Outstanding is the moderator, the funniest ever seen in this Conference days. He is Jevon MacDonald and define himself as "Enterprise Irregular Contibutor", runs Firestoker the first low cost social community platform.&lt;br /&gt;&lt;br /&gt;After this panel, back to the demo pavillion and contacted Jive and Newsgator. Some drink and then the day is over.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Dinner at Union Oyster House&lt;/span&gt;. It's my preferred place, so old and traditional, and so good seafood. Drink a Harpoon dark beer and boiled medium Lobster with potates. But before Lobster a crok of Oyster stew.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Wonderful&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Back to the hotel with a "cab adventure"&lt;/span&gt;. The taxi driver was in trouble because unable to find his mobile phone. So we went around, in some streets in Boston, to ask friend and collegue if anyone has seen his mobile. After a no sucessfull search he remembered that his phone has been stoled from the back seat from a girl, he take for a drive before me. So went to his brother and get the brother's phone, start calling his mobile, and asking me to hear if it is around the cab. No way. The phone is not there.&lt;br /&gt;After a while of in cab searching he said "I know, that girl has stolen my phone" and called his wife to give her the bad notice. But the phone was at home, in his wife's hands !!&lt;br /&gt;&lt;br /&gt;After half an hour of trouble, he bring me to my hotel - and miss the hotel bringing me to another one. An excellent real life, Boston adventure.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;And now it's time to rest.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/189647308945669346-9067371621206830485?l=mmondora.mondora.com' alt='' /&gt;&lt;/div&gt;</description><link>http://mmondora.mondora.com/2008/06/third-day-of-enterprise-20-conf.html</link><author>noreply@blogger.com (Michele Mondora)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-189647308945669346.post-3092778469778590045</guid><pubDate>Wed, 11 Jun 2008 03:17:00 +0000</pubDate><atom:updated>2008-06-10T20:38:53.543-07:00</atom:updated><title>Second day of the Enterprise 2.0 conf</title><description>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;the morning begin&lt;/span&gt; with a powerful headache. Your special agent Michele is ready for action.&lt;br /&gt;After some &lt;span style="font-style: italic;"&gt;liters&lt;/span&gt; of Starbuck, auto brewed in room, bold coffee I went into the lobby for the breakfast. Light breakfast with a lot of fruit to avoid heavy digestion.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.thegreattreegame.com/images/Freeze.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 93px; height: 93px;" src="http://www.thegreattreegame.com/images/Freeze.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At 8.20 meet a collegue and take place in the big empty and freezed conference room for the keynotes. Network wifi support, here in Westin, become worst every minutes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;After a brief introduction&lt;/span&gt;, the first speach is by Fedex that illustrate us how the network evolves. And they are a phisical network, with a lot of IT network, to deliver on time services.&lt;br /&gt;Next google talk us about their network application, and working in the cloud. Temperature goes down, and I must dress me more ! Outside is 35C and inside is 16!&lt;br /&gt;&lt;br /&gt;After Google, there is a fun, interesting and more community oriented speech by AIIM that summons on "Age doesn't matter. Culture matters". This has been my preferred morning sketch because presented by two people that interact between them. Not the classical client-server presentation in enterprise 1.0 style.&lt;br /&gt;&lt;br /&gt;Meanwhile the wifi network is a yo-yo. Available for seconds and off for minutes. That network instability demonstrated us that connectivity is most important.&lt;br /&gt;&lt;br /&gt;The last speech of the morning is from SocialText. Gregory Webb talk about putting Social Software 2.0 to work for organization. I found some of ideas of the developer 2.0, in that speech, especially regarding the Social Spreadsheet. A spreadsheet that is able to host in each cell a wiki page. It's a good starting point to have one-place to create a software product, made up of lot of pieces with different menas ( code, alghoritms, documentation, explanation, test ).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.eastcoastfirerescue.com/Images/tool_600.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 115px; height: 133px;" src="http://www.eastcoastfirerescue.com/Images/tool_600.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:130%;"&gt;Then the pavillions&lt;/span&gt; with demo and stands open, with 2 hours available to visit each stand and have lunch. Offer by Oracle. Today's lunch is cold buffet, with some pasta (ultra-cooked), some mexican like tortillas, chicken and chicken sandwich. No fruits at all, and iced green tea for drinks.&lt;br /&gt;&lt;br /&gt;After this, I need and I deserve a Lobster at Oyster Union House. But this is another story.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;In the afternoon&lt;/span&gt;, at 13.30 a talk from Thomas Vander Wal. About tags, and usage of tagging in corporation. Some goods idea, some interesting topics that refine my idea of tagging. When tagging focus on "Human, object, related terms".&lt;br /&gt;&lt;br /&gt;Next speech is a panel of bloggers that try to describe us the importance of logging, upon their experience. Blogs are very personal, but social creature; blogs are a sort of need to be connected to others. A lesson learned from them is blogging is about telling others how do you live/work/act. A good example is the blog &lt;a href="http://runningahospital.blogspot.com/"&gt;"Running an hospital"&lt;/a&gt; that help CEO (the blogger) to communicate with others.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;After speechs&lt;/span&gt;, back into pavillion to look at demoes (Social Spreadsheet) and tools available.&lt;br /&gt;&lt;br /&gt;But the best has to come.&lt;div style="text-align: center;"&gt;&lt;br /&gt;Dinner at Union Oyster House with&lt;br /&gt;"Lazy Man Lobster".&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://thumbs.dreamstime.com/thumb_175/1187059171dyl0mH.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 192px; height: 192px;" src="http://thumbs.dreamstime.com/thumb_175/1187059171dyl0mH.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Lazy Man because Lobster is ready to eat, without the difficult part of cut and crunch it (and seems like a tourist).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;It has been &lt;/span&gt;an hard day, full of new things, thinks and learns.  This conference is not so social oriented, it's in standard client-server mode. A really hard part is finding some commons stuff to create interest in peoples to start a discussion or creating a contacts; and not beeing english motherlanguage doesn't help at all.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mmondora/sets/72157605551033953/"&gt;Boston images available&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.stationnight.com/Homer-Sleep1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 218px; height: 152px;" src="http://www.stationnight.com/Homer-Sleep1.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/189647308945669346-3092778469778590045?l=mmondora.mondora.com' alt='' /&gt;&lt;/div&gt;</description><link>http://mmondora.mondora.com/2008/06/tuesday-first-day-of-enterprise-20.html</link><author>noreply@blogger.com (Michele Mondora)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-189647308945669346.post-6654522117271560888</guid><pubDate>Tue, 10 Jun 2008 01:40:00 +0000</pubDate><atom:updated>2008-06-09T19:26:46.319-07:00</atom:updated><title>First day in Enterprise 2.0 conf</title><description>&lt;div style="text-align: justify;"&gt;Enterprise 2.0, Boston 9 June 2008&lt;br /&gt;this message comes directly from Boston, from your special agent Michele.&lt;br /&gt;&lt;br /&gt;This has been the first day in participating at the Enterprise 2.0 conference.&lt;br /&gt;Overall satisfaction for the day is medium; I've got some difficult in finding people to talk with. Every one seems to me too young or too stranger to get a conversation. Maybe I'm not in the social community mood. :-) My few attempts all failed, with conversation fall down, after some minutes of me talking about my work and asking about others motivation in attending the conference.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Morning speech&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The morning started at 8am, after a sleepless night. During the checking phase I met Emanuele Quintarelli the only one Italian meet today.&lt;br /&gt;&lt;br /&gt;Today focus is on tutorials for introducing people into the 2.0 paradigm. My first speech I attend is titled:&lt;span style="font-style: italic;"&gt; Threat and Vulnerability Management in the Enterprise 2.0 World&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The topic is really interesting and I believe is an hot spot of Enterprise 2.0. The speech is interesting, but &lt;span style="font-weight: bold;"&gt;no&lt;/span&gt; 2.0 oriented. Each concepts, issue, threat, risk, mitigation John talked about are really present (and well known) into the "traditional" enterprise.&lt;br /&gt;&lt;br /&gt;Relevance is done to the fact that "&lt;span style="color: rgb(0, 0, 102);"&gt;data is global&lt;/span&gt;" and emerged the interesting definition and concept of "&lt;span style="color: rgb(0, 0, 102);"&gt;security by compliance&lt;/span&gt;". After 3 hours (and one 15 minutes break) my conclusion is:&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;concerns, threat, risk and mitigation are same that in the past. Take care of the increased communication between parts and distribution of data.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The speech end at 12.15 and we have lunch, offered by Microsoft.&lt;br /&gt;&lt;br /&gt;This is the first time in my life, that Microsoft offer me something. The lunch was in a "italian" mood:&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://http//farm4.static.flickr.com/3106/2566535718_3be5b24972_b.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 156px; height: 115px;" src="http://farm4.static.flickr.com/3106/2566535718_3be5b24972_t.jpg" alt="" border="0" /&gt;&lt;/a&gt;some salads&lt;/li&gt;&lt;li&gt;gnocchi with pomodoro and pesto&lt;/li&gt;&lt;li&gt;broccoli spiced with aglio and peperoncino&lt;/li&gt;&lt;li&gt;salmon spiced with salsa verde,&lt;/li&gt;&lt;li&gt;bruschetta aglio e pecorino&lt;/li&gt;&lt;li&gt;cannoli, cantuccini.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;A good idea, good tastes and parfumes, but too much garlic. Taste so good, but so heavy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Afternoon speech&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://images.parenthood.com/garlic.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 288px; height: 297px;" src="http://images.parenthood.com/garlic.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3190/2566537188_9cbc1b479a_m.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; cursor: pointer; width: 191px; height: 139px;" src="http://farm4.static.flickr.com/3190/2566537188_9cbc1b479a_m.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After lunch, at 13.30 start the &lt;a href="http://web2.wsj2.com/"&gt;Dion Hinchcliff&lt;/a&gt; event, titled &lt;span style="font-style: italic;"&gt;Implementing Enterprise 2.0: Exploring the Tools and Techniques of Emergent Chang&lt;/span&gt;e.&lt;br /&gt;&lt;br /&gt;The room was overcapacity, there was no fresh air and a heavy garlic ambient. Due to garlic, wifi network stop working, so no post available.&lt;br /&gt;&lt;br /&gt;First part, before break at 15.00 was a theorical part with state of the art definition of Enterprise 2.0 and Web 2.0 paradigm. Nothing in deep detail, it's all about common sense :-).&lt;br /&gt;&lt;br /&gt;I feel and I believe in all values in 2.0, from communities to change relationship/IOC; so no news during Dion speech, but a lot of well presented concept and information. Very useful for novice of 2.0 values.&lt;br /&gt;&lt;br /&gt;15 minutes break.&lt;br /&gt;&lt;br /&gt;Restart after break with tools presentation &lt;a href="http://www.spaceo.us/"&gt;spaceo.us&lt;/a&gt; that seems to me too much structured to be a community tools; too many click and too information on a screen. First impression is an "old style" application with 2.0 concepts (tagging). Some interesting concept are implemented, like a&lt;br /&gt;&lt;ul&gt;&lt;li&gt;lean enterprise integration bus, that enable SOA into 2.0&lt;/li&gt;&lt;li&gt;lot of widget done for principals IT infrastructures.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;After a brief talk and indication for tools to be used, the talk ends, full of garlic flavour.&lt;br /&gt;To be honest I had a lot of expectation on this speech, but it has been only an introducton of Enterprise 2.0. I see, it's in the tutorial day and is used to introduce people.&lt;br /&gt;The speech end at 17.05, as it ends, the wifi network started works.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Evening &lt;/span&gt;&lt;br /&gt;At 17.00 starts a new topic, very interesting with title "&lt;span style="font-style: italic;"&gt;An Evening in the Cloud&lt;/span&gt;". &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3132/2565717661_2c1d992f16_b.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 282px; height: 211px;" src="http://farm4.static.flickr.com/3132/2565717661_2c1d992f16_m.jpg" alt="" border="0" /&gt;&lt;/a&gt;Amazon, Google and Salesforce responds to question by customer from California Public Utilities Commission, Sudler &amp;amp; Hennessey (Medical Corporation), Object Management Group and Northeastern University.&lt;br /&gt;&lt;br /&gt;Discussion has been very fun and interesting with clarification and presentation of services by vendor, and question regarding: security, scalability, vendor lock-it, privacy, data migration, indipendence of energy generation and environment sustainability.&lt;br /&gt;With wifi on, I made a good session and twitter reportage.&lt;br /&gt;&lt;br /&gt;After the speech, at 19.30 a brief buffet offered by vendors, with purpose to meet people and eat something. At 20.30 almost all people is leaving the party, going to relaxing and rest for  tomorrow.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mmondora/2565708389/"&gt;Images available.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/189647308945669346-6654522117271560888?l=mmondora.mondora.com' alt='' /&gt;&lt;/div&gt;</description><link>http://mmondora.mondora.com/2008/06/first-day-in-enterprise-20-conf.html</link><author>noreply@blogger.com (Michele Mondora)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3106/2566535718_3be5b24972_t.jpg' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-189647308945669346.post-1096468356605929240</guid><pubDate>Tue, 27 May 2008 08:32:00 +0000</pubDate><atom:updated>2008-05-27T01:53:36.739-07:00</atom:updated><title>a quick and dirty photobucket access.</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_CsWZXXMNeVc/SDvLpXHnSDI/AAAAAAAAAEU/DX2uMG8LCRo/s1600-h/bucket_2gal.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_CsWZXXMNeVc/SDvLpXHnSDI/AAAAAAAAAEU/DX2uMG8LCRo/s400/bucket_2gal.jpg" alt="" id="BLOGGER_PHOTO_ID_5204977705797765170" border="0" /&gt;&lt;/a&gt;Some days ago I want to connect to the new api provided by &lt;a href="http://photobucket.com/developer/"&gt;photobucket&lt;/a&gt; writting only javascript code.&lt;br /&gt;&lt;br /&gt;I found that photobucket use &lt;a href="http://www.oauth.net/"&gt;OAuth&lt;/a&gt; but, from my POV, I need a quick and dirty -old style- function to get an unauthenticated call, to read all my public albums and tags.&lt;br /&gt;&lt;br /&gt;After some digging into google, my outcome is "Nothing available" from the community (and no example in Javascript on photobucket samples).&lt;br /&gt;&lt;br /&gt;I'm not a good javascript coder, butI'm proud of releasing this pieces of code, that could help others in accessing photobucket, and avoiding wasting time with encoding, timestamps and generating keys.&lt;br /&gt;&lt;br /&gt;Assumption are:&lt;br /&gt;usage of:&lt;code&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&amp;lt;script src="http://oauth.googlecode.com/svn/code/javascript/sha1.js"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;declaration of:&lt;code&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;var consumer_secret ="your_secret_by_Photobucket";&lt;br /&gt;var consumer_key="your_consumer_key_by_Photobucket";&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Here are the functions.&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:85%;"&gt;function getAlbums( user, album ) {&lt;br /&gt; var url = "http://api.photobucket.com/album/";&lt;br /&gt;&lt;br /&gt; url = url + encodeURIComponent( user + "/" + album )&lt;br /&gt; var json = callPhotobucket( url, "format=json" );&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function getTag( media ) {&lt;br /&gt; var url = "http://api.photobucket.com/media/";&lt;br /&gt;&lt;br /&gt; url = url + encodeURIComponent( media ) + "/tag" ;&lt;br /&gt; var json = callPhotobucket( url, "format=json" );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function getTimestamp() {&lt;br /&gt; var timestamp = new Date().valueOf();&lt;br /&gt; timestamp = timestamp / 1000;&lt;br /&gt; timestamp = Math.ceil( timestamp );&lt;br /&gt; return timestamp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function ping() {&lt;br /&gt; auth_url = callPhotobucket( "http://api.photobucket.com/ping", "format=json" );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function callPhotobucket( url, format ) {&lt;br /&gt; try {&lt;br /&gt;     if( url == undefined ) {&lt;br /&gt;         url = "http://api.photobucket.com/ping";&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if( format == undefined ) {&lt;br /&gt;         format = "format=json";&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     var timestamp = getTimestamp();&lt;br /&gt;     auth_nonce="nonce" + timestamp;&lt;br /&gt;&lt;br /&gt;     auth_method = "HMAC-SHA1";&lt;br /&gt;     auth_timestamp = "" + timestamp;&lt;br /&gt;&lt;br /&gt;     auth_version="1.0";&lt;br /&gt;&lt;br /&gt;     auth_consumer = "&amp;amp;oauth_consumer_key="+ encodeURIComponent( consumer_key );&lt;br /&gt;     nonce = "&amp;amp;oauth_nonce="+ encodeURIComponent( auth_nonce );&lt;br /&gt;     auth_sig_method = "&amp;amp;oauth_signature_method="+ encodeURIComponent( auth_method );&lt;br /&gt;     auth_timestamp = "&amp;amp;oauth_timestamp="+ encodeURIComponent( auth_timestamp );&lt;br /&gt;     version = "&amp;amp;oauth_version=" + encodeURIComponent( auth_version );&lt;br /&gt;&lt;br /&gt;     paramstring = format + auth_consumer + nonce + auth_sig_method + auth_timestamp + version;&lt;br /&gt;&lt;br /&gt;     method = "GET";&lt;br /&gt;&lt;br /&gt;     base = encodeURIComponent( method ) + "&amp;amp;" +&lt;br /&gt;            encodeURIComponent( url ) + "&amp;amp;" +&lt;br /&gt;            encodeURIComponent( paramstring );&lt;br /&gt;&lt;br /&gt;     sig_hash = getSignature( consumer_secret+"&amp;amp;", base );&lt;br /&gt;     auth_sign = "&amp;amp;oauth_signature=" + sig_hash;&lt;br /&gt;&lt;br /&gt;     auth_url = url + "?" + paramstring + "&amp;amp;" + auth_sign;&lt;br /&gt;     myalert( ""+ auth_url+"");&lt;br /&gt; return auth_url;&lt;br /&gt; }&lt;br /&gt; catch (err) {&lt;br /&gt;     alert( "Error " + err );&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;   function getSignature(key, baseString) {&lt;br /&gt;         b64pad = '=';&lt;br /&gt;         var signature = b64_hmac_sha1(key, baseString);&lt;br /&gt;         return signature;&lt;br /&gt;     }&lt;/span&gt;                                           &lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Simply access to getAlbum( user, album ) to get albums of the user, or getTags( url_the_media ) to get tags of the media.&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/189647308945669346-1096468356605929240?l=mmondora.mondora.com' alt='' /&gt;&lt;/div&gt;</description><link>http://mmondora.mondora.com/2008/05/quick-and-dirty-photobucket-access.html</link><author>noreply@blogger.com (Michele Mondora)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_CsWZXXMNeVc/SDvLpXHnSDI/AAAAAAAAAEU/DX2uMG8LCRo/s72-c/bucket_2gal.jpg' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-189647308945669346.post-6481776307977988861</guid><pubDate>Wed, 30 Apr 2008 10:20:00 +0000</pubDate><atom:updated>2008-04-30T06:09:19.065-07:00</atom:updated><title>SOA and AOP make Sense</title><description>The discussion about SOA, AOP and OOP in &lt;a href="http://www.eptacom.net/blog/2008/04/can-aop-inform-oop-toward-soa-too-part.html"&gt;Carlo Pescio Blog&lt;/a&gt;, and the subsequent comment by Frank, pointed me out that a sample of &lt;a href="http://www.mondora.com/sense/"&gt;Sense&lt;/a&gt; could be in help in understanding the way we are able to introduce AOP in SOA infrastructure and instrument an already existent infrastructure.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;Actually we have a &lt;a href="http://www.mondora.com/sense/"&gt;Sense&lt;/a&gt; presentation, called Mobile Workshop, that provides and demonstrate this features. The represented business case is very simple, and has the purpose only to demonstrate the power of &lt;a href="http://www.mondora.com/sense/"&gt;Sense&lt;/a&gt; platform.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Workshop: scenario&lt;/span&gt;&lt;br /&gt;My editing team produces advertising messages, used to promote products. They create only the content, and the message is saved into a Repository, let's call it an XML database.&lt;br /&gt;&lt;br /&gt;Inside my database data are represented in a way similar to:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;content id="1"&amp;gt;&amp;lt;title&amp;gt;the title&amp;lt;/title&amp;gt;&lt;br /&gt;  &amp;lt;description&amp;gt;&lt;br /&gt;  Christmas is coming, adopt a tree and leave it its natural environment.&lt;br /&gt;  &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;/content&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Users can see and embed the xml simply via http get or through a webservice.&lt;br /&gt;&lt;br /&gt;The xml database is a system already existent in my IT division, and is an external system that doesn’t contain specific logic. It’s a system we need to integrate to.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_CsWZXXMNeVc/SBhLB9kvMHI/AAAAAAAAADc/pfMcabO6RH8/s1600-h/base.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_CsWZXXMNeVc/SBhLB9kvMHI/AAAAAAAAADc/pfMcabO6RH8/s400/base.png" alt="" id="BLOGGER_PHOTO_ID_5194984667252469874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Business problem:&lt;/span&gt;&lt;br /&gt;My business need is to enrich, without modification into the database, the content of that external system to provide a much better user experience. The client should receive the right user experience depending on the device used.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;I know, there simply is much way to create HTML from and XML, this is only to introduce and demonstrate some concepts inside &lt;a href="http://www.mondora.com/sense/"&gt;Sense&lt;/a&gt; platform.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://www.mondora.com/sense/"&gt;Sense&lt;/a&gt; concepts:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.mondora.com/sense/"&gt;Sense&lt;/a&gt; is a platform that is able to provide Service Level Agreement to software components (and not only).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 0, 153);"&gt;Feeling:&lt;/span&gt;&lt;br /&gt;Components installed in &lt;a href="http://www.mondora.com/sense/"&gt;Sense&lt;/a&gt; can be  defined to be:&lt;ul&gt;&lt;li&gt;internal - deployed and running in the &lt;a href="http://www.mondora.com/sense/"&gt;Sense&lt;/a&gt; Platform&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;external - external systems, hardware or software, that provides data or logic in my business flow: for example a database server.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://www.mondora.com/sense/"&gt;Sense&lt;/a&gt; is able to Feel external system through special type of connectors that provide Service Level Agreement and metrics, for the external device.&lt;br /&gt;&lt;br /&gt;Example Feeling configuration:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;components&amp;gt;&lt;br /&gt;   &amp;lt;feeling name="feelCms" protocols="http" mapping="*/feelingExist/*"&amp;gt;&lt;br /&gt;       ...&lt;br /&gt;           &amp;lt;invoker class="com.moolidoo.sense.workshop.feeling.ExistFeeling" protocol="http"&amp;gt;&lt;br /&gt;       ...&lt;br /&gt;               &amp;lt;sla&amp;gt;&lt;br /&gt;                   &amp;lt;transitions&amp;gt;&lt;br /&gt;                       &amp;lt;transition from="HIGH" to="MEDIUM" when=""&amp;gt;D{100}"&amp;gt;&lt;br /&gt;                       &amp;lt;transition from="MEDIUM" to="LOW" when=""&amp;gt;D{200}"&amp;gt;&lt;br /&gt;                       &amp;lt;transition from="LOW" to="NO_SERVICE" when=""&amp;gt;D{300}"&amp;gt;&lt;br /&gt;                   &amp;lt;/transition&amp;gt;&lt;br /&gt;                   &amp;lt;when threshold="NO_SERVICE"&amp;gt;&lt;br /&gt;                   &amp;lt;mock class="com.moolidoo.sense.workshop.feeling.mock.ExistMock"&amp;gt;&lt;br /&gt;               &amp;lt;/mock&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_CsWZXXMNeVc/SBhltNkvMJI/AAAAAAAAADs/5Zp0pxyIR6w/s1600-h/base-sense.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_CsWZXXMNeVc/SBhltNkvMJI/AAAAAAAAADs/5Zp0pxyIR6w/s400/base-sense.png" alt="" id="BLOGGER_PHOTO_ID_5195013997584134290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Emotions:&lt;/span&gt;&lt;br /&gt;in &lt;a href="http://www.mondora.com/sense/"&gt;Sense&lt;/a&gt; there is the concept of emotion. An emotion is a “piece of code” that the system call, when something happen and the purpose is to influence other components and the behavior of the system.&lt;br /&gt;&lt;br /&gt;In our business case I’m going to use an emotion, bound to the Feeling, to instruments the output of the XML Database with the purpose to enrich the xml, and provide the HTML to customer.&lt;br /&gt;&lt;br /&gt;Emotions can be conditioned, and in my sample, there is an emotion per device type, so the system can modify and produce the correct html per calling device.&lt;br /&gt;&lt;br /&gt;Example Emotion configuration:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;emotionFilter name="BrowserHtmlLayout" &amp;gt;&lt;br /&gt;       &amp;lt;match value="eXistCms.biz" /&amp;gt;&lt;br /&gt;           &amp;lt;condition expression="invocation:device=html" /&amp;gt;&lt;br /&gt;   ...&lt;br /&gt;   &amp;lt;/emotionFilter&amp;gt;   &lt;br /&gt;&lt;br /&gt;   &amp;lt;emotionFilter name="NokiaN95Layout" &amp;gt;&lt;br /&gt;       &amp;lt;match value="eXistCms.biz" /&amp;gt;&lt;br /&gt;       &amp;lt;condition expression="invocation:device=NokiaN95" /&amp;gt;&lt;br /&gt;   ...&lt;br /&gt;   &amp;lt;/emotionFilter&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;In a such way, my &lt;a href="http://www.mondora.com/sense/"&gt;Sense&lt;/a&gt; platform emits information and activates emotion, without change in the Process, based on the invocation device and on the innovated service.&lt;br /&gt;&lt;br /&gt;The result is that an external device is Feel and governed in the system, on usage of that   Feeling, &lt;a href="http://www.mondora.com/sense/"&gt;sense&lt;/a&gt; emits Emotion that influence the system itself to provide a new behavior.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_CsWZXXMNeVc/SBhltNkvMII/AAAAAAAAADk/k2sfie-k-wM/s1600-h/base-sense-aop.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_CsWZXXMNeVc/SBhltNkvMII/AAAAAAAAADk/k2sfie-k-wM/s400/base-sense-aop.png" alt="" id="BLOGGER_PHOTO_ID_5195013997584134274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In Sense, thanks to concepts like Feelings and Emotions, we enable the developer to apply techniques AOP like to instruments SOA services. Services can be external and are not modified but can be Emotioned.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/189647308945669346-6481776307977988861?l=mmondora.mondora.com' alt='' /&gt;&lt;/div&gt;</description><link>http://mmondora.mondora.com/2008/04/soa-and-aop-make-sense.html</link><author>noreply@blogger.com (Michele Mondora)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_CsWZXXMNeVc/SBhLB9kvMHI/AAAAAAAAADc/pfMcabO6RH8/s72-c/base.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-189647308945669346.post-8931600258759133526</guid><pubDate>Mon, 28 Apr 2008 06:20:00 +0000</pubDate><atom:updated>2008-04-27T23:29:11.427-07:00</atom:updated><title>Architetture 2.0</title><description>Architetture, pensieri.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Passato&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In qualità di mentore/trainer/coach su vari progetti mi sono sempre rafforzato. Percepivo le architetture software come un "insieme di componenti, ognuno con un preciso scopo, al fine di risolvere un problema". La percezione era guidata principalmente dalle competenze tecniche, dalle scelte tecnologiche e poi dal problema da affrontare.&lt;br /&gt;Tant'è che nella mia testa, quando si parlava di architetture, era naturale pensare alle infrastrutture JEE, che in qualche modo hanno tutti i componenti che servono per produrre il 90% dei software moderni. La presenza della tecnologia era così forte e preponderante, da poter (e riuscire a) giustificare l'adozione di componenti e tecniche anche se non indispensabili alla corretta soluzione del problema.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center; color: rgb(51, 0, 153);"&gt;Dunque, le architetture le percepivo come la:&lt;br /&gt;suddivisione logica, di componenti software,&lt;br /&gt;hardware e di meccanismi di comunicazione,&lt;br /&gt;al fine di ospitare la soluzione ad una richiesta.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Pensieri:&lt;/span&gt;&lt;br /&gt;Ho sempre pensato che l'architetto software è diverso dall'ingegnere del software. La differenza ritengo stia nel fatto che:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;l'ingegnere giunge alla soluzione, applicando spesso e voltentieri un metodo  o una regola, conosciuta, definita e consolidata: si basa e resta nel campo del conosciuto.&lt;/li&gt;&lt;li&gt;l'architetto aggiunge alle regole, ai metodi, anche un po' di creatività.&lt;br /&gt;Ovvero cerca la soluzione utilizzando strumenti e tecniche anche che non gli appartengono, che non sono ancora imparati. La grossa differenza che percepisco è la "&lt;span style="color: rgb(204, 0, 0);"&gt;visione&lt;/span&gt;" per intraprendere una strada che è nuova, che porti alla soluzione e che porti innovazione.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Personalmente mi sono sempre sentito più architetto che ingegnere, sebbene non sia nessuno dei due. Ho sempre fatto fatica a spiegare le mie "soluzioni", perchè spesso derivavano da un modo non convenzionale e sopratutto hanno una parte "ignota" anche a me; cerco di trovare una via, nuova, stimolante e divertente.&lt;br /&gt;&lt;br /&gt;Questa differenza mette in luce il fatto che l'architetto ha una visione più "aperta" della soluzione, con un margine ed un aggancio oltre il campo del conosciuto. Certo che la conoscenza cresce con l'esercizio e con il tempo, pertanto questo margine di ignoto, viene colmato dal tempo. E questo rafforza la mia visione di architetto, ovvero qualcuno in grado di dare "futuro" ad una soluzione. Una soluzione che avrà parti consolidate (e dunque vecchie dopodomani) e parti innovative (e dunque moderne dopodomani). Addirittura nelle proposte commerciali, definisco l'architetto un "Time Warp architect", in grado di estendere nel futuro e rendere moderna una soluzione di oggi, anche domani. Questo prevede sicuramente una grande flessibilità, visione, curiosità e sopratutto oggettività rispetto alla tecnologia.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Evoluzione, primo segnale:&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ora, con l'avvento del Social Web, il mio concetto di architettura, fortunatamente, sta di nuovo mutando.&lt;br /&gt;Questa nuova percezione ed evoluzione non è ancora chiara e definita ed andrà a rafforzarsi e comporsi sempre di più con il passare del tempo.&lt;br /&gt;&lt;br /&gt;Le architetture non sono &lt;span style="color: rgb(102, 102, 102);"&gt;solo&lt;/span&gt; un sistema di componenti con un ruolo ben preciso, ma sono anche un &lt;span style="font-style: italic; color: rgb(51, 0, 153);"&gt;insieme di comunità&lt;/span&gt;, alle quali fornire, ed attingere idee e soluzioni.&lt;br /&gt;La comunità diventa un componente, che estende il componente software, per promuoverlo ed estenderlo nel tempo.&lt;br /&gt;Ora spesso penso, quando disegno una porzione di codice, di cercare supporto oltre che nello strumento anche in uno strumento con una comunità intorno, dalla quale attingere e fornire idee, soluzioni ed esperienze.&lt;br /&gt;Probabilmente i prossimi diagrammi architetturali che produrrò, oltre che avere una suddivisione per componenti e ruoli, avranno anche un altro strato:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;una suddivisione per comunità dove ogni comunità potrà essere legata ad un solo componente, oppure potrà spaziare in più componenti.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/189647308945669346-8931600258759133526?l=mmondora.mondora.com' alt='' /&gt;&lt;/div&gt;</description><link>http://mmondora.mondora.com/2008/04/architetture-20.html</link><author>noreply@blogger.com (Michele Mondora)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-189647308945669346.post-4345484179326834876</guid><pubDate>Mon, 21 Apr 2008 10:05:00 +0000</pubDate><atom:updated>2008-04-21T05:04:26.068-07:00</atom:updated><title>Daily Fight: railroad.</title><description>Today I need to get the whole picture of a rails application. I'm an old school man, I want papers with box, arrows and description to understand relationship between things.&lt;br /&gt;Nowadays Rails guys, starts coding and usually doesn't produce any Diagram with all the stuff inside. I know, it's mine limit, I'm not able to read, remember, clarify and think on a rails statement like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;class User &lt;activerecord::base&gt;&lt;/activerecord::base&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;&lt;span style="font-style: italic;font-family:arial;" &gt;    has_many  :friendship&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;&lt;span style="font-style: italic;font-family:arial;" &gt;    &lt;/span&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;has_many  :mails&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;&lt;span style="font-style: italic;font-family:arial;" &gt;    has_and_belongs_to_many : items&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;span style="font-style: italic;font-family:arial;" &gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;It is very readeable and of immediate lecture, but I need box and arrow on papers. The Rails community is very active, and a colleque of mine pointed me an old (two years old) gem that provide graphics. First impression was "bLeah, i like UML, this is not UML" ruby guys are so modern... After some reading I discovered diagrams are in &lt;a href="http://www.bon-method.com/index_normal.htm"&gt;Business Object Notation&lt;/a&gt;. Ok it is not so spread, but  is a common way to describe concepts; an interesting point is that is embedded in Eiffel.&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_CsWZXXMNeVc/SAxqfSfyjKI/AAAAAAAAADM/Cxl-19c1QMI/s1600-h/50px-Face-smile-big.svg.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_CsWZXXMNeVc/SAxqfSfyjKI/AAAAAAAAADM/Cxl-19c1QMI/s200/50px-Face-smile-big.svg.png" alt="" id="BLOGGER_PHOTO_ID_5191641556225002658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;A quick search for BON with google produce  "&lt;a href="http://www.bonmagazine.com/"&gt;BonMagazine&lt;/a&gt;" or "&lt;a href="http://www.bonjovi.com/bonjovi/"&gt;Bonjovi&lt;/a&gt;" .&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;BON doesn't have the commercial success and consensum of UML.&lt;br /&gt;&lt;br /&gt;To generate BON diagram i proceed in installing gem railroad. Installation works without any issue. Fast and easy.&lt;br /&gt;&lt;br /&gt;Railroad generate files into the DOT format, so you need a particular graph visualization software to see diagrams "&lt;a href="http://www.graphviz.org/"&gt;graphwiz".&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;This software provides a way to render railroad-dot files, into svg/ps/gif at your pleasure.&lt;br /&gt;With this installation:&lt;br /&gt;railroad, graphwiz package I'm able to generate graph for "&lt;span style="color: rgb(51, 255, 51);"&gt;models&lt;/span&gt;".&lt;/span&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;&lt;br /&gt;&lt;br /&gt;But I want also &lt;span style="color: rgb(51, 204, 0);"&gt;controllers&lt;/span&gt;.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Generating controllers need gem RMagick.&lt;br /&gt;Gem RMagick need &lt;a href="http://www.imagemagick.org/script/index.php"&gt;ImageMagic&lt;/a&gt;. &lt;span style="font-size:78%;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Wow I need the entire WWW to generate a BON diagram!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm quite lucky, on my MacBook I have darwin port, ready to work for me, so:&lt;br /&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;sudo ./port install ImageMagick&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It takes a lot, about 20 mins, to download and compile all the stuff to enable ImageMagic.&lt;br /&gt;&lt;br /&gt;After successfully installing ImageMagic I can proceed with RMagic gem.&lt;br /&gt;Before installing I need to set my $PATH with ImageConf.&lt;br /&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;export PATH=$PATH:/opt/local/bin/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ok, let's install rmagic:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;gem install rmagick -- --with-opt-lib=/opt/local/lib/ --with-opt-include=/opt/local/include/ --with-opt-dir=/opt/local/bin/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After sucessfull installation, all went fine, no errors I use the irb to check the version of just installed gem and check if really works.&lt;br /&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;irb -rubygems -r RMagick&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; puts Magick::Long_version&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;This is RMagick 2.3.0 ($Date: 2008/03/29 15:23:12 $) Copyright (C) 2008 by Timothy P. Hunter&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Built with ImageMagick 6.4.0 04/21/08 Q16 http://www.imagemagick.org&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Built for ruby 1.8.6&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ok, all works fine, so test your railroad controllers generation:&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153); font-style: italic;font-family:arial;" &gt;railroad $* -l -i -a -C | dot -Tgif &gt; controller.gif&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153); font-style: italic;font-family:arial;" &gt;railroad $* -l -i -a -M | dot -Tgif &gt; model.gif&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Task accomplished: Railroad generates my BON diagrams.&lt;br /&gt;And now, let's start &lt;span style="color: rgb(51, 204, 0);"&gt;thinking&lt;/span&gt;...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/189647308945669346-4345484179326834876?l=mmondora.mondora.com' alt='' /&gt;&lt;/div&gt;</description><link>http://mmondora.mondora.com/2008/04/daily-fight-railroad.html</link><author>noreply@blogger.com (Michele Mondora)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_CsWZXXMNeVc/SAxqfSfyjKI/AAAAAAAAADM/Cxl-19c1QMI/s72-c/50px-Face-smile-big.svg.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-189647308945669346.post-3748272790801976551</guid><pubDate>Fri, 18 Apr 2008 15:12:00 +0000</pubDate><atom:updated>2008-04-18T08:14:16.692-07:00</atom:updated><title>The magic of Ruby and Rake.</title><description>&lt;span style="font-size:130%;"&gt;&lt;/span&gt;Today is the first day, I ever used rake.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;First of all, it's a bit different of other "make" system usally used, in which almost all task are defined within the file. Here I have &lt;span style="font-weight: bold;"&gt;*a huge*&lt;/span&gt; set of premade task, ready to work for me, without the hassole of writing a piece of rake file.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;How do you get the list of available tasks ?&lt;br /&gt;Easy. &lt;span style="color: rgb(51, 0, 153); font-family: arial;"&gt;rake --task&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Today my big concern was. How to populate an emtpy test/development database, with a lot of yml file and only one Rakefile, with no task inside.&lt;br /&gt;After reading some infos i succeded in:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; color: rgb(51, 0, 153);"&gt;rake db:migrate &lt;/span&gt;&lt;br /&gt;this will create and migrate you empty db, configured into database.yml, using your db/migrate ActiveRecord::Migration provided. Clearly the order is from the first, named 001_xxx.rb to the last.&lt;br /&gt;&lt;br /&gt;After migrating all the db, you simply populate it with:&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153); font-family: arial;"&gt;rake db:fixture:load&lt;/span&gt;&lt;br /&gt;this works only if you have your "*.yml" files into test/fixtures, and I have been so lucky to have it. For each table you should have your .yml file that define and describe, in the Ruby way, each record.&lt;br /&gt;Get more information about YAML fixture on http://ar.rubyonrails.org/classes/Fixtures.html&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;And today's task is accomplished. The homepage of my ruby application is ready.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/189647308945669346-3748272790801976551?l=mmondora.mondora.com' alt='' /&gt;&lt;/div&gt;</description><link>http://mmondora.mondora.com/2008/04/magic-of-ruby-and-rake.html</link><author>noreply@blogger.com (Michele Mondora)</author><thr:total>0</thr:total></item></channel></rss>
