8 Dec 2006

Wicket random thoughts

Lately I've done some wicket development. Let me first say I don't consider me as a wicket guru at all, well not yet ;)

Wicket is a perfect example of Directing Attitude as explain by martin Fowler in SoftwareDevelopmentAttitude, from the wicket documentation "why-final":
While this defensive approach may seem obsessive to some, the major benefit is that classes and methods which haven't been designed for extension cannot be extended until the problem(s) at hand are examined by the Wicket development team.

Just like martin Fowler, I more of an "enabler" type of guy:
(...) Such an argument is much more convincing to me that the usual one which carries the subtext that library writers are smart and users stupid.

I'm also concern about the "fragile base class problem" since everything in wicket use inheritance. But in this case, I think the "Directive Attitude" may leverage this problem...

In the future I see 2 possible evolutions directions for wicket (just like any framework):
  • No more major evolutions to avoid existing code to be broken (this may sometimes lead to a fork of the project)
  • Major evolutions between major releases (when changing the first digit of version number for example), this may lead to unhappy / unable to follow wicket evolutions users... and just like with Howard Lewis Ship from tapestry that leads to angry comments on blogs, web sites:
    Every major point release of Tapestry throws backwards-compatibility out the window.

All those issues are not wicket specific problems but more frameworks common problems and there are no simple solutions, those guys need to keep developers and users happy at the same time and That is a big challenge !

30 Nov 2006

The venice project Goodies


Sylvain just bring us the venice project latest goodies :)
Already collector? Not as collector as the veniceproject alpha team polo :p

See it on flickr with other ones...


Technorati tags:

28 Nov 2006

Other funny surveys

Actually there's a lot of this funny surveys, this's more like "bashing" set of surveys ;)
My favorites:

"Most Despised Buzzword"

Lol no comment ;)
Source: InfoQ

Technorati tags:

20 Nov 2006

The Venice Project


As I was on holiday every body on the project started to blog without me :(

Yes I'm also part of the "super-secret project" aka The Venice Project.
What is it ? Well Sylvain already explained it on his blog... So I will keep it DRY ;)

The most surprising fact for me on this project is the speed and quality of the video over a private p2p network, I would never thought it would be even possible! Just to see this you should register for the beta test ;)
Note: it uses a p2p network but the content display is completely official and deals have been made with famous content providers (no legal issues here unlike utube).

I've been working on various parts of the system mainly setting up cruisecontrol (fixing various bugs and creating some enhancements), I've done some Ant, worked on a web application for advertisements using wicket and on some features of the search engine using lucene.


Technorati tags:

Les puces ne garantissent pas la sécurité des échanges en ligne

Scary article (in french), Jean-Pierre Seifert discovered a way to predict the way keys are computed by the processor. Depending on the speed of finding the key a malicious program could scan the processor and discover a 512 key in a matter of seconds. The announcement of the way to this will be done at the next RSA meeting.

The only way to fix this is apparently to use a dedicated, not optimize processor for securtity

I found this partial translation of the french article from LeMonde

Technorati tags:

14 Nov 2006

XUbuntu vs Toshiba - Round 3

Actually my previous post problem was because the CD I used was a cheap CD, so the laptop couldn't read it.
Using a good "verbatim" CD, installation almost worked perfectly. I had to kill "anthy" process during install as explain in this forum.

I finally manage to get to the login screen but no miracle, no surprise: It's SLOW! But it look nice... if that's a consolation :-/


Final score: XUbuntu 1 - Toshiba 3 => Toshiba wins and return to the closet forever.

Technorati tags:

Software architecture

Never been through this ?


Technorati tags:

XUbuntu vs Toshiba - Round 2

Since my previous post, I read the documentation (I should have done it in the first place ;) ) and I downloaded the alternate CD:

The alternate install CD allows you to perform certain specialist installations of Xubuntu. It provides for the following situations:
* creating pre-configured OEM systems;
* setting up automated deployments;
* upgrading from older installations without network access;
* LVM and/or RAID partitioning;
* installing GRUB to a location other than the Master Boot Record;
* installs on systems with less than about 128MB of RAM.

I used the old style, old school text installer. Like in the old days when installing a windows 3.1 under DOS :p

