Outils pour utilisateurs

Outils du site


issue184:tutoriel2

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue184:tutoriel2 [2022/08/28 18:17] d52frissue184:tutoriel2 [2022/08/31 10:12] (Version actuelle) auntiee
Ligne 6: Ligne 6:
  
 In the conclusion of part 6, I told you that I was going into early retirement. That was a big mistake. Two years later I was approached for a position in Vienna where they had a few 20 year old Alpha’s and now I am working there for three years already. And if I listen to the customer, I get the idea that I will be working there long after my retirement.** In the conclusion of part 6, I told you that I was going into early retirement. That was a big mistake. Two years later I was approached for a position in Vienna where they had a few 20 year old Alpha’s and now I am working there for three years already. And if I listen to the customer, I get the idea that I will be working there long after my retirement.**
 +
 +NOTE : Les parties 1 à 6 sont dans les FCM n° 105 à 110
 +
 +Aux premiers temps des ordinateurs, une société appelée Digital Equipment Corporation (DEC) a créé son ordinateur VAX 32-bit en utilisant OpenVMS comme système d'exploitation. Un ordinateur VAX/VMS est si fiable qu'il y en a encore aujourd'hui - après plus de 25 ans - un grand nombre en service. Mais, à terme, même ces ordinateurs fiables devront être remplacés. Comme décrit dans la première partie (FCM n° 105), vous pourriez migrer de VAX/VMS vers Linux, car le fonctionnement de Linux est largement compatible avec OpenVMS. Si vous utilisez le Pascal comme langage de programmation, vous trouverez que Lazarus/Free Pascal est un bon remplacement. Mais il y a des fonctions techniques utilisées dans OpenVMS sans remplacement apparent dans Linux. Dans cet article, je vais vous mettre à jour avec les améliorations et l'expérience depuis mon dernier article.
 +
 +Retraite anticipée ?
 +
 +Dans la conclusion de la partie 6, je vous ai dit que j'allais prendre une retraite anticipée. C'était une grosse erreur. Deux ans plus tard, j'ai été approché pour un poste à Vienne où ils avaient quelques Alpha de 20 ans et maintenant je travaille là-bas depuis trois ans déjà. Et si j'écoute le client, j'ai l'impression que je travaillerai là-bas bien après ma retraite.
 +
  
 **File version numbers **File version numbers
Ligne 12: Ligne 21:
  
 Another issue with log files of batch jobs is that if you ask the system what the log file of job xxxx is, you will get the filename and location only. You have to use tricks like writing a token in the current log file and search through all versions for that token to find the file version number. This made me change my implementation of the batch by including the file version number as soon as the job starts.** Another issue with log files of batch jobs is that if you ask the system what the log file of job xxxx is, you will get the filename and location only. You have to use tricks like writing a token in the current log file and search through all versions for that token to find the file version number. This made me change my implementation of the batch by including the file version number as soon as the job starts.**
 +
 +Numéros de version des fichiers
 +
 +Dans la partie 4 de mon article, je vous disais que « Si votre projet dépend de ce comportement (la version du fichier, pas le plantage), vous devrez modifier vos programmes. Soit en ajoutant un numéro de version au nom ou au type, soit en modifiant votre projet de manière à ce qu'il ne dépende plus des versions de fichiers. » Mon tout premier client potentiel (mon travail actuel) dépendait fortement de ces numéros de version de fichiers. Un travail est lancé plusieurs fois avec des paramètres différents, et de nombreux fichiers journaux sont créés avec le même nom. J'ai donc modifié mes routines de traitement des fichiers pour utiliser les numéros de version. Comme Linux n'a pas d'équivalent, j'ai résolu le problème en ajoutant le numéro de version du fichier comme partie du nom de fichier au format « ;1234 » en m'attendant à ce que cela fonctionne. Comme il s'agit d'une chaîne de caractères, et non d'un nombre de 16 bits, la restriction du maximum de 32767 est levée. Cela pourrait causer des problèmes dans un projet qui s'appuie sur ce maximum, mais c'est quelque chose pour l'avenir.
 +
 +Un autre problème avec les fichiers journaux des tâches batch est que si vous demandez au système quel est le fichier journal de la tâche xxxx, vous n'obtiendrez que le nom du fichier et son emplacement. Vous devez utiliser des astuces comme l'écriture d'un jeton dans le fichier journal actuel et la recherche de toutes les versions de ce jeton pour trouver le numéro de version du fichier. Cela m'a amené à modifier mon implémentation du batch en incluant le numéro de version du fichier dès le début du travail.
 +
  
 **Graphical DCL debugger **Graphical DCL debugger
