Greboca  

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

DLFP - Dépêches  -  Ocsigen : repenser le développement des applications HTML5

 -  Juin 2012 - 

Ocsigen est une technologie libre de développement de sites et applications Web client-serveur. Une de ses particularités est d'offrir la possibilité d'écrire les côtés client et serveur non seulement dans le même langage, OCaml, mais comme un seul et même programme. Particulièrement bien adaptée au développement d'applications HTML5 très dynamiques, Ocsigen permet également de repenser et simplifier l'implémentation des comportements standard des sites Web traditionnels (signets, bouton « back », liens, formulaires, etc.). En outre, il permet de combiner ces deux approches de manière très naturelle.

Ocsigen met l'accent essentiellement sur deux points : d'une part, offrir un langage très expressif, ce qui permet d'écrire du code simple et court ; d'autre part, aider à produire du code et des applications fiables et faciles à maintenir. C'est la raison pour laquelle Ocsigen utilise OCaml, un langage de programmation compilé très puissant et au système de type très riche. La grande expressivité d'OCaml est complétée par un grand nombre de nouveaux concepts inédits et spécifiques au Web (services, sessions sophistiquées, etc.) qui permettent de simplifier l'implémentation de comportements dynamiques complexes. De plus, Ocsigen exploite au maximum le typage d'OCaml pour qu'un maximum de garanties de fiabilité soient données dès la compilation (par exemple la validité des liens). Cela va même jusqu'à la vérification à la compilation que les pages générées seront conformes aux recommandations du W3C !

NdM : Ocsigen est sous licence LGPL 2.1

Sommaire

Le pouvoir des fonctions

La façon de programmer des sites Web traditionnels a été intégralement repensée, grâce à des concepts de haut niveau qui simplifient énormément l’implémentation de comportements complexes classiques du Web (sessions, bouton « back »…).

Les requêtes sont traitées par le serveur par le biais des « services », notion centrale dans Ocsigen. Un service peut être vu comme un générateur de contenu (HTML, fichiers, redirection, etc.), pouvant être déclenché par un clic sur un lien, un formulaire, ou par une requête du programme client.

Un service est en général associé à une URL et peut prendre des paramètres de types variés. L'identification du service à exécuter ainsi que la vérification et la conversion des paramètres sont faites automatiquement. Par exemple, le morceau de code suivant définit un service s, à l'URL user/profile, attendant un paramètre d'URL appelé i de type entier.

let s = Html5.register_service
           ~path:["user"; "profile"]
           ~get_params:(int "i")
           (fun g p -> ... (* an HTML5 page *))

La fonction register_service prend un premier paramètre (étiqueté "path") pour l'URL, un deuxième ("get_params") pour la description des paramètres du service et une fonction, qui génère la page à partir des paramètres GET et POST (ici, g est un entier).

Il existe d'autres types de services, répondant à des besoins différents — par exemple, des services accessibles à n'importe quelle URL pour faire des appels de fonctions distants (par exemple la connexion d'un utilisateur depuis n'importe quelle page). Il est aussi possible de créer dynamiquement des nouveaux services personnalisés pour un utilisateur, ce qui rend triviale la programmation de formulaires en plusieurs étapes.

Grâce aux services, on ne manipule jamais d'URL directement. Dans le code, on fera pointer un lien vers un service et non vers une URL, ce qui garantit l'absence de liens morts internes au site.

Applications distribuées

Un site Web était auparavant une plate-forme de contenu, avec parfois des comportements dynamiques côté client localisés, souvent en utilisant le plug-in Flash. Aujourd'hui, les navigateurs sont en train de devenir des machines virtuelles dans lesquelles s'exécutent des applications complexes. Cette évolution des possibilités des navigateurs ne s’est pas réellement accompagnée d’une évolution des technologies de programmation sous-jacentes. La plupart des applications que nous utilisons aujourd’hui sur le Web sont développées avec des frameworks classiques côté serveur et en Javascript côté client, sans aucune intégration entre les deux parties. Ces techniques de programmation sont de très bas niveau (proches des protocoles), ce qui oblige les programmeurs à se préoccuper de beaucoup de détails eux-mêmes (notamment du point de vue sécurité).

Ocsigen résout ces problèmes en proposant une approche radicalement différente. L'application Web est écrite dans un seul et même langage et correspond à un seul programme regroupant le code exécuté sur le serveur et le code exécuté sur le navigateur. Cela permet d'utiliser les mêmes bibliothèques des deux côtés et cela simplifie grandement la communication client-server car les deux parties partagent les mêmes structures de données et aucune conversion manuelle n'est nécessaire. On peut même par exemple utiliser côté client des variables définies côté serveur. Techniquement, le code client est compilé vers JavaScript à l'aide d'un compilateur très efficace.

Les parties client et serveur sont distinguées dans le code OCaml grâce à une syntaxe spéciale.

{client{
  ... (* Code OCaml exécuté au chargement de la première page du site *)
}}