But it started to fail when installing some Debian packages during base system installation and didn't succeed to install GRUB for boot :(
Tried several times but same thing over and over... So I checked the CD integrity and it failed too :(
I tried the CD integrity on my regular home computer but there it went just fine :(
So My guess is that the laptop CD Rom is just somehow dead!

Current score: Xubuntu 0 - Toshiba 2


Technorati tags:

13 Nov 2006

XUbuntu vs Toshiba - Round 1

This week, I tried to install xubuntu on an old Toshiba Satellite 4200 Pro with 64M of RAM :(

Xubuntu, pronounced as Zooboontoo, is a complete GNU/Linux based operating system with an Ubuntu base. It is lighter on system requirements and tends to be more efficient than Ubuntu with GNOME or KDE, since it uses the Xfce Desktop environment, which makes it ideal for old or low-end machines, thin-client networks, or for those who would like to get more performance out of their hardware.

The documentation clearly state that it needs 128M for install and should run with 64M

Unfortunately the install process freeze after a few minutes, removing the splash screen showed:
Out of memory killed process gzip


Running with Low Graphics start up seems better but freeze again after 5 to 10 min of CRRom/Disk access, but I didn't manage to remove the splash screen when starting this way so I have no clue what so ever :(

So for the moment XUbuntu 0 - Toshiba 1

Technorati tags:

10 Nov 2006

Firefox Quick search

Tired of typing Ctrl+F to look at a word in an html page in firefox?
Try:
Menu options >> Advanced >> General >> Accessibility >> "search text when i start typing"

Warning: be careful, website using keyboard shortcuts won't work anymore...

Technorati tags:

Back to blogging

I decided to start blogging again :)

I always have this nice little trick or article or link I want to share with the rest of the world ;)

But sending a mail to everyone (mailing list, friends etc...) I really fell like a spammer... (I'm really receiving too much mails this days and I'm not even counting regular spam).
I prefer that people be notify with a rss, they can choose when they have time to spend on reading...

Technorati tags:

22 Jun 2006

208 posts - 2 years - It's time to take a break!

I've been blogging since Thursday, June 10, 2004. When I first started, I didn't thought my motivation would last that long! But hey! 2 years now! 208 posts! That's a 8 posts per month average! (not bad)

But since few weeks, I'm overwhelm by things to do. So I decided to take a bloggin'break...

I still got some draft articles I want to finish publishing on my other blog about ruby, but once this is done it will be holiday time :)

May be in September I will start again ... who knows!

14 Jun 2006

[AndroidDemo] Most boring video ever!

Usually I like demo videos, but the AndroidDemo (eclipse plugin for AndroMDA) is the borest ever!

What went wrong:
  • Too long (should be 4 or 5 min not 11!!)
  • Don't show me eclipse feature, I don't care! (filtering options is not one of your plugin feature! And I already know what is the purpose of a wizard!)
  • Don't tell me this feature is not done yet, this message will not show up in the final version etc. ...
  • Believe in what your doing, that you're doing something great!
  • You're plugin doesn't seem enjoyable!
Technorati tags:

24 May 2006

(At last) I finished Extreme Programming Explained: Embrace Change, 2nd Edition


Boy! It's been a long time! I bought the book "Thursday, September 15, 2005"!

But I finally read it!

My conslusion is that I already knew most of it. But if you don't know XP that's the place to start, the rest of the internet is a copy/paste of the book...

The parts I liked the most was Kent Beck explaining why he changed is mind or adapted his way of thinking about some subjects.
For example: about how to deal with the rest of the company who is not extreme and why we (as programmers) don't have to force other people to use XP but adapt to there way of thinking.
An other example: why sometimes XP can fail because the rest of the company's values are secrecy, lack of communication, fear etc...


18 May 2006

Flickr (At Last)

I finaly decided to create a flickr account. I may post from time to time...
ps: I'm so Web 2.0 ;)

Technorati tags:

16 May 2006

Only hire the brightest engineers

Funny I read/viewed 2 articles saying the exact opposite but still they are both true!

