Comment stocker efficacement les horaires d’une réunion


Dans le cadre d’un projet de développement, vous pouvez être amené à enregistrer des horaires de réunions. En plus de la date, il sera nécessaire de stocker l’horaire. On pourra par exemple enregistrer l’heure de début et l’heure de fin. Ou bien l’heure de début et la durée en minutes. Une autre solution plus économe en termes de stockage est de considérer qu’il n’y a pas obligatoirement besoin d’une précision à la minute près. En pratique, un horaire de réunion n’est jamais fixé à 10h32 ou 14h04. Une précision avec des créneaux toutes les 5 minutes s’avère suffisante. Par ailleurs, en considérant qu’une réunion se déroule obligatoirement sur une seule journée, plus la réunion commence tard et moins sa durée maximale est grande. En tenant compte de ces deux critères, il devient possible d’utiliser un simple entier sur 2 octets pour stocker l’heure de début et la durée de réunion.

L’idée est de lister toutes les combinaisons possibles d’horaires et de durées sur une journée et d’associer à chacune de ces combinaisons un nombre qui servira de clef unique. On obtient ainsi les possibilités suivantes :

Heure de débutDurée en minutesClef
00h00m50
00h00m101
00h00m152
00h00m24 * 60287
00h05m5288
00h05m10289
00h05m15290
00h05m(24 * 60) – 5574
00h10m5575
00h10m10576
00h10m15577
00h10m(24 * 60) – 10860
00h15m5861
00h15m10862
00h15m15863
00h15m(24 * 60) – 151145
00h20m51146
00h20m(24 * 60) – 201429
00h25m51430
23h50m541613
23h50m1041614
23h55m541615

Pour calculer la clef à partir de n’importe quelle heure de début en minutes et de n’importe quelle durée en minutes, on utilisera la fonction suivante (ici en Python) :