{shared{
  ... (* Code OCaml commun aux côtés client et serveur *)
}}

{server{
  ... (* Code OCaml exécuté au lancement du serveur (définition de fonctions, etc) *)

  let a = ... (* Définition d'une valeur côté serveur appelée a *)

  ...
  (* Génération d'un morceau de page : *)
  div
    ~onclick:{{ (* Code Ocaml exécuté quand l'utilisateur clique sur l'élément 
*) ... %a ... (* qui utilise la valeur a définie sur le serveur *) }} [ (* contenu du div *) ]}}

La communication entre le serveur et le programme client est également prise en charge automatiquement, dans les deux sens : cela permet par exemple de recevoir des notifications de la part du serveur, en très peu de lignes de code.

Un des points forts d'Ocsigen est la possibilité d'utiliser une application côté client tout en conservant les comportements traditionnels des sites, basés sur les URLS, liens, formulaires et signets, etc. L'application ne s'arrête pas lorsque vous suivez un lien ! Cela permet par exemple d'implémenter un site dans lequel vous pouvez continuer à naviguer tout en écoutant de la musique, et ce, très facilement (c'est même le comprtement par défaut !).

Pour exécuter du code OCaml dans un navigateur, Ocsigen dispose d'un compilateur OCaml vers Javascript très efficace, qui est de plus en plus utilisé pour développer des applications dans un navigateur en bénéficiant du confort apporté par le langage OCaml. Par exemple la société californienne Besport est en train de développer un moteur d'affichage de cartes géographiques depuis les données OpenStreetMap. Et sur le site Try OCaml, le compilateur OCaml lui-même a été compilé vers Javascript pour permettre de tester le langage depuis une page Web.

Fiabilité et validités des applications

L'utilisation d'un langage de script pour écrire des applications complexes conduit la plupart du temps à des programmes très difficiles à maintenir et à faire évoluer lorsque la taille du code devient importante. Ocsigen, au contraire, a fait le choix d’utiliser un langage de programmation compilé. Et plutôt que créer un nouveau langage, il utilise un langage existant, OCaml, ce qui lui permet de bénéficier d’une communauté de développeurs active et d’un ensemble important de bibliothèques utiles. Ce langage a été choisi parce qu’il est l’un des plus évolués en terme d’expressivité et de fiabilité, tout en restant pragmatique dans ses choix.

En particulier, il dispose d’un système de types très sophistiqué, qui permet de vérifier un grand nombre de propriétés du programme à la compilation, avant même de le lancer, et d’éviter ainsi beaucoup de bugs. Ocsigen utilise ce système de types de manière poussée pour aider le programmeur à trouver ses erreurs. Cela a pour conséquence de faire des programmes très fiables et faciles à faire évoluer, avec seulement un peu plus de rigueur au départ.

Un exemple frappant est la vérification à la compilation de la validité du HTML qui garantit que toutes les pages générées par le programme seront valides. Par exemple, si f est une fonction qui renvoie une liste de blocs (

,
, etc.) alors le compilateur vous autorisera à utiliser les valeurs retournées à l'intérieur d'une balise mais pas à l'intérieur d'un

.

Ocsigen vérifie beaucoup d'autres aspects de l'application : absence de liens cassés, conformité des formulaires par rapport aux services vers lesquels ils pointent, etc.

En résumé, Ocsigen est un framework Web polyvalent, permettant de développer aussi bien des sites à la manière des frameworks MVC que de véritables applications sophistiquées avec interface dans un navigateur. L'utilisation d'un langage très évolué permet de programmer de manière concise et en faisant très peu de bugs.

Lire les commentaires

par séverine maingaud

DLFP - Dépêches

LinuxFr.org

L’écriture et l’image, des âges farouches au texte électronique

 -  16 mai - 

Dans cette nouvelle excursion du Transimpressux, nous voyagerons chez les Mayas de l’époque pré-colombienne ainsi que dans la Rome antique. Nous (...)


GIMP 2.10.38 est sorti

 -  14 mai - 

Note : cette dépêche est une traduction de l'annonce officielle de la sortie de GIMP 2.10.38 du 3 mai 2024 (en anglais).Cette (peut-être dernière) (...)


Visualisation d’imageries médicales avec Invesalius

 -  13 mai - 

Nous allons parler ici des examens par imageries médicales de type scanner ou IRM. Un scanner est une série d’images faites aux rayons X et pour une (...)


Lettre d'information XMPP de mars 2024

 -  11 mai - 

N. D. T. — Ceci est une traduction de la lettre d’information publiée régulièrement par l’équipe de communication de la XSF, essayant de conserver les (...)


Conférence OW2con’24 : financements et nouveaux défis réglementaires pour les logiciels libres

 -  9 mai - 

Avec quatre discours inauguraux, quatre sessions en petits groupes et 30 présentations d’experts, la conférence annuelle d’OW2 traite des aspects (...)