capsite

Ressources et outils pour la génération de ma capsule et de mon site
git clone git://git.asteride.xyz/~ldp/capsite.git
Journaux | Fichiers | Références

commit 8671637c60ceb9e8258f40d9b79bf31627192fb7
parent afebb96ce273ae880e003667c1fffa94b0baf851
Auteur: Selve <selve@asteride.xyz>
Date:   Sat,  8 Apr 2023 13:15:36 -0400

génération de la capsule à l'aide de m4

Ce système permet aussi la génération des fichiers html pour le site internet.

Diffstat:
AMakefile | 160+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Da_visiter.gmi | 15---------------
Darticles/avant-propos.gmi | 44--------------------------------------------
Darticles/chute_voyelles_aymara.gmi | 47-----------------------------------------------
Darticles/curiosites_catalan.gmi | 186-------------------------------------------------------------------------------
Darticles/finger_openbsd.gmi | 296-------------------------------------------------------------------------------
Darticles/index.gmi | 8--------
Dflorilege/index.gmi | 34----------------------------------
Dhumans.txt | 12------------
Dindex.gmi | 45---------------------------------------------
Alib/gemini.m4 | 95+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alib/general.m4 | 100+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alib/html.m4 | 119+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alib/inclure.m4 | 6++++++
Alib/liens.m4 | 26++++++++++++++++++++++++++
RLICENSE.txt -> src/LICENSE.txt | 0
Asrc/_.m4 | 3+++
Asrc/a_visiter.m4 | 26++++++++++++++++++++++++++
Asrc/articles/_.m4 | 5+++++
Asrc/articles/avant-propos.m4 | 44++++++++++++++++++++++++++++++++++++++++++++
Asrc/articles/chute_voyelles_aymara.m4 | 50++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/articles/curiosites_catalan.m4 | 190+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/articles/finger_openbsd.m4 | 282+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/articles/index.m4 | 15+++++++++++++++
Asrc/florilege/_.m4 | 1+
Asrc/florilege/index.m4 | 45+++++++++++++++++++++++++++++++++++++++++++++
Asrc/humans.txt | 13+++++++++++++
Asrc/index.m4 | 63+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rrobots.txt -> src/robots.txt | 0
29 files changed, 1243 insertions(+), 687 deletions(-)

