Serial est broken pendant les périodes: 00h00:00 - 00h13:40 et 23h52:48 - 24h00:00 #2

Open
opened 2018-07-06 17:12:56 +02:00 by chapeau · 0 comments
chapeau commented 2018-07-06 17:12:56 +02:00 (Migrated from gitlab2.federez.net)

Le sérial est de la forme YYYYmmddxxxx est un nombre qui doit incrémenter à chaque fois. Actuellement

xx = str(int(100*(now.hour*3600 + now.minute*60 + now.second)/86400))

Ce calcul présente 2 erreurs (d'où les deux périodes):

  1. entre 00h00:00 et 00h13:40, on a int(100*(now.hour*3600 + now.minute*60 + now.second)/86400) < 10
    ce qui veut dire que la chaine de charactère obtenue ne fait pas 2 de longeur mais seulement 1.
    Il faudrait préfixer la chaine de charactère pour avoir un longueur constante de 2
    (e.g. 05 au lieu de 5). Je vois deux façon de faire ça : soit en utilisant
    format, soit peut-etre plus compréhensible avec
    str.zfill
  2. entre 23h52:48 et 24h00:00, l'arrondi du int fait que xx == '100'.
    Je pense que la confusion vient du fait qu'en python2 int arrondissait à l'inférieur alors
    qu'en python3 int arrondit au plus proche (et à l'inférieur pour le cas du milieu). Avec
    math.floor, ce problème serait réglé.
Le sérial est de la forme `YYYYmmddxx` où `xx` est un nombre qui doit incrémenter à chaque fois. Actuellement ```python xx = str(int(100*(now.hour*3600 + now.minute*60 + now.second)/86400)) ``` Ce calcul présente 2 erreurs (d'où les deux périodes): 1. entre 00h00:00 et 00h13:40, on a `int(100*(now.hour*3600 + now.minute*60 + now.second)/86400) < 10` ce qui veut dire que la chaine de charactère obtenue ne fait pas 2 de longeur mais seulement 1. Il faudrait préfixer la chaine de charactère pour avoir un longueur constante de 2 (e.g. `05` au lieu de `5`). Je vois deux façon de faire ça : soit en utilisant [`format`](https://stackoverflow.com/a/339013), soit peut-etre plus compréhensible avec [`str.zfill`](https://docs.python.org/3.6/library/stdtypes.html?highlight=zfill#str.zfill) 2. entre 23h52:48 et 24h00:00, l'arrondi du `int` fait que `xx == '100'`. Je pense que la confusion vient du fait qu'en python2 `int` arrondissait à l'inférieur alors qu'en python3 `int` arrondit au plus proche (et à l'inférieur pour le cas du milieu). Avec `math.floor`, ce problème serait réglé.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: re2o/dns#2
No description provided.