Petits plaisirs techniques

Depuis deux mois, je tra­vaille à dis­tance. Ori­gi­nal, me direz-vous. Les acti­vi­tés cultu­relles et sociales étant très réduites, et puisque j’ai plu­sieurs pro­jets en cours néces­si­tant de coder (pic­to­parle, svg-to-stl, flatten.js, unkm.fr, Time­line), j’ai repris un mode de vie proche de celui de mes années lycée et pre­mières années uni­ver­si­taires : un mara­thon heb­do­ma­daire de gee­ke­ries en tout genre. L’oc­ca­sion de sor­tir des sen­tiers que j’a­vais trop bat­tus, et de décou­vrir de nou­veaux outils, librai­ries, tech­no­lo­gies… Voi­ci un petit tour d’ho­ri­zon non exhaus­tif, qui sem­ble­ra banal à certain·e·s geeks, mais que j’ai pris plai­sir à découvrir.

Aver­tis­se­ment : certain·e·s logi­ciels ou biblio­thèques lis­tées ci-des­sous ne sont pas libres au sens de la GPL, car distribué·e·s sous licences équi­valent BSD. Je m’ex­cuse d’a­vance pour toutes les per­sonnes qui pour­raient être cho­quées par ces pra­tiques légères… (fin du mes­sage des­ti­né à Fred)

Rédaction

J’ai déjà écrit il y a peu pour par­ler de MDwi­ki, mais j’a­vais envie de par­ler aus­si un peu de mkdocs, que j’u­ti­lise main­te­nant mas­si­ve­ment pour fabri­quer les sites inter­net de mes dif­fé­rents pro­jets, pro­fes­sion­nels ou per­son­nels (mer­ci Vincent Maze­nod). Facile à prendre en main, il s’ap­puie sur une hié­rar­chie de docu­ments au for­mat mark­down, dis­pose d’un maxi­mum d’ex­ten­sion et de thème, dont le très chouette Mate­rial, notam­ment en action sur le site de pic­to­parle. Pour regar­der sous le capot, vous pou­vez aller faire un tour sur le dépôt qui contient le code source de ce site internet.

Android

Avec Pic­to­parle jus­te­ment, j’ai explo­ré à fond les bonnes pra­tiques d’An­droid, ain­si que quelques biblio­thèques bien pra­tiques. Je pense notam­ment à zxing, conseillé par Laurent Pro­vot, pour lire les QRcodes. Super simple à inté­grer et à uti­li­ser, c’est le pied.

J’ai aus­si pu décou­vrir le méca­nisme de la com­mu­ni­ca­tion entre pro­ces­sus conseillée par les concep­teurs d’An­droid, et très bien docu­men­tée dans cet article de Jani­shar Ali. Le prin­cipe géné­ral est d’a­voir une boucle, qui per­met aux pro­ces­sus d’é­chan­ger des ins­truc­tions exé­cu­tables, ou Run­nable. Les ThreadHand­ler s’oc­cupent de récu­pé­rer les ins­truc­tions des­ti­nées à leur pro­ces­sus, en écou­tant ce qui cir­cule sur la boucle.

J’ai aus­si décou­vert le méca­nisme des frag­ments, per­met­tant de géné­rer auto­ma­ti­que­ment un graphe de navi­ga­tion dans les dif­fé­rentes vues de l’appli­ca­tion. J’ai aus­si mieux com­pris com­ment fonc­tionne le mul­ti­touch sous Android, très orien­té détec­tion de gestes, et que j’ai un peu contour­né pour per­mettre à mon outil d’i­gno­rer les doigts sup­plé­men­taires à la sur­face des pictogrammes.

Géométrie et géomatique

Les opé­ra­tions boo­léennes entre formes géo­mé­triques (union, inter­sec­tion, dif­fé­rence) sont sou­vent peu stables, notam­ment quand elles tra­vaillent avec des nombres à vir­gules flot­tantes. C’est encore plus vrai quand il s’a­git de gérer des super­po­si­tions de bords d’ob­jets… En javas­cript, j’ai décou­vert la librai­rie mar­ti­nez, implé­men­ta­tion d’un article de 2018, qui marche rela­ti­ve­ment bien, en pre­nant en compte plein de cas limites, et qui est très rapide. D’a­bord uti­li­sée dans svg-to-stl, je l’ai aus­si réuti­li­sée dans unkm.fr pour recher­cher effi­ca­ce­ment les inter­sec­tions entre routes.

