LGPDM

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 18 janvier 2006

Excel vs OpenOffice Calc : Le 16 janvier 1900, un Lundi ou un Mardi ?

Par hasard, j'ai découvert un comportement bizarre sur OpenOffice et Excel.

Rappel : dans ces deux tableurs, les dates sont comptés en nombre de jours depuis une date de référence. Par exemple, OpenOffice compte les jours depuis le 30/12/1899. Aujourd'hui nous sommes au jour n° 38735 (le 18 janvier 2006), un mercredi.

Excel et OpenOfficesont en accord sur :

  • le nombre de jour entre la date initiale et le jour actuel
  • le jour de la semaine de la date actuelle.

Tout semble bien fonctionner SAUF dans certains cas.

Par exemple, au lieu d'avoir une date récente, je vais utiliser une date plus ancienne, le 16 janvier 1900 par exemple.

Dans OpenOffice, si je saisit : 16/1/1900 dans le tableur, la date s'affiche. Si j'affiche le jour uniquement (format personnalisé puis "JJJ"), J'ai un Mardi qui s'affiche. Dans Excel, avec la même manipulation, C'est un Lundi qui s'affiche.

Il y donc dans ce cas un décalage de 1 jour.

Comme il ne peut y avoir qu'une seule bonne réponse, j'ai utilisé Google et la commande "cal 1900". Le résultat est flagrand, Excel a faux, OOo Win ! :

                               1900

       janvier                février                 mars
di lu ma me je ve sa   di lu ma me je ve sa   di lu ma me je ve sa
    1  2  3  4  5  6                1  2  3                1  2  3
 7  8  9 10 11 12 13    4  5  6  7  8  9 10    4  5  6  7  8  9 10
14 15 16 17 18 19 20   11 12 13 14 15 16 17   11 12 13 14 15 16 17
21 22 23 24 25 26 27   18 19 20 21 22 23 24   18 19 20 21 22 23 24
28 29 30 31            25 26 27 28            25 26 27 28 29 30 31

        avril                   mai                   juin
di lu ma me je ve sa   di lu ma me je ve sa   di lu ma me je ve sa
 1  2  3  4  5  6  7          1  2  3  4  5                   1  2
 8  9 10 11 12 13 14    6  7  8  9 10 11 12    3  4  5  6  7  8  9
15 16 17 18 19 20 21   13 14 15 16 17 18 19   10 11 12 13 14 15 16
22 23 24 25 26 27 28   20 21 22 23 24 25 26   17 18 19 20 21 22 23
29 30                  27 28 29 30 31         24 25 26 27 28 29 30

       juillet                 août                 septembre
di lu ma me je ve sa   di lu ma me je ve sa   di lu ma me je ve sa
 1  2  3  4  5  6  7             1  2  3  4                      1
 8  9 10 11 12 13 14    5  6  7  8  9 10 11    2  3  4  5  6  7  8
15 16 17 18 19 20 21   12 13 14 15 16 17 18    9 10 11 12 13 14 15
22 23 24 25 26 27 28   19 20 21 22 23 24 25   16 17 18 19 20 21 22
29 30 31               26 27 28 29 30 31      23 24 25 26 27 28 29
                                              30
       octobre               novembre               décembre
di lu ma me je ve sa   di lu ma me je ve sa   di lu ma me je ve sa
    1  2  3  4  5  6                1  2  3                      1
 7  8  9 10 11 12 13    4  5  6  7  8  9 10    2  3  4  5  6  7  8
14 15 16 17 18 19 20   11 12 13 14 15 16 17    9 10 11 12 13 14 15
21 22 23 24 25 26 27   18 19 20 21 22 23 24   16 17 18 19 20 21 22
28 29 30 31            25 26 27 28 29 30      23 24 25 26 27 28 29
                                              30 31

Pour tout dire, il y a une explication rationnelle à ça. Premièrement, la date de départ des 2 applications n'est pas la même (par défaut) :

  • le 0 Janvier 1900 pour Excel (oui oui, le 0, =annee(0) retourne 1900 et pas 1899)
  • le 30 Décembre 1899 pour OpenOffice.org

(fatigue : je viens de prendre le trognon de pomme sur le bord de la table pour une souris)

La différence au niveau de point de départ permet d'expliquer la différence sur les dates en 1900. Cependant, ça n'explique pas comment au bout d'un certain temps les 2 logiciels fonctionnent de façon identique. Alors, Bug de Excel ? Et bien ... non, ça n'est pas vraiment un bug. C'est une fonctionnalitée choisie par l'éditeur pour garder une compatibilitée avec lotus 123 (qui lui avait le bug), un "By design". Pour être précis, le décalage continue jusqu'au 29 février 1900 (date qui n'a jamais existée, sauf dans lotus 123 et Excel :p).

Du coup, je me pose une question, que je laisserai ouverte pour le moment : dans quelle mesure doit-on garder des éléments de compatibilitée avec d'autres applications ? Peut-on introduire des erreurs de calculs pour des raisons de compatibilitée ?

Edit: un lien vers la "knowledge Base" de microsoft : http://support.microsoft.com/kb/214058/en-us

lundi 16 janvier 2006

[Python] Comment inclure des données dans un fichier .exe créé avec py2exe

Contexte

Python est un langage interprété, afin d'exécuter un script python, il faut l'interpréteur Python. Cependant, avec le logiciel py2exe, il est possible de créer un fichier .exe contenant l'ensemble du programme et ses dépendances (dll python + un script).

Cependant, dans certains cas, il peut être intéressant d'inclure d'autres données avec le fichier exécutable comme par exemple des images ou des fichiers de données.

L'objectif ici est d'obtenir un seul fichier contenant :

  • l'interpréteur python
  • un script, potentiellement réparti sur plusieurs fichiers
  • un fichier de données

Lire la suite

dimanche 15 janvier 2006

Eliminator

Il y a quelques années (17 ans environ, j'avais 8 ans, ça date), je passais presque des journées entières sur un jeu : Eliminator. J'avais déjà cherché à le retrouver en émulation mais sans succès.

J'ai fais une nouvelle recherche et cette fois ci c'est bon ! j'ai retrouvé LE jeu de mon enfance !

Pour jouer :

  • Installer un émulateur TO7-70 : Thom
  • Trouver la cassette de Eliminator. Il me semble qu'il faut posséder l'originale (c'est mon cas, dans le grenier et certainement illisible. Déjà que le TO7 démarre une fois sur 20 et plante régulièrement ...) pour jouer légalement.
  • Configurer l'émulateur pour lire la cassette
  • lancer le programme avec : LOADM "",,R J'avoue que j'ai eu du mal à la retrouver celle-ci, merci Google.

A l'époque, j'arrivais à faire plusieurs fois le tour du jeu :)