Where Did All the Beautiful Code Go? by Google's Gregor Hohpe:
We hire only the brightest engineers in the industry, like which company would put on their charter, we hire only the dumbest engineers(...) but he had like a logic because I used to work for a company that made a very big statement about ?we only hire the brightest? and he had like a little chain of logic that actually invalidated or basically claimed that it?s really impossible, because if everybody only hires the brightest people, well, where do the other people go(...)

Alertbox Variability in User Performance:
Finally, programming demands the most of users and thus shows the highest variability. This table shows why the number one guideline for managing software development is to hire the best developers: Good developers are three times faster than slow ones and offer companies tremendous gain -- even when they require higher salaries. (The difference between the very best and very worst developers is typically about a factor twenty. Unfortunately, not everybody can hire only the top 1% of developers. But you can certainly endeavor to hire from the top 25%.)

Technorati tags:

5 May 2006

SOA (Surely Obscur Application) ?

I just wanted to point this little comment from Jason Carreira on TheServerSide:

I'm trying to figure out why SOA is the main topic of 4 separate articles on the main page? I mean, it's not even clear what it IS or why anyone should CARE about it!

We expose some services via XFire as SOAP web services, does that make us a SOA? We're not actually architecting anything differently, so what exactly is SOA?

Is TSS just completely marketing-driven technobabble now?

Oh, and with the invocation of RUP and SOA in the same comment, I got my buzzword bingo!!!

I do think the same but I always like the nice way he always put it ;)
Just like in an other post of mine about maven.

Technorati tags:

28 Apr 2006

Spring tests Life Cycle

I'm using AbstractTransactionalDataSourceSpringContextTests for test but I never remember the life cycle of those tests so I made an empty one with all methods printing there names:
getConfigLocations
setDataSource
setTransactionManager
onSetUpBeforeTransaction
onSetUpInTransaction
the real test
onTearDownInTransaction
endTransaction
onTearDownAfterTransaction

With log4j.category.com.company.test.LifeCycleSpringTest=DEBUG (my test):
getConfigLocations
16:34:11,662 INFO [LifeCycleSpringTest] Loading config for: classpath*:/**/beans.xml
setDataSource
setTransactionManager
onSetUpBeforeTransaction
16:34:13,880 INFO [LifeCycleSpringTest] Began transaction: transaction manager [org.springframework.orm.hibernate3.HibernateTransactionManager@1a1c42f]; defaultRollback true
onSetUpInTransaction
the real test
onTearDownInTransaction
16:34:13,880 INFO [LifeCycleSpringTest] Rolled back transaction after test execution
endTransaction
onTearDownAfterTransaction

