Recherche sur le blog

mardi 27 décembre 2011

[Firefox] Réafficher le message d'avertissement lorsqu'on ferme plusieurs onglets

Astuce! Concerne : Firefox 4.0+. Il se pourrait que vous ayez coché la case qui propose de ne plus poser de question lors de la fermeture de plusieurs onglets. Cela est encore plus contrariant si Firefox restaure la session précédente lors de son redémarrage. Comment faire alors pour réinitialiser tous les paramètres ?

Restaurer le paramètre caché "afficher la boite de dialogue d'avertissement lors de la fermeture"
     
Pour ce faire, rendez-vous dans la configuration avancée : tapez "about:config" dans l'un des onglets ouverts (ou créez-en un nouveau). Un message doit s'afficher vous indiquant que toute modification peut être "dommageable pour la stabilité et la sécurité" de votre navigateur. Cliquez sur "Je ferai attention, promis !"

 
Recherchez le paramètre "browser.showQuitWarning". Si vous ne le trouvez pas, utilisez la barre de recherche instantanée. Lorsque vous apercevez celui-ci, double-cliquez dessus pour inverser la valeur. Elle doit alors être positionnée à "true" (= Vrai). L'image ci-dessous devrait vous aider si vous êtes perdu.

  
Redéfinir le paramètre pour afficher la page d'accueil au démarrage du navigateur

Si vous aviez demandé à enregistrer la session, le paramètre "showQuitWarning" n'aura aucun effet. Ainsi, pour que Firefox adopte son comportement d'origine, il faut se rendre dans les préférences, via le menu "Firefox" ou en appuyant sur ALT pour afficher toute la barre de menus.

  
Dans l'onglet général, déroulez la première liste "au démarrage de Firefox" et choisissez "Afficher ma page d'accueil". Confirmez par OK : la fenêtre des préférences sera fermée.

Ouvrez maintenant plusieurs onglets puis quittez le navigateur. Il vous proposera de nouveau de sauvegarder votre session ! Il vous suffira de ne plus cocher la case pour conserver ce comportement.

Bon surf à toutes et à tous.

[Info] Le navigateur préféré de mes visiteurs est...

Roulements de tambours... Il s'agit de Firefox, qui arrive premier avec 42% de pages vues (Firefox et GranParadisio). Il est suivi par Google Chrome puis par Internet Explorer. Opéra se retrouve en bon dernier avec ce qu'il semblerait être Netscape 8. Les utilisateurs ont principalement utilisé Windows puisque cela concerne 78% des pages vues. Enfin, la majorité des visiteurs provient de France !


Merci à tous et n'hésitez pas à ajouter ce blog à vos favoris, à me suivre sur Twitter ou à enregistrer mon fil RSS. Vos commentaires et suggestions pour améliorer ce blog, sont les bienvenus !

lundi 26 décembre 2011

[Sécurité] Les bases à connaitre pour venir à bout des virus et logiciels espions

Les virus, spywares, adwares, trojans, rootkits,... sont très répandus sur la toile. Ils sont tous assez différents mais ont tous en commun une chose : ils sont dangereux pour nos données. Cet article va expliquer aux plus néophytes d'entre nous les bases de la sécurité informatique. Après, vous devriez être capable de vous protéger un minimum et de prendre certaines mesures sans avoir forcément besoin de formater ou de faire appel à un informaticien.

Quelques définitions

Les virus sont des exécutables qui peuvent se transmettre de différentes manières et exécutent une action, en général nuisible (comme un formatage). Ils peuvent aussi bien infecter le secteur d’amorçage du disque dur, qu'une application. Certains virus utilisent aussi le langage Visual Basic pour exécuter des macros lors de l'ouverture d'un document Word par exemple. Un premier exemple de virus est MyDoom.A qui envoyait des mails à tous les contacts et installait une porte dérobée (fonctionnalité inconnue de l'utilisateur) dans le dossier système. Souvenez-vous aussi des différents vers qui ont fait leur apparition. Ils se différencient des virus par le fait qu'ils n'ont pas besoin d'un programme hôte pour se reproduire (exemple : I Love You). Certains sont capables de forcer un redémarrage de l'ordinateur après une durée bien déterminée.

Les spywares ("logiciels espions") sont des programmes destinés à récupérer diverses statistiques de votre utilisation (URL, mots-clés saisis dans les moteurs de recherche, etc) et même des données personnelles, afin de les renvoyer à son concepteur ou à un tiers sur la toile. Certains espions afficheront plutôt de la publicité et des liens, d'autres, appelés "mouchards", renvoient les données dans la plus grande discrétion possible. Vos données pourraient alors servir à certaines régies publicitaires véreuses ou à d'autres fins malhonnêtes. Tout cela à votre insu, bien sûr. Quelques vecteurs d'infection : faux logiciels de protection, faux codecs, cracks et keygens, etc.

Un trojan ("cheval de troie") est souvent destiné à ouvrir un accès pour un pirate. Par exemple, ce genre de programme peut ouvrir un port par lequel une personne pourra s'introduire pour exécuter diverses actions à distance, voire prendre le contrôle de la machine. Ils sont aussi capables d'exploiter des failles logicielles. Leur but est de corrompre les données ou même de les récupérer. D'autres peuvent aussi installer des logiciels malveillants (malwares) sur votre machine. Pire encore : les keyloggers enregistrent les frappes au clavier. Il en existe d'autres catégories. Les signes qui pourraient laisser envisager une infection sont par exemple une activité du réseau anormale, des mouvements du curseur inattendus, voire des accès au disque durs répétés.

Un rootkit, pour faire simple, est un logiciel malveillant qui se dissimule dans une application existante ou dans le système. Ils sont difficilement détectables, même par les outils récents. Ils peuvent par exemple se charger en mémoire, pour ne laisser aucune trace sur le disque dur (ou sur toute autre périphérique de stockage). Certains de ces logiciels malveillants peuvent s'approprier des privilèges administrateur et vont parfois jusqu'à désactiver le mécanisme de défense (comme un antivirus).

Un adware est un logiciel qui affiche de la publicité pendant son utilisation. Elle peut s'afficher sous forme de larges bannières, ou bien de multiples liens casés dans un coin de l'application. Bon nombre de barres d'outils fait partie de cette catégorie. En général, un logiciel rentre dans cette catégorie quand son concepteur n'a pas indiqué diffuser de la publicité dans celui-ci. Enfin, certains adwares pourraient contenir des logiciels espion. Bearshare, Gator, IncrediMail, sont de bons exemples pour illustrer.

D'autres types de logiciels malveillants existent, tels que les botnets. Cependant, nous n'en donnerons pas la définition ici. Des sites comme Secuser ou Sophos apportent des renseignements complémentaires aux définitions les plus basiques ici présentes. Nous allons énumérer une liste de logiciels qui pourraient vous servir en cas d'infection suspectée ou avérée.

Les antivirus

Différents antivirus sont disponibles sur le marché. Il existe des gratuits mais aussi des payants comme Norton Antivirus de Symantec ou bien BitDefender, NOD32, Kaspersky. Plusieurs comparatifs existent afin de vous aiguiller dans vos choix : Clubic, Actuvirus, Guide-Antivirus, etc. 

Contrairement à ce que l'on pourrait croire, les antivirus gratuits (Antivir, Avast!,...) sont très efficaces, mais disposent simplement de moins de fonctionnalités et peuvent signaler plus de faux positifs (une fausse menace). Des sites comme Dr-Malware ou Guide-Antivirus ont rédigé des comparatifs intéressants.

Supprimer les logiciels malveillants

Une préférence pour...

