ReLucBlog - SIG, MOZILLA & NTIC

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 27 février 2008

Le Web Processing Service approuvé par l'OGC

L'Open Geospatial Consortium vient d'approuver la norme WPS (Web Processing Service).

WPS defines a standardized interface that facilitates the publishing of geospatial processes, and the discovery of and binding to those processes by clients.

  • Processes : include any algorithm, calculation or model that operates on spatially referenced data.
  • Publishing : means making available machine-readable binding information as well as human-readable metadata that allows service discovery and use.

Ce nouveau service défini 3 opérations :

  • GetCapabilities (hérité de l'interface OGCWebService)
  • DescribeProcess
  • Execute

Cette norme est déjà implémenté par différents projets :

Quelques sources :

lundi 25 février 2008

Le Rich Desktop Application sort du bois

Aujourd'hui, lundi 25 février 2008, Adobe anonce la sortie officiel de son Adobe Integrated Runtime de son petit nom AIR. Il y a un an Adobe anonçait l'avènement de ce projet mais sous un autre nom, Apollo. La sortie de AIR s'accompagne de la sortie de la nouvelle version du framework d'Adobe, FLEX 3, qui devrait passer en Open Source.

La sortie de AIR signifie qu'une force commerciale importante va devoir banaliser les notions de Rich Desktop Application qui peut s'interpréter en application de bureau connectée (Fred Cavazza). Cela signifie aussi que Microsoft va entrer dans la danse avec Silverlight 2. Nous allons donc assister a une guerre comerciale entre 2 poids lourds de l'industrie informatique pour imposer leur solution. Mais cette débauche d'énergie pourrait bien profiter à Mozilla, et ses technologies, qui se concentre actuellement sur Firefox 3.

Il y a un ans, lorsque Adobe a annoncé son projet Apollo, Paul et Laurent avait attiré l'attention sur le fait que XulRunner, le runtime de Mozilla, manquait de visibilité par rapport aux projets d'Adobe ou de Microsoft. Cela avait été suivi d'un débat au sein de la communauté Mozilla et d'une volonté de créer une communauté, MozPad, autour de XulRunner pour promouvoir les technologies Mozilla comme plateforme de développement, de proposer une alternative Open Source à celle d'Adobe et de Micorsoft. Cette alternative existe puisque de nombreux projets sont basés sur XulRunner dont le plus connu est le futur Firefox 3, mais elle manque peut être un peu de visibilité.

Maintenant que le projet Apollo est devenu AIR et qu'il est officiellement disponible, les directions des systèmes d'informations vont se pencher sur ce type de solutions, sur les avantages et inconvénients des applications de bureau connectées, et sur les technologies sous-jacentes nécessaires à la réalisation de telles solutions. Et les technologies Mozilla sont peut être les mieux placées :

  • un runtime multiplateforme éprouvé, Firefox 3 est basé sur XulRunner ;
  • un navigateur pouvant servir de runtime, le XulRunner intégré à Firefox 3 pourra être utilisé pour lancé des applications ;
  • un lanceur d'application Web sur le bureau intégrant la gestion du mode déconnecté standardisée : Prism.

Libre à chaque direction de faire son choix, Yahoo a choisi Mozilla pour Flickr Uploadr et Zimbra Desktop, et à nous sociétés de développement spécialisées dans les technologies Mozilla de nous faire entendre (DI, 3Liz, et autres).

A lire :

vendredi 22 février 2008

Jaxer officiellement disponible pour Linux

La page de téléchargement de Jaxer a été mis à jour et propose une version pour Linux.

Une page dédié à l'installation de Jaxer sur Linux a étté mis en ligne. Vous pouvez aussi consulter le billet que j'avais rédigé pour installer sur Ubuntu Jaxer sur votre serveur Apache.

Pour ceux qui ne le serait pas : Jaxer est le premier serveur full AJAX. Il est basé sur Mozilla, c'est comme un Firefox sans affichage qui tourne sur le serveur, et est édité par Aptana.

mercredi 20 février 2008

En vrac géomatique...

  • Spot Image, un des principaux fournisseurs d'images satellites, vient de faire une offre fantastique. Spot Image va faire équipe avec GeoNames afin d'améliorer les données géographiques libres et offre des images satellites hautes résolutions 2.5m pour l'extraction automatique d'objets géographiques. Les objets géographiques que nous pensons pouvoir extraire d'images à 2.5m sont les contours des villes, des aéroports, des rues, des lignes de rivage, des lacs, des rivières et des autres... pour plus d'infos : Feature extraction from Satellite Imagery.
  • TIGER in OpenStreetMap, TIGER est le nom de code des données géogrpahiques publiques des Etats-Unis. OpenStreetMap (OSM) a achevé l'essentiel de l'import des rues principales et autoroutes des Etats-Unis, avec un mois d'avance sur l'estimation initiale du projet. L'énorme quantité de données de la abse de données géographiques du domaine publique en provenance du bureau de recensement des Etats-Unis a nécessité son propre pocessus d'importation fonctionnant jour et nuit depuis août 2007. Les données importées nécessites tout de même une édition et une correction d'erreur humaine.
  • European geodata, l'équivalent européen de TIGER est GISCO même si elle n'est pas aussi détaillé ni à jour, mais elles sont libres d'utilisations sous certaines conditions.

jeudi 14 février 2008

Flickr Uploadr : Powered by XulRunner

La prochaine version de Flickr Uploadr, logiciel de mise en ligne sur Flickr de photos, s'appuiera sur Mozilla, et plus précisement XulRunner, et non sur AIR d'Adobe.

Une interview du responsable du développement de Flickr Uploadr, Richard Crowley, réalisé par Jeremy Zawodny est disponible en vidéo. Richard y discute les raisons pour les quelles Yahoo! a choisi XulRunner de Mozilla par rapport à AIR d'Adobe. Cela inclut :

  • La possibilité de lier des bibliothèque externe via XPCOM (ce que ne permet pas AIR) ;
  • multi-threading (alors que AIR est mono-thread) ;
  • extensibilité (comme Firefox).

Si XUL ou XulRunner vous intéresse, Gen Kanai vous conseille de regarder cette interview intéressante, surtout le passage sur la possibilité de développer des extensions pour Flickr Uploadr.

Après TomTom, numéro 1 des constructeurs de GPS portables, pour TomTom Home, voici une nouvelle entreprise international qui fait le choix de XulRunner.

lundi 11 février 2008

En vrac géomatique...

Ce sera rapide :

  • Tout d'abord les logiciels GDAL, GRASS GIS et FDO sont devenus des projets officiels de l'OSGeo (Open Source Geospatial Foundation). Markus rappelle que l'OSGeo a mis en place une démarche d'incubation de projets afin de valider un certain nombre de caractéristiques. Ces trois logiciels ont validé leur incubation.
  • Ensuite une image issues du projet Open Street Map (OSM). C'est comme la terre vue du ciel la nuit, mais où les lumières des villes et des routes sont remplacés par les traces GPS laissés par les contributeurs à OSM.

dimanche 10 février 2008

En vrac Mozilla...

Une petite liste de liens :

vendredi 8 février 2008

Nouvelle acquisition de Microsoft pour Virtual Earth

Après l'acquisition en décembre 2007 de l'anglais MultiMap, Microsoft a annoncé mercredi 6 février 2008 l'acquisition de Caligari, l'équipe de Caligari rejoignant l'équipe de Virtual Earth].

Caligari est spécialisé dans la modélisation et l'animation 3D. Cette acquisition a probablement pour but de concurencer ScketchUp de Google et de concurencer encore plus Google dans le domaine de la cartographie.

Je ne dois pas aller à la bonne adresse, mais elle est où la carto ?

jeudi 7 février 2008

OpenLayers côté serveur avec Jaxer

OpenLayers est une bibliothèque de fonction JavaScript OpenSource permettant d'ajouter facilement des cartes dynamiques à une page Web.
Jaxer est le premier serveur AJAX publié par Aptana. C'est en fait un module du serveur Apache2 basé sur les technologies Mozilla.

Voici un exemple de l'utilisation d'OpenLayers côté serveur avec Jaxer :

<html>
<head>
  <title>OpenLayers Jaxer Example</title>
  <style type="text/css">
    #map {
      width: 1024px;
      height: 512px;
      border: 1px solid black;
    }
  </style>
  <script src="OpenLayersJaxer.js" runat="server"></script>
  <script runat="server">
    function getMexicoURL(){
      return "file:///home/reluc/GIS/data/mexico.sqlite";
    }
   
    function getMexicoLayer(layerName) {
      var OpenLayers = getOpenLayers();
      var url = getMexicoURL();

      var provider = new OpenLayers.Provider.SQLite(layerName,url,{table:layerName});
      var features = provider.features;

      var geojson = new OpenLayers.Format.GeoJSON();
      var layer = {};
      layer.name = layerName;
      layer.features = geojson.write(features);
      return layer;
    }
    getMexicoLayer.proxy = true;

    function load(){
      var layers = [
      {
        type : 'WMS',
        args : {
          name : "OpenLayers WMS",
          url : "http://labs.metacarta.com:80/wms/vmap0?",
          params : {layers: "basic"},
          options : {wrapDateLine: true}
        }
      }
      ];
      Jaxer.clientData.layers = layers;
    }
  </script>
  <script src="http://openlayers.org/dev/lib/OpenLayers.js" runat="client"></script>
  <script>
    var map;
    function init() {
      var options = {
        theme: "http://openlayers.org/dev/theme/default/",
        NumZoomLevels: 24
      }; 
      map = new OpenLayers.Map("map",options);
      var layers = Jaxer.clientData.layers;
      for (var l=0; l<layers.length; l++) {
        var layer = layers[
                          l];
        var argStr = "";
        for (var a in layer.args) {
          if (argStr != "") argStr += ",";
          argStr += "layer.args['"+
                            a+"' ]";
        }
        layer = eval("new OpenLayers.Layer[
                                     layer.type]("+argStr+");");
        map.addLayer(layer);
      }
      map.zoomToMaxExtent();
      getMexicoLayerAsync(addLayer,'states');
    }

    function addLayer(jLayer) {
      alert(jLayer);
      var geojson = new OpenLayers.Format.GeoJSON();
      var features = geojson.read(jLayer.features);
      var layer = new OpenLayers.Layer.Vector(jLayer.name,{style:jLayer.style});
      layer.addFeatures(features);
      map.addLayer(layer);
    }
  </script>
