Voici quelques programmes OCaml que j’ai écrits (je n’ai en général pas beaucoup d’imagination, donc les noms ne sont pas très originaux pour la plupart ; si quelqu’un trouve des noms sympathiques, qu’il n’hésite pas à me les proposer).
)« Anniversaires » est un petit programme de rappel d’anniversaires, il vous permet de tenir à jour une liste des personnes que vous connaissez ainsi que leur date de naissance (ou d’anniversaire) et à chaque démarrage de l’ordinateur vous rappelle les anniversaires proches.
Il est écrit en GTK+2, donc nécessite la librairie lablgtk2. Sous Linux, il y a très
certainement déjà un paquet de disponible dans les dépôts de votre distribution favorite, sous Mac OS, il y a un paquet de disponible sur MacPorts (ici) donc ça n’a pas l’air très dur à installer ;
par contre sous Windows c’est assez compliqué, mais faisable, donc cherchez un peu et vous trouverez sans doute.
La compilation produit deux exécutables, Anniversaires et Modificateur. Le premier est le programme à placer en lancement automatique au démarrage de l’ordinateur
(ou pas), il récupère la liste des anniversaires connus, les compare au jour courant et ouvre le cas échéant une petite fenêtre rappelant les anniversaires
proches. Le deuxième est le programme permettant de consulter, modifier, ajouter ou supprimer des anniversaires.
Sous Mac ou Linux, la liste des anniversaires est stockée dans le fichier ~/.anns.ann en un format XML fait maison. J’ai fait ce programme à une époque où je venais de découvrir
l’XML, vous avez donc droit à un fichier XML parfaitement valide, avec le doctype inclus dans le fichier et tout, ainsi qu’un analyseur lexical fait en ocamllex (je venais aussi de découvrir
ocamllex).
)C’est le programme avec lequel j’ai fait l’image en haut à gauche de cette page, ainsi que le favicon.
Il peut prendre comme options la taille de l’entrelacs que l’on souhaite, le nombre de couleurs (ou un encadrement du nombre de couleurs), la longueur minimale et éventuellement maximale des brins (pour éviter les petites boucles) ainsi que le type de symétrie (horizontale, verticale, les deux, rotation de 90°, rotation de 180°, ou bien aucune symétrie). L’entrelacs est ensuite généré au format SVG (encore du XML ^^) dans le fichier spécifié, ou à défaut sur la sortie standard, avec des couleurs choisies aléatoirement. Il est très facile de modifier ensuite les couleurs en modifiant directement le CSS inclus dans le fichier SVG.
Attention, il n’y a pas de vérification que les différentes options sont compatibles. Si vous demandez un entrelacs de taille 3 × 3 avec 18 couleurs, le programme génèrera des entrelacs de taille 3 × 3 aléatoirement jusqu’à en trouver un avec le bon nombre de couleurs. Comme il n’y en a pas, il ne s’arrêtera pas.
Un semblant d’interface graphique est également disponible (à compiler avec make ihm), mais elle est ultra minimaliste et ne règle pas le problème des boucles infinies lorsque
les options ne sont pas compatibles (nécessite lablgtk2 compilé avec le support de lablrsvg, pour le rendu des svg)
)« Subi » (celui-ci a un nom ! mais je ne me rappelle absolument plus d’où il vient) est un (micro-)client de messagerie instantanée Jabber. Il n’a pas vraiment été fait pour être utilisable, c’est plutôt un défi que je me suis lancé d’essayer de comprendre la spécification Jabber (RFC 3920 et 3921) et d’en faire un client Jabber, si ce n’est utilisable, au moins fonctionnel.
Le nom d’utilisateur et le mot de passe sont à rentrer dans le code source, avant la compilation du programme (oui, oui, c’est très pratique ^^), puis au démarrage du programme la connection au serveur est faite (authentification avec le protocole SASL) et la liste des contacts est récupérée depuis le serveur. Il n’est actuellement pas possible de démarrer une conversation depuis Subi (ni de rajouter des contacts), mais les statut et message perso des contacts présents devraient se mettre à jour en temps réel, et si quelqu’un commence une conversation avec le compte connecté sur Subi, une fenêtre de conversation s’ouvrira et permettra de continuer la conversation. Subi supporte normalement également plusieurs conversations simultanées sans s’emmêler les pinceaux sur quel message va où. Je vous laisse tester, et éventuellement rajouter plein de fonctionnalités.
,
page web)« SMOCaml » est un serveur pour Stepmania Online. Stepmania est un jeu libre de rythme, il s’agit de danser sur un tapis en suivant des flèches en accord avec la musique. Des fonctionnalités de jeu en ligne ont été rajoutées par la suite, afin de permettre à plusieurs joueurs connectés sur un même serveur de jouer ensemble sur les mêmes morceaux. Le serveur écrit initiallement était en C++ et est disponible ici.
Malheureusement, ce serveur n’est plus maintenu et ne compile même plus avec la dernière version de gcc. J’ai vainement essayé de le réparer pour qu’il compile à nouveau, sans succès, puis j’ai remarqué qu’il y avait dans les sources un fichier texte expliquant le protocole utilisé pour communiquer entre le serveur et le client. J’ai donc décidé de programmer mon propre serveur pour Stepmania Online (en OCaml).
Il est a priori complètement utilisable et relativement bien personnalisable (cf. le fichier README dans les sources) mais n’a jamais été testé à grande échelle. Un paquet pour ArchLinux est également disponible ici.