RSS Feed

Archive de August, 2006

Le bottin du web 2.0 en image

31 August 2006 par SeB 1 commentaire »

Cela fait un moment que je ne vous avais pas parlé du Web 2.0. ;-)

Il y a quelques mois, je vous avais présenté le bottin du Web 2.0. Aujourd’hui, je vous présente un bottin du Web 2.0 tout en image logo par Web2logo. Cette liste reste dans le même esprit que la matrice du Web 2.0.

Le bottin du Web 2.0

Cette liste de logo est générée à partir de la base de données de Web2list. L’information vient de l’article le web 2.0 à travers ses logos de pointblog. Il est fait référence, dans les commentaires de cet article, dans autre article sur les logos du web 2.0 vus par une sémioticienne de Nicole Pignier. Dans son article N. Pignier analyse l’identité transmis par les logos des entreprises du Web 2.0. Il en ressort, que beaucoup d’entreprises font peu d’effort ou sont en mal d’identité.

Alors si vous souhaitez entrer dans le cercle des entreprises du Web 2.0, je vous conseille de prendre soin de votre logo. Les plus fainéants pourront se rabattre sur le Web 2.0 Logo Creator. :-)

 

Les bonnes pratiques avec Struts – afficher les formulaires en UTF-8

Voici un troisième billet dans la série sur Les bonnes pratiques avec Struts.

Introduction

A partir du moment où une application doit être internationalisée, il est intéressant d’utiliser l’encodage UTF-8 par défaut. Dès lors, un problème d’affichage des valeurs des formulaires se pose avec certains caractères[1].

Solutions

Il existe deux solutions courantes pour répondre à ce problème, qui s’implémentent :

  • dans les méthodes reset() et validate() de la classe ActionForm
  • avec des filtres des servlets

ActionForm.reset & ActionForm.validate

Il suffit simplement d’implémenter ces deux méthodes dans tous vos ActionForm :

public void reset(ActionMapping mapping, HttpServletRequest request) {
 	try {
 		request.setCharacterEncoding("UTF-8");
 	} catch (UnsupportedEncodingException e) {
 		e.printStackTrace();
 	}
 	super.reset(mapping, request);
 }
 public void validate(ActionMapping mapping, HttpServletRequest request) {
 	try {
 		request.setCharacterEncoding("UTF-8");
 	} catch (UnsupportedEncodingException e) {
 		e.printStackTrace();
 	}
 	super.validate(mapping, request);
 }

Cette méthode fonctionne bien. Mais elle pose deux problèmes :

  • Il faut implémenter ces méthodes dans tous les ActionForm. Ce problème peut être contourné par l’implémentation d’une classe de base BaseActionForm.
  • Le comportement des DynaActionForm n’est pas impacté par cette astuce.

Filtres de servlet

Il faut écrire un filtre de servlet qui va modifier l’encodage de toutes les requêtes :

import java.io.IOException;
 import javax.servlet.FilterChain;
 import javax.servlet.FilterConfig;
 import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 public class EncodingFilter implements javax.servlet.Filter {
 	private String encoding;
 	public void init(FilterConfig filterConfig) throws ServletException {
 		this.encoding = filterConfig.getInitParameter("encoding");
 	}
 	public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
 		request.setCharacterEncoding(encoding);
 		filterChain.doFilter(request, response);
 	}
 	public void destroy() {
 	}
 }

Ensuite, il faut déclarer le filtre dans le fichier /WEB-INF/web.xml ainsi (avant tous les autres filtres) :