With
log4j.category.com.company.test.LifeCycleSpringTest=DEBUG
log4j.category.org.springframework=DEBUG
log4j.category.org.hibernate=INFO
:
getConfigLocations
16:35:46,379 INFO [CollectionFactory] JDK 1.4+ collections available
16:35:46,394 INFO [CollectionFactory] Commons Collections 3.x available
16:35:46,410 INFO [XmlBeanDefinitionReader] Loading XML bean definitions from file [C:\developpement\workspaces\egrc\SpringUnittest\bin\beans.xml]
16:35:46,597 INFO [ClassPathXmlApplicationContext] Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext;hashCode=14867177]: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [dataSource,sessionFactory,transactionManager,personDAO]; root of BeanFactory hierarchy
16:35:46,597 INFO [ClassPathXmlApplicationContext] 4 beans defined in application context [org.springframework.context.support.ClassPathXmlApplicationContext;hashCode=14867177]
16:35:46,613 INFO [ClassPathXmlApplicationContext] Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@193a66f]
16:35:46,613 INFO [ClassPathXmlApplicationContext] Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@be0e27]
16:35:46,613 INFO [DefaultListableBeanFactory] Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [dataSource,sessionFactory,transactionManager,personDAO]; root of BeanFactory hierarchy]
16:35:46,691 INFO [Environment] Hibernate 3.0.5
16:35:46,707 INFO [Environment] hibernate.properties not found
16:35:46,707 INFO [Environment] using CGLIB reflection optimizer
16:35:46,707 INFO [Environment] using JDK 1.4 java.sql.Timestamp handling
16:35:46,785 INFO [Configuration] configuring from url: file:/C:/developpement/workspaces/egrc/SpringUnittest/bin/hibernate.cfg.xml
16:35:46,863 INFO [Configuration] Mapping resource: com/company/project/Person.hbm.xml
16:35:46,988 INFO [HbmBinder] Mapping class: com.company.project.Person -> Person
16:35:47,019 INFO [Configuration] Configured SessionFactory: sessionFactory
16:35:47,019 INFO [LocalSessionFactoryBean] Building new Hibernate SessionFactory
16:35:47,019 INFO [Configuration] processing extends queue
16:35:47,019 INFO [Configuration] processing collection mappings
16:35:47,019 INFO [Configuration] processing association property references
16:35:47,019 INFO [Configuration] processing foreign key constraints
16:35:47,097 INFO [ConnectionProviderFactory] Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
16:35:47,738 INFO [SettingsFactory] RDBMS: Oracle, version: Oracle Database 10g Release 10.1.0.2.0 - Production
16:35:47,738 INFO [SettingsFactory] JDBC driver: Oracle JDBC driver, version: 10.1.0.5.0
16:35:47,754 INFO [Dialect] Using dialect: org.hibernate.dialect.Oracle9Dialect
16:35:47,754 INFO [TransactionFactoryFactory] Using default transaction strategy (direct JDBC transactions)
16:35:47,769 INFO [TransactionManagerLookupFactory] No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
16:35:47,769 INFO [SettingsFactory] Automatic flush during beforeCompletion(): disabled
16:35:47,769 INFO [SettingsFactory] Automatic session close at end of transaction: disabled
16:35:47,769 INFO [SettingsFactory] JDBC batch size: 15
16:35:47,769 INFO [SettingsFactory] JDBC batch updates for versioned data: disabled
16:35:47,769 INFO [SettingsFactory] Scrollable result sets: enabled
16:35:47,769 INFO [SettingsFactory] JDBC3 getGeneratedKeys(): disabled
16:35:47,769 INFO [SettingsFactory] Connection release mode: on_close
16:35:47,769 INFO [SettingsFactory] Default schema: BFRA_TEST
16:35:47,769 INFO [SettingsFactory] Default batch fetch size: 1
16:35:47,769 INFO [SettingsFactory] Generate SQL with comments: disabled
16:35:47,769 INFO [SettingsFactory] Order SQL updates by primary key: disabled
16:35:47,769 INFO [SettingsFactory] Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
16:35:47,769 INFO [ASTQueryTranslatorFactory] Using ASTQueryTranslatorFactory
16:35:47,769 INFO [SettingsFactory] Query language substitutions: {}
16:35:47,769 INFO [SettingsFactory] Second-level cache: enabled
16:35:47,769 INFO [SettingsFactory] Query cache: disabled
16:35:47,769 INFO [SettingsFactory] Cache provider: org.hibernate.cache.HashtableCacheProvider
16:35:47,769 INFO [SettingsFactory] Optimize cache for minimal puts: disabled
16:35:47,769 INFO [SettingsFactory] Cache region prefix: hibernate.grc
16:35:47,769 INFO [SettingsFactory] Structured second-level cache entries: disabled
16:35:47,816 INFO [SettingsFactory] Echoing all SQL to stdout
16:35:47,816 INFO [SettingsFactory] Statistics: disabled
16:35:47,816 INFO [SettingsFactory] Deleted entity synthetic identifier rollback: disabled
16:35:47,816 INFO [SettingsFactory] Default entity-mode: pojo
16:35:47,941 INFO [SessionFactoryImpl] building session factory
16:35:48,238 INFO [SessionFactoryObjectFactory] Factory name: sessionFactory
16:35:48,238 INFO [NamingHelper] JNDI InitialContext properties:{}
16:35:48,254 INFO [Dialect] Using dialect: org.hibernate.dialect.Oracle9Dialect
16:35:48,254 INFO [Configuration] processing extends queue
16:35:48,254 INFO [Configuration] processing collection mappings
16:35:48,254 INFO [Configuration] processing association property references
16:35:48,254 INFO [Configuration] processing foreign key constraints
16:35:48,254 INFO [Configuration] processing extends queue
16:35:48,254 INFO [Configuration] processing collection mappings
16:35:48,254 INFO [Configuration] processing association property references
16:35:48,254 INFO [Configuration] processing foreign key constraints
16:35:48,254 INFO [SchemaExport] Running hbm2ddl schema export
16:35:48,254 INFO [SchemaExport] exporting generated schema to database
16:35:48,254 INFO [ConnectionProviderFactory] Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
16:35:48,363 INFO [SchemaExport] schema export complete
16:35:48,363 INFO [SessionFactoryImpl] Checking 0 named queries
16:35:48,410 INFO [HibernateTransactionManager] Using DataSource [org.apache.commons.dbcp.BasicDataSource@19fe451] of Hibernate SessionFactory for HibernateTransactionManager
setDataSource
setTransactionManager
onSetUpBeforeTransaction
16:35:48,472 INFO [JdbcTransactionObjectSupport] JDBC 3.0 Savepoint class is available
onSetUpInTransaction
the real test
onTearDownInTransaction
endTransaction
onTearDownAfterTransaction