J’ai aus­si décou­vert RBush et fast­bush, deux outils de détec­tion rapide d’in­ter­sec­tion entre rec­tangles, que j’ai uti­li­sé dans svg-to-stl et dans unkm.fr.

J’ai aus­si redé­cou­vert la sim­pli­ci­té d’u­ti­li­sa­tion de lea­flet, qui per­met très rapi­de­ment de des­si­ner des choses sur une carte. C’est d’ailleurs un outil que j’u­ti­lise avec les copains du pro­jet Com­pas. On aura bien­tôt des choses à mon­trer, j’espère !

Enfin, map­sha­per qui per­met de mani­pu­ler en ligne de com­mande des don­nées géo­gra­phiques au for­mat sha­pe­file ou geo­j­son, par exemple pour sim­pli­fier les contours des dépar­te­ments dans unkm.fr :

mapshaper -i input.shp snap -proj wgs84 -simplify 25% weighted keep-shapes -o format=geojson precision=0.00001 output.json

Scripter, programmer

Map­sha­per per­met­tant de fabri­quer des geo­j­son, on peut vou­loir les modi­fier, comme ce que j’ai fait avec les dépar­te­ments, grâce au super outil jq. On écrit des règles de fil­trage, de par­cours, de sélec­tion, comme à l’é­poque des véné­rables XPath et XSLT, le tout en ligne de com­mande. En une ligne, on extrait d’un gros fichier la géo­mé­trie de chaque département :

jq -c ".features[] | .properties.code_insee" output.json | while read line; do fname=${line//\"}.json; jq -c ".features[] | select(.properties.code_insee==$line)" output.json > $fname; done

Il faut aus­si que je confesse ici avoir mis un doigt dans VSCo­dium (encore une fois grâce à Vincent Maze­nod). Cet édi­teur de code déve­lop­pé par Micro­soft est super bien pen­sé, il se fait trans­pa­rent, s’a­dap­tant flui­de­ment aux usages, avec pas mal de fonc­tion­na­li­tés dis­crètes mais effi­caces. Dis­tri­bué sous licence libre (enfin MIT), il est dis­po­nible sur la plu­part des sys­tèmes d’ex­ploi­ta­tion, notam­ment dans une ver­sion allé­gée des par­ties de tra­cking et de télé­mé­trie main­te­nues par Microsoft.

Multimédia

Dans la famille des outils mul­ti­mé­dias, j’ai d’a­bord décou­vert avec grand plai­sir que kden­live était deve­nu un édi­teur de vidéo très stable. Mon sou­ve­nir datait de 10 ans en arrière, et c’é­tait plu­tôt un sou­ve­nir sombre. Je l’ai cepen­dant uti­li­sé pour une toute petite tran­si­tion, mais il a fait le job très bien. J’ai aus­si fait un peu de modé­li­sa­tion 3D avec blen­der, en pro­fi­tant des bonnes pra­tiques que Blen­der Guru pré­sente sur sa chaîne you­tube, que je suis avec grand plai­sir. Même si j’ai uti­li­sé une ver­sion 2.7x, les vidéos de ces der­niers mois autour de blen­der 2.8x donnent très très envie de s’y frotter.

En par­lant de nou­velles ver­sions de logi­ciels, je ne peux pas m’empêcher de signa­ler qu’inks­cape vient d’être publiée en ver­sion 1.0. La vidéo de démons­tra­tion montre une évo­lu­tion dans la conti­nui­té des ver­sions pré­cé­dentes, avec des concepts simples, mais efficaces :

Pré­sen­tai­ton d’inks­cape 1.0

Et pour finir, je pro­fite de ce billet pour par­ta­ger la décou­verte il y a quelques mois de splee­ter, l’ou­til conçu par Dee­zer pour sépa­rer la voix des musiques depuis un fichier son. Idéal pour se pré­pa­rer un karaoke ! Le résul­tat est sou­vent bluf­fant, et il semble uti­li­ser mas­si­ve­ment l’ap­pren­tis­sage pro­fond. À essayer !