30 juin 2006

Comment le GDS peut changer la façon de travailler ?

Le Gestionnaire De Sources permet de partager les projets entre plusieurs Développeurs. Il gère l'extraction et la réintégration des éléments des projets pour les Développeurs. Il permet de partager des éléments entre les projets. Mais ce n'est que la partie visible de l'iceberg...

En explorant ses fonctionnalités, on peut trouver un historique des modifications (clic droit sur un élément dans l'explorateur GDS). C'est déjà un gros avantage, car il rend très simple la conservation des modifications effectuées sur un élément d'interface, ou dans des traitements. Ainsi il est à tout moment immédiat de connaître les changements faits entre deux versions.

Mais on peut encore gagner en confort en explorant toutes les fonctionnalités. Mettez-vous en situation ... Vous êtes en modification d'un traitement conséquent, il faut lui ajouter des fonctionnalités, en supprimer d'autres devenues obsolètes avec le temps. Vous avez inséré du code, déplacé plusieurs appels de fonctions un peu plus loin, supprimé une partie ... et là un doute cette dernière modification n'empêche-t-elle pas un code 4 lignes plus haut de s'exécuter ? Trop de modifications en cours, c'est une vraie refonte finalement, pas encore possible d'effectuer un test ... une modification qui vous laissera un souvenir de plus au rang des grands moments de solitude !

Solution : explorateur GDS, historique de l'élément extrait sur lequel on travail, voir les différences de code et ... chaque modification est mise en évidence de façon limpide, on peut immédiatement comparer avec ce que l'on avait précédemment. La comparaison permet également la modification, on peut supprimer un bloc d'instructions modifiées, ou à l'inverse récupérer un traitement de l'historique.

Cette technique bien assimilée donne une grande sécurité lors de modifications conséquentes de traitements.

Technologie client/serveur, ou partage de fichiers ?

Le moteur Hyper File est proposé en version client/serveur, en plus de la version initiale utilisant une technologie séquentiel indexé (ISAM). Alors client/serveur ou séquentiel indexé ?

Un gestionnaire de base de données (SGBD) n'a qu'une finalité, permettre l'accès aux données. Seule la méthode d'accès aux données va déterminer si l'on travail en client/serveur, ou en séquentiel indexé. La différence est très simple, en séquentiel indexé chaque poste client a directement un accès aux fichiers de données, afin d'effectuer interrogations et mises à jour. En client/serveur à l'inverse, les postes clients n'ont pas accès aux fichiers de données, ils communiquent avec un programme sur le serveur qui lui, et lui seul, dispose de l'accès aux fichiers de données.

Cette différence assimilée, les avantages et inconvénients de ces deux techniques d'accès coulent de source :

- performances : avantage client/serveur !
Le serveur traite les demandes des clients (requêtes SQL), et ne retourne que des résultats. Le trafic réseau généré est nettement diminué, d'ou un accroissement des performances générales très significatif. Attention si vous effectuez des comparaisons (bench), il faut bien tenir compte dans vos résultats de l'incidence du trafic réseau. Un traitement donnant des temps de réponse similaires avec les deux techniques d'accès en test à partir d'un poste de développement, verra ses performances s'écrouler en accès séquentiel si le réseau est très chargé à un instant donné. Attention toutefois, la contrepartie de la diminution du trafic réseau, est l'augmentation du travail sur le serveur. Processeur et quantité de mémoire doivent donc évoluer en conséquence sur le serveur.

- sécurité : avantage client/serveur !
Seul le moteur sur le serveur à un accès aux fichiers de données, qu'il ouvre de façon exclusive. C'est un gage de sécurité, aucun autre poste ou processus ne peut accéder au contenu des données. D'autre part le moteur accède aux données qui dans le cas générale sont pour lui en local, ce qui limite les risques en cas d'anomalie sur le réseau. A l'inverse en séquentiel indexé, si un poste ou un périphérique réseau est défaillant, il n'y a un risque pour les données qui seront manipulées. Le moteur gère d'autre part les connexions et les autorisations à partir de groupes et d'utilisateurs.

- accessibilité : avantage client/serveur !
L'accès aux données en séquentiel indexé se fait par un simple partage des données sur une ressource réseau. Avantage séquentiel indexé ? Oui pour la simplicité d'installation et d'accès via un réseau local. Mais dès qu'il s'agit d'étendre les possibilités, le principe client/serveur reprend l'avantage. En effet le partage d'un disque pour un accès séquentiel n'est permis que dans un contexte local. Alors que l'accès à un moteur Hyper File client/Serveur sera possible dans tout type de situation, car aucun partage n'est requis. Ainsi le client/serveur permettra un accès à la base pour les postes du réseau, mais également pour les postes connectés via Internet.

- programmation : avantage client/serveur !
L'utilisation de requêtes permet de tirer pleinement partie du moteur Hyper File Client/Serveur. Un programme existant effectuant uniquement des lectures enregistrement par enregistrement restera utilisable en client/serveur. D'ailleurs le W-Langage permet de passer facilement de données exploitées en client/serveur, à des données exploitées en séquentiel indexé. Une FAQ donne le principe à utiliser.

- installation/configuration : avantage séquentiel indexé !
En effet pour le déploiement d'une application le moteur client/serveur peut apporter des contraintes qui n'apparaissent pas avec un accès en séquentiel indexé. C'est la contre partie de la facilité d'accès qui s'en suit, de la gestion des utilisateurs ... Mais la tâche reste simplifiée, car l'installation de l'application propose d'embarquer l'installation d'un moteur Hyper File Client/Serveur. D'autre part pour assurer une migration, la commande "HCopieFichier" permet de transférer des données d'une base utilisée en séquentiel indexé, vers une base Hyper File Client/Serveur (voir également principe de connexions donné dans la FAQ).

En conclusion, privilégiez le déploiement des applications en vous appuyant sur la technologie client/serveur !

Ce billet est un peu long veuillez m'en excuser. J'espère qu'il pourra aiguiller certains lecteurs sur les avantages et inconvénients de ces techniques d'accès.

25 juin 2006

Donner un pouvoir magique aux recherches de l'aide...

Les ressources pratiques du site PC SOFT permettent de retrouver un exemple. Les FAQ donnent également de l'information, et l'aide de WINDEV documente fonctions et éditeurs.

Et le tout en un ?

Il existe, mais j'observe qu'il est souvent inconnu des développeurs.

Voici le secret, dans l'aide passez en mode "rechercher". Utilisez le lien "Emplacement de recherche" et sélectionnez "Tout". Vous aurez par ce biais un résultat de recherche exhaustif, passant par l'aide classique, les FAQ, les ressources pratiques...

Je vous souhaite de fructueuses recherches !

23 juin 2006

Où ai-je donc affecté cette variable ?

Le billet de jour se voudra moins moralisateur que les précédents, en abordant une technique proposée par le débogueur.
Il n'est pas rare surtout lors de la reprise d'un ancien code, de ne pas savoir à un instant donné pourquoi une variable à telle ou telle valeur.

Et bien le débogueur permet d'exécuter le test de l'application, tout en étant notifié à chaque fois qu'une variable change de valeur. Voici comment procéder :

- lancer le traitement par le débogueur avec un point d'arrêt dans le
projet,
- ajouter la variable dans les expressions du débogueur (clic droit sur la variable),
- cliquer sur le point vert de la colonne "STOP" pour en faire un point
rouge,
- lancer l'exécution avec le bouton continuer du débogueur (touche F5).

Le code s'exécute alors en s'arrêtant pour un débogage pas à pas lorsque la valeur de la variable change.

Bon débogage !

22 juin 2006

La remontée d'information, pour moins coder...

Bien que cela semble une évidence, dans la pratique la remontée d'information est négligée. La conséquence, on code encore et toujours, alors qu'une bonne remontée d'information d'un autre développeur aurait pu être utilisée.

La cause principale reste toujours le manque de temps, un développement dans l'urgence va obliger le développeur, "tête dans le guidon", à grappiller du temps comme il le peut. Lorsqu'il écrira un traitement il oubliera d'en faire part à son équipe directe, de faire remonter l'information à la communauté s'il a reçu l'aide d'un forum...

Voici un bel exemple de remontée d'information faite sur le Forum de PC SOFT. Après bien des recherches un développeur détecte l'origine d'un ralentissement d'aperçu avant impression, lié à un problème d'adressage IP. Et l'information remonte, grâce à lui d'autres développeurs gagneront un temps précieux, s'ils prennent le temps de chercher...

S'il y a une formation dont il ne faut pas se priver...

Comment participer à une formation de pointe aux dernières technologies en matière de développement ? C'est très simple, surveillez au primptemps sur le site de PC SOFT, afin de ne pas louper les inscriptions au "TDF TECH" !!!

Vous pourrez ainsi participer avec des centaines d'autres à une incroyable (4 heures) formation couvrant les principaux sujets de l'actualité. A paris cette année il y avait plus de 1 000 participants !

16 juin 2006

Internet et Google indispensables pour le développeur...

Un doute sur une fonction de programmation ?
Une clé de registre oubliée ?
Google est là !

Cela devient de plus en plus simple, une recherche Google permet maintenant d’obtenir de l’information sur tout ce qui touche à notre monde du développement. L’indexation des forums, les sites collaboratifs, toutes ces sources d’informations permettent d’avoir en ligne un savoir immense, à portée de clavier.

Je citerai à titre de bon exemple le site CODYX sur lequel j’apporte quelques contributions, qui effectue un parallèle entre différents langages afin de faciliter le portage d’applications, et d’avoir toujours plus d’exemples en ligne.

Usez et abusez de la recherche sur le Web, vous éviterez de programmer ce qui l’a déjà été, et qui est déjà en ligne.

15 juin 2006

Lire les messages d'erreurs, est-ce bien utile ?

La publication du jour va relater ce qui sera dans quelques temps une anecdote pour moi, mais qui aujourd'hui a été un réel soucis.

Situation la plus défavorable, une application fonctionne depuis plusieurs années sans qu'elle n'ait été modifiée, et donne aujourd'hui sur une configuration unique un message du mécanisme de sécurité du W-Langage. Et bien évidemment, le projet en test sur le poste de développement ne présente aucun défaut.

La problématique : la recherche dans un fichier échouait sur ce poste utilisateur, en indiquant que le fichier n'existait pas dans l'analyse. Effectivement, le fichier n'était pas dans cette analyse, mais il était ouvert avec succès dans le code d'initialisation de la fenêtre (fonction "HDéclareExterne"). Alors mystère, pourquoi sur une configuration, ce fichier n'était pas lisible par la suite, comment l'utilisateur de l'application avait-il pu parvenir à empêcher la lecture de ce fichier ?

Après d’imposantes recherches, le problème a été trouvé, l'utilisateur avait utilisé l'option "mémoriser la valeur" d'un sélecteur. Il avait ainsi provoqué sur son poste l'exécution d'un code avant l'initialisation de la fenêtre, alors que ce code était conçu pour s'exécuter après l'initialisation de la fenêtre. Pour le découvrir, il a fallu reproduire sur le poste de développement (récupération de la clé de registre de l'application du poste utilisateur), et passer le tout au Débogueur.

L'utilisateur dépanné, il a été possible de lever la tête du guidon pour analyser la phase de débogage qui avait été laborieuse (fenêtre de statistiques manipulant de nombreuses données). Et là surprise, l'explication du problème était donnée par le mécanisme de sécurité du W-Langage sur le poste de l'utilisateur. La pile des appels montrait en effet l’ordre d’exécution des codes qui n’était celui prévu au départ. Reformulé différemment, une lecture plus attentive du message aurait permis d’apporter plus rapidement une solution...

Note technique : soyez vigilant lorsque votre application propose la FAA "Mémoriser la valeur". En effet, l'utilisation de cette option provoque l'exécution du code "A chaque modification" lors de l'initialisation du champ (dixit aide W-Langage).

13 juin 2006

L'aide, c'est lorsque l'on ne s'en sort pas ?

J'observe régulièrement des développeurs têtes baissées, en position tour de France. Ils foncent dans leur code, testent dans leur débogueur, codent codent et codent encore. Je souffre de ce mal également, car fréquemment le temps manque, il faut aller très vite et il est difficile de prendre du recul. L'accès aux aides ne se fait alors qu'en dernier recours, lorsque nos bonnes vieilles méthodes acquises au fils des années ne conviennent plus, lorsque l'on ne sait plus faire.

Je me suis livré à un test ces derniers jours en suivant attentivement les forums. Ce défaut est plus que flagrant. Bon nombre de demandes trouvent une réponse immédiate dans les différentes sources d'informations accessibles à tous :
- ressources pratiques de l'éditeur,
- aide en ligne,
- programme "Guide" de WINDEV.
Je suis moi-même allé conseiller un traitement pour un changement de mot de passe, alors qu'un exemple venait d'être proposé par PC SOFT pour parvenir au résultat, sans programmation !

Alors prenons le temps d'utiliser toutes les sources d'information qui sont maintenant à notre disposition, avant de réinventer la roue. WINDEV évolue tellement ces dernières années, il offre toujours de nouvelles fonctions, composants réutilisables et exemples. Alors avant de coder, il faut chercher !

12 juin 2006

Temps consacré à la formation continue...

S'il y a bien un domaine dans lequel tout évolue très rapidement, c'est bien celui de l'informatique. Qu'il s'agisse de Windows ou du Web, et donc des environnements de développement, une révolution est en marche. Il n'est plus question d'utiliser le poste de travail comme il y a quelques années, dans des applications lourdes, complexes et inesthétiques par dessus le marché.

Alors attention à la formation requise par toutes les nouvelles technologies qui émergent, deviennent des standards, ou disparaissent... Sans une formation continue très régulière, la remise à niveau guette.

Il faut donc augmenter le temps passé à apprendre, et élargir plus qu'à l'accoutumée ses domaines de compétence. Mais surtout, plus que jamais, il faut savoir apprendre en permanence. Chaque "sortie" sur le Web, chaque passage dans une documentation peut donner lieu à un nouvel apprentissage. Ce n'est pas du temps perdu, même si pendant ce temps là aucune ligne de code n'est produite.

10 juin 2006

Passionné par l'informatique, le respect des besoins des utilisateurs ... et WINDEV !

Je suis passionné depuis toujours par l'informatique, le développement principalement, et par les contacts humains ! Deux domaines qui sont restés longtemps incompatibles, faute de communication et de respect entre les informaticiens, et le reste de la population utilisateur de l'informatique.

Impliqué dans diverses entreprises de différents secteurs, je me suis spécialisé dans la mise en adéquation du besoin des utilisateurs, avec les contraintes (temps, budget, existant ...) des développeurs.

Mes services s'appuient exclusivement sur WINDEV l'atelier de développement édité par PC SOFT. J'ai depuis longtemps stoppé la programmation dans d'autres langages, à mon goût trop compliqués car "orientés informaticiens". Autrement dit, au plus on code, au plus on a l'impression de produire un résultat ... alors que la vérité serait plutôt l'inverse... au plus on code, au plus il y a de chance que l'on soit passé à côté du besoin initial souvent simple.

Ce blog est donc dédié à la programmation sous WINDEV, à la simplicité, et au recul ! Car avant la réalisation de toute tâche de programmation, il faut d'abord se poser la bonne question : ai-je vraiment besoin de la programmer ?