Ligne 18: Ligne 34:
  
 I have created exactly that. A graphical application with breakpoints, watchpoints, and a continuous display of symbols, local and global. You can specify a break on exit, to determine which exit point a routine takes (including error exit). So you have the opportunity to see what the value of the local symbols are on exit (or the cause of the error). I wished I had this application years ago.** I have created exactly that. A graphical application with breakpoints, watchpoints, and a continuous display of symbols, local and global. You can specify a break on exit, to determine which exit point a routine takes (including error exit). So you have the opportunity to see what the value of the local symbols are on exit (or the cause of the error). I wished I had this application years ago.**
 +
 +Débogueur graphique de DCL
 +
 +En essayant ma première vraie migration, j'ai rencontré des difficultés. Ne sachant pas si mon implémentation de DCL était mauvaise (oui, j'ai trouvé un tas de bogues), j'ai eu besoin d'un moyen pour voir ce qui se passe pendant l'exécution d'un script. La façon normale de déboguer un script DCL est de placer des commandes write ou show. Mais c'est très fastidieux et vous devez placer les commandes exactement aux bons endroits, ce que vous ne savez pas au départ. Si seulement vous pouviez déboguer un script DCL de la même manière que vous déboguez un programme.
 +
 +C'est exactement ce que j'ai créé. Une application graphique avec des points d'arrêt, des points de surveillance et un affichage continu des symboles, locaux et globaux. Vous pouvez spécifier une pause à la sortie, pour déterminer le point de sortie d'une routine (y compris la sortie par erreur). Vous avez donc la possibilité de voir la valeur des symboles locaux à la sortie (ou la cause de l'erreur). J'aurais aimé avoir cette application il y a des années.
 +
  
 **Codasyl database extensions **Codasyl database extensions
Ligne 26: Ligne 49:
  
 I was also telling you about a graphical application to replace DBQ, the database interface program. I have extended this application with a graphical representation of the interlinked data, with the possibility of moving records (with your mouse) within a list to change the order.** I was also telling you about a graphical application to replace DBQ, the database interface program. I have extended this application with a graphical representation of the interlinked data, with the possibility of moving records (with your mouse) within a list to change the order.**
 +
 +Extensions de la base de données Codasyl
 +
 +Dans la partie 6, je vous ai parlé d'un autre type de base de données : une base de données réseau appelée DBMS32. En fait, j'aurais dû l'appeler « base de données Codasyl ». Ce type de base de données, qui existe depuis plus longtemps que les bases de données relationnelles, a même eu un comité de normalisation. Mon implémentation est vaguement basée sur la spécification formalisée. Lorsque mon client a été confronté au problème qu'une chaîne de travaux prenait beaucoup trop de temps (6 à 7 heures), j'ai commencé une étude de faisabilité pour voir si je pouvais faire mieux en utilisant ma base de données Codasyl au lieu d'Oracle. Et, bien sûr, je me suis heurté aux limites d'une base de données Codasyl. Conçue pour la vitesse, elle n'est pas adaptée aux grands ensembles de données.
 +
 +Mais je n'ai pas abandonné : j'ai modifié mon implémentation pour gérer des millions d'enregistrements et j'ai introduit des indices pour conserver la vitesse. Oracle utilise des tables spéciales pour les index qui doivent être mis à jour. Ces tables peuvent être fragmentées, il est donc utile de les reconstruire de temps en temps. Mais cela peut prendre plus d'une heure, et les tables qui utilisent ces index sont bloquées pendant ce temps (un problème très courant chez mon client). Dans mon implémentation, la reconstruction est si rapide (moins d'une seconde) que j'ai décidé de la faire à la volée au lieu de la stocker. Le résultat final est un temps de traitement de moins d'une demi-heure, donc plus de 10 fois plus rapide.
 +
 +Je vous parlais également d'une application graphique pour remplacer DBQ, le programme d'interface de la base de données. J'ai étendu cette application avec une représentation graphique des données liées entre elles, avec la possibilité de déplacer les enregistrements (avec votre souris) dans une liste pour en changer l'ordre.
 +
  
 **Conclusion **Conclusion
  
 As you can see, I haven’t been inactive in the last 5 years. My new job is challenging, time consuming (up to 10 hours a day plus on the weekends), and is challenging all of my competences, but can also be boring from time to time. So if you have a new challenge for me, like speeding up your application by using my implementation of a Codasyl database, you can always send me an email or contact me through LinkedIn.** As you can see, I haven’t been inactive in the last 5 years. My new job is challenging, time consuming (up to 10 hours a day plus on the weekends), and is challenging all of my competences, but can also be boring from time to time. So if you have a new challenge for me, like speeding up your application by using my implementation of a Codasyl database, you can always send me an email or contact me through LinkedIn.**
 +
 +Conclusion
 +
 +Comme vous pouvez le constater, je n'ai pas été inactif au cours des 5 dernières années. Mon nouveau travail est stimulant, prend beaucoup de temps (jusqu'à 10 heures par jour plus les week-ends) et met à l'épreuve toutes mes compétences, mais peut aussi être ennuyeux de temps en temps. Donc si vous avez un nouveau défi à me proposer, comme accélérer votre application en utilisant mon implémentation d'une base de données Codasyl, vous pouvez toujours m'envoyer un e-mail ou me contacter via LinkedIn.
  
issue184/tutoriel2.1661703442.txt.gz · Dernière modification : 2022/08/28 18:17 de d52fr