Attendre le chargement d’un autre frame

Petit problème technique qui revient régulièrement. Ce problème n’est pas toujours facile à détecter, car il peut être aléatoire (non reproductible de façon systématique).

Description du problème : j’ai une page HTML comportant 2 ou plusieurs frames. Une fonction javascript sur l’un des frames doit faire appel à un élément de la deuxième frame. Si le temps de chargement de la deuxième frame est assez long et qu’elle n’est donc pas chargée, il est possible que la fonction ne trouve pas l’élément recherché. Il faut donc attendre le chargement de cette deuxième frame.

Pour cela, la solution consiste à faire une boucle utilisant la fonction setTimeout (pour ne pas monopoliser le CPU avec une boucle d’attente).

Voici la façon dont je l’implémente :


var cpt;
function funcky() {
  clearTimeout(funcky);
  // la 2ème frame s'appelle fra2
  if(!top.fra2.document) {
    if (cpt) {
      if (cpt++ > 20) {
        alert("Chargement de la page trop long...");
        return;
      }
    } else cpt=1;
    setTimeout(funcky,200);
    return;
  }
  // ...
  // Ecrire mon code ici
  // ...
}

ofbiz : l’ERP Open source

Depuis quelques temps, je m’intéresse de près à l’outil Open Source Ofbiz.

Il s’agit d’un ERP écrit en java sous licence Apache. Son orientation fonctionnelle actuelle est très orientée e-commerce : réalisation de sites web marchand. Il gère également le suivi facturation, stock, logistique, comptabilité derrière le site marchand lui-même.

Particularité intéressante, il dispose d’un module POS (Point Of Sale : Point de Ventes). Ce module offre la possibilité de gérer des appareils distants, temporairement connectés au système (donc synchronisés à la demande) pour la saisie de commande (PDA, caisses enregistreuses, …). Ce module POS est développé en client java swing, alors que le reste de l’application est bien entendu en web HTML conforme.

L’application existe depuis un certain nombre d’années (2001), bénéficie d’une comunauté de développeurs assez active, et de nombreux utilisateurs clients de prestige dans le monde. De plus, le projet a été très récemment rattaché à la fondation Apache en tant que projet TLP (Top Level Project). C’est un signe très clair de la qualité de l’architecture du projet et de son code. De plus, cette affiliation est pour moi fondamentale : elle signifie que ce produit est utilisable dans le cadre de projets clients (possibilité de vendre des modules complémentaires ou des produits s’appuyant sur l’outil).

J’ai donc mis mon nez dans le code du produit après avoir chargé sous Eclipse le dernier SVN. L’architecture projet est clair et propre. On trouve pas mal de documentation disponible sur le site, ainsi que des vidéos de formation (!). Je les aie visionnées le week-end dernier, elles offrent une bonne approche du sujet et valent la peine d’être vues.

Globalement, l’application m’apparaît plus comme un excellent framework que comme une application utilisable en clientèle out-of-the-box. En effet, tous les fondements techniques sont parfaitement intégrés de façon beaucoup plus clairs et propres que dans la plupart des progiciels propriétaires que je connaisse, par contre, l’interface utilisateur n’est pas très attrayante telle quelle. Elle est cependant facilement modifiable, notamment par un web-designer (HTML, CSS).

Quelques fondements techniques sont à la base de ce projet, et me paraissent assez sain dans le cadre d’une application de gestion. Le framework est centré sur

  • le modèle de données (l’entity engine) 
  • le développement de services pour les règles métiers (accessibles par divers moyens techniques, asynchrones ou non, utilisation possible d’un moteur de workflow)
  • l’utilisation de langages de templates au choix pour le frontal utilisateur

Tout cela n’est qu’un aperçu très bref du produit, et je vais désormais m’atteler à la rélisation d’une petite application de démonstration, avec interface Ajax.

Premiers retours d’expérience Eclipse Europa

La dernière version d’Eclipse viens de sortir. Il s’agit de la version 3.3, baptisé Europa par la fondation Eclipse. Celle-ci est sortie le 29 juin 2007.

Voici l’annonce : Eclipse Ships Largest-Ever Release of Leading Open Source Software Development Platform

Je travaille actuellement pour l’un de mes clients sur un projet java sous Eclipse, utilisant notamment WTP (Web Tools Platform), pour réaliser des web services (client et serveur). Je suis particulièrement intéressé par cette nouvelle version, car celle-ci inclus la version 2.0 de WTP (la précédente était sur 1.5). J’ai donc migré mes projets vers Europa et WTP 2.0.

Premier point qui m’intéresse tout particulièrement, c’est le passage à la version Axis 1.4 sur WTP 2.0, alors que l’on en était à Axis 1.3 précédemment => très utile pour la compatibilité avec les partenaires web services!

Sur le plan ergonomique, pour ce que j’en ai utilisé sur mon projet, aucune grosse révolution. Je retrouve mes petits sans problème.

La stabilité du produit…l’utilisation de WTP 1.5 provoquait de nombreux plantages d’Eclipse sur mon PC portable, dûs à des problèmes de mémoire. Eclipse fermait brutalement, parfois avec un petit message pour prévenir, mais pas toujours! Mon portable dispose de 1Go de RAM, j’avais bien entendu correctement configuré le fichier eclipse.ini en fonction (paramètres -Xmx256m -Xmx792m). Désormais, plus aucun problème de plantage sauvage à signaler! C’est toujours ça de pris…

Par contre…si le produit ne plante plus, j’ai de gros problèmes de stabilité dans mes projets web. Il m’arrive très régulièrement que mes projets soient marqués comme non valides, avec des erreurs de classpath notamment (des classes non trouvées par Eclipse provoquent des plantages de compilation), sans raison réelle. Solution = soit fermer/réouvrir le projet, soit fermer Eclipse et le réouvrir, soit forcer un rebuild du projet. Dans le même ordre de problème, j’utilise la gestion des serveurs de WTP, et aie configuré un serveur Tomcat 4.1. La publication ne se fait pas toujours bien : je suis parfois obligé de stopper Tomcat, faire un clean, republier mes projets (opération étrangement très longue). De plus, j’ai détecter un bug sur la publication : mon projet contient un répertoire de classe que j’ai ajouté à mon build path, et que j’ai coché comme exportable : ce répertoire n’est pas exporté dans la publication du projet sur le serveur. Je le copie donc à la main dans le répertoire de travail d’Eclipse (dans le répertoire du workspace sous .metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps).

Enfin, un autre problème que j’ai eu sur Europa : tous mes liens vers les URL de software updates avaient disparus! Impossible de faire les mises à jour automatiques, et comme je ne connaissais pas les URL, j’ai refait une installation d’Eclipse et exporté ces liens pour ne plus avoir cette mésaventure.

En résumé pour le moment, du pour et du contre. Les problèmes que j’ai rencontré et qui me font perdre beaucoup de temps existaient déjà largement en version précédente, donc je reste sur Europa et j’espère que des correctifs ne tarderont pas à sortir.

Mise en oeuvre de Mantis

Nouveauté du jour : j’ai installé Mantis en version 1.0.8 sur mon serveur.

Il s’agit d’un outil de suivi d’anomalies (un bug tracker ou encore issue tracker). Cet outil va me permettre de donner à mes clients une visibilité on-line sur le suivi des projets, notamment sur les phases de recette.

Les fonctionnalités principales seront les suivantes :

  • je fournie un identifiant de connexion et un mot de passe à mes clients, ils peuvent alors
  • saisir des bogues (ou demandes d’évolutions) sur l’un de leurs projets
  • suivre l’évolution de la correction
  • avoir quelques statistiques sur les délais de corrections, les gravités des bogues, …

Cet outil devrait m’apporter plus de souplesse et de réactivité dans la gestion de mes projets clients (surtout pour les forfaits!), et donc fournir une meilleure qualité de service!

Pour y accéder, il faut bien sûr avoir un compte client, puis cliquer sur le lien Espace client dans le menu de gauche de mon site principal (http://mayeur.com) , ou encore cliquer directement ici.

Les raisons du choix de cet outil :

  • c’est un outil très standard et déjà relativement éprouvé pour ce genre d’application
  • technologie PHP/MySQL compatible avec mon hébergement
  • la francisation de l’application semble correcte (contrairement à un autre outil standard dans ce domaine, bugZilla, qui semblait par ailleurs bien adapté également).

Petits morceaux de code utiles

J’ajouterai régulièrement à ce blog des posts contenant des morceaux de code bien utile.

Ils formeront à la longue ma petite bibliothèque ouverte au public. Vous pouvez y piocher sans vergogne. N’hésitez pas à mettre un lien vers mon site sur vos blogs, dans votre code, …

Ces snippets n’apparaîtront pas en page principale du blog pour ne pas le polluer. Pour y accéder, allez dans le menu Catégories à droite (par exemple en cliquant sur Javascript) .