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.
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
- 13/11/2017 â đ pyreNoel
- 13/12/2017 â đ€ Un ordinateur mâa gĂ©nĂ©rĂ© 6526 noms de communes françaises
- 22/06/2018 â đ Amusons-nous un peu avec Python et Instagram
- 09/07/2018 â đïž rewind.website et Cast Rewinder
- 11/07/2018 â đ€ RĂ©flexions sur un problĂšme de fuseaux horaires
- 19/07/2018 â đ€ Cast Rewinder â comment gĂ©rer les Ă©lĂ©ments supprimĂ©s ?
Répondez sur votre propre site, envoyez une Webmention!