diff --git a/Makefile b/Makefile @@ -0,0 +1,160 @@ +.POSIX: +.DEFAULT: tous +.SUFFIXES: +.SUFFIXES: .gz + +DOS_SRC = src +DOS_SRC_FLO = ${DOS_SRC}/florilege +DOS_SRC_ART = ${DOS_SRC}/articles +DOS_RES = res +DOS_GMI = ${DOS_RES}/gemini +DOS_HTM = ${DOS_RES}/html +DOS_GMI_FLO = ${DOS_GMI}/florilege +DOS_HTM_FLO = ${DOS_HTM}/florilege +DOS_GMI_ART = ${DOS_GMI}/articles +DOS_HTM_ART = ${DOS_HTM}/articles +DOS_DEP = depots +DOS_DEP_GMI = ${DOS_DEP}/gemini +DOS_DEP_HTM = ${DOS_DEP}/html + +GIT_GMI = ${DOS_DEP}/ggit + +FCH_SRC != find "${DOS_SRC}" -type f -name '[^_]*' + +FCH_RES_GMI = ${DOS_GMI}/index.gmi ${DOS_GMI}/a_visiter.gmi \ + ${DOS_GMI}/humans.txt ${DOS_GMI}/robots.txt \ + ${DOS_GMI}/LICENSE.txt \ + ${DOS_GMI_FLO}/index.gmi ${DOS_GMI_ART}/index.gmi \ + ${DOS_GMI_ART}/avant-propos.gmi \ + ${DOS_GMI_ART}/chute_voyelles_aymara.gmi \ + ${DOS_GMI_ART}/curiosites_catalan.gmi \ + ${DOS_GMI_ART}/finger_openbsd.gmi +FCH_RES_HTM = ${DOS_HTM}/index.html ${DOS_HTM}/a_visiter.html \ + ${DOS_HTM}/humans.txt ${DOS_HTM}/robots.txt \ + ${DOS_HTM}/LICENSE.txt \ + ${DOS_HTM_FLO}/index.html ${DOS_HTM_ART}/index.html \ + ${DOS_HTM_ART}/avant-propos.html \ + ${DOS_HTM_ART}/chute_voyelles_aymara.html \ + ${DOS_HTM_ART}/curiosites_catalan.html \ + ${DOS_HTM_ART}/finger_openbsd.html + +FCH_RES_HTM_GZ = ${FCH_RES_HTM:=.gz} + +M4_GMI = m4 -DL_FORMAT=gemini +M4_HTM = m4 -DL_FORMAT=html + +GZIP = gzip -fk9 + +SYNC = openrsync --rsync-path=/usr/bin/openrsync -va --del + +tous: gemini html + +gemini: ${FCH_RES_GMI} + +html: ${FCH_RES_HTM} ${FCH_RES_HTM_GZ} + +${FCH_RES_HTM_GZ}: ${FCH_RES_HTM} + ${GZIP} ${@:.gz=} -o $@ + +${DOS_GMI}/index.gmi: ${DOS_SRC}/index.m4 + @mkdir -p ${DOS_GMI} + ${M4_GMI} ${DOS_SRC}/index.m4 > $@ + +${DOS_HTM}/index.html: ${DOS_SRC}/index.m4 + @mkdir -p ${DOS_HTM} + ${M4_HTM} ${DOS_SRC}/index.m4 > $@ + +${DOS_GMI}/a_visiter.gmi: ${DOS_SRC}/a_visiter.m4 + @mkdir -p ${DOS_GMI} + ${M4_GMI} ${DOS_SRC}/a_visiter.m4 > $@ + +${DOS_HTM}/a_visiter.html: ${DOS_SRC}/a_visiter.m4 + @mkdir -p ${DOS_HTM} + ${M4_HTM} ${DOS_SRC}/a_visiter.m4 > $@ + +${DOS_GMI}/humans.txt: ${DOS_SRC}/humans.txt + @mkdir -p ${DOS_GMI} + cp ${DOS_SRC}/humans.txt $@ + +${DOS_HTM}/humans.txt: ${DOS_SRC}/humans.txt + @mkdir -p ${DOS_HTM} + cp ${DOS_SRC}/humans.txt $@ + +${DOS_GMI}/robots.txt: ${DOS_SRC}/robots.txt + @mkdir -p ${DOS_GMI} + cp ${DOS_SRC}/robots.txt $@ + +${DOS_HTM}/robots.txt: ${DOS_SRC}/robots.txt + @mkdir -p ${DOS_HTM} + cp ${DOS_SRC}/robots.txt $@ + +${DOS_GMI}/LICENSE.txt: ${DOS_SRC}/LICENSE.txt + @mkdir -p ${DOS_GMI} + cp ${DOS_SRC}/LICENSE.txt $@ + +${DOS_HTM}/LICENSE.txt: ${DOS_SRC}/LICENSE.txt + @mkdir -p ${DOS_HTM} + cp ${DOS_SRC}/LICENSE.txt $@ + +${DOS_GMI_FLO}/index.gmi: ${DOS_SRC_FLO}/index.m4 + @mkdir -p ${DOS_GMI_FLO} + ${M4_GMI} ${DOS_SRC_FLO}/index.m4 > $@ + +${DOS_HTM_FLO}/index.html: ${DOS_SRC_FLO}/index.m4 + @mkdir -p ${DOS_HTM_FLO} + ${M4_HTM} ${DOS_SRC_FLO}/index.m4 > $@ + +${DOS_GMI_ART}/index.gmi: ${DOS_SRC_ART}/index.m4 + @mkdir -p ${DOS_GMI_ART} + ${M4_GMI} ${DOS_SRC_ART}/index.m4 > $@ + +${DOS_GMI_ART}/avant-propos.gmi: ${DOS_SRC_ART}/avant-propos.m4 + @mkdir -p ${DOS_GMI_ART} + ${M4_GMI} ${DOS_SRC_ART}/avant-propos.m4 > $@ + +${DOS_GMI_ART}/chute_voyelles_aymara.gmi: ${DOS_SRC_ART}/chute_voyelles_aymara.m4 + @mkdir -p ${DOS_GMI_ART} + ${M4_GMI} ${DOS_SRC_ART}/chute_voyelles_aymara.m4 > $@ + +${DOS_GMI_ART}/curiosites_catalan.gmi: ${DOS_SRC_ART}/curiosites_catalan.m4 + @mkdir -p ${DOS_GMI_ART} + ${M4_GMI} ${DOS_SRC_ART}/curiosites_catalan.m4 > $@ + +${DOS_GMI_ART}/finger_openbsd.gmi: ${DOS_SRC_ART}/finger_openbsd.m4 + @mkdir -p ${DOS_GMI_ART} + ${M4_GMI} ${DOS_SRC_ART}/finger_openbsd.m4 > $@ + +${DOS_HTM_ART}/index.html: ${DOS_SRC_ART}/index.m4 + @mkdir -p ${DOS_HTM_ART} + ${M4_HTM} ${DOS_SRC_ART}/index.m4 > $@ + +${DOS_HTM_ART}/avant-propos.html: ${DOS_SRC_ART}/avant-propos.m4 + @mkdir -p ${DOS_HTM_ART} + ${M4_HTM} ${DOS_SRC_ART}/avant-propos.m4 > $@ + +${DOS_HTM_ART}/chute_voyelles_aymara.html: ${DOS_SRC_ART}/chute_voyelles_aymara.m4 + @mkdir -p ${DOS_HTM_ART} + ${M4_HTM} ${DOS_SRC_ART}/chute_voyelles_aymara.m4 > $@ + +${DOS_HTM_ART}/curiosites_catalan.html: ${DOS_SRC_ART}/curiosites_catalan.m4 + @mkdir -p ${DOS_HTM_ART} + ${M4_HTM} ${DOS_SRC_ART}/curiosites_catalan.m4 > $@ + +${DOS_HTM_ART}/finger_openbsd.html: ${DOS_SRC_ART}/finger_openbsd.m4 + @mkdir -p ${DOS_HTM_ART} + ${M4_HTM} ${DOS_SRC_ART}/finger_openbsd.m4 > $@ + +test: + doas cp -r res/html/* /var/www/htdocs/test/ + +publier: publier-gemini publier-html + +publier-gemini: + ${SYNC} ${DOS_GMI}/ 'asteride.xyz:/var/gemini/asteride.xyz/~selve/' + +publier-html: + ${SYNC} ${DOS_HTM}/ 'asteride.xyz:/var/www/htdocs/asteride.xyz/~selve/' + +balais: + rm -rf res/gemini/* + rm -rf res/html/* diff --git a/a_visiter.gmi b/a_visiter.gmi @@ -1,15 +0,0 @@ -# À visiter - -=> gemini://si3t.ch Si₃TcH -Capsule de prx. J'aime beaucoup lire ses tutoriels informatiques et ses opinions sur le domaine. Ses articles concernent surtout Unix et le Web. C'est un utilisateur d'OpenBSD, et le système est souvent abordé. On y trouve l'excellent guide « Héberger son serveur avec OpenBSD », qui m'a été et qui continue de m'être d'une grande utilité. Il publie parfois des textes à teneur politique, ce que j'apprécie. - -=> gemini://gemlog.gamifi.cat Gamifi.ca't! -Capsule trilingue catalanophone, espérantophone et hispanophone. On y trouve beaucoup de choses, mais ce sont surtout ses textes en faveur du logiciel libre et de la fédivers qui ont attiré mon attention jusqu'à maintenant. C'est une occasion de plus de pratiquer mon catalan. - -=> gemini://perso.pw/blog/ Solène's gemini space -Capsule surtout anglophone (avec quelques rares articles en français) de Solène, développeuse d'OpenBSD. Elle publie surtout des tutoriels informatiques et des commentaires sur des programmes informatiques qu'elle a utilisés. Ses articles sont très intéressants. - -=> gemini://warmedal.se/~antenna Antenna -C'est un agrégateur de publications sur Gemini. On peut donc y découvrir de nouvelles capsules intéressantes. - -=> . Revenir à la page d’accueil diff --git a/articles/avant-propos.gmi b/articles/avant-propos.gmi @@ -1,44 +0,0 @@ -# Avant-propos - -``` Publié le 21 août 2021 et modifié le 7 avril 2023 -Publié le 21 août 2021 et modifié le 7 avril 2023 -``` - -Je tiens à présenter ce petit coin d’Internet qui m’est réservé et qui sera le relais des curiosités et des réflexions, sérieuses ou légères, qui me viennent et que j’estime dignes d’être partagées. - -Je suis un étudiant au baccalauréat en linguistique et je m’intéresse beaucoup à cette discipline. Il ne faudra donc pas se surprendre de la voir venir garnir cette capsule. J’ai d'ailleurs déjà quelques idées d’articles en tête. Mais la linguistique n’accapare pas toute mon attention, car je m’intéresse aussi à l’informatique, à l’organisation sociale, à l’actualité, etc. Autant de sujets susceptibles d’être abordés ici. Je pourrai aussi publier des tutoriels si j’en imagine et réalise que je croie pertinents. - -Le ton pourra varier : dans un article, je défendrai avec vigueur une idée qui me tient à cœur, et dans un autre, je serai ambivalent, ou peut-être même complètement indifférent. Peu importe, je ne veux jamais qu’on me croie véritablement convaincu. Je ne cesse de douter, mais, lorsqu’il m’arrive de ne pas trouver de contrargument substantiel aux opinions que je formule, je peux difficilement m’empêcher de les soutenir vigoureusement. Ce que j’espère que ce cybercarnet pourra apporter, ce sont des idées. Je ne sais pas si elles seront intéressantes ; je serais surpris qu’elles soient nouvelles ; mais je peux assurer qu’elles ne seront toujours défendues que provisoirement. - -Si jamais je suis lu — ce qui n’est pas donné —, j’aimerais beaucoup que le lecteur me dise ce qu’il pense de ce que j’ai écrit et qu’il me corrige s’il en sait plus que moi. C’est une chose qui m’apparait extrêmement enrichissante. - -Le fait que je doute implique que je suis susceptible de changer d’avis. De même, il est probable que des idées sur un sujet dont un de mes articles avait déjà traité me viennent après sa publication ; et il est inévitable que quelques coguilles se glissent quelque part. Je pourrai donc modifier des articles une semaine, un mois, des années après les avoir publiés. Il est vrai qu’il existe un certain type de contenu qui se prête mal à ce genre de révision ; je me contenterai alors d’en corriger les coquiIles. Par souci de transparence et parce que j’ai été influencé par une idée de Solderpunk, je rends disponible le dépôt git de cette capsule. On pourra donc en consulter tout l’historique, et si on le veut vraiment, en étudier les changements. - -=> https://sr.ht/~selve/selve.xyz/ Dépôt git de cette capsule -=> gemini://gemini.circumlunar.space/~solderpunk/gemlog/low-budget-p2p-content-distribution-with-git.gmi Texte où Solderpunk présente son idée (en anglais) - -Je crois avoir à dire quelques mots au sujet de la structure de cette capsule. Au cours de l’une de mes visites dans le cyberespace, j’ai cherché à identifier ce qui fait les bonnes capsules et les bons sites. L’intérêt du contenu est bien sûr le critère décisif, mais outre cela, j’ai pu trouver une propriété structurale que j’estime importante. Je ne sais pas si je devrais la nommer « désordre », « profondeur » ou « richesse ». Elle est caractérisée par un réseau de pages entremêlées, peut-être disparates, qui obéissent pourtant à leur propre structure interne, en des labyrinthes où l’on peut se perdre, en des curiosités qu’on découvre par hasard. J’aime les capsules assez garnies pour qu’on puisse y faire du tourisme et dont on découvre encore de nouveaux racoins à chaque visite. Je veux qu’on puisse un jour trouver ce genre d’atmosphère et de richesse sur la mienne. Cela prendra du temps, et ma capsule risque de rester pauvre un certain moment à cet égard. - -J’ai donc voulu imaginer la structure de ma capsule de telle sorte qu’elle n’en contraigne pas trop inflexiblement les possibilités de désordre. Je ne crois pas avoir atteint cet objectif complètement. Aussi est-il possible que la structure de cette capsule change un jour. - -J’aime beaucoup les flux RSS (ou Atom, peu importe), et je veux que la structure de ma capsule s’y prête bien. Sa colonne vertébrale sera donc un cybercarnet, dont ce texte est d’ailleurs la première publication. Les articles y seront affichés en ordre antéchronologique. Si ce modèle temporel est simple et utile, je soupçonne qu'il tende à favoriser d’une part le roulement et d’autre part l’obsolescence rapide de son contenu, dont le corolaire semble être la publication fréquente de nouveaux articles superficiels et peu réfléchis puisqu’éphémères. Certains vivent bien avec ce système et réussissent à faire des sites et des capsules intéressants qui ne souffrent pas ou peu de ces écueils. Ça ne correspond cependant pas à l’image idéale que je me fais de ma capsule. Je prévois donc établir, lorsque mes publications seront suffisamment nombreuses, une organisation parallèle qui classera les articles thématiquement. Avec le temps, ils constitueront une sorte de wiki personnel public que je maintiendrai continuellement. - -Pour l’instant, le seul format de flux disponible sur ma capsule est gemsub. Je créerai un flux Atom plus tard. - -=> . Cybercarnet - -À côté de ce cybercarnet, j’ai décidé de créer un florilège. Si le premier contiendra des textes plus longs et — on l’espère — plus réfléchis, le florilège rassemblera des textes très courts où l’on pourra trouver aussi bien des passages que j’ai lus quelque part et qui m’ont particulièrement plu que des pensées personnelles trop courtes ou trop peu matures pour faire l’objet d’un article dans le cybercarnet. Ce sera en même temps pour moi une façon de conserver ces citations et ces pensées que je ne veux pas perdre. On peut naturellement s’attendre à ce que cette section soit alimentée plus fréquemment que le cybercarnet. - -=> ../florilege/ Florilège - -Finalement, conformément à mon intention de créer un peu de « désordre » dans ma capsule, je créerai parallèlement des pages indépendantes de ces trois sections. Pour l'instant, cette idée est portée seule par une page contenant des liens vers quelques capsules que je trouve intéressantes. - -=> ../a_visiter.gmi Capsules à visiter - -Cette capsule n’est actuellement disponible qu’à travers Gemini. C’est un choix de simplicité qui ne me force pas à la convertir en plusieurs formats. J’ai déjà eu mon propre site Web par le passé et je n’exclus pas d’exporter cette capsule vers Gopher et vers le Web un jour, peut-être bientôt. - -Je tâche de publier le plus souvent possible, mais j’écris lentement, et je suis parfois pris de paresse ; le rythme de mes publications n'est pas très régulier. Je continue à viser le mois ; on verra si un jour j'arrive. - -— Selve - -=> ../ Revenir à la page d’accueil diff --git a/articles/chute_voyelles_aymara.gmi b/articles/chute_voyelles_aymara.gmi @@ -1,47 +0,0 @@ -# Chute de voyelles conditionnée morphologiquement en aymara - -``` Publié le 5 janvier 2022 et modifié le 7 avril 2023 -Publié le 5 janvier 2022 et modifié le 7 avril 2023 -``` - -Sauf indication contraire, toute l'information qui est présentée ici vient de Hardman (2001). - -L'aymara est une langue indigène d'Amérique du Sud parlée principalement aux abords du lac Titicaca, de chaque côté de la frontière séparant le Pérou de la Bolivie. Elle est singulière à plusieurs égards et sait déstabiliser celui qui ne connait rien de plus exotique que les langues européennes. Elle réapparaitra assurément dans un autre article. - -L'aymara est une langue agglutinante, c'est-à-dire que les mots qu'elle forme sont souvent composés d'un grand nombre de petites unités porteuses de sens appelées morphèmes. Autrement dit, ses mots tendent à être longs et complexes. Du point de vue de la forme, ces morphèmes se répartissent en deux classes : celle des racines et celle des suffixes. On peut, pour les besoins de l'exposé, définir le mot aymara comme étant une racine seule ou une racine à laquelle se sont agglutinés un ou plusieurs suffixes. - -Par exemple, le mot « utankaña », qui signifie « être à la maison », se compose de quatre morphèmes : « Uta », qui veut dire « maison » et qui est la racine du mot ; « ni », qui exprime la possession ; « ka », qui convertit un nom en verbe, avec le sens de « X est (quelque part) » ; « ña », qui convertit un verbe en nom et qui est, en l'occurrence, à rapprocher d'une marque d'infinitif. - -On constate que la simple agglutination des suffixes à la racine donnerait « utanikaña ». Or, la forme attestée est « utankaña », sans le « i », donc. C'est ce phénomène de chute de voyelles que je veux expliquer. - -En se combinant, plusieurs suffixes imposent la chute ou le maintien de la voyelle qui les précède ou qui les termine. Ces règles sont entièrement lexicales et font partie de la nature même d'un suffixe ; si quelques régularités ont été décelées, il reste indispensable de spécifier la nature combinatoire de chaque suffixe indépendamment de tout autre attribut. On peut noter la chute et le maintien des voyelles par un « (C) » et un « (V) », respectivement. Ainsi, dans l'exemple précédant, « (V)ni » impose à « uta » le maintien de sa voyelle finale, « (C)ka » en impose la chute à « utani » et « (V)ña » en impose le maintien à « utanka ». - -Un petit nombre de suffixes admet de la variation. Coler et al. (2020) ont ainsi reconnu que « pacha », « kama », « naqa » et « hama » pouvaient tantôt faire tomber la voyelle qui les précèdent, tantôt la conserver. En outre, la variation dialectale, bien que plutôt faible, peut venir modifier la nature combinatoire de certains suffixes. - -Je trouve ce phénomène franchement fantastique. Le plus intéressant est que la nature combinatoire des suffixes peut parfois servir à en distinguer certains qui semblent homophones lorsque pris individuellement. - -Hardman (2001) donne l'exemple de quatre suffixes « -ta » distincts, dont les formes ne diffèrent que par les règles combinatoires : - -* uma + (C)ta(C) + wa : umtwa (Je bois) -* uma + (V)ta(V) + wa : umatawa (Une personne soule) -* uma + (C)ta(V) + wa : umtawa (Tu bois) -* uma + (V)ta(C) + wa : umatwa (Depuis l'eau) - -Qu'arrive-t-il lorsque les suffixes imposent des règles contradictoires, lorsque celui qui précède veut conserver sa voyelle finale et que celui qui suit veut la faire chuter, ou que celui qui précède veut la faire chuter et que celui qui suit veut la maintenir? Hardman (2021), n'aborde pas la question. En revanche, Kim (2016) affirme que les règles spécifiant la chute ou le maintien de la voyelle finale n'ont pas d'influence en cas de désaccord, que les caprices du suffixe de droite ont préséance. - -D'autres phénomènes causant la chute de voyelles existent en aymara. Certains sont ainsi conditionnés phonologiquement ou syntaxiquement. Celui que je viens de présenter est le plus fréquent et reste selon moi le plus impressionnant. - -## Bibliographie - -* Hardman, M. J. (2001). Aymara (Ser. Lincom studies in native american linguistics, 35). LINCOM Europa. -* Kim Y. (2016). Vowel elision and the morphophonology of dominance in Aymara. Onomázein, 33(21), 367-384. -* Coler, M., Emlen, N. Q., Banegas-Flores, E. (2020). Vowel deletion in two Aymara varieties. Italian Journal of Linguistics, 32(1), 151-174. - -## Voir aussi - -=> https://fr.wikipedia.org/wiki/Aymara_(langue) Page Wikipédia (la page en espagnol est plus complète) -=> http://www.ilcanet.org/publicaciones/pdf_compendio.html Grammaire de l'aymara (en espagnol) - -— Selve - -=> ../ Revenir à la page d’accueil diff --git a/articles/curiosites_catalan.gmi b/articles/curiosites_catalan.gmi @@ -1,186 +0,0 @@ -# Quelques curiosités du catalan - -``` Publié le 11 septembre 2022 et modifié le 7 avril 2023 -Publié le 11 septembre 2022 et modifié le 7 avril 2023 -``` - -Devant l'immense diversité des langues du monde, le francophone ne se doute peut-être pas que le catalan, langue avec laquelle le français partage pourtant de nombreux traits linguistiques, est rempli de curiosités capables de l'émerveiller. Il est vrai que les deux langues se ressemblent beaucoup. Non seulement sont-elles toutes deux issues de la même mère, le latin, mais leur évolution a pris un cours semblable : bon nombre des changements linguistiques qui ont modelé l'une ont aussi modelé l'autre. - -C'est d'ailleurs avant tout en raison d'intérêts d'ordre politique que j'ai moi-même commencé à apprendre le catalan : la Catalogne vit en effet une période fort intéressante sur ce plan. Son histoire ne manque pas d'intérêt non plus. Et bien que j'étudie la linguistique, c'était moins en sa qualité de langue que comme porte d'entrée vers sa culture que le catalan m'attirait. Cependant, dès le premier jour de mon apprentissage, et régulièrement par la suite, j'ai découvert une foule de faits sur la langue, anecdotiques ou fondamentaux, qui n'ont pas cessé de m'enchanter. Cette langue ne présente peut-être pas l'exotisme des médiatifs de l'aymara, des tons du cantonais ou des racines trilitères de l'hébreu, mais ce n'est pas pour autant que le francophone n'a rien à y trouver d'intéressant. Au contraire, la proximité du catalan et du français permet justement d'explorer plus facilement et plus profondément des caractéristiques qui auraient demandé de longues explications eussent-elles été présentes dans une langue aux structures plus dépaysantes et au vocabulaire moins familier. Le regard sur une langue sœur permet en outre la comparaison et peut ainsi servir à exposer des pans peu connus de l'histoire de notre propre langue. - -Je veux présenter quatre aspects du catalan qui risquent d'intéresser le francophone : l'auxiliaire « anar » du passé périphrastique, le forclusif de négation « pas », l'influence de l'accent tonique dans la phonologie catalane et une manière unique de dire l'heure. - -À l'image de la plupart des autres langues, le catalan n'est pas homogène et fédère un ensemble de variétés parlées notamment à Andorre, à Valence[1], aux Îles Baléars, en Catalogne et à L'Alguer. Si elles partagent toutes les mêmes traits fondamentaux qui témoignent de l'appartenance à une même langue, elles divergent en certains points. Mais, je n'en dirai pas plus, car la dialectologie catalane est un thème trop vaste pour cet article. Je me contenterai d'avertir le lecteur que c'est à la variété centrale, parlée en Catalogne[2], que la plupart de traits que j'exposerai ici s'appliqueront. - -=> https://fr.wikipedia.org/wiki/Dialectologie_de_la_langue_catalane Article de Wikipédia sur la dialectologie catalane - -Avant de poursuivre, je tiens à insister sur le fait que le catalan n'est pas ma langue maternelle. Je me suis appuyé sur des ouvrages de référence et sur des œuvres de la litérature catalans, mais il n'est pas impossible que des erreurs se soient malencontreusement glissées dans ce texte. Si ce devait être le cas, je prie le lecteur de me le faire savoir. - -## Passé périphrastique - -En français et dans plusieurs autres langues, l'auxiliaire du verbe correspondant à « aller » marque le futur. Nous avons ainsi « Je vais manger », « Voy a comer » (espagnol), « I am going to eat » (anglais), etc. En catalan, c'est toutefois le passé que l'auxiliaire « anar » exprime : « Vaig menjar » ne signifie pas « Je vais manger », mais bien « J'ai mangé. » - -Le passé périphrastique relate une action passée, réalisée au sein d'un cadre temporel envisagé comme un tout. En ce sens, il s'oppose à l'imparfait (imperfet), qui a la même valeur que son équivalent français. Là où l'imparfait installe le contexte (« quan l'Alba ja _deixava_ el cistellet… »), le passé périphrastique le meuble par les actions qui s'y produisent (« …el cel i la terra _van començar_ a vibrar »). - -* I aleshores, quan l'Alba ja deixava el cistellet per tal de llançar-se a l'aigua […], el cel i la terra van començar a vibrar amb una mena de trepidació sorda que s'anava accentuant. (Manuel de Pedrolo, 2013) -* Et alors, quand Aube délaissait déjà le panier afin de se lancer à l'eau […], le ciel et la terre comencèrent à trembler d'une sorte d'émoi qui allait en s'accentuant. - -Le passé périphrastique s'oppose également au passat d'indicatiu, plus ou moins analogue au passé composé français. Ces deux temps verbaux s'utilisent pour présenter comme un tout insécable une action passée. La différence qui les distingue réside dans la distance temporelle entre cette action et son énonciation. Si l'action et l'énonciation font partie d'une même période temporelle du point de vu du discours, il faut employer le passat d'indicatiu ; sinon, c'est du passé périphrastique qu'il faut se servir. Notons au passage qu'on utilise toujours le passat d'indicatiu lorsque que l'énonciation à lieu le même jour que l'action qu'elle relate. - -* La setmana passada, va quedar amb uns amics. (La semaine passée, il est sorti avec des amis.) -* Aquesta setmana, ha quedat amb uns amics. (Cette semaine, il est sorti avec des amis.) - -* L'any 1908, va néixer la Mercè Rodoreda. (Mercè Rodoreda est née en 1908.) -* Aquest any, ha nascut el seu fill. (Son fils est né cette année.) - -Le fait que le catalan utilise ainsi l'auxiliaire « aller » (« anar ») ne manque pas d'étonner ; puisqu'il désigne étymologiquement un mouvement vers quelque chose, on l'imagine plus facilement récupéré comme marqueur du futur que comme marqueur de passé. Cette particularité catalane n'est pourtant pas complètement étrangère à l'usage français. On rencontre en effet souvent, dans les narrations d'historiens notamment, des verbes conjugués au présent et au futur qui expriment indubitablement le passé. - -Voici la transcription d'un extrait de l'épisode d'Aujourd'hui l'Histoire du 3 mars 2020, Félix Leclerc, le militant : - -> Mais vers la fin des années 60, il va rencontrer sa nouvelle épouse, Gaëtane Morin, il va beaucoup fréquenter les cercles péquistes et on sent qu'il se remet à l'écriture de chansons. - -Dans cet extrait, la forme aller + infinitif exprime le passé. À la place, on aurait très bien pu dire : « il a rencontré sa nouvelle épouse », « il a beaucoup fréquenté les cercles péquistes », etc. Cet usage du futur simple pour exprimer le passé s'appelle futur historique. - -Remarquons finalement que le futur historique est un effet de style que se distingue de la manière standard d'exprimer le passé parfait en français, le passé composé. En catalan, il n'est pas question de style, car le passé périphrastique est la manière standard d'exprimer le passé parfait. - -Le processus qui a mené au futur historique en français est peut-être complètement étrangé à celui qui a mené au passé périphrastique catalan. Je veux simplement montrer que la voie catalane n'est pas complètement étrangère à l'usage français. Peut-être augmenterai-je un jour cet article de précisions diachroniques. - -## Influence de l'accent tonique - -L'accent tonique joue un rôle bien plus important en catalan qu'en français. D'abord, il est pertinent sur le plan phonologique, c'est-à-dire qu'il peu servir à distinguer deux mots autrement identiques[3]. - -Note : dans les transcriptions suivantes, le point (.) sépare les syllabes ; l'apostrophe (') précède la syllabe accentuée et remplace, s'il y a lieu, le point. Lorsque la prononciation est donnée entre des barre-obliques (//), il s'agit d'une transcription phonémique, c'est-à-dire qu'elle représente les sons tels que les locuteurs pensent intuitivement les prononcer ; lorsqu'elle est donnée entre crochets ([]), il s'agit d'une transcription phonétique, c'est-à-dire qu'elle représente les sons tels qu'ils sont prononcés[4]. - -* Brunzir /brun'zi/ (bourdonner) -* Brunzi /'brun.zi/ (que je bourdonne/qu'il bourdonne) - -* Donar /dɔ'na/ (donner) -* Dona /'dɔ.na/ (il/elle donne) - -* Secretaria /se.cre.ta'ri.a/ (secrétariat) -* Secretària /se.cre'ta.ri.a/ (secrétaire) - -De plus, la distinction entre /o/, /ɔ/ et /u/ s'efface en syllabe non accentuée : dans ce contexte, tous se prononcent [u]. - -* Donar [du'na] -* Dona ['dɔ.nə] - -Voici d'autres exemples, tirés de (IEC, 2018). - -* Fosc ['fosk] (sombre) -* Foscor [fus'ko] (obscurité) - -* Poc ['pɔc] (peu) -* Poquet [pu'kɛt] (petit peu) - -Un phénomène analogue se produit avec /a/, /e/ et /ɛ/, qui se centralisent tous en [ə] en syllabes non-accentuées. - -* Secretaria [sə.crə.tə'ri.ə] -* Secretària [sə.crə'ta.ri.ə]. - -Voici d'autres exemples, tirés également de (IEC, 2018). - -* Carrer [kər're] (rue) -* Carreró [kər.rə'ro] (ruelle) - -* Mel ['mɛl] (miel) -* Melós [mə'los] (mielleux) - -* Cantar [kən'ta] (chanter) -* Canta ['kan.tə] (il/elle chante) - -## « Pas » - -Utiliser deux mots plutôt qu'un pour marquer la négation est un trait caractéristique du français : nous disons « Je _ne_ veux _pas_ ». J'ai été très surpris d'apprendre que catalan lui aussi possède cette double marque de la négation. Seulement, à la différence du français, le « pas » y est facultatif. Les phrases « No vull » et « No vull pas » sont toutes deux grammaticales. - -Ces deux phrases n'ont cependant pas exactement le même sens. La première est équivalente à la phrase en français ; la seconde met davantage l'accent sur le fait de ne pas vouloir. Elle est plus près de « Je ne veux pas du tout. » - -Le français réservait il y a fort longtemps un usage bien différent au forclusif « pas ». Cette particule servait à renforcer la négation et était à l'origine beaucoup plus chargée sémantiquement. Dire « Je ne marche pas. » signifiait alors « Je ne marche pas même un pas. » et dire « Je n'écris point. » signifiait « Je n'écris pas même un point. » L'inventaire de forclusifs était alors beaucoup plus riche, et l'on disait volontiers « Je ne bois goutte. » et « Je ne mange mie. » - -Avec le temps, « pas » et « point » se sont généralisés et les autres forclusifs sont tombés en désuétude. Leurs sens se sont aussi progressivement effacés, jusqu'à ce qu'ils deviennent interchangeables et qu'ils ne gardent plus rien du pas qu'on marche et du point qu'on écrit. - -À cette époque ces forclusifs avaient à peu près le même usage que celui qui prévaut en catalan. On ne les employait que pour renforcer un affirmation et on les laissait de côté le reste du temps. - -En quête d'expressivité plus grande, les francophones se mirent à employer ces forclusifs de plus en plus souvent, en particulier « pas ». Mais leur sens ternissait de plus en plus à mesure que leur utilisation s'intensifiait, la force d'une expression venant beaucoup de la parcimonie avec laquelle on l'emploie ; c'est un principe d'économie. Avec le temps, « pas » en est venu à être si fréquent qu'il est devenu obligatoire. On appelle grammaticalisation ce processus par lequel un simple mot de vocabulaire entre dans la grammaire. - -Et maintenant, c'est le marqueur de négation originel « ne » qui est devenu facultatif et qui est en voie de disparition, car on entend plus souvent « Je veux pas » que « Je ne veux pas ». - -Les Catalans ont su rester parcimonieux, et dans leur langue « pas » conserve encore toute sa force[5]. Il est vrai que le catalan septentrional (aussi appelé roussillonnais), parlé en Catalogne-Nord, a tout comme le français supprimé la particule de négation originelle correspondant à « ne » et que « pas » y est obligatoire. - -## Dire l'heure - -Plusieurs façons de dire l'heure cohabitent dans les pays catalans, mais la plus traditionnelle est appelée « sistema de campanar ». Elle doit son nom aux clochers des églises dont les tintements, à tous les quarts d'heure, servent de repère. - -Contrairement au français, l'expression des heures requiert l'article défini. Le mot « hora » (« heure ») n'est pas prononcé, mais étant sous-entendu, l'article est féminin. De plus, l'article est singulier lorsque l'heure en question est 1h et pluriel dans les autres cas. - -* Avui, m'he aixecat a les vuit. -* Aujourd'hui je me suis levé à huit heures (aux huit). - -* Ja és la una. -* Il est déjà une heure (la une). - -Le sistema de campanar admet deux subdivisions de l'heure. D'abord le quart d'heure. Il s'additionne aux heures, mais le fait d'une manière assez singulière. Mieux vaut d'abord présenter quelques exemples. - -* Un quart de vuit. -* 7h15. (un quart de huit). - -* Tres quarts de deu. -* 9h45. (trois quarts de dix). - -* Dos quarts de dues. -* 1h30. (deux quarts de deux). - -Nous voyons que l'heure exprimée est systématiquement décalée d'une heure par rapport à ce qu'aurait donné une simple addition des heures et des quarts d'heure. C'est que pour savoir ce que signifie « Un quart de vuit », il ne faut pas additionner 1 quart d'heure à 8h, mais 1 quart d'heure à la huitième heure, qui est 7h. En effet, à minuit commence la première heure, à une heure la deuxième, à deux heures la troisième, etc. Ainsi, la calcul qu'il faut faire est le suivant. - -* Un quart de vuit. -* Un quart d'heure + la huitième heure = 7h15. - -* Tres quarts de deu. -* Trois quarts d'heure + la dixième heure = 9h45. - -* Dos quarts de dues. -* Deux quarts d'heure + la deuxième heure = 1h30. - -Afin d'être plus précis, le système permet l'addition et la soustraction de minutes. - -* Falten deu minuts per a les quatre. -* 3h50. (Il manque dix minutes pour les quatre). - -* És un quart i tres de set. -* 6h18. (Il est un quart et trois de sept). - -La deuxième subdivision de l'heure est le mig quart (demi quart d'heure), équivalent à sept minutes et demie. - -* Tres quarts i mig d'onze. -* 10h52. (Trois quarts et demi d'onze). - -* Mig quart de nou. -* 8h07. (Demi quart de neuf). - -Le site internet Softcatala, qui propose une foule d'outils en lien avec le catalan, rend disponible en ligne un programme permettant de convertir l'heure sous la forme HH:MM en mots, et ce pour trois systèmes différents, dont le sistema de camapanar. - -=> https://www.softcatala.org/hora-en-catala/ L'hora en català - -## Conclusion - -Voici donc quatre faits du catalan que je trouve très intéressants et qui contribuent à en faire une langue unique. Il y en a bien entendu beaucoup d'autres, et je n'exclue pas d'augmenter au jour cet article d'autres curiosités. - -## Notes - -[1] Certains affirment que la variété de catalan parlée à Valence est une langue distincte, le valencien. Je crois cependant que cette distinction n'est pas justifiée sur le plan linguistique. -[2] Il y a d'autres variétés parlées en Catalogne, la nord-occidental, par exemple. -[3] Je ne parle pas ici de l'accent graphique qui sert à distinguer à l'écrit deux homophones (« es », le pronom réflexif « se » et « és », « il est », par exemple). Je parle de l'accent tel qu'il est prononcé. -[4] La différence entre les représentations phonétiques et phonémiques s'illustre bien par l'exemple suivant. La plupart des locuteurs du français québécois, bien qu'ils remarquent à peu près tous une différence par rapport aux autres variétés de français, n'ont pas conscience de prononcer spécifiquement [pətsi] plutôt que [pəti] le mot « petit ». Il s'agit d'une différence phonétique, mais pas phonémique. La transcription phonétique de ces deux prononciations est la même, /pəti/. -[5] J'ai entendu à deux reprises, dans une vidéo d'Easy Catalan, une même personne dire « gota » (goute) : la première fois seule, avec le sens de « pas du tout », et la deuxième fois au sein d'une phrase, pour renforcer la négation (« Que no hom som gota. »). Je ne sais pas si le phénomène est courant ; c'est la première (et seule) fois que j'ai remarqué un tel usage. En tout cas, ça témoigne de la conservation d'un élément que le français a délaissé. Belle richesse. -=> https://www.youtube.com/watch?v=jQvoY5cH1nk Vidéo en question - -## Bibligraphie - -* Institut d'Estudis Catalans (IEC). (2016). Gramàtica de la llengua catalana. -* Institut d'Estudis Catalans (IEC). (2018). Gramàtica essential de la llengua catalana. -* Institut d'Estudis Catalans (IEC). (2019). Gramàtica bàsica i d'ús de la llengua catalana. -* De Pedrolo, M. (2013). Mecanoscrit del segon origen. Edicions 62. - -— Selve - -=> ../ Revenir à la page d’accueil diff --git a/articles/finger_openbsd.gmi b/articles/finger_openbsd.gmi @@ -1,296 +0,0 @@ -# Configurer un serveur finger sous OpenBSD - -``` Publié le 11 février 2023 -Publié le 11 février 2023 -``` - -Le protocole finger est à l'image des premiers temps d'Internet : simplissime et convivial[1]. Publiée en 1977, la RFC 742 est la première à en détailler le fonctionnement. Notre protocole dépasse donc aujourd'hui les 45 ans. Trois autres RFC ont suivi la première, la dernière étant la RFC 1288, publiée en 1991. - -=> https://www.rfc-editor.org/rfc/rfc742 RFC 742 -=> https://www.rfc-editor.org/rfc/rfc1288 RFC 1288 - -finger est une sorte de super carnet d'adresses en ligne. Une simple requête permet de recevoir ce qu'on pourrait appeler la « page d'accueil » du serveur, qui contient souvent la liste des utilisateurs qui y sont connectés. Augmentée d'un nom d'utilisateur, la requête fournit une somme variable d'informations concernant cet utilisateur. Il s'agit traditionnellement de son nom complet, de l'emplacement de son dossier ~/, du programme shell qu'il utilise, de la date et de l'heure de sa dernière connexion, de son numéro de téléphone, de l'état de sa boîte courriel, etc. En outre, les serveurs finger affichent typiquement le contenu des fichiers ~/.project et ~/.plan. Le premier tend à contenir des informations générales sur l'utilisateur, sur ses intérêts, etc. ; le second est souvent plus spécifique et changeant et lui sert à informer les autres de ses plans à court terme, de ce qui l'occupe, de ce qu'il explore ou veut explorer, etc. Mais ce qu'affiche une requête finger dépend en définitive des préférences de l'administrateur et de l'utilisateur. - -L'âge d'or de finger semble révolu. Il était une l'époque où très peu d'individus possédaient un ordinateur personnel et où une grande partie de ceux qui avaient à en utiliser un devaient se connecter à un ordinateur central, donc partagé, appartenant à quelque université ou entreprise. Alors, « toutes les machines Unix connectées au réseau avaient un serveur finger », dit-on[2]. Avant l'avènement du Web, c'était un des seuls moyens informatisés répandus et efficaces d'obtenir de l'information sur quelqu'un. - -Aujourd'hui, le protocole, sans être totalement tombé en désuétude, est assez marginal ; c'est le moins qu'on puisse dire. Il jouit toutefois d'un regain d'intérêt récent avec la montée de l'Internet simple et indépendant (je suis toujours à la recherche d'un terme français pour « smol web »). Il est apprécié pour sa simplicité et pour son fonctionnement décentralisé. Plusieurs serveurs tildes mettent ainsi à la disposition de leurs membres un serveur finger. - -=> gemini://zaibatsu.circumlunar.space/~solderpunk/phlog/were-bringin-finger-back.txt Article de Solderpunk « We're bringin' finger back! » (en anglais) - -J'héberge de depuis peu mon propre serveur finger. J'ai été séduit par sa simplicité et par l'espoir de le voir renaître comme moyen d'échange et de socialisation au sein des petites communautés de l'Internet citoyen. - -C'est avec OpenBSD et ses outils que j'ai monté ce serveur, et en la matière, je n'ai pas d'expérience avec d'autres systèmes. Je n'aurai donc qu'OpenBSD en tête en écrivant cet article. Je serais cependant surpris d'apprendre que la marche à suivre diffère grandement entre les systèmes de type Unix. - -## Exemples d'utilisation - -De nombreux systèmes dérivés de Unix sont livrés avec le programme finger(1), qui permet de réaliser des requêtes par ce protocole. - -``` -$ finger selve@asteride.xyz -[asteride.xyz/207.148.27.164] - - ---------------- - * ASTERIDE.XYZ * - ---------------- - -Utilisateur: selve Nom: Selve -Dossier: /home/selve Shell: /bin/ksh -Courriel: selve@asteride.xyz -Gemini: gemini://asteride.xyz/~selve/ -Langues: FranC'ais, catalan et anglais -DC)connectC) depuis le 2023-02-10 C 03:20:17 (UTC) - -[Et cetera] -``` - -Le client d'OpenBSD ne gère que l'encodage ASCII. C'est pourquoi le texte n'est pas affiché correctement. Les RFC sur finger à partir de 1194 RECOMMANDENT en effet de filtrer des caractères et de ne laisser passer que les caractères entre 32 et 126, de même que \t, \r et \n. Il est en outre spécifié que le serveur DOIT transmettre des caractères ASCII entre 128 et 255. D'habitude, je respecte les standards de bon cœur, mais quand j'écris en français, j'emploie les caractères en usage dans cette langue. Je ne me passerai ni des accents, ni des cédilles, ni des guillemets, ni, tant qu'à y être, d'autres commodités typographiques comme les ligatures. Je pense que nous pouvons nous permettre d'utiliser l'UTF-8[3]. - -Heureusement, le protocole est si simple qu'on peut simuler le fonctionnement du programme avec netcat ou telnet, qui ne souffrent pas des mêmes limitations. Il suffit d'ouvrir un connexion avec le serveur approprié au port 79 et d'envoyer une seule ligne de texte. Cette ligne correspond généralement à l'utilisateur au sujet duquel on veut obtenir de l'information. - -``` -$ telnet asteride.xyz 79 -selve - - ---------------- - * ASTERIDE.XYZ * - ---------------- - -Utilisateur: selve Nom: Selve -Dossier: /home/selve Shell: /bin/ksh -Courriel: selve@asteride.xyz -Gemini: gemini://asteride.xyz/~selve/ -Langues: Français, catalan et anglais -Déconnecté depuis le 2023-02-10 à 03:20:17 (UTC) - -[Et cetera] -``` - -On peut même créer une fonction shell avec netcat pour remplacer le client de base. Elle n'est pas complète, mais elle sait faire l'important. - -``` -finger() { - echo "$1" | grep "@" >/dev/null && - printf "${1%@*}\r\n" | nc "${1##*@}" 79 || - printf "${1%@*}\r\n" | nc 127.0.0.1 79 -} -``` - -On peut souvent obtenir la liste des utilisateurs connectés à un système en ne précisant pas de nom d'utilisateur. Bien sûr, l'administrateur est maître de ce qui est envoyé. - -``` -$ finger @asteride.xyz - - ---------------- - * ASTERIDE.XYZ * - ---------------- - -Bienvenue sur asteride.xyz. - -D'habitude, lorsqu'on interroge un serveur finger sans spécifier de nom -d'utilisateur, il répond par la liste de tous les utilisateurs actifs au -moment de la requête. Mais la liste risque d'être plutôt courte ici, -car asteride.xyz n'en compte qu'il seul : selve (il est actif en ce -moment!). - -Il vous invite à exécuter « finger selve@asteride.xyz ». -``` - -Cela revient à envoyer une ligne vide. - -``` -$ telnet asteride.xyz 79 -[ENTRÉE] - - ---------------- - * ASTERIDE.XYZ * - ---------------- - -Bienvenue sur asteride.xyz. - -[Et cetera] -``` - -asteride.xyz ne compte qu'un seul (vrai) utilisateur. On peut aller voir sur des serveurs tildes comme zaibatsu.circumlunar.space, tilde.club, tilde.institude, etc. pour consulter une liste plus longue. - -``` -$ finger @zaibatsu.circumlunar.space -$ finger @tilde.club -$ finger @tilde.institute -$ finger @etc. -``` - -Je veux aussi donner un exemple d'utilisation originale du protocole. Techniquement, il ne s'agit que d'envoyer du texte en réponse à une ligne de texte. Un serveur peut alors interpréter cette ligne comme il le veut. graph.no permet ainsi de consulter la météo avec finger. - -``` -$ finger québec~72@graph.no -[graph.no/178.255.144.27] - -= Meteogram for Quebec, Canada =- - 'C Rain (mm) --16 --17--- --18 ------ --19 ------ =-- --20 ---=--^^^ --- --21 ^^^=== --- --22 ====== --- --23 ^^^ --24 =--=-- --25 - 18 19 20 21 22 23 09/02 02 03 04 05 06 07_08_09_10_11_12 Hour - - W W W W W W W W W W W W NW W W W W W W Wind dir. - 5 5 5 5 5 4 4 4 4 4 3 3 2 2 2 1 1 1 1 Wind(m/s) - -Legend left axis: - Sunny ^ Scattered = Clouded =V= Thunder # Fog -Legend right axis: | Rain ! Sleet * Snow -[Terminal FTW!] -``` - -On peut envoyer une ligne vide pour consulter les options de ce serveur. - -``` -finger @graph.no -``` - -## Configuration - -Cette présentation achevée, nous pouvons maintenant voir comment mettre en place un serveur finger sous OpenBSD. Ce n'est pas extrêmement compliqué. D'abord, le système d'exploitation vient un serveur finger (fingerd(8)) et avec tous les outils nécessaires à son fonctionnement. - -fingerd(8) n'est pas un serveur à part entière : il ne tourne pas en arrière-plan (ce n'est un daimôn) et il n'accepte pas lui-même les connections entrantes ; il a besoin d'inetd(8) pour fonctionner. inetd(8) surveille une série de ports et transmet les requêtes à certains programmes. - -C'est par le fichier de configuration /etc/inetd.conf qu'on lui indique quels ports surveiller et quel programme exécuter en cas de requête. Un exemple de configuration est disponible au /etc/examples/inetd.conf. Ce sont les lignes qui commencent par « #finger » qui nous intéressent. Il s'agit de les copier dans le fichier de configuration /etc/inetd.conf et de retirer ces dièses qui marquent les commentaires. - -``` -$ cat /etc/inetd.conf -finger stream tcp nowait _fingerd /usr/libexec/fingerd fingerd -lsm -finger stream tcp6 nowait _fingerd /usr/libexec/fingerd fingerd -lsm -``` - -Il y a deux lignes, car on veut qu'inetd(8) soit attentif au requêtes venants d'IPv4 et d'IPv6. Si on voulait surveiller non pas le port 79, qui est le port standard de finger, mais à un autre port, on replacerait le premier champ (« finger ») par le numéro de ce port. On peut aussi écrire : - -``` -$ cat /etc/inetd.conf.fictif -79 stream tcp nowait _fingerd /usr/libexec/fingerd fingerd -lsm -79 stream tcp6 nowait _fingerd /usr/libexec/fingerd fingerd -lsm -``` - -En fait, inetd(8) consulte le fichier /etc/services pour connaître la correspondance entre le nom du service et numéro de port à utiliser. Une autre option serait donc de modifier ce fichier. - -Le quatrième champ spécifie le nom de l'utilisateur sous lequel exécuter le programme finger. Ici, il s'agit de _fingerd, ce qui est tout à fait approprié. - -Le cinquième champ donne le chemin vers le programme qui doit traiter la requête. Ici, il nous utilisons le programme inclus dans OpenBSD. Les champs suivants seront donnés en argument à ce programme (avec « fingerd » comme argument 0). Trois options sont spécifiées. -l demande de noter chaque requête dans les journaux. -s empêche le transfert des requêtes. Sans cela, la commande - -``` -finger québec~72@graph.no@asteride.xyz -``` - -demanderait à asteride.xyz d'effectuer lui-même la requête à graph.no. Celui-ci n'aurait aucune idée de l'identité de l'initiateur et penserait qu'il s'agit d'asteride.xyz. On comprend que ce n'est pas ce qu'on souhaite permettre. - -Finalement, l'option -m oblige l'utilisateur à envoyer le nom d'utilisateur exacte au serveur. Autrement, on s'attend à ce que, advenant une requête au sujet d'un utilisateur inexistant, le serveur réponde avec une liste nom d'utilisateurs qui ressemblent à celui de la requête. - -La page du manuel de fingerd(8) dresse la liste de toutes les options disponibles. - -### Modifier la réponse du serveur - -fingerd(8) offre très peu d'options pour modifier l'apparence du contenu de la réponse ; la liberté de l'utilisateur se limite à ce qu'il peut écrire dans ~/.plan et dans ~/.project. - -En fait, sur OpenBSD fingerd(8) ne s'occupe pas lui-même la recherche et de la présentation des données. Il délègue ces tâches à finger(1), le même programme qu'on utilise normalement pour effectuer une requête à partir de la ligne de commande. D'ailleurs, il est possible d'utiliser localement la commande sans serveur finger. Voici la réponse affichée par la commande finger(1) que j'ai exécutée sur mon ordinateur portable. (Notez l'absence de « @ »). - -``` -Login: selve Name: Selve -Directory: /home/selve Shell: /bin/ksh -On since Fri Feb 10 12:43 (EST) on ttyp0 from :0 -On since Fri Feb 10 13:48 (EST) on ttyp4 from :0 -On since Fri Feb 10 13:47 (EST) on ttyp6 from :0 -On since Fri Feb 10 13:49 (EST) on ttyp7 from :0 -On since Fri Feb 10 13:50 (EST) on ttyp8 from :0 -On since Fri Feb 10 14:19 (EST) on ttypa from :0 -New mail received Thu Feb 9 13:35 2023 (EST) - Unread since Wed Sep 14 18:06 2022 (EDT) -No Plan. -``` - -fingerd(8) propose d'utiliser un autre programme que finger(1). On l'indique à l'aide de l'option -P. Voici à quoi devrait ressembler le fichier de configuration d'inetd(8) si on voulait que fingerd(8) transmette le texte généré à chaque requête par le programme qui se trouve au /etc/finger. Bien entendu, il faut que ce programme soit exécutable par _fingerd. - -``` -$ cat /etc/inetd.conf -finger stream tcp nowait _fingerd /usr/libexec/fingerd fingerd -lsm -P /etc/finger -finger stream tcp6 nowait _fingerd /usr/libexec/fingerd fingerd -lsm -P /etc/finger -``` - -À partir de là, on peut faire ce qu'on veut. Selon ce que j'ai trouvé dans le code source de fingerd(8), le programme de remplacement devrait savoir gérer (ou ignorer) les options -smMpl, telles que décrites dans finger(1). Les arguments sont donnés par fingerd(8) dans cet ordre : les options sont placées d'abord, suivies du marqueur de fin des options (--) et du contenu de la seule ligne envoyée par le client (un nom d'utilisateur ou rien, la plupart du temps)[4]. - -Voici un exemple de programme de remplacement. - -``` -$ cat /etc/finger -#!/bin/sh - -# interpréter les options (en fait, elles sont ignorées) -PLAN=1 -while getopts "smMpl" OPT -do -case "$OPT" in - s) FG_COURT=1 ;; - m) FG_CHERCHER= ;; - M) FG_CHERCHER=1 ;; - p) FG_PLAN= ;; - l) FG_LONG=1 ;; - *) logger -t finger "L'option -$OPT n'est pas supportée." -esac -done -shift $((OPTIND - 1)) - -UTILISATEUR="$1" -printf '%s\n\n' "$UTILISATEUR" -[ -r "/home/$UTILISATEUR/.plan" ] && cat "/home/$UTILISATEUR/.plan" -[ -r "/home/$UTILISATEUR/.projet" ] && cat "/home/$UTILISATEUR/.projet" -``` - -Ce programme n'est pas robuste. Il ne sait même pas gérer la ligne vide. De plus, les dossiers de certains utilisateurs ne se trouvent pas dans /home/ ; c'est le cas de root, par exemple. Il faudrait consulter /etc/passwd pour savoir où le dossier de chaque utilisateur se trouve. Le but est simplement de donner un aperçu du pouvoir qui est entre nos mains. - -## Brèves remarques sur la sécurité - -Cette section s'impose, car le protocole finger n'a pas une bonne réputation en matière de sécurité. Cette réputation n'est qu'en partie justifiée. Elle est répandue surtout à cause du ver de Morris, qui a, entre autres, profité d'une vulnérabilité dans le programme fingerd répandu à l'époque (c'est-à-dire 1988). Ce n'est pas le protocole lui-même qui a été pris en défaut, mais une mise en œuvre particulière. D'ailleurs, tout service exposé à l'Internet vient avec ses risques en matière de sécurité. Et gardons en tête que ces vulnérabilités ont d'autant moins de chances de survenir que le programme est simple. - -=> https://fr.wikipedia.org/wiki/Morris_(ver_informatique) Article Wikipédia sur le ver de Morris - -Si on veut affirmer que finger n'est pas sécuritaire, c'est à l'objectif même du service qu'il faut s'en prendre. Si on essaie généralement de divulguer le moins d'information possible aux pirates potentiels, c'est parce qu'ils peuvent parfois s'en servir pour mieux cibler leurs attaques. Or, le but de finger est de partager de l'information. Disposer de la liste des utilisateurs connectés et connaître leurs plans et leurs intérêts a des chances de faciliter la vie de ces pirates. Ça ne fait aucun doute. Par contre, avoir un blogue, un compte Facebook, un compte Mastodon, etc. bref être présent et actif sur ce genre de plateforme accessible publiquement risque d'aider les pirates bien plus que d'avoir une présence sur finger. - -S'il y a peu de chance d'y avoir une faille utile aux pirates dans les programmes finger contemporains et si j'estime que les risques associés à l'information disponible par leur truchement est négligeable, je crois qu'il faut être extrêmement vigilant au moment de créer un programme finger alternatif. Il est très facile de faire des erreurs, surtout dans des programmes shell. Prudence! donc. - -## Conclusion - -Si la configuration de base d'un serveur finger sous OpenBSD est très simple, j'ai trouvé moins évident l'exécution d'un programme finger alternatif. Dans ce cas, malgré la réputation d'OpenBSD dans ce domaine, la page de manuel de fingerd(8) ne semble malheureusement aider que ceux qui savent déjà comment faire. J'ai en effet dû consulter le code source du programme pour comprendre comment le configurer. J'ai donc écrit ce guide pour aider ceux qui auraient la même idée que moi. - -## Voir aussi - -### Mon serveur finger - -=> finger://selve@asteride.xyz selve@asteride.xyz - -### Les RFC - -=> https://www.rfc-editor.org/rfc/rfc742 RFC 742 -=> https://www.rfc-editor.org/rfc/rfc1194 RFC 1194 -=> https://www.rfc-editor.org/rfc/rfc1196 RFC 1196 -=> https://www.rfc-editor.org/rfc/rfc1288 RFC 1288 - -### L'article Wikipédia sur finger - -=> https://fr.wikipedia.org/wiki/Finger_(Unix) finger (Unix) - -### L'article de Bortzmeyer sur finger - -=> https://www.bortzmeyer.org/1288.html RFC 1288: The Finger User Information Protocol (en français malgré le titre) - -## Notes - -[1] Certains ajouteraient que le peu de souci porté à la sécurité informatique fait de finger un digne représentant de son époque. Ce n'est pas exactement mon avis. J'y reviendrai. -[2] Voir l'article de Stéphane Bortzmeyer sur finger. -[3] Le client Bombadillo, par exemple, accepte les textes encodés en UTF-8. Je serais d'accord pour qu'on modifie le client d'OpenBSD afin qu'il respecte LC_CTYPE. -[4] Astuce : si on veut avoir une idée des arguments que finderd(8) donne au programme, on peut remplacer « /etc/finger » par « echo ». Ces arguments seront ainsi transmis par finger. - -— Selve - -=> ../ Revenir à la page d’accueil diff --git a/articles/index.gmi b/articles/index.gmi @@ -1,8 +0,0 @@ -# Le Cybercarnet de Selve - -=> finger_openbsd.gmi 2023-02-11 Configurer un serveur finger sous OpenBSD -=> curiosites_catalan.gmi 2022-10-11 Quelques curiosités du catalan -=> chute_voyelles_aymara.gmi 2022-01-05 Chute de voyelles conditionnée morphologiquement en aymara -=> avant-propos.gmi 2021-12-21 Avant-propos - -=> ../ Revenir à la page d’accueil diff --git a/florilege/index.gmi b/florilege/index.gmi @@ -1,34 +0,0 @@ -# Florilège - -Pensées, citations, etc. que je veux partager. - -## 11 mars 2023 - -Je suis depuis longtemps à la recherche d’une traduction française de « hack » et de ses dérivés « hacker » et « hacking ». « Bidouilleur » et « bricoleur » sont certes en usage, mais certains termes de la série sont très peu usités dans ce contexte : « bidouille » et « bricole », par exemple. Il existe pourtant un mot employé au Québec qui recouvre à peu près le même domaine sémantique que « hack » et cie. et qui dispose de tous les dérivés nécessaires pour traduire le concept anglais. Il s’agit de « patente », « patenter », « patenteux » et « patentage ». - -Le Dictionnaire Québécois d’aujourd’hui (1992) donne les définitions suivantes : - -* « Patente » : « Invention, chose nouvelle, procédé ingénieux, parfois un peu bizarre. » -* « Patenter » : « Installer, monter qqch. avec des moyens de fortune. », « Réparer, arranger temporairement, et tant bien que mal, qqch. » et « Inventer qqch., mettre qqch. au point. » -* « Patentage » : « Fait de patenter. » -* « Patenteux » (ou « patenteur ») : « Inventeur; inventif » et « Personne qui répare, rafistole qqch. avec des moyens de fortune. » - -Il est vrai que le Dictionnaire donne d’autres définitions qui concordent moins bien avec l’idée de « hack » en anglais, mais il s’agit ici d’un cas de polysémie et on ne pourrait lui accorder grande importance, car ce genre d’obstacle est si fréquent que ce serait nous empêcher de traduire en toute circonstance. - -C'est donc ces mots que j'emploierai dorénavant. - -## 10 mars 2022 - -> Ce que nous prenons pour des vertus n’est souvent qu’un assemblage de diverses actions et de divers intérêts, que la fortune ou notre industrie savent arranger ; et ce n’est pas toujours par valeur et par chasteté que les hommes sont vaillants, et que les femmes sont chastes. - -Première des Maximes de François de La Rochefoucauld. Profonde en dépit du sexisme dont elle est teintée. - -## 31 décembre 2021 - -C’est une grande sérénité qu’autorise la certitude que tout a un terme et que le temps avance inexorablement. - -## 21 décembre 2021 - -Être féministe ou antiraciste et ne pas être anarchiste, c’est faire preuve de discrimination entre les opprimés. - -=> ../ Revenir à la page d'accueil diff --git a/humans.txt b/humans.txt @@ -1,12 +0,0 @@ -/* SITE */ -Nom: Selve -URL: gemini://selve.xyz -Date de création: 21 décembre 2021 -Dernière mise a jour: 31 mars 2023 -Langue: Français - -/* AUTEUR */ -Selve - -/* LIENS */ -Courriel: selve@asteride.xyz diff --git a/index.gmi b/index.gmi @@ -1,45 +0,0 @@ -# La Capsule Gemini de Selve - -``` Depuis le 21 décembre 2021 -Depuis le 21 décembre 2021 -``` - -## Bienvenue sur ma capsule Gemini. - -Je suis Selve et je vous souhaite la bienvenue sur ma capsule. Elle est encore menue, mais je crois qu’on peut déjà y trouver quelques attraits. Je la présente plus complètement dans l’avant-propos que je lui ai consacré, et dont je recommande la lecture. - -=> articles/avant-propos.gmi Avant-propos - -## Cybercarnet - -Il est composé d’articles que j’ai écrits pour cette capsule. - -=> articles/ Cybercarnet - -## Florilège - -J’alimente aussi un florilège. C'est quelque chose comme un microblogue, qui rassemble(ra) quelques-unes des citations que j’ai aimées, de même que certaines pensées que j’ai eues et qui ne méritent pas nécessairement un article complet. Je l’augmente périodiquement. - -=> florilege/ Florilège - -## Autres endroits à visiter - -Ma capsule n'est pas le seul endroit de tout Internet qui vaille la peine d'être visité. J'ai rassemblé quelques bonnes adresses. - -=> a_visiter.gmi À visiter - -## Contact - -On peut me contacter par courriel à l'adresse suivante. - -=> mailto:selve@asteride.xyz selve@asteride.xyz - -On peut aussi obtenir de l'informations sur en consultant mon serveur finger. - -=> finger://selve@asteride.xyz selve@asteride.xyz - -## Licence - -Tout ce qui se trouve ici et qui vient de moi est disponible sous la licence CC-BY-NC-SA. - -=> https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.fr Licence CC-BY-NC-SA diff --git a/lib/gemini.m4 b/lib/gemini.m4 @@ -0,0 +1,95 @@ +# Macros pour Gemini + +define([_DOCUMENT], +[[#] L_TITRE +ifdef([L_TITRE_SOUS], [ +L_TITRE_SOUS], [dnl]) +SI(T_TYPE([article]), [ +``` F_DATE +F_DATE +```[]dnl +E_ESP([1])]) +$1[]dnl +M_ESP_AFF[]dnl +SI(T_TYPE([article]), +[ +— L_AUTEUR +], [dnl]) +ifdef([L_CH_RET_LIEN], +SI(T_TYPE([article]), [dnl]) +[_PAR_LIENS([_LIEN(L_CH_RET_LIEN, +ifdef([L_CH_RET_NOM], +[L_CH_RET_NOM], [L_CH_RET_LIEN]))])], [dnl])]) + +define([_PIED], +[M_ESP_AFF[]dnl +ifelse(L_TYPE, [article], +[— L_AUTEUR + +])dnl +ifdef([L_CH_RET_LIEN], +[_PAR_LIENS([_LIEN(L_CH_RET_LIEN, +ifdef([L_CH_RET_NOM], +[L_CH_RET_NOM], [L_CH_RET_LIEN]))])])]) + +define([_SOUS_TITRE], +[M_ESP_AFF[]dnl +[## $1][]dnl +E_ESP([1])]) + +define([_SOUS_SOUS_TITRE], +[M_ESP_AFF[]dnl +[### $1][]dnl +E_ESP([1])]) + +define([_PAR], +[M_ESP_AFF[]dnl +[$1][]dnl +E_ESP([1])]) + +define([_PRE], +[M_ESP_AFF[]dnl +``` [$2] +[$1] +```[]E_ESP([1])]) + +define([_PAR_LIENS], +[_PAR($1)]) + +define([_LIEN], +[=> [$1] [$2]]) + +define([_LISTE], +[_PAR($1)]) + +define([_ELEM], +[* [$1]]) + +define([_CITER], +[M_ESP_AFF[]dnl +> [$1]dnl +E_ESP([1])]) + +define([I_DATE], [$1]) + +define([_NOTE_REF], +[C_G[][$1][]C_D]) + +define([_NOTE], +[E_ESP([0])dnl +C_G[][$1][]C_D $2]) + +define([_PAR_NOTES], +[M_ESP_AFF[]dnl +$1[]dnl +E_ESP([1])]) + +define([_PPAR_NOTE], defn([_PAR])) + +define([_CITER_DANS], [[$1]]) + +define([_I], [[$1]]) +define([_G], [[$1]]) +define([_S], [[$1]]) +define([_IS], [[_$1_]]) +define([_GS], [[*$1*]]) diff --git a/lib/general.m4 b/lib/general.m4 @@ -0,0 +1,100 @@ +# MACROS GÉNÉRAUX + +# Guillemets + +changequote([, ]) + +define([C_G], +[changequote(<,>)[dnl] +changequote([, ])[]]) + +define([C_D], +[changequote(<,>)dnl[ +]changequote([,])[]]) + +# Métadonnées + +# Langue de la page +define([E_LANG_PAGE], +[define([L_LANG_PAGE], [[$1]])]) + +# Nom du l'auteur +define([E_AUTEUR], +[define([L_AUTEUR], [[$1]])]) + +# Date de première publication +define([E_DATE_PUB], +[define([L_DATE_PUB_ANNEE], [[$1]])]dnl +[define([L_DATE_PUB_MOIS], [[$2]])]dnl +[define([L_DATE_PUB_JOUR], [[$3]])]) + +# Date de dernière publication +define([E_DATE_MOD], +[define([L_DATE_MOD_ANNEE], [[$1]])]dnl +[define([L_DATE_MOD_MOIS], [[$2]])]dnl +[define([L_DATE_MOD_JOUR], [[$3]])]) + +# Titre de la page +define([E_TITRE], +[define([L_TITRE], [[$1]])]) + +define([E_TITRE_SOUS], +[define([L_TITRE_SOUS], [[$1]])]) + +# Type de page +define([E_TYPE], +[define([L_TYPE], [[$1]])]) + +define([E_CH_RET_LIEN], +[define([L_CH_RET_LIEN], [[$1]])]) + +define([E_CH_RET_NOM], +[define([L_CH_RET_NOM], [[$1]])]) + +# Formats + +# Correspondance chiffre/mois +define([F_NOM_MOIS], +[pushdef([T_NB], [incr(decr($1))])dnl +ifelse(T_NB, 1, [janvier], +T_NB, 2, [février], +T_NB, 3, [mars], +T_NB, 4, [avril], +T_NB, 5, [mai], +T_NB, 6, [juin], +T_NB, 7, [juillet], +T_NB, 8, [août], +T_NB, 9, [septembre], +T_NB, 10, [octobre], +T_NB, 11, [novembre], +T_NB, 12, [décembre], +[ERREUR])[]dnl +popdef([T_NB])]) + +# Formater la date pour les humains +define([F_DATE], +[Publié le dnl +I_DATE(incr(decr(L_DATE_PUB_JOUR)) F_NOM_MOIS(L_DATE_PUB_MOIS) L_DATE_PUB_ANNEE) dnl +ifdef([L_DATE_MOD_ANNEE], [et modifié le dnl +I_DATE(incr(decr(L_DATE_MOD_JOUR)) F_NOM_MOIS(L_DATE_MOD_MOIS) L_DATE_MOD_ANNEE)])]) + +# Gestion de l'espacement + +define([E_ESP], [define([L_ESP], [[$1]])]) +E_ESP(0) + +define([M_ESP_AFF], +[pushdef([T_ITER], [ifelse(L_ESP, 0, [popdef([T_ITER])], [ +define([L_ESP], decr(L_ESP))[]T_ITER])])[]T_ITER[]]) + +# Alias pour dnl + +define([__], defn([dnl])) + +# Conditions + +# (interprétation interne) +define([SI], [ifelse(eval([$1]), [0], [$3], [$2])]) + +define([T_FORMAT], [ifelse(L_FORMAT, [$1], [[1]], [[0]])]) +define([T_TYPE], [ifelse(L_TYPE, [$1], [[1]], [[0]])]) diff --git a/lib/html.m4 b/lib/html.m4 @@ -0,0 +1,119 @@ +# Macros pour HTML + +define([_CLASSE], [pushdef([A_CLASSES], [[$1]])]) +define([_ID], [define([A_ID], [[$1]])]) +define([_ATTR_HTML], [pushdef([A_ATTR_HTML], [[$1]])]) +define([R_CLASSES_AFF], [ifdef([A_CLASSES], [[ class="]A_CLASSES["]popdef([A_CLASSES])R_CLASSES_AFF])]) +define([R_ID_AFF], [ifdef([A_ID], [[ id="]A_ID["]])]) +define([R_ATTR_HTML_AFF], [ifdef([A_ATTR_HTML], [ A_ATTR_HTML[]popdef([A_ATTR_HTML])R_ATTR_HTML_AFF])]) +define([R_ATTR_AFF], [R_CLASSES_AFF[]R_ID_AFF[]R_ATTR_HTML_AFF]) + +define([_DOCUMENT], +[[<!DOCTYPE html> +<html lang="]L_LANG_PAGE["> +<head> + <title>]L_TITRE[</title> + <meta charset="UTF-8"> + <meta name="author" content="]L_AUTEUR["> + <meta name="robots" content="index,follow"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <link rel="icon" href="data:;base64,iVBORw0KGgo="> + <style> + @media (prefers-color-scheme: dark) { + html { + background-color: #000000; + color: #ffffff; + } + } + @media (prefers-color-scheme: light) { + html { + background-color: #ffffff; + color: #000000; + } + } + body { + font: 1.2em/1.7 serif; + max-width: 760px; + margin: auto; + padding: 15px; + } + a { color: #1177ff; text-decoration: none; } + a:hover { color: #ff0000; } + sup { font-size: 0.8em } + header { text-align: center; padding-bottom: 10px; } + pre { line-height: normal; overflow: auto; } + blockquote { font-style: italic; } + #date-publication { font-style: italic; } + </style> +</head> +<body> +<main> +]R_ARTICLE( +[R_ENTETE +$1 +SI(T_TYPE([article]), [[<p id="signature">— ]L_AUTEUR[</p>]], [dnl])]) +[</main> +<hr> +]R_PIED[ +</body>]]) + +define([R_ARTICLE], +[SI(T_TYPE([article]), +[[<article> +]$1[ +</article>]], +[$1])]) + +define([R_ENTETE], +[[<header> +<hr> +<h1>]L_TITRE[</h1>] +SI(T_TYPE([article]),[[<p id="date-publication">]F_DATE[</p>]], [dnl]) +ifdef([L_TITRE_SOUS], [[<p>]L_TITRE_SOUS[</p>]], [dnl]) +[<hr> +</header>]]) + +define([R_PIED], +[[<footer>] +ifdef([L_CH_RET_LIEN], +[[<nav><p class="lien-retour"><a href="]L_CH_RET_LIEN[">]ifdef([L_CH_RET_NOM], [L_CH_RET_NOM], [L_CH_RET_LIEN])[</a></p></nav>]], [dnl]) +[</footer>]]) + +define([_SOUS_TITRE], +[[<h2>$1</h2>]]) + +define([_SOUS_SOUS_TITRE], +[[<h3>$1</h3>]]) + +define([_PAR], [<p>[$1]</p>]) + +define([_PRE], [[<figure> +<pre>$1</pre> +</figure>]]) + +define([_PAR_LIENS], [_PAR($1)]) + +define([_LIEN], [<a href="[$1]">[=&gt; $2]</a><br>]) + +define([I_DATE], [<time>$1</time>]) + +define([_LISTE], [[<ul>]$1[</ul>]]) + +define([_ELEM], [[<li>$1</li>]]) + +define([_CITER], [[<blockquote>$1</blockquote>]]) + +define([_NOTE_REF], [[<sup id="ref-$1"><a href="#note-$1">][]C_G[][$1][]C_D[</a></sup>]]) + +define([_PAR_NOTES], [$1]) + +define([_NOTE], [[<p id="note-$1"><a href="#ref-$1">]C_G[][$1][]C_D[][</a> ]$2]) + +define([_PPAR_NOTE], [[$1</p>]]) + +define([_CITER_DANS], [[<cite>$1</cite>]]) +define([_I], [[<i>$1</i>]]) +define([_G], [[<b>$1</b>]]) +define([_S], [[<u>$1</u>]]) +define([_IS], [[<em>$1</em>]]) +define([_GS], [[<strong>$1</strong>]]) diff --git a/lib/inclure.m4 b/lib/inclure.m4 @@ -0,0 +1,6 @@ +include(lib/general.m4) + +SI(T_FORMAT([gemini]), [include([lib/gemini.m4])], +SI(T_FORMAT([html]), [include([lib/html.m4])])) + +include(lib/liens.m4) diff --git a/lib/liens.m4 b/lib/liens.m4 @@ -0,0 +1,26 @@ +SI(T_FORMAT([gemini]), +[ +define([LI_EXT], [[gmi]]) +define([LE_EXT], [[gmi]]) +define([LI_ART_AVANT_PROPOS], [[articles/avant-propos.gmi]]) +define([LI_ART], [[articles/]]) +define([LI_FLO], [[florilege/]]) +define([LI_A_VISITER], [[a_visiter.gmi]]) +define([LE_SI3TCH], [[gemini://si3t.ch]]) +define([LE_GAMIFICAT], [[gemini://gemlog.gamifi.cat]]) +define([LE_SOLENE], [[gemini://perso.pw/blog/]]) +], +SI(T_FORMAT([html]), +[ +define([LI_EXT], [[html]]) +define([LE_EXT], [[html]]) +define([LI_ART_AVANT_PROPOS], [[articles/avant-propos.html]]) +define([LI_ART], [[articles/]]) +define([LI_FLO], [[florilege/]]) +define([LI_A_VISITER], [[a_visiter.html]]) +define([LE_SI3TCH], [[https://si3t.ch]]) +define([LE_GAMIFICAT], [[https://gamifi.cat]]) +define([LE_SOLENE], [[https://dataswamp.org/~solene/]]) +])) + +define([LE_ANTENNA], [[gemini://warmedal.se/~antenna]]) diff --git a/LICENSE.txt b/src/LICENSE.txt diff --git a/src/_.m4 b/src/_.m4 @@ -0,0 +1,3 @@ +E_LANG_PAGE([fr]) +E_AUTEUR([Selve]) +E_TYPE([divers]) diff --git a/src/a_visiter.m4 b/src/a_visiter.m4 @@ -0,0 +1,26 @@ +divert(-1) +include(lib/inclure.m4) +include(src/_.m4) + +E_CH_RET_LIEN([.]) +E_CH_RET_NOM([Revenir à la page d’accueil]) + +E_TITRE([À visiter]) +divert(0)__ +__ +_DOCUMENT( +[_PAR_LIENS([_LIEN(LE_SI3TCH, [Si₃TcH])]) +E_ESP([0])__ +_PAR([Capsule de prx. J'aime beaucoup lire ses tutoriels informatiques et ses opinions sur le domaine. Ses articles concernent surtout Unix et le Web. C'est un utilisateur d'OpenBSD, et le système est souvent abordé. On y trouve l'excellent guide « Héberger son serveur avec OpenBSD », qui m'a été et qui continue de m'être d'une grande utilité. Il publie parfois des textes à teneur politique, ce que j'apprécie.]) +__ +_PAR_LIENS([_LIEN(LE_GAMIFICAT, [Gamifi.ca't!])]) +E_ESP([0])__ +_PAR([Capsule trilingue catalanophone, espérantophone et hispanophone. On y trouve beaucoup de choses, mais ce sont surtout ses textes en faveur du logiciel libre et de la fédivers qui ont attiré mon attention jusqu'à maintenant. C'est une occasion de plus de pratiquer mon catalan.]) +__ +_PAR_LIENS([_LIEN(LE_SOLENE, [Solène's gemini space])]) +E_ESP([0])__ +_PAR([Capsule surtout anglophone (avec quelques rares articles en français) de Solène, développeuse d'OpenBSD. Elle publie surtout des tutoriels informatiques et des commentaires sur des programmes informatiques qu'elle a utilisés. Ses articles sont très intéressants.]) +__ +_PAR_LIENS([_LIEN(LE_ANTENNA, [Antenna])]) +E_ESP([0])__ +_PAR([C'est un agrégateur de publications sur Gemini. On peut donc y découvrir de nouvelles capsules intéressantes.])]) diff --git a/src/articles/_.m4 b/src/articles/_.m4 @@ -0,0 +1,5 @@ +include(src/_.m4) + +E_TYPE([article]) +E_CH_RET_LIEN([../]) +E_CH_RET_NOM([Revenir à la page d’accueil]) diff --git a/src/articles/avant-propos.m4 b/src/articles/avant-propos.m4 @@ -0,0 +1,44 @@ +divert(-1) +include(lib/inclure.m4) +include(src/articles/_.m4) + +E_TITRE([Avant-propos]) +E_DATE_PUB([2021], [08], [21]) +E_DATE_MOD([2023], [04], [07]) +divert(0)__ +_DOCUMENT( +[_PAR([Je tiens à présenter ce petit coin d’Internet qui m’est réservé et qui sera le relais des curiosités et des réflexions, sérieuses ou légères, qui me viennent et que j’estime dignes d’être partagées.]) +__ +_PAR([Je suis un étudiant au baccalauréat en linguistique et je m’intéresse beaucoup à cette discipline. Il ne faudra donc pas se surprendre de la voir venir garnir] SI(T_FORMAT([gemini]), [[cette capsule]], [[ce site]])[. J’ai d'ailleurs déjà quelques idées d’articles en tête. Mais la linguistique n’accapare pas toute mon attention, car je m’intéresse aussi à l’informatique, à l’organisation sociale, à l’actualité, etc. Autant de sujets susceptibles d’être abordés ici. Je pourrai aussi publier des tutoriels si j’en imagine et réalise que je croie pertinents.]) +__ +_PAR([Le ton pourra varier : dans un article, je défendrai avec vigueur une idée qui me tient à cœur, et dans un autre, je serai ambivalent, ou peut-être même complètement indifférent. Peu importe, je ne veux jamais qu’on me croie véritablement convaincu. Je ne cesse de douter, mais, lorsqu’il m’arrive de ne pas trouver de contrargument substantiel aux opinions que je formule, je peux difficilement m’empêcher de les soutenir vigoureusement. Ce que j’espère que ce cybercarnet pourra apporter, ce sont des idées. Je ne sais pas si elles seront intéressantes ; je serais surpris qu’elles soient nouvelles ; mais je peux assurer qu’elles ne seront toujours défendues que provisoirement.]) +__ +_PAR([Si jamais je suis lu — ce qui n’est pas donné —, j’aimerais beaucoup que le lecteur me dise ce qu’il pense de ce que j’ai écrit et qu’il me corrige s’il en sait plus que moi. C’est une chose qui m’apparait extrêmement enrichissante.]) +__ +_PAR([Le fait que je doute implique que je suis susceptible de changer d’avis. De même, il est probable que des idées sur un sujet dont un de mes articles avait déjà traité me viennent après sa publication ; et il est inévitable que quelques coguilles se glissent quelque part. Je pourrai donc modifier des articles une semaine, un mois, des années après les avoir publiés. Il est vrai qu’il existe un certain type de contenu qui se prête mal à ce genre de révision ; je me contenterai alors d’en corriger les coquiIles. Par souci de transparence et parce que j’ai été influencé par une idée de Solderpunk, je rends disponible le dépôt git de ma capsule]SI(T_FORMAT([html]), [[ (puisque le contenu de ce site est aussi accessible via le protocol gemini)]])[. On pourra donc en consulter tout l’historique, et si on le veut vraiment, en étudier les changements. Le dépôt de la version HTML n'est pas disponible publiquement. Il est vrai que le contenu des deux versions diffère un peu, mais ce n'est rien de substantiel. J'y réfléchérai…]) +__ +_PAR_LIENS(_LIEN([https://sr.ht/~selve/selve.xyz/], [Dépôt git de ma capsule gemini]) +_LIEN([gemini://gemini.circumlunar.space/~solderpunk/gemlog/low-budget-p2p-content-distribution-with-git.gmi], [Texte où Solderpunk présente son idée (en anglais)])) +__ +_PAR([Je crois avoir à dire quelques mots au sujet de la structure de] SI(T_FORMAT([gemini]), [[cette capsule]], [[ce site]])[. Au cours de l’une de mes visites dans le cyberespace, j’ai cherché à identifier ce qui fait les bonnes capsules et les bons sites. L’intérêt du contenu est bien sûr le critère décisif, mais outre cela, j’ai pu trouver une propriété structurale que j’estime importante. Je ne sais pas si je devrais la nommer « désordre », « profondeur » ou « richesse ». Elle est caractérisée par un réseau de pages entremêlées, peut-être disparates, qui obéissent pourtant à leur propre structure interne, en des labyrinthes où l’on peut se perdre, en des curiosités qu’on découvre par hasard. J’aime les capsules et les sites assez garnis pour qu’on puisse y faire du tourisme et dont on découvre encore de nouveaux racoins à chaque visite. Je veux qu’on puisse un jour trouver ce genre d’atmosphère et de richesse ici. Cela prendra du temps, et ce coin risque de rester pauvre un certain moment à cet égard.]) +__ +_PAR([J’ai donc voulu imaginer la structure de] SI(T_FORMAT([gemini]), [[ma capsule]], [[mon site]]) [de telle sorte qu’elle n’en contraigne pas trop inflexiblement les possibilités de désordre. Je ne crois pas avoir atteint cet objectif complètement. Aussi est-il possible que sa structure change un jour.]) +__ +_PAR([J’aime beaucoup les flux RSS (ou Atom, peu importe), et je veux que la structure de] SI(T_FORMAT([gemini]), [[ma capsule]], [[mon site]]) [s’y prête bien. Sa colonne vertébrale sera donc un cybercarnet, dont ce texte est d’ailleurs la première publication. Les articles y seront affichés en ordre antéchronologique. Si ce modèle temporel est simple et utile, je soupçonne qu'il tende à favoriser d’une part le roulement et d’autre part l’obsolescence rapide de son contenu, dont le corolaire semble être la publication fréquente de nouveaux articles superficiels et peu réfléchis puisqu’éphémères. Certains vivent bien avec ce système et réussissent à faire des sites et des capsules intéressants qui ne souffrent pas ou peu de ces écueils. Ça ne correspond cependant pas à ce à quoi j'aspire. Je prévois donc établir, lorsque mes publications seront suffisamment nombreuses, une organisation parallèle qui classera les articles thématiquement. Avec le temps, ils constitueront une sorte de wiki personnel public que je maintiendrai continuellement.]) +__ +_PAR([Pour l’instant, le seul format de flux disponible ici est le gemsub. Je créerai un flux Atom plus tard.]) +__ +_PAR_LIENS( +_LIEN([.], [Cybercarnet])) +__ +_PAR([À côté de ce cybercarnet, j’ai décidé de créer un florilège. Si le premier contiendra des textes plus longs et — on l’espère — plus réfléchis, le florilège rassemblera des textes très courts où l’on pourra trouver aussi bien des passages que j’ai lus quelque part et qui m’ont particulièrement plu que des pensées personnelles trop courtes ou trop peu matures pour faire l’objet d’un article dans le cybercarnet. Ce sera en même temps pour moi une façon de conserver ces citations et ces pensées que je ne veux pas perdre. On peut naturellement s’attendre à ce que cette section soit alimentée plus fréquemment que le cybercarnet.]) +__ +_PAR_LIENS(_LIEN([../florilege/], [Florilège])) +__ +_PAR([Finalement, conformément à mon intention de créer un peu de « désordre » dans] SI(T_FORMAT([gemini]), [[ma capsule]], [[mon site]])[, je créerai parallèlement des pages indépendantes de ces trois sections. Pour l'instant, cette idée est portée seule par une page contenant des liens vers quelques capsules et sites que je trouve intéressants.]) +__ +_PAR_LIENS(_LIEN([../a_visiter.]LI_EXT, [Capsules et sites à visiter])) +__ +_PAR([Pendant un peu plus d'un an,] SI(T_FORMAT([gemini]), [[cette capsule]], [[ce site]]) [n'était disponible que par le protocol gemini. J'ai maintenant modifié mon système de publication de manière à rendre possible la génération de fichiers gemtext et HTML (j'utilise le processeur de macros m4). Je n'exclus pas de l'exporter vers Gopher un jour, peut-être bientôt.]) +__ +_PAR([Je tâche de publier le plus souvent possible, mais j’écris lentement, et je suis parfois pris de paresse ; le rythme de mes publications n'est pas très régulier. Je continue à viser le mois ; on verra si un jour j'y arriverai.])]) diff --git a/src/articles/chute_voyelles_aymara.m4 b/src/articles/chute_voyelles_aymara.m4 @@ -0,0 +1,50 @@ +divert(-1) +include(lib/inclure.m4) +include(src/articles/_.m4) + +E_TITRE([Chute de voyelles conditionnée morphologiquement en aymara]) +E_DATE_PUB([2022], [01], [05]) +E_DATE_MOD([2023], [04], [07]) +divert(0)__ +__ +_DOCUMENT( +[_PAR([Sauf indication contraire, toute l'information qui est présentée ici vient de Hardman (2001).]) +__ +_PAR([L'aymara est une langue indigène d'Amérique du Sud parlée principalement aux abords du lac Titicaca, de chaque côté de la frontière séparant le Pérou de la Bolivie. Elle est singulière à plusieurs égards et sait déstabiliser celui qui ne connait rien de plus exotique que les langues européennes. Elle réapparaitra assurément dans un autre article.]) +__ +_PAR([L'aymara est une langue agglutinante, c'est-à-dire que les mots qu'elle forme sont souvent composés d'un grand nombre de petites unités porteuses de sens appelées morphèmes. Autrement dit, ses mots tendent à être longs et complexes. Du point de vue de la forme, ces morphèmes se répartissent en deux classes : celle des racines et celle des suffixes. On peut, pour les besoins de l'exposé, définir le mot aymara comme étant une racine seule ou une racine à laquelle se sont agglutinés un ou plusieurs suffixes.]) +__ +_PAR([Par exemple, le mot « utankaña », qui signifie « être à la maison », se compose de quatre morphèmes : « Uta », qui veut dire « maison » et qui est la racine du mot ; « ni », qui exprime la possession ; « ka », qui convertit un nom en verbe, avec le sens de « X est (quelque part) » ; « ña », qui convertit un verbe en nom et qui est, en l'occurrence, à rapprocher d'une marque d'infinitif.]) +__ +_PAR([On constate que la simple agglutination des suffixes à la racine donnerait « utanikaña ». Or, la forme attestée est « utankaña », sans le « i », donc. C'est ce phénomène de chute de voyelles que je veux expliquer.]) +__ +_PAR([En se combinant, plusieurs suffixes imposent la chute ou le maintien de la voyelle qui les précède ou qui les termine. Ces règles sont entièrement lexicales et font partie de la nature même d'un suffixe ; si quelques régularités ont été décelées, il reste indispensable de spécifier la nature combinatoire de chaque suffixe indépendamment de tout autre attribut. On peut noter la chute et le maintien des voyelles par un « (C) » et un « (V) », respectivement. Ainsi, dans l'exemple précédant, « (V)ni » impose à « uta » le maintien de sa voyelle finale, « (C)ka » en impose la chute à « utani » et « (V)ña » en impose le maintien à « utanka ».]) +__ +_PAR([Un petit nombre de suffixes admet de la variation. Coler et al. (2020) ont ainsi reconnu que « pacha », « kama », « naqa » et « hama » pouvaient tantôt faire tomber la voyelle qui les précèdent, tantôt la conserver. En outre, la variation dialectale, bien que plutôt faible, peut venir modifier la nature combinatoire de certains suffixes.]) +__ +_PAR([Je trouve ce phénomène franchement fantastique. Le plus intéressant est que la nature combinatoire des suffixes peut parfois servir à en distinguer certains qui semblent homophones lorsque pris individuellement.]) +__ +_PAR([Hardman (2001) donne l'exemple de quatre suffixes « -ta » distincts, dont les formes ne diffèrent que par les règles combinatoires :]) +__ +_LISTE( +_ELEM([uma + (C)ta(C) + wa : umtwa (Je bois)]) +_ELEM([uma + (V)ta(V) + wa : umatawa (Une personne soule)]) +_ELEM([uma + (C)ta(V) + wa : umtawa (Tu bois)]) +_ELEM([uma + (V)ta(C) + wa : umatwa (Depuis l'eau)])) +__ +_PAR([Qu'arrive-t-il lorsque les suffixes imposent des règles contradictoires, lorsque celui qui précède veut conserver sa voyelle finale et que celui qui suit veut la faire chuter, ou que celui qui précède veut la faire chuter et que celui qui suit veut la maintenir? Hardman (2021), n'aborde pas la question. En revanche, Kim (2016) affirme que les règles spécifiant la chute ou le maintien de la voyelle finale n'ont pas d'influence en cas de désaccord, que les caprices du suffixe de droite ont préséance.]) +__ +_PAR([D'autres phénomènes causant la chute de voyelles existent en aymara. Certains sont ainsi conditionnés phonologiquement ou syntaxiquement. Celui que je viens de présenter est le plus fréquent et reste selon moi le plus impressionnant.]) +__ +_SOUS_TITRE([Bibliographie]) +__ +_LISTE( +[_ELEM([Hardman, M. J. (2001). Aymara (Ser. Lincom studies in native american linguistics, 35). LINCOM Europa.]) +_ELEM([Kim Y. (2016). Vowel elision and the morphophonology of dominance in Aymara. Onomázein, 33(21), 367-384.]) +_ELEM([Coler, M., Emlen, N. Q., Banegas-Flores, E. (2020). Vowel deletion in two Aymara varieties. Italian Journal of Linguistics, 32(1), 151-174.])]) +__ +_SOUS_TITRE([Voir aussi]) +__ +_PAR_LIENS( +[_LIEN([https://fr.wikipedia.org/wiki/Aymara_(langue)], [Page Wikipédia (la page en espagnol est plus complète)]) +_LIEN([http://www.ilcanet.org/publicaciones/pdf_compendio.html], [Grammaire de l'aymara (en espagnol)])])]) diff --git a/src/articles/curiosites_catalan.m4 b/src/articles/curiosites_catalan.m4 @@ -0,0 +1,190 @@ +divert(-1) + +include(lib/inclure.m4) +include(src/articles/_.m4) + +E_TITRE([Quelques curiosités du catalan]) +E_DATE_PUB([2022], [09], [11]) +E_DATE_MOD([2023], [04], [07]) +divert(0)__ +__ +_DOCUMENT( +[_PAR([Devant l'immense diversité des langues du monde, le francophone ne se doute peut-être pas que le catalan, langue avec laquelle le français partage pourtant de nombreux traits linguistiques, est rempli de curiosités capables de l'émerveiller. Il est vrai que les deux langues se ressemblent beaucoup. Non seulement sont-elles toutes deux issues de la même mère, le latin, mais leur évolution a pris un cours semblable : bon nombre des changements linguistiques qui ont modelé l'une ont aussi modelé l'autre.]) +__ +_PAR([C'est d'ailleurs avant tout en raison d'intérêts d'ordre politique que j'ai moi-même commencé à apprendre le catalan : la Catalogne vit en effet une période fort intéressante sur ce plan. Son histoire ne manque pas d'intérêt non plus. Et bien que j'étudie la linguistique, c'était moins en sa qualité de langue que comme porte d'entrée vers sa culture que le catalan m'attirait. Cependant, dès le premier jour de mon apprentissage, et régulièrement par la suite, j'ai découvert une foule de faits sur la langue, anecdotiques ou fondamentaux, qui n'ont pas cessé de m'enchanter. Cette langue ne présente peut-être pas l'exotisme des médiatifs de l'aymara, des tons du cantonais ou des racines trilitères de l'hébreu, mais ce n'est pas pour autant que le francophone n'a rien à y trouver d'intéressant. Au contraire, la proximité du catalan et du français permet justement d'explorer plus facilement et plus profondément des caractéristiques qui auraient demandé de longues explications eussent-elles été présentes dans une langue aux structures plus dépaysantes et au vocabulaire moins familier. Le regard sur une langue sœur permet en outre la comparaison et peut ainsi servir à exposer des pans peu connus de l'histoire de notre propre langue.]) +__ +_PAR([Je veux présenter quatre aspects du catalan qui risquent d'intéresser le francophone : l'auxiliaire « anar » du passé périphrastique, le forclusif de négation « pas », l'influence de l'accent tonique dans la phonologie catalane et une manière unique de dire l'heure.]) +__ +_PAR([À l'image de la plupart des autres langues, le catalan n'est pas homogène et fédère un ensemble de variétés parlées notamment à Andorre, à Valence]_NOTE_REF([1])[, aux Îles Baléars, en Catalogne et à L'Alguer. Si elles partagent toutes les mêmes traits fondamentaux qui témoignent de l'appartenance à une même langue, elles divergent en certains points. Mais, je n'en dirai pas plus, car la dialectologie catalane est un thème trop vaste pour cet article. Je me contenterai d'avertir le lecteur que c'est à la variété centrale, parlée en Catalogne]_NOTE_REF([2])[, que la plupart de traits que j'exposerai ici s'appliqueront.]) +__ +_PAR_LIENS([_LIEN([https://fr.wikipedia.org/wiki/Dialectologie_de_la_langue_catalane], [Article de Wikipédia sur la dialectologie catalane]])) +__ +_PAR([Avant de poursuivre, je tiens à insister sur le fait que le catalan n'est pas ma langue maternelle. Je me suis appuyé sur des ouvrages de référence et sur des œuvres de la litérature catalans, mais il n'est pas impossible que des erreurs se soient malencontreusement glissées dans ce texte. Si ce devait être le cas, je prie le lecteur de me le faire savoir.]) +__ +_SOUS_TITRE([Passé périphrastique]) +__ +_PAR([En français et dans plusieurs autres langues, l'auxiliaire du verbe correspondant à « aller » marque le futur. Nous avons ainsi « Je vais manger », « Voy a comer » (espagnol), « I am going to eat » (anglais), etc. En catalan, c'est toutefois le passé que l'auxiliaire « anar » exprime : « Vaig menjar » ne signifie pas « Je vais manger », mais bien « J'ai mangé. »]) +__ +_PAR([Le passé périphrastique relate une action passée, réalisée au sein d'un cadre temporel envisagé comme un tout. En ce sens, il s'oppose à l'imparfait (imperfet), qui a la même valeur que son équivalent français. Là où l'imparfait installe le contexte] _CITER_DANS([(« quan l'Alba ja] _IS([deixava]) [el cistellet… »)])[, le passé périphrastique le meuble par les actions qui s'y produisent] _CITER_DANS([(« …el cel i la terra] _IS([van començar]) [a vibrar »)])[.]) +__ +_LISTE([_ELEM(_CITER_DANS([I aleshores, quan l'Alba ja deixava el cistellet per tal de llançar-se a l'aigua […], el cel i la terra van començar a vibrar amb una mena de trepidació sorda que s'anava accentuant.]) [(Manuel de Pedrolo, 2013)]) +_ELEM(_CITER_DANS([Et alors, quand Aube délaissait déjà le panier afin de se lancer à l'eau […], le ciel et la terre comencèrent à trembler d'une sorte d'émoi qui allait en s'accentuant.]))]) +__ +_PAR([Le passé périphrastique s'oppose également au passat d'indicatiu, plus ou moins analogue au passé composé français. Ces deux temps verbaux s'utilisent pour présenter comme un tout insécable une action passée. La différence qui les distingue réside dans la distance temporelle entre cette action et son énonciation. Si l'action et l'énonciation font partie d'une même période temporelle du point de vu du discours, il faut employer le passat d'indicatiu ; sinon, c'est du passé périphrastique qu'il faut se servir. Notons au passage qu'on utilise toujours le passat d'indicatiu lorsque que l'énonciation à lieu le même jour que l'action qu'elle relate.]) +__ +_LISTE([_ELEM([La setmana passada, va quedar amb uns amics. (La semaine passée, il est sorti avec des amis.)]) +_ELEM([Aquesta setmana, ha quedat amb uns amics. (Cette semaine, il est sorti avec des amis.)])]) +__ +_LISTE([_ELEM([L'any 1908, va néixer la Mercè Rodoreda. (Mercè Rodoreda est née en 1908.)]) +_ELEM([Aquest any, ha nascut el seu fill. (Son fils est né cette année.)])]) +__ +_PAR([Le fait que le catalan utilise ainsi l'auxiliaire « aller » (« anar ») ne manque pas d'étonner ; puisqu'il désigne étymologiquement un mouvement vers quelque chose, on l'imagine plus facilement récupéré comme marqueur du futur que comme marqueur de passé. Cette particularité catalane n'est pourtant pas complètement étrangère à l'usage français. On rencontre en effet souvent, dans les narrations d'historiens notamment, des verbes conjugués au présent et au futur qui expriment indubitablement le passé.]) +__ +_PAR([Voici la transcription d'un extrait de l'épisode d'Aujourd'hui l'Histoire du 3 mars 2020, Félix Leclerc, le militant :]) +__ +_CITER([Mais vers la fin des années 60, il va rencontrer sa nouvelle épouse, Gaëtane Morin, il va beaucoup fréquenter les cercles péquistes et on sent qu'il se remet à l'écriture de chansons.]) +__ +_PAR([Dans cet extrait, la forme aller + infinitif exprime le passé. À la place, on aurait très bien pu dire : « il a rencontré sa nouvelle épouse », « il a beaucoup fréquenté les cercles péquistes », etc. Cet usage du futur simple pour exprimer le passé s'appelle futur historique.]) +__ +_PAR([Remarquons finalement que le futur historique est un effet de style que se distingue de la manière standard d'exprimer le passé parfait en français, le passé composé. En catalan, il n'est pas question de style, car le passé périphrastique est la manière standard d'exprimer le passé parfait.]) +__ +_PAR([Le processus qui a mené au futur historique en français est peut-être complètement étrangé à celui qui a mené au passé périphrastique catalan. Je veux simplement montrer que la voie catalane n'est pas complètement étrangère à l'usage français. Peut-être augmenterai-je un jour cet article de précisions diachroniques.]) +__ +_SOUS_TITRE([Influence de l'accent tonique]) +__ +_PAR([L'accent tonique joue un rôle bien plus important en catalan qu'en français. D'abord, il est pertinent sur le plan phonologique, c'est-à-dire qu'il peu servir à distinguer deux mots autrement identiques]_NOTE_REF([3])[.]) +__ +_PAR([Note : dans les transcriptions suivantes, le point (.) sépare les syllabes ; l'apostrophe (') précède la syllabe accentuée et remplace, s'il y a lieu, le point. Lorsque la prononciation est donnée entre des barre-obliques (//), il s'agit d'une transcription phonémique, c'est-à-dire qu'elle représente les sons tels que les locuteurs pensent intuitivement les prononcer ; lorsqu'elle est donnée entre crochets ([]), il s'agit d'une transcription phonétique, c'est-à-dire qu'elle représente les sons tels qu'ils sont prononcés]_NOTE_REF([4])[.]) +__ +_LISTE([_ELEM([Brunzir /brun'zi/] _I([(bourdonner)])) +_ELEM([Brunzi /'brun.zi/] _I([(que je bourdonne/qu'il bourdonne)]))]) +__ +_LISTE([_ELEM([Donar /dɔ'na/] _I([(donner)])) +_ELEM([Dona /'dɔ.na/] _I([(il/elle donne)]))]) +__ +_LISTE([_ELEM([Secretaria /se.cre.ta'ri.a/] _I([(secrétariat)])) +_ELEM([Secretària /se.cre'ta.ri.a/] _I([(secrétaire)]))]) +__ +_PAR([De plus, la distinction entre /o/, /ɔ/ et /u/ s'efface en syllabe non accentuée : dans ce contexte, tous se prononcent [u].]) +__ +_LISTE([_ELEM([Donar [du'na]]) +_ELEM([Dona ['dɔ.nə]])]) +__ +_PAR([Voici d'autres exemples, tirés de (IEC, 2018).]) +__ +_LISTE([_ELEM([Fosc ['fosk]] _I([(sombre)])) +_ELEM([Foscor [fus'ko]] _I([(obscurité)]))]) +__ +_LISTE([_ELEM([Poc ['pɔc]] _I([(peu)])) +_ELEM([Poquet [pu'kɛt]] _I([(petit peu)]))]) +__ +_PAR([Un phénomène analogue se produit avec /a/, /e/ et /ɛ/, qui se centralisent tous en [ə] en syllabes non-accentuées.]) +__ +_LISTE([_ELEM([Secretaria [sə.crə.tə'ri.ə]]) +_ELEM([Secretària [sə.crə'ta.ri.ə]])]) +__ +_PAR([Voici d'autres exemples, tirés également de (IEC, 2018).]) +__ +_LISTE([_ELEM([Carrer [kər're] (rue)]) +_ELEM([Carreró [kər.rə'ro] (ruelle)])]) +__ +_LISTE([_ELEM([Mel ['mɛl] (miel)]) +_ELEM([Melós [mə'los] (mielleux)])]) +__ +_LISTE([_ELEM([Cantar [kən'ta] (chanter)]) +_ELEM([Canta ['kan.tə] (il/elle chante)])]) +__ +_SOUS_TITRE([« Pas »]) +__ +_PAR([Utiliser deux mots plutôt qu'un pour marquer la négation est un trait caractéristique du français : nous disons « Je] _IS([ne]) veux _IS([pas])[ ». J'ai été très surpris d'apprendre que catalan lui aussi possède cette double marque de la négation. Seulement, à la différence du français, le « pas » y est facultatif. Les phrases « No vull » et « No vull pas » sont toutes deux grammaticales.]) +__ +_PAR([Ces deux phrases n'ont cependant pas exactement le même sens. La première est équivalente à la phrase en français ; la seconde met davantage l'accent sur le fait de ne pas vouloir. Elle est plus près de « Je ne veux pas du tout. »]) +__ +_PAR([Le français réservait il y a fort longtemps un usage bien différent au forclusif « pas ». Cette particule servait à renforcer la négation et était à l'origine beaucoup plus chargée sémantiquement. Dire « Je ne marche pas. » signifiait alors « Je ne marche pas même un pas. » et dire « Je n'écris point. » signifiait « Je n'écris pas même un point. » L'inventaire de forclusifs était alors beaucoup plus riche, et l'on disait volontiers « Je ne bois goutte. » et « Je ne mange mie. »]) +__ +_PAR([Avec le temps, « pas » et « point » se sont généralisés et les autres forclusifs sont tombés en désuétude. Leurs sens se sont aussi progressivement effacés, jusqu'à ce qu'ils deviennent interchangeables et qu'ils ne gardent plus rien du pas qu'on marche et du point qu'on écrit.]) +__ +_PAR([À cette époque ces forclusifs avaient à peu près le même usage que celui qui prévaut en catalan. On ne les employait que pour renforcer un affirmation et on les laissait de côté le reste du temps.]) +__ +_PAR([En quête d'expressivité plus grande, les francophones se mirent à employer ces forclusifs de plus en plus souvent, en particulier « pas ». Mais leur sens ternissait de plus en plus à mesure que leur utilisation s'intensifiait, la force d'une expression venant beaucoup de la parcimonie avec laquelle on l'emploie ; c'est un principe d'économie. Avec le temps, « pas » en est venu à être si fréquent qu'il est devenu obligatoire. On appelle grammaticalisation ce processus par lequel un simple mot de vocabulaire entre dans la grammaire.]) +__ +_PAR([Et maintenant, c'est le marqueur de négation originel « ne » qui est devenu facultatif et qui est en voie de disparition, car on entend plus souvent « Je veux pas » que « Je ne veux pas ».]) +__ +_PAR([Les Catalans ont su rester parcimonieux, et dans leur langue « pas » conserve encore toute sa force]_NOTE_REF([5])[. Il est vrai que le catalan septentrional (aussi appelé roussillonnais), parlé en Catalogne-Nord, a tout comme le français supprimé la particule de négation originelle correspondant à « ne » et que « pas » y est obligatoire.]) +__ +_SOUS_TITRE([Dire l'heure]) +__ +_PAR([Plusieurs façons de dire l'heure cohabitent dans les pays catalans, mais la plus traditionnelle est appelée « sistema de campanar ». Elle doit son nom aux clochers des églises dont les tintements, à tous les quarts d'heure, servent de repère.]) +__ +_PAR([Contrairement au français, l'expression des heures requiert l'article défini. Le mot « hora » (« heure ») n'est pas prononcé, mais étant sous-entendu, l'article est féminin. De plus, l'article est singulier lorsque l'heure en question est 1h et pluriel dans les autres cas.]) +__ +_LISTE([_ELEM([Avui, m'he aixecat a les vuit.]) +_ELEM([Aujourd'hui je me suis levé à huit heures] _I([(aux huit)]).)]) +__ +_LISTE([_ELEM([Ja és la una.]) +_ELEM([Il est déjà une heure] _I([(la une)]).)]) +__ +_PAR([Le sistema de campanar admet deux subdivisions de l'heure. D'abord le quart d'heure. Il s'additionne aux heures, mais le fait d'une manière assez singulière. Mieux vaut d'abord présenter quelques exemples.]) +__ +_LISTE([_ELEM([Un quart de vuit.]) +_ELEM([7h15.] _I([(un quart de huit).]))]) +__ +_LISTE([_ELEM([Tres quarts de deu.]) +_ELEM([9h45.] _I([(trois quarts de dix).]))]) +__ +_LISTE([_ELEM([Dos quarts de dues.]) +_ELEM([1h30.] _I([(deux quarts de deux).]))]) +__ +_PAR([Nous voyons que l'heure exprimée est systématiquement décalée d'une heure par rapport à ce qu'aurait donné une simple addition des heures et des quarts d'heure. C'est que pour savoir ce que signifie « Un quart de vuit », il ne faut pas additionner 1 quart d'heure à 8h, mais 1 quart d'heure à la huitième heure, qui est 7h. En effet, à minuit commence la première heure, à une heure la deuxième, à deux heures la troisième, etc. Ainsi, la calcul qu'il faut faire est le suivant.]) +__ +_LISTE([_ELEM([Un quart de vuit.]) +_ELEM([Un quart d'heure + la huitième heure = 7h15.])]) +__ +_LISTE([_ELEM([Tres quarts de deu.]) +_ELEM([Trois quarts d'heure + la dixième heure = 9h45.])]) +__ +_LISTE([_ELEM([Dos quarts de dues.]) +_ELEM([Deux quarts d'heure + la deuxième heure = 1h30.])]) +__ +_PAR([Afin d'être plus précis, le système permet l'addition et la soustraction de minutes.]) +__ +_LISTE([_ELEM([Falten deu minuts per a les quatre.]) +_ELEM([3h50.] _I([(Il manque dix minutes pour les quatre).]))]) +__ +_LISTE([_ELEM([És un quart i tres de set.]) +_ELEM([6h18.] _I([(Il est un quart et trois de sept).]))]) +__ +_PAR([La deuxième subdivision de l'heure est le mig quart] _I([(demi quart d'heure)])[, équivalent à sept minutes et demie.]) +__ +_LISTE([_ELEM([Tres quarts i mig d'onze.]) +_ELEM([10h52.] _I([(Trois quarts et demi d'onze).]))]) +__ +_LISTE([_ELEM([Mig quart de nou.]) +_ELEM([8h07.] _I([(Demi quart de neuf).]))]) +__ +_PAR([Le site internet Softcatala, qui propose une foule d'outils en lien avec le catalan, rend disponible en ligne un programme permettant de convertir l'heure sous la forme HH:MM en mots, et ce pour trois systèmes différents, dont le sistema de camapanar.]) +__ +_PAR_LIENS([_LIEN([https://www.softcatala.org/hora-en-catala/], [L'hora en català])]) +__ +_SOUS_TITRE([Conclusion]) +__ +_PAR([Voici donc quatre faits du catalan que je trouve très intéressants et qui contribuent à en faire une langue unique. Il y en a bien entendu beaucoup d'autres, et je n'exclue pas d'augmenter au jour cet article d'autres curiosités.]) +__ +_SOUS_TITRE([Notes]) +__ +_PAR_NOTES( +[_NOTE([1], [_PPAR_NOTE([Certains affirment que la variété de catalan parlée à Valence est une langue distincte, le valencien. Je crois cependant que cette distinction n'est pas justifiée sur le plan linguistique.])]) +_NOTE([2], [_PPAR_NOTE([Il y a d'autres variétés parlées en Catalogne, la nord-occidental, par exemple.])]) +_NOTE([3], [_PPAR_NOTE([Je ne parle pas ici de l'accent graphique qui sert à distinguer à l'écrit deux homophones (« es », le pronom réflexif « se » et « és », « il est », par exemple). Je parle de l'accent tel qu'il est prononcé.])]) +_NOTE([4], [_PPAR_NOTE([La différence entre les représentations phonétiques et phonémiques s'illustre bien par l'exemple suivant. La plupart des locuteurs du français québécois, bien qu'ils remarquent à peu près tous une différence par rapport aux autres variétés de français, n'ont pas conscience de prononcer spécifiquement [pətsi] plutôt que [pəti] le mot « petit ». Il s'agit d'une différence phonétique, mais pas phonémique. La transcription phonétique de ces deux prononciations est la même, /pəti/.])]) +_NOTE([5], [_PPAR_NOTE([J'ai entendu à deux reprises, dans une vidéo d'][]_I([Easy Catalan])[, une même personne dire « gota » (goute) : la première fois seule, avec le sens de « pas du tout », et la deuxième fois au sein d'une phrase, pour renforcer la négation (« Que no hom som gota. »). Je ne sais pas si le phénomène est courant ; c'est la première (et seule) fois que j'ai remarqué un tel usage. En tout cas, ça témoigne de la conservation d'un élément que le français a délaissé. Belle richesse.]) +E_ESP([0])__ +_PAR_LIENS( +_LIEN([https://www.youtube.com/watch?v=jQvoY5cH1nk], [Vidéo en question]))])]) +__ +_SOUS_TITRE([Bibligraphie]) +__ +_LISTE([_ELEM([Institut d'Estudis Catalans (IEC). (2016). Gramàtica de la llengua catalana.]) +_ELEM([Institut d'Estudis Catalans (IEC). (2018). Gramàtica essential de la llengua catalana.]) +_ELEM([Institut d'Estudis Catalans (IEC). (2019). Gramàtica bàsica i d'ús de la llengua catalana.]) +_ELEM([De Pedrolo, M. (2013). Mecanoscrit del segon origen. Edicions 62.])])]) diff --git a/src/articles/finger_openbsd.m4 b/src/articles/finger_openbsd.m4 @@ -0,0 +1,282 @@ +divert(-1) +include(lib/inclure.m4) +include(src/articles/_.m4) + +E_TITRE([Configurer un serveur finger sous OpenBSD]) +E_DATE_PUB([2023], [02], [11]) +divert(0)__ +__ +_DOCUMENT( +[_PAR([Le protocole finger est à l'image des premiers temps d'Internet : simplissime et convivial]_NOTE_REF([1])[. Publiée en 1977, la RFC 742 est la première à en détailler le fonctionnement. Notre protocole dépasse donc aujourd'hui les 45 ans. Trois autres RFC ont suivi la première, la dernière étant la RFC 1288, publiée en 1991.]) +__ +_PAR_LIENS([_LIEN([https://www.rfc-editor.org/rfc/rfc742], [RFC 742]) +_LIEN([https://www.rfc-editor.org/rfc/rfc1288], [RFC 1288])]) +__ +_PAR([finger est une sorte de super carnet d'adresses en ligne. Une simple requête permet de recevoir ce qu'on pourrait appeler la « page d'accueil » du serveur, qui contient souvent la liste des utilisateurs qui y sont connectés. Augmentée d'un nom d'utilisateur, la requête fournit une somme variable d'informations concernant cet utilisateur. Il s'agit traditionnellement de son nom complet, de l'emplacement de son dossier ~/, du programme shell qu'il utilise, de la date et de l'heure de sa dernière connexion, de son numéro de téléphone, de l'état de sa boîte courriel, etc. En outre, les serveurs finger affichent typiquement le contenu des fichiers ~/.project et ~/.plan. Le premier tend à contenir des informations générales sur l'utilisateur, sur ses intérêts, etc. ; le second est souvent plus spécifique et changeant et lui sert à informer les autres de ses plans à court terme, de ce qui l'occupe, de ce qu'il explore ou veut explorer, etc. Mais ce qu'affiche une requête finger dépend en définitive des préférences de l'administrateur et de l'utilisateur.]) +__ +_PAR([L'âge d'or de finger semble révolu. Il était une l'époque où très peu d'individus possédaient un ordinateur personnel et où une grande partie de ceux qui avaient à en utiliser un devaient se connecter à un ordinateur central, donc partagé, appartenant à quelque université ou entreprise. Alors, « toutes les machines Unix connectées au réseau avaient un serveur finger », dit-on]_NOTE_REF([2])[. Avant l'avènement du Web, c'était un des seuls moyens informatisés répandus et efficaces d'obtenir de l'information sur quelqu'un.]) +__ +_PAR([Aujourd'hui, le protocole, sans être totalement tombé en désuétude, est assez marginal ; c'est le moins qu'on puisse dire. Il jouit toutefois d'un regain d'intérêt récent avec la montée de l'Internet simple et indépendant (je suis toujours à la recherche d'un terme français pour « smol web »). Il est apprécié pour sa simplicité et pour son fonctionnement décentralisé. Plusieurs serveurs tildes mettent ainsi à la disposition de leurs membres un serveur finger.]) +__ +_PAR_LIENS([_LIEN([gemini://zaibatsu.circumlunar.space/~solderpunk/phlog/were-bringin-finger-back.txt], [Article de Solderpunk « We're bringin' finger back! » (en anglais)])]) +__ +_PAR([J'héberge de depuis peu mon propre serveur finger. J'ai été séduit par sa simplicité et par l'espoir de le voir renaître comme moyen d'échange et de socialisation au sein des petites communautés de l'Internet citoyen.]) +__ +_PAR([C'est avec OpenBSD et ses outils que j'ai monté ce serveur, et en la matière, je n'ai pas d'expérience avec d'autres systèmes. Je n'aurai donc qu'OpenBSD en tête en écrivant cet article. Je serais cependant surpris d'apprendre que la marche à suivre diffère grandement entre les systèmes de type Unix.]) +__ +_SOUS_TITRE([Exemples d'utilisation]) +__ +_PAR([De nombreux systèmes dérivés de Unix sont livrés avec le programme finger(1), qui permet de réaliser des requêtes par ce protocole.]) +__ +_PRE( +[$ finger selve@asteride.xyz +[asteride.xyz/207.148.27.164] + + ---------------- + * ASTERIDE.XYZ * + ---------------- + +Utilisateur: selve Nom: Selve +Dossier: /home/selve Shell: /bin/ksh +Courriel: selve@asteride.xyz +Gemini: gemini://asteride.xyz/~selve/ +Langues: FranC'ais, catalan et anglais +DC)connectC) depuis le 2023-02-10 C 03:20:17 (UTC) + +[Et cetera]]) +__ +_PAR([Le client d'OpenBSD ne gère que l'encodage ASCII. C'est pourquoi le texte n'est pas affiché correctement. Les RFC sur finger à partir de 1194 RECOMMANDENT en effet de filtrer des caractères et de ne laisser passer que les caractères entre 32 et 126, de même que \t, \r et \n. Il est en outre spécifié que le serveur DOIT transmettre des caractères ASCII entre 128 et 255. D'habitude, je respecte les standards de bon cœur, mais quand j'écris en français, j'emploie les caractères en usage dans cette langue. Je ne me passerai ni des accents, ni des cédilles, ni des guillemets, ni, tant qu'à y être, d'autres commodités typographiques comme les ligatures. Je pense que nous pouvons nous permettre d'utiliser l'UTF-8]_NOTE_REF([3])[.]) +__ +_PAR([Heureusement, le protocole est si simple qu'on peut simuler le fonctionnement du programme avec netcat ou telnet, qui ne souffrent pas des mêmes limitations. Il suffit d'ouvrir un connexion avec le serveur approprié au port 79 et d'envoyer une seule ligne de texte. Cette ligne correspond généralement à l'utilisateur au sujet duquel on veut obtenir de l'information.]) +__ +_PRE( +[$ telnet asteride.xyz 79 +selve + + ---------------- + * ASTERIDE.XYZ * + ---------------- + +Utilisateur: selve Nom: Selve +Dossier: /home/selve Shell: /bin/ksh +Courriel: selve@asteride.xyz +Gemini: gemini://asteride.xyz/~selve/ +Langues: Français, catalan et anglais +Déconnecté depuis le 2023-02-10 à 03:20:17 (UTC) + +[Et cetera]]) +__ +_PAR([On peut même créer une fonction shell avec netcat pour remplacer le client de base. Elle n'est pas complète, mais elle sait faire l'important.]) +__ +_PRE( +[finger() { + echo "$1" | grep "@" >/dev/null && + printf "${1%@*}\r\n" | nc "${1##*@}" 79 || + printf "${1%@*}\r\n" | nc 127.0.0.1 79 +}]) +__ +_PAR([On peut souvent obtenir la liste des utilisateurs connectés à un système en ne précisant pas de nom d'utilisateur. Bien sûr, l'administrateur est maître de ce qui est envoyé.]) +__ +_PRE( +[$ finger @asteride.xyz + + ---------------- + * ASTERIDE.XYZ * + ---------------- + +Bienvenue sur asteride.xyz. + +D'habitude, lorsqu'on interroge un serveur finger sans spécifier de nom +d'utilisateur, il répond par la liste de tous les utilisateurs actifs au +moment de la requête. Mais la liste risque d'être plutôt courte ici, +car asteride.xyz n'en compte qu'il seul : selve (il est actif en ce +moment!). + +Il vous invite à exécuter « finger selve@asteride.xyz ».]) +__ +_PAR([Cela revient à envoyer une ligne vide.]) +__ +_PRE( +[$ telnet asteride.xyz 79 +[ENTRÉE] + + ---------------- + * ASTERIDE.XYZ * + ---------------- + +Bienvenue sur asteride.xyz. + +[Et cetera]]) +__ +_PAR([asteride.xyz ne compte qu'un seul (vrai) utilisateur. On peut aller voir sur des serveurs tildes comme zaibatsu.circumlunar.space, tilde.club, tilde.institude, etc. pour consulter une liste plus longue.]) +__ +_PRE( +[$ finger @zaibatsu.circumlunar.space +$ finger @tilde.club +$ finger @tilde.institute +$ finger @etc.]) +__ +_PAR([Je veux aussi donner un exemple d'utilisation originale du protocole. Techniquement, il ne s'agit que d'envoyer du texte en réponse à une ligne de texte. Un serveur peut alors interpréter cette ligne comme il le veut. graph.no permet ainsi de consulter la météo avec finger.]) +__ +_PRE( +[$ finger québec~72@graph.no +[graph.no/178.255.144.27] + -= Meteogram for Quebec, Canada =- + 'C Rain (mm) +-16 +-17--- +-18 ------ +-19 ------ =-- +-20 ---=--^^^ --- +-21 ^^^=== --- +-22 ====== --- +-23 ^^^ +-24 =--=-- +-25 + 18 19 20 21 22 23 09/02 02 03 04 05 06 07_08_09_10_11_12 Hour + + W W W W W W W W W W W W NW W W W W W W Wind dir. + 5 5 5 5 5 4 4 4 4 4 3 3 2 2 2 1 1 1 1 Wind(m/s) + +Legend left axis: - Sunny ^ Scattered = Clouded =V= Thunder # Fog +Legend right axis: | Rain ! Sleet * Snow +[Terminal FTW!]]) +__ +_PAR([On peut envoyer une ligne vide pour consulter les options de ce serveur.]) +__ +_PRE([finger @graph.no]) +__ +_SOUS_TITRE([Configuration]) +__ +_PAR([Cette présentation achevée, nous pouvons maintenant voir comment mettre en place un serveur finger sous OpenBSD. Ce n'est pas extrêmement compliqué. D'abord, le système d'exploitation vient un serveur finger (fingerd(8)) et avec tous les outils nécessaires à son fonctionnement.]) +__ +_PAR([fingerd(8) n'est pas un serveur à part entière : il ne tourne pas en arrière-plan (ce n'est un daimôn) et il n'accepte pas lui-même les connections entrantes ; il a besoin d'inetd(8) pour fonctionner. inetd(8) surveille une série de ports et transmet les requêtes à certains programmes.]) +__ +_PAR([C'est par le fichier de configuration /etc/inetd.conf qu'on lui indique quels ports surveiller et quel programme exécuter en cas de requête. Un exemple de configuration est disponible au /etc/examples/inetd.conf. Ce sont les lignes qui commencent par « #finger » qui nous intéressent. Il s'agit de les copier dans le fichier de configuration /etc/inetd.conf et de retirer ces dièses qui marquent les commentaires.]) +__ +_PRE( +[$ cat /etc/inetd.conf +finger stream tcp nowait _fingerd /usr/libexec/fingerd fingerd -lsm +finger stream tcp6 nowait _fingerd /usr/libexec/fingerd fingerd -lsm]) +__ +_PAR([Il y a deux lignes, car on veut qu'inetd(8) soit attentif au requêtes venants d'IPv4 et d'IPv6. Si on voulait surveiller non pas le port 79, qui est le port standard de finger, mais à un autre port, on replacerait le premier champ (« finger ») par le numéro de ce port. On peut aussi écrire :]) +__ +_PRE( +[$ cat /etc/inetd.conf.fictif +79 stream tcp nowait _fingerd /usr/libexec/fingerd fingerd -lsm +79 stream tcp6 nowait _fingerd /usr/libexec/fingerd fingerd -lsm]) +__ +_PAR([En fait, inetd(8) consulte le fichier /etc/services pour connaître la correspondance entre le nom du service et numéro de port à utiliser. Une autre option serait donc de modifier ce fichier.]) +__ +_PAR([Le quatrième champ spécifie le nom de l'utilisateur sous lequel exécuter le programme finger. Ici, il s'agit de _fingerd, ce qui est tout à fait approprié.]) +__ +_PAR([Le cinquième champ donne le chemin vers le programme qui doit traiter la requête. Ici, il nous utilisons le programme inclus dans OpenBSD. Les champs suivants seront donnés en argument à ce programme (avec « fingerd » comme argument 0). Trois options sont spécifiées. -l demande de noter chaque requête dans les journaux. -s empêche le transfert des requêtes. Sans cela, la commande]) +__ +_PRE([finger québec~72@graph.no@asteride.xyz]) +__ +_PAR([demanderait à asteride.xyz d'effectuer lui-même la requête à graph.no. Celui-ci n'aurait aucune idée de l'identité de l'initiateur et penserait qu'il s'agit d'asteride.xyz. On comprend que ce n'est pas ce qu'on souhaite permettre.]) +__ +_PAR([Finalement, l'option -m oblige l'utilisateur à envoyer le nom d'utilisateur exacte au serveur. Autrement, on s'attend à ce que, advenant une requête au sujet d'un utilisateur inexistant, le serveur réponde avec une liste nom d'utilisateurs qui ressemblent à celui de la requête.]) +__ +_PAR([La page du manuel de fingerd(8) dresse la liste de toutes les options disponibles.]) +__ +_SOUS_SOUS_TITRE([Modifier la réponse du serveur]) +__ +_PAR([fingerd(8) offre très peu d'options pour modifier l'apparence du contenu de la réponse ; la liberté de l'utilisateur se limite à ce qu'il peut écrire dans ~/.plan et dans ~/.project.]) +__ +_PAR([En fait, sur OpenBSD fingerd(8) ne s'occupe pas lui-même la recherche et de la présentation des données. Il délègue ces tâches à finger(1), le même programme qu'on utilise normalement pour effectuer une requête à partir de la ligne de commande. D'ailleurs, il est possible d'utiliser localement la commande sans serveur finger. Voici la réponse affichée par la commande finger(1) que j'ai exécutée sur mon ordinateur portable. (Notez l'absence de « @ »).]) +__ +_PRE( +[Login: selve Name: Selve +Directory: /home/selve Shell: /bin/ksh +On since Fri Feb 10 12:43 (EST) on ttyp0 from :0 +On since Fri Feb 10 13:48 (EST) on ttyp4 from :0 +On since Fri Feb 10 13:47 (EST) on ttyp6 from :0 +On since Fri Feb 10 13:49 (EST) on ttyp7 from :0 +On since Fri Feb 10 13:50 (EST) on ttyp8 from :0 +On since Fri Feb 10 14:19 (EST) on ttypa from :0 +New mail received Thu Feb 9 13:35 2023 (EST) + Unread since Wed Sep 14 18:06 2022 (EDT) +No Plan.]) +__ +_PAR([fingerd(8) propose d'utiliser un autre programme que finger(1). On l'indique à l'aide de l'option -P. Voici à quoi devrait ressembler le fichier de configuration d'inetd(8) si on voulait que fingerd(8) transmette le texte généré à chaque requête par le programme qui se trouve au /etc/finger. Bien entendu, il faut que ce programme soit exécutable par _fingerd.]) +__ +_PRE( +[$ cat /etc/inetd.conf +finger stream tcp nowait _fingerd /usr/libexec/fingerd fingerd -lsm -P /etc/finger +finger stream tcp6 nowait _fingerd /usr/libexec/fingerd fingerd -lsm -P /etc/finger]) +__ +_PAR([À partir de là, on peut faire ce qu'on veut. Selon ce que j'ai trouvé dans le code source de fingerd(8), le programme de remplacement devrait savoir gérer (ou ignorer) les options -smMpl, telles que décrites dans finger(1). Les arguments sont donnés par fingerd(8) dans cet ordre : les options sont placées d'abord, suivies du marqueur de fin des options (--) et du contenu de la seule ligne envoyée par le client (un nom d'utilisateur ou rien, la plupart du temps)]_NOTE_REF([4])[.]) +__ +_PAR([Voici un exemple de programme de remplacement.]) +__ +_PRE( +[$ cat /etc/finger +#!/bin/sh + +# interpréter les options (en fait, elles sont ignorées) +PLAN=1 +while getopts "smMpl" OPT +do +case "$OPT" in + s) FG_COURT=1 ;; + m) FG_CHERCHER= ;; + M) FG_CHERCHER=1 ;; + p) FG_PLAN= ;; + l) FG_LONG=1 ;; + *) logger -t finger "L'option -$OPT n'est pas supportée." +esac +done +shift $((OPTIND - 1)) + +UTILISATEUR="$1" +printf '%s\n\n' "$UTILISATEUR" +[ -r "/home/$UTILISATEUR/.plan" ] && cat "/home/$UTILISATEUR/.plan" +[ -r "/home/$UTILISATEUR/.projet" ] && cat "/home/$UTILISATEUR/.projet"]) +__ +_PAR([Ce programme n'est pas robuste. Il ne sait même pas gérer la ligne vide. De plus, les dossiers de certains utilisateurs ne se trouvent pas dans /home/ ; c'est le cas de root, par exemple. Il faudrait consulter /etc/passwd pour savoir où le dossier de chaque utilisateur se trouve. Le but est simplement de donner un aperçu du pouvoir qui est entre nos mains.]) +__ +_SOUS_TITRE([Brèves remarques sur la sécurité]) +__ +_PAR([Cette section s'impose, car le protocole finger n'a pas une bonne réputation en matière de sécurité. Cette réputation n'est qu'en partie justifiée. Elle est répandue surtout à cause du ver de Morris, qui a, entre autres, profité d'une vulnérabilité dans le programme fingerd répandu à l'époque (c'est-à-dire 1988). Ce n'est pas le protocole lui-même qui a été pris en défaut, mais une mise en œuvre particulière. D'ailleurs, tout service exposé à l'Internet vient avec ses risques en matière de sécurité. Et gardons en tête que ces vulnérabilités ont d'autant moins de chances de survenir que le programme est simple.]) +__ +_PAR_LIENS([_LIEN([https://fr.wikipedia.org/wiki/Morris_(ver_informatique)], [Article Wikipédia sur le ver de Morris])]) +__ +_PAR([Si on veut affirmer que finger n'est pas sécuritaire, c'est à l'objectif même du service qu'il faut s'en prendre. Si on essaie généralement de divulguer le moins d'information possible aux pirates potentiels, c'est parce qu'ils peuvent parfois s'en servir pour mieux cibler leurs attaques. Or, le but de finger est de partager de l'information. Disposer de la liste des utilisateurs connectés et connaître leurs plans et leurs intérêts a des chances de faciliter la vie de ces pirates. Ça ne fait aucun doute. Par contre, avoir un blogue, un compte Facebook, un compte Mastodon, etc. bref être présent et actif sur ce genre de plateforme accessible publiquement risque d'aider les pirates bien plus que d'avoir une présence sur finger.]) +__ +_PAR([S'il y a peu de chance d'y avoir une faille utile aux pirates dans les programmes finger contemporains et si j'estime que les risques associés à l'information disponible par leur truchement est négligeable, je crois qu'il faut être extrêmement vigilant au moment de créer un programme finger alternatif. Il est très facile de faire des erreurs, surtout dans des programmes shell. Prudence! donc.]) +__ +_SOUS_TITRE([Conclusion]) +__ +_PAR([Si la configuration de base d'un serveur finger sous OpenBSD est très simple, j'ai trouvé moins évident l'exécution d'un programme finger alternatif. Dans ce cas, malgré la réputation d'OpenBSD dans ce domaine, la page de manuel de fingerd(8) ne semble malheureusement aider que ceux qui savent déjà comment faire. J'ai en effet dû consulter le code source du programme pour comprendre comment le configurer. J'ai donc écrit ce guide pour aider ceux qui auraient la même idée que moi.]) +__ +_SOUS_TITRE([Voir aussi]) +__ +_SOUS_SOUS_TITRE([Mon serveur finger]) +__ +_PAR_LIENS([_LIEN([finger://selve@asteride.xyz], [selve@asteride.xyz])]) +__ +_SOUS_SOUS_TITRE([Les RFC]) +__ +_PAR_LIENS([_LIEN([https://www.rfc-editor.org/rfc/rfc742], [RFC 742]) +_LIEN([https://www.rfc-editor.org/rfc/rfc1194], [RFC 1194]) +_LIEN([https://www.rfc-editor.org/rfc/rfc1196], [RFC 1196]) +_LIEN([https://www.rfc-editor.org/rfc/rfc1288], [RFC 1288])]) +__ +_SOUS_SOUS_TITRE([L'article Wikipédia sur finger]) +_PAR_LIENS([_LIEN([https://fr.wikipedia.org/wiki/Finger_(Unix)], [finger (Unix)])]) +__ +_SOUS_SOUS_TITRE([L'article de Bortzmeyer sur finger]) +__ +_PAR_LIENS([_LIEN([https://www.bortzmeyer.org/1288.html], [RFC 1288: The Finger User Information Protocol (en français malgré le titre)])]) +__ +_SOUS_TITRE([Notes]) +__ +_PAR_NOTES( +[_NOTE([1], [_PPAR_NOTE([Certains ajouteraient que le peu de souci porté à la sécurité informatique fait de finger un digne représentant de son époque. Ce n'est pas exactement mon avis. J'y reviendrai.])]) +__ +_NOTE([2], [_PPAR_NOTE([Voir l'article de Stéphane Bortzmeyer sur finger.])]) +__ +_NOTE([3], [_PPAR_NOTE([Le client Bombadillo, par exemple, accepte les textes encodés en UTF-8. Je serais d'accord pour qu'on modifie le client d'OpenBSD afin qu'il respecte LC_CTYPE.])]) +__ +_NOTE([4], [_PPAR_NOTE([Astuce : si on veut avoir une idée des arguments que finderd(8) donne au programme, on peut remplacer « /etc/finger » par « echo ». Ces arguments seront ainsi transmis par finger.])])])]) diff --git a/src/articles/index.m4 b/src/articles/index.m4 @@ -0,0 +1,15 @@ +divert(-1) +include(lib/inclure.m4) +include(src/articles/_.m4) + +E_TYPE([divers]) +E_TITRE([Le Cybercarnet de Selve]) + +divert(0)__ +__ +_DOCUMENT( +[_PAR_LIENS( +[_LIEN([finger_openbsd.]LI_EXT, [2023-02-11 Configurer un serveur finger sous OpenBSD]) +_LIEN([curiosites_catalan.]LI_EXT, [2022-10-11 Quelques curiosités du catalan]) +_LIEN([chute_voyelles_aymara.]LI_EXT, [2022-01-05 Chute de voyelles conditionnée morphologiquement en aymara]) +_LIEN([avant-propos.]LI_EXT, [2021-12-21 Avant-propos])])]) diff --git a/src/florilege/_.m4 b/src/florilege/_.m4 @@ -0,0 +1 @@ +include(src/_.m4) diff --git a/src/florilege/index.m4 b/src/florilege/index.m4 @@ -0,0 +1,45 @@ +divert(-1) +include(lib/inclure.m4) +include(src/florilege/_.m4) + +E_TITRE([Florilège]) +E_TITRE_SOUS(_I([Pensées, citations, etc. que je veux partager.])) +E_CH_RET_LIEN([../]) +E_CH_RET_NOM([Revenir à la page d'accueil]) +divert(0)__ +__ +_DOCUMENT( +[_SOUS_TITRE([11 mars 2023]) +__ +_PAR([Je suis depuis longtemps à la recherche d’une traduction française de « hack » et de ses dérivés « hacker » et « hacking ». « Bidouilleur » et « bricoleur » sont certes en usage, mais certains termes de la série sont très peu usités dans ce contexte : « bidouille » et « bricole », par exemple. Il existe pourtant un mot employé au Québec qui recouvre à peu près le même domaine sémantique que « hack » et cie. et qui dispose de tous les dérivés nécessaires pour traduire le concept anglais. Il s’agit de « patente », « patenter », « patenteux » et « patentage ».]) +__ +_PAR([Le Dictionnaire Québécois d’aujourd’hui (1992) donne les définitions suivantes :] +_LISTE( +[_ELEM([« Patente » : « Invention, chose nouvelle, procédé ingénieux, parfois un peu bizarre. »]) +_ELEM([« Patenter » : « Installer, monter qqch. avec des moyens de fortune. », « Réparer, arranger temporairement, et tant bien que mal, qqch. » et « Inventer qqch., mettre qqch. au point. »]) +_ELEM([« Patentage » : « Fait de patenter. »]) +_ELEM([« Patenteux » (ou « patenteur ») : « Inventeur; inventif » et « Personne qui répare, rafistole qqch. avec des moyens de fortune. »])])) +__ +_PAR([Il est vrai que le Dictionnaire donne d’autres définitions qui concordent moins bien avec l’idée de « hack » en anglais, mais il s’agit ici d’un cas de polysémie et on ne pourrait lui accorder grande importance, car ce genre d’obstacle est si fréquent que ce serait nous empêcher de traduire en toute circonstance.]) +__ +_PAR([C'est donc ces mots que j'emploierai dorénavant.]) +__ +SI(T_FORMAT([html]), [[<hr>]], [dnl]) +__ +_SOUS_TITRE([10 mars 2022]) +__ +_CITER([Ce que nous prenons pour des vertus n’est souvent qu’un assemblage de diverses actions et de divers intérêts, que la fortune ou notre industrie savent arranger ; et ce n’est pas toujours par valeur et par chasteté que les hommes sont vaillants, et que les femmes sont chastes.]) +__ +_PAR([Première des Maximes de François de La Rochefoucauld. Profonde en dépit du sexisme dont elle est teintée.]) +__ +SI(T_FORMAT([html]), [[<hr>]], [dnl]) +__ +_SOUS_TITRE([31 décembre 2021]) +__ +_PAR([C’est une grande sérénité qu’autorise la certitude que tout a un terme et que le temps avance inexorablement.]) +__ +SI(T_FORMAT([html]), [[<hr>]], [dnl]) +__ +_SOUS_TITRE([21 décembre 2021]) +__ +_PAR([Être féministe ou antiraciste et ne pas être anarchiste, c’est faire preuve de discrimination entre les opprimés.])]) diff --git a/src/humans.txt b/src/humans.txt @@ -0,0 +1,13 @@ +/* SITE */ +Nom: Selve +Gemini: gemini://asteride.xyz/~selve/ +Web: https://asteride.xyz/~selve/ +Date de création: 21 décembre 2021 +Dernière mise a jour: 08 avril 2023 +Langue: Français + +/* AUTEUR */ +Selve + +/* LIENS */ +Courriel: selve@asteride.xyz diff --git a/src/index.m4 b/src/index.m4 @@ -0,0 +1,63 @@ +divert(-1) +include(lib/inclure.m4) +include(src/_.m4) + +E_TITRE(SI(T_FORMAT([gemini]), [[La Capsule Gemini]], [[Le Site Internet]])[ de Selve]) + +define([LOCAL_DEPUIS], [[Depuis le 21 décembre 2021]]) +SI(T_FORMAT([html]), [E_TITRE_SOUS(_I(~ []LOCAL_DEPUIS[] ~))]) + +divert(0)__ +__ +_DOCUMENT( +[SI(T_FORMAT([gemini]), [_PRE(LOCAL_DEPUIS, LOCAL_DEPUIS)], [dnl]) +__ +_SOUS_TITRE([Bienvenue sur ]SI(T_FORMAT([gemini]), [[ma capsule Gemini.]], [[mon site Internet.]])) +__ +_PAR([Je suis Selve et je vous souhaite la bienvenue sur ][]dnl +SI(T_FORMAT([gemini]), [[ma capsule. Elle est encore menue]], [[mon site. Il est encore menu]])[]dnl +[, mais je crois qu’on peut déjà y trouver quelques attraits. Je ][]dnl +SI(T_FORMAT([gemini]), [[la]], [[le]])[]dnl +[ présente plus complètement dans l’avant-propos que je lui ai consacré, et dont je recommande la lecture.]) +__ +_PAR_LIENS([_LIEN(LI_ART_AVANT_PROPOS, [Avant-propos])]) +__ +SI(T_FORMAT([html]), +[_PAR([Ce site est aussi disponible sur gemini.]) +__ +_PAR_LIENS([_LIEN([gemini://asteride.xyz/~selve/], [Ma capsule])])], [dnl]) +__ +_SOUS_TITRE([Cybercarnet]) +__ +_PAR([Il est composé d’articles que j’ai écrits pour ][]dnl +SI(T_FORMAT([gemini]), [[cette capsule.]], [[ce site.]])) +__ +_PAR_LIENS([_LIEN(LI_ART, [Cybercarnet])]) +__ +_SOUS_TITRE([Florilège]) +__ +_PAR([J’alimente aussi un florilège. C'est quelque chose comme un microblogue, qui rassemble(ra) quelques-unes des citations que j’ai aimées, de même que certaines pensées que j’ai eues et qui ne méritent pas nécessairement un article complet. Je l’augmente périodiquement.]) +__ +_PAR_LIENS([_LIEN(LI_FLO, [Florilège])]) +__ +_SOUS_TITRE([Autres endroits à visiter]) +__ +_PAR(SI(T_FORMAT([gemini]), [[Ma capsule]], [[Mon site]])[ n'est pas le seul endroit de tout Internet qui vaille la peine d'être visité. Je rassemble ici quelques bonnes adresses.]) +__ +_PAR_LIENS([_LIEN(LI_A_VISITER, [À visiter])]) +__ +_SOUS_TITRE([Contact]) +__ +_PAR([On peut me contacter par courriel à l'adresse suivante.]) +__ +_PAR_LIENS([_LIEN([mailto:selve@asteride.xyz], [selve@asteride.xyz])]) +__ +_PAR([On peut aussi obtenir de l'informations sur en consultant mon serveur finger.]) +__ +_PAR_LIENS([_LIEN([finger://selve@asteride.xyz], [selve@asteride.xyz])]) +__ +_SOUS_TITRE([Licence]) +__ +_PAR([Tout ce qui se trouve ici et qui vient de moi est disponible sous la licence CC-BY-NC-SA.]) +__ +_PAR_LIENS([_LIEN([https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.fr], [Licence CC-BY-NC-SA])])]) diff --git a/robots.txt b/src/robots.txt