dimanche 25 septembre 2016
 
Sommaire
Réduire
MAGAZINE

• Technologie processeurs : La console de jeux comme source d’inspiration


DOSSIER - LA MAISON WI-FI

• Le Wi-Fi est dans l’air

• Les technologies et normes du sans fil

• Les conseils d’installation d’un expert

• Le Wi-Fi à la maison pour quoi faire ?

• Test Preview : Microsoft Windows Home Server

• Le Wi-Fi et le CPL en pratique

• Cadres Wi-Fi et Bluetooth : les nouveautés du Medpi


SERVEURS & SYSTÈMES

• Optimisation Web (2ème partie) : Les techniques pour être bien vu sur Internet


RÉSEAUX & SÉCURITÉ

• NAC : Pour se défendre au plus près des menaces


LOGICIELS & APPLICATIONS

• BONNES FEUILLES - Premiers pas de développeur avec Ruby

• DOTNET : Passez au multithreading !
- Le multithreading pour les nuls
- Des outils plus génériques


POSTE DE TRAVAIL

• LINUX JOURNAL : Etendre OpenOffice.org

• NAVIGATION WEB - Les compléments indispensables pour Firefox


ITINÉRAIRES

• METIERS - Au Musée de la Marine, l’informaticien engagé

• FORUMS : Les Clubs d’utilisateurs

• FORMATIONS : Bull joue sur la mobilité interne

• LIVRES : programmer en Java, tout sur les fonctions Excel, la sécurité des applications ASP
Edito
Réduire
Et si Microsoft rachetait TF1, ou Canal+?

A priori, l’hypothèse semble totalement saugrenue. Ne perdez d’ailleurs pas de temps à interroger les protagonistes sur ce sujet. Il ne s’agit nullement de rumeur, mais de pure spéculation.

newstef26526_Copier5.gifPourtant, à y regarder d’un peu plus près, l’hypothèse est moins saugrenue qu’il n’y paraît. Bien évidemment, la Première chaîne de télévision, ou la Chaîne à péage sont citées à titre d’exemples, car une telle démarche de fusion d’une société de logiciels avec un une chaîne de télévision s’opérerait sans doute d’abord sur le territoire domestique, à savoir les États-Unis, donc ce pourrait être CBS, NBC, CNN ou tel autre grand network américain.

Très récemment, Microsoft vient de montrer un regain d’intérêt pour marier ces technologies avec la télévision. Tout d’abord, IPTV vient de se transformer par la grâce du marketing en Mediaroom. Simple changement cosmétique ? Pas complètement ! En effet, la nouvelle version du logiciel a pour ambition d’intégrer les photographies numériques ou le partage de musique. L’objectif est donc bien que le boîtier triple-play, ou plus vraisemblablement la Xbox, devienne le matériel de convergence entre le contenu fourni par les opérateurs de télévision et le contenu créé ou pioché par les membres de la famille. Et devant le succès croissant de la télévision via ADSL, à la place du câble ou du satellite, de nombreux opérateurs internationaux de télécommunication commencent à regarder très sérieusement la technologie de Microsoft, afin de conquérir de nouvelles parts de marchés. Si l’on ajoute la tout aussi récente décision de Microsoft d’investir 12 millions de dollars dans un fabricant chinois de téléviseurs, Changhong Electric, on voit bien que l’appétit ne faiblit pas.
La volonté de Microsoft de marier informatique et télévision ne date pas d’hier. En 1997, Redmond avait déboursé 800 millions de dollars pour  racheter la société WebTV et sa console qui permettait de surfer sur le net via son téléviseur. L’échec fut patent. Pourtant ce serait bien mal connaître Microsoft que de croire que la société renonce si facilement à une idée. La ténacité – voire l’obstination – est l’une des caractéristiques de l’entreprise et bon nombre de produits ou technologies qui font aujourd’hui la réputation et les performances économiques de Microsoft ont nécessité de dures années de labeur et d’efforts, le système d’exploitation Windows en premier chef.
Aujourd’hui, la montée en puissance de sociétés comme Google montre que nous assistons à une complète redistribution des cartes dans le secteur de l’Internet avant que la vague ne touche les logiciels pour les postes clients. Si Microsoft a largement contribué à la domestication du PC dans les entreprises, puis dans les foyers, aujourd’hui il convient de trouver de nouveaux relais de croissance. D’où le Media Center, la Xbox, le Zune et autres appareils grand public qui permettent de prendre pied sur de nouveaux marchés et d’imposer sa présence autour de l’appareil qui demeure le point central du foyer, à savoir le téléviseur ou plus exactement ce qui y est diffusé. Les postes de télévision sont du hardware quand les chaînes sont du software. TF1 vend à Coca Cola du temps de cerveau disponible, selon l’expression désormais célèbre de son directeur général. Lorsque l’on voit l’importance croissante de la publicité sur Internet et sa part dans les revenus de Google ou d’autres acteurs, il devient évident qu’une télévision plus interactive – enrichie de fonctions logicielles permettant de segmenter ladite publicité en fonction du profil des téléspectateurs – est l’un des prochains enjeux pour les sociétés de logiciels.

    Stéphane Larcher
Magazine
Réduire
Technologie Processeurs
La console de jeux comme source d’inspiration
Par Olivier Bouzereau - Copyright L'Informaticien, tous droits réservés

Pour optimiser les performances du PC, il suffisait, hier encore, d’examiner ce que les grands systèmes pouvaient offrir : multiprocessing, partitionnement ou virtualisation. C’est désormais du côté des consoles de jeux qu’il faut plutôt regarder.

Sony-PS318317_Copier5.gifÀ l’heure où Intel et AMD se disputent le marché des PC et serveurs professionnels, plusieurs innovations significatives proviennent du segment grand public. Les consoles de jeux de dernière génération pourraient bien transformer prochainement l’architecture des micro-ordinateurs qui souffrent cruellement de goulets d’étranglement au niveau des échanges de données internes.
La console de jeux moderne bénéficie d’une bande passante quatre fois plus élevée que celle du PC. Avec un débit variant de 3 à 5 Gbps, l’interface logique Gen2 de Rambus traite 90 % des entrées-sorties du microprocesseur Cell de la Playstation 3.

Une telle vitesse n’est pas encore permise sur PC, le bus PCI Express plafonnant à 2,5 Gbps. Pas même sur les fermes de serveurs qui privilégient encore la fiabilité et la capacité sur le débit : « Le PC suit une approche à base de mémoires tampon, à la fois coûteuses et consommatrices de puissance électrique. Son défi actuel, c’est l’implémentation de nouvelles interfaces mémoire », dépeint-on chez Rambus, pionnier californien du très haut débit. Capable de doper les traitements graphiques, l’interface Gen2 assure des échanges plus rapides entre le microprocesseur générique et les processeurs spécialisés.


Plusieurs OS en parallèle

En coopération avec IBM, Toshiba et Rambus, Sony a développé l’architecture Cell, à Austin (Texas). Au-delà d’entrées-sorties très rapides, une autre de ses caractéristiques innovantes concerne sa structure multicouche. Elle permet d’exécuter plusieurs systèmes d’exploitation simultanément. Ainsi, Linux et l’environnement des jeux de la PS3 peuvent-ils tourner en parallèle, au-dessus de deux noyaux système déjà embarqués et sécurisés, sans freiner ni les traitements audiovisuels ni les jeux en temps réel. Du coup, les développeurs n’adressent plus les composants en direct. Mais les grappes d’ordinateurs Cell s’organisent, une fois connectées via Internet, comme le ferait une « grille informatique ». Les applications envisagées couvrent non seulement les jeux en réseau, mais aussi la vidéosurveillance et la domotique au sens large. Nintendo et Microsoft songent exactement aux mêmes types de traitements sur leurs consoles de dernière génération.

Au niveau électronique, une autre migration concerne la gravure en 45 nm, promise pour la fin 2007 chez Intel, mais un an plus tard chez AMD toujours fidèle au pas de 65 nm. Cette évolution permettra d’intégrer davantage de blocs logiques – 8 cœurs sont prévus chez AMD en 45 nm –, donc plus de traitements sur une même pièce de silicium.

Le rachat récent d’ATI par AMD ouvre une autre piste intéressante d’intégration : après le contrôleur mémoire, c’est au tour du contrôleur graphique de rejoindre le processeur. On notera que, sur les PDA actuels, cette intégration s’étend déjà au module GPS et aux modems radio, ce qui soulève un autre défi pour les développeurs, celui de la vérification fonctionnelle. La démocratisation des SoC (Systems on Chip) et l’avènement des NoC (Networks on Chips) contribuent à l’émergence de nouveaux équipements : le smartphone baladeur audiovisuel, où l’OS et le software embarqués vont occuper une place prépondérante.


Quatre cœurs indépendants pour le Barcelona d’AMD
Le principal saut de performances permis par AMD cette année concerne les PC quadri-cœurs, fondés sur l’architecture K10 : « Notre processeur Barcelona va offrir aux serveurs un gain de performances de 40 % comparé à la concurrence et de 88 % comparé à notre solution double-cœur, sans changement de logiciels (NDLR : hormis le BIOS) », explique Giuseppe Amato, le directeur technique d’AMD pour l’Europe. Ce faisant, il admet implicitement le retard concédé un moment face aux architectures Core 2 Duo d’Intel. Les processeurs quadri-core d’AMD seront cadencés de 1,9 à 2,5 GHz. Dès septembre 2007, ils pourront siéger sur les cartes mères disponibles depuis 2006, le socket serveur devant rester stable « durant au moins trois ans », recommande le directeur technique d’AMD. « Dans l’ADN de notre architecture K10, on peut débrayer temporairement l’horloge du module FTP, lorsque les calculs en virgule flottante ne sont pas utilisés. Cela peut s’effectuer automatiquement, par bloc logique, ce qui améliore l’efficacité du processeur et réduit la puissance consommée », explique-t-il. Le changement d’architecture permet aussi de disposer de quatre cœurs tournant chacun à sa propre vitesse, ce qui se devrait se traduire par des économies d’énergie substantielles dans les data centres des entreprises et de leurs prestataires.


p.1
Réduire
Le Wi-Fi est dans l’air
Par Olivier Pavie - Copyright L'Informaticien, tous droits réservés.

Le Wi-Fi n’est plus seulement une mode. En tant que réseau déployé dans la maison, il crée des exigences en termes de services et de qualité. Technologies Wi-Fi et complémentarités possibles, qualité de service au sens résolument qualitatif et services au sens pratique : si le fatras n’est plus dans les fils, il peut être encore dans la confusion d’esprit…

maison.jpg

Téléphoner en Wi-Fi, écouter et regarder ses médias sur un baladeur Wi-Fi, piloter ses volets en Wi-Fi, écouter toutes les radios du monde avec un poste Wi-Fi sur piles dans sa salle de bains, recevoir des informations trafic ou la météo locale au réveil… Tout est désormais possible, par le réseau sans fil, bien évidemment, mais aussi grâce à des objets communicants, comme le fameux lapin Nabaztag, dont il faudrait presque un exemplaire par pièce à vivre.


Service réseau ou réseau de services ?

Imaginez ! La maison Wi-Fi, c’est une maison dans laquelle le service d’accès au réseau domestique et à Internet est partout, ou, tout du moins, remplit les offices que l’on en attend pour les différentes utilisations que l’on peut en avoir. C’est à partir de cette constatation que l’on peut commencer à analyser quels services peuvent être rendus par le réseau et dans quelle mesure le Wi-Fi apporte la solution adéquate.
Dans le cas où le ou les services attendus ne peuvent effectivement pas être rendus avec le Wi-Fi, connaître les alternatives et les moyens de les mettre en œuvre permet de devenir son propre architecte numérique de son domicile.


La box au cœur de la maison numérique

Ce qui est souvent le point de départ de l’usage du Wi-Fi, c’est désormais la box que vous fournit votre opérateur. La Freebox et la Livebox ont certainement été les premières à démocratiser l’usage du Wi-Fi, mais également à montrer les limites de l’utilisation en termes de portée, de performances, voire de compatibilités avec certaines contraintes de sécurisation. Elles restent néanmoins l’interface de liaison avec l’accès à Internet et servent généralement de point de départ du déploiement du réseau dans la maison.
Rien n’empêche de compléter leur section Wi-Fi, voire de les remplacer en exploitant l’extensibilité offerte par la ou les prises Ethernet : cela peut devenir un véritable nouveau départ de services réseau sans fil, sans pour cela changer d’opérateur ou de box.

Cette extension du Wi-Fi par l’Ethernet est également une alternative de maillage d’un réseau d’accès public sécurisé et gratuit, comme le propose par exemple Fon avec sa fameuse Fonera. En branchant une Fonera en extension d’une box, ou quelque part sur le réseau d’accès à Internet que vous aurez déployé chez vous, vous ajoutez un point d’accès Wi-Fi personnel à votre réseau ainsi qu’un point d’accès public sécurisé : les deux sont dans la boîte sans difficulté de configuration.

La maison Wi-Fi, c’est une totale plasticité spatiale dynamique du réseau adaptée à tous les services : le tout est de savoir mixer les technologies compatibles Ethernet.


TEST Lapin de salon (!) - Nabaztag Tag
Écouter les conseils du lapin…

lapin-andre-big57240_Copie5.gifVoici un objet bien curieux. Au premier abord, il ressemble à un lapin en plastique, sans utilité. Pourtant, plus qu’un élément de déco un peu kitch, le lapin Nabaztag Tag (environ 130 euros) est une source d’informations en continu. Connecté à Internet via un point d’accès Wi-Fi, il devient rapidement un compagnon, et disons-le, qui s’avère être très utile, ou parfois très dérangeant. L’utilisateur commence par configurer son nouvel animal de compagnie. Vous pouvez lui demander tout ce dont vous avez besoin ou envie, et à des heures précises. Aussi, il peut se transformer en réveil, en radio Internet, en lecteur de podcasts ou en précieuse source d’informations économiques, culturelles, sportives… (LCI, France-Info, RMC, les Inrockuptibles, par exemple) Mais les autres possibilités d’utilisation sont nombreuses : horloge parlante, reconnaissance vocale pour des services comme la qualité de l’air ou la météo, séquence humour, Bourse, bilan de votre semaine suivant le nombre de contacts avec vos amis… Bref, le Nabaztag est une vraie mine d’informations diverses et variées, aussi utiles que futiles : dites à un(e) ami(e) possédant un lapin que vous pensez à lui en demandant à votre animal de faire bouger l’oreille de celui de votre ami(e) ! Vous pouvez également envoyer des mails, et le lapin lira ceux que vous recevez, grâce à la technologie Text to Speech. Et ce n’est pas fini : depuis le 15 juin, le lapin parle 16 langues, et la commande vocale est possible en 5 langues : français, anglais, allemand, italien et espagnol. Nabaztag Tag est également équipé de la technologie RFID, pour identifier, reconnaître et adapter le comportement du lapin en fonction des objets sur lesquels sont collées les vignettes de reconnaissance.

CF000538-007849-3557244_Co6.gif



Les technologies et normes du sans fil

802.11 a/b/g/n : le Wi-Fi est dans l’air et il n’y a pas que lui. Vous n’êtes pas au courant ? Pensez aussi CPL. Comment ? Vous n’avez que le Bluetooth ? Et l’UWB ? ZigBee ? Vous y avez pensé ? Bienvenue sur une toute petite nouvelle planète à installer chez vous !


Le Wi-Fi, c’est le 802.11 et ses différentes évolutions ou alternatives. La dernière génération à être apparue s’appelle le 802.11n, dont on attend un débit théorique utilisable de l’ordre de 300 à 500 Mbits/s, contre les 54 Mbits/s des 802.11 a/g et les 11 Mbits/s du 802.11b. Ce qui caractérise actuellement la norme 802.11n, est la phase de sortie des versions Draft, c’est-à-dire « brouillon ». Une astuce que les constructeurs d’équipements Wi-Fi exploitent pour continuer à diffuser de nouveaux produits sans attendre la disponibilité définitive de la norme. À la décharge des constructeurs, ces équipements « Draft N » (au départ « Pre-N ») garantissent une compatibilité avec les anciennes normes b et g (et éventuellement a) en améliorant le débit et la couverture. À quand le 802.11 n tout court ? D’ici à quelques mois sans doute… Si, si…


La norme à surveiller : le 802.11 n

