Informix Magazine N°3

Transcription

Informix Magazine N°3
Guide Share France
Informix Magazine
Septembre 2015
Application mobile IBM Worklight et 4GL
Linux m’a tué!
Président
Eric Vercelletto
Editeur
Olivier Bourdin
Table des matières
Contributeurs
Editorial: Où va-t-on ?
2
Yoram Benchetrit
Informix Roadshow, cuvée Paris 2015: une très bonne année
3
Linux m’a tué ! Votre Linux est-il prêt pour Informix ?
4
Fonctionnalités de suppression de données TimeSeries
6
Application mobile IBM Worklight et webservices 4GL
9
WW Informix L3 Support
IBM Analytic Platform
Olivier Bourdin
WW Informix L3 Support
IBM Analytic Platform
Eric Fauré
Voyage au centre de votre applicaton Informix 4GL
13
Approfondir la configuration SMX
22
Frame – Groupe Feeder
Derniers articles
24
Eric Vercelletto
Vidéos
24
Liens utiles
24
Informix blogs
24
Linux System Administrator
Iris Corporate
Jacques Rage
Directeur Général
BeGoodenIT Consulting
Abonnement
Cette newsletter est envoyée à des adresses
enregistrées. Si vous souhaitez respectivement
vous abonner ou vous désabonner, veuillez
envoyer un mail avec pour sujet « ABONNER » ou
« DESABONNER » à l’adresse email :
[email protected]
Site Web du GSF
Le
Groupe LinkedIn Informix France
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 1
Editorial: Où va-t-on ?
Par Eric Vercelletto, Président du Guide Share France – Groupe Informix
Quand nous nous sommes quittés la dernière fois, la version 12.10 xC5 d’Informix
sortait tout juste, coïncidant avec la publication du numéro deux d’Informix
Magazine. Un trimestre s’est écoulé depuis, voici donc le moment de faire le point
sur la route parcourue dans le monde IBM Informix.
Tout en conservant le cap de la fiabilité, la disponibilité et la performance en
environnement OLTP, le produit continue de s’enrichir dans des domaines bien
définis comme l’axe CLOUD, avec la fonctionnalité de multitenancy ou possibilité
de cloisonner plusieurs sous-instances Informix indépendantes, au sein d’une
seule « super-instance » Informix, à l’image d’un hyperviseur qui peut contenir
plusieurs machines virtuelles cloisonnées. Les avantages de cette solution ne sont
pas neutres et tendent à la réduction des coûts aussi bien en matériel qu’en
maintenance qui sont une question critique pour certaines implémentations.
Un autre axe de développement du produit est l’autonomie d’administration, ou
faculté d’autoréglage en temps réel du moteur. A chaque release apparait un lot
de paramètres de configuration qui peuvent être déclarés comme auto-réglables.
Un des derniers en date est l’autorégulation du BUFFERPOOL. Tous les motifs
d’accusation d’administration trop compliquée proférées à l’encontre d’Informix
disparaissent un par un à chaque nouvelle release. Ce n’est pas pour rien que l’un
des plus importants groupes de grande distribution au monde gère un parc de
plus de 25 000 instances avec une équipe de 6 DBA en 24x7x365 !
Enfin le troisième axe est de développement est l’Internet des Objets. Même si
nous nous considérons peu concernés, IoT grignote inexorablement les
différentes aires de la technologie d’information et devient chaque jour un peu
plus omniprésent. Informix adresse ce développement à la croissance brutale
avec l’intégration de NoSQL en natif depuis bientôt trois ans, offrant une
combinaison unique d’avantages déjà existants que nous connaissons tous avec la
flexibilité extrême qu’offre ce mode de programmation.
En considérant le fait qu’Informix fonctionne désormais sur Apple IOS et Android
(oui, sur votre téléphone!), en plus des plateformes ARM 6 et 7 et Intel Quark, le
potentiel est là pour créer des belles architectures dans le monde de l’entreprise,
allant du très grand au très petit.
C’est donc dans ce contexte que nous publions ce numéro 3 d’Informix Magazine,
par lequel nous voulons partager l’information qui nous parait importante pour
vous. Il comporte du vrai « bits and bytes », des sujets pour développeurs, des
sujets pour DBA ainsi que pour administrateurs-système.
N’hésitez-pas à nous faire part de vos suggestions, nous travaillons tous dans le
même but.
Bonne lecture !
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 2
Informix Roadshow, cuvée Paris 2015: une très bonne année
Par Eric Vercelletto
Inlassablement, tous les ans vers le début de l’automne, Informix Roadshow est de retour
à Paris, dans les locaux d’IBM à Bois-Colombes. Pour ceux qui n’ont jamais eu l’occasion
d’assister à cet évènement, il s’agit tout simplement d’une séance de deux jours pleins
(très pleins) de formation sur les dernières fonctionnalités d’IBM Informix, mettant
l’accent sur les sujets « bouillants » du moment.
Cette année, nous n’avons pas échappé à l’intégration du JSON/BSON comme type de données NATIF dans Informix, bien
que cette fonctionnalité ait été intégrée dans Informix depuis maintenant plus de deux ans (12.10 xC2) et que son
implémentation soit véritablement éprouvée et approuvée par des sociétés habituées à la qualité Informix.
C’est ainsi que l’IBMer Scott Pickett, alias « the Informix GlobeTrotter », nous a fait une longue mais très intéressante
présentation sur l’état de la technologie Internet of Things ou Internet des Choses dans la langue de Molière.
Il nous a démontré, précisément parce que quand on évolue dans un milieu OLTP, on n’a pas toujours le temps ni la
visibilité pour comprendre les véritables enjeux de Iot et les évolutions technologiques qui sont en train de se préparer,
en quoi Informix, aujourd’hui et demain, est un outil de choix pour implémenter très efficacement, et même dans de
nombreux cas, mieux que les autres, les nouveaux besoins en termes d’applicatifs et d’architecture.
Le reste des nouvelles fonctionnalités a été abordé dans le détail, comme le Storage Manager, les paramètres
automatiques, NoSql, TimeSeries et autres.
Un point à retenir pour l’édition de cette année est la participation en très nette progression par rapport aux dernières
années, montrant un clair regain d’intérêt vers cette technologie que les jaloux ou les ignorants n’hésitent pas à déclarer
comme moribonde.
J’allais oublier : deux des participants ont gagné respectivement un t-shirt et une chemise de l’IIUG, en répondant
brillamment à une série de questions techniques.
Dans la semaine qui suivait, Scott Pickett partait pour Casablanca au Maroc, où il a rejoué le RoadShow devant un public
passionné et avide de nouveautés, qui n’avait pas pu bénéficier de cette présentation depuis de trop nombreuses
années.
Il a également donné le RoadShow à Londres, où plus de vingt participants ont réclamé une deuxième édition du
RoadShow d’ici 6 mois.
Faisons en sorte que l’édition 2016 soit encore meilleure que celle de 2015 en égalant le score de nos amis d’outreManche !
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 3
Linux m’a tué ! Votre Linux est-il prêt pour Informix ?
Par Eric Faure, Linux System Administrator, Iris Corporate
Ceci est une histoire vécue il y a 4 semaines quelque part en Europe lors d’une migration offplace entre Informix 9.40
avec 2400 utilisateurs connectés, vers un setup Informix DS 12.10 FC4 monté sur RedHat Entreprise Linux 6.x (RHEL), le
tout dans un environnement Vmware Vsphere.
Nous avons à l’origine configuré la Machine Virtuelle Linux avec 32GB de RAM et 2GB de disque swap, en se disant
qu'avec tant de RAM le système linux ne swapperait jamais.
Malheureusement, et surtout à notre insu, un des comportements par défaut de Linux consiste à swapper sur disque les
pages-mémoire peu utilisées. Après une utilisation très intensive d'Informix (nous avions 4 heures maximum pour
déplacer plus de 500 Gb de données et rendre un système opérationnel), Linux a commencé à swapper les pages les
moins utilisées, à raison de plusieurs centaines, et ce même si la quantité de RAM disponible était encore très
importante (plus de 10 Gb disponibles). De ce fait, 2GB d'espace swap sur le disque était trop peu, et Linux a rapidement
rempli tout cet espace.
C’est alors qu’entre scène la fonctionnalité linux OOM (Out Of Memory), véritable serial-killer se terrant sournoisement
dans kernel Linux, qui lorsqu’il déclare qu’il est en pénurie de ressources-mémoire, cherche à libérer le plus d'espace
possible : le processus master d'IDS oninit étant le plus consommateur de mémoire, le sort de la victime était couru
d’avance.
Bien évidemment, il était 2 heures 45 du matin et nous étions dans les toutes dernières phases de la migration qui était
sur le point de réussir, et nous devions rendre la main aux utilisateurs des divers services des cliniques 15 minutes plus
tard !
Voici l’acte de décès dûment rempli de l’instance Informix, trouvé dans le online.log, entouré d’un grand mystère car
aucune autre explication n’était apportée.
2015-09-09
2015-09-09
2015-09-09
2015-09-09
2015-09-09
2015-09-09
02:45:35
02:45:35
02:45:35
02:45:35
02:45:35
02:45:36
The Master Daemon
The Master Daemon
The Master Daemon
The Master Daemon
The Master Daemon
PANIC: Attempting
Died
Died
Died
Died
Died
to bring system down
Ecœurés, nous avons dû annuler la migration. Nous avons trouvé le lendemain matin la signature du coupable,
apparaissant en clair dans le fichier /var/log/messages
Out of memory: Kill process 15324 (oninit) score 253 or sacrifice child
Sep 9 02:45:11 chvmidb kernel: Killed process 15325, UID 105, (oninit) total-vm:15017352kB, anonrss:80kB, file-rss:464kB
Sep
9 02:45:34 chvmidb kernel: oninit invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0,
oom_score_adj=0
Sep 9 02:45:34 chvmidb kernel: oninit cpuset=/ mems_allowed=0
Sep 9 02:45:34 chvmidb kernel: Pid: 15329, comm: oninit Not tainted 2.6.32-573.3.1.el6.x86_64 #1
Sep 9 02:45:34 chvmidb kernel: Call Trace:
Sep 9 02:45:34 chvmidb kernel: [<ffffffff810d6dd1>] ? cpuset_print_task_mems_allowed+0x91/0xb0
Sep 9 02:45:34 chvmidb kernel: [<ffffffff8112a5d0>] ? dump_header+0x90/0x1b0
Et autres injures du même tonneau !
Pour éviter ce phénomène dans un premier temps, nous avons étendu l'espace swap à 32GB.
Mais cette seule mesure, même si elle réduit la probabilité de saturation du swap, ne règle pas pour autant le problème
dans son entité, et c’est bien là le piège à éviter.
Il y a 2 paramètres du kernel importants qui réduisent voire qui empêchent le système Linux de swapper inutilement.
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 4
Le premier paramètre est vm.swappiness. Il faut tout d’abord comprendre que sa valeur par défaut de 60 provoquera le
swap de pages-mémoire ‘anciennes’ même si le système a encore une quantité très importante de RAM disponible.
Nous avons valorisé ce paramètre à 1, ayant pour effet que Linux utilisera le swap uniquement quand le système est
réellement à court de mémoire RAM.
Le deuxième paramètre est le HugePages (vm.nr_hugepages) qui permet d'utiliser des pages-mémoire de plus grande
taille, 2MB au lieu de 4KB, pour les applications qui gèrent ces pages comme Informix, mais surtout le kernel Linux
interdit de swapper ces pages mémoires.
Il est donc indispensable de bien régler ces deux paramètres du système, tout en configurant la taille du swap à une fois
la taille de la RAM, voire plus, sous peine de très mauvaise surprise, bien sûr au moment où il le fallait le moins.
Huge pages s’évalue ainsi
grep -i huge /proc/meminfo
AnonHugePages:
8192 kB
HugePages_Total:
4500
HugePages_Free:
205
HugePages_Rsvd:
0
HugePages_Surp:
0
Hugepagesize:
2048 kB
et se modifie avec la commande sysctl
sysctl -w vm.nr_hugepages=nombre de page choisi
Pour swappiness :
cat /proc/sys/vm/swappiness
60
et modifier:
sysctl –w vm.swappiness=1
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 5
Fonctionnalités de suppression de données TimeSeries
Par Gerd Kaluzinski et Olivier Bourdin
Les séries temporelles (TimeSeries) sont un moyen très efficace de stockage de données.
Dans le cas d'une série chronologique régulière, on stocke uniquement la valeur de la mesure sans stocker le timestamp.
D'où le gain important en espace de stockage. On retrouve le timestamp par décalage par rapport à la valeur défini dans
le paramètre origin lors de la création de la table. Dans le cas d'une série chronologique irrégulière, le timestamp doit
être stocké avec la valeur de la mesure.
La suppression de valeurs TimeSeries diffère selon que la suppression affecte l'ensemble de la série temporelle (par
exemple du point de mesure) avec toutes les valeurs, ou si seulement certaines valeurs doivent être supprimées en
fonction d'un critère chronologique.
Supprimer la série temporelle peut être réalisé en SQL avec un simple appel du type:
DELETE FROM ... WHERE ...
De cette façon, toutes les valeurs qui appartiennent à la série temporelle spécifiée seront supprimés. Cela peut autant
représenter quelques valeurs à quelques centaines de milliers de de valeurs.
La suppression des valeurs en utilisant une table virtuelle créée sur une table avec des données Timeseries, n'est pas
possible et un message d'erreur sera retourné lors de l'exécution de la commande delete:
240: Could not delete a row.
12801: An attempt was made to invoke an access_method routine that does not exist.
Aussi, la suppression de valeurs individuelles d'une série de temps doit passer par la table virtuelle définit en utilisant des
fonctions spécifique à TimeSeries. Pour supprimer les valeurs dans un intervalle, on utilisera l'une des fonctions
DelTrim(), DelClip() ou DelRange() , que nous allons présenter dans l’exemple suivant.
Pour le test, nous créons le type suivant:
create row type sensor_t(
tstamp datetime year to fraction(5),
value decimal(15,2)
);
execute procedure TSContainerCreate('sensor_cont2','datadbs','sensor_t','1024','10240');
create table sensor_ts(
sensor_id
char(40) primary key,
sensor_type
char(20),
sensor_unit
char(6),
sensor_values timeseries(sensor_t)
);
On définit une table virtuelle comme suit:
execute procedure TSCreateVirtualTab('sensor_vt',
'sensor_ts',
'calendar(ts_1min),origin(2015-09-01 08:00:00.00000),
container(sensor_cont2),threshold(0),regular');
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 6
et l'utilisons pour insérer les données suivantes:
insert
insert
insert
insert
insert
insert
into
into
into
into
into
into
sensor_data
sensor_data
sensor_data
sensor_data
sensor_data
sensor_data
values
values
values
values
values
values
("Sensor01",
("Sensor01",
("Sensor01",
("Sensor01",
("Sensor01",
("Sensor01",
"Temp",
"Temp",
"Temp",
"Temp",
"Temp",
"Temp",
"C",
"C",
"C",
"C",
"C",
"C",
"20150720
"20150720
"20150720
"20150720
"20150720
"20150720
08:06"::datetime
08:07"::datetime
08:08"::datetime
08:22"::datetime
08:23"::datetime
08:33"::datetime
year
year
year
year
year
year
to
to
to
to
to
to
minute,
minute,
minute,
minute,
minute,
minute,
28.5);
29.6);
31.9);
32.1);
30.2);
29.5);
Pour les tests, nous exécutons la requête directement sur la table réelle:
> select * from sensor_ts;
sensor_id
sensor_type
sensor_unit
sensor_values
Sensor01
Temp
C
origin(2015-09-01 08:00:00.00000), calendar(ts_1min), container(
sensor_cont2), threshold(0), regular, [NULL, NULL, NULL, NULL, N
ULL, NULL, (28.50
), (29.60
), NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NUL
L, NULL, (31.90
), (30.20
), NULL, NULL, N
ULL, NULL, NULL, NULL, NULL, NULL, NULL, (29.50
)]
Et voici le résultat en utilisant la table virtuelle:
> select tstamp, value from sensor_vt;
tstamp
value
2015-09-01
2015-09-01
2015-09-01
2015-09-01
2015-09-01
08:06:00.00000
08:07:00.00000
08:22:00.00000
08:23:00.00000
08:33:00.00000
28.50
29.60
31.90
30.20
29.50
Maintenant, nous supprimons les valeurs du 1er septembre entre 08h07 et 08h23 en utilisant la fonction DelRange()
update sensor_ts
set sensor_values = DelRange(sensor_values, "2015-09-01 08:07:00.00000",
"2015-09-01 08:23:00.00000")
where sensor_id = "Sensor01";
On obtient le contenu suivant:
> select * from sensor_ts;
sensor_id
Sensor01
sensor_type
Temp
sensor_unit
C
sensor_values origin(2015-09-01 08:00:00.00000), calendar(ts_1min), container(
sensor_cont2), threshold(0), regular, [NULL, NULL, NULL, NULL, N
ULL, NULL, (28.50
), NULL, NULL, NULL, NULL, NULL, NU
LL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (29.
50
)]
> select tstamp, value from sensor_vt;
tstamp
value
2015-09-01 08:06:00.00000
28.50
2015-09-01 08:33:00.00000
29.50
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 7
Le résultat de l'opération d'effacement est indépendante des fonctions qui ont été utilisés DelClip(), DelRange() ou
DelTrim(). La différence entre les trois fonctions réside dans la gestion interne de l'espace utilisé par la série
chronologique.
DelTrim() supprime les éléments et libère uniquement les pages libres à la fin de la série chronologique.
DelClip() maintient l'espace utilisé par les entrées supprimées et les remplit avec des NULL .
DelRange() supprime les éléments et libère l’espace quel que soit la localisation des pages libres.
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 8
Application mobile IBM Worklight et webservices 4GL
Par Jacques Rage, Frame
A l'heure où la majorité des entreprises veulent proposer une offre mobile à leurs clients, votre application 4gl peut
ouvrir une partie de son code au monde mobile grâce à la technologie web-services.
Le processus de développement d'une application mobile est un assemblage de compétences et de moyens : la partie
graphique native ou hybride pour la partie émergée, la sécurité, la concentration des résultats des sources de données,
la gestion des notifications ...pour la partie middleware mobile.
En véritable « chef d'orchestre » IBM Worklight inclus dans l'offre IBM MobileFirst est une plateforme fonctionnant
comme un gateway entre les devices mobiles et les applications métiers en silos de l'entreprise.
Depuis la version 4GL 7.50 une fonction métier (function … end function ou procedure … end procedure) sans interaction
avec un clavier ou un écran ; en clair sans instruction input, display, prompt … peut être un web-service et être utilisée
dans une application étrangère à 4GL.
IBM Worklight communique avec les données de l'entreprise en utilisant de multiples protocoles : rest, soap sur http,
jdbc, jms.
Il n'en fallait pas plus pour marier 4GL et IBM Worklight.
Mon application 4GL comporte une fonction pour lister les livraisons en cours que j'aimerais appeler depuis mon device
mobile. La seule adaptation à effectuer à mon code 4GL est de retourner une chaîne de texte exprimant la liste
demandée en XML ou JSON. Ci-dessous un extrait du code de la fonction livraisons qui interroge la table « commandes »
entre 2 dates et retourne la chaîne « str » au format JSON.
FUNCTION livraisons(d)
….
LET sel_stmt= "SELECT * FROM commandes WHERE datec >= to_date(?,'%Y-%m-%d') AND datec <= today";
PREPARE st_id FROM sel_stmt;
DECLARE cur_id CURSOR FOR st_id;
LET i=1
OPEN cur_id USING d;
LET str="["
WHILE sqlca.sqlcode = 0
IF i > 20 THEN
EXIT WHILE
END IF
FETCH NEXT cur_id INTO tabcomm[i].*;
IF sqlca.sqlcode = 0 THEN
LET str=str
clipped||"{\"datec\":\""||tabcomm[i].datec||"\",\"emplacement\":\""||tabcomm[i].emplacement
clipped||"\",\"status\":\""||tabcomm[i].status clipped||"\"},"
END IF
LET i=i+1
END WHILE
...
CLOSE cur_id;
FREE cur_id;
FREE st_id;
RETURN str clipped
END FUNCTION
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 9
Le répertoire $INFORMIXDIR/demo/soa/en_us/0333 contient
préparer notre fonction à l'environnement web-services AXIS.
un script i4glsoademo.sh qui peut être utilisé pour
L'instruction perl /home/informix/4gl750uc5/bin/w4glc -keep -silent -generate -compile -deploy -force
/home/informix/4gl750uc5/soademo.4cf se charge de tout le travail et lance également le serveur web-services
axis2_http_server. Pensez à ajouter un chemin vers les librairies :
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/informix/4gl750uc5/AXIS2C/lib
On pourra tester que le service lié à la fonction « livraisons » est disponible depuis un navigateur web avec l'url :
http://monserveur:9876/axis/services
Un outil comme curl ou soapgui pourra être utile pour appeler le web service et le faire fonctionner.
La partie IBM Worklight Studio en environnement Eclipse permet de créer un connecteur web-service (l'adapter) qui sera
hébergé sur la plateforme IBM Worklight et une application au format binaire android, ios, windows ou blackberry si on a
pris la précaution d'installer le « sdk » associé.
On crée un nouveau projet IBM Worklight hybride avec la librairie javascript jquerymobile ou dojo pour une meilleure
accessibilité aux différents devices mobiles.
Une fois validé, l'outil propose la construction de l'écran principal à l'aide d'une palette d'objets à placer par
glisser/déposer.
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 10
L'étape suivante est de définir l'adaptateur qui sera le connecteur dédié à la connexion du web service 4GL. Le type
adapté à notre web-service est http. Ce connecteur est déployé dans la plateforme IBM Worklight.
Cette opération génère 2 fichiers : livraisons.xml et livraisons-impl.js qui sont respectivement le fichier de connexion et
l'implémentation en javascript pour invoquer le web-service. Dans le fichier de connexion on trouve : l'adresse ip du
serveur axis/4gl, le numéro du port 9876 par défaut et dans le cas d'une mise en production le nom du certificat pour
sécuriser l'accès au web service.
Le fichier implémentation est la seule partie délicate du projet. Elle consiste à écrire la bonne requête soap pour le corps
de la requête http.
function getLivraisons(datec){
var request='<?xml version="1.0" encoding="UTF-8"?>'
+'<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">'
+'<Body><commandes_details_request xmlns="http://www.ibm.com/informix/i4glsoa/2010-11/ws_commandes">'
+'<d>'+datec+'</d></livraisons_request>'
+'</Body></Envelope>';
WL.Logger.debug("SOAP Request " + request);
var input = {
method : 'post',
returnedContentType : 'json',
headers: {SOAPAction: 'livraisons'},
path : '/axis2/services/ws_commandes',
body : {
content: request.toString(),
contentType: 'text/xml; charset=utf-8'
}
};
var result = WL.Server.invokeHttp(input);
return result.Envelope.Body.livraisons_response;
}
ws_commandes représente le nom du service choisi dans le fichier script i4gldemosoa.sh et livraisons le nom de la
fonction 4gl à l'aide des variables ARG_SERVICENAME="ws_commandes" et ARG_FUNCTIONNAME="livraisons".
Le paramètre « path » est concaténé avec les informations du fichier de connexion xml pour créer l'url vers le serveur de
web services.
http://monserveur:9876/axis2/services/ws_commandes
La fonction javascript getLivraisons(datec) sera appelée par le device mobile en cliquant sur le bouton Recherche :
<a href="#" data-role="button" id="Recherche" onclick="getcmds();" datatheme="d">Recherche</a>
La fonction javascript getcmds implémentée dans l'application mobile appelle le connecteur « livraisons » et la fonction
getLivraisons(datec) avec le paramètre date choisi :
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 11
var invocationdata = {
adapter: 'livraisons',
procedure: 'getLivraisons',
parameters: [dc]
};
WL.Client.updateUserInfo();
WL.Client.invokeProcedure(invocationdata,{
onSuccess : successGetConnexion,
onFailure : failureGetConnexion
});
La fonction javascript « successGetConnexion » obtient la variable « str » 4GL et l'interprète pour la placer dans la liste à
l'écran.
Voilà un aperçu des étapes pour mettre en œuvre une application mobile compatible 4GL et assurer une transition en
douceur vers des applications mobiles avec des équipes de développeurs d'horizons différents.
Plus d’information sur IBM Worklight sur http://www.redbooks.ibm.com/abstracts/sg248117.html
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 12
Voyage au centre de votre applicaton Informix 4GL
Par Eric Vercelletto
Ou comment des développeurs actuels
peuvent démystifier une application
écrite en Informix 4GL par quelqu’un
qui part en retraite dans 6 mois
4GL App Analyser: submersion totale dans vos Applications 4GL: Où en êtes-vous dans la
documentation de vos application Informix 4GL
Si vous en êtes venu à tomber sur cet article, la raison est
probablement que le mot ‘4GL’ possède pour vous une
réelle signification, et que sans doute il a été un compagnon
fidèle dans votre vie professionnelle. Effectivement, dans les
années 80 et 90, Informix 4GL était leader dans le monde
des plateformes de développement. Les temps ont changé
et un grand nombre de nouvelles plateformes de
développement ont pris la place de 4GL soit disant parce
qu’ils offrent plus de flexibilité et qu’ils sont plus faciles à
utiliser. La question de « est-ce vrai » a déjà été débattue
dans un article précédent et ne sera pas abordé aujourd’hui.
Une des questions principales avec INFORMIX 4GL est que
dans de nombreux cas les applications ont été développées
il y a plusieurs dizaines d’années et que, par conséquent, les acteurs du projet sont nombreux. Ceci se traduit souvent
par l’adoption de visions différentes sur la documentation du code-source, incluant différents supports pour celle-ci.
Cette manière de procéder peut fonctionner de façon acceptable si le chef de projet connait ses applications sur le bout
des doigts, mais les choses peuvent se compliquer très vite si ce dernier est indisponible pour quelque raison que ce soit.
De plus, dès que l’on évoque le départ en retraite dudit chef de projet, le Directeur Informatique se verra rapidement
pris de panique et pourra décider abruptement que cette application partira à la retraite en même temps que son chef
de projet. Des changements de direction tels que le développement d’une nouvelle application ou encore l’acquisition
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 13
d’un package applicatif magique qui résoudra bien évidemment tous les besoins de la société, feront alors partie des
possibilités à envisager.
Face à ces assertions, prenons le temps de faire face à ces questions fondamentales :



Les utilisateurs de l’application se sont-ils jamais plaints de cette application, ou alors l’application ne fonctionnaitelle pas sans anicroches, satisfaisant les besoins de la compagnie à un taux de près de 100% ?
Est-ce une sage décision que de mettre à la poubelle une application construite par des développeurs qui avaient/ont
une connaissance profonde de l’organisation et des pratiques de l’entreprise, justement parce qu’ils ont travaillé
dans cette entreprise ?
Les nouveaux développeurs vont-ils comprendre le métier de l’entreprise aussi bien que les développeurs 4GL l’ont
compris, ou bien vont-ils axer leur esprit sur la partie technique au détriment de la compréhension de l’aspect
fonctionnel ?
Oui! La documentation d’une application est un poste critique, et ce pour un certain nombre de raisons. Certains diront
qu’il y a 20 ans, la documentation des applications n’était pas une priorité, en tâchant de justifier pourquoi la
documentation disponible est insuffisante ou périmée. Malheureusement, c’est aujourd’hui monnaie courante, mais se
plaindre de cet état de fait ne résoudra pas la question.
Si l’on parle de documentation d’application, les points à aborder sont les suivants, sans ordre spécifique:









La documentation est le support central pour un travail d’équipe. Sans une documentation adaptée, maintenir une
application est difficile, inefficace, coûteux et risqué
si les développeurs habituels ne sont pas disponibles et l’application doit être modifiée, une bonne documentation
est une condition indispensable pour atteindre l’objectif avec succès et efficacité
Certaines compagnies maintiennent une documentation en pdf ou papier (documentation « statique », mais le
problème est que celle-ci sera probablement périmée dans les minutes qui suivent son impression.
Les modifications d’un programme doivent être transcrites manuellement vers la documentation papier ou pdf: cela
prend du temps et présente un risqué de désynchronisation entre la documentation et le code source. Il est très facile
d’oublier.
La capacité de recherché textuelle est inexistante dans une documentation papier, et limitée dans le code source,
principalement parce qu’il est difficile de chercher dans plusieurs fichiers à la fois.
Inclure la documentation dans le code source est sans aucun doute la meilleure façon de faire, mais cette
documentation ne peut-être accédée que par les personnes autorisées et compétentes : les développeurs. Chefs de
projet, Directeurs et autres utilisateurs ne se retrouverons pas dans la lecture du code-source.
Insérer manuellement des hyperliens dans la documentation prend du temps, bien que cette pratique contribue
grandement à la compréhension du code, donc à la productivité de l’équipe.
Même si la documentation explique avec des mots comment l’application fonctionne, rien de vaut un bon diagramme
de flux pour aider quiconque n’est pas développeur ou n’est pas familier avec CETTE application, à comprendre
rapidement la fonctionnalité de l’application.
Et pour terminer, le facteur humain : si maintenir la documentation coûte trop d’efforts et de temps aux
développeurs, son contenu et sa fréquence de mise à jour vont tôt ou tard décliner jusqu’à rendre la documentation
encombrante et inutilisable.
Il n’est donc pas impossible que, un beau jour, votre Directeur vienne vous rendre visite pour vous dire: « désolé, la
documentation n’est pas viable: nous ne pouvons plus maintenir cette application parce que nous ne comprenons pas
comment elle fonctionne. De plus, l’équipe de nouveaux développeurs ne connait pas le langage 4GL. Nous allons donc
devoir abandonner cette application. »
Bien sûr vous ne pensez pas qu’abandonner 20 ans de connaissance profonde des processus de votre entreprise, ayant
généré une application robuste, performante et parfaitement adaptée, soit une idée acceptable. Mais avouons que les
arguments invoqués plus haut sont solides mais très difficiles à combattre.
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 14
Faut-il pour autant baisser les bras et abandonner les applications?
Certainement pas! Quand une série de problèmes est identifiée et doit être résolue, il faut comprendre les enjeux,
réfléchir et agir. Querix Inc. A très intelligemment fait le tour de la question et nous a concocté un produit très
sympathique pour résoudre ces problèmes. J’ai eu l’opportunité de tester une bêta-version de Fourgl App Analyser et me
suis clairement résolu à partager mon expérience sur ce produit qui pour moi va changer la donne.
Fourgl App Analyser©: en quoi celà consiste?
Fourgl App Analyser© est à la base un parseur de code conçu pour analyser tous les codes compatibles Informix 4GL©,
soit I4GL lui-même, Aubit 4GL©, Querix Hydra©, Querix Lycia©, Genero©, et construire dynamiquement une
documentation d’application structurée à partir de cette analyse de code.
La double approche: de bas en haut et de haut en bas
Fourgl App Analyser identifie, localise et décrit les propriétés des fonctions, reports, variables , formes et tables utilisés
dans le code source analysé. En fournissant des informations structurelles et fonctionnelles sur ces éléments, vous
comprendrez facilement et rapidement le flux de votre application, mais également quels objets applicationnels sont
impliqués. Même sans aucune connaissance d’Informix 4GL, vous découvrirez, en navigant grâce aux diagrammes de flux,
en somme en adoptant l’approche de haut en bas. D’autre part, les développeurs ou les équipes de production peuvent
avoir besoin d’identifier et localiser un objet applicatif (par exemple le dba découvre un problème avec une table
spécifique : où cette table est-elle utilisée?) Avec Fourgl App Analyser©, la documentation peut être exploitée dans les
deux sens.
Le format de sortie
La documentation peut être générée dans un des formats de votre choix, comprenant HTML, LaTex, man page, RTF, XML
ou PDF avec hyperliens.
Exemple de la vue HTML: la page principale
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 15
Pour un module 4GL, toutes les fonctions sont listées, avec une brève descriptions ainsi que les paramètres entrants. Les
autres composantes du menu sont les formes d’écran, une vue du schéma de la BDD, description des records et des
variables. Dans une prochaine version, nous verrons une composante-menu dédiée aux tables. En cliquant sur le nom
d’une fonction, vous pourrez visualiser la documentation de la fonction en détail, comme le montre l’écran suivant.
Exemple de la vue HTML: détail de la documentation d’une fonction.
Avantages immédiats, sans autre préparation que le lancement de la génération
En tout premier lieu, vous pourrez désormais naviguer et faire des recherches dans votre documentation. Plus besoin de
dépenser un temps précieux à définir des hyperliens dans votre document Word, lesquels peuvent disparaître ou devenir
périmés à la prochaine modification.
La possibilité de naviguer et de rechercher dans la documentation la rendra redoutablement efficace et améliorera de
façon notoire laa productivité de l’équipe.
De même, le fait de disposer en natif du format HTML implique une consequence directe: la documentation peut être
très facilement intégrée dans un site web, accessible par les acteurs du projet applicatif, y compris les utilisateurs finaux
et l’équipe de production dans certains cas.
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 16
Vous pouvez littéralement naviguer dans votre documentation en manipulant les critères les mieux adaptés suivant les
cas de figure: par fonction, par variable, par table….
Une autre fonctionnalité important est la capacité de localiser rapidement à quels endroits les tables sont impactés par
l’application, simplement comme ceci:
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 17
Puis en cliquant dans stores_demo.4gl, pour la table customer, vous verrez en détaial comment cette table est
manipulée dans l’application, et dans quelles fonctions. Imaginez simplement le scénario où un développeur a réalisé un
changement à cette table : dans le temps d’un battement de cils, vous identifierez les modules qui devront être modifiés
et/ou recompilés pour s’adapter au changement de schéma.
L’Officier de Sécurité des Données peut également être intéressé de savoir s’il existe un quelque ordre DELETE sur la
table customer à l’intérieur de l’application, dans les cas où un comportement anormal est observé.
Grâce à toutes ces fonctionnalités, vous pourrez acquérir une connaissance approfondie de la structure de votre
application, des objets qui la composent, ainsi que des flux fonctionnels, en un temps très court.
Ce que les autres systèmes de documentation n’ont pas, et que FGLAA vous offre
Avec un système de documentation statique, vous ne pourrez jamais capturer facilement le flux fonctionnel de votre
application à moins de lire attentivement le code et de passer du temps à écrire, ou pire, à dessiner le flowchart, qui de
toute façon pourra changer dans le futur. FGLAA fournit une fonctionnalité vraiment sympathique qui consiste à intégrer
automatiquement les diagrammes de flux dans la documentation, tout simplement comme ceci :
Pour le coût de zéro effort, vous disposerez du graphe des appels pour chaque fonction, c’est-à-dire quelles sont les
fonctions appelées par cette fonction. Ceci est une fonctionnalité très puissante qui rendra quiconque est capable de lire
un diagramme de flux capable de comprendre en quelques secondes ce que fait votre application.
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 18
Les diagrammes de flux peuvent être encore plus détaillés, comme suit:
En cliquant sur le nom des fonctions, vous vous déplacerez sur la documentation de la fonction cliquée, rendant ainsi
aisée la navigation dans les fonctionnalités de celle-ci.
L’utilisation des diagrammes de flux peut également constituer un excellent outil pour tracer un comportement erratique
de l’application, en ayant une vision claire des séquences de code, des branchements conditionnels etc… Vous noterez
également le détail des couleurs affectées à chaque type de commande 4GL, ci-dessus INPUT en vert, MENU en rose.
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 19
Cette documentation a l’air d’avoir très peu de littérature descriptive : cette littérature estelle générée par FGLAA
Bien évidemment nous adorerions tous cette fonctionnalité, malheureusement, c’est maintenant de prendre votre
“plume” pour écrire un peu dans la documentation. Nous avons vu plus haut que toute la documentation structurelle est
générée par FGLAA, ce qui apporte déjà les éléments fondamentaux à notre documentation. Mais bien évidemment, une
documentation comme il se doit nécessite une bonne quantité de commentaires « humains ». La meilleure pratique est
pour nous la rédaction de cette littérature explicative aussi près possible de l’endroit où l’action se passe, à savoir au sein
même du code-source. Pour documenter un bloc de code, tel que fonction, report, définition de variables et record, il
suffit d’utiliser la séquence « ## », qui est une extension de l’identificateur standard de commentaires d’Informix 4GL,
soit répétition de « x » 2 fois ou plus, et d’écrire vos commentaires juste avant la déclaration de la fonction, comme ceci :
############################################################################
# The add_customer function has the ability to add data on one or several customers
# \param repeat INTEGER If non-zero value is provided then user will be prompted for customer data repeatedly
# \return No value
############################################################################
FUNCTION add_customer(repeat)
DEFINE repeat INTEGER
CALL clear_menu()
Ce qui donnera le résultat suivant:
Vous noterez que les paramètres entrants sont automatiquement écrits en rouge, et que les commandes spéciales
\param et \return (en jaune), sont utilisées pour décrire les paramètres entrants et les valeurs retournées.
Si vous préférez document votre function après sa déclaration dans le code ( FUNCTION xxx (aa,bb,)),vous pouvez utilizer
les commandes spéciales \fn , \brief , \param and \return, comme ceci :
FUNCTION add_customer(repeat)
{! \fn add_customer(repeat)
# \brief The add_customer function has the ability to add data on one or several customers
# \param repeat INTEGER If non-zero value is provided then user will be prompted for customer data
# \return No value
}
DEFINE
repeat
…..
INTEGER
Cette méthode est très pratique, surtout si avant d’utiliser FGLAA, vous aviez déjà d:ocumenté vos fonctions : il suffit
d’ajouter les commandes spéciales cités, et voilà.
FGLAA comporte un nombre important de commandes spéciales qui contribueront à améliorer votre documentation, y
compris des commandes de gestion de sections, des commandes conditionnelles, des commandes pour cacher les
commentaires, manipulation de block ainsi qu’instructions de mise en page, qui donneront à votre documentation un
rendu véritablement professionnel.
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 20
J’ai déjà rédigé la documentation dans le code-source, est-ce encore compatible avec
FGLAA?
Si vous avez déjà documenté votre application dans le code-source, vous pourrez tirer un grand parti du travail déjà
réalisé en le rendant « prêt pour FGLAA » simplement en rajoutant quelques commandes spéciales afin de parfaire la
présentation, et peut-être profiter de l’occasion pour faire un peu de nettoyage du code inactif, ce qui est toujours bon
pour le côté lisibilité. Et comme FGLAA travaille exclusivement à partir de code commenté, aucun impact sur la
compilation de vos applications ne sera ressenti.
Le cadeau caché
Vous ne vous y attendez peut-être pas: FGLAA comprend non seulement votre code-source 4GL, mais il comprend
également C, C++, Java ainsi que C#, Objective C, PHP, Python et autres. Si votre application 4GL contient également du C
ou même du Java, la documentation de ce code non-4GL sera intégrée dans celle de votre application.
Vous aurez donc compris que FGLAA peut être utilisé pour documenter des applications non 4GL.
Le potentiel caché
Dans le cas malheureux où votre entreprise aurait décidé de redévelopper votre application dans un autre langage, la
documentation de votre application, si elle est générée avec FGLAA, vous aidera efficacement à gagner un temps
précieux lors de la réécriture: avec les diagrammes de flux détaillés, vous avez entre vos mains plus de 80% des
instructions pour réécrire le code dans un autre langage. Je ne parlerai pas de la possibilité d’utiliser les données de ces
flux pour construire le nouveau code à partir d’un générateur de code sachant interpréter ces flux.
Conclusion
Fourgl App Analyser© est une fois de plus un petit bijou de technologie provenant des laboratoires de Querix Inc. Audelà d’un simple analyseur de que beaucoup de gens ont pu développer à la maison(dont moi-même d’ailleurs), ils ont
mis beaucoup d’intelligence en intégrant les standards de l’industrie et les fonctionnalités universellement reconnues, en
réalisant un produit qui était attendu depuis longtemps, et qui pourrait bien changer la manière d’aborder les
applications Informix 4GL. La même philosophie est appliquée dans Querix Lycia©, qui est également fondé sur une
intégration astucieuse de technologies open-source reconnues, fournissant un système de développement et un
environnement de runtime qui répond véritablement aux besoins d’aujourd’hui.
Ayant une tarification très raisonnable, FGLAA construira une documentation applicative professionnelle, utile et
toujours à jour, tout en faisant réaliser à votre entreprise des économies de plusieurs fois le montant investi, et ce dans
un laps de temps très réduit.
Une documentation de qualité constituera la base solide de vos futurs développements, et peut-être le point de départ
d’une conversion progressive, si votre entreprise désire vraiment abandonner le langage 4GL, de votre code 4GL vers
Java, C# ou un autre langage. Un indice : parce qu’il utilise la technologie LLVM, Querix Lycia© offre la possibilité
d’intégrer dans un même environnement d’exécution différents langages comme C, C#, Java et autres, ce qui pourrait
changer votre manière d’aborder le futur…
FGLAA peut être téléchargé depuis le Website Querix. Vous aurez à disposition une période de test de 30 jours.
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 21
Approfondir la configuration SMX
Par Yoram Benchetrit
Nous avons évoqué dans l’article précédent le protocole SMX à travers la possibilité d’améliorer les performances
réseaux grâce au paramètre SMX_NUMPIPES. Dans cet article nous allons voir qu’il est possible d’aller plus loin dans la
prise en main de la configuration SMX à l’aide des paramètres SMX_COMPRESS, SMX_PING_INTERVAL et
SMX_PING_RETRY.
ONCONFIG : SMX_COMPRESS
Le paramètre SMX_COMPRESS spécifie le niveau de compression que le serveur Informix utilise avant d’envoyer les
données du serveur source, vers le serveur cible. Cette compression permet d’optimiser la bande passante du réseau, en
particulier sur les réseaux à bas débits, et utilise davantage de ressource CPU pour compresser et décompresser les
données. La valeur des paramètres SMX_COMPRESS des serveurs source et cible sont comparée afin de déterminer le
niveau de compression.
Les valeurs possibles de SMX_COMPRESS sont :
-1 : Le serveur source ne compresse pas les données, quelques soit la valeur du paramètre sur le serveur cible.
0 : Le serveur source compresse les données seulement si le serveur cible attend des données compressées. C’est la
valeur par défaut.
1 : Le serveur produit une compression minimale.
9 : Le serveur produit une compression maximale.
Il est nécessaire de modifier le paramètre SMX_COMPRESS dans le fichier ONCONFIG et redémarrer le serveur Informix
afin de prendre en compte sa valeur, ou bien modifier le paramètre dynamiquement à l’aide de la commande
« onmode –w[f/m] »
Les systèmes disposant de suffisamment de ressource CPU et d’une faible bande passante réseau bénéficieront
davantage de l’utilisation de ce paramètre.
Exemple:
SMX_COMPRESS
0
ONCONFIG: SMX_PING_INTERVAL et SMX_PING_RETRY
Le paramètre SMX_PING_INTERVAL spécifie le nombre de secondes utilisées dans un intervalle de timeout, pendant
lequel le serveur secondaire attend une production d’activité de la part du serveur primaire au sein d’une connexion
SMX.
Les valeurs possibles de SMX_PING_INTERVAL sont :
0 : Attendre indéfiniment
[1 – 60 ] : Un entier positif compris entre 1 et 60 déterminant le nombre de secondes dans l’intervalle de timeout
Le paramètre SMX_PING_INTERVAL est utilisé conjointement avec le paramètre SMX_PING_RETRY. Lors de l’utilisation
de ces 2 paramètres, si le serveur secondaire ne reçoit pas de message pendant la durée spécifiée par le paramètre
SMX_PING_INTERVAL, et après le nombre de tentatives spécifiées par le paramètre SMX_PING_RETRY, le serveur
secondaire écrit un message dans le fichier online.log et termine la connexion SMX.
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 22
Ces paramètres s’appliquent uniquement aux serveurs secondaires. Si ceux-ci sont positionnés sur le serveur primaire, ils
ne deviendront effectifs que si le serveur primaire devient un serveur secondaire.
Il est nécessaire d’éditer le fichier ONCONFIG et redémarrer le serveur Informix afin de prendre en compte la valeur des
paramètres SMX_PING_INTERVAL et SMX_PING_RETRY, ou bien modifier les paramètres dynamiquement à l’aide de la
commande « onmode –w[f/m] »
Exemple:
SMX_PING_INTERVAL
SMX_PING_RETRY
30
6
Le serveur secondaire attend pendant une durée de 30*6=180 secondes, une activité provenant du serveur primaire. S’il
n’y a pas d’activité provenant du serveur primaire pendant ces 180 secondes, le serveur secondaire termine la connexion
SMX et écrit un message d’erreur dans le fichier online.log.
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 23
Groupe LinkedIn
N’oubliez pas de vous inscrire, si ce n’est pas déjà fait, à notre groupe de discussions linkedin GUIDE Share France Groupe INFORMIX. Ce groupe de discussion, qui comporte dorénavant plus de 130 membres, est le vecteur de
communication de notre communauté. Il serait dommage de ne pas en profiter.
Derniers articles



Informix largement en tête dans un sondage de satisfaction client: voir l’article
IBM Informix reçoit un software award de la part de Cisco: voir l’article
IBM Informix réapparait dans le top 10 des SGBD à prendre au sérieux: voir l’article
Vidéos










The basics of getting up and running with Informix by Tom Beebe: voir la vidéo
Intel-IBM Informix Building Automation Demo: voir la vidéo
Programming Informix SQL/4GL: A Step-By-Step Approach (Bk/CD) (2nd Edition) : voir la vidéo
Informix 4GL to Genero - bring your code into the future: voir la vidéo
Install & Configure Informix Warehouse Accelerator (IWA) : voir la vidéo
IBM Informix helps Deister SA improve their client business: voir la vidéo
CMO of of Pronto Software on what makes IBM and Informix a great partnership for Pronto: voir la vidéo
Connecting IBM Cognos BI 10.2.2 to an IBM Informix 12.10 database: voir la vidéo
Pronto Software leverages IBM Informix for high-volume OLTP as well as for analytical reporting: voir la vidéo
Oracle to Informix Database Migration Demo: voir la vidéo
Liens utiles






Informix Developper Works : http://www.ibm.com/developerworks/data/products/informix/
IBM Redbook : http://www.redbooks.ibm.com/portals/data
IBM Data Management magazine: http://www.ibm.com/developerworks/data/dmmag/
IIUG : http://www.iiug.org/index.php
Informix sur facebook: http://www.facebook.com/IBM.Informix
Informix on dBforums: http://www.dbforums.com/forumdisplay.php?82-Informix
Informix blogs







Art Kagel: http://informix-myview.blogspot.fr/
Andrew Ford: http://www.informix-dba.com/
Ognen Orel: http://ifmx.wordpress.com/
Fred Ho: https://www.ibm.com/developerworks/community/blogs/fredho66/?lang=en
Fernando Nunes: http://informix-technology.blogspot.com/
Eric Vercelletto : Le village Informix http://levillageinformix.blogspot.com/
Bruce Weed: http://bruceweed.wordpress.com/
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 24
Guide Share France – Groupe Informix
Magazine Informix
Septembre 2015
GUIDE SHARE FRANCE – GROUPE INFORMIX
SEPTEMBRE 2015 – PAGE 25

Documents pareils

Newsletter User Group Informix France

Newsletter User Group Informix France Technical Tip: Nouvelles fonctionnalités en 11.70.xC5 ..................................................................... 5 Technical Tip: Nouvelle fonctionnalité IFX_BATCHEDREAD_INDEX .............

Plus en détail

Newsletter User Group Informix France

Newsletter User Group Informix France Technical Tip: L'authentification interne des utilisateurs Avec la 11.70.xC2, la gestion des utilisateurs subit des changements importants. Grâce à l’authentification interne des utilisateurs, il n...

Plus en détail