My code:
package com.company.project.test;

import javax.sql.DataSource;

import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;
import org.springframework.transaction.PlatformTransactionManager;

public class LifeCycleSpringTest extends AbstractTransactionalDataSourceSpringContextTests {

@Override
protected void deleteFromTables(String[] arg0) {
super.deleteFromTables(arg0);
System.out.println("deleteFromTables");
}

@Override
public void setDataSource(DataSource arg0) {
super.setDataSource(arg0);
System.out.println("setDataSource");
}

@Override
protected void endTransaction() {
super.endTransaction();
System.out.println("endTransaction");
}

@Override
protected void onSetUpBeforeTransaction() throws Exception {
super.onSetUpBeforeTransaction();
System.out.println("onSetUpBeforeTransaction");
}

@Override
protected void onSetUpInTransaction() throws Exception {
super.onSetUpInTransaction();
System.out.println("onSetUpInTransaction");
}

@Override
protected void onTearDownAfterTransaction() throws Exception {
super.onTearDownAfterTransaction();
System.out.println("onTearDownAfterTransaction");
}

@Override
protected void onTearDownInTransaction() throws Exception {
super.onTearDownInTransaction();
System.out.println("onTearDownInTransaction");
}

@Override
public void setDefaultRollback(boolean arg0) {
super.setDefaultRollback(arg0);
System.out.println("setDefaultRollback");
}

@Override
public void setTransactionManager(PlatformTransactionManager arg0) {
super.setTransactionManager(arg0);
System.out.println("setTransactionManager");
}

@Override
protected String[] getConfigLocations() {
System.out.println("getConfigLocations");
return new String[] { "classpath*:/**/beans.xml"};
}

public void testLifeCycle() {
System.out.println("the real test");
}
}


Technorati tags:

Citations

18 Apr 2006

Google Calendar is out!

The one that may replace Palm Desktop in my calandar application hear is out! check it out!

Is it better that 30boxes ? Well yes!

Because you can add your friends, french holidays or what ever other calendar you want! It is clearer and quicker...
But import of vCal event does't seems to work ;(

Technorati tags:

Ajaxwrite

Ajax Write application is trying to replace old school microsoft word. Utopia or reality ? We'll see...

Technorati tags:

28 Mar 2006

My Bugs

I fill bugs descriptions in many different products, but "How can I keep track of them?"
Well I use del.icio.us to keep a central list of all of them including the closed ones: http://del.icio.us/francisoud/bug



Technorati tags:

27 Mar 2006

Howto (easily) fake a fingerprint!

I found this amazing article explaining how to fake a fingertip and therefore access any fingertip propected software!


Technorati tags:

22 Mar 2006

coca-cola blak

I just tried this new "energy drink" by coca-cola named: blak.
Like the "Dark dog", it disgusting! Don't buy it unless you like the taste of chemical coffee ;)

Technorati tags:

21 Mar 2006

How to make a java program a window service

Many times I needed to change a java program, launch as a console window, to a windows service... I finally found this usefull project: JavaService

Technorati tags:

15 Mar 2006

How to add "DRAFT" into your word documents