Alors, venons-en aux faits : le 802.11 n, qu’aura-t-il de si parfait qui mérite ainsi que l’on s’attarde sur plusieurs brouillons commercialisables ? Avant tout, il faut savoir que le 802.11n ne sera officiellement ratifié qu’à la fin de 2008, voire au début de 2009. La version Draft 2.0, préconisée par la Wi-Fi Alliance (www.wifi-alliance.org), prévoit des commercialisations de produits certifiés dès l’été 2007. Avec son intégration de MIMO (Multiple Input - Multiple Output), le 802.11n propose déjà un débit réel de l’ordre de 100 Mbits/s dans un rayon officiel de l’ordre de 90 m. Sur le plan du fonctionnement, le 802.11 n certifié intègre une totale compatibilité avec les normes a/b/g, ce qui signifie que la totale compatibilité exploite les deux bandes de 2,4 GHz et de 5 GHz (lire les conditions d’utilisation sur http://www.art-telecom.fr/uploads/tx_gspublication/guide-juridique-crip2007.pdf). Par ailleurs, 802.11 n Draft 2.0 intègre déjà la notion de « prioritisation » des types de flux de données de la norme définitive, ce qui permet par exemple de garantir un flux constant à de la vidéo, tout comme de garantir un flux bidirectionnel optimisé pour la téléphonie.


CPL et Ethernet

Le CPL, ou Courant porteur en ligne, est le symbole même de la capillarisation du réseau Ethernet dans la maison en passant par les prises électriques. La norme Homeplug (www.homeplug.org) est aujourd’hui la référence et propose des débits pouvant atteindre les 200 Mbps. Les atouts de cette norme sont de pouvoir coupler des équipements de plusieurs générations et de plusieurs constructeurs sur le même réseau électrique, en assurant des débits réels pouvant atteindre les 70 Mbps pour du 200 Mbps théorique. Le gros avantage de cette capillarisation, c’est aussi de pouvoir déployer des points d’accès Wi-Fi partout où il y a une prise de courant, y compris… dans le jardin, au sauna ou sur le bord de la piscine.


Z comme… ZigBee ou Z-Wave

On en entend déjà parler depuis tellement de mois que l’on a du mal à encore y croire, et pourtant… ZigBee et Z-Wave sont aux domotique et confortique ce que le Wi-Fi est à l’Internet sans fil : des dispositifs de couverture en réseaux maillés (Mesh) intelligents, bas débit et basse consommation, pour les capteurs et contrôles d’équipements simples de la maison ; cela va du contrôle des volets ou de l’arrosage à celui des capteurs de fumée et autres systèmes d’alarme. Ce qu’il faut en retenir, c’est que ZigBee, inventé par le père d’Ethernet, Bob Metcalfe, fonctionne dans les mêmes gammes de fréquences que le Wi-Fi et s’y complait, comme le Bluetooth. Il est étudié pour convenir à tous les usages qui nécessitent des capteurs et automatismes liés aux marchés du domestique, mais aussi des immeubles, de l’industrie, de la logistique, voire de la Défense.
Du côté de Z-Wave, le principe est le même, mais s’adresse plutôt au marché domestique et fonctionne sur une fréquence de 900 MHz. La faculté de fonctionnement Mesh consiste dans le fait que chaque capteur ou contrôle, en fonction de sa configuration, peut servir de relais hertzien aux autres équipements du même réseau.

La maison Wi-Fi s’impose comme offrant un usage universel d’équipements de toutes nature dans la maison. Il est même tout à fait possible que les premières applications domotiques pilotables en réseau s’imposent en Wi-Fi avant le CPL et le ZigBee.



Le Bluetooth et l’UWB pour les liaisons courtes
Le Bluetooth, que chacun connaît, va se voir compléter d’ici peu par l’UWB, le fameux Ultra Wide Band, qui propose d’offrir du très haut débit sur courtes distances et faible consommation électrique. Le but de cet UWB, c’est tout simplement par exemple de pouvoir diffuser de la vidéo à partir d’un caméscope HD, ou un baladeur/stockeur HD vers un téléviseur HD 1080 mural, sans fil. Selon Intel, l’UWB va se matérialiser par différentes versions sans fil des connexions filaires existantes, comme l’USB ou le Firewire, mais aussi par un complément ou un remplacement de certaines technologies sans fil existantes, comme par exemple le Bluetooth.


TEST Télécommande universelle multimédia - Logitech Harmony 1000
Piloter vos appareils audio et vidéo…

logitech-harmony-1000569797.gifVoici l’objet idéal pour ceux qui ne s’y retrouvent plus au milieu de toutes leurs télécommandes. Le principe est simple : gérer tout l’environnement multimédia - vidéo, audio, consoles de jeu, éclairage et appareils électriques – via le classique infrarouge mais avec une seule télécommande universelle. Et pas n’importe laquelle ! Logitech en a conçu une très pratique, en adéquation avec son nom : Harmony 1000 (environ 400 euros).
Il vous faudra affronter dans un premier temps les quelques difficultés de configuration de tous vos appareils multimédias les uns après les autres. Le constructeur a mis pour cela l’accent sur la rapidité d’utilisation ; ainsi, vous ne sélectionnez pas un composant mais une activité. Par exemple, en choisissant de regarder un film, la télécommande allume le système sonore, la télévision et le lecteur DVD. De plus, la télécommande possède un écran tactile de 3,5”, vraiment très pratique pour gérer l’interface, et elle fonctionne sans pile, simplement en la rechargeant sur sa base. Elle est également fournie avec un logiciel, mis à jour régulièrement par Internet via la connexion USB d’un ordinateur, qui possède une base de données de plus de 175 000 dispositifs multimédias répertoriés. À noter que tous les boutons spéciaux des télécommandes peuvent être ajoutés sur Harmony, à condition d’avoir bonne mémoire !
p.2
Réduire
TEST Téléphone Skype/DECT - Linksys CIT300
Téléphoner gratuitement, sans fil… sans ordinateur !

CIT300,256749_Copier8.gifVous connaissez Skype, le service propriétaire de VoIP via ordinateur ? Désormais, utilisez la même solution mais sans ordinateur, avec un combiné de téléphone sans fil ! Linksys propose en effet plusieurs modèles de téléphones compatibles avec le logiciel de téléphonie sur IP. Le CIT300 (environ 200 euros) que nous avons essayé fait partie de ceux-là : il est accompagné d’une station de base DECT (la norme bien connue pour les téléphones sans fil domestiques), qui s’intègre dans un réseau local, ou directement sur un modem ADSL par exemple. Aussi, plus besoin d’être assis devant un ordinateur pour pouvoir profiter de la gratuité des appels téléphoniques avec Skype.

À noter que la solution prend en charge les différentes solutions Skype, dont SkypeOut (émission vers toute ligne de téléphone fixe ou mobile), SkypeIn (réception de tout appel extérieur sur un numéro dédié) et Skype Voicemail (messagerie vocale). L’installation est plutôt simple, avec un minimum de connaissance en réseau, et la première connexion particulièrement rapide. L’interface du téléphone est également très simplifiée. Lors du premier essai, le téléphone vous demande simplement votre login au service éponyme, et charge ainsi toute votre liste de contacts Skype instantanément. Ainsi, vous recevrez des appels en provenance de vos contacts Skype, mais également de l’extérieur, comme sur un téléphone normal. À souligner que le design du téléphone un peu dépassé est le seul « point faible » du produit Linksys.

Bruno NAPOLI, installateur et intégrateur en équipements multimédias pour la maison (BNM Micro Service)
« La solution Wi-Fi n’est idéale que pour la navigation Web »

Photo-Bruno-Napoli624363649.gifBruno Napoli est un bidouilleur. Il aime trifouiller tout ce qu’il touche, ouvrir et « customiser » les accessoires qu’il installe chez ses clients. Intégrateur d’équipements multimédias pour la maison depuis environ six ans, il est aujourd’hui à son compte, et travaille essentiellement chez des particuliers.

La plupart du temps, il installe des équipements entiers, types Media Center dans plusieurs pièces, accompagnés d’une connexion Internet par Wi-Fi, ou par CPL (Courant Porteur en Ligne). « Aujourd’hui, la solution CPL est idéale pour les postes fixes puisque l’on atteint désormais des débits qui vont jusqu’à 200 Mbits/s », explique Bruno Napoli. Car dans la maison, la solution du Wi-Fi n’est pas forcément toujours une évidence.
 

Attention au "roaming" entre points d'accès Wi-Fi

« Le Wi-Fi ne peut pas garantir une qualité de service. C’est une solution qui est idéale simplement pour la navigation sur le Web. Mais ça ne doit rester que l’ultime solution, puisque la qualité du Wi-Fi se dégrade au fur et à mesure que les gens s’équipent ! », poursuit-il. Même la toute dernière norme « nDraft » ne semble pas le convaincre, bien qu’il reconnaisse que ce soit la plus robuste. Pour lui, c’est avant tout celle qui nécessite « un routeur avec trois grosses antennes, et des grosses cartes Wi-Fi ». Le conseil du spécialiste est en fait de toujours réaliser un test avant de commencer une installation sans fil. Toutefois, il faut faire attention à la multiplication des points d’accès Wi-Fi pour éviter les problèmes de « roaming ». « Avec plusieurs bornes, l’ordinateur cherche toujours la meilleure connexion et provoquera donc des interruptions. C’est pourquoi aujourd’hui il faut toujours vérifier que le matériel est récent et toujours mettre à jour ses drivers », conclut Bruno Napoli.

Pour un professionnel de l’intégration, le choix des marques reste un léger problème. Une alternative existe entre les marques grand public, souvent moins chères, et les sociétés spécialisées dans tel ou tel produit. La bonne décision n’est pas toujours évidente. « Quand vous achetez chez une société spécialisée uniquement dans un produit, vous avez l’assurance de la qualité de service en toute situation. Acheter chez certains équipementiers, moins chers, qui fabriquent plusieurs produits est une bonne solution, seulement quand il n’y pas de problème particulier… », s’amuse Bruno Napoli.
Comme pour les solutions Internet, plusieurs choix s’opposent en ce qui concerne l’intégration d’un système de stockage sans fil communiquant. Pour lui, le serveur dédié est la solution idéale, que ce soit Windows Home Server, ou une simple solution NAS branchée en réseau sur CPL, plutôt qu’un ou plusieurs équipements Media Center. « Windows Home Server unifie les Windows, alors qu’un NAS ne parle pas Windows, il parle uniquement réseau. » Aujourd’hui, la solution paraît idéale avec la gestion réseau de Windows Vista. « De plus, Home Server apporte plusieurs fonctionnalités par rapport à un NAS. »
Du côté de la gestion des dossiers, Bruno Napoli est satisfait de la plate-forme Media Center de Windows Vista, bien qu’il regrette qu’elle soit plus « fouillie » et moins claire que celle de Windows XP…

Les points clés pour la maison sans fil
• Privilégier le CPL pour les postes fixes, le Wi-Fi uniquement pour la navigation Internet. La combinaison des deux reste idéale pour un aménagement dans plusieurs pièces.
• Privilégier les marques spécialisées dans un produit, quitte à y mettre le prix pour l’assurance du suivi en cas de problème. Les marques grand-public peuvent tout de même apporter une grande satisfaction.
• Unifier les marques pour éviter les problèmes d’interopérabilité entre les logiciels dédiés et les drivers.
• La solution du Home Server est idéale pour le partage de fichiers, le streaming… La solution NAS est efficace car pratique, tant en termes fonctionnels qu’ergonomiques.




Le Wi-Fi à la maison, pour quoi faire ?

Le Wi-Fi est la panacée pour une disponibilité de services sans fil dans toute la maison. Mais de quels services s’agit-il ? Et lorsqu’on parle de qualité de service, doit-on vraiment associer cette idée à la QoS ?


Les usages et services du Wi-Fi dans la maison, nous en avons un peu parlé auparavant, mais sans cas concret et sans fournisseur éventuel. Que peut-on alors concrètement envisager de faire avec le Wi-Fi et le réseau en général dans la maison ?

Pour commencer, les applications les plus largement distribuées aujourd’hui concernent l’usage des médias audio et vidéo avec le Wi-Fi, ainsi que la téléphonie, principalement par Skype.

En matière d’audio, un des exemples les plus frappants de la matérialisation de l’usage du Wi-Fi dans la maison, c’est évidemment la diffusion de ses MP3 vers un baladeur ou une console de jeu, comme c’est le cas de ce que peut faire un PC sous Windows Media Center, ou Vista version familiale premium vers une Xbox 360 connectée en Wi-Fi. Selon ce même principe, il est d’ailleurs possible de diffuser de la vidéo, mais c’est moins recommandé pour des questions de débit et de réelle qualité du service Wi-Fi. Il suffit du passage d’une personne dans le champ de la transmission en Wi-Fi pour que cela ne fonctionne plus, tout du moins dans le cas de l’usage d’un Wi-Fi 802.11g standard.

C’est la même problématique que l’on rencontre avec les lecteurs de DVD de salon et les lecteurs multimédias équipés Wi-Fi, produits qualifiés de « passerelles multimédias », qui proposent de diffuser vidéos et MP3 : le CPL et l’Ethernet s’avèrent plus efficaces en vidéo en attendant des équipements 802.11n. À noter qu’en dehors du Windows MCE et de Windows Connect, Twonkyvision est le « standard » de serveur multimedia le plus utilisé pour l’ensemble des passerelles multi-médias.


Le concept « Radio Internet »

wifi-art03-02liveradio56710.gifCe qui est intéressant sur le principe de la radio Internet, même si c’est encore un peu onéreux, c’est le cas qu’illustre bien la Liveradio d’Orange : un récepteur radio portable, qui fonctionne sur batteries rechargeables et offre le service de pouvoir aussi bien écouter presque toutes les radios du monde grâce aux nombreux flux radio sur Internet de type Shoutcast, mais également les podcasts.

De plus, en connectant un baladeur MP3 ou une clé USB sur lesquelles sont stockées des MP3, la Liveradio donne le choix de pouvoir écouter ses propres musiques. Deux restrictions ont été relevées lors de nos tests. La première a montré que les podcasts auxquels s’abonner ne pouvaient être sélectionnés que dans une liste préétablie dans une console d’administration Online, à l’intérieur de la zone d’abonnement à Orange ADSL ; impossible, par exemple, de s’abonner au podcast Explorateur Numérique de votre serviteur. Par ailleurs, un baladeur de type iPod ne peut diffuser ses MP3 que s’ils sont copiés sur l’iPod dans un mode d’utilisation mémoire de masse et non pas sous iTunes.


De nouveaux objets communicants

Objet communicant par excellence, conçu par la société française Violet, le Nabaztag est en quelque sorte un prototype fonctionnel de toute l’intelligence que peuvent acquérir des objets de ce type. Semi robotisé avec ses oreilles mobiles, connecté en Wi-Fi et pilotable par des applicatifs disponibles en ligne sur Internet, il sert à vous informer par le son, la lumière, le mouvement de ses oreilles, ou une composition des trois modes. Les informations, ce peut être la météo, un service parmi des quantités auxquelles vous avez abonné votre « lapin », tout comme vous pouvez aussi l’utiliser comme messager à distance pour informer votre compagne ou compagnon. Muni de son synthétiseur vocal en ligne, il interprète tous les messages textuels qui lui sont adressés à partir de la console personnalisée dont vous disposez sur le site my.nabaztag.com. Vous pouvez même lui envoyer des MP3 qu’il joue. Son seul handicap peut éventuellement être son paramétrage qui demande une certaine habitude des us et coutumes techniques du Wi-Fi.


Confortique, domotique ?

Le plus difficile aujourd’hui, c’est d’exploiter le Wi-Fi comme base de pilotage de la maison. Les enjeux mondiaux sont si colossaux que tout le monde affûte ses armes depuis déjà plusieurs années. Aujourd’hui, sur le marché domestique, on assiste à un début de pénétration aux États-Unis de la plate-forme Z-Wave pour le marché du DIY (Do It Yourself). Les télécommandes Logitech Harmony ayant elles-mêmes adopté cette norme plutôt que ZigBee. Aux dernières nouvelles, la société Hawking Technology (http://www.hawkingtech.com ) vient de lancer un service sur Internet baptisé Home Remote qui complète le pilotage à distance de toutes sortes d’équipements réseau en Wi-Fi et Ethernet, pouvant eux-mêmes être des passerelles pour des équipements « confortiques » en Z-Wave. C’est ainsi que l’on peut dès aujourd’hui utiliser cet environnement pour piloter les radiateurs de la maison, des éclairages, des détecteurs d’intrusion, etc. Ajoutons que ce HomeRemote vient en complément des possibilités de pilotage interne par PC, par télécommande ou par GSM. La page http://www.hawkingtech.com/homeremote/diagram.html illustre dynamiquement l’ensemble des possibilités de la solution.

Si le secteur de l’électronique grand public est particulièrement dynamique en matière d’avancées technologiques qui mettent en œuvre les usages du sans-fil, la domotique reste encore le terrain des spécialistes professionnels ou des amateurs particulièrement éclairés et bidouilleurs. Un tournant est sérieusement envisageable dans cette période 2007-2008.


TEST Radios Internet - NOXON iRadio et NOXON2audio
Zapper parmi les radios du monde entier !

NOXON-iRadio-seitlich566511.gifGrâce aux nombreuses opportunités culturelles et musicales qui s’offrent sur la Toile à tout internaute averti, voici venu le temps du contenu aux ressources inépuisables. Terratec propose donc deux produits, iRadio et Noxon2audio, pour pouvoir tirer parti de toutes ces richesses cachées sur le Net. Avec ces deux radios, préparez-vous à découvrir la variété musicale infinie des stations Internet, grâce à une simple connexion Wi-Fi – ou éventuellement par câble Ethernet.

Bien que les deux produits n’aient pas la même allure, ni le même design, ils ne sont pas foncièrement différent. Le Noxon iRadio (environ 230 euros) est en fait un terminal capable de lire toutes les radios Internet, grâce à une interface simple qui vous laisse le choix entre le genre, le pays, les nouvelles stations, les stations populaires… En plus des flux des radio Internet, il assure la transmission des podcasts et des fichiers musicaux stockés sur votre ordinateur. Toutes ces fonctions sont également offertes par le Noxon2audio (environ 200 euros). La seule différence entre les deux appareils est que le premier intègre un haut parleur. Le deuxième en est dépourvu et devra donc être relié à des enceintes extérieures, ou à un système sonore, comme une chaîne Hi-Fi par exemple. À noter que l’installation des périphériques est extrêmement simplifiée.
p.3
Réduire
TEST PREVIEW
MICROSOFT WINDOWS HOME SERVER

Microsoft prépare un nouveau système grand-public plus orignal qu’il n’y paraît. Il se concentre sur trois fonctionnalités : la sauvegarde des postes, le partage en local ou à distance des contenus, et l’extensibilité de l’espace de stockage.

WHS0162142_Copier13.gifWindows Home Server (ou WHS, plus simplement) concrétise une idée qui est assez ancienne chez Microsoft : celle de décliner sa gamme « Windows Server » vers le foyer. Dérivée des disques NAS grand-public, l’idée première de WHS est de centraliser en un lieu unique tous vos contenus numériques et d’en faciliter le partage non seulement avec les ordinateurs du foyer, mais également avec tous les satellites numériques qu’il s’agisse de PDA, de baladeurs, de consoles de jeux, de cadres photos numériques, de lecteurs multimédias réliés à votre chaîne hi-fi ou votre Home Cinéma. Le système est avant tout conçu pour être embarqué dans des mini-serveurs conçus pour la maison. Mais il pourrait également être accessible aux passionnés souhaitant construire leur propre serveur à partir d’un ancien PC par exemple.
Étrangement, WHS ne s’appuie pas sur Longhorn Server ou Vista, mais sur Windows Server 2003 dépouillé de sa gestion de domaine et de son Active Directory. Vous n’y retrouverez donc ni galerie photos Windows, ni même de Windows Media Center. En revanche, le système s’appuie sur les protocoles UPnP et Windows Media Connect pour faciliter le partage des contenus multimédias et les gérer indépendamment de l’accès aux dossiers et aux fichiers. Dès lors, les PC mais également les Xbox et les terminaux UPnP pourront directement profiter des vidéos, musiques et photos stockées sur le serveur.
Il est toutefois essentiel de réaliser que WHS n’est pas une simple version bridée de Windows Server 2003. Le système est en réalité beaucoup plus original qu’il n’y paraît et truffé de technologies spécifiquement imaginées pour lui. La première réside dans son interface de pilotage. Le serveur WHS n’est pas censé disposer de son propre écran ou clavier. Il se pilote donc à distance à partir d’une interface spécifiquement développée pour l’occasion : la Console WHS. Celle-ci permet de facilement gérer les utilisateurs, les droits de partage des dossiers/fichiers et des contenus multimédias, les accès extérieurs et l’espace de stockage. Ce dernier est lui aussi très original, puisqu’il est unique : tout nouveau disque ajouté au serveur (en IDE, SATA, SCSI, USB ou Firewire) se voit aggloméré à l’ensemble existant. Il n’y a plus de concepts d’unités disques et de partition. Autre innovation, le serveur permet d’accéder à distance aux données qui y sont stockées mais également aux PC qui y sont connectés grâce à une interface Web : chaque WHS est ainsi livré avec un nom de domaine « monserveur.LIVENODE.COM » qui joue le rôle de DNS dynamique, afin que vous disposiez d’une URL d’accès sans pour autant avoir à vous offrir une IP Fixe.

Enfin, la dernière vocation de WHS réside dans la simplification et l’automatisation des sauvegardes. Tous les PC du foyer se voient ajouter un petit agent qui réagit aux demandes du serveur et qui déclenche des sauvegardes intégrales (ou partielles) des PC. Ces sauvegardes sont réalisées au niveau « clusters » et non fichiers : seuls les clusters modifiés depuis la dernière sauvegarde sont transférés au serveur. Il en résulte une étonnante compacité des sauvegardes. Non seulement en un clic l’utilisateur peut retrouver une ancienne version d’un fichier écrasé ou modifié, mais il peut également réinstaller intégralement son PC à l’aide du CD de redémarrage livré.

Microsoft Surface : la table basse tactile du futur ?

Fin mai, Microsoft a dévoilé son dernier projet : une technologie nommée Surface qui adopte une interface futuriste basée sur un écran tactile « multi-touch ». Microsoft étant en premier lieu un éditeur de logiciels, il a donc développé un système qui permet de profiter au mieux de cette nouvelle technologie. Le géant des éditeurs a même présenté une table en guise de prototype, qui intègre un écran tactile de 30 pouces, et qui donne des perspectives d’utilisation assez étendues. Actuellement, elle est équipée d’un processeur Intel Pentium 4 à 3 GHz avec 2 Go de mémoire vive, ainsi que de cinq caméras infrarouges.

Anciennement connue sous le nom de projet « Milan », cette technologie ouvre un large panel de possibilités d’utilisations pour le grand-public. Tout d’abord, l’interaction directe est un point essentiel puisqu’il est possible d’apprendre, de partager, de créer, de s’amuser, de synchroniser, d’acheter... Bref, une véritable mine d’or, exploitable seul ou à plusieurs. Tout est pilotable du bout des doigts, pour regarder des photos par exemple, jusqu’à l’importation directe de fichiers multimédias. Néanmoins, une utilisation commerciale est également prévue. Microsoft a annoncé avoir scellé un partenariat avec la chaîne d’hôtels Starwood qui comprend les hôtels Sheraton. Il semblerait également que le géant de Redmond travaille avec les hôpitaux, pour le secteur de l’imagerie médicale. On peut même imaginer des restaurants où le menu se choisirait directement sur la table, avec les doigts !

TEST Caméra IP motorisée - Linksys Wireless G PTZ
Surveiller sa maison à distance

cameraIP57331_Copier14.gifSans céder à la paranoïa, le propriétaire d’un pavillon Wi-Fi (ou d’une résidence secondaire) peut prendre l’envie de surveiller son bien à distance. Qui est dans la maison ? Qui se promène aux abords ? Sans remplacer un vrai système d’alarme, la caméra Linksys Wireless G-PTZ (environ 370 dollars) dispose de tous les atouts pour séduire les amateurs. C’est une vraie caméra IP qui, contrairement à une vulgaire Webcam, n’a pas besoin de se raccorder à un ordinateur pour fonctionner. Et en plus elle est Wi-Fi ! Il suffit qu’elle soit à portée d’un point d’accès Wi-Fi pour se connecter au réseau local et à Internet. Elle possède encore deux atouts supplémentaires : elle est dotée d’un micro pour capter son environnement sonore et elle est motorisée, ce qui lui permet de couvrir un champ de près de 180 degrés en horizontal. L’utilisation typique de cette caméra sans fil (seule une alimentation électrique est nécessaire) est de programmer une séquence de vues successives pour couvrir facilement et régulièrement toute la zone accessible. Une détection d’intrusion avec alerte par mail est également prévue mais elle est assez délicate à mettre en place.

Lors du test, cette caméra nous a donné pleine satisfaction pour l'installation d’un outil de surveillance de notre hall d’accueil. Le seul point noir est venu du processus d’installation. Linksys, filiale de Cisco, fournit un assistant d’installation qui se révèle incomplet pour une configuration en Wi-Fi. Celle-ci devra être terminée en passant par l’interface Web d’administration de la caméra afin de rentrer précisément le type de connexion Wi-Fi et la clé de cryptage. L’image, d’une taille maximale de 640x480 et les options de la caméra sont accessibles à l’aide d’un simple navigateur.   



Le Wi-Fi et le CPL en pratique

Le Wi-Fi en pratique, c’est très simple ! Il y a quelques trucs à connaître sur l’Ethernet, sur le TCP/IP et sur la sécurisation. Et on prend vite l’habitude. Quelques points clés pour comprendre, par exemple, le déploiement en Wi-Fi et, partout, d’une box, voire d’un point d’accès public sécurisé.

Commençons par le plus simple, la sécurisation d’accès. Elle concerne le besoin d’accès au réseau Wi-Fi de n’importe qui. D’un côté, la box ou le point d’accès ; de l’autre, votre ordinateur ou votre objet communicant. Il s’agit de faire coïncider les deux pour qu’ils puissent dialoguer. Parfois, connaître la clé WEP ou WPA ne suffit pas. Si la clé de la box est vraiment en WPA, elle peut refuser la connexion d’un équipement qui ne dispose que du système de cryptage WEP. En outre, le second point auquel il faut penser concerne la fonction d’association temporaire dont peut disposer la box. C’est notamment le cas de la Livebox, qui n’acceptera l’association d’un client que lorsque l’un de ses boutons aura été pressé ; en revanche une fois que ça aura été fait, il n’y aura plus besoin, heureusement, de le répéter.


Accès public, accès des amis, la Fonera de Fon offre des atouts

Très simple à mettre en œuvre, la Fonera de Fon est un point d’accès sans fil qui se raccorde directement en Ethernet à une box ou au réseau déployé à partir de la box. Une fois connectée et paramétrée via le site Web de Fon, elle offre deux nouveaux points d’accès sans fil dans la maison : l’un est à accès public sécurisé et contrôlé par le site de Fon, l’autre est un nouveau point d’accès personnel sécurisé en WPA. L’interface permet de créer jusqu’à cinq profils d’utilisateurs privés que vous offrez gratuitement à qui vous voulez. Pour ce qui est de l’accès public que vous ouvrez, il est soit gratuit pour les « Foneros Linus », soit payant pour les « Aliens ». Un truc de plus : si vous êtes parrainé, la Fonera ne vous coûtera que 20 euros.


Utilisez le CPL

Le CPL est certainement l’un des moyens les plus efficaces pour déployer le Wi-Fi partout dans votre maison, avec une qualité optimale et sans avoir à passer de fils Ethernet. Avec des adaptateurs Homeplug 85 Mbps, vous disposez d’excellentes caractéristiques pour un accès Internet performant adapté à l’usage du Wi-Fi. Comme exemple de déploiement, on consultera le schéma proposé par Olitec sur son site. Il est particulièrement explicite pour démontrer la façon de déployer un réseau via les fils électriques. Le second schéma qui montre la maison est d’origine Devolo, et exploite un nouveau produit du constructeur qui se trouve être un point d’accès sans fil directement compatible 802.11g et CPL. En termes d’astuce particulière et utile, sachez que c’est le mot de passe de chaque adaptateur qui définit l’accès au réseau avec les autres adaptateurs Homeplug qui possèdent le même mot de passe. Il est ainsi très facile de créer plusieurs réseaux sécurisés différents sur le même réseau électrique. Notez que le mot de passe est codé en DES 56 bits sur le Homeplug 1.0. Notez également que si vous sortez d’une spécification comme Homeplug (1.0, AV, CC ou BPL), vous ne pouvez pas avoir la garantie de fonctionnement des équipements CPL de diverses sources sur le même réseau électrique : avec des équipements très spécifiques, vous êtes bon pour remplacer tous les adaptateurs CPL à chaque évolution de votre réseau.

Devolo propose en revanche une alternative intéressante dans ce cas puisqu’il est possible d’acquérir des équipements CPL qui n’utilisent pas le réseau électrique, mais par exemple le réseau de fils d’antennes FM et/ou TV et/ou satellite sans perturber les signaux analogiques.

Le troisième schéma d’origine Devolo exploite la mixité d’adaptateurs CPL Homeplug AV sur réseau coaxial (jusqu’à 700 m de long au plus entre adaptateurs) et sur réseau électrique (jusqu’à 200 m au plus long entre adaptateurs) en y couplant des points d’accès Wi-Fi traditionnels raccordés en Ethernet. L’avantage des adaptateurs AV est ici d’être compatibles Homeplug AV et de pouvoir ainsi être exploités en complément d’adaptateurs Homeplug 1.0 en 14 ou 85 Mbps.
Extension Wi-Fi et SSID
Le SSID, c’est le nom que possède votre point d’accès. Avec une Livebox par exemple, le SSID est toujours WANADOO_XXX, où XXX est un numéro alphanumérique. Si vous souhaitez étendre votre réseau Wi-Fi en exploitant le CPL ou l’Ethernet connecté à votre box, vous avez le choix du SSID de chacun des points d’accès que vous allez ajouter. Si vous désirez toujours garder le même SSID pour les différents points d’accès, vous pouvez le faire, mais vérifiez deux points. En premier lieu vous avez le choix du canal, de 1 à 13 pour chaque point d’accès, alors essayez de positionner chacun des nouveaux points d’accès ayant le même SSID avec un intervalle de deux canaux. Ensuite, pour garantir une certaine « continuité de service », il est recommandé d’utiliser la même clé de cryptage si vous utilisez le même SSID. En revanche, si vous changez de SSID, vous pouvez indiquer d’autres clés de cryptage : une fois acquises par l’équipement nomade, les clés fonctionnent de façon assez transparente. L’avantage du SSID identique, c’est de favoriser la qualité de signal dans le choix d’accès de l’ordinateur.



Offrez un cadre Wi-Fi ou Bluetooth à vos photos numériques !

Les liens Wi-Fi et Bluetooth facilitent désormais la communication multimédia entre tous les membres de la famille. Le récent salon Medpi de Monaco, qui présente les produits qui seront en vitrine à la fin de l’année, vient d’en faire la démonstration.

gireg-alain58966_Copier15.gifLes interconnexions sans fil évoluent avec la percée des boxes ADSL et aussi avec l’arrivée imminente du standard 802.11n. « Le succès croissant des boîtiers sans fil des prestataires ADSL ralentit nos ventes de modems-routeurs en France. En revanche, celles de routeurs seuls et d’accessoires Wi-Fi s’envolent », observe Gireg Allain, responsable commercial de la filiale française de D-Link. L’actuelle gamme, conforme au Draft N (lire les pages précédentes) est garantie 11 ans, une simple mise à niveau du firmware étant prévue en fin d’année, une fois le standard 802.11n ratifié. Le dernier routeur-commutateur Gigabit DIR-655 de D-Link comprend un port WAN Gigabit Ethernet, quatre ports LAN à 1 Gbps, un pare-feu, un contrôle parental et un mode de gestion de la qualité de services.
Rappelons que la norme 802.11n procure un débit douze fois supérieur à la technologie 802.11g et une couverture quatre fois plus étendue. Elle convient à l’exécution simultanée d’applications multimédias, au partage de données, à la diffusion vidéo en continu, aux jeux en réseau et à la téléphonie sur Internet.
Le rival Linksys (filiale de Cisco) entend conforter sa place de leader mondial sur le marché des produits voix sans fil pour particuliers, TPE et PME. Son récent routeur baptisé WRT150N associe un point d’accès sans fil conforme au futur Wi-Fi 802.11n, un commutateur 10/100 full duplex avec quatre ports et un routeur pour partager la connexion Internet haut débit entre tous les membres de la famille. Il apporte « une solution abordable (159 euros TTC) aux utilisateurs du foyer en offrant un niveau élevé de commodité, de performances et de sécurité, via le chiffrement 256 bits-WPA2 », précise Didier Brochet, directeur de la filiale française de Linksys. Certifié WMM (Wi-Fi Multimédia), ce routeur personnel sait également établir une hiérarchie entre les flux voix-données transmis par le lien ADSL.
Chez Parrot, la vie en Bluetooth n’est pas un simple argument marketing. Le fournisseur d’accessoires multiplie les occasions d’apprécier les loisirs numériques à la maison, en voiture et au bureau. Ses cadres pour photos numériques sont ainsi accompagnés d’un dongle Bluetooth pour transférer plus facilement des albums complets à partir du PC ou du téléphone mobile Bluetooth. Moyennant 179 euros, l’utilisateur paramètre jusqu’à quatre diaporamas distincts, en choisissant les transitions et l’ordre d’apparition des vues. Celles-ci défileront dans une plage horaire déterminée ou bien tant que la pièce ne sera pas plongée dans le noir. En fait, un capteur de luminosité permet de stopper le diaporama la nuit et d’ajuster la clarté de l’écran à la lumière ambiante. Sa dalle numérique de 7 pouces affiche plus de 500 photos en 262 000 couleurs, contre 64 000 pour de nombreux modèles concurrents du marché avec un angle de vision très large et confortable.
Les cadres concurrents de Shogo s’harmonisent à l’espace intérieur grâce à leur pourtour amovible. Ils retiennent une mémoire flash de 1 à 2 Go pour stocker les photos numériques de toute la famille. Vendus de 250 à 390 euros, ils seront disponibles en format 8 pouces (écran 4/3) et 11 pouces (écran 16/9e) à partir de l’été. Leur lien Wi-Fi et le haut parleur intégré facilitent le téléchargement d’albums multimédias par les membres autorisés de la famille, au travers d’un portail Internet.
Chez le rival Telefunken, on préfère adresser le cadre photo aux novices du multimédia et limiter la connectique à deux prises USB. L’accent est mis sur l’accueil de toutes les cartes mémoire et sur la télécommande fournie qui se range dans le cadre lui-même. Comptez 129 à 249 euros TTC pour contempler vos photos sur ces écrans 7 pouces, 8 pouces et 10,2 pouces (près de 26 cm) très simples d’utilisation.


TEST Cadre photo numérique Wi-Fi - Ki’i Frame
Partager entre amis photos et vidéos

kii257615_Copier18.gifAvec le boom sur les APN et les offres de stockage sur Internet, chacun dispose d’une profusion de photos numériques gratuites. Mais les albums photo ont disparu et il est paradoxalement plus compliqué qu’auparavant de partager ses souvenirs avec ses amis ou sa famille. Regarder des photos numériques, ou lire des vidéos, est devenu la plupart du temps l’apanage des ordinateurs. Cette ère est désormais révolue. Grâce au cadre numérique Ki’i Frame, transmettez les photos et vidéos de votre choix directement avec une connexion Wi-Fi. Ainsi, tout le monde peut profiter en permanence d’un flux visuel varié. Vous pourrez alors voir défiler les fichiers de votre choix sur ce joli cadre, qui en réalité, n’en est plus vraiment un, de par l’étendue de ses fonctions. Toutes les photos postées sur un site communautaire, type FlickR ou Picasa par exemple, peuvent en effet être transférées et diffusées sur le cadre.

Mais les possibilités sont encore plus étendues : vous pouvez par exemple diffuser des photos en provenance de la Toile, selon le thème que vous désirez, grâce aux tags – ou mots équivalents à des thèmes. De même, vous pouvez afficher des vidéos en provenance de sites comme YouTube ou DailyMotion, ou des émissions diffusées par les Web TV. La résolution de l’écran est de 840 x 480 pixels pour une taille de 25 x 17 x 4 cm (www.wave-storm.com).
Optimisation Web
Réduire
OPTIMISATION WEB (2e partie)
Les techniques pour être bien vu sur Internet
Par Bertrand Garé - Copyright L'Informaticien, tous droits réservés

Après avoir examiné le mois dernier les aspects techniques de l’optimisation d’un site Web, il convient d’aborder les différentes techniques qui permettent de rendre visible et efficace un site dans le vaste monde Internet. Les principales méthodes d’optimisation de la visibilité d’un site sur le Web sont directement liées aux modes de fonctionnement des moteurs de recherche et à une exploitation efficace des outils de reporting sur les actions qui s’effectuent sur votre site.

Un ensemble de techniques et de bonnes pratiques ne constitue pas le secret pour créer de l’audience sur votre site comme par magie. La maîtrise de celles-ci ne vous garantit pas le succès à coup sûr. Cependant, elle peut vous éviter de grandes désillusions, sans prétendre jamais remplacer les atouts que représentent un contenu de qualité et une bonne ergonomie.

Contrairement au vocable qui s’attache généralement à Internet, ce n’est pas vraiment une « nouvelle technologie », en tout cas pour ceux qui travaillent dans le secteur de l’industrie informatique. Pour d’autres, moins avertis, il a fallu la dernière décennie du siècle dernier pour en entendre parler et souvent redécouvrir la Lune ! D’ailleurs, avec sa rapidité de propagation, le niveau de compréhension de cette technologie est la deuxième caractéristique marquante de l’Internet.



L’effet de levier d’un bon référencement

Marc Panic, directeur pour la France de SearchWorks, une société spécialisée dans les opérations de référencement et de marketing pour le Web, explique : « Aujourd’hui, les techniques sont totalement intégrées par les grandes entreprises, et encore plus par les PME qui prennent en compte l’effet de levier marketing que peut avoir un bon référencement pour un prix modique. »
Une étude réalisée pour Webtrends par LoudHouse Report confirme que 85 % des répondants pensent qu’il est important d’avoir une présence effective sur le Web pour remplir les objectifs marketing et de vente des entreprises – ce chiffre n’est que de 76 % pour les répondants français. Les mêmes répondants ne sont cependant que 53 % à être satisfaits de leur retour sur investissement vis-à-vis d’Internet.

Les principaux objectifs dans l’année à venir des entreprises interrogées sont l’acquisition de nouveaux clients (68 %), la conservation des clients actuels (58 %) et le renforcement de leur marque (55 %). L’optimisation des outils Internet ne vient qu’en quatrième position avec 38 %.

La plupart des fournisseurs de services en ligne semblent vouloir mettre la charrue avant les bœufs et chercher rapidement des retours sans véritablement s’en donner les moyens. Il n’est pas inéluctable de pratiquer de la sorte ! Si les entreprises ont bien assimilé les techniques, elles ne vont pas jusqu’au bout de la démarche et oublient les détails qui font souvent la différence.


Étudier le comportement des internautes sur les pages de sortie

Avant de se lancer, il est bon de savoir tout de même ce que l’on souhaite faire. Un site Web n’est pas seulement un site Web. Ainsi, une boutique en ligne est différente d’un site de contenu ou de services. Une évidence ? Pas si sûr ! Les outils et méthodes ne sont pas les mêmes pour attirer des lecteurs sur un site ou pour convertir des visiteurs en acheteurs ! Le plus souvent, les sites qui débutent recherchent naturellement un référencement par la fréquentation directe sur le site. Marc Panic considère comme insuffisante cette seule action sur les tags et métatags. Mathieu Llorens, responsable du service développement chez Xiti, un spécialiste de la mesure d’audience, ajoute : « De ce premier travail découlent les indicateurs qui vont permettre de suivre les actions sur votre site et de voir si vos objectifs sont atteints. »
Il en va de même pour les questions de contenus, d’ergonomie ou de développement de l’application Web. Ces trois points sont tout aussi importants que ceux que nous avons traités le mois dernier ou que nous allons analyser maintenant.
Jacques Toledano, patron pour la France de Webtrends, ajoute : « Il est important d’analyser le comportement des internautes sur les pages de sortie surtout quand cette sortie n’est pas prévue dans le scénario normal ou habituel. Cette analyse se réalise à partir de scénarios logiques et le plus proche possible de la réalité. »
Marc Panic conseille aussi « de penser la présence et la forme que l’on souhaite établir avec des objectifs clairs, avec des balises dans le temps et des budgets réalistes ».
Jean-Baptiste Adet, consultant avant-vente chez Vignette, complète ce point de vue : « Ce point connaît aujourd’hui une certaine maturité avec une uniformisation des standards dans le domaine, mais les questions sont toujours là. » Il est partisan d’une importante appropriation des sites par l’internaute avec la création d’espaces plus personnels ou le choix de la manière de voir apparaître la page désirée. Il ajoute : « La seule limite est la cohérence de votre site ! »


le Meilleur moyen de faire venir des gens sur un site : les faire revenir !

La principale pratique pour se faire connaître s’appelle le référencement naturel. Son principe est simple. Par le contenu et les adresses des pages de votre site, les moteurs de recherche indexent ces résultats et les restituent lorsqu’un internaute fait une recherche par mots-clés, ceux indexés par les moteurs de recherche. Ils sont les principaux pourvoyeurs de trafic vers les sites. Jacques Toledano précise : « 80 % du trafic est généré par le référencement naturel. Dans ce chiffre, il faut compter les robots des moteurs de recherche. » Des annuaires complètent les possibilités apportés par les moteurs de recherche. Marc Panic indique : « Cette technique doit être prise en compte dès la conception du site avec inscription dans les annuaires et les moteurs de recherche. Le travail sur les tags et metatags est vraiment insuffisant. La problématique devient de moins en moins technique, et de plus en plus marketing. Aujourd’hui, c’est moins le contenu des sites que leur environnement qui fait la différence. » Mathieu Llorens complète cette opinion par une préoccupation particulière : « Il ne faut pas seulement regarder le volume mais aussi la qualité, et cela n’est pas forcément dans la culture des personnes qui se lancent sur Internet. Il ne faut pas oublier que le meilleur moyen de faire venir des gens sur un site, c’est de les faire revenir ! Selon nos chiffres, 60 % des internautes sont fidélisés. Pour cela, il faut qu’ils aient une bonne expérience, par la page d’accueil et autres… Il ne faut pas oublier non plus de mesurer les autres supports proposés (newsletters, blogs, podcasts, vidéos…). Sinon, il est possible de passer à côté de gisements d’audience importants. Enfin, il faut vérifier la compatibilité de ce que vous proposez avec ce qu’utilisent les internautes qui fréquentent votre site. La clé est vraiment plus la qualité que le volume pour optimiser le site et créer de l’audience. »


URL rewriting et netlinking

Devant l’importance prise par cette source de trafic, il convient évidemment de l’optimiser. Il existe des méthodes simples pour y parvenir, même si elles demandent un certain effort lorsque le site a déjà une certaine ancienneté.

La pratique la plus évoquée est l’URL rewriting. Comme le précise Mathieu Llorens, cette technique consiste à travailler sur l’écriture des références des pages dans l’adresse pour que les moteurs de recherche indexent cette partie aussi et pas seulement le contenu de la page. Marc Panic précise : « Cette pratique permet d’optimiser le référencement naturel, car les moteurs de recherche prennent en compte les mots clés dans l’URL, même si derrière, en back-office, le classement n’est qu’en caractères alphanumériques. On ajoute une couche visible par les moteurs et donc on pousse le trafic. »

Une autre technique en vogue est le netlinking. Là, il convient de passer des partenariats et des échanges avec des sites qui renvoient vers votre site.  Marc Panic ajoute : « Il s’agit d’utiliser des liens de sites tiers, plus ils sont de qualité et nombreux, plus le référencement est optimal. » Mathieu Llorens complète : « Ce système permet d’augmenter le ranking (NDLR : c’est l’indice de notoriété de 1 à 10 des sites qui apparaît dans la barre de boutons Google) si les liens proviennent de sites dont le ranking est bon. »

À côté de ses principales sources d’optimisation, il ne faut pas oublier les flux RSS qui peuvent rapidement faire monter votre audience et les opérations de promotion de votre site, comme la publicité et les e-mailing (newsletters).

À côté des techniques de référencement naturel, il existe différents moyens payants de faire venir de l’audience sur votre site. Marc Panic insiste : « Dans le domaine, il faut être très rigoureux. Il faut se donner des règles et ne jamais y déroger. Une campagne s’optimise tous les jours. Les adsense (NDLR : les annonces contextuelles Google) ont peu de sens pour les sites d’e-commerce, en revanche pour des sites de publication, comme les comparateurs de prix, il est encore possible de réaliser des opérations intéressantes avec des marges élevées. Il est cependant difficile d’y trouver une véritable rentabilité à petite échelle, car les annonceurs n’acceptent plus n’importe quel prix comme à une époque. »

La génération de trafic – et donc de revenus – sur le site par achat de mots-clés nécessite un suivi quasi permanent. Mathieu Llorens y voit un avantage : « Lorsqu’une campagne ne marche pas, on peut la couper tout de suite. Il ne sert à rien de perdre de l’argent. »
Marc Panic propose aussi d’optimiser ces achats de mots-clés selon les heures de la journée. Il prend un exemple parlant : « Faire du lien ou des achats de mots clés sur des sites de charme entre 9 h et 17 h ne se révélera pas d’une grande efficacité. Après 22 h, ce n’est certainement pas le même résultat ! La pause midi est souvent le moment de recherche des achats à faire plus tard, il est donc intéressant d’être présents à ce moment de la journée. »


Ne pas délaisser MSN et Yahoo

Faut-il rappeler que si Google est incontournable dans le domaine, il n’est pas tout seul. Très souvent les stratégies se bâtissent pour obtenir un très bon référencement sur ce moteur, en délaissant MSN ou Yahoo, qui peuvent cependant drainer un nombre important d’internautes à des prix compétitifs avec une qualité de cible parfois supérieure.
Une autre solution est de s’affilier à un réseau et de proposer des publicités de sites d’annonceurs présents dans le même réseau et d’avoir des espaces de visibilité dans les sites de même nature que le vôtre pour attirer de nouveaux internautes. Un bon réseau peut contribuer à hauteur de 20 à 30 % au chiffre d’affaires d’un site. Pas négligeable ! D’ailleurs la solution a le vent en poupe et de grands vépécistes (VPC) s’y mettent pour accélérer leur passage sur le canal Internet. La solution s’inscrit de plus en plus souvent dans les plans de communication des entreprises.

Sylvain Gross, directeur général de Public-Idées, une société spécialisée dans les politiques de référencement et d’affiliation, conclut : « Toutes ces opérations doivent se réaliser dans le respect de l’internaute. L’accord de l’internaute doit être explicite. Tout le reste ne peut être considéré comme une bonne pratique. »


Quels budgets prévoir pour les référencements payants ?
Si le référencement payant est toujours un bon moyen de créer du trafic très efficace, son coût est loin d’être négligeable. Marc Panic est d’ailleurs sans concession sur ce point. En dessous de 500 euros de budget « autant inviter son meilleur client au restaurant », assure-t-il ! Pour lui, une petite boutique en ligne peut commencer avec 2 000 à 3 000 euros de budget par mois. « Mais il est difficile de voir si cela marche ou non ! » Pour certaines PME, il indique que le budget moyen est déjà entre 20 000 et 40 000 euros ! Certains comptes vont largement au-delà, même si le budget moyen tourne aux alentours de 100 000 euros. Il cite le cas d’une banque anglaise qui a fait appel au service de sa société, et qui, au niveau groupe, consacre 27 millions de livres à ce poste (environ 40 millions d’euros). Il précise : « Pour les sites créateurs de contenu – les publishers –, il faut compter un peu plus pour une vraie politique de création d’audience, soit entre 45 000 et 60 000 euros ! Cette industrie très jeune est arrivée rapidement à maturité et les opérateurs sont aujourd’hui de vrais professionnels de ce type d’opérations. Le prix de la différence entre l’industrie et l’artisanat ?

NAC
Réduire
Se défendre au plus près des menaces
Par Bertrand Garé - Copyright L'Informaticien, tous droits réservés

Avec l’avènement de la mobilité, le périmètre de sécurisation de l’entreprise est en train d’exploser. Les spécialistes appellent cela la « dépérimétrisation » ou, dans les pays anglo-saxon, l’« Edge Security ». Ce concept recouvre la délégation de certaines fonctions de sécurité avancées aux équipements réseau, avec un lien vers les outils de sécurité présents dans l’entreprise. Si les grands comptes sont déjà sensibles à cette approche, il reste encore du chemin à parcourir pour les PME et pour que ces solutions couvrent les menaces internes, principal vecteur connu des attaques.

Pendant des années, la sécurité des entreprises s’est comprise comme la défense d’une place forte. Les images de château-fort avaient librement cours. L’évolution des architectures client/serveur, des bandes passantes plus importantes et le goût pour la mobilité ont eu raison de cette vision périmétrique de la sécurité. La tendance est alors passée à la protection multicouche et à un renforcement des outils sur les postes de travail. Cette logique semble avoir montré ses limites dans l’état actuel des choses.

Comme souvent dans l’informatique, l’effet de balancier amène un certain retour en grâce de la notion de périmètre sous des vocables différents : Edge Security en anglo-saxon, « dépérimétrisation » en langage conceptuel. Si cette notion dépasse les limites de l’entreprise, elle intègre les éléments extérieurs pouvant se connecter au réseau de l’entreprise : postes nomades ou d’invités sur le réseau. Pour être plus efficace, cette nouvelle approche de la sécurité informatique s’étend au plus près des menaces comme une sorte de poste avancé ou de « scout » surveillant de près ses ennemis pour connaître leurs mouvements et détecter les comportements potentiellement dangereux. En position avancée, ces points d’accès sont eux-mêmes exposés et il est intéressant d’y installer des fonctions de sécurité.

Gilles Gravier, expert sécurité chez Sun explique : « On assiste à un retour vers la notion de périmètre, même si celle-ci a changé. En fait, face à la rapidité des attaques, il faut aussi des systèmes de réaction rapide, bien que les réponses automatiques ne sont pas la panacée. »

David Dupré, responsable marketing chez Arkoon, un fournisseur de solutions de sécurité, ajoute : « La mobilité a fait exploser la notion de périmètre. Pour reprendre l’image du château-fort, le roi est bien protégé mais les informations et les conseillers du roi sont en dehors du château. Il y a désormais différents points d’entrée dans la citadelle. Le mouvement s’amplifie avec la mobilité. » Et Gilles Gravier constate qu’« aujourd’hui le Edge est partout ! ».

Ces fonctions ne sont pas forcément assurées par des équipements de sécurité, mais plutôt par des fonctions embarquées sur les équipements de points d’accès réseau. Selon le constructeur ou l’éditeur présent sur ce point d’accès, cette technique de contrôle des points d’accès se verra appeler NAC (Network Access Control), UAC (User Account Control), NAP (Network Access Protection)… Mais pourquoi ajouter ces fonctions de sécurité sur les équipements de réseaux ?


Une délégation active

Christophe Perrin, responsable du développement du marché de la sécurité chez Cisco, répond à cette interrogation : « Historiquement, l’approche globale du marché s’est faite sur la notion de périmètre à l’intérieur duquel on a déployé des outils de sécurisation. La phase suivante a vu l’évolution des menaces. Celles-ci sont devenues plus complexes, avec une remontée sur les couches applicatives tout en étant plus distribuées. La mobilité et l’évolution des menaces en interne à l’entreprise ont créé un nouveau contexte. Les applications étant distribuées ou fonctionnant dans un schéma pair à pair, il a semblé judicieux de placer les fonctions de sécurité sur ce chemin de communication et de voir la sécurité comme un service qu’il est possible d’activer lorsqu’on en a besoin. »

Dans ce cadre, on s’appuie sur l’infrastructure existante pour identifier et répondre aux menaces.
Bruno Leclerc, chez Integralys, une SSII spécialisée dans la sécurité des réseaux, souligne l’intérêt que connaît une telle approche auprès de ses clients : « Les grands comptes sont en attente de cette stratégie qui se dessine. Cette approche hardware est propre techniquement et séduisante sur le papier, même si le NAC semble une notion assez marketing aujourd’hui. L’approche est intéressante pour contrôler tous les points d’accès. À notre avis, elle se réalisera par l’alliance entre Cisco et Microsoft sur les comptes Cisco et s’étendra ensuite aux autres constructeurs, comme Juniper qui avance vite avec UAC, mais toujours avec Microsoft. Les équipements actuels devraient migrer vers NAC avec les nouvelles normes 802. »


Le principe de fonctionnement du Network Access Control (NAC)

Dans le principe, les équipements NAC vont réaliser certaines opérations de sécurisation sur les accès. Christophe Perrin (Cisco) explique le processus : « L’équipement va réaliser certaines validations avant la connexion : par exemple, qui se connecte sur quel machine, et sur quel réseau de l’entreprise ? Le processus peut être complet de l’authentification à la vérification de l’état de la machine, l’accès, la mise en quarantaine et l’initiation d’un processus de “remédiation” du poste en quarantaine. »
La première opération réalisée revient à savoir qui veut se connecter sur le réseau de l’entreprise. Là, le poste ou le serveur souhaitant se connecter se fait identifier par login/mot de passe ou via une solution d’authentification forte en relation avec l’annuaire de l’entreprise ou la fédération d’annuaires présents, comme dans la solution HP ProCurve.
A priori, la problématique semble simple. Elle l’est moins lorsqu’un utilisateur de l’entreprise utilise un PC qui n’appartient pas à l’entreprise, dans un cyber café ou un espace affaires d’un hôtel. Le contexte d’identification prendra aussi en compte la connexion choisie, Wi-Fi sur un hotspot libre, sécurisé… Les droits d’accès seront alors distribués en fonction de ce contexte et du niveau de confiance accordée à l’utilisateur.

L’affaire est encore différente quand ce n’est pas un poste ou un employé de l’entreprise qui se connecte. Un cas simple est celui d’un client ou d’un partenaire invité et qui doit se connecter par le réseau de l’entreprise. Là, s’il est possible de donner des droits limités à l’utilisateur, il est plus difficile de vérifier l’état de la machine qui se connecte sur le réseau, même si c’est sur un WLAN d’accueil sans véritable lien avec le réseau de l’entreprise. Et que faire lorsque ce poste se met à se connecter en peer to peer ou lance des flux d’attaques ?
La philosophie de NAC prend ici tout son sens. Le boîtier réseau collabore alors avec les équipements de sécurité, comme le firewall et l’IPS pour prendre la décision automatique de bloquer ce flux. Il est même possible, avec les bonnes versions du système d’exploitation de Cisco dans le switch ou le routeur, de déléguer temporairement de l’intelligence dans un port pour réaliser l’opération de blocage si c’est nécessaire. Les solutions de ce type sont donc collaboratives et adaptatives.
Pour les étapes suivantes, l’équipement réseau renvoie les informations vers les solutions de sécurité à même de régler le problème : antivirus en cas d’attaque virale, firewall sur les attaques réseau…
Ainsi, les solutions HP Procurve expédie les informations collectées vers des appliances de Fortinet.
Chez Cisco, une bêta confidentielle s’appuie sur des outils comportementaux de Trend Micro avec des analyses des couches 2 à 7 du réseau (nom de code : Total Discovery). Son application concrète devrait être disponible sur la fin de l’année. Comme le remarque Gilles Gravier (Sun) : « On assiste à une combinaison entre les outils traditionnels et les équipements réseau dans la mise en place des solutions. »


Les avantages de la formule

À l’analyse, l’approche comporte différents avantages en contrôlant tout ce qui entre sur le réseau de l’entreprise, en accord avec les politiques de sécurité mises en place par celle-ci. Cet aspect de « policy enforcement » est particulièrement utile dans les entreprises dont l’activité doit répondre à de nombreuses contraintes légales, comme le secteur financier, médical ou pharmaceutique. Les solutions produisent de plus des statistiques qui permettent d’émettre des rapports prouvant bien la mise en place de politiques de sécurité en accord avec les contraintes légales. Cette capacité à définir des règles peut être très fine. David Dupré, chez Arkoon remarque : « Il est même possible de définir des règles sur des plages horaires récurrentes. »

Plus largement, le NAC autorise une approche globale des règles de sécurité en insérant des processus de réponses aux événements de sécurité du fait d’une détection rapide des problèmes.
Il simplifie la gestion de ces règles de sécurité avec des interfaces de provisionning des règles. Ces interfaces d’administration devraient d’ailleurs encore se simplifier pour autoriser le déploiement de telles solutions sur des lots d’équipements réseau, et non plus équipement par équipement.
Un intérêt parfois négligé est de permettre la fermeture d’une connexion vers un poste ou un serveur précis, plutôt que d’avoir à isoler un brin de réseau comme il est pratiqué actuellement dans les entreprises.
Les passerelles VPN actuelles vont avoir du mal à gérer le passage au tout mobile qui se dessine et sa montée en volume. De plus, VPN Ipsec n’est pas intégré à l’infrastructure du réseau local. L’arrivée nécessaire du « roaming » sur la voix sur Wi-Fi est un autre élément qui va encore compliquer la gestion de ces flux. Dans ce cadre, les solutions de type NAC ont leur rôle à jouer.


Et en interne ?

La principale critique contre l’approche NAC se focalise sur les manques supposés de la solution pour contrer les attaques internes qui sont le cas le plus fréquent.
Patrick Solou, directeur commercial Europe du Sud chez Arbor Networks, explique : « Malgré tous les investissements en pare-feu, antivirus, chiffrement et autres, les entreprises ont toujours beaucoup de mal à avoir de la visibilité sur ce qui se passe en interne sur l’activité Internet et sur le comportement des utilisateurs et des applications. D’ailleurs, dans les approches NAC, comment contrôler les comportements normaux ? À notre avis, il faut durcir l’intérieur du SI pour limiter les vulnérabilités et éviter les contournements des politiques de sécurité mises en place. Sur certains points, on pourrait dire que nous faisons du Edge, mais à partir de l’intérieur et c’est ce qui manque aux entreprises. »
Gilles Gravier, chez Sun, ne partage pas cette opinion : « Par la combinaison avec les outils traditionnels de sécurité, on va pouvoir mettre ce type de solution partout dans l’entreprise. On ne va pas se limiter à un périmètre et on va tout surveiller. Pour reprendre l’image du château-fort, on va surveiller les allées dans le château-fort. »
David Dupré, chez Arkoon, pointe lui une autre limite possible : « Il ne faut pas que ces fonctions de sécurité pénalisent la mission prioritaire de l’équipement réseau. Certains équipements réseau connaissent une limite dans le cadre de la VoIP, par exemple en induisant de la latence pour la sécurité. Deuxième limite, plus importante peut-être, il existe toujours un conflit d’intérêt entre la sécurité et le réseau. Il faut bien séparer les pouvoirs pour des questions de qualité. »


Les évolutions probables

Alors qu’elle n’en est encore qu’à ses débuts, cette technologique laisse déjà entrevoir ses prochaines évolutions, du fait de ses atouts et des limites connues.
Gilles Gravier entrevoit principalement des efforts sur la normalisation de certains éléments de cette approche. « Des choses sont en train de se faire en termes d’exploitation des logs ou sur l’uniformisation de l’interprétation des messages d’alerte. Dans l’exploitation des logs, un langage permettrait de le décrire, mais sera-t-il utilisé par tous ? »
Autre tendance technologique forte, les outils vont intégrer de plus en plus de techniques de type comportemental pour accélérer les temps de réaction.
David Dupré, chez Arkoon, ajoute : « Ces technologies comportementales arrivent à maturité permettant une certaine ubiquité de la sécurité en autorisant le traitement d’informations venant de partout par corrélation pour une approche plus fine. » Il en pointe cependant déjà le revers : « Comment le comportemental peut-il corréler la réalité, et jusqu’où sera mis le curseur sur ces fonctions de sécurité sur les équipements réseau ? »
Christophe Perrin (Cisco) voit lui : « Une phase de changement sur le marché de la sécurité où il faut aller plus loin. Il n’est plus possible d’avoir des boîtes qui ne couvrent qu’une partie de la solution de sécurité. Il faut apporter de l’intelligence et automatiser. Une prochaine étape sera certainement la virtualisation de la sécurité, c’est-à-dire l’activation de services de sécurité lorsque c’est nécessaire, sans avoir à toucher à l’architecture réseau pour ne pas perdre en réactivité. L’infrastructure devra se mettre à parler le langage applicatif et comprendre un niveau de service. Le lien sera très fort entre les applications et l’infrastructure. En découlera une structuration forte des solutions. »


Les acteurs du NAC
Si le déploiement n’est pas encore largement réalisé sur le concept NAC, ce n’est pas faute d’offres. Les constructeurs d’équipements réseau, comme Cisco et Juniper, se livrent déjà une compétition technologique, et sont rejoints sur ce marché par de nombreux éditeurs de logiciels présents sur le secteur de la sécurité. Microsoft vient de mettre NAP sur la table. Sophos tente de prendre une part du gâteau avec Sophos Advanced. McAfee suit ce festin annoncé avec ses solutions Policy Enforcer et IntruShield. Des acteurs moins connus du marché essaient d’ailleurs de s’asseoir à cette grande table, comme Insightix avec son produit NAC 3.0. Ils vont s’attabler avec des convives s’étant déjà fait les dents comme Consentry (Lanshield) ou Alcatel-Lucent (Omniaccess SafeGuard). Il ne faut pas oublier Tipping Point qui vient d’ajouter cette fonction à son IPS. D’autres regardent cette grande tablée et font des signes, comme Kaspersky qui supporte le NAC de Cisco et d’autres constructeurs !

Bonnes Feuilles
Réduire
Premiers pas de développeur avec Ruby on Rails

2841774511.jpgRuby on Rails est le langage tendance pour développer des applications rapidement. Cependant il convient de connaître certains trucs pour arriver à un très bon résultat, l’ouvrage dont nous vous présentons quelques bonnes feuilles est un véritable « cookbook » de ces bonnes pratiques. Un large extrait pour donner envie à ceux qui ne connaissent pas Rails de faire leurs premiers pas !

Rails vise à rendre le développement web productif et satisfaisant — à tel point que certains affirment sans sourciller y travailler dix fois plus vite que dans d’autres frameworks. Chacun en sera certes seul juge dans son cas particulier. L’avantage d’un développeur plus productif, c’est qu’il passe plus de temps à résoudre les problèmes qui l’intéressent vraiment plutôt que de réinventer encore et encore la roue et de construire la même infrastructure pour la millième fois. Pour bien prendre conscience des gains de productivité, l’idéal est de mettre en place un environnement de développement confortable, dont le fer de lance sera un éditeur de texte ou un environnement de développement intégré (IDE en anglais).
Bien connaître cet outil vous permettra de naviguer effectivement parmi les différents fichiers source de l’application. Il faut aussi prévoir un outil pour interagir avec Rails en ligne de commande, et donc choisir une application adaptée proposant un terminal ou une console.
Ce chapitre explique comment poser les premières pierres d’un environnement de développement et programmer les prémices d’une application Rails.Nous y verrons également comment résoudre certains problèmes fréquemment posés par le développement en Rails, comme écrire de la documentation Ruby pour une application (RDoc) ou faire appel à la toute dernière version du framework (Edge Rails).

C’est quand vous serez à l’aise pour créer des projets Rails et y travailler et aurez mis en place tous vos outils de développement que vous pourrez vraiment commencer à explorer toutes les possibilités du framework.


Créer un projet Rails

Problème
Après avoir installé Rails sur votre système, vous souhaitez y créer votre premier projet.

Solution
Pré-requis : disposer de Ruby, RubyGems, Rails, et de l’une des bases de données reconnues par Rails (MySQL est la plus populaire mais PostgreSQL constitue aussi un excellent choix).

On crée alors un nouveau projet Rails en exécutant la commande rails suivie du chemin de la nouvelle application. Ainsi, pour mettre en place celle-ci sous /var/www/cookbook(1) — répertoire qui n’existe pas encore — on saisira ce qui suit dans un terminal :

$ rails /var/www/cookbook


Le programme rails crée le dossier du projet en reprenant le chemin indiqué, mais il y met aussi en place un certain nombre de sous-répertoires pour en organiser le code selon la fonction assurée dans le modèle MVC(2). Cette commande accepte un certain nombre d’options, dont on pourra obtenir la liste comme suit :

$ rails --help


La plus importante est --database=type_de_base_de_données, dont on choisira l’argument parmi mysql, oracle, postgresql, sqlite2, et sqlite3. Pour demander PostgreSQL en lieu et place de la valeur par défaut MySQL, on précisera donc :

$ rails /var/www/cookbook --database=postgresql


Discussion
C’est une bonne idée que d’explorer l’arborescence de fichiers automatiquement mise en place par la commande rails lors de la création d’un nouveau projet. On y trouvera notamment un sympathique fichier README (LISEZMOI) présentant les grandes lignes de Rails, et notamment comment trouver de la documentation ou déboguer ; il évoque aussi, entre autres, la console Rails et les points d’arrêt (breakpoints).

Un projet Rails fraîchement créé comportera les sous-répertoires suivants :

app
Renferme tout le code spécifique à cette application donnée. C’est là que se déroule la majeure partie du développement Rails.
app/controllers
Contient les classes de contrôleur, héritant toutes normalement de ActionController::
Base. Pour que les correspondances automatiques d’URL (URLmapping) puissent prendre place correctement, chacun de ces fichiers portera le nom du modèle contrôlé suivi de  _controller.rb. Exemple : cookbook_controller.rb.
app/models
On y trouve les modèles, dont le nom aura la forme cookbook.rb. La plupart du temps,
les classes des modèles héritent de ActiveRecord::Base.
app/views
Contient les fichiers templates pour la vue fournie par l’action CookBookController#index, et qui devrait s’appeler cookbook/index.rhtml. Toutes les vues font appel à la syntaxe eRuby. On pourra aussi trouver dans ce répertoire des feuilles de style, des images, etc., vers lesquels le sous-répertoire public tirera par exemple des liens.
app/helpers
Renferme les assistants de vues (view helpers), qui porteront des noms tels que weblog_helper.rb.
app/apis
Emplacement des classes d’API pour les services web.
config
Renferme les fichiers de configuration pour l’environnement Rails, la table de routage, la base de données, et les autres dépendances.
components
Mini-applications autonomes pouvant rassembler contrôleurs, modèles, et vues.
db
On y trouve le schéma de la base de données dans le fichier schema.rb. Le répertoire db/migrate en renferme toute la séquence de migrations.
lib
Ensemble des bibliothèques propres à l’application. Dans la pratique, on trouvera là tout code personnalisé ne relevant pas des contrôleurs, des modèles, ou des assistants.
Ce répertoire apparaît dans le chemin de chargement (load path).
public
C’est le répertoire accessible au serveur web. On y trouve des sous-répertoires d’images, de feuilles de style, de programmes JavaScript, ainsi que les distributeurs (dispatchers) et les fichiers HTML par défaut.
script
Rassemble les scripts d’assistance à l’automatisation et à la génération.
test
Contient les tests unitaires et fonctionnels, accompagnés de leurs fixtures.
vendor
Comporte les bibliothèques externes dont dépend l’application. Comprend également le sous-répertoire plugins, qui apparaît dans le chemin de chargement.


Prototypage rapide par échafaudages

Problème
Vous avez une idée de projet, déjà conçu un schéma élémentaire de base de données, et souhaitez simplement mettre en oeuvre une application Rails toute simple aussi vite que possible.

Solution
Après avoir créé la base de données et fait en sorte que Rails communique avec elle, on peut demander au framework de générer un échafaudage (scaffolding). Dans le jargon de la spécialité, ce terme recouvre le B.A.-BA d’une application web CRUD(3), et comprend notamment un contrôleur et du code de vue capable d’interagir avec le modèle. Une fois cet échafaudage mis en place, vous disposerez d’une application web fonctionnelle mais élémentaire, pouvant servir de point de départ pour un développement plus approfondi.
Rails propose deux manières de dresser des échafaudages. Dans la première, il génère dynamiquement, en coulisses, tout le code de vue et de contrôle nécessaire au bon fonctionnement de l’application. Pour cela, on fait appel à la méthode scaffold d’Action Controller.
La deuxième solution consiste à faire appel au générateur d’échafaudages de Rails pour mettre en place le code dans le répertoire de l’application.
Nous allons illustrer le fonctionnement des échafaudages en créant une application Rails qui propose de stocker une liste de langages de programmation, accompagnés de leurs descriptions. La première étape consiste à configurer la base de données. On génère un script de migration avec la commande :

$ ruby script/generate migration build_db


Cela produit un fichier 001_build_db.rb(4) dans le répertoire db/migrate de l’application. Ouvrez ce fichier et ajoutez-y ce qui suit :

db/migrate/001_build_db.rb :
class BuildDb < ActiveRecord::Migration
def self.up
create_table :languages, :force => true do |t|
t.column :name, :string
t.column :description, :string
end
end
def self.down
drop_table :languages
end
end


Exécutez ensuite ce script de migration pour construire la table des langages de programmation dans la base de données :

$ rake db:migrate

Une fois la base de données créée et l’application Rails configurée pour s’y connecter, on peut créer l’échafaudage de deux manières différentes. La première utilise la méthode scaffold. Créez un modèle appelé languages.rb :

$ ruby script/generate model language


Créez ensuite un contrôleur appelé languages_controller.rb :

$ ruby script/generate controller languages

Ces deux générateurs indiquent quels fichiers ont été ajoutés à l’application Rails. Ouvrez le contrôleur de langage nouvellement créé et ajoutez l’appel suivant à la méthode scaffold (échafaudage) :
app/controllers/languages_controller.rb :

class LanguageController < ApplicationController
scaffold :languages
end


On vient de passer à la méthode scaffold un symbole représentant le modèle — dans le
cas présent, :languages. Ce simple appel indique à Rails de générer tout le code nécessaire à l’exécution des opérations CRUD sur la table languages.
Pour observer le résultat, démarrez le serveur web :

$ ruby script/server


et dirigez un navigateur à l’adresse http://localhost:3000/languages.
On peut aussi créer des échafaudages Rails avec le générateur scaffold. Contrairement à la méthode précédente, il n’est alors plus nécessaire de créer explicitement un modèle ou un contrôleur. Après configuration et réglages de la base de données, il suffit d’exécuter ce qui suit depuis la racine de l’application :

$ ruby script/generate scaffold languages


Cette commande produira un certain nombre de traces concrètes dans l’arborescence de l’application, notamment un modèle, un contrôleur, et un certain nombre de fichiers de vues. Dans le navigateur web, le résultat final est en tous points semblable à celui de la première technique. On obtient ainsi une application web fonctionnelle élémentaire sur laquelle on peut s’appuyer pour aller plus loin.

Discussion
De nombreuses personnes sont attirées par Rails après avoir vu des vidéos présentant une génération d’applications si rapide qu’elle en est surréaliste. D’autres au contraire fuient à l’évocation d’un framework produisant automatiquement du code, ce qui leur semble trop intrusif.
Avant de juger Rails à l’aune de son mécanisme d’échafaudages, il convient de comprendre quel code est créé, comment, et de manière générale appréhender correctement la portée de ces techniques dans un contexte industriel.
La plupart des développeurs Rails expérimentés ne voient en les échafaudages qu’un tremplin utile. À partir de là, ils créent la plus grosse partie de l’application à la main. Pour les débutants, les échafaudages peuvent en revanche représenter un apprentissage indispensable, notamment lorsqu’ils sont mis en place via le script generate. Le code ainsi créé illustre en effet la manière dont on approche les besoins les plus courants dans le framework.
La Figure 1 présente quelques captures d’écran que l’on peut obtenir suite à des échafaudages. On en perfectionnera facilement l’allure en intervenant sur la feuille de style par défaut.
Comme on peut le constater, l’habillage « sortie d’usine » de ces pages ne conviendra guère qu’à des projets internes d’administration, mais certainement pas à des clients.


Accélérer le développement en Rails grâce à Mongrel

Problème
Vous souhaitez bidouiller un projet Rails en mode « développement » en faisant appel à quelque chose de plus rapide que le serveur web intégré, WEBrick.

Solution
Mongrel constitue une excellente solution de remplacement à WEBrick. Notablement plus rapide, il est également bien plus facile à installer que la combinaison lightTPD/FastCGI.

Sur un système GNU/Linux ou Mac OS X, il faudra disposer d’un environnement de construction fonctionnel — mais les utilisateurs de Windows pourront bénéficier d’un gem pré-compilé. Les adeptes de Debian devront ainsi installer les paquets ruby-dev et build-essential, tandis que les férus de Mac OS X veilleront à mettre en place les outils XCode d’Apple. Une fois tous ces pré-requis satisfaits, on installera Mongrel grâce à RubyGems :

$ sudo gem install mongrel


Depuis le répertoire racine de l’application, on invoquera alors ce programme en tâche de fond (ou daemon) :

$ mongrel_rails start -d


L’application est désormais disponible sur le port 3000, c’est-à-dire la même valeur par défaut qu’avecWEBrick (http://localhost:3000). On mettra fin à l’exécution du serveur comme suit :

$ mongrel_rails stop


Discussion
Mongrel est un serveur web rapide écrit en Ruby avec des extensions en langage C. Facile à installer, il peut jouer le rôle de simple serveur de développement, ou faire partie d’un cluster de machines placé derrière un répartiteur de charge dans un contexte de production générant des trafics plus sérieux. Il est encore capable d’interagir avec d’autres frameworks
Ruby, tels que Camping ou Og+Nitro, mais dans la pratique il est surtout utilisé pour déployer des applications Rails. Il est probable que script/server intègre Mongrel dans un avenir proche, en plus de WEBrick et lightTPD.
La solution propose d’employer Mongrel en tâche de fond. On peut aussi l’utiliser en avant-plan, mais ce n’est pas pour autant qu’il imitera WEBrick en affichant des renseignements utiles. Ces informations sont journalisées et accessibles par la commande :

$ tail -f log/development.log


Le plug-in (greffon) Mongrel donne accès à une nouvelle commande : mongrel_rails. Invoquée sans rien d’autre, elle produit la liste des options disponibles, et précise qu’on peut en savoir un peu plus sur chacune en la faisant suivre de -h :

$ mongrel_rails
Usage: mongrel_rails <command> [options]
Available commands are:
- restart
- start
- stop
Each command takes -h as an option to get help.


Mongrel dispose aussi de ses propres plug-ins. Selon ceux que vous aurez installés (notamment mongrel_status et mongrel_cluster), vous observerez peut-être une sortie différente de celle de l’exemple ci-dessus. Le gem Mongrel de base reconnaît les commandes start, stop, et restart.
Pour prendre connaissance de toutes les options reconnues par la commande start, on suivra la recommandation donnée, en faisant suivre son nom de -h :

$ mongrel_rails start -h
Usage: mongrel_rails <command> [options]
    -e,     --environment ENV     Rails environment to run as
    -d,     --daemonize     Whether to run in the background or not
    -p,     --port PORT     Which port to bind to
    -a,     --address ADDR     Address to bind to
    -l,     --log FILE     Where to write log messages
    -P,     --pid FILE     Where to write the PID
    -n,     --num-procs INT     Number of processors active
            before clients denied
    -t,     --timeout TIME     Timeout all requests after
            100th seconds time
    -m,     --mime PATH     A YAML file that lists additional MIME types
    -c,     --chdir PATH     Change to dir before starting
            (will be expanded) -r, --root PATH
            Set the document root (default public')
    -B,    --debug     Enable debugging mode
    -C,    --config PATH     Use a config file
    -S,     --script PATH     Load the given file as an extra config
            script.
    -G,     --generate CONFIG     Generate a config file for -C
        --user USER    User to run as
        --group GROUP    Group to run as
    -h,     --help     Show this message
        --version     Show version


Sous Windows, il est facile de configurer Mongrel sous forme de service :

$ mongrel_rails_service install -n blog -r c:\data\blog \
-p 4000 -e production


On peut alors démarrer ce dernier comme suit :

$ mongrel_rails_service start -n blog

Mieux encore : on peut l’administrer depuis la section Services du Panneau de configuration.

Voir aussi
• La page du projet Mongrel : http://mongrel.rubyforge.org/


Développer plus efficacement sous Windows grâce à Cygwin

Problème
Bien que développant principalement sous Windows, vous connaissez les outils de ligne de commande proposés par GNU/Linux etMac OS X, et notamment ceux du projet GNU.
Vous souhaitez incorporer ces programmes dans votre environnement Windows.
Solution
Téléchargez Cygwin à l’adresse http://www.cygwin.com puis installez cette suite. La fenêtre ouverte par Cygwin à l’exécution rappelle le terminal par défaut de Windows (cmd.exe).
Cependant, elle propose une invite de ligne de commande bien plus puissante, capable d’invoquer des centaines d’autres outils de développement efficaces.
Dirigez votre navigateur web à l’adresse http://www.cygwin.com/setup.exe; cela exécute un programme de configuration qui vous guidera pas à pas dans l’installation de Cygwin. Il suffit de répondre à quelques questions portant sur l’environnement local (quels utilisateurs doivent pouvoir accéder à la suite, quels paramètres réseau l’installeur doit employer pour télécharger des paquets).
Vient ensuite une longue liste de paquets ; il s’agit de choisir ceux que l’on souhaite installer sur le système. La plupart sont décochés par défaut ; pourmodifier les options d’installation portant sur un paquet, cliquez dans son champ New(nouveau). Vous parcourrez ainsi les possibilités : faire l’impasse, installer, ou encore retenir telle ou telle version (parfois, plusieurs sont disponibles).
Il est toujours possible d’exécuter de nouveau l’assistant d’installation pour mettre en place des paquets non sélectionnés les fois précédentes.

Discussion
Cygwin fournit un environnement de type GNU sous Windows. Cette suite sera donc précieuse pour tous ceux qui ont l’habitude de ces outils mais sont contraints de travailler sous le système produit à Redmond pour telle ou telle raison. Si tel est votre cas, empressez-vous de l’installez !
Cygwin propose près de 800 paquets de logiciels libres sousWindows, le tout gratuitement.
La liste complète et actualisée se trouve à l’adresse http://cygwin.com/packages.

L’installation de Cygwin est vraiment très souple et respectueuse de l’utilisateur. On peut toujours changer d’avis, et il est alors possible de désinstaller tout ou partie des paquets retenus. Pour effacer complètement Cygwin, on pourra aussi détruire son arborescence (généralement, elle est placée sous C:\cygwin).


Comprendre l’utilisation du singulier et du pluriel dans Rails

Problème
Il ne vous a pas échappé que Rails repose énormément sur des conventions. En particulier, le framework repose sur l’utilisation du singulier ou du pluriel pour lier le nom d’une classe de base de données aux classes de modèle et de contrôleur qui lui correspondent.
Vous souhaitez comprendre le périmètre et les limites de cette technique.

Solution
Par défaut, les conventions de nombre sont utilisées par Rails dans trois emplacements :
Noms de tables dans les bases de données — au pluriel
Ces libellés sont implicitement au pluriel.Ainsi, une table consignant des informations sur des employés (employees en anglais) s’appellera de préférence Employees.

Noms de classes de modèles — au singulier
Ces identificateurs sont la forme au singulier de la table de base de données qu’ils modèlent. C’est ainsi que le modèle Employee reposera sur la table employees.

Noms de classes de contrôleurs — au pluriel
On optera ici encore pour le pluriel, comme dans EmployeesController (contrôleur d’employés) ou AccountsController (contrôleur des comptes).

Absorber ces trois conventions facilite énormément la vie du développeur Rails. Elles visent en effet à produire un code plus lisible et plus transparent. Rien de tel pour illustrer le caractère intuitif d’un code Rails que de reprendre la configuration d’une relation de plusieurs à un (one-to-many) liant chapitres (Chapters) et recettes (Recipes) :

app/models/chapter.rb :

class Chapter < ActiveRecord::Base
has_many :recipes
end


L’anglophone lira ici : «Un chapitre compte de nombreuses recettes ». Tout est déjà dit ou presque, et les non programmeurs comme les clients auront l’impression de comprendre.

Rails repose encore sur des conventions de nombre en d’autres endroits, comme les noms des répertoires de vue, les noms des fichiers de tests fonctionnels et unitaires, ou encore ceux des fixtures de tests.
L’une des meilleures manières de se familiariser avec ces questions est encore de mener quelques expériences avec les générateurs de Rails en leur précisant l’option –pretend (c’est-à-dire « faire semblant » ; quand on recourt à script/generate, -p suffit). On prendra ainsi peu à peu l’habitude des noms utilisés lors de la création d’échafaudages, de contrôleurs, ou de modèles.

$ ruby script/generate scaffold -p recipe
    exists     app/controllers/
    exists     app/helpers/
    create     app/views/recipes
    exists     test/functional/
    dependency     model
    exists         app/models/
    exists         test/unit/
    exists         test/fixtures/
    create         app/models/recipe.rb
    create         test/unit/recipe_test.rb
    create         test/fixtures/recipes.yml
    create     app/views/recipes/_form.rhtml
    create     app/views/recipes/list.rhtml
    create     app/views/recipes/show.rhtml
    create     app/views/recipes/new.rhtml
    create     app/views/recipes/edit.rhtml
    create     app/controllers/recipes_controller.rb
    create     test/functional/recipes_controller_test.rb
    create     app/helpers/recipes_helper.rb
    create     app/views/layouts/recipes.rhtml
    create     public/stylesheets/scaffold.cs


Rails affiche alors la liste de tous les fichiers qu’il créerait en s’appuyant sur la chaîne reçue en argument, sans rien faire vraiment. Le drapeau --pretend permet ainsi de voir comment et quand Rails opte pour le singulier ou le pluriel dans ses divers identificateurs.

Geoffrey Grosenbach a récemment publié un outil qu’il a baptisé The Pluralizer (le « pluraliseur ») et qui détaille les conventions suivies par Rails pour un mot donné. On trouvera ce programme à l’adresse http://nubyonrails.com/tools/pluralize.

Discussion
Ce sujet du nombre des mots fait régulièrement l’objet de débats passionnés dans la communauté Rails, notamment chez les sceptiques cherchant désespérément des arguments.

Ce n’est pourtant que l’une des nombreuses conventions suivies dans l’espoir d’éliminer autant que possible les soucis de configuration généralement associés aux frameworks de développement web.

En fin de compte, ce n’est rien de plus qu’un choix arbitraire, qu’on peut toujours désactiver globalement ou abroger dans des cas particuliers. On annulera ses effets en ajoutant ce qui suit au fichier de configuration environment.rb :

config/environment.rb :

ActiveRecord::Base.pluralize_table_names = false


Se pose notamment un problème : tous les mots (anglais) ne sont pas transformés dans leur forme plurielle correcte. La classe en charge de ces changements, Inflections, définit des méthodes reprises dans la classe String de Ruby, et donc disponibles à tous les objets de type String dans Rails. Il est facile de tester ces méthodes, notamment pluralize (passer au pluriel), directement depuis la console Rails.

Exemple :

$ ruby script/console
Loading development environment.
>> "account".pluralize
=> "accounts"
>> "people".pluralize
=> "peoples"


La plupart des exceptions du passage au pluriel en anglais sont consignées dans un fichier inflections.rb qu’on trouve sous le répertoire de gem ActiveSupport. En voici une version abrégée :
activesupport-1.3.1/lib/active_support/inflections.rb :

Inflector.inflections do |inflect|
inflect.plural(/$/, 's')
inflect.plural(/s$/i, 's')
inflect.plural(/(ax|test)is$/i, '\1es')
...
inflect.singular(/s$/i, '')
inflect.singular(/(n)ews$/i, '\1ews')
inflect.singular(/([ti])a$/i, '\1um')
...
inflect.irregular('person', 'people')
inflect.irregular('man', 'men')
inflect.irregular('child', 'children')
...
inflect.uncountable(%w(equipment information rice money species series fish
    $ sheep))
end


Imaginons par exemple celui d’une table renfermant des enregistrements foo(5), et proposant des astuces visant à transformer les lecteurs débutants qui les liront enmaîtres de Ruby. Ce terme invariable a « normalement » pour pluriel « foo », mais ce n’est pas ce que calculera la méthode pluralize :

$ ruby script/console
>> "foo".pluralize
=> "foos"


Rails qualifie d’uncountable les mots identiques au singulier et au pluriel — ils correspondent au français « invariable ». Pour inclure « foo » dans la liste de ces exceptions, il suffit d’ajouter ce qui suit à la fin du fichier environment.rb :
config/environment.rb :

...
Inflector.inflections do |inflect|
inflect.uncountable "foo"
end


Rechargez script/console et demandez-lui de nouveau la forme plurielle du mot « foo » ; vous constaterez que cette nouvelle règle de passage au pluriel (inflection) a bien été prise en compte.

$ ruby script/console
>> "foo".pluralize
=> "foo"


On peut aussi définir d’autres règles en les ajoutant au bloc passé à Inflector.inflections. En voici quelques exemples :

Inflector.inflections do |inflect|

    inflect.plural /^(ox)$/i, '\1\2en'
    inflect.singular /^(ox)en/i, '\1'
    inflect.irregular 'octopus', 'octopi'
    inflect.uncountable "equipment"


end

Elles seront alors appliquées avant les règles définies dans le fichier inflections.rb. On peut ainsi passer avant des règles déjà définies par le framework.

Voir aussi
• Le document Rails HowTo : Pluralizing d’Amy Hoy, à l’adresse http://www.slash7.com/ articles/2005/11/17/rails-howto-pluralizing
• L’article humoristique 10 Reasons Rails Does Pluralization : http://weblog.rubyonrails.org/2005/08/25/10-reasons-rails-does-pluralization
DotNet
Réduire
Passez au multithreading
Par Frédéric Millot - Copyright L'Informaticien, tous droits réservés

Le multithreading est un multiplicateur de performance pour les applications lourdes. Dans une première partie, nous allons voir comment la classe BackgroundWorker en simplifie considérablement les implémentations génériques. Ensuite, nous aborderons des techniques plus sophistiquées, dédiées à des usages plus spécifiques.


1re partie
Le multithreading pour les nuls

Pourquoi faire simple quand on peut faire compliqué ? À cette question un peu iconoclaste s’agissant de multithreading, la réponse est inhabituelle : pour faire gagner l’utilisateur en productivité et en ergonomie. L’avènement des grosses applications communicantes et intégrées soumet en effet les processus à des contraintes de réactivité qui ne dépendent plus entièrement de leur charge de travail propre. Or, c’est justement à ces contraintes que répond le multithreading, en permettant l’exécution simultanée de plusieurs tâches. L’objectif est donc de ne pas ralentir voire figer une application lorsque celle-ci exécute un traitement lourd : chargement de gros fichiers, tri sur une large volumétrie de données, communications synchrones complexes, etc. Pour cela, on sollicite le système à l’aide de techniques diverses, parfois complémentaires, pour qu’il permette le lancement puis le déroulement de plusieurs processus concurrents en préservant l’intégrité logique de chacun d’eux. Ce sont ces techniques que nous allons aborder dans cet article en deux parties, à l’aide de petits programmes exemples téléchargeables sur notre site.
Développer des applications multithreads était jusqu’à récemment encore réputé difficile, une sorte de chasse gardée pour les meilleurs développeurs. Depuis DotNet 2.0 – et, soyons juste, d’autres environnements récents –, cette réputation n’est plus fondée. Les API .Net exposent des outils (relativement) simplifiés et très bien documentés. On peut même dire que l’adjonction de processus multithreads à une application existante devient possible à moindre coût, alors qu’il était illusoire auparavant de penser au multithread dès lors que celui-ci n’avait pas été planifié dès le départ, et ses ressources incluses dans les objets dès leur conception architecturale.
Attention cependant, si en pratique les performances applicatives paraissent aussi avoir été améliorées, il ne faut pas s’y tromper. Même avec les processeurs à double cœur d’aujourd’hui, l’exécution des processus n’est pas réellement simultanée. Comme tous les OS généralistes, Windows se caractérise par son « preemptive multitasking » : c’est lui qui détermine quelle proportion de temps CPU sera allouée à telle ou telle tâche. Autrement dit, ce ne sont pas les tâches elles-mêmes qui prennent le pouvoir (multitasking dit « coopératif »). De ce fait, lancer une seconde thread revient à interrompre la première, et de ce fait à la ralentir. La puissance dont font preuve nos PC est telle que ces interruptions se mesurent en millisecondes, si bien qu’à l’œil nu, à l’écran, l’illusion est parfaite : les choses ont vraiment l’air de se passer en même temps. Mais au banc de mesure, et surtout en production, le ralentissement existe bel et bien. Point également important, le passage d’une thread à l’autre est consommateur de mémoire, et met en œuvre une algorithmique noyau qui sollicite l’OS de façon soutenue. Il convient donc d’arbitrer entre le multithreading à outrance – exagération rendue possible par la simplicité de sa mise en œuvre – et le monothread pur, qui aujourd’hui trouve de plus en plus ses limites.

Il faut savoir aussi que, depuis la version 2000, Windows offre au développeur quatre niveaux de priorité pour ses threads :
« Real time » : c’est la priorité la plus haute, qui préempte tous les processus de priorité inférieure. On l’utilise notamment pour les traitements ne devant pas être interrompus comme le streaming vidéo ou l’exécution de certains algorithmes dans des scènes de jeux ;
« High » : cette priorité est typiquement utilisée par l’OS lui-même, lorsque les services demandés par l’utilisateur doivent débuter sans délai, notamment pour ce qui concerne l’affichage de résultats ;
« Normal » : comme son nom l’indique, cette priorité est utilisée par la majorité des processus applicatifs (calculs dans Excel, impression en arrière-plan, etc.) ;
« Idle » : cette priorité, qu’on pourrait traduire par « au repos », est utilisée typiquement par des processus qui se lancent lorsque l’ordinateur est inutilisé. Exemple type : les écrans de veille.

C’est l’usage raisonnable de ces priorités qui détermine le bénéfice pour l’utilisateur final, surtout dans un contexte où l’OS exécute constamment pour lui-même un certain nombre de tâches d’arrière-plan. D’expérience, il est recommandé de ne modifier les priorités par défaut qu’en cas d’absolue nécessité.
De ce petit exposé théorique, il ressort que l’usage essentiel du multithreading est de permettre à une application de continuer de réagir aux sollicitations de l’utilisateur, quelle que soit la lourdeur du traitement qu’elle effectue. L’accroissement des performances pures par le partage des tâches, s’il existe au final, ne doit donc être considéré que comme un bénéfice collatéral, et non comme une motivation première.
Cette règle d’or va trouver sa meilleure illustration dans notre petit programme exemple, d’une simplicité biblique, mais qui répond à un problème courant. Imaginons un logiciel métier dans lequel s’affichent des données en permanence, et dont les fonctions doivent toujours être disponibles à l’utilisateur. Imaginons maintenant que ce logiciel doive effectuer un traitement lourd, et qu’il soit important que le déroulement de ce traitement s’affiche sur une barre de progression. Avec un processus monothread, même si le programmeur prévoit à chaque itération de traiter la boucle des messages système via un appel à Application.DoEvents(), l’utilisateur devra attendre que le traitement se termine pour retrouver le contrôle total de l’interface et pouvoir continuer à travailler. En revanche, avec un processus multithread, le traitement lourd peut être assigné à un thread d’arrière-plan, qui s’exécutera comme un second logiciel, c’est-à-dire sans que le reste de l’application, et notamment son interface, soit bloquée.
Le hic, dans cette seconde approche, c’est le suivi du traitement. En monothread, pas de problème. Il suffit de déclarer un compteur, de connaître la borne haute de l’intervalle d’itération ou de récursion puis de mettre à jour à intervalles réguliers la barre de progression en lui passant une valeur représentant le pourcentage du travail effectué. Mais si le processus lourd s’exécute dans un thread séparé, il ne peut plus interagir avec la barre de progression de l’interface du programme. En effet, celle-ci s’exécute dans le thread principal, et il est absolument interdit d’échanger des données entre threads, sous peine d’exception InvalidOperationException. C’est là qu’intervient la classe BackgroundWorker, qui constitue la première technique – et de loin la plus simple – pour créer, lancer et synchroniser des threads dans une application en code managé. Apparu avec DotNet 2.0, BackgroundWorker peut s’utiliser en tant qu’objet ou en tant que composant implémentant l’interface IComponent. Il est d’ailleurs présent sur la palette des contrôles du Designer de Visual Studio 2005. Nous allons néanmoins l’utiliser façon code, car suivant les bons conseils de Charles Petzold, on a toujours intérêt à éviter le Designer et ses idiosyncrasies. Voici comment se déclare un BackgroundWorker :

private BackgroundWorker bgWorker;

bgWorker = new BackgroundWorker();
bgWorker.WorkerReportsProgress = true;
bgWorker.WorkerSupportsCancellation = true;
bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork);
bgWorker.RunWorkerCompleted += new
  RunWorkerCompletedEventHandler(bgWorker_RunWorkerCompleted);
bgWorker.ProgressChanged += new
  ProgressChangedEventHandler(bgWorker_ProgressChanged);


Classiquement, après avoir déclaré l’objet, on en crée une instance et on procède à l’initialisation de ses principales propriétés. On peut créer et initialiser l’instance à n’importe quel endroit du code, mais nous vous recommandons de ne le faire que dans le corps de la méthode qui va lancer le traitement – ou dans son stackframe direct. Ce faisant, vous vous garantissez que si l’exécution est interrompue, par l’utilisateur ou par une exception, le traitement pourra être relancé immédiatement. Dans le cas contraire, le BackgroundWorker pourrait garder son état occupé ou indisponible, et ainsi ne plus pouvoir « porter » le traitement à nouveau.
Voyons maintenant le détail des propriétés de l’objet. La première, WorkerReportsProgress, vous permet de disposer d’un mécanisme grâce auquel la progression du traitement effectué par la thread secondaire pourra être suivi par la thread principale. Nous verrons plus loin comment. WorkerSupportsCancellation, logiquement, autorise l’arrêt du traitement par l’utilisateur – ou par une méthode exécutée dans la thread principale. Nous avons ensuite trois assignations de gestionnaires d’événements. DoWork est celui qui va répondre à la requête de lancement du thread en déclenchant l’exécution du traitement. RunWorkerCompleted sera activé par la fin de l’exécution du traitement. Enfin, ProgressChanged s’exécute lorsque le traitement appelle la méthode ReportProgress de bgWorker en lui passant une valeur numérique correspondant au pourcentage d’exécution.
Les gestionnaires d’événements par eux-mêmes se signalent par leur simplicité. Le principal, DoWorkEventHandler, lance le traitement :

private void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
  BackgroundWorker bgw;

  bgw = sender as BackgroundWorker;
  e.Result = SampleLoop((int)e.Argument, bgw, e);
}


Il faut noter qu’au moment où DoWork est appelé, la thread est déjà créée et commence donc à s’exécuter, même si c’est encore sans traitement effectif. Remarquez dans le code que le BackgroundWorker est l’initiateur du processus. C’est pourquoi il est important de le recaster, comme dans la première instruction, pour pouvoir l’utiliser comme tel. La seconde ligne, quant à elle, appelle la méthode qui exécute le traitement (nous l’avons appelée SampleLoop dans notre code exemple). On est donc d’ores et déjà dans le second thread. C’est un point à noter car DoWork, ainsi que SampleLoop, sont les seules méthodes à s’exécuter en dehors de le thread principal. Tous les autres gestionnaires d’événements de BackgroundWorker restent dans le périmètre de cette thread principale, ce qui leur permet d’interagir directement avec elle sans problème de gestion d’espace mémoire.
Pour qu’une parfaite communication puisse avoir lieu entre le traitement et le thread principale, il est nécessaire de passer en paramètre à la méthode appelée non seulement le BackgroundWorler, mais également les paramètres d’événements propres à DoWork. C’est DotNet lui-même qui gère le protocole d’échange de données et c’est donc ici que réside l’essentiel de la simplicité de cette technique. Cela signifie également que la transformation en multithread d’un code source déjà existant est finalement peu douloureuse. On peut garder autant de paramètre que l’on souhaite pour la méthode à transformer. Il suffit simplement de lui en ajouter deux.
Le gestionnaire d’événement RunWorkerCompletedEventHandler est tout aussi facile à lire. L’événement RunWorkerCompleted étant déclenché à la fin du traitement en thread secondaire, il doit gérer le cas d’une interruption volontaire par l’utilisateur, d’une interruption liée à une exception, sans oublier bien sûr l’accomplissement normal du processus :

private void bgWorker_RunWorkerCompleted(object sender,   
  RunWorkerCompletedEventArgs e)
{
  if (e.Error != null)
  {
    MessageBox.Show("L'erreur suivante s'est produite : " +
e.Error.Message);
  }
  else if (e.Cancelled)
  {
    MessageBox.Show("Traitement multithread interrompu.");
  }
  else
  {
    MessageBox.Show("Traitement multithread terminé avec le résultat
suivant : " + e.Result.ToString());
  }
  this.progressBar1.Value = 0;
}

Enfin, troisième et dernier événement, ProgressChanged est conçu pour permettre le suivi du traitement, c’est-à-dire sa progression :

private void bgWorker_ProgressChanged(object sender,   
  ProgressChangedEventArgs e)
{
  this.progressBar1.Value = e.ProgressPercentage;
}


C’est le paramètre de type ProgressChangedEventArgs qui porte la valeur indiquant l’accomplissement du traitement. Il suffit donc d’en passer la propriété Value au contrôle ProgressBar, soit directement si l’on est sûr qu’il représente un pourcentage, soit de le formater en tant que tel préalablement. Comment la propriété Value est-elle renseignée ? Comment le BackgroundWorker sait-il que le traitement en est à X ou à Y % ? C’est la méthode du traitement elle-même qui le lui indique, de la façon la plus élémentaire qui soit comme le montre l’exemple suivant :
 

private int SampleLoop(int iCount, BackgroundWorker bgw, DoWorkEventArgs e)
{
  int i, iResult, iPercent;

  iResult = 0;
  for (i=0; i<iCount || ((bgw == null) && (_bMonoThreadCancelled)); i++)
  {
    iPercent = (int)(100 / ((double)iCount / (double)i));
    if (bgw != null)
    {
      if (bgw.CancellationPending)
        e.Cancel = true;
      else
        bgw.ReportProgress(iPercent);
    }
    System.Threading.Thread.Sleep(100);
    iResult++;
  }
  return iResult;
}


La valeur de pourcentage est calculable à partir de la borne haute de la boucle itérative. Une fois cette valeur obtenue, on la passe en paramètre à la méthode ReportProgress de l’objet BackgroundWorker. C’est ensuite DotNet qui gère le passage de cette valeur entre les threads, sans qu’il n’y ait rien d’autre à faire que de respecter ce formalisme. Remarquez qu’avant de passer effectivement ce paramètre, on fait un test pour savoir s’il n’y aurait pas une requête d’arrêt du traitement en attente d’exécution. C’est une des autres grandes beautés de BackgroundWorker que d’autoriser ces interruptions à tout moment avec une telle simplicité. En général, on fournit à l’utilisateur un bouton « Stop » qui lui permet d’arrêter lui-même le traitement. Mais rien n’empêche non plus le thread principal de stopper les choses en fonction de conditions applicatives. Celles-ci peuvent être de natures très diverse, d’autant que, s’agissant du thread principal, toutes les données du programme sont disponibles. Dans les deux cas, gestionnaire d’événement Stop ou interruption programmatique, la procédure est la même :

private void btnCancel_Click(object sender, EventArgs e)
{
  if (bgWorker != null)
    bgWorker.CancelAsync();
}


La méthode CancelAsync() termine la thread et la rend à nouveau disponible pour réutilisation. Sachez à ce propos que BackgroundWorker s’appuie sur un réservoir de threads – le « ThreadPool » – allouées en nombre limité à chaque processus applicatif. Que le traitement se termine correctement ou qu’il soit interrompu par DotNet, c’est le ramasse-miettes qui s’occupe de réformer le thread et de la replacer à nouveau dans le réservoir. Il n’y a donc pas à s’en soucier, ce qui est un autre progrès considérable par rapport aux pratiques d’antan.

Voilà, c’est tout… C’est tout ce qu’il faut pour exécuter en multithread à peu près n’importe quel algorithme complexe. Un objet BackgroundWorker avec deux propriétés initialisées et trois gestionnaires d’événements simplissimes, ainsi qu’une très légère modification de l’algorithme en question. Avouez que ce serait dommage de faires sans…
Pour mettre tout ces éléments en musique, notre petit programme exemple vous propose de lancer le même traitement en modes mono ou multithread (un bouton distinct pour chaque), sachant que, dans les deux cas, la progression de celui-ci est reportée dans l’interface par une ProgressBar. D’abord, vous pourrez évaluer les différences de performances. Ensuite, vous pourrez voir aussi dans le code que les deux approches de suivi sont globalement aussi simples l’une que l’autre. Mais vous verrez aussi que, avec l’approche monothread, l’IHM de l’application est réellement ralentie voire bloquée. Un clic sur le bouton Stop ne permet pas d’arrêter le traitement, tandis que la saisie de texte dans la RichTextBox devient difficile.
Le mois prochain, nous aborderons des techniques plus complexes, permettant de gérer de façon plus fine des problèmes de priorités, de synchronisation et d’échange de données entre threads. Si le cœur vous en dit, si la curiosité vous tenaille, regardez dans les classes ThreadPool et surtout Thread de System.Threading. Les possibilités qui vont s’offrir à nous sont virtuellement infinies…  


2e partie
Des outils plus génériques

Nous avons commencé par un petit exposé théorique sur le multithreading ponctué par une mise en musique de son incarnation la plus simple, à savoir le composant BackgroundWorker de DotNet 2.0. BackgroundWorker a ceci de particulièrement intéressant qu’il encapsule une méthode donnée dans un thread d’arrière-plan et gère les communications (c’est-à-dire le partage de certaines données) entre les deux threads concurrentes. En tant que tel, il se révèle fort utile dans de nombreux cas élémentaires (en particulier pour gérer la progression et/ou l’arrêt de routines longues), d’autant qu’il ne requiert qu’une chirurgie minimale du code existant. Oui, mais voilà, ses limites applicatives sont vite atteintes…

Nous allons maintenant aborder plusieurs autres techniques de nature à remplacer ce composant quasiment à l’identique. Chemin faisant, nous allons en éliminer plusieurs, parce que nous allons nous rendre compte de leurs défauts respectifs. L’objectif de ce parcours par la preuve, c’est de parvenir à autant de simplicité dans la mise en œuvre, mais cette fois sans limitation d’usage. Pour y parvenir, nous allons partir du même problème que la dernière fois : lancer une itération longue dans une thread secondaire tout en gardant la main dans la thread principale, c’est-à-dire avec la possibilité d’interrompre la thread secondaire à tout moment. L’avantage, avec ce même problème, c’est qu’on va pouvoir réutiliser notre application exemple, ce qui permettra à chacun non seulement de partir d’une base connue, mais également de comparer les approches de façon plus directe. Comme à l’accoutumée, cette application exemple ainsi que son code source complet sont téléchargeables gratuitement sur notre site (www.linformaticien.com).  


Des delegates pour les traitements asynchrones

Comme nous invite à le faire Microsoft, nous allons partir de l’espace de nommage System.Threading et de la classe Thread. Celle-ci s’utilise de façon assez simple. Elle encapsule l’appel de méthode de l’opération à effectuer, expose une méthode Start pour la démarrer, et lorsque le démarrage a été effectué, elle redonne la main à la thread appelante qui peut donc tranquillement continuer sa tâche. Dans notre exemple, le traitement est simulé par une boucle itérative ralentie qui reçoit en paramètre le nombre de cycles à effectuer. On aurait donc, pour ce traitement, un code qui ressemblerait à celui-ci :

using System.Threading;

int iIterations = 0;

void ShowProgress(int iLoopsSoFar)
{
  progressBar1.Value = iLoopsSoFar;
}

void Iterate(int iCount)
{
  int i, iPercent;

  // Itération
  for (i = 0; i < iCount; i++)
  {
    // Calcul du pourcentage d'accomplissement de l'itération.
    iPercent = (int)(100 / ((double)iCount / (double)i));
    // Affichage de la progression et vérification d'une requête d'arrêt.
    ShowProgress(iPercent);
    // Ralentissement de l'itération pour la démo.
    System.Threading.Thread.Sleep(100);
  }
}

void LoopThreadStart()
{
  Iterate(iIterations);
}

void goButton_Click(object sender, EventArgs e)
{
  iIterations = (int)txtBoxIterations.Value;
  Thread loopThread = new Thread(new ThreadStart(LoopThreadStart));            
  loopThread.Start();
}


Cette implémentation fonctionne, mais n’est pas très satisfaisante techniquement, car on se sert d’un champ privé pour permettre aux deux threads de partager une même donnée, en l’occurrence l’indicateur de nombre de cycles, iIterations. Pour ce type de traitements asynchrones, on préférera passer par des delegates, qui ne sont finalement que des objets servant à appeler des méthodes statiques ou d’instance. Voici un exemple de déclaration de delegate permettant un fonctionnement asynchrone :

class IterateDelegate : MulticastDelegate
{
  public void Invoke(int iIterations);
  public void BeginInvoke(int iIterations, AsyncCallback callback,
                          object asyncState);
  public void EndInvoke(IAsyncResult result);
}



Dérivé de la classe MulticastDelegate, notre delegate expose trois méthodes d’appel. Invoke est celle qu’on utilise pour effectuer des traitements synchrones classiques. BeginInvoke et EndInvoke sont celles qu’on utilise pour effectuer la même opération de façon asynchrone. Voici donc à quoi ressemblerait une réécriture du lancement de la thread :

void goButton_Click(object sender, EventArgs e)
{
  IterateDelegate iterDeleg = new IterateDelegate(Iterate);
  iterDeleg.BeginInvoke((int)txtBoxIterations.Value, null, null);
}


Notez les deux arguments null passés en paramètres dans l’appel de la méthode BeginInvoke du delegate. Ils servent traditionnellement à assigner une méthode callback à la méthode appelée (pour son contrôle) et, s’agissant du paramètre asyncState, à contrôler le résultat de l’opération BeginInvoke. Libre à vous de vous en servir ou non, en fonction de l’architecture de votre code de traitement des résultats de l’opération portée par la thread secondaire.


Communiquer entre les threads

Le code qui précède devrait fonctionner sans problème sur la plupart des systèmes Windows 32 bits. Pourtant, il recèle une erreur fondamentale et malgré tout très classique en codage multithread : on opère directement sur une fenêtre en dehors de la thread qui l’a créée (vous avez trouvé où bien sûr : dans ShowProgress).
Heureusement, les designers de DotNet nous fournissent le moyen de contourner ce problème. Chaque objet d’interface utilisateur, c’est-à-dire chaque classe dérivant de System.Windows.Forms.Control expose une propriété indiquant de quelle façon l’objet en question doit être invoqué en fonction de la thread. Baptisée InvokeRequired, cette propriété retourne Vrai si la thread appelante doit d’abord repasser le contrôle à la thread ayant créé l’objet avant d’appeler une méthode sur cet objet. Au passage, notez que seules quatre méthodes d’objets peuvent être appelées à tout moment et à partir de toute thread : Invoke, BeginInvoke, EndInvoke et CreateGraphics. Pour toutes les autres méthodes, il est indispensable de passer par les méthodes de type Invoke pour marshaller les appels à la thread du contrôle.

En résumé, la modification des propriétés du contrôle ProgressBar1 dans ShowProgress violent l’intégrité de DotNet. Il faut donc que nous construisions un autre delegate qui, lui, sera exécuté dans la thread d’interface. Cette fois, nous allons plutôt utiliser la méthode synchrone Invoke, dans la mesure où l’opération est simple et où la thread d’interface n’a pas besoin d’être spécialement « protégée ». Voici à quoi pourrait ressembler notre nouveau delegate et son implémentation :

delegate
void ShowProgressDelegate(int iLoopsSoFar);


void Iterate(int iCount)
{
  int i, iPercent;

  // Prépare l’affichage asynchrone de la progression
  ShowProgressDelegate showProgress =
    new ShowProgressDelegate(ShowProgress);

  // Show progress
  this.Invoke(showProgress, new object[] {0});

  // Itération
  for (i = 0; i < iCount; i++)
  {
    // Calcul du pourcentage d'accomplissement de l'itération.
    iPercent = (int)(100 / ((double)iCount / (double)i));
    // Affichage de la progression et vérification d'une requête d'arrêt.
    this.Invoke(showProgress, new object[] {iPercent});
    // Ralentissement de l'itération pour la démo.
    System.Threading.Thread.Sleep(100);
  }
}


Grâce à Invoke, notre implémentation multithread est cette fois correcte. Fonctionnellement, nous avons une thread d’interface qui déclenche une thread secondaire chargée de porter un traitement long. Celle-ci repasse le contrôle à la thread d’interface lorsque cette interface a besoin d’être mise à jour – pour le report visuel du traitement via la barre de progression.
Mais il ne vous aura pas échappé que le code ci-dessus est un peu lourd. Plutôt qu’un double recours à Invoke dans la méthode Iterate(), il serait plus élégant de réarchitecturer ShowProgress afin que ce soit elle qui effectue l’appel asynchrone. Si ShowProgress est appelée à partir de la bonne thread (la thread d’interface), alors elle effectue directement la mise à jour de la barre de progression. Si ce n’est pas le cas, alors elle utilise Invoke pour se rappeler elle-même à partir de la bonne thread. Voilà ce que donne le codage de cette implémentation – avec, au passage, le retour à une version simple de notre méthode d’itération :

void ShowProgress(int iLoopsSoFar)
{
  // Vérifie qu’on est dans la bonne thread.
  if (!(txtBoxIterations.InvokeRequired)=
  {
    progressBar1.Value = iLoopsSoFar;
  }
  else
  {
    // Lance l’affichage asynchrone de la progression
    ShowProgressDelegate showProgress =
      new ShowProgressDelegate(ShowProgress);
    this.Invoke(showProgress,
      new object[] {iLoopsSoFar});
  }
}

void Iterate(int iCount)
{
  int i, iPercent;

  // Prépare l’affichage asynchrone de la progression
  ShowProgress(0);

  // Itération
  for (i = 0; i < iCount; i++)
  {
    // Calcul du pourcentage d'accomplissement de l'itération.
    iPercent = (int)(100 / ((double)iCount / (double)i));
    // Affichage de la progression et vérification d'une requête d'arrêt.
    ShowProgress(iPercent);
    // Ralentissement de l'itération pour la démo.
    System.Threading.Thread.Sleep(100);
  }
}


Voilà, grosso modo, notre applet exemple récrite avec les moyens traditionnels, c’est-à-dire sans l’objet BackgroundWorker. À l’utilisation, les résultats sont globalement les mêmes et, d’ailleurs, l’architecture du code est relativement similaire. Sauf que, cette fois, les outils que nous avons utilisés sont beaucoup plus largement adaptables, et conviennent pour ainsi dire à toutes les situations.


Partager des données

Dans les sources téléchargeables, nous établissons une communication entre nos deux threads via un classique système de messages à trois états : pending / looping / canceled (en instance / en exécution / arrêté). Ce système implique quelques modifications au code exposé ci-dessus – notamment passage en appel asynchrone ShowProgress. Mais peu importe. Ce qui compte, pour la suite de notre parcours, c’est que ce système de messages permette à la thread secondaire d’informer l’interface utilisateur de sa progression et de déclencher le changement d’état du bouton (démarrer / arrêter). Or, nous aurions pu tout aussi bien partager directement notre champ privé _state. Pourquoi ne l’avons-nous pas fait ? Parce que cette alternative est inutilement délicate.
Pour éviter les situations dites de « race conditions », dans lesquelles un thread tente d’accéder à des données qui ne sont que partiellement à jour, cependant qu’un autre thread est précisément en train de mettre ces données à jour, diverses possibilités techniques s’offrent à nous. Il s’agit principalement de l’instruction lock ou de la classe Monitor, qui sont conçues pour être utilisées comme verrous sur un objet partagé afin de garantir l’intégrité de celui-ci à tout instant T d’un partage. Mais l’une comme l’autre peuvent à leur tour être cause indirecte de deadlock, autre problème récurrent en multithreading. Un deadlock se produit lorsque deux threads attendent l’une après l’autre pour continuer leur exécution, de sorte qu’aucune des deux ne progresse. Et, bien sûr, il n’existe pas de classe ni de technique magique pour éviter les deadlocks : tout est une question de soin apporté à l’architecture du code et à l’approche des problèmes à résoudre. Les précautions qui en découlent auraient donc sensiblement compliqué notre code et réduit ses vertus didactiques.

Mais pour que vous vous rendiez compte de la chose par vous-même, voici quelques exemples simples montrant comment il est facile d’arriver à un deadlock difficile à anticiper logiquement quand on n’a pas l’habitude. Cette fois encore, nous allons poser nos jalons les uns après les autres, en commençant le principe du verrouillage.

public class Counter
{
  public static int Count ;
}

static void UpdateCount()
{
  for (int x = 1; x <= 10000; ++x)
    Counter.Count = Counter.Count + 1;
}

  ThreadStart start = new ThreadStart(UpdateCount);

  Thread[] threads = new Thread[10];
  for (int x = 0; x <= 10; ++x)
  {
    threads[x] = new THread(start);
    threads[x].Start;
  }

  for (int x = 0; x <= 10; ++x)
    threads[x].Join;

  Console.Write("{0}", Counter.Count);  
 

Le code ci-dessus, tiré d’un kit de formation Microsoft Press, illustre un problème sournois. Sachant que la méthode Join, de la classe Thread, permet de demander au système de suspendre l’exécution d’un programme jusqu’à ce que la thread en question ait terminé, le résultat attendu, 100 000, s’affichera correctement sur un PC ancien. En revanche, si la machine est dotée d’un processeur supportant l’hyperthreading, le résultat affiché sera aléatoirement inférieur à 100 000. Pourquoi ? Parce que dans le cas d’un traitement linéaire, le champ Count est mis à jour en trois étapes : chargement de la valeur dans un  registre du processeur, incrémentation de cette valeur dans le registre, copie de la valeur du registre dans la mémoire. Dans le cas non linéaire, il peut arriver que deux threads lisent les mêmes valeurs en mémoire et les actualisent de la même manière, d’où perte d’itérations.
Pour résoudre ce problème, on peut utiliser la classe Interlocked comme ceci pour verrouiller l’accès à notre compteur :

static void UpdateCount()
{
  for (int x = 1; x <= 10000; ++x)
    Interlocked.Increment(ref Counter.Count);
}


Dans notre cas, Interlocked fonctionne très bien et à peu de frais, mais malheureusement elle n’opère que sur un éventail réduit de types .NET. Pour ne pas être contraint par cette limitation, on peut préférer l’instruction lock. La réécriture de notre code est alors assez simple :

Public void UpdateCount()
{
  lock(this)
  {
    for (int x = 1; x <= 10000; ++x)
      Counter.Count = Counter.Count + 1;
  }
}


L’instruction « lock » agit comme un verrou de synchronisation qui ne donne accès au code verrouillé qu’à une seule thread à la fois. Notez également que lock requiert la spécification d’un objet servant d’identifiant de verrou. Généralement, on utilise « this », afin de pouvoir librement manipuler tout ou partie des données d’une classe. Tout cela est donc bel et bon, sauf que l’on manque un peu de contrôle sur nos événements. C’est là qu’intervient le fait que lock se fonde sur une utilisation de la classe Monitor. Celle-ci a l’avantage d’exposer plusieurs méthodes, dont Enter et Exit, pour créer et libérer un verrou, mais également TryEnter et Wait, deux outils à connaître. TryEnter tente de créer un verrou exclusif sur l’objet spécifié, avec ou sans temporisation. Wait fait l’opération inverse, bloquant la thread jusqu’à ce qu’elle puisse à nouveau créer un verrou. Voici donc une troisième reformulation de notre code, cette fois plus finement contrôlé :

Public void UpdateCount()
{
  Monitor.Enter(this)
  try
  {
    for (int x = 1; x <= 10000; ++x)
      Counter.Count = Counter.Count + 1;
  }
  finally
  {
    Monitor.Exit(this) ;
  }
}



Un exemple de deadlock à solutionner

C’est sur la base de ce petit bout de chemin que la question des deadlocks prend tout son sens. Imaginons la classe suivante :

class Deadlocker
{
  object obA = new Object();
  object obB = new Object();

  public void AfficheA()
  {
    lock(obA)
    {
      lock (obB)
      {
        Console.WriteLine("Objet A");
      }
    }
  }

  public void AfficheB()
  {
    lock(obB)
    {
      lock (obA)
      {
        Console.WriteLine("Objet B");
      }
    }
  }
}

void Test()
{
  Deadlocker deadlock = new Deadlocker();

  ThreadStart A_Start = new ThreadStart(deadlock.Affiche_A);
  ThreadStart B_Start = new ThreadStart(deadlock.Affiche_B);

  Thread A_Thread = new Thread(A_Start);
  Thread B_Thread = new Thread(B_Start);

  A_Thread.Start();
  B_Thread.Start();

  A_Thread.Join();
  B_Thread.Join();
}



Si la lecture du code ci-dessus ne vous a pas fait tilter, exécutez-le. Vous remarquez tout de suite le problème : le premier thread démarre et verrouille l’objet A, le second démarre et verrouille l’objet B, puis le premier thread se bloque en attendant la libération de l’objet B, tandis que le second thread se bloque en attendant la libération de la ressource A. Voilà la définition exacte d’un deadlock. Vous devriez, compte tenu des éléments exposés précédemment, pouvoir le résoudre dans cet exemple simple… Un tuyau : utilisez Monitor…

Linux Journal
Réduire
Étendre OpenOffice.org
par Dmitri POPOV – Traduction : Noé Barat

Il est plus facile que vous ne pourriez le penser de créer vos propres extensions pour la suite bureautique OpenOffice.org.


Si vous avez créé une macro astucieuse, ou encore un modèle de document innovant, et que vous voulez le faire partager à d’autres utilisateurs d’OpenOffice.org, la publication de cette macro ou modèle sur le Web, même accompagnée d’instructions d’installation détaillées n’est probablement pas la meilleure manière de procéder. Heureusement, OpenOffice.org supporte l’ajout d’extensions sous la forme de petits paquets logiciels directement mis en œuvre et qui peuvent ainsi fournir les fonctionnalités supplémentaires souhaitées. Vous pouvez facilement transformer vos modèles ou macros en extensions qui peuvent être installés avec un simple double clic. Mieux encore, les extensions d’OpenOffice.org ont une architecture commune facile à comprendre et bien définie, et vous pourrez commencer à construire vos propres extensions en un rien de temps.

Le fait d’étendre les fonctionnalités d’OpenOffice.org en utilisant des plug-ins n’est pas nouveau. Dès le départ, les utilisateurs pouvaient ajouter de nouveaux dispositifs à la suite de bureau en installant des paquets « UNO ».

Le code contenu dans ces paquets UNO permet d’intégrer facilement des macros dans des applications OpenOffice.org.


UNO ?
Si vous voulez aller plus loin que la simple conception d’une macro, vous devez utiliser UNO (Universal Network Object) qui est le modèle de composants d’OpenOffice.org. Vous pourrez ainsi programmer des nouveaux composants en C, C++, Java ou Python. Ces composants seront chapeautés par un gestionnaire de services, et communiqueront entre eux aux travers de bridges, en utilisant des interfaces définies avec le langage UNO IDL.




À partir d’OpenOffice.org 2.0.4, l’idée d’ajouter de nouvelles fonctionnalités par l’intermédiaire de paquets installables a été complètement repensée, avec l’introduction d’un concept devenu familier à la plupart des utilisateurs : à savoir l’architecture de modules d’extension du navigateur Firefox, de Mozilla.

L’implémentation technique du système d’extensions dans Open-Office.org a été également revue. Notam-ment, la nouvelle version d’Open-Office.org peut désormais manipuler des extensions qui ne contiennent pas explicitement du code, comme des modèles, des images, et ainsi de suite. La nouvelle version d’OpenOffice.org introduit également la nouvelle extension « .oxt » qui permet à des utilisateurs d’identifier facilement une extension installable OpenOffice.


Comment les extensions fonctionnent-elles ?

Une extension d’OpenOffice.org est essentiellement constituée d’un dossier zip qui inclut le contenu installable et les méta-données additionnelles exigées pour installer et enregistrer correctement la nouvelle extension.

OpenOffice.org fournit un outil simple d’utilisation, le « Package Manager » qui permet aux utilisateurs d’installer de nouvelles extensions et de contrôler celles existantes. Pour installer une extension, il suffit de choisir le menu Outils / Gestionnaire de Packages, pour ensuite choisir « mes paquets », et puis enfin appuyer sur le bouton « ajouter ». Une fois que l’extension est installée, il est bon de  relancer OpenOffice.org. Mais, contrairement à Firefox, toutes les extensions n’exigent pas de devoir redémarrer OpenOffice.org. Par exemple, si vous installez des extensions ne contenant aucun code, vous pourrez les employer tout de suite.

Pour mieux comprendre l’anatomie des extensions d’OpenOffice.org, disséquons-en une en provenance du wiki d’OpenOffice.org (wiki.services.openoffice.org/wiki/Non-code_extensions). Dans le but de jeter un coup d’œil à l’intérieur du paquet, vous devrez commencer par modifier l’extension de fichier de « oxt » en « zip ». Ceci vous permettra de traiter le paquet comme une archive régulière de format zip. Le paquet se compose de trois éléments : le dossier META-INF, le dossier des modèles (template), ainsi que le fichier de configuration baptisé « Paths.xcu ».

Le dossier META-INF contient le fichier « manifest.xml » qui pointe sur le fichier de configuration Paths.xcu. Ce fichier Paths.xcu contient des informations que le gestionnaire de paquets utilisera pour pouvoir ajouter les nouveaux fichiers aux endroits appropriés. Le chemin aux templates est défini comme étant « %origin%/template », et le gestionnaire de paquet remplacera cette variable par le chemin complet approprié. Pour créer une nouvelle extension à base d’un nouveau modèle, vous n’avez besoin de rien ; le dossier de configuration et la structure globale de l’extension sera la même. Autrement dit, tout ce que vous devrez faire sera de copier vos modèles dans le dossier « template ». Vous devrez aussi changer à nouveau l’extension du fichier de zip à oxt, et tester l’installation de cette extension via le gestionnaire de paquets (Menu Outils / Gestionnaire de packages). Pour vérifier que la nouvelle extension s’est correctement installée, choisissez Menu Fichier / Modèle de documents / Gérer ; vous devriez apercevoir vos templates dans le dossier « Mes modèles ».


Créer une extension contenant du code à partir de zéro

Bien que créer des extensions qui ne comprennent aucun code est plutôt facile, l’élaboration d’extensions avec code est une autre paire de manches. L’extension avec code inclus non seulement le code en lui-même, mais également un fichier de configuration complexe contenant des informations sur les menus, les sous-menus, les commandes, les macros assignées, les icônes associées et ainsi de suite. Créer un fichier de configuration manuellement, même dans le cas d’une extension avec code la plus simple, exige quelques connaissances techniques, et peut prendre beaucoup de votre temps. Heureusement, il existe un outil qui peut automatiser le processus entier de création de cette extension. Bien que cet outil  (documentation.openoffice.org/HOW_TO/various_topics/Addons1_1en.sxw) n’a pas été mis à jour depuis 2003, il est toujours capable d’abattre une grande quantité de travail afin de créer des extensions qui peuvent être employé avec la dernière version d’OpenOffice.org. Pour mieux comprendre ceci, élaborons ensemble une extension factice, simple et génératrice de texte, à partir de zéro.

Une fois installée, cette extension ajoutera la commande « Lorem Ipsum » au menu Tools?Add-Ons. Cette commande comprend une macro Open-Office.org qui insère un certain nombre de paragraphes avec du faux texte.

Note à propos de Lorem Ipsum : il s’agit de l’insertion d’un texte sans valeur sémantique et qui remplira des pages lors d’une mise en forme afin d’en calibrer la mise en page sans devoir saisir un texte définitif.

La description qui suit suppose que vous ayez une bonne connaissance de base de la manière de créer et de contrôler des macros, des modules et des bibliothèques dans OpenOffice.org. L’outil ajouté emploie le terme plus ancien d’add-on, que vous pouvez considérer comme synonyme d’« extension ».

 Commençons par créer une macro qui produit du texte factice. Pour réaliser convenablement ce travail, nous allons créer une bibliothèque séparée appelée LoremipsumLib, qui contiendra le module Loremipsum. Dans ce module, ajoutez la macro que nous vous listons ci-dessous.

Listing 1. loremipsummacro.txt
Option Explicit
Sub LoremipsumMacro()
Dim ThisDoc As Object
Dim Cursor As Object
Dim ParNumber As Integer
Dim InputMsg As String, InputTitle As String,
    !InputReturn As String
ThisDoc=ThisComponent
InputMsg="Number of paragraphs"
InputTitle="Lorem Ipsum Generator"
InputReturn=InputBox (InputMsg, InputTitle)
ParNumber=InputReturn
Do While ParNumber>0
Cursor=ThisDoc.text.createTextCursor
Cursor.String="Lorem ipsum dolor sit amet..." &
    !Chr(13)& Chr(13)
ParNumber=ParNumber-1
Loop
End Sub

Vous pouvez remplacer la chaîne « Lorem ipsum dolor sit amet... », par un texte de votre cru.

Avant de tester cette macro vous devez effectuer quelques travaux préparatoires. D’abord, créez un répertoire séparé pour tous vos fichiers – que vous nommerez par exemple loremipsum. Si vous voulez ajouter des icônes aux entrées des menus, vous devez prévoir les fichiers graphiques nécessaires. Selon la documentation officielle, vous avez besoin d’un ensemble de petites (16x16) et de grandes icônes (26x26) au format BMP. Cependant, vous pouvez également utiliser des icônes 16x16 au format  PNG (vous pouvez télécharger des icônes de haute qualité en surfant à l’adresse  www.famfamfam.com/lab/icons/silk).

L’étape suivante consiste à copier la bibliothèque LoremipsumLib dans le dossier loremipsum. Pour réaliser ceci, dirigez-vous vers l’arborescence « .OpenOffice.org 2/user/basic » située sous l’arborescence du répertoire home de votre utilisateur courant, et copiez « LoremipsumLib » dans le dossier loremipsum. Pour terminer, copiez les icônes choisies dans le dossier LoremipsumLib. Maintenant, vous devez ouvrir le document contenant l’outil d’aide à la création d’une extension, tout en vous assurant que l’exécution de macros est active. Déroulez le document jusqu’à atteindre l’entrée vous permettant de créer le fichier de configuration, et appuyez sur le bouton « Create XML file » pour exécuter le créateur d’Add-on.
Le processus de création d’une extension en employant le créateur d’Add-on peut être divisé en trois étapes. D’abord, vous devez définir la configuration générale, y compris le menu et sa position. Puis, vous indiquerez les entrées de ce menu, et au final, vous zipperez le paquet créé.
Dans la fenêtre de base, indiquez le chemin au fichier principal du script. Appuyez sur le bouton de lecture rapide, et choisissez  le fichier script.xlb qui est contenu dans le dossier LoremipsumLib. Vous devez également indiquer un nom pour votre extension, qui est défini par le champ « Unique Name ».

Remplacez simplement la chaîne présente dans « org.openoffice.Office.addon.example » avec le nom que vous voulez (par exemple, org.openoffice.Office.addon.Loremipsum). Pressez « suivant » pour ajouter le menu de l’extension. Vous avez maintenant deux choix : vous pouvez ajouter une entrée au menu principal d’openoffice, ou vous pouvez choisir d’ajouter une entrée au menu Outils. Si vous avez l’intention de ne rajouter qu’une simple extension ne contenant que quelques commandes supplémentaires, nous vous recommandons de le placer sous Outils. Une extension plus complexe méritera sa propre entrée dans le menu principal. Puisque le générateur Lorem ipsum ne contient qu’une seule commande, nous l’installerons sous le menu Outils. Maintenant, choisissez un titre à votre menu. Si vous voulez que votre extension ne soit disponible que pour une langue ou pour un pays particulier, vous pouvez le spécifier maintenant en indiquant la configuration appropriée dans la section « langue ».

La prochaine étape est de lier la macro Loremipsum à l’entrée du menu créé. Pour y parvenir, vous devez indiquer le nom de la bibliothèque, du module et de la macro. Dans notre cas, ce seront respectivement LoremipsumLib, LoremipsumModule et LoremipsumMacro. Une fois que vous avez lié la macro à la commande, vous pouvez ajouter une icône à celle-ci. Puisque nous avons choisi d’employer une icône au format PNG, sélectionnons le bouton autre type d’image (« Other »), et choisissons notre icône, puis ajoutons-là (16x16). En ajoutant des icônes, vous avez deux options : soit choisir une icône externe qui avait été ajouté au répertoire de l’extension, soit choisir de l’intégrer au fichier de configuration, mais cette manipulation ne fonctionne qu’avec un fichier au format BMP. Cela reste plus ou moins une question de goût, mais personnellement nous pensons qu’il est plus clair de lier l’icône plutôt que de l’inclure au fichier de configuration lui-même. Il peut en effet arriver que vous deviez éditer le fichier manuellement plus tard. Pressez le bouton « FINISHED » pour terminer la construction de votre extension, et appuyez sur le bouton « Addon zipping » pour emballer l’add-on dans un zip. Maintenant, vous pouvez installer l’extension dans OpenOffice en choisissant le gestionnaire de paquets (Outils ? gestionnaire des extensions). Relancez OpenOffice.org, et vous devriez voir apparaître la commande « ipsum Lorem » dans le menu Outils ?Add-Ons.


Peaufinez vos extensions

Le créateur d’Add-on cache de manière assez commode la partie technique du processus, ce qui est une bonne chose si vous ne voulez pas passer un temps bête à effectuer le travail manuellement. C’est cependant peu utile si vous voulez vraiment connaître ce qui se passe au cœur de votre extension, dans le but de satisfaire seulement votre curiosité, mais aussi pour pouvoir dépanner ou optimiser sans devoir recourir sans cesse au créateur d’Add-on.
Si vous jetez un œil à l’intérieur du paquet zip, vous noterez qu’il contient les répertoires familiers  suivants : META-INF, un répertoire avec la macro et le fichier d’addon.xcu (voir listing). Ce dernier est l’élément principal de l’extension, car elle contient toutes les données de configuration. Le fichier addon.xcu est basé sur le XML, et même si vous avez seulement une connaissance de base du XML, vous pouvez facilement vous faire une idée de son fonctionnement interne en examinant son contenu.

<?xml version=’1.0’ encoding=’UTF-8’?>
<oor:node
 oor:name="Addons"
oor:package="org.openoffice.Office">
  <node oor:name="AddonUI">
    <node oor:name="AddonMenu">
      <node oor:name="org.openoffice.
    !Office.addon.Loremipsum"
oor:op="replace">
        <prop oor:name="Context"
    !oor:type="xs:string">
          <value/>
        </prop>
        <prop oor:name="Title" oor:type="xs:string">
          <value>Lorem ipsum</value>
        </prop>
        <prop oor:name="URL" oor:type="xs:string">
 <value>macro:///LoremipsumLib.Loremip
    !sumModule.LoremipsumMacro
 </value>
        </prop>
        <prop oor:name="Target"
    !oor:type="xs:string">
          <value>_self</value>
        </prop>
        <prop oor:name="ImageIdentifier"
    !oor:type="xs:string">
          <value/>
        </prop>
      </node>
    </node>
    <node oor:name="Images">
      <node oor:name="org.openoffice.Office.ad
    !don.Loremipsum.img01"
oor:op="replace">
        <prop oor:name="URL" oor:type="xs:string">
 <value>macro:///LoremipsumLib.
    !LoremipsumModule.LoremipsumMacro
 </value>
        </prop>
        <node oor:name="UserDefinedImages">
          <prop oor:name="ImageSmallURL">
            <value>%origin%/LoremipsumLib
    !/Icon.png</value>
          </prop>
        </node>
      </node>
    </node>
  </node>
</oor:node>


Le fichier XML contient un certain nombre de nœuds, et chaque nœud possède des propriétés, qui, à leur tour, ont des valeurs. Par exemple, le nœud supérieur <node oor:name="AddonMenu"> a des propriétés multiples, telles que le nœud <prop oor:name="Title" oor:type= "xs:string">, qui a pour valeur le contenu <value>Lorem ipsum</value> qui est le titre de l’extension. Le nœud <prop oor:name="URL" oor:type="xs:string"> est une propriété qui a pour valeur <value>macro:///-LoremipsumLib.LoremipsumModule.LoremipsumMacro</value>, qui désigne le lien à la macro appropriée. Sachant cela, vous pouvez facilement modifier l’extension en modifiant simplement ce fichier « addon.xcu ». Par exemple, si vous voulez changer le titre du menu, vous pouvez simplement éditer la valeur <value>Lorem ipsum</value> en la transformant comme suit :

<prop oor:name="Title" oor:type="xs:string">
  <value>Insert dummy text</value>
</prop>
Avec des macros plus complexes, vous pouvez même ajouter de nouveaux menus et de nouvelles commandes simplement en recopiant et en modifiant des parties de ce fichier de configuration.

Le mot de la fin

Maintenant que vous connaissez les fondations, vous pouvez commencer à construire vos propres extensions OpenOffice.org. Si vous voulez partager vos créations avec d’autres utilisateurs, vous pouvez les ajouter au dépôt officiel des extensions : (wiki.services.openoffice.org/wiki/Extensions_repository).
La plupart des extensions sont soumises à la licence d’utilisation GPL. Ainsi, vous pouvez à loisir les démanteler pour voir comment elles fonctionnent et y piocher de nouvelles idées.

Dmitri Popov est un auteur indépendant, dont les articles sont parus dans des magazines informatiques russes, britanniques et danois. Ses articles couvrent le logiciel Open-Source, les applications sous Linux, le Web et d’autres matières informatiques.    


Pour aller plus loin
Vous trouverez à l’adresse suivante un package vide pour templates prêt à accueillir vos  modèles. Nous parlons bien ici d’extension sans code :
http://framework.openoffice.org/files/documents/25/3702/TemplatePackage.oxt
La société starxpert a développé toute une série d’extensions placées sous licence GPL.
http://starxpert.fr/spip/spip.php?article23
Vous y trouverez notamment l’extension multisave qui permet d’enregistrer le document courant sous plusieurs formats simultanément (PDF, DOC, ODT). Pour l’utiliser, rien de plus simple : téléchargez le package zip (StarXpert_OOoMultiSave.zip), puis Outils>Gestionnaire de packages, cliquez sur ajouter, en allant rechercher le fichier StarXpert_MultiSave.zip.
Vous pouvez décortiquer cette extension en vue d’en créer à votre tour d’autres. La meilleure source d’informations concernant la liste des extensions existantes est le wiki :
http://wiki.services.openoffice.org/wiki/Extensions
Enfin vous trouverez à l’adresse http://www.indesko.com/telechargements/ooowikipedia, une extension permettant d’interroger en ligne l’encyclopédie wikipedia à partir d’OpenOffice.org. Si vous sélectionnez un mot et lancez la macro, votre navigateur s’ouvrira sur l’article correspondant si celui-ci est disponible dans l’encyclopédie.

Firefox
Réduire
Les extensions indispensables pour Firefox
Par Noé Barat - Copyright L'Informaticien, tous droits réservés

firefox_logo.jpgAvec Firefox, et ses innombrables extensions, vous pouvez transformer en un tour de main votre navigateur en une nouvelle plate-forme logicielle. Que vous utilisiez Firefox sous Windows, ou sous Linux, vous trouverez forcément matière à optimiser votre navigation Web dans notre sélection.

Les extensions sont des compléments logiciels que l’utilisateur installera lorsqu’il aura besoin d’une fonctionnalité supplémentaire. L’utilisateur doit cependant être guidé dans son choix. Plus d’un millier de modules complémentaires sont disponibles ! Au risque d’installer un module qui ne correspond pas à son besoin, ou d’installer des extensions qui rendent l’interface trop compliquée.
 
Sur notre portable, sous Ubuntu Feisty, le fichier /home/noe/.mozilla/firefox/66-wthiq5.default/extensions.cache liste l’ensemble des modules complémentaires Firefox (extensions, thèmes et langues) que nous avons installés. Ces extensions sont fournies sous la forme de fichiers .xpi (cross (X) platform install), qui sont en réalité de simples fichiers ZIP comprenant une structure spéciale accompagnés d’une signature numérique – dont les fichiers install.js et install.rdf. Le fichier extensions.cache n’étant pas fort lisible, il existe une extension du nom d’InfoLister qui vous générera en HTML une page reprenant tout ce qui est installé par votre implémentation de Firefox – page que vous pouvez sauvegarder localement ou sur un serveur distant via FTP.

Lors de son lancement, Firefox réalise un audit, et l’installation de très nombreuses extensions peuvent affecter la rapidité du lancement. Le concept d’extension véhicule néanmoins de nombreux avantages par rapport à leurs intégrations : elles comportent un numéro individuel de version, elles existent par profil, elles peuvent être désactivées facilement en cas de problème (-safe-mode), etc.
Le site de mise à jour de mozilla (update.mozilla.org ou https:// addons.mozilla.org) est le seul site fiable pour les extensions : si vous tenter d’installer une extension à partir d’un autre site, Firefox vous demandera confirmation (par sécurité le site d’où vient l’extension est bloqué : son URL devra être ajouté à une liste de sites autorisés). En français, nous vous conseillons le site http://extensions.
geckozone.org-/Firefox/.
Si vous réinstallez votre système d’exploitation, il est fâcheux de devoir réinstaller la dizaine, ou plus d’extensions, dont vous ne pouvez plus vous passer. Heureusement, il existe FEBE (Firefox Extension Backup Extension), qui sauvegarde absolument tous les éléments de la configuration et des profils, extensions comprises ; ainsi que CLEO (Compact Library Extension Organizer) qui élaborera un seul  fichier XPI pour l’ensemble de vos extensions.

Liste_Extensions.jpg

AIDE À LA NAVIGATION ET EXTENSIONS COMMUNAUTAIRES

Browster, qui a été développé par une start-up de San Francisco pour Firefox mais aussi IE, télécharge en arrière-plan les pages Web listées sur votre page courante, ce qui aura pour effet d’accélérer leur affichage si un clic survient – une icône apparaît dès que la page est en cache. De plus, il suffit d’appuyer sur la touche Alt et de placer ensuite le curseur de la souris sur un lien pour que la page s’affiche en pop-up. Bref, vous gagnez du temps mais perdez aussi en consommation de la bande passante.
Avec Launchy, vous disposez d’un nouveau menu contextuel pour les images et les pages. À partir de Firefox, vous pouvez ainsi ouvrir une page Web avec un autre navigateur, éditer une image, etc.  

StumbleUpon permet de surfer sur des sites ajoutés par d’autres utilisateurs d’un seul clic – les pages ajoutées sont taggées par des mots-clé d’appréciation. En résumé, cette extension vous aidera à découvrir des sites susceptibles de vous intéresser en fonction de notes issues d’une communauté d’utilisateurs et selon vos goûts – des millions d’utilisateurs et des millions de sites sont ainsi déjà référencés.

Toujours dans cette catégorie communautaire, il existe ClipMarks et Delicio.us. Avec Delicio.us, le but du jeu est simple : cette extension sauvegardera vos bookmarks tout en les partageant avec d’autres utilisateurs. Avec ClipMarks, vous partagez non pas des favoris mais des contenus, comme des textes, des vidéos et des images. Une fois cette extension installée, il vous suffit de sélectionner à la souris un élément sur une page Web, comme une vidéo pour la sauvegarder et la publier sur le site du service ClipMarks.

L’extension Smart Digg Button s’avère très utile pour déterminer si la page que vous visitez a déjà été proposée et notée dans Digg. Si c’est le cas, le nombre de vote est affiché, sinon le bouton vous propose un lien pour la coter.


GESTION DES FAVORIS

Pour synchroniser vos favoris de votre portable à vos ordinateurs de bureau / maison vous pouvez employer Foxmarks. Une fois le compte Foxmarks créé, la synchronisation est transparente pour l’utilisateur. Si vous sauvegardez un bookmark sur votre portable, puis que vous ouvrez Firefox sur votre ordinateur fixe de bureau, vous le retrouverez instantanément.    

Dans la catégorie bookmark, nous ne pourrions plus nous passer de Bookmark Duplicate Detector qui traquera vos doublons, ainsi que de Bookmark Link Checker qui validera chacun de vos liens présents en marque-pages. Enfin, nous apprécions Add Bookmark Here qui permet d’ajouter très facilement un marque-page dans un de vos dossiers de favoris.


QUELQUES EXTENSIONS LIÉES À GMAIL

Pour beaucoup – et nous faisons partie du nombre –, il est plus pratique de gérer son courrier électronique à partir de Gmail. Il existe des extensions Firefox qui vont nous faciliter grandement la vie.

Gmail-Manager vous permettra d’interroger plusieurs comptes Gmail avec prévisualisation d’un extrait de chaque nouveau message, et ouverture de la boîte d’un simple clic. Vous pouvez personnaliser le temps entre deux vérification, et faire jouer un son à l’arrivée d’un nouveau courrier qui attirera votre attention. Si vous n’avez qu’un seul compte Gmail, Gmail Notifier joue le même rôle de scrutation d’un compte Gmail – ou bien Yahoo! Mail Notifier si vous possédez un compte Yahoo.

Nous apprécions également Better Gmail qui regroupe en une seule installation des scripts d’extension Greasemonkey. Cette dernière modifie le comportement d’une page en lui associant un script JavaScript personnalisé. De cette manière, il est possible de modifier le contenu de la page, par exemple en supprimant le compteur de spams affiché par Gmail, ou encore en ajoutant une icône représentative du contenu d’une pièce attachée.

GmailSpace est une extension très pratique comme stockage temporaire en ligne. Le volume de stockage s’élève à 2,8 Go, mais les fichiers ne peuvent dépasser la taille de ceux qu’il est possible de joindre à un mail dans Gmail, soit 10 Mo.


SÉCURITÉ ET ANTIPUB

VirusTotal.com propose de scanner (gratuitement) vos fichiers suspects en utilisant les bases de données de la plupart des sociétés d’antivirus (http://www.virustotal.com). L’extension Firefox du même nom uploadera un fichier vers virustotal, le service aux 25 antivirus, qui l’analysera. Dans la même veine existe SafeDownload, une extension qui scannera automatiquement tout ce que l’on télécharge – avec l’antivirus NOD32.

Adblock Plus est une extension de filtrage publicitaire, avec des listes de filtres qui se mettent à jour continuellement. Vous pouvez désactiver ce filtre par page ou par domaine si besoin (et si vous désirez sauvegarder vos fichiers de règles vous aurez besoin d’Adblock Plus Filter Uploader). Adblock Plus bloque efficacement les publicités en flash qui détournent souvent votre attention de votre navigation sans compter le surplus de consommation de bande passante que celles-ci entraînent.
Si vous désirez surfez anonymement, vous pouvez passer par le réseau TOR avec les extensions TorButton ou FoxTor – fonctionnant avec privoxy qui doit être préalablement installé, ou via Anonymization Toolbar.


MULTIMÉDIA

DownloadHelper est une extension qui automatisera d’un seul clic le téléchargement de toutes les vidéos (flv, wmv...). Si vous lancez la lecture de la vidéo avec le lecteur de la page Web, l’extension vous propose le fichier à télécharger. Media Player Connectivity est aussi fort utile : un assistant recherchera vos lecteurs potentiels (comme vlc, totem, mplayer, etc.) et lorsque vous devez visionner un film, celui-ci sera visionné par ce lecteur externe – choisit en fonction de l’extension.

Si vous êtes un fan de YouTube ou de Googlevidéo (compatible avec 60 sites ao total !), l’extension VideoDownloader télécharge tous les objets de la page si vous cliquez sur la petite icône en bas du navigateur – le format de sauvegarde est un fichier.flv. De même, si un site vous propose une vidéo au format flash sans possibilité de la sauvegarder localement, l’extension Media Pirate forcera l’apparition d’un lien de téléchargement. Media Pirate vous permet de télécharger des vidéos sur les sites Web, tels que dailymotion.com, video.google.com ou encore youtube.com.

À propos du téléchargement, il est parfois bien pratique de suivre visuellement l’état du téléchargement, ce qui peut se faire avec Download Statusbar qui affiche une barre de suivi.
OPTIMISATION

FireTune ajuste les réglages internes du navigateur en fonction des capacités de votre ordinateur – sous Windows seulement. Fasterfox vous permet d’activer un mode turbo. En fait, il modifie certains paramètres relatifs au réseau (connections simultanées, mode pipeline, caches, etc.) pour accélérer le surf. De plus, il peut activer la mise en place du prefectching, pour télécharger et mettre en cache tous les liens de la page courante.


RÉSEAUX

Foxtorrent
est une nouvelle extension pour Firefox permettant d’utiliser un client bitTorrent directement dans le navigateur : un simple clic sur un lien Torrent et le téléchargement débutera dans un nouvel onglet de Firefox – il est possible de lancer un aperçu même si le fichier n’est pas encore complètement téléchargé.

FireFTP est un client FTP qui s’intègre parfaitement au navigateur. Nous l’utilisons, à la rédaction de l’Informaticien, pour la livraison des articles. Lorsque vous lancez FireFTP, une fenêtre s’ouvre avec deux volets : dans celui de gauche s’affiche l’arborescence de vos disques locaux, tandis que le volet de droite reprend l’arborescence du répertoire FTP distant. Il ne vous reste plus qu’à glisser vos fichiers locaux vers le répertoire distant pour les copier.


LES INCLASSABLES

Speed Dial est une extension originale : elle affiche sur une page les vignettes de vos neuf homepages préférées. Pour accéder à une de celles-ci, il vous suffit de cliquer dessus ou encore d’utiliser la touche Ctrl + le numéro correspondant sur le pavé numérique. Pour la faire fonctionner, vous devez afficher une page vide au démarrage (Outils/Options/Général/Afficher une page vide), et assigner les neufs pages en ajoutant l’outil speeddial à votre barre d’outils (puis en attribuant les neuf pages aux raccourcis CTRL 1 à 9). Elle est parente de l’extension FoXpose qui elle-même s’inspire de la fonction Quick Tabs de IE7. FoXpose a pour but d’afficher sur une seule page une vue en miniature de tous les onglets ouverts.

Nous utilisons au quotidien Calculator : cette super calculatrice peut s’ouvrir dans un onglet ou séparément. Sa valeur ajoutée est de conserver la trace de vos calculs (historique).

Si vous passez votre souris au-dessus d’une image, une barre s’affiche avec l’extension Image Toolbar. Vous pouvez ainsi la télécharger ou l’imprimer très facilement.

Nous gagnons beaucoup de temps avec URLFixer, une extension Firefox qui complète vos URL à la volée, ou les corrige automatiquement (par exemple .con en .com).

Tab Effect
est une extension complètement inutile et donc parfaitement indispensable… Elle ajoute un effet visuel, un mouvement de transition rotatif en 3D lors du passage d’un onglet à l’autre. Malheureusement, elle ne fonctionne que sous Windows (via DirectX).

Scrapbook est une extension très populaire qui sauvegarde des pages ou des morceaux de pages, pour pouvoir les consulter ultérieurement hors ligne. Cette extension est un aspirateur de site aux fonctions étendues : vous pouvez capturer et classer des pages, mais aussi y ajouter des commentaires, surligner du contenu, supprimer des balises, capturer des médias, etc.

Google Preview affiche une miniature de la page d’accueil des sites qui correspondent à vos requêtes lors d’une recherche sur Google. Nous l’utilisons au quotidien en association avec l’extension Customize Google qui, par exemple, vous permettra d’enlever les publicités des résultats de vos recherches Google.

Enfin, pour terminer cette sélection, nous attirons votre attention sur Selenium, une extension qui simule et automatise le comportement d’un utilisateur sur un site Web ! En fait, cette extension enregistrera les actions pour les rejouer automatiquement par la suite.

Bon surf avec Firefox !

Métiers
Réduire
L’informaticien engagé
par Sylvaine LUCKX - Copyright L'Informaticien, tous droits réservés

Jean-François Norget travaille aujourd’hui sur des maquettes un peu différentes de celles que l’on voit habituellement au musée de la Marine, dont il est le responsable informatique.


L’endroit en impose : figures de proue austères et fières, maquettes de vaisseaux de l’Ancien régime, marines à la patine ancienne se succèdent le long des salles du musée. C’est donc en franchissant ces salles et en se dirigeant dans les couloirs – on pourrait presque dire les coursives – du musée de la Marine que nous arrivons au bureau de Jean-François Norget, responsable informatique des lieux. L’homme, affable et discret, cultive une retenue de bon aloi : il n’a pas servi pendant vingt ans pour faire fonctionner l’informatique des sous-marins de la force de frappe française pour rien : « Je me suis engagé à 18 ans dans la Marine nationale, après un bac électronique F2, sans formation informatique spécifique », précise-t-il. « La Marine avait besoin de détecteurs radar. J’ai suivi les cours spécifiques de la Marine en informatique. » Affecté sur les principaux bâtiments de la Marine française, il enchaîne les embarquements sur des bâtiments aux noms ronflants d’Indomptable, de Foudroyant, de Tonnant, ou d’Inflexible. Les missions se succèdent et Jean-François Norget y apprend le maintien en condition opérationnelle des grands systèmes informatiques des sous-marins : il travaille ainsi sur des calculateurs Sagem et Sintra. Il y apprend aussi son métier : celui d’informaticien de la Marine nationale, formé à l’école du secret-défense et des embarquements de plusieurs semaines. Dans ces ambiances neutres et confinées, la qualité du contact humain s’avère primordiale : « Nous n’avions que peu de contacts avec les équipes opérationnelles du sous-marin », explique-t-il. « En revanche, je dirigeais une petite équipe de quatre personnes. Tout se passait bien et nous étions l’équipe la plus détendue des sous-marins », se souvient-il avec bonne humeur.
Après plusieurs années de bons et loyaux services dans les sous-marins, Jean-François Norget éprouve le besoin de remonter à la surface, et de voir sa famille. Il travaille pendant cinq ans comme formateur à Saint-Mandrier et à Brest, et envisage petit à petit un retour à la vie civile, « mais la Marine nationale ne voulait pas me lâcher », commente-t-il avec humour.
Après avoir travaillé à la Dirsim (Direction des systèmes d’information de la Marine) à Houilles, dans les Yvelines, il rejoint le Musée comme responsable informatique en octobre 2004. Changement de décor, changement de mission : rattaché au responsable financier du Musée, il travaille totalement seul, ce qui lui pèse parfois. Jean-François Norget est donc un travailleur solitaire pour gérer toute l’informatique du musée de la Marine : 100 stations de travail Hewlett-Packard, six serveurs, des serveurs Linux pour les caisses à l’entrée.

Il intervient aussi, en mission ponctuelle de dépannage, pour les autres musées de la Marine en France, à Toulon, Brest, Port-Louis et Rochefort. De lui dépendent la bonne utilisation des systèmes informatiques, la formation des utilisateurs, le dépannage des machines, la passation des marchés avec les prestataires… et le développement des projets informatiques d’envergure du musée de la Marine : « Je fais tout ! Certains jours, c’est un peu pesant, mais d’un autre côté, les journées passent et sont complètement différentes ! Je suis pris dans le cycle des journées, et le temps passe à une grande vitesse. C’est ce qui est intéressant dans ce poste. Je ne fais jamais la même chose. Un jour je passe des marchés et je consulte des prestataires, un autre jour j’interviens en dépannage dans les musées régionaux, ensuite je fais de la formation aux utilisateurs… Par exemple, je dois parfois m’occuper de visuels à sélectionner pour les expositions temporaires du musée de la Marine. Le Musée compte plus de 200 Go de collections de photos non classées. Nous avons d’ailleurs en projet de les trier, et de les mettre sur Internet, afin de les vendre au public. Parmi les autres grands projets du Musée, figure aussi la mise en relation de tous les musées de la Marine nationale en VPN avec le Musée national de la Marine à Paris », détaille-t-il.

Livres
Réduire
Java pour les informaticiens confirmés

java5.jpgEn dix ans, Java s’est imposé comme une des architectures majeures dans le monde de l’entreprise et du Web. La version 5 est sortie l’année dernière et comprend de nombreuses spécifications nouvelles. Dans son ouvrage, Antonio Goncalves nous permet  de revisiter tous les aspects de Java en prenant le cas pratique, désormais classique pour les développeurs Java, d’une animalerie en ligne, le fameux Java Petstore. Au fil des chapitres, l’étude de cas se construit en appliquant les différentes spécifications. L’application se déploie sur le serveur GlassFish et utilise la base de données Derby. Plutôt destiné aux architectes et développeurs confirmés qui veulent découvrir les nouveautés de Java EE 5 ou souhaitant migrer leurs applications d’une version précédente, l’ouvrage montre bien comment se combinent les différentes API dans une application Internet-Intranet.
L’ouvrage reste cependant très accessible grâce à une analyse du code employé fort claire grâce à une mise en page très innovante avec les notes directement en marge, donc là où apparaît le besoin d’approfondissement d’une notion. Enfin, l’auteur est une référence, à la fois consultant et formateur, il écrit aussi des articles pour développez.com et DevX.

Java EE 5
Auteur : Antonio Goncalves
Éditeur : Collection les Cahiers du Programmeur, Éditions Eyrolles, 329 pages, 36 euros environ


Tout ce que vous voulez savoir sur Excel sans avoir à le demander !

F&F-Excel-2007.jpgDix pour cent seulement des utilisateurs d’Excel savent tirer le meilleur parti de cet outil, en particulier des formules de calcul. Cet ouvrage, pas vraiment pensé pour les débutants, a été conçu pour les 90 % restants pourtant utilisateurs réguliers d’Excel. Après une présentation rapide du logiciel, l’auteur aborde les bases d’utilisation des fonctions dans les formules. Dès le chapitre suivant l’ouvrage est consacré à l’élaboration de formules financières et propose quantité de formules adaptables en pratique selon les besoins du lecteur. Les autres chapitres étendent l’étude aux formules matricielles, aux megaformules, ou à celles relatives aux tableaux croisés dynamiques. La dernière partie est consacrée à VBA et à la création de fonctions personnalisées.
Bon, cet ouvrage c’est du lourd, dans tous les sens du terme, même si notes, astuces et illustrations rendent attrayants l’ouvrage ! À réserver aux habitués du tableur souhaitant approfondir leur efficacité que ce soit professionnellement ou pour un usage privé.

Formules et fonctions Excel 2007
Auteur : John Walkenbach
Éditeur : First Interactive, 800 pages, 35 euros environ


Renforcez la sécurité de vos applications ASP

9782100507375.jpgDès la présentation de l’ouvrage, l’auteur explique comment il est difficile de développer des applications sécurisées, surtout pour le Web. Dominique Baier nous propose un condensé de sa réflexion sur le sujet mais aussi de son expérience de développeur sur la version première de l’outil ASP. Les enseignements de cet ouvrage dépassent donc largement le cadre des simples fonctionnalités d’ASP.Net pour aborder les sujets importants pour la création d’applications sécurisées. Après un bref rappel du contexte de sécurité, et des principes généraux des applications sécurisées, l’auteur entre dans le vif du sujet avec de nombreux exemples de code en C# et d’applications des meilleures pratiques pour développer des applications sécurisées.
Contrairement à de nombreux ouvrages, les annexes complètent parfaitement le contenu de l’ouvrage en apportant des éclairages importants par des informations utiles pour le développeur. Le code dans l’ouvrage est ainsi immédiatement utilisable par un développeur. Les principes sous-jacents seront très utiles aux architectes de solutions Web. Un livre facile d’accès pour des lecteurs déjà initiés.

Sécuriser les applications ASP.Net 2.0
Auteur : Dominique Baier
Éditeur : Coll. Les Outils du développeur, Éditeur : Microsoft Press, 490 pages
Forums
Réduire
Bienvenue au club !
par Bertrand GARÉ - Copyright L'Informaticien, tous droits réservés

Les clubs utilisateurs se développent. Lieux d’échanges et d’information, ils sont aussi le moyen pour les éditeurs et les constructeurs d’obtenir de précieuses informations de leurs clients. Ils ne sont cependant pas « la voix son maître » et les échanges sont parfois vifs !

Un club utilisateur est le plus souvent une sorte de « ménage à trois » entre les membres, l’administration du club et l’éditeur ou le constructeur. Chacun a ses besoins dans ce cadre. Ils sont parfois contradictoires.  Regard sur ces organisations à travers les yeux des différents intervenants.
Pour un utilisateur, de s’affilier à un club utilisateur relève d’abord du pragmatisme. Seul face à un éditeur et un constructeur, il ne reçoit que les informations commerciales ou  l’aide de son intégrateur. Dans le club, il a accès à des informations plus qualitatives avec les retours d’expériences des autres utilisateurs. La plupart des clubs complètent cette information « produits » par des débats ou des commissions sur des thèmes précis. Ainsi, le club utilisateur de HR Access, un progiciel de gestion des ressources humaines, propose des commissions, des séances plénières sur des thèmes « métier », comme la DADS-U ou la gestion prévisionnelle des ressources et des compétences. L’intérêt est aussi dans un club de profiter de ces éléments de veille légale ou technologique.


Du temps et un peu d’argent…

Plus important encore pour l’utilisateur, sa voix est souvent mieux entendue puisque, par ce biais, il peut remonter à la fois ses demandes d’évolution produit, mais aussi les déficiences constatées, non seulement sur le produit, mais aussi sur la politique de services ou commerciale de l’éditeur ou du constructeur.
Dans certains clubs, l’utilisateur peut rejoindre des groupes de travail pour apporter aux autres l’expérience qu’il a eu sur un point précis ou la mise en œuvre qu’il a réalisé sur le produit. L’investissement en temps est d’une demi-journée par séance plénière. Pour les groupes de travail, l’investissement est plus important et demande d’être disponible pour des réunions de préparation.
Stéphane Bachellerie, président du club HR Access et auparavant membre du club puis trésorier, et Joël Gaudeul, responsable marketing chez StepStone, un autre éditeur de RH, tombent d’accord pour dire que les utilisateurs sont le plus souvent des consommateurs et que seuls quelques utilisateurs s’engagent vraiment dans la démarche d’échange proposée.

L’utilisateur trouvera aussi d’autres outils à sa disposition suivant les moyens du club. Sites Web, newsletters, forums, parfois blogs ou wikis sont les moyens les plus employés… après les relations personnelles entre les membres du club !
L’investissement est aussi financier. Du fait de la structure associative des clubs, il faut régler une cotisation. Chez HR Access le prix affiché est de 300 euros pour l’année. Certains autres clubs sont plus « gourmands ».
Stéphane Bachellerie le précise : « Notre principal rôle est d’assurer la logistique à la fois des échanges et des demandes de nos adhérents pour qu’elles soient satisfaites rapidement. Nous prenons en charge aussi les questions de réservation de salle et de restauration lors des commissions ou groupes de travail. » Joël Gaudeul ajoute : « En fait, ce n’est pas vraiment ni l’endroit ni le cadre qui font venir les personnes, mais les questions traitées et les sujets des réunions suivant leur actualité ou leur importance métier. »
Le club de StepStone est en cours de structuration. Actuellement, c’est encore l’éditeur qui dirige les réunions. Joël Gaudeul explique : « Nous souhaitons que nos clients prennent le pouvoir, car pour nous cet outil n’a pas vocation à être un canal de vente ou de marketing supplémentaire. Il nous intéresse pour les retours que nous pouvons en avoir et l’expertise que nous en retirons pour nos différents clients. Il est là aussi pour montrer à nos clients que nous n’avons pas peur de les réunir dans une même salle, ensemble, pour parler de nos produits ou services. »


Tout n’est pas rose

Dans un club plus structuré comme celui de HR Access, l’éditeur ne vient qu’en intervenant aux demandes et réponses des membres du club et apporte les réponses demandées sur les évolutions de produits. « L’éditeur est plutôt là pour nous apporter les assurances que nous demandons sur les évolutions du produit ou des fonctions spécifiques. Dans ce cadre, HR Access se montre fiable, aussi bien sur le produit que sur le service. Nous constatons d’ailleurs une évolution depuis le changement de main sur la direction du produit avec peut-être un sentiment d’être mieux entendu. »

Les échanges sont d’ailleurs parfois vifs, comme j’ai pu moi-même le constater lors de la réunion d’un club utilisateur SAP qui s’est tenu à Poitiers, il y a quelques mois. Avec les membres, tout n’est pas rose pour les éditeurs ou les constructeurs. Le temps des clubs utilisateurs chambre d’enregistrement de la communication des éditeurs ou constructeurs est bien révolu !