Trois logiciels ressortent du lot :
  • A² Squared (Emisoft Anti-Malware) : le logiciel existe dans différentes versions dont une gratuite. La société Emisoft propose également des solutions pour les entreprises.
  • Spybot Search & Destroy : alors qu'on le croyait totalement à l'abandon, Spybot S&D revient sous forme de suite antivirus (v2.0) et propose de nouveaux outils d'analyse et de vaccination pratiques et faciles d'utilisation.
  • Malwarebyte Anti-Malware : logiciel très puissant disponible aussi en version gratuite. Une version payante (pro) existe également. Lorsqu'on lance le programme, il propose de choisir un type de recherche à effectuer. Le résultat s'affiche ensuite sous forme de liste avec des cases à cocher pour supprimer.


Les autres logiciels

Certains logiciels qui suivent sont destinés aux utilisateurs avertis.

Ad-Remover

Description par Clubic : "Le logiciel Ad-Remover s’occupera d'éliminer proprement les publiciels vérolés, « adware » en anglais. Affichant de la publicité en échange d'un service gratuit, certains d'entre eux contiennent des logiciels espions violant votre vie privée numérique tout en modifiant le comportement de votre système. Ayant pour cibles principales Eorezo, SweetIm, MyWebSearch, AskBar, Crawler Toolbar, WhenUSave, Dealio Toolbar, il vous débarrassera aussi des applications de type « jeu de poker et casino gratuit » pullulant actuellement sur la toile, entre autres Swiss Casino, Golden Casino, GV AbsoluCasino, Poker 770."


HijackThis

Développé par Trend Micro, il permet de générer un résumé des objets présents sur la machine, aussi bien les ActiveX, les barres d'outils ou bien les programmes qui se lancent au démarrage de l'ordinateur. Son interface est très rudimentaire. Une fois lancé, il faut cliquer sur "Do a system scan only". Des objets apparaissent avec un "code".

Lors du lancement d’Hijackthis, il faut choisir l’option “Do a system scan only”. Le logiciel analyse :
  • R1/R0 : Les pages Internet Explorer (accueil, moteur de recherche par défaut,…) : si elles ont été modifiées, on peut le voir et les remettre par défaut. Certains espions (ainsi que les troyens) modifient ces pages. Les pages par défaut sont définies dans les options du logiciel.
  • BHO : Ce sont les modules complémentaires installés dans Internet Explorer, ainsi que les ActiveX installés ; on y retrouve par exemple Windows Update.
  • O3 : Ce sont les barres d’outils installées (exemple : Bing Bar de Microsoft). Certains espions sont sous forme de barres d’outils, comme Ask ! Toolbar par exemple.
  • O4 : Logiciels lancés au démarrage de l’ordinateur. Certains logiciels se lancent à votre insu.
  • O8 : Boutons et menu contextuels du navigateur.
  • O15 : Zones de confiances.
  • O17 : Domaines réseaux.
  • O23 : Services. Ce sont les services disponibles dans « services.msc » de la gestion d’ordinateur, accessible via le panneau de configuration (administration système).
Il suffit de cocher les objets « infectés » puis de les supprimer.

SmitFraud Fix

Ce logiciel est un « fix », il permet de supprimer les logiciels malveillants ayant infecté notamment le fichier « hosts » de Windows, la base de registre, DNS, etc. Il viendra à bout des menaces les plus courantes, à savoir AdwarePunisher, AdwareSheriff, AlphaCleaner, AntiSpyCheck, Antispyware Soldier, AntiVermeans, AntiVermins, AntiVerminser, AntiVirGear, AntivirusGolden, AVGold, Awola, BraveSentry, IE Defender, MalwareCrush, MalwareWipe, MalwareWiped, MalwaresWipeds, MalwareWipePro, MalwareWiper, PestCapture, PestTrap, PSGuard, quicknavigate.com, Registry Cleaner, Security iGuard, Smitfraud, SpyAxe, SpyCrush, SpyDown, SpyFalcon, SpyGuard, SpyHeal, SpyHeals, SpyLocked, SpyMarshal, SpySheriff, SpySoldier, Spyware Vanisher, Spyware Soft Stop, SpywareLocked, SpywareQuake, SpywareKnight, SpywareRemover, SpywareSheriff, SpywareStrike, Startsearches.net, TitanShield Antispyware, Trust Cleaner, UpdateSearches.com, Virtual Maid, Virus Heat, Virus Protect, Virus Protect Pro, VirusBlast, VirusBurst, VirusRay, Win32.puper, WinHound, Brain Codec, ChristmasPorn, DirectAccess, DirectVideo, EliteCodec, eMedia Codec, EZVideo, FreeVideo, Gold Codec, HQ Codec, iCodecPack, IECodec, iMediaCodec, Image ActiveX Object, Image Add-on, IntCodec, iVideoCodec, JPEG Encoder, Key Generator, LookForPorn, Media-Codec, MediaCodec, MMediaCodec, MovieCommander, MPCODEC, My Pass Generator, NetProject, Online Image Add-on, Online Video Add-on, PCODEC, Perfect Codec, PowerCodec, PornPass Manager, PornMag Pass, PrivateVideo, QualityCodec, Silver Codec, SearchPorn, SiteEntry, SiteTicket, SoftCodec, strCodec, Super Codec, TrueCodec, VideoAccess, VideoBox, VidCodecs, Video Access ActiveX Object, Video ActiveX Object, Video Add-on, VideoCompressionCodec, VideoKeyCodec, VideosCodec, WinAntiSpyPro, WinMediaCodec, X Password Generator, X Password Manager ainsi que ZipCodec. C'est à télécharger sur Clubic, une nouvelle fois.

ComboFix

Cet utilitaire est utilisé pour les malwares bien connus, les espions (SurfSideKick, QooLogic, et Look2Me, Winfile (Winfile.jpg) ainsi que d’autres combinaisons de ces mêmes logiciels malveillants). Il s’occupe de les supprimer. Il s'exécute uniquement en mode sans échec ! Télécharger sur le site officiel (sûr) : http://www.combofix.org/

Sophos Anti-Rootkit 

Les logiciels rootkits sont des virus particuliers : ils prennent le contrôle à un niveau plus élevé que celui de l’administrateur, et peuvent donc se cacher. Certains antivirus les détectent, mais ne peuvent pas les supprimer (ceux-ci apparaissent de nouveau au redémarrage). Bien souvent, même en ligne de commande avec les droits administrateur, il est impossible de supprimer ces logiciels. On les reconnait en général par leur nom tiré par les cheveux. Pour les supprimer du registre et du disque dur, on utilise un anti-rootkit.


Sophos Anti-Rootkit 1.5.1. est un anti-rootkit puissant, remplaçant celui de McAfee pour les versions Windows NT supérieures à 6 (Windows Vista, Windows 7). Il s’occupe de scanner le registre, le disque dur et les processus actifs. La suppression est très efficace ! Cependant, attention aux faux positifs et aux objets qui ne sont pas réellement cachés.

Et ensuite ?