<filter>
 	<filter-name>Encoding Filter</filter-name>
 	<filter-class>EncodingFilter</filter-class>
 	<init-param>
 		<param-name>encoding</param-name>
 		<param-value>UTF-8</param-value>
 	</init-param>
 </filter>
 <filter-mapping>
 	<filter-name>Encoding Filter</filter-name>
 	<url-pattern>/*</url-pattern>
 </filter-mapping>

Maintenant toutes les requêtes sont correctement lues avec l’encodage UTF-8.

Conclusion

La seconde solution est non-intrusive et plus sûre. De plus, elle n’est pas spécifique à Struts et peut être utilisée pour n’importe quel type d’application web J2EE.

Il ne reste plus qu’à traduire vos applications en chinois. :-D

Notes

[1] Comme les caractères accentués tels que é, è, à, ô, …

 

Email 2 Icon 1.3.0

30 August 2006 par SeB Pas de commentaire »

Le projet déménage et en profite pour proposer de nouvelles fonctionnalités ! La nouvelle version est accessible à l’adresse http://email2icon.lecacheur.com.

Maintenant, l’outil est disponible en anglais et en français, le tout en UTF-8. Les mails sont également envoyés en anglais ou en français. Les icônes générées sont accessibles via une URL permanente. Email 2 icon propose même un bout de code HTML à intégrer dans votre site pour afficher votre adresse email.

 

JSTL – changer la locale de l’utilisateur

29 August 2006 par SeB Pas de commentaire »

Comment faire pour changer la locale de l’utilisateur dans le code d’une servlet lorsque l’on utilise les tags <fmt:message /> de la JSTL pour afficher des messages ?

La solution est très simple, même si peu connue :

String language = "fr";
String country = "FR";
Locale locale = new Locale(language, country);
HttpSession session = request.getSession();
//Le code ci-dessous peut être remplacé par String attrName = javax.servlet.jsp.jstl.core.Config.FMT_LOCALE+".session";
String attrName = "javax.servlet.jsp.jstl.fmt.locale.session";
session.setAttribute(attrName, locale);

Ainsi, vous allez pouvoir changer la locale et surtout la langue de l’utilisateur dans vos applications web.

 

Libtool – l’extension .so manquante

28 August 2006 par SeB Pas de commentaire »

Après avoir passé ma Debian Woody en Sarge, les scripts d’installation de GWhere ne fonctionnaient plus.

Scott James Remnant explique bien le problème et propose une solution.

Personnellement, les scripts de GWhere refonctionnaient correctement après avoir effectué les commandes suivantes :

$libtoolize -c -f $aclocal $autoconf

Bonne compilation ! ;-)

 

Migrer une Debian Woody en Sarge

27 August 2006 par SeB Pas de commentaire »

La Debian GNU/Linux 3.1, plus connue sous le nom de Sarge, est sortie le 6 juin 2005[1]. De plus, le support de sécurité de la Debian GNU/Linux 3.0, plus connue également sous le nom de Woody, s’est arrêté le 30 juin 2006[2].

Il était donc temps que je migre ma Debian Woody en Sarge ! Le passage de Woody à Sarge s’est fait correctement malgré quelques soucis d’espace disque insuffisant.

Notes

[1] Cf. L’annonce officielle de publication de la Sarge.

[2] Cf. L’annonce officielle de fin de support pour la Woody.

 

Les bonnes pratiques avec Struts – valider les formulaires

26 August 2006 par SeB 2 commentaires »

Voici un second billet dans la série sur Les bonnes pratiques avec Struts.

Introduction

Une fois un formulaire saisi par un utilisateur, il faut qu’il soit validé un minimum. Cette validation peut se faire à deux endroits :

  • côté client : dans le butineur avec du code Javascript
  • côté serveur : dans le serveur d’application avec du code Java

La validation côté client permet d’éviter un aller-retour avec le serveur dans le cas où un champ du formulaire est invalide. Par contre, il est impossible de s’assurer que le contrôle côté client a réellement été effectué[1]. C’est pourquoi, il faut toujours réaliser les contrôles côté serveur.

Tout le monde s’accorde pour dire qu’il est souhaitable d’effectuer des contrôles côté client[2] et côté serveur[3].

Solutions

Struts propose plusieurs façon pour gérer ces contrôles :

ActionForm.validate

Le formulaire à coder doit hériter de la classe ActionForm et ré-implémenter la méthode ActionErrors validate(ActionMapping mapping,HttpServletRequest request).

Cette méthode est appelée à chaque fois qu’un objet ActionForm est chargé. Cela permet d’automatiser la validation du formulaire côté serveur. Voici un exemple d’implémentation :

public class LoginForm extends ActionForm {
	private String login;
	private String password;
	public void setLogin(String login) {
		this.login = login;
	}
	public string getLogin() {
		return login;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public string getPassword() {
		return password;
	}
	public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {
		ActionErrors errors = new ActionErrors();
		if ( login==null || login.lenght<=8) {
			errors.add("error",new ActionMessage ("error.login"));
		}
		if ( password==null || password.lenght<=8) {
			errors.add("error",new ActionMessage ("error.password"));
		}
		return errors;
	}
}

Struts Validator

Struts Validator est un framework à part entière qui permet d’effectuer la validation de formulaire côté client et côté serveur par simple configuration. En effet, il faut configurer les règles de validations dans un fichier XML, ensuite Struts Validator génère le code Java et le code Javascript à exécuter lors de la validation du formulaire.

Pour cela , il faut ajouter la déclaration suivante dans le fichier /WEB-INF/validation.xml :

<formset language="">
	<form name="loginForm">
		<field property="login" depends="required,minlength">
			<arg0 key="welcome.login.login"/>
			<arg1 name="minlength" key="${var:minlength}" resource="false" />
			<var>
				<var-name>minlength</var-name>
				<var-value>8</var-value>
			</var>
		</field>
		<field property="password" depends="required,minlength">
			<arg0 key="welcome.login.password"/>
			<arg1 name="minlength" key="${var:minlength}" resource="false" />
			<var>
				<var-name>minlength</var-name>
				<var-value>8</var-value>
			</var>
		</field>
	</form>
</formset>

De plus, le formulaire doit être déclaré de la façon suivante dans la page JSP :

<html:javascript formName="loginForm" dynamicJavascript="true" staticJavascript="true" />
<html:form action="/login" focus="login" onsubmit="return validateLoginForm(this);">
	<html:text property="login" size="16" /><br />
	<html:password property="password" size="16" redisplay="false" /><br />
	<html:submit value="login" />
</html:form>

Ainsi, le code Javascript est générer pour contrôler le formulaire côté client. Et Struts contrôle côté serveur le formulaire une nouvelle fois.

Conclusion

Le framework Validator permet de centraliser les règles de contrôle. De plus, grâce à ce système les contrôles Javascript et Java sont toujours à jour.

Je n’y ai pas encore trouvé d’utilité eu le besoin, mais certaines personnes utilisent la combinaison des deux méthodes.

Si toutes les règles de contrôles proposées par Struts Validator ne sont pas suffisantes, il est possible de créer ses propres règles. Comme cela  a déjà été présenté avec la règle compareTo pour Struts Validator. Faire référence au validateur compareTo.

Maintenant, vous n’aurez plus d’excuse pour ne pas réaliser de contrôle sur vos formulaires !

Notes

[1] Le Javascript peut être désactivé dans le butineur. Le client peut être un programme autre qu’un butineur

[2] Pour améliorer l’ergonomie.

[3] Pour améliorer la sécurité.

 

JDBC – les améliorations de JDBC 4 dans Java SE 6

20 August 2006 par SeB Pas de commentaire »

Je vous ai fait la présentation de JDBC 4, il y a près d’un an. Où en est cette nouvelle implémentation ?

Rappelons que JDBC 4 fait parti de Java 6. Donc le premier sera disponible lorsque le second sera prêt.

IT-eye présente les avancements du JDBC 4 au travers d’un article de ONJava traitant du sujet.

Pour être honnête, il n’y a rien de réellement neuf mis à part un nouveau point de vue[1]. Il faut tout de même noter que le JDK de Java 6 dispose maintenant d’une base de données basée sur Apache Derby. De plus, les programmes Java n’auront plus besoin de faire un appel à Class.forName() pour charger le driver JDBC à utiliser.

Une bonne lecture pour préparer la migration vers JDBC 4.

Notes

[1] L’auteur n’est pas convaincu que les annotations vont permettre la réduction du code.

 

Si votre weblogue était de l’ADN…

19 August 2006 par SeB 2 commentaires »

Netwizz présente dans son billet l’ADN de votre blog avec Web2DNA. Cet outil se propose de donner une représentation graphique de votre weblogue à partir de l’analyse des balises HTML présentes dans la structure de vos pages. Voilà, ce que celà donne avec ce présent weblogue :

Représentation de l'ADN d'un site

Il y a un généticien dans la salle ?

 

Si votre weblogue était une fleur…

18 August 2006 par SeB Pas de commentaire »

Il est difficile de se rendre compte à quoi ressemble son weblogue. Une petite applet Java propose de faire une représentation graphique d’un site. A priori, cet outil est censé présenter la structure des tags HTML du site. Le résultat final est le suivant :

Représentation graphique d'un site

L’image générée fait très végétal… ;-)