issue184:tutoriel2
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
issue184:tutoriel2 [2022/08/28 15:14] – créée auntiee | issue184:tutoriel2 [2022/08/31 10:12] (Version actuelle) – auntiee | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | + | **NOTE: Parts 1-6 are FCM#105-110 | |
- | NOTE: Parts 1-6 are FCM#105-110 | + | |
In the early days of computers, a company called Digital Equipment Corporation (DEC) created its 32-bit VAX computer using OpenVMS as its operating system. Because a VAX/VMS computer is so reliable, there are today - after more than 25 years - still a large number of them in use. But, in the end, even these reliable computers will have to be replaced. As described in part 1 (FCM#105), you could migrate from VAX/VMS to Linux, as the way Linux works is largely compatible with OpenVMS. If you use Pascal as your programming language, you will find that Lazarus/ | In the early days of computers, a company called Digital Equipment Corporation (DEC) created its 32-bit VAX computer using OpenVMS as its operating system. Because a VAX/VMS computer is so reliable, there are today - after more than 25 years - still a large number of them in use. But, in the end, even these reliable computers will have to be replaced. As described in part 1 (FCM#105), you could migrate from VAX/VMS to Linux, as the way Linux works is largely compatible with OpenVMS. If you use Pascal as your programming language, you will find that Lazarus/ | ||
Ligne 6: | Ligne 5: | ||
Early retirement? | Early 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. | + | 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.** |
- | File version numbers | + | NOTE : Les parties 1 à 6 sont dans les FCM n° 105 à 110 |
+ | |||
+ | Aux premiers temps des ordinateurs, | ||
+ | |||
+ | Retraite anticipée ? | ||
+ | |||
+ | Dans la conclusion de la partie 6, je vous ai dit que j' | ||
+ | |||
+ | |||
+ | **File version numbers | ||
In part 4 of my article, I told you that “If your project is depending on this behavior (the file version, not the crashing), you will have to change your programs. Either by adding a version number to the name or type, or by changing your project in such a way it will no longer depend on the file versions.” My very first potential customer (my current job) was heavily relying on these file version numbers. One job is being started many times with different parameters, so many log files are being created with the same name. So I changed my file handling routines to use version numbers. As Linux does not have an equivalent, I solved it by adding (and expecting) the file version number as a part of the filename in the format “; | In part 4 of my article, I told you that “If your project is depending on this behavior (the file version, not the crashing), you will have to change your programs. Either by adding a version number to the name or type, or by changing your project in such a way it will no longer depend on the file versions.” My very first potential customer (my current job) was heavily relying on these file version numbers. One job is being started many times with different parameters, so many log files are being created with the same name. So I changed my file handling routines to use version numbers. As Linux does not have an equivalent, I solved it by adding (and expecting) the file version number as a part of the filename in the format “; | ||
- | 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.** |
- | Graphical DCL debugger | + | 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, | ||
+ | |||
+ | 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' | ||
+ | |||
+ | |||
+ | **Graphical DCL debugger | ||
When trying my first real migration, I ran into difficulties. Not knowing if my implementation of DCL is wrong (yes, I found a bunch of bugs), I needed a way to see what’s going on while a script is being executed. The normal way to debug a DCL script is to put in some write or show commands. But this is very tedious and you have to put the commands in at exactly the right points, which you do not know upfront. If only you could debug a DCL script the same way you would debug a program. | When trying my first real migration, I ran into difficulties. Not knowing if my implementation of DCL is wrong (yes, I found a bunch of bugs), I needed a way to see what’s going on while a script is being executed. The normal way to debug a DCL script is to put in some write or show commands. But this is very tedious and you have to put the commands in at exactly the right points, which you do not know upfront. If only you could debug a DCL script the same way you would debug a program. | ||
- | I have created exactly that. A graphical application with breakpoints, | + | I have created exactly that. A graphical application with breakpoints, |
- | Codasyl database extensions | + | 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' | ||
+ | |||
+ | C'est exactement ce que j'ai créé. Une application graphique avec des points d' | ||
+ | |||
+ | |||
+ | **Codasyl database extensions | ||
In part 6 I told you about a different kind of database: a network database called DBMS32. In fact I should have called it a Codasyl database. This kind of database has been around longer than relational databases, and even had a normalization committee. My implementation is loosely based on the formalized specification. When my customer was facing the problem that a chain of jobs took way too long (6 – 7 hours), I started a feasibility study to see if I could do it better using my Codasyl database instead of Oracle. And of course I ran into the limitations of a Codasyl database. As it is designed for speed, it is not suitable for large sets of data. | In part 6 I told you about a different kind of database: a network database called DBMS32. In fact I should have called it a Codasyl database. This kind of database has been around longer than relational databases, and even had a normalization committee. My implementation is loosely based on the formalized specification. When my customer was facing the problem that a chain of jobs took way too long (6 – 7 hours), I started a feasibility study to see if I could do it better using my Codasyl database instead of Oracle. And of course I ran into the limitations of a Codasyl database. As it is designed for speed, it is not suitable for large sets of data. | ||
Ligne 26: | Ligne 48: | ||
But I didn't give up and tweaked my implementation to handle millions of records and introduced indices to keep the speed. Oracle uses special tables for indices that need to be updated. Those tables can get fragmented, so it helps to do a rebuild once in a while. But that can take more than an hour, and the tables that use these indices are blocked during that time (a problem that is very current at my customer). In my implementation, | But I didn't give up and tweaked my implementation to handle millions of records and introduced indices to keep the speed. Oracle uses special tables for indices that need to be updated. Those tables can get fragmented, so it helps to do a rebuild once in a while. But that can take more than an hour, and the tables that use these indices are blocked during that time (a problem that is very current at my customer). In my implementation, | ||
- | 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.** |
- | Conclusion | + | Extensions de la base de données Codasyl |
- | As you can see, I haven’t been inactive in the last 5 years. My new job is challenging, | + | 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' |
+ | |||
+ | Mais je n'ai pas abandonné : j'ai modifié mon implémentation pour gérer des millions d' | ||
+ | |||
+ | Je vous parlais également d'une application graphique pour remplacer DBQ, le programme d' | ||
+ | |||
+ | |||
+ | **Conclusion | ||
+ | |||
+ | As you can see, I haven’t been inactive in the last 5 years. My new job is challenging, | ||
+ | |||
+ | 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' | ||
issue184/tutoriel2.1661692442.txt.gz · Dernière modification : 2022/08/28 15:14 de auntiee