I needed to add the word "DRAFT" behind every page in my word document.
I figure it out, it's in the menu: Format > Background > Filigrane (I don't know the english word for it)
Then you got this nice little dialog box:


10 Mar 2006

Eclipse plugin to see ant file visually


I found this little eclipse plugin: FireAntz to see your ant build file visually as a diagram. Too bad it doesn't support import task :(
But still, it will avoid me to make the diagrams under poseidonUML ;)

Technorati tags:

Know about bad web site before clicking them

I found this usefull plugin: siteadvisor for Firefox (I think there is also one for IE).

It add green , yellow or red signs in google search results to warn you about spammy, hacker web sites.

When browsing a site there is also a red or green sign in firefox warning you about the site you're looking at.

Technorati tags:

2 Mar 2006

Do your server freeze after many reload/redeploy of your webapp ?

Try to change the PermSize of your server to: -XX:PermSize=256m -XX:MaxPermSize=256m

More about the permanent generation:

You can also see my post on the Hibernate Forum

1 Mar 2006

Change Hibernate NamingStrategy from spring xml

Something usefull, I don't want to forget:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
<property name="namingStrategy" ref="namingStrategy"/>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="namingStrategy" class="org.hibernate.cfg.ImprovedNamingStrategy"/>


Technorati tags:

21 Feb 2006

Uptime under windows

Yes it's possible to know a windows station uptime, just download this little exe ;)

20 Feb 2006

Javascript - Ajax and Cheat Sheet

If you're doing javascript ajax you may need this cheat sheet. (by julien)

Technorati tags:

PSP Giga pack - My new geek toy :)

I couldn't resist the new PSP Giga pack :)

I played to Wipeout pure all week long! It's so good to play a good old style arcade game of pure adrenaline :)

Technorati tags:

13 Feb 2006

Howto comment xml in eclipse

The top-notch shortcut for eclipse to comment xml (and also java code) under WinXP - French keyboard: "Ctrl + Shift + :" (because I fed up of automatic autocompletion of <!-- ...

3 Feb 2006

The TAO of Programming


After three days without programming, life becomes meaningless.

31 Jan 2006

30secondrule

I don't need there services but I really like their website and there philosophy: "simplicity and client first".

I known this sound really "marketing" but at least there website is a proof of concept for simplicity.

30 Jan 2006

The best blonde joke ever

Normally I'm not the type of person who likes jokes based on stereotypes, but here's a blonde joke that amused me.

Technorati tags:

27 Jan 2006

Waterfall2006

Thanks julien for the link, it's just too funny: waterfall2006
We're sorry but registration is not yet ready. Our software developers have a really wonderful design. They're almost done entering it into it a UML tool. They've told us not to worry and that finishing it will be "trivial" because "all that's left is the coding."


Technorati tags:

Java 1.5 features - About time to use them for real...

Java 1.5 is out for quite a long time now but I've never actually used the new features like:
Technorati tags:

19 Jan 2006

No Patents

An interesting article [fr] by julien about the patents war and there consequences in IE (flash animations...).

Technorati tags:

16 Jan 2006

Version nightmare ?

I spend more time changing software versions than actually coding!
These days I updated:
  • Rails 0.14 > 1.0
  • Radrails 0.4 > 0.5.2
  • Subclise ? > ?
  • MySql 4.1 > 5.0
  • MySql Query Browser ? > ? (don't remember)
  • Eclipse WTP 0.7 > 1.0
  • ...
I'm tired of changing versions...

Technorati tags:

12 Jan 2006

How to change cocoon ajax fade affect


<script type="text/javascript">
var myFader = function(elt) {
new cocoon.ajax.Fader(elt, "#EBCA7A").start();
}
cocoon.ajax.BrowserUpdater.highlight = myFader;
</script>

Credit goes to philou and vincent ;)

Nice javaworld introduction about SOA

I'm not much into the SOA buzz and this javaworld article introduction summarize my opinion in a funnny way:
(...)Its core premise is beautifully simple and applies to all technologies, all platforms, and all industry verticals?Java Platform, Enterprise Edition (JEE), .Net, all variants of LAMP (the use of MySQL with Linux, Apache, and Perl, Python, or PHP), Ruby on Rails, the public sector, commercial, airlines, healthcare?the list is almost endless. The answer: Because SOA has become a bandwagon for desperate IT sales forces trying to shore up revenues with unneeded toolkits and runtimes, and a flag of conveniences for vendors who want to give their applications a quick buzzword botox injection. Read on as Humphrey Sheil explains where SOAs fit in the JEE world, how a pragmatic SOA can add real business value, and how best to leverage SOA in your JEE application.
Technorati tags:

Duck Typing

Today I discovered the expression: "Duck Typing".
Amongst other languages, ruby seems to heavily rely on this way of coding:
if it walks like a duck, and talks like a duck, then it might as well be a duck.
More about this suject:
Technorati tags:

9 Jan 2006

XSD schema validation for XSL (and auto-completion in eclipse)

Update: I you are interested only by the eclipse part of this post take a look at a more recent/specialize post: "XSD schema validation for XSL and auto-completion in eclipse (second edition)"

If you want information about xerces, ant, xsl and validation keep reading this one ;) Good luck!