La sécurité en informatique est un domaine qu'il ne faut pas prendre à la légère. D'autres dossiers paraitront dans les mois à venir pour vous aider à vous protéger. Des tutoriels plus complets sont également prévus (utilisation de Malwarebyte Anti-Malware, configuration d'Avira Antivir Free, etc). En attendant, n'hésitez pas à vous munir d'un antivirus efficace et surtout, tenez-le régulièrement à jour. N'oubliez pas de passer régulièrement votre disque dur et vos clés USB au peigne fin. Et l'ultime conseil du jour : surfez intelligemment et faites attention à ce que vous téléchargez !

Sources

Secuser

mardi 20 décembre 2011

[WinDev] Importer un Web Service

WinDev permet non seulement de créer des Web Services (en WLangage), mais aussi d'en importer d'autres, quel que soit le langage dans lequel ils ont été écrits (Java, C#, WLangage...). Le service généré via Axis2 peut recevoir des requêtes par socket, HTTP et même SOAP. C'est grâce au WSDL que WinDev va générer les types et les opérations adéquates. Une fois notre service déployé, la description WSDL est disponible. Dans le cas de "HelloAxisWorld", il se trouve (par défaut) à l'adresse suivante : http://localhost:8080/axis2/services/HelloAxisWorld?wsdl. Comme vous vous en doutez, cette URL peut varier selon la configuration de votre serveur Apache.

Lorsqu'on analyse le contenu, on peut distinguer plusieurs parties :
  • Les types : Axis2 a généré deux sortes de type pour nous. L'un correspond à ce qui sera envoyé au service Web. Il contient toutes les valeurs qui peuvent être des chaînes, des entiers, des tableaux, etc. Ensembles, ils forment un type complexe. Le second type est utilisé pour la réponse. Ils sont indépendants du langage et des machines mais se conforment à la spécification du XML Schema.
  • Les messages : il en existe deux ici - l'un pour la requête, l'autre pour la réponse. Chaque message contient une ou plusieurs parties, qui peuvent être comparées à des paramètres d'appel à une fonction dans un langage plus traditionnel.
  • Les liaisons (bindings) :  elles définissent le format des messages et le protocole utilisé pour un port.
  • Les ports : ils définissent les différentes manières de se connecter au Web Service. Chaque accès à un "endpoint" est défini par une URL.
Maintenant que c'est un peu plus clair pour vous, voyons ensemble comment importer la description dans l'environnement de WinDev.

Importer

Dans le volet "Explorateur de projets", localisez la catégorie "Webservices" puis effectuez un clic droit sur celle-ci. Choisissez alors l'option "Importer et utiliser un Webservice dans ce projet...". Remarque : si ce volet n'existe pas chez vous, rendez-vous dans le menu "Affichage", "Barre d'outils" puis "Volets". Cochez-le, ensuite déplacez-le où vous le souhaitez dans l'environnement.


Une nouvelle fenêtre s'ouvre : la première étape affiche une introduction. Cliquez alors sur le bouton "Suivant" (en forme de flèche). L'éditeur vous demande alors de saisir l'adresse du WSDL, et éventuellement des informations d'authentification (cela dépend de la configuration du serveur). Comme nous travaillons en WinDev 15, nous n'allons pas utiliser le mode de compatibilité. Lorsqu'on est prêt, on peut confirmer en terminant cet assistant. L'éditeur créera les types et les opérations pour nous.


Après un temps d'attente qui dépendra de la taille de votre service mais aussi du temps de réponse du serveur, les types et les opérations sont créés. Ils apparaissent dans la catégorie "Webservices" de l'explorateur de projet. La structure a respecté la description et on retrouve bien deux types complexes : "hello" et "helloResponse", ainsi que l'unique opération (qui renverra une chaîne de caractères).


Utiliser 

Il ne nous reste plus qu'à "consommer" ce service. Et pour cela, il va falloir saisir du code...


Il faut tout d'abord déclarer deux "variables". L'une contiendra la réponse, l'autre est utilisée pour passer les paramètres à l'opération. La seconde contient toutes les valeurs à définir. Dans notre cas, nous devons renseigner un nom (name). Ensuite, on exécute l'opération du Web Service et on stocke le résultat dans notre variable RSHelloResp. On affiche le résultat dans une boite de dialogue de type "Information".

Si on veut être plus propre et aller plus loin, on peut rajouter un traitement d'erreur spécifique. Ici, on affichera simplement la cause de l'échec de l'appel dans une boite de dialogue de type "Erreur". Voici l'exemple:


Et après ?

Après, c'est à vous de jouer. Déployez, testez, amusez-vous à explorer les diverses possibilités qu'offrent Java et WinDev. Si vous ne possédez pas ce puissant AGL, vous pouvez toujours créer des clients dans d'autres langages comme le C# (avec Visual Studio). Bon développement à toutes et à tous.

Dossier Axis2 

Partie 1.
Partie 2.

Sources 

Importation de Webservices (documentation PCSOFT)
Microsoft : Description du langage WSDL
W3Schools
W3C

vendredi 2 décembre 2011

[Créateurs] Décès de l'inventeur du RFID

Suite aux annonces de Clubic et PC World, nous avons appris le décès de l'inventeur du RFID ("Radio Frequency IDentification), Charles Walton. Les articles des deux sites racontent l'histoire résumée de ce grand personnage.

[Java] Différentes possibilités avec l'AS/400

Les librairies Java fournies par IBM contiennent de nombreuses classes qui permettent de se connecter au système i, d'appeler des programmes CL ou RPG-LE, ou qui autorisent l'accès à la base de données DB2. Il existe même deux méthodes pour lancer un programme : l'utilisation du langage PCML (respectant un schéma XML) qui va rendre possible la conversion automatique des données, ou la méthode plus complexe qui consiste à d'abord convertir toutes les données dans le format AS/400 puis de les envoyer sous forme de bytes, ce qui est tout de suite plus fastidieux. Nous allons voir ensemble, dans cet article, les méthodes de connexion ainsi que le langage PCML.

Se connecter pour exécuter des commandes

Lorsque l'on veut exécuter des commandes ou appeler un programme sur l'AS/400, nous devons nous connecter au système. Nous allons avoir besoin du package suivant et de toutes ses classes : com.ibm.as400.access. Pour l'ajouter, une ligne de code suffit.
import com.ibm.as400.access.*;
La suite est on ne peut plus simple : on déclare une variable de type AS400 avec le nom que l'on souhaite. On doit ensuite l'initialiser avec l'un des constructeurs en lui passant certains paramètres. Dans le cas ici présent, on renseigne, dans l'ordre, l'adresse du serveur, le nom d'utilisateur et le mot de passe.
AS400 mySystem = null;
mySystem = new AS400(server, user, password);
Si aucune erreur n'est renvoyée (n'oubliez pas de tester les exceptions !), on peut commencer à exécuter des commandes ou à appeler des programmes. Plus de détails sur les différents constructeurs : AS400 Class Javadoc (v5r1).

Exécuter une commande

Puisqu'on a importé le package et toutes ses classes grâce à l'instruction "import" ci-dessus, il n'y a plus qu'à déclarer une variable de type CommandCall, qui permettra l'appel d'une commande interne. Par exemple, on souhaiterait changer les librairies utilisées par le job en cours (qui a été créé lors de la connexion). Voici un exemple de code qui effectue la déclaration de la variable mais aussi l'appel de la commande :
CommandCall cc;
cc = new CommandCall(mySystem);
cc.run("CHGLIBL LIBL(" + sMyLibraries + ")");
Ajoutez à cela le traitement des messages renvoyés par le système pour afficher les éventuelles erreurs. Sur le support d'IBM, vous trouverez un exemple concret. Voici également la documentation de la classe CommandCall (v5r2), qui vous permettra d'obtenir des informations supplémentaires sur les instructions utilisées.

Se déconnecter de tous les services

Pour mettre fin au job en cours et arrêter toutes les commandes en cours pour celui-ci, on va se déconnecter proprement du système. En effet, ne pas couper la connexion peut laisser plusieurs jobs en suspend jusqu'à saturation, ce qui rendra impossible de futures connexions. La fonction utilisée est "disconnectAllServices()"de l'objet AS400.
mySystem.disconnectAllServices();
Il est également possible de déconnecter un seul service à la fois avec la fonction "disconnectService". On spécifie en paramètre le numéro du service à arrêter (ex : PRINT, FILE, COMMAND,...).

ProgramCall Markup Language

Le langage PCML est un langage spécifique défini par IBM qui permet de décrire les programmes sur l'AS/400 (RPG-LE ou CL) et peut être utilisé dans un programme Java ou même avec Easycom for WinDev. Le document PCML est écrit avec des éléments de type XML qui respectent un certain schéma. Il va permettre d'établir les conversions de données et le passage de paramètres aux programmes du système. La documentation IBM vous donnera plus de détails sur ce langage et sur sa syntaxe: "Building iSeries program calls with PCML".

Comment obtenir ce fichier

Pour créer le fichier PCML il vous suffit, lors de la compilation, de renseigner deux paramètres supplémentaires : PGMINFO, qui prendra la valeur *PCML, et INFOSTMF qui est le chemin du fichier à générer dans l'IFS (exemple : /home/myprog.pcml). Si vous n'avez pas accès à l'IFS sous Windows, vous pouvez soit le configurer, soit copier le fichier via l'émulateur en copiant les lignes à l'écran (sélection puis copier). La compilation peut également être effectuée via une ligne de commande.

Le contenu 
     
Pour résumé, le fichier contient toutes les définitions des paramètres du programme à appeler, ainsi que la longueur. Si vous n'avez pas pu le générer, il est toujours possible de l'écrire sur base d'un existant. Pour chacun des paramètres, on peut définir le type (packed, char, zoned, etc), la longueur, la précision (pour les nombres uniquement), ainsi que l'utilisation (entrée, sortie, ou les deux). Voici un exemple de document qui décrit un programme appelé CALCC dans la librairie EMARADISP (cf. image).


Le code Java

Au préalable, il faut placer le document PCML dans le répertoire des classes de notre projet ou bien du serveur si le code s'exécute sur Apache Tomcat ou Glassfish. Ce répertoire doit être inclus dans le "classpath" du projet/du serveur. Ensuite, nous allons avoir besoin d'un objet de la classe ProgramCallDocument, que l'on déclare dans le code.On va la lier au système et définir les différents paramètres au moyen de fonction "set". On récupérera les paramètres de retour avec des fonctions de type "get". Voici un code d'exemple.
ProgramCallDocument pcml = null;
pcml = new ProgramCallDocument(mySystem, "PROGRAM");
pcml.setValue("PROGRAM.PARM1", s);
pcml.setValue("PROGRAM.PARM2", new Integer(5));
pcml.setValue("PROGRAM.PARM3", new Integer(0));

// ...

if (pcml.callProgram("PROGRAM") != true)
{
	// handle error.
}
else
{
	variable = pcml.getValue("PROGRAM.PARM3") + "#";
}
Explications :
  • On a déclaré une variable de type ProgramCallDocument et on l'a liée au système. On a également indiqué le nom du programme, qui est en fait lié à l'élément <program> dans notre document PCML.
  • On a utilisé plusieurs fois la fonction "setValue" pour définir les différents paramètres. Pour chacun, il a été obligé de spécifier le nom du programme ainsi que le nom du paramètre, pour faire référence aux différents éléments du document.
  • On appelle la fonction "callProgram" de l'objet ProgramCallDocument en spécifiant à nouveau le nom du programme à appeler. La fonction renvoie vrai ou faux pour indiquer si tout s'est bien passé.
Pour plus de détails sur la classe et ses fonctions, vous êtes invité à consulter la documentation Java officielle qui se trouve ici : ProgramCallDocument Class Javadoc. Comme pour tous les autres liens, c'est en anglais uniquement.

Se connecter à la base de données

Cette opération est réalisée grâce au pilote JDBC fourni par IBM. La méthode de connexion avait déjà été décrite dans un article sur ce blog : "Se connecter à un système AS/400". Cependant, des propriétés supplémentaires ont été définies dans une variable de type Properties, pour redéfinir notamment la library list (sorte de "path" sur l'AS/400) et le système de convention pour SQL. Le nom d'utilisateur et le mot de passe y sont également stockés.
p.put("user",mainProp.get("user").toString());
p.put("password",mainProp.get("pwd").toString());
p.put("naming", "system");
p.put("libraries", slib);    
DriverManager.registerDriver(
   new com.ibm.as400.access.AS400JDBCDriver()
);

conn = DriverManager.getConnection(
   "jdbc:as400://" + server, p
);
Choisir d'utiliser le système de convention interne à l'AS/400 permet d'exécuter des requêtes en indiquant le nom de la bibliothèque suivi du nom de la table. Par défaut, le driver JDBC est configuré pour utiliser l'appel standard "schéma.table". Grâce aux propriétés, on a donc modifié le comportement du pilote.

Et après ?
 
Vous voilà maintenant prêts pour générer un web service qui se connecte à l'AS/400, ou même un simple programme. L'avantage d'utiliser Java ? Il sera multiplateforme puisque la machine virtuelle peut s'installer sur tous les systèmes d'exploitation du marché (Linux, Windows, Mac OS X). Dans la dernière partie de ce dossier, vous apprendrez à appeler votre web service fraichement développé. Revenez donc dans quelques jours pour la suite... et la fin ! Bon développement à toutes et à tous.


Quelques liens :

mercredi 30 novembre 2011

[Divers] Contact avec MemUp!

Après avoir constaté les mêmes bugs sur trois disques multimédias de la même série chez MemUp!, et après avoir récupéré le disque dur d'un quatrième parce que l'interface ne fonctionnait plus (pas de démarrage du logiciel interne), je me suis donc dit que j'allais prendre contact avec le service technique. 


Les problèmes cités ici concernent le MediaDisk LX Series en NTFS. Premièrement, il y a un défaut dans l'indexation des fichiers, soi disant parce que le disque a été formaté dans un système de fichiers différents. Deuxièmement, il y a un souci avec la pause : laissez là activée trop longtemps et au retour, vous aurez la mauvaise surprise de voir votre disque multimédia planter. Troisièmement, l'interface est caduque et n'affichera jamais tous les fichiers d'un seul coup puisqu'il faudra descendre pour voir la suite ; dans ce cas, il vaut mieux ne pas trop remplir les répertoires. Petite remarque supplémentaire mais qui n'est pas vraiment importante : la faute d'orthographe flagrante au démarrage : "initiazing", au lieu de "initializing". 

Seuls les deux premiers bugs et la faute d'orthographe ont été signalés. 
Madame, Monsieur, 

Suite aux divers bugs présents sur cette série de disques, je me demandais pourquoi aucune de vos équipes n'avait travaillé sur le développement d'un firmware réglant les problèmes. En effet, on peut compter au minimum deux problèmes réccurrents, qui sont la disparition de fichiers sur système NTFS (mauvaise indexation) et plantage du disque si la pause est trop longue. Saviez-vous qu'il y a aussi une faute d'orthographe lors de initialisation du disque ? Je ne comprends pas pourquoi vous ne tentez pas d'améliorer vos produits les plus instables par de simples mises à jour qui régleraient beaucoup de choses à mon sens. 
La réponse est hasardeuse :
Bonjour,
Le MediaDisk LX series ne fonctionne qu’en FAT32 uniquement. Au besoin utiliser le logiciel HP sur ce lien : http://www.commentcamarche.net/telecharger/telecharger-3673527-hp-usb-disk-storage-format-tool . Il sert à formater l’espace de stockage du lecteur. Choisir FAT32 non rapide.

Quelle est la faute que nous puissions la signaler ?

Il n’y a pas de mise à jour car le chipset (processeur) de ce modèle est conçu pour lire les vidéos de type DIVX de 700Mo et les extractions de DVD Vidéos principalement. Ce qu’il fait très bien d’une manière très silencieuse car démunie de ventilateur.
Visiblement, on ne parle pas de la même chose. On se retrouve à se poser différentes questions, qui rendent vraiment ridicule l'e-mail reçu : 
  • Pourquoi fournir des disques durs formatés en NTFS et venir sortir qu'ils ne fonctionnent qu'en FAT32 ? En fait, la vérité est que leur micrologiciel est sans doute mal fichu et qu'ils ne veulent pas "perdre de temps" à le mettre à jour. Drôle de politique...
  • Un disque dur peut très bien être formaté en FAT32 par l'utilitaire de formatage sous Windows. Les techniciens ne le savent donc pas encore ?
  • Pourquoi redemander quels sont les problèmes ? Quand on relit le mail envoyé, la question "quelle est la faute que nous puissions la signaler ?" ne devrait même pas être posée.
  • Pourquoi parler de la mise à jour de la puce de décodage alors qu'il est question ici de mettre à jour le micrologiciel qui exploite le disque dur, la puce de décodage et tout le reste ?
Après avoir à nouveau signalé les bugs, voici la nouvelle réponse du support technique, qui prétend à une saturation en NTFS et qui insiste pour le formater en FAT32. Lorsque le disque contient plus de 500 Go de données, il est fastidieux de devoir tout déplacer, formater puis de devoir tout recopier à nouveau, surtout qu'il n'est pas une flèche dans les transferts.

La réponse finale est sans équivoque : MemUp! ne veut plus prêter attention à ses disques d'ancienne génération et n'a jamais voulu le faire. Bien que ce soit une marque qui ne propose que du bas de gamme à un prix plutôt démocratique, on aurait souhaité avoir un support plus sérieux et il est clair que cela n'incite plus vraiment à se diriger vers leurs produits.

mardi 29 novembre 2011

[SQL] Date du jour - X sur DB2

Astuce! Dans vos applications, vous avez sûrement dû manipuler des dates aussi bien dans votre outil de développement que dans une requête SQL. Sur DB2, pour récupérer la date du jour à laquelle on soustrait un nombre X de jours, et ce dans un format final AAAAMMJJ, soit l'année sur 4 chiffres, le mois sur 2 et les jours sur 2 chiffres également, voici comment procéder :
SELECT                                                 
  YEAR(date(days(CURRENT DATE)-x))  * 10000 +         
  MONTH(date(days(CURRENT DATE)-x)) * 100  +          
  DAY(date(days(CURRENT DATE)-x)) from sysibm/sysdummy1
La variable "x" doit être remplacée par le nombre de jours à soustraire de la date, qui est transformée en jour. La requête initiale pour obtenir la date du jour est la suivante :
 SELECT
 YEAR(CURRENT DATE) * 10000 +
 MONTH(CURRENT DATE) * 100  +
 DAY(CURRENT DATE )           
 FROM SYSIBM/SYSDUMMY1  
A présent, vous pouvez manipuler les dates sans rencontrer trop de difficultés...

jeudi 24 novembre 2011

[WinDev] TDF Tech Bruxelles 2011


A Bruxelles, chaque année a lieu le Tour de France technique de PC SOFT, qui est un séminaire gratuit pour tous les développeurs, les chefs de projets ou même les webmasters. Tous les ans la société PC SOFT met à jour son "Atelier de Génie Logiciel" (AGL) et propose aux utilisateurs de venir découvrir les points phares de leur produit. Cette fois-ci encore, la conférence a eu lieu au Kinépolis de Braine l'Alleud.

En guise d'introduction à ce TDF, une "publicité" avec l'un des nombreux clients de PC SOFT, j'ai nommé AutoSur, le professionnel de l’auto sécurité en France. Deux responsables expliquent comment WinDev les a aidés et les aide encore actuellement. Après cette courte vidéo, les présentations sont faites, les choses sérieuses peuvent enfin commencer.

Nouveautés de WinDev 17

Champs et interface

De nouveaux champs font leur apparition, tels que le champ organigramme ou encore le bouton à flèche. L'organigramme est très intuitif : on peut se déplacer à la main, zoomer,... Le bouton à flèche permet de réunir plusieurs actions dans un seul bouton : lorsque l'on clique, celles-ci apparaissent dans un menu déroulant.

Un champ très intéressant fait également son apparition : le ruban. Introduit dans la version 2007 de Microsoft Office, le ruban permet de réunir une multitude d'options et aussi de faire apparaitre ou disparaitre l'une ou l'autre action lorsque l'on sélectionne un objet à chaque fois différent.

Des "toasters" peuvent être ajoutés à l'application. Ce sont des messages furtifs qui apparaissent sans gêner l'utilisateur et ne requérant aucune interaction de la part de l'utilisateur.

On notera enfin quatre nouveaux gabarits, ainsi que les améliorations apportées aux différents champs, telles que l'apport du double masque - un pour l'affichage, un pour la saisie -, l'impression directe des champs planning, les colonnes "conteneur" pour les tables hiérarchiques, la mémorisation des tris et filtres sur table et les nouvelles "FAA" sur les chemins de fichiers par exemple.

Installations
     
Les installations ont été améliorées. Pour les applications avec Live Update, elles supportent désormais le protocole HTTPS ainsi que l'utilisation de proxy. La fréquence de vérification de mise à jour peut être modifiée, ainsi que l'affichage du message d'avertissement lorsque l'application n'a pas pu rechercher ses mises à jour : en effet ce message pouvait être très perturbant pour l'utilisateur. Et pour couronner le tout, les installeurs sont personnalisables avec les gabarits.

Support de l’Unicode, et jusqu'à 64 langues pour un projet

Désormais WinDev supporte totalement l’Unicode et chaque projet peut même être configuré pour utiliser des chaines de type Unicode. On peut donc directement afficher des messages en chinois ou même en hébreu, en russe, ... Aussi, on peut créer des programmes supportant jusqu'à 64 langues différentes. Ça c'est de l'internationalisation !


     
Et pour WebDev?

Améliorations globales de WebDev
  • Meilleure gestion des ancrages pour que le site s'adapte au navigateur.
  • RAD applicatif pour créer des sites web rapidement et déjà complets.
  • L'utilisation de photos animées, composée de plusieurs autres photos.
  • Le support du HTML 5 : intégration de vidéos sans lecteur flash, par exemple.
  • Glisser-déposer dans les champs de type "upload" depuis l'explorateur.
  • De nouveaux champs : code-barres, notation (également sous WinDev).
  • Gestion des zones d'édition pour la mise en page globale du site.
  • Zoom automatique sur image.

          
Voyons maintenant les apports communs...

Editeur de code

  • CTRL+[molette souris] : zoomer/dézoomer sur le code.
  • Nouvelles procédures WLangage.
  • Nouvelle manière d'écrire la syntaxe pour les tableaux à plusieurs dimensions.
  • Saisie directe de n'importe quel alphabet dans l'éditeur (Unicode natif).
  • ...

Environnement de développement

  • Possibilité d'épingler des projets pour qu'ils apparaissent en premier dans la liste des projets disponibles, lorsqu'on lance WinDev.
  • De nouveaux volets dont "projets récents et épinglés" pour pouvoir basculer vers un autre projet quand on le souhaite.
  • Sauvegarde de l'environnement pour ne plus perdre sa configuration.
  • Renommage du projet et de ses dépendances.
  • Possibilité de contacter le service commercial de PC SOFT via le menu "?".
  • Possibilité de garder la fenêtre "Description du champ" ouverte tout en changeant de sélection.
  • Nouveaux masques de saisie pour les champs.
  • Améliorations de la gestion des tableaux et des colonnes.
  • Aperçus directs sur les redimensionnements et les alignements.
  • Possibilité d'activer/désactiver la fenêtre "saviez-vous" lors de la création du projet.
  • Audits améliorés.
  • Nouveau profiler pour les synthèses de performance à propos de votre application. Une analyse des performances est désormais réalisée pour tous les threads de l'application !
  • Et encore bien d'autres !

Nous pourrions continuer longtemps à énoncer toutes les nouveautés des trois logiciels. En effet, nous avons omis de préciser que WinDev Mobile apporte des améliorations quant au développement sur iOS, Android et sur Windows Phone. Des nouveautés sont également prévues au niveau de la base de données HyperFileSQL, et les performances globales de la suite logiciel ont été améliorées, tant au niveau du développement que de l'exécution (JIT par exemple).

A ce stade nous pouvons nous contenter de remercier PC SOFT : il fournit chaque jour des améliorations réellement bénéfiques à son AGL. Et en plus de cela, nous recevons des petits "goodies" (farde, posters, bics, objets de décoration) ainsi qu'un T-Shirt. Rendez-vous l'année prochaine pour la version 18.

N'hésitez pas à consulter les 917 nouveautés de ces versions. 

Crédits photo : PC Soft.

lundi 14 novembre 2011

[Utilitaires] Mise à jour de la section "Utilitaires"

Un simple article pour vous signaler une mise à jour de la rubrique "Utilitaires", dans laquelle vous retrouverez de nouvelles catégories : multimédia, graphisme,... C'est par ici !

lundi 7 novembre 2011

[Java/WinDev] Performances d'un Webservice

Comme nous avons une ligne de 1 Mbit/s qui relie les bureaux de Bruxelles à la distribution, j'ai testé les bénéfices apportés par l'utilisation d'un web service pour de grosses requêtes. Le web service exécute une multitude de requêtes pour récupérer diverses informations pour un ensemble d'articles. Étant donné que tout cela est top secret, vous pourrez uniquement constater le type de performance que cela peut amener. Attention : ces résultats sont dépendants de notre contexte d'utilisation !


A gauche, on retrouve les premiers appels : cela comprend l'appel du web service, l'exécution de celui-ci et l'affichage des données dans un champ de type "Table" dans WinDev. Le tableau de droite mesure le temps de l'appel des différentes fonctions et l'affichage des données : pas d'appel du web service cette fois.

Le tout a été exécuté sur un serveur distant. Dix résultats ont été retenus ; ils ont été encodés les uns à la suite des autres. Les tests ont été effectués entre midi et 13h30, tous se suivant. La ligne grise affiche le temps moyen en secondes par rapport aux dix valeurs enregistrées. Dans notre cas, la vitesse se verrait augmentée de 5x à 15x, selon les critères utilisés dans notre recherche et les informations à rapatrier (taille). C'est non négligeable !

Le prochain article traitera de la création d'un web service Java, de la personnalisation de la connexion au système AS/400 et de l'intégration de ce même service dans l'environnement WinDev.

mercredi 26 octobre 2011

[Java] Axis2 et Web Service, Partie 2

Si vous n'avez pas lu la première partie, voici un petit résumé de ce qui s'est dit : Axis2 est un moteur permettant de gérer et d'exécuter des Web Services, et peut être installé sur un serveur Apache Tomcat. Nous avons réalisé cette installation et téléchargé le plugin pour NetBeans afin de permettre le développement et le déploiement de services.

Cette deuxième partie va expliquer comment créer un projet de base dans l' IDE, comment le déployer et comment le tester. Une troisième partie sera également disponible d'ici quelques jours, dans laquelle on détaillera la connexion à l'AS/400 pour retourner des valeurs provenant d'une table de notre base de données.

Créer un projet dans NetBeans

Dans le logiciel, choisissez le menu "Fichier" puis "Nouveau projet...". Créez un projet de type Application Java, nommez-le comme bon vous semble, choisissez son emplacement, et décochez la case qui permet de créer une classe principale (main) par défaut.

Pour vous simplifier la tâche, voici des valeurs que vous pouvez saisir :
  • Nom du projet : AxisHello.
  • Localisation : C:\AxisHello.
Une fois le projet créé, on ajoute un package que l'on nomme comme bon nous semble. Par exemple, "axishello". Ensuite, on effectue un clic droit sur celui-ci et on choisit d'insérer un nouveau fichier. Le menu contextuel "Nouveau" ne propose pas le type souhaité, donc on choisit "Autre...". Une fenêtre s'ouvre : dans la liste de gauche, on sélectionne la catégorie Web Services. A droite, on sélectionne le type Axis2 Web Service from Java.

L'écran d'après propose de créer un service vide ou bien depuis une classe existante. Pour notre exemple, nous avons choisi de générer un service totalement vide. Nous l'avons appelé "HelloAxisWorld". On dispose donc d'un fichier Java avec la classe du même nom que notre service. On y retrouve une fonction de base qui retourne une chaine de caractères pour dire bonjour. Un paramètre est passé à cette fonction.
   

Déployer le service

Pour déployer sur notre serveur Apache Tomcat, il suffit d'effectuer un clic droit sur le service puis de choisir l'option "déployer sur le serveur".
  

Si aucun message d'erreur ne s'affiche, le déploiement a été effectué. Il n'y a plus qu'à tester en saisissant l'adresse correcte dans le navigateur. A noter que NetBeans propose aussi un menu contextuel sur chaque opération pour la tester directement ("Tester l'opération dans le navigateur") !

Voici l'adresse par défaut pour exécuter l'opération "hello" : 

Le résultat obtenu est présenté dans le format XML. 

Créer d'autres méthodes

Le fait d'ajouter des méthodes dans la classe va automatiquement mettre à jour la structure du service. Il ne restera plus qu'à le déployer à nouveau pour que les modifications soient prises en compte.

Sources

"Creating Apache Axis2 Web Service on NetBeans"

[Java] Axis2 et Web Service, Partie 1

Comme certains développements sont un peu en suspend, nous cherchons des solutions pour améliorer l'échange d'informations entre deux serveurs reliés par une connexion assez lente. En attendant de se voir augmenter la vitesse, nous avons testé Axis2, qui est un projet officiel d'Apache. Mais que cache ce nom plutôt étrange?

Axis, pour déployer vos Web Services

Axis2 est un moteur permettant de gérer des Web Services et leurs WSDL (description du service, des méthodes de celui-ci et des types utilisés). La version 1.6.1. sera utilisée pour expliquer les différentes étapes. Comme le tout est en état d'expérimentation, c'est article sera basique, et détaillera uniquement les opérations qui ont été effectuées jusqu'à présent, sans rentrer dans les détails d'administration. Pour déployer le service, c'est le logiciel NetBeans 7.0.1. qui a été retenu.

Quelles sont les versions utilisées pour les test ?

Au niveau des versions du serveur, il n'y a rien de très glorieux. En effet, Apache Tomcat 5.5. s'exécute sur un JRE 1.5, mise à jour 7. Il a donc fallu s'adapter et télécharger le JDK équivalent pour s'assurer qu'il n'y ait aucune erreur ! Celui-ci a été intégré dans l' IDE via l'option "manage platforms". Enfin, la base de données exploitée est DB2 UDB pour AS/400 (V5R3) et l'accès se fait grâce aux modules JDBC fournis dans "Java Toolbox", qu'on peut retrouver ici : télécharger la dernière version de JTOpen. Une fois l'archive sélectionnée, elle peut être décompressée dans un dossier quelconque sur la machine de développement et dans le dossier "ext" des classes du JRE (\Java\jre1.5.0_07\lib\ext).

Installation d'Axis2 sur Tomcat

Pour installer Axis2, une méthode du tutoriel officiel a été suivie. Elle consiste à placer l'archive "war" dans le dossier d'applications d'Apache, puis de redémarrer le serveur pour que l'installation se fasse automatiquement. Une fois cette opération effectuée, on obtient un sous-répertoire "axis2" dans notre dossier "webapps". Cliquez ici pour télécharger l'archive de la version 1.6.1. (note : la v1.6.2. est disponible depuis avril 2012). Elle contient le fameux fichier de type "war" qu'on va placer dans notre dossier "webapps" (voir image).
 

Ensuite, on peut redémarrer Apache Tomcat. L'installation d'Axis 2 devrait avoir été effectuée. On peut donc ouvrir notre navigateur et parcourir la page http://localhost:8080/axis2 (par défaut). On devrait obtenir quelque chose de similaire :
   

En cliquant sur le lien "Validate", on obtient un diagnostic qui nous informe de l'état de notre installation. Si toutes les dépendances ont été trouvées alors on devrait normalement obtenir une page sans aucun message rouge. Cependant, il se peut qu'on obtienne le message suivant : "There was a problem in Axis2 version service , may be the service not available or some thing has gone wrong. But this does not mean system is not working ! Try to upload some other service and check to see whether it is working". Le mieux à faire est de tester le web service fourni avec Axis2 pour voir s'il fonctionne : http://localhost:8080/axis2/services/Version. On doit normalement obtenir un message qui indique la version utilisée, similaire à celui-ci :


Le mot de passe et le nom d'utilisateur peuvent être modifiés dans le fichier "axis2.xml". Les paramètres concernés sont "userName" et "password".


Configuration sous NetBeans

Dans notre cas, le serveur est distant, mais cela ne pose aucun problème pour déployer les services via Axis2. Cependant, de base NetBeans n'est pas capable de le faire car le plugin (module supplémentaire) n'est pas installé par défaut, puisque uniquement disponible dans le dépôt de développement. Nous allons voir ensemble quelles sont les étapes à effectuer pour pouvoir développer et déployer les services via l' IDE. 

Créer le serveur Apache

A moins que vous n'ayez déjà installé un serveur en local, il est encore possible d'en ajouter un vous-même, via l'onglet "Services" du logiciel. Un clic-droit sur la catégorie "Serveurs" fait apparaitre un menu avec une seule option : "Ajouter un serveur..." (ou en anglais, "Add server..."). On clique alors sur celle-ci, pour obtenir une nouvelle fenêtre dans laquelle il est demandé de saisir quelques informations.
  

  • Choisissez le type : dans notre cas, il s'agit d’ Apache Tomcat 5.5.
  • Emplacement du serveur : c'est le dossier où a été extrait/installé Tomcat (par exemple, C:\Tomcat-5.5, voire un chemin UNC).
  • Nom d'utilisateur et mot de passe : il faut que l'utilisateur que l'on saisisse ait le rôle "manager". On peut vérifier cela dans le fichier "tomcat-users.xml" du répertoire "conf".
Pour nos tests, nous n'avons pas besoin de la fonction de démarrage ou d'arrêt du serveur. Ne vous inquiétez pas si vous obtenez un message d'erreur indiquant que les scripts batch n'existent pas. 

Télécharger et installer le plugin Axis2
  • Effectuer les mises à jour de Netbeans avant de procéder.
  • Après redémarrage de l’EDI, sélectionnez le menu "Outils" puis "Plugins".
  • Dans l'onglet "Paramètres", cliquez sur "Ajouter" pour créer un dépôt.
  • Pour le nom, on peut utiliser "Development UC".
  • Une fois le dépôt ajouté, il faut se rendre dans l'onglet "Plugins disponibles" et recharger le catalogue. Ensuite, une recherche avec le mot-clé "axis2" permettra de trouver rapidement ce que l'on cherche.
  • Il suffit de cocher le plugin qui nous intéresse puis de cliquer sur "Installer", et le tour est joué.
  • Ne pas installer les deux mises à jour suivantes proposées par NetBeans car cela pourrait rendre l’installation instable.
  • Désactiver le dépôt pour s’assurer qu’aucune mise à jour de type “développement” ne viendra s’ajouter par la suite.
___
Alternative pour l’installation du plugin

Si le dépôt ne répond pas, une autre solution consiste à télécharger le plugin sous forme de fichier portant l’extension “.nbm”. Ce fichier se situe à l’adresse suivante et une copie sera disponible sous peu sur mon FTP personnel : Axis2-Module.

Sauvegardez ce plugin n’importe où sur votre ordinateur, ensuite lancez l’EDI et rendez-vous dans le menu “Tools” puis “Plugins”, comme dans l’étape précédente. La différence est que vous devez vous rendre dans l’onglet “Downloaded”. Cliquez ensuite sur le bouton “Add Plugins” afin d’ouvrir une nouvelle fenêtre dans laquelle vous choisirez le fichier précédemment téléchargé. Une fois le fichier lu, il ne vous reste plus qu’à cliquer sur le bouton “Install”, accepter les termes de la licence et le tour est joué !

Configurer le plugin Axis2

Dans les options de votre éditeur Netbeans, un nouvel onglet “Axis2” apparait si le module a bien été installé. Il faut y définir trois choses :
  • L'emplacement du dossier Axis, dans lequel on retrouve "WEB-INF", un sous-dossier contenant nos services déployés. Pour nous, il s'agit de : ...\Tomcat 5.5\webapps\axis2.
  • L'URL d'Axis2 : par défaut, il s'agit de http://localhost:8080/axis2
  • Le nom d'utilisateur et le mot de passe pour se connecter à Tomcat Manager. Il est bien sûr recommandé d'utiliser ce dernier, donc on peut cocher la case. Attention : l'utilisateur doit posséder le rôle "manager" sur le serveur, sans quoi cela risque de ne pas fonctionner !

Attention : à partir de Netbeans 7.4, lorsqu’on sauvegarde les paramètres, les options définies dans l’onglet Axis2 ne sont pas sauvegardées. En fait, Netbeans ne crée pas le fichier de configuration du module et donc, à chaque fois, on se retrouve avec les options par défaut. Pour pallier ce problème, il faut effectuer les manipulations suivantes (pour Windows 7 et 8) :
  • Se rendre dans : %USERPROFILE%\\AppData\Roaming\NetBeans\7.4\config\Preferences\org\netbeans\modules.
  • Créer un sous-dossier “websvc”.
  • Créer un fichier “axis2.properties”.
  • Ajouter les propriétés suivantes (doubler les slashs pour le répertoire de déploiement) :
AXIS_DEPLOY=
AXIS_URL=
TOMCAT_MANAGER_PASSWORD=
TOMCAT_MANAGER_USER=
  

Créer notre premier Web Service

Nous verrons comment créer un service dans la partie 2 de cet article. En attendant, si vous avez un problème de configuration, n'hésitez pas à partager vos soucis, peut-être pourrons-nous les résoudre ensemble.

Le tutoriel "Creating Apache Axis2 Web Services on NetBeans IDE" a servi de source, comme beaucoup d'autres sites. En effet certaines parties de cet article pointent vers diverses documentations très riches. Si vous ne les avez pas remarqués, vous pouvez partir à leur recherche.

jeudi 13 octobre 2011

[C] L'inventeur du C, Dennis Ritchie, est décédé

C'est en lisant les news que nous apprenons le décès de Dennis Ritchie (Dennis McAlistair Ritchie). A 70 ans, la maladie l'a lui aussi emporté, mais aucun site ne détaille la nature de celle-ci. Cette personne, qui ne vous dit peut-être rien, n'est autre que l'inventeur du langage de programmation C, et l'un des plus grands contributeurs dans le développement du système Unix (dans les années 70). Finalement très peu connu, on ne peut nier qu'il a inventé un langage qui a révolutionné la programmation à l'époque. Le but était d'améliorer le langage B inventé par Ken Thompson. Avec l'un de ses collègues, il rédigera le livre de référence "The C Programming Language". Il a aussi reçu un award et une médaille dans les années nonante : le Turing Award en 1983 et la National Medal of Technology 1998 (21 avril 1999).

Le C est encore un langage utilisé de nos jours, même si le C++ a pris le "dessus" (tout en ayant repris la syntaxe de base). Enfin, certaines hautes-écoles et universités proposent encore l'apprentissage de ce langage dans leur cursus. On se souvient tous des déboires que l'on a pu avoir avec les pointeurs et les erreurs de segmentation.


mardi 11 octobre 2011

[SQL] Séquences sur DB2 400

Pour vous, impossible de créer une clé avec un incrément automatique ? Vous pouvez alors utiliser un objet qu'on appelle couramment "séquence". Celui-ci correspond en fait à une suite d'entiers que l'on peut manipuler et même "configurer" de sorte à ce qu'elle s'incrémente de telle ou telle manière. C'est une très bonne solution pour faire face aux problèmes de concurrence.

Sur l'AS/400, lorsque l'on crée une séquence, on dispose d'un objet de type *DTAARA, auquel on peut également attribuer des droits d'accès.

    
Créer la séquence

La base de données DB2 UDB permet l'exécution de requêtes écrites en langage SQL. Comme sur Oracle, on peut utiliser la syntaxe suivante :
CREATE SEQUENCE ma_sequence
De cette manière, la séquence "ma_sequence" va être créée dans la bibliothèque QGPL. Il est bien sûr possible de changer ça en spécifiant dans quelle bibliothèque on souhaite la créer. La syntaxe est, de ce fait, légèrement différente :
CREATE SEQUENCE ma_lib/ma_sequence
La séquence sera donc créée dans "ma_lib". Dans l'exemple ci-dessous (image), la bibliothèque utilisée est "TSTTRI", une bibliothèque de test. Une même séquence peut donc se retrouver à deux endroits différents, et l'accès à l'une d'entre elles se fera grâce à la "Library List" (pour ceux qui ne connaissent pas, c'est une sorte de "path" dans lequel le système recherche lorsque l'on veut accéder à un programme, un objet, etc).

Des options pour la création 
CREATE SEQUENCE ma_lib/ma_sequence
 START WITH 500
 INCREMENT BY 1
MAXVALUE 1000   
  • L'option "start with" permet d'indiquer quelle est la valeur initiale de la séquence. Elle commencera donc ici à 500.
  • L'option "Increment by" permet d'indiquer de combien la valeur doit être augmentée à chaque appel de "next value".
  • L'option "Maxvalue" permet de fixer une limite qui, si elle est atteinte, réinitialise la valeur de la séquence à sa valeur d'origine (dans notre cas, 500).
  • Le cache peut être désactivé : cela dépendra du contexte d'utilisation. Pour ne pas se servir des valeurs mises en cache, on ajoutera la clause NO CACHE lors de la création.
Accéder à la valeur suivante 
SELECT NEXTVAL FOR ma_sequence FROM SYSIBM/SYSDUMMY1
La table "SYSDUMMY1" est un peu équivalente à la table "DUAL" dans Oracle : elle ne contient qu'une seule ligne. Attention : une restriction est imposée ici : impossible de spécifier le nom de la bibliothèque devant le nom de la séquence, ce qui implique que, lors de l'exécution de cette requête, la séquence doit se trouver dans l'une des bibliothèques de votre "library list". 

Accéder à la valeur courante (session en cours) 
SELECT PREVIOUS VALUE FOR TESTSEQ FROM SYSIBM/SYSDUMMY1
La valeur précédente ne peut être récupérée que si la séquence a déjà été incrémentée durant la session. De plus, il est toujours impossible de spécifier le nom de la bibliothèque dans la requête, ce qui implique que celle-ci soit dans la "library list". C'est dommage mais en soi ce n'est pas tellement contraignant si on utilise peu de librairies (par exemple, une pour la production et une pour le test). 

Récupérer la prochaine valeur pour une insertion 

Supposons que vous voulez utiliser "ma_sequence" pour insérer un numéro de manière automatique dans une table de commandes (MESCOM) où l'on a deux colonnes : NUMCO et NUMCLI. Les deux insertions seront effectuées avec la même requête, le client ayant fait deux commandes. Voici ce qu'il faut alors exécuter :
INSERT INTO MESCOM (NUMCO, NUMCLI)
VALUES (NEXT VALUE FOR TEST.ORDER_SEQ, 12)
La séquence sera initialisée à 500 lors de la première insertion. Sa valeur sera incrémentée lors de la deuxième : on se retrouvera avec deux lignes dans la table, la première ligne sera la commande 500 pour le client 12, quant à la seconde, il s'agira de la commande 501 pour le même client. 

Modifier la séquence 
ALTER SEQUENCE ma_sequence ... 
Supprimer la séquence 

Comme dans toute base de données, il faut utiliser la commande bien connue, "DROP SEQUENCE", de la manière suivante : 
DROP SEQUENCE ma_sequence
Nous voilà rassurés : nous pensions qu'il était impossible d'utiliser des séquences dans cette version de la base de données, mais finalement non, c'est plutôt une bonne nouvelle. En cherchant bien, on finit par trouver. D'ailleurs, la documentation IBM nous renseigne bien à ce niveau !
   

lundi 10 octobre 2011

[Tablette] Est-elle pratique pour la vidéo ?

Le site Les Numériques a publié une news intéressante qui laisse apparaitre quelques avantages et inconvénients quant à la lecture vidéo sur une tablette tactile. Et vous, quel est votre avis sur la question ? Pensez-vous que la tablette tactile pourra un jour remplacer un vrai ordinateur portable ou alors pensez-vous que l'ergonomie ne le permettra jamais ? Souvenez-vous aussi de notre article à propos de la suite Documents to Go, qui permet de gérer les fichiers Word et Excel, mais qui semble encore fort incomplète : est-ce que l'auteur du logiciel arrivera à le faire évoluer suffisamment pour que travailler sur une tablette devienne possible ? Il y a de quoi rester sceptique...

[MP4] Philips Go Gear Ariaz 2... grosse déception!


Que dire du Philips GoGear Ariaz 2 si ce n'est "grosse déception". En effet, force est de constater que certains constructeurs vendent parfois des produits sans vraiment les avoir bien testés, surtout au niveau stabilité. Du moins c'est le cas pour certaines séries, et dans cet article seront répertoriés deux lecteurs sur lesquels le problème, décrit dans ce texte même, a été constaté. Étant donné que Philips ne s'est jamais prononcé sur celui-ci, et que visiblement aucun utilisateur n'a eu à rapporter un quelconque bug, il est temps de prévenir que ce lecteur peut visiblement être équipé d'une mémoire flash plutôt capricieuse. Cela va de la corruption des données à la disparition de fichiers lorsque l'on parcourt la liste via le baladeur ou via l'explorateur. Ce problème entraîne même un souci de montage dans le logiciel Philips Songbird, et on se retrouve avec des fichiers "non reconnus"... Attendez-vous à le reformater quelques fois. Par ailleurs les mises à jour du "firmware" (micrologiciel) n'arrangent rien à ce défaut.

J'ai donc une première fois effectué un changement du lecteur. J'ai eu la certification que c'était bien un nouveau puisque Philips renvoie un baladeur en cas de panne. Ils n'ont donc rien dit, c'était peut-être un signe avant-coureur : étaient-ils au courant du dit bug ?

J'ai abandonné quand le deuxième lecteur a présenté le même problème. C'en était trop... Et c'est bien dommage, car Clubic l'avait plutôt bien noté dans son test, et les impressions étaient plutôt bonnes lors des premières utilisations (très bon son, interface simple d'utilisation, radio, etc). Cependant, on ne peut jamais prévoir que l'on va tomber sur une série défectueuse. Le pire, c'est que la communauté semble garder le silence, ou alors une malédiction s'est abattue sur moi.
      
Si vous aussi vous avez rencontré des soucis avec le Philips GoGear Ariaz 2, n'hésitez pas à partager votre histoire, et nous pourrons peut-être publier le numéro de série sur ce billet !

Numéros de série des lecteurs testés :
  • SA2ARA08K/2 VN1B1048036496.
  • SA2ARA08K/2 VN1A1049040221.

jeudi 6 octobre 2011

[Cloud] Un autre service de stockage : Wuala

Je viens de tomber par hasard sur un autre service de stockage de fichiers en ligne qui s'appelle Wuala. Il a été développé en association avec LaCie et propose des tarifs plutôt intéressants pour du stockage. Moins intéressant que Google au niveau du prix, meilleur au niveau des fonctionnalités et de la synchronisation. Il surpasse clairement DropBox et vient carrément tacler Amazon Cloud Drive. Les 2 premiers Go sont gratuits !


"Wuala, le stockage en ligne sécurisé conçu en Suisse, couvre toutes les exigences liées au stockage en ligne professionnel et offre une gamme complète de fonctions : sauvegarde, synchronisation, partage, accès aux fichiers, et cela, où que vous soyez. Wuala dispose d’un concept de sécurisation unique : contrairement à d’autres services de stockage en ligne, l’ensemble des fichiers sont cryptés directement sur l’ordinateur de l’utilisateur et le mot de passe n’est jamais transmis. Personne – pas même Wuala – ne peut accéder aux fichiers de l’utilisateur sans son autorisation. Wuala repose sur une technologie révolutionnaire issue des recherches menées par l’ETH (Institut fédéral de Technologie) de Zurich, en Suisse. 


Wuala est développé et géré par LaCie AG à Zurich. En 2009, Wuala s'est associé à LaCie, fabricant français de périphériques de stockage, pour travailler sur l'avenir du cloud storage." - Wuala.com