# debut : heure de début en minutes
# duree : durée en minutes
# debut et duree doivent impérativement être des multiples entiers de la précision
# duree > 0
# debut + duree <= 24 * 60
def calc_clef(debut, duree):
  # précision horaires et durée en minutes
  precision = 5
  # plus petit nombre unique associé
  # ici on considère un entier 16 bits signé qui peut être négatif
  # mettre min = 0 pour retrouver les exemples ci-dessus 
  min = -32768
  # nb tranches dans une journée (24h)
  n = (24 * 60) // precision
  k = (debut // precision) + 1
  # voir https://math.stackexchange.com/a/556810
  r = (n * k) - ((k * (k + 1)) / 2)
  offset = n - (duree // precision)
  return min + r - offset + ((debut // precision) * 2)

Dans le contexte d’une utilisation avec une base de données SQL, on pourra pré-générer une table fixe qui contiendra toutes les combinaisons possibles avec comme clef unique le nombre calculé et les champs heure de début et durée. Puis, dans la table de stockage des réunions, un seul champ de type entier sur 16 bits suffira pour conserver l’heure de début et la durée de la réunion.

Tester la compatibilité d’un site web avec Internet Explorer sous Linux/FreeBSD


Vous développez votre site web sur un ordinateur sous Linux ou FreeBSD, vous hébergez ce site sur un serveur qui fonctionne également avec l’un de ces systèmes. Bref, vous êtes une femme/un homme de bon goût. Qui plus est, vous avez à coeur de vérifier le bon fonctionnement dudit site avec les navigateurs les plus usités. Pour Firefox et Chrome (ou Chromium qui en constitue la base open-source), aucun problème pour effectuer vos tests sous Linux ou FreeBSD. Ces deux navigateurs existent en effet pour ces deux plates-formes. Mais quid d’Internet Explorer ? Qui, rappelons-le, n’est pas (encore ?) disponible sous Linux ou FreeBSD. Nous allons voir qu’il existe un moyen simple, gratuit et légal de faire fonctionner un navigateur IE sur cette famille de système d’exploitation open source. Pour ce faire, nous allons utiliser une machine virtuelle. Voici les différentes étapes à suivre :

  • Etape 1 : Installer VirtualBox

VirtualBox est un logiciel open-source de virtualisation. Il permet de disposer d’ordinateurs virtuels dans lesquels vont fonctionner des systèmes d’exploitation qui peuvent être différents de celui lancé au démarrage de votre ordinateur. Autrement dit, sur un poste sous FreeBSD, vous pouvez par exemple exécuter simultanément une première machine virtuelle sous Linux et une seconde sous Windows. A condition bien sûr de disposer d’un ordinateur suffisamment puissant et en particulier avec suffisamment de ressources en mémoire.

Pour installer VirtualBox, le plus simple est de passer par le gestionnaire de paquet de votre distribution Linux favorite. Sous FreeBSD, vous pouvez consulter la page dédiée du manuel de référence.

  • Etape 2 : Télécharger l’image de la machine virtuelle

Microsoft met à disposition des machines virtuelles Windows au format VirtualBox. Ces machines virtuelles sont spécifiquement dédiées aux tests de compatibilité avec IE. Pour les télécharger :

  • Allez sur le site modern.IE.
  • Allez dans la section « Machines virtuelles ».
  • Sélectionnez la machine virtuelle qui vous intéresse (liste déroulante « Select Virtual Machine »).
  • Sélectionnez « VirtualBox pour Linux » dans la liste 2.
  • Vous pouvez maintenant télécharger l’archive ZIP qui s’affiche dans le bloc numéro 3.

Lorsque j’ai testé cette procédure sous FreeBSD, je n’ai pas eu d’emblée le choix « VirtualBox pour Linux ». Il m’a fallu passer par quelques étapes supplémentaires :

  • Sélection de « VirtualBox dans Windows » dans la liste déroulante « Select Platform ».
  • La liste 3 affiche son contenu. Cliquer sur le lien « Linux » du texte « Testing on a different OS? Download for Linux or Mac » qui se trouve tout en bas.
  • Resélection de la machine virtuelle.
  • Et cette fois-ci la liste 2 propose « VirtualBox pour Linux ».

Site web modern.IE

Site web modern.IE

  • Etape 3 : Décompression de l’archive téléchargée

Le fichier téléchargé est au format ZIP. Vous devez donc tout d’abord le décompresser. Ce qui vous donnera un fichier avec une extension .ova.

  • Etape 4 : Création de la machine virtuelle

Lancez VirtualBox. Dans le menu « Fichier », sélectionnez « Importer une application virtuelle ». Puis choisissez le fichier d’extension .ova. Cliquez sur le bouton « Suivant ». Vous pouvez maintenant si vous le souhaitez configurer la machine virtuelle. Si vous avez suffisamment de ressources en mémoire, je vous recommande d’augmenter la mémoire vive de la machine virtuelle pour la porter à au moins 1 Go. Une fois la configuration effectuée, cliquez sur « Importer ». La machine virtuelle va être créée. Vous pourrez constater que cette opération nécessite un temps certain…

  • Etape 5 : Instantané

Une fois la création terminée, la nouvelle machine virtuelle s’ajoute à la liste des VM disponibles. Avant de l’exécuter pour la première fois, il est conseillé d’en faire une sauvegarde sous la forme d’un instantané (« snapshot » en anglais). Ce qui vous permettra si besoin de la restaurer comme si elle venait d’être installée. Pour cela, sélectionnez la machine virtuelle dans la liste. Puis cliquez sur le bouton « Instantanés » situé en haut à droite de la fenêtre VirtualBox. Cliquez ensuite sur le bouton « Prendre un instantané » (icone figurant un appareil photo).

  • Etape 6 : Démarrage de la machine virtuelle

Sélectionnez la machine virtuelle et cliquez sur le bouton « Démarrer » (flèche verte). La machine virtuelle se lance, et vous avez maintenant un Internet Explorer sous Linux/FreeBSD !

Machine virtuelle IE exécutée sous FreeBSD

Machine virtuelle IE exécutée sous FreeBSD