I wanted to have auto-completion and validation on xsl in eclipse. I did it but it was hard!

First You need to understand how xsd works. For syntax examples see xerces doc at the bottom of the page.
You can add those lines to your stylesheet:

<xsl:stylesheet xsl="http://www.w3.org/1999/XSL/Transform" xsi="http://www.w3.org/2001/XMLSchema-instance" schemalocation="http://www.w3.org/1999/XSL/Transform http://www.w3.org/2005/02/schema-for-xslt20.xsd" version="2.0">

But according to the w3c spec you can override the schema location with a global attribut.
The W3C doc about this: http://www.w3.org/TR/xmlschema-1/#xsi_schemaLocation
"2.6.3 xsi:schemaLocation, xsi:noNamespaceSchemaLocation
The xsi:schemaLocation and xsi:noNamespaceSchemaLocation attributes can be used
in a document to provide hints as to the physical location of schema documents
which may be used for ·assessment·. See How schema definitions are located on
the Web (§4.3.2) for details on the use of these attributes."
In eclipse-3.1 you can do it in Window>Preferences>Web and XML>XML Catalogue:

In Xerces you can do it with a property - see the doc.

In Ant you can set xerces property in xmlvalidate ant task (but there was a bug, I provided a patch here)
An ant build file snippet to validate xsl:

<xmlvalidate failonerror="yes" lenient="no" warn="yes">
<attribute name="http://xml.org/sax/features/validation" value="true">
<attribute name="http://apache.org/xml/features/validation/schema" value="true">
<attribute name="http://xml.org/sax/features/namespaces" value="true">

<property name="http://apache.org/xml/properties/schema/external-schemaLocation" value="http://www.w3.org/1999/XSL/Transform http://www.w3.org/2005/02/schema-for-xslt20.xsd">

<fileset dir="xsl-schemaLocation" includes="*.xsl">
</fileset>
</property></attribute></attribute></attribute></xmlvalidate>

Interesting resources I found will investigating all this:

Technorati tags:

When testing is fun

Well sometimes my job is funny ;)

For exemple I'm testing a meta-search engine that makes queries to other search engines and aggregates the results.

When looking for the word "rouen", the "Catalogue collectif des BU de France" (an university seach engine) returns those results (it looks like students'theses) :
  • Évaluation de la durée de vie et diagnostic des bobinages statoriques de la machine asynchrone ... - Pascal Le Clec'h - Le Clec'h
  • Modélisation et étude expérimentale de la combustion du charbon pulvérisé - Xiaofang You - You
  • Synthèse d'analogues phenylpyridiniques du rhazinilame - par Anne-Laure Bonneau - Bonneau
  • Méthodes à noyaux pour la représentation et la discrimination de signaux non-stationnaires - Vincent Guigue - Guigue
  • Antibiothérapie probabiliste aux urgences du CHI d'Elbeuf - Sendilcoumare Kalimouttou Kalimouttou
Funny :)

5 Jan 2006

The new philou web site.

Take a look at the new website: cestdelamerde.com of one of my coworker named after his favorite sentence ;)