â€č retour

đŸ—ș Paper Globe : le retour !

Il y a dix ans, j’ai vu une maquette de globe terrestre sur le net, et je me suis dit que je voulais la mĂȘme. L’acheter en ligne Ă©tait alors impossible, donc j’ai tout recalculĂ©, tout reverse-engineerĂ©, et tout publiĂ© sur un petit site : Le Paper Globe. Le site a vĂ©cu sa vie, et j’ai reçu de temps en temps un email depuis l’autre bout du monde, avec une photo d’un globe fraichement montĂ©. Des classes l’ont utilisĂ©, il a Ă©tĂ© reproduit au sein d’un petit livre de poĂ©sie, il a beaucoup voyagĂ©, et c’est super.

Cette annĂ©e, au dĂ©but de l’étĂ©, j’ai reçu l’email d’un professeur de collĂšge avec une requĂȘte qui m’a tout de suite intĂ©ressĂ©. Il projetait d’étudier Mars avec ses Ă©lĂšves, et me demandait s’il Ă©tait possible d’utiliser n’importe quel fond de carte comme base pour le gabarit du Paper Globe.

En 2012, c’était mon but, mais je ne savais absolument pas comment aborder ce problĂšme : j’étais tout juste en train de me rediriger professionnellement, du design au dĂ©veloppement web. AprĂšs dix ans Ă  me former sur le tas dans divers domaines, du HTML/CSS Ă  Python et Javascript, en passant par la crĂ©ation et l’administration de diverses applications web, je me suis dit que ça pouvait valoir le coup d’essayer.

La premiĂšre Ă©tape a Ă©tĂ© de voir comment dĂ©former un carrĂ© sur une projection cartographique en un trapĂšze ou un triangle en gardant les bonnes proportions. La bibliothĂšque de manipulation d’image ImageMagick propose ça, donc j’ai dĂ©cidĂ© d’utiliser le wrapper Wand pour Python, qui donne accĂšs aux fonctionnalitĂ©s d’ImageMagick dans un langage de programmation que je connais bien.

AprĂšs une semaine Ă  penser dĂ©formations, images, angles, positionnement, masques d’opacitĂ©, format PDF, etc., j’ai publiĂ© l’utilitaire en ligne de commande Paper Globe. Cet utilitaire prend une image en entrĂ©e, et gĂ©nĂšre un fichier PDF. L’image doit ĂȘtre un fond de carte dans une projection adaptĂ©e (plate carrĂ©e, Gall Ă©quidistante ou Mercator), et le PDF gĂ©nĂ©rĂ© est un gabarit de Paper Globe prĂȘt Ă  l’impression/dĂ©coupage/pliage/montage (en format A4 ou Lettre US).

Mais je ne me suis pas arrĂȘtĂ© lĂ  : le prof qui m’avait contactĂ© ne pratique pas la ligne de commande, donc j’ai dĂ©cidĂ© de rentre mon outil le plus universel possible, via une interface web.

Le souci avec le traitement via le web, c’est que la tĂąche de transformation d’image et de gĂ©nĂ©ration du PDF prend trop de temps pour permettre un chargement normal de la page du rĂ©sultat. Pour rĂ©soudre ce problĂšme il me faut deux choses :

  • Un service web, pour fournir les pages et envoyer les gabarits aux navigateurs une fois qu’ils ont Ă©tĂ© gĂ©nĂ©rĂ©s
  • Une fonction qui fait le traitement de l’image via l’utilitaire Paper Globe de maniĂšre asynchrone

C’est grñce aux choses que j’ai apprises en collaborant à Bookwyrm que j’ai fait mes premiers choix techniques, et que j’ai ensuite pu les adapter aux besoins de mon app.

En gros, il me faut une base de donnĂ© toute simple pour garder trace des transformations (une table, moins de dix colonnes), donc j’ai choisi SQLite. Pour le traitement asynchrone, Celery + Redis me paraissaient trĂšs bien faire le travail. Pour l’application elle-mĂȘme, j’ai utilisĂ© Flask, un framework web trĂšs simple en Python, que j’ai dĂ©jĂ  utilisĂ© pour rewind.website.

Pour la partie front-end, j’ai voulu Ă©viter d’ajouter une grosse infrastructure d’application front actuelle—pas de compilation cĂŽtĂ© serveur, pas d’environnement Node.js, le moins possible de code Ă  exĂ©cuter du cĂŽtĂ© du client. Le site doit pouvoir fonctionner sans JavaScript, mais peut avoir des fonctionnalitĂ©s proches d’une app web moderne si le JS est activĂ©. Pour permettre cette approche, je me suis tournĂ© vers HTMX, une maniĂšre d’apporter des comportements d’app moderne dans un environnement de dĂ©veloppement plus classique. Ce choix m’a permis d’expĂ©rimenter les sujets que j’aborderai dans ma prochaine mission professionnelle (il faudra que j’en parle le moment venu).

AprĂšs deux ou trois semaines de dĂ©veloppement j’ai publiĂ© le projet PaperGlobe-Web, que j’ai ensuite dĂ©ployĂ© sur le site paperglo.be.

Image qui montre le Paper Globe. Le lien renvoie sur le site de l’outil.
Cliquez pour accéder au service

J’ai donc le plaisir de vous inviter Ă  gĂ©nĂ©rer/imprimer/couper/plier/monter des globes en papier !


On en discute ?



Billets liés


Feedback (en travaux)

Répondez sur votre propre site, envoyez une Webmention!

🍂 🌿 đŸŒ± đŸŒ± đŸŒ± 🌿 🌿 🌿 🍂 🌿 🌿 🍂 🌿 🌿 🍂 đŸŒ± đŸŒ± đŸŒ± 🍂 🌿 🌿 🍂 đŸŒ± 🌿 🌿 🍁 🍁 🌿 đŸŒ± 🍁 🍁 đŸŒ± đŸŒ± 🍂 🍁 đŸŒ± 🌿 đŸŒ± 🍂 🍁 đŸŒ± đŸŒ± 🌿 đŸŒ± 🌿 đŸŒ± đŸŒ± đŸŒ± đŸŒ± đŸŒ± 🌿 đŸŒ± 🌿 🍂 🌿 🍂 🌿 🌿 đŸŒ±