</head>
<body onserverload="load()" onload="init()">
  <div id="map"/>
</body>
</html>

Petite explication de texte :

  • Tout d'abord vous pouvez lire sur les éléments script la présence ou non d'un attribut runat. Cet attribut permet de spécifier si le code doit être éxécuter sur le server ou sur le client (dans le navigateur). Si cet attribut n'est pas présent le code ne sera pas éxécuter sur le serveur.
  • Ensuite la propriété proxy de la méthode getMexicoLayer est mis à "true", ce qui signifie que cette méthode sera accéssible au client de façon synchrone ou asynchrone. Afin de ne pas bloquer l'interface j'appelle getMexicoLayerAsync dans la méthode init éxécuter par le client une fois que la page est chargé. la méthode getMexicoLayerAsync est générée par Jaxer une fois que l'ensemble de la page a été traité côté serveur.
  • Un nouvel évènement est utilisable avec Jaxer, ServerLoad, via l'attribut onserverload, qui permet d'éxécuter une méthode côté serveru une fois que l'ensemble de la page ait été chargé par Jaxer. Dans mon cas j'utilise la méthode load afin de modifier l'objet Jaxer.clientData qui permet de passer des données du serveur au client, comme ici afin de passer une liste de baselayer à afficher.
  • Pour OpenLayers côté serveur j'ai été obligé de modifier le fichier OpenLayers.js en OpenLayersJaxer.js. Jaxer ne sauvegarde que des méthodes, j'ai donc dût créer une méthode getOpenLayers permettant de récupérer l'Objet OpenLayers.
  • Enfin afin de simplifier la création de features vectorielles, j'ai créé un nouveau type d'objet OpenLayers : OpenLayers.Provider. C'est un équivalent d'OpenLayers.Layer.Vector mais sans aucune notion de rendu ou de carte.

L'utilisation d'OpenLayers côté serveur permet :

  • de déporter sur le serveur les traitements des sources de données vectoriels (XML et autre). Du côté client seul les Formats JSON et GeoJSON sont nécessaires ;
  • de ne manipuler que du HTML et du JavaScript côté client ;
  • d'avoir les mêmes objets côté serveur et côté client. On est ainsi sûr de ne pas avoir d'erreurs d'interprétation des données.

Voici une bonne démonstration de l'intérêt de l'utilisation de Jaxer pour le développement d'une solution RIA accessible aux différenst navigateur du marché et ceux-ci à moindre coût.

mercredi 6 février 2008

Installer Jaxer sur Ubuntu

Jaxer est un serveur AJAX publier par Aptana sous licence GPL. Jaxer est en fait un module pour Apache2 basé sur les technologies Mozilla.

Il est actuellement disponible officiellement en téléchargement pour Windows et Mac. Il est distribué avec son propre serveur Apache mais il est possible d'installer Jaxer sur son serveur.

La version pour Linux est en court de préparation mais une version beta est disponible :
http://s3.amazonaws.com/com.aptana.temporary.downloads/linux/Jaxer_package_withApache.zip
Vous pouvez installer cette version selon les modalités précisées dans le forum : Try out our early Linux builds. Normalement ça fonctionne pour Ubuntu et Fedora.

Mais je ne souhaitais pas installer un nouveau serveur Apache sur ma Ubuntu, j'ai donc décidé d'installer Jaxer comme module du serveur Apache présent par défaut sur Gutsy Gibbon. Pour ce faire c'est assez simple :

  • télécharger la version de Jaxer pour Linux et dézippé le paquet ou vous le souhaitez ;
  • modifier le fichier de configuration Apache de Jaxer, jaxer-linux.httpd.conf, présent dans AptanaJaxer/jaxer/confs, afin que tous les chemins pointent vers là où a été dézippé Jaxer ;
  • modifier le httpd.conf de votre serveur Apache, normalement il est là : /etc/apache2, en injoutant l'inclusion de la configuration de Jaxer ;

Une fois ces 3 étapes réalisées la configaration de votre serveur AJAX est prêt. Maintenant il faut pouvoir lancer Jaxer et l'arrêter. Pour cela on va modifier les scripts startJaxer.sh et stopJaxer.sh que l'on trouve dans AptanaJaxer/scripts.

  • dans le script startJaxer.sh ajouter au début export JAXERBASE= "le chemin vers Jaxer", comme dans start.sh, et à la fin sudo /etc/init.d/apache2 restart
  • dans le script stopJaxer.sh ajouter au début export JAXERBASE= "le chemin vers Jaxer", et un sudo avant kill.

Vous n'avez plus qu'à lancer Jaxer et vous rendre à l'url suivante : http://localhost/aptana pour constater que vous avez bien installer un serveur AJAX sur votre Ubuntu.

mardi 5 février 2008

Jaxer : Firefox côté serveur

Aptana a publié fin janvier Jaxer : le premier serveur AJAX au monde.

Voici la traduction de sa présentation par Aptana :

Les sites et applications Web modernes utilisent AJAX pour créer des expériences utilisateurs engageantes : le HTML et le CSS sont animées par du JavaScript dans le navigateur et des requêtes au serveur. Pour atteindre cet objectif, le serveur doit préparer de façon approprié la page Web, et savoir quoi faire quand le JavaScript l'appelle. Mais le serveur ne connaît rien au HTML, CSS ou DOM, ni de la façon de traiter des données JavaScript, et vous ne pouvez pas le coder en JavaScript...
... Jaxer change tout cela. Jaxer est le premier véritable serveur AJAX au monde. HTML, JavaScript et CSS sont des notions de bases de Jaxer, comme le sont XMLHttpRequests, JSON, DOM scripting, etc. ET en tant que serveur il permet d'accéder aux bases de données, au système de fichiers et au réseaux, ainsi qu'aux logs, à la gestion de processus, l'évolutivité, la sécurité, l'intégration d'API et l'extensibilité.

Jaxer est en fait un module pour Apache2 basé sur XulRunner, que l'on retrouvera dans la prochaine version de Firefox. XulRunner est un logiciel qui permet de lancer des applications Xul. C'est en quelque sorte une plateforme de développement d'applications Xul (définition xulfr.org). Dans le cas de Jaxer, c'est comme si vous aviez un Firefox sans interface ET côté serveur. C'est à dire que côté serveur vous pouvez bénéficier des dernières innovations qu'apporte Mozilla à son navigateur (Javascript 1.8, Canvas, etc), et donc en profiter sans avoir à créer un site ou une application Web dédié à Firefox.

Fonctionnement de Jaxer :
diagramme du flux d'une page exploitant Jaxer

Pour moi, les avantages de Jaxer sont :

  • la génération automatique des requêtes entre le serveur et le navigateur ;
  • l'utilisation d'un même langage entre le navigateur et le serveur ;
  • l'allègement du code JavaScript côté navigateur, et donc la réduction du coût de développement d'une application pour les différents navigateurs du marché ;
  • le système d'extensions et de composants (XPCOM) de Mozilla ;
  • enfin dans le cadre d'une démarche SOA, Jaxer est une plateforme pour le développement d'Application Internet Riche (RIA) tout à fait approprier, tout comme XulRunner l'est pour le développement d'Application de Bureau Riche (RDA).

Pour en savoir plus :