XSL-FO plutôt que Crystal Reports

On a pu lire que XSL était une alternative envisageable à Crystal Reports. Peut-être, mais alors pas pour tout de suite !
De fait, XSL-FO, qui est une sous-partie du standard XSL du W3C (qui contient XSLT, XPath et XSL en tant que vocubalaire XML pour feuilles de style), donne lieu à des logiciels éditeurs d’XSL-FO (comme XMLSPY ?) qui pourraient en partie remplacer le studio de création de Crystal Reports. En ce qui concerne le générateur d’états de Crystal Reports, celui-ci serait remplacé par un moteur XSLT (Xalan, Sablotron) plus un logiciel « formatteur XSL-FO ». Et le client/plug-in de visualisation/impression d’états Crystal Reports serait quant à lui rendu inutile puisque le formatteur XSL-FO permet de créer des états dans quasiment n’importe quel format plus classiques (documents PDF, graphiques, pages HTML)…
Mais ces outils autour de XSL-FO ne sont pas encore suffisamment matures. Et l’un des auteurs de la spécifications XSL-FO estimait en décembre 2002 qu’il faudrait 3 à 5 ans pour que XSL-FO rentre dans les moeurs des éditeurs de logiciels et des développeurs.
En attendant, pour générer des états sans Crystal Reports, il semble que l’on doive envisager :

  • soit d’adopter XSL-FO et des outils insatisfaisants si on dispose déjà de compétences XML (pour faciliter l’adoption et pallier au manque de maturité des logiciels)
  • soit d’adopter une approche simpliste mais vaguement similaire à XSL-FO en générant, via un langage de programmation, des documents PDF ou autres à partir des données, via XML ou non
  • soit d’adopter des briques logicielles de génération d’états PDF comme DataVision ou JasperReports (pour l’offre open source)
  • soit de payer cher des licences Crystal Enterprise pour pouvoir continuer à générer des états Crystal Reports

Crystal Reports, mais en open source ?

Crystal Reports, vous connaissez ? C’est beau, c’est bien. Mais c’est cher. Et l’éditeur de
Crystal Reports est en train de se faire acheter par Business Objects. Alors, quelles
alternatives opensource pour remplacer Crystal Reports ?

A noter, comme le suggère la dernière question de cette FAQ, que la technologie XSLT, à condition de disposer d’éditeurs XSL graphiques de bonne qualité, semble
directement concurrencer les produits comme Crystal Reports. Parmi les moteurs XSLT
opensource les plus connus, on trouve Xalan et Sablotron. Cette tendance
favoriserait-elle vraiment des produits simples comme PhpReports ?

Fresh news aggregated with Plone

Here is my kind of a HOW-TO documentation if you want to setup a portal
aggregating news from remote web sites (by the way of RDF/RSS
syndication or by the way of search engines « screen scraping »). Want
your own news aggregator and portal, hey ?
I will use the following products : Plone + ZEO + CMFNewsFeed +
CMFWebAgent. Personnally, I installed them on a Windows 2000 platform.
And I have to say that this installation process is rather long and
tricky… I would welcome a Plone distribution that would include the
right version of ZEO and the configuration of Plone as a ZEO client. It
should also include the XML library needed for CMFNewsFeed.

  1. Download everything you will need
    1. Download Plone 1.0.1 from http://prdownloads.sourceforge.net/plone/Plone-1.0.1.exe?download
    2. Download ZEO in its latest CVS version from within the ZODB
      3.3.1 CVS at
      http://cvs.zope.org/ZEO/ZEO/ZEO.tar.gz?tarball=1&only_with_tag=ZODB3-3_1-branch (because ZEO 2.0 cannot run with Zope 2.6.x which is included
      in Plone 1.0.1)
    3. Download CMFNewsFeed 1.1 and CMFWebAgent 1.0 from
      http://sourceforge.net/projects/collective
    4. Download the PyXML library, version 0.8.1 as a tar.gz file at
      http://sourceforge.net/project/showfiles.php?group_id=6473 (Note that the 0.8.1 exe versions are specific either to Python 2.1 or to Python 2.2
    5. Download my plone_conf.zip file which includes some config files
      I gathered mainly from CMFNewsFeed distributions I suppose.
  2. Install, unzip and move everything to its right place
    1. Install Plone to C:\Plone (do not ask Plone to start
      automatically and do not start it manually either)
    2. Add C:\Plone\Python to your environment variable PATH if Plone
      installer did not do it
    3. Unzip ZEO to C:\Plone\ZEO
    4. Unzip CMFNewsFeed to C:\Plone\CMFNewsFeed-r1_1 which you then
      rename to C:\Plone\CMFNewsFeed for more ease
    5. Unzip CMFWebAgent to C:\Plone\CMFWebAgent-r0_1 which you then
      rename to C:\Plone\CMFWebAgent for more ease
    6. Read C:\Plone\ZEO\docs\ZopeREADME.txt
    7. Move C:\Plone\ZEO\ZEO to C:\Plone\Zope\lib\python\ZEO
    8. Unzip PyXML-0.8.1.tar.gz into C:\Plone\PyXML-0.8.1
    9. Read C:\Plone\PyXML-0.8.1\README
    10. Within a commandline, go to C:\Plone\PyXML-0.8.1 and do a
      « python setup.py build ». You will run into some erros, but that’s not
      that important for our purpose
    11. Move all the files and directories included in
      C:\Plone\PyXML-0.8.1\build\lib.win32-2.1\_xmlplus to
      C:\Plone\Python\lib\xml, replacing every existing file (I know it must
      be a very dirty way to install this but I don’t know an easy way to do
      it better since I did not want to install a standalone python
      distribution outside Plone)
    12. Unzip plone_conf.zip file to C:\
  3. Startup ZEO and Plone
    1. Execute C:\Plone\1.start_zeo.bat
    2. Wait a few seconds (or more…) and check
      C:\Plone\Data\var\ZEO_Server.log to see if ZEO properly started (you
      should see several lines explaining that ZEO created a StorageServer,
      and so on)
    3. Set Plone’s emergency user with the Windows « Plone
      controller »
    4. Execute C:\Plone\2.start_plone.bat
    5. Wait a few seconds (or more…) and check
      C:\Plone\Data\var\debug.log to see if Zope (Plone) properly
      started
    6. Bring your browser to http://localhost then to
      http://localhost:8080/manage to see if Plone works properly and you can
      log into Plone management interface as your emergency user. It should
      work (well, it works for me…).
  4. Setup and start CMFNewsFeed as a ZEO client
    1. Go to http://localhost and register as a new user called
      « newsfeed » : this will be the username CMFNewsfeed uses for retrieving
      content from the Net and posting it into Plone.
    2. Log into http://localhost:8080/manage with your emergency user
      and give « newsfeed » the « Reviewer » role (go into Plone/acl_users, click
      on newsfeed and give it the Reviewer role). I suppose newsfeed should
      still keep its « Member » role.
    3. Open C:\Plone\Data\getnews.conf and set the member_name variable
      as ‘newsfeed’ (the default value is ‘rssfeeder’)
    4. Set a new RSS source as follow : go to http://localhost and
      login as ‘newsfeed’, click on the « my folder » link (in the navigation
      bar), ; then create a new folder : you select Folder in the list box
      and click on the « add a new element » button and fill in the form
      (« my_slashdot_source » as id/name and « My Slashdot RSS source » as
      title), validate. Then create a link into this new folder. It should be
      named ‘RDF’ (mandatory), it could be titled ‘the Slashdot RSS link’ and
      its URL points to the RSS file you want to be retrieved
      (http://slashdot.org/slashdot.rdf).
    5. Hack CMFNewsFeed to adapt it to Plone : open
      C:\Plone\CMFNewsFeed\CMFFeedApp.py and replace ‘Portal Folder’ with
      ‘Plone Folder’. Still in CMFFeedApp.py, find the line containing
      « _edit » and, just below it, comment out the « description=description, »
      line then add a « new_link.description = description » line below the
      « new_link.title = title »
    6. Open a commandline and get to C:\Plone\Data then execute this :
      « python C:\Plone\CMFNewsFeed\getnews.py » (or just run the 3rd .bat file I prepared in my plone_conf.zip file
    7. You should find your new news items under the « my_slashdot_source » folder. If they don’t display (but the getnews.py command line affirmed they were retrieved), it may be a ZEO cache issue. Quick and bad fix for this is restarting your plone. But, of course, you may have to fix your zope.conf file in order to avoid this kind of issue. For the moment, I don’t know how to fix that. I’ll try later.
    8. Schedule a ‘cmd.exe « C:\Plone\Python\python C:\Plone\CMFNewsFeed\getnews.py »‘ to run once a day (never run it more frequently than 30 minutes or you may be banned by the news sources) so that your news are fresh everyday. You may use a Windows version of cron to do this.
  5. Setup and start CMFWebAgent as a ZEO client
    1. OK. You are a big boy/girl now. So try and follow similar steps to make CMFWebAgent run. You may have to fix some CMFWebAgent search engines scripts since their web interface may have changed since CMFWebAgent (and this doc) were released. Dirty hacks on sight…
  6. Last but not least : please drop a comment here to tell me if this works for you, how hard it was to setup and so on… Or maybe you know of a better way to make these damned CMFstuffagents work !

Tutelle et curatelle

Vous êtes juriste, vous devez vous rafraîchir la mémoire sur les mesures de tutelle et de curatelle… Voici les liens qu’il vous faut :

Et, pour en savoir plus :

Les systèmes d’information pour la gestion environnementale (EMIS)

Le concept d’EMIS, popularisé par quelques cabinets de conseils, se traduit par la mise en place de progiciels dédiés à la gestion des problématiques environnementales (pollution…) de l’entreprise, au sens large (environnement mais aussi hygiène et sécurité, voire développement durable). Le cabinet canadien Amadeus présente ce concept.
Les fonctionnalités offertes par un EMIS sont notamment les suivantes : suivi des activités EHS, traçabilité des déchets, surveillance des émissions, planification de tâches, gestion des permis et de la documentation, gestion des substances dangereuses, analyse coûts/bénéfices et choix de matériaux alternatifs.

Les technologies de développement les plus populaires

La popularité d’une technologie informatique ne laisse en rien présumer de sa qualité et a fortiori, de son adéquation pour un projet donné ou un contexte donné. Néanmoins, elle influence sans doute le coût du recrutement de ressources humaines vaguement compétentes : il est plus facile de trouver sur le marché un développeur prétendant « connaître Java » qu’un développeur prétendant « connaître Eiffel ». Plusieurs sites Web donnent un aperçu de la popularité relative de ces technologies dans les offres d’emploi.

Et ta soeur ?

Ta soeur est vraiment trop forte : elle a compris tout ce que tu lui as expliqué sur les firewall. Mais elle se demande où elle va trouver un firewall gratuit et comment elle va le mettre en oeuvre ? Alors, goûte au SLIS, au coyote (voir ici pour le hors d’oeuvre et ici pour de la coyodoc en français), à Smoothwall, et va un peu par ci, par là et par là-bas pour approfondir la question de la sécurité avec linux.

Investir pour louer

Et si je louais l’appartement dont je suis propriétaire ? Pour se décider, il faut lire ce dossier de l’Agence Nationale d’Information sur le Logement, cet article chez seloger.com, ce dossier de mesfinances.fr vu chez Club-Internet, ce guide du ministère du logement, et puis ça, toujours chez Les Echos, Robien vu par Les Echos, et vu par le ministère de l’équipement (voir la section « dossiers »), Besson vu par les Echos, et vu par l’ANIL, une explication du régime fiscal des revenus fonciers, ce blabla sur la fiscalité de l’immobilier locatif, ce dossier de l’ANIL pour le cas particulier de la location à un jeune (mais il a intérêt à payer ! sinon …;), encore des échos immobiliers, et puis cette présentation, par l’ANIL des obligations du propriétaire et du locataire et la même chose, encore par l’Etat.
Ah, et puis, cet article des Echos est intéressant à lire avant d’acheter un logement dans l’ancien. Ah, ben tiens, le marché de l’immobilier devrait baisser en fin d’année 2003. Ouais, ben en attendant, ça grimpe (voir aussi chez les notaires parisiens).

Etendez votre réseau mais ciblez vos relations directes

La clef du succès pour avoir une équipe efficace, selon Valdis Krebs, expert en réseaux organisationnels, réside dans leur capacité à maximiser leur taux : (quantité de ressources dans l’horizon proche du réseau relationnel de l’équipe) / (nombre de liens directs entre l’équipe et des personnes ou ressources externes). Les équipes efficaces sont donc celles qui savent tirer profit de leurs liens indirects avec les ressources dont elles ont besoin. Les liens indirects permettent une meilleure veille sur l’environnement (repérer des opportunités, des menaces, réagir plus rapidement). Les liens directs, quant à eux, sont nécessaires pour établir des relations de confiance et des transferts de savoir. Ils doivent donc être extrémement bien ciblés et limités car coûteux à établir et, plus encore, à maintenir.

Exemple pratique d’application web enrichie par les technos sémantiques

Les technologies nouvelles du Web Sémantique peuvent être couplées aux technologies bien éprouvées des bases de données relationnelles. Par exemple, l’usage des « topic maps » permet d’enrichir une application à base de données relationnelles sans avoir à étendre son schéma de base de données.
Cette approche consiste à stocker certaines des données de l’application non pas dans un schéma ad hoc (avec des champs, des clefs et des jointures conçues spécifiquement pour traiter ces données) mais dans un schéma « générique » en utilisant des concepts plus abstraits introduits par les topic maps (« topics », « associations », « occurences »). Ainsi, on peut y stocker n’importe quelle donnée, y compris des données qui n’étaient pas prévues au moment de la conception de l’application. Cette approche offre une telle souplesse que l’on pourrait être tenté de stocker TOUTES les données de l’application sous la forme d’un schéma relationnel pour topic maps. Cependant, cela introduit une couche d’abstraction supplémentaire qui implique donc des traitements supplémentaires et donc des perfomances qui ne sont pas comparables à celles que l’on peut obtenir avec un schéma relationnel conçu sur mesure.
C’est pourquoi cette approche présente son intérêt dans le cas où l’on a d’une part des spécifications fonctionnelles stables (et donc un schéma relationnel que l’on peut bâtir de manière durable en offrant un maximum de performances) et d’autre part des spécifications plus floues ou instables (que l’on peut implémenter en privilégiant la flexibilité sur les performances, à l’aide d’un schéma générique pour stocker des métadonnées sémantiques). L’approche sémantique permet ainsi de bâtir des applications web combinant performances (du relationnel) et flexibilité (du sémantique).

Que penser de WSRP ?

WSRP est une spécification proposée par le consortium OASIS. Son objectif est d’améliorer l’interopérabilité des services web produisant du contenu directement consommable par un utilisateur, par opposition aux services web « back-end ». WSRP partage une partie de son contenu avec la spécification WSIA de l’OASIS qui, elle, vise l’interopérabilité des services web interactifs. WSRP est un enjeu commercial pour les éditeurs de portails qui voudraient rendre leurs « portlets » réutilisables d’un produit à l’autre, ce qui est intéressant soit dans le cas de grosses entreprises disposant de plusieurs produits de portail distincts soit dans le cas de sociétés différentes souhaitant « échanger » des portlets.
Ce qu’il faut, selon moi, penser de WSRP : il ne faut pas en attendre grand chose. Cette spécification survient dans un climat d’instabilité des processus de standardisation des services Web et, en particulier, de concurrence entre le W3C (l’organisme de standardisation des technologies du Web) et l’OASIS (consortium d’éditeurs de logiciels).
De plus, les services web sur le modèle RPC SOAP/WSDL/UDDI sont très loin d’avoir fait leurs preuves, au contraire. La seule chance de succès de WSRP réside donc peut-être dans l’importance des investissements qu’auraient effectués certains éditeurs logiciels, qui cherchent maintenant un moyen de les rentabiliser.
Il me semble plus raisonnable et économique de concevoir une interopérabilité des services web, y compris pour les portlets, basée sur les caractéristiques de couplage faible défendues par le modèle architectural REST qui, lui, a fait ses preuves avec le Web depuis plus de dix ans.

REST : restons, restez…

On ne le dit jamais assez : vous utilisez sans doute déjà le modèle REST mais sans le savoir ! Alors, sachez le, il faut continuer à RESTer :

Des produits opensource pour l’EAI

Il existe au moins deux produits
opensource conçus pour l’EAI
: Proteus et Babeldoc.
Proteus est constitué de :

  • un framework pour développer des applications à base de messages
  • un broker de messages construit sur ce framework
  • des connecteurs pour diverses sources (ou destinations) de données : bases de données,
    files de messages, serveurs FTP, etc. ainsi que, bientôt, serveurs de messagerie
    électronique, fichiers plats, pour Tibco Rendezvous et pour WebMethods.
  • une API documentée

Babeldoc est une application de traitement de documents (similaire à WebMethods mais en
moins avancé) constitué d’une part d’un « pipeline » paramétrable à travers lequel les
documents circulent et d’un système sophistiqué de journalisation. Babeldoc tourne dans un
environnement J2EE (JBoss par exemple) et dispose d’interfaces d’admin via le Web, via un
client lourd ainsi que via ligne de commande. Babeldoc fournit également des connecteurs
pour bases de données, serveurs FTP, serveurs HTTP et services SOAP, ainsi qu’une fonction
de routage basée sur la technologie XPath. La documentation de Babeldoc est en cours
d’amélioration. Babeldoc est actuellement utilisé pour un EAI reliant les banques serbes à
la banque centrale de Serbie.

Sun One Directory Server vs. Microsoft Active Directory

SUN compare son produit d’annuaire « Sun One Directory Server » au produit concurrent
« Microsoft Active Directory »
(AD) : AD n’utilise pas un identifiant standard pour désigner
les adresses de messagerie, AD n’utilise pas le standard inetOrgPerson (RFC 2798) pour
représenter les personnes, AD ne permet l’existence que d’un seul schéma par déploiement (un
schéma par « forêt ») et AD impose l’utilisation d’une API propriétaire (et non d’une API LDAP
standard) pour écrire la valeur du SPN (Service Principal Name) d’un objet dans l’annuaire.
De ce fait, AD n’offre pas les garanties d’interopérabilité suffisante pour les entreprises
souhaitant se doter de services d’annuaire LDAP.

Blade servers

Les « blade servers » (littéralement « serveurs en lame ») sont des serveurs modulaires qui partagent un même matériel électronique qui leur fournit l’alimentation électrique (avec redondance) et la connectivité réseau. Par contre, ils ne partagent habituellement pas de disques (et donc a fortiori pas de disques avec redondance). Ce type de serveurs n’est habituellement utile que pour des architectures « haute disponibilité » où la perte de l’un des serveurs n’entraîne pas de perte de disponibilité du service. Cela suppose donc des applications qui ont été développées en ce sens. De plus, les blade servers coûtent plus cher que leurs équivalents classiques. Leur valeur ajoutée résiderait dans l’intégration de leurs services de gestion matérielle et dans leur flexibilité. C’est ce qui se dit.