Crowpi, informatique et physique (1)

Je commence ici une série d’articles portant sur l’informatique et la physique. Une chose étonnante que m’a appris l’enseignement de l’informatique, c’est sa capacité à permettre aux élèves de travailler seuls, notamment à la maison. Les possibilités offertes par l’informatique aujourd’hui sont si peu coûteuses qu’il est possible de s’initier à l’informatique seul. Cela présente plusieurs avantages dont le fait de n’être pas jugé par un enseignant, mais simplement par le fait qu’on soit capable de faire ce qu’on a décidé de faire ou le fait de pouvoir travailler quand on veut.

Ne serait-il pas possible de profiter de ces avantages en informatique pour les transmettre à l’étude de la physique ?


Une tentative très intéressante pour permettre l’apprentissage de l’informatique est évidemment l’utilisation de Raspberrypi. Les étonnantes capacités de cette petite machine en ont fait l’outil idéal pour cela. Basé sur l’utilisation d’un Raspberrypi, le projet Crowpi, un petit ordinateur portable entièrement équipé de capteurs sous le clavier est remarquable.

L'ordinateur Crowpi
ASCII

L’idée à la base de ces articles est d’utiliser Crowpi pour faire de la physique. Crowpi se veut une plateforme pour l’étude de l’informatique. Se pourrait-il qu’il puisse être simultanément une plateforme pour la physique ? C’est à la découverte de ses capacité dans ce dernier domaine que cette série d’articles va être consacrée.

33. Le shell sécurisé : ssh

Ssh est un incontournable de la gestion sécurisée des machines. L’idée est simple : depuis un ordinateur, se connecter en ligne de commande sur un autre.

Utilisation

Après installation de ssh sur les deux ordinateurs, l’utilisation est simple :

ssh pi@ipordinateurdistant

où, « pi » est le nom de l’utilisateur sous lequel on veut se connecter et « ipordinateurdistant » l’adresse ip de l’ordinateur distant sur lequel on veut se connecter.

Suivant les cas, si vous avez autorisé une connexion avec un mot de passe, un mot de passe vous sera demandé, ou, si vous n’autorisez qu’une connexion par clé, une phrase de passe vous sera demandée.

Création des clés

Pour créer des clés privée et publique utilisables par ssh, il faut simplement lancer la commande :

ssh-keygen -t rsa

Ainsi, vous créerez une paire de clé publique-privée de type rsa, communément utilisé. Vous seront demandé le répertoire dans lequel les clés seront stockées et votre phrase de passe deux fois. Pour le répertoire de stockage, vous pouvez laisser le répertoire par défaut : « .ssh ». Quand cela est fini, vous retrouverez vos clés dans ce répertoire sous les noms « id_rsa » pour la clé privée et « id_rsa.pub » pour la clé publique. Id_rsa étant votre clé privée, elle ne doit jamais être communiquée à qui que ce soit.

Transfert de la clé publique

Pour la clé publique, il faut maintenant la transférer sur les ordinateurs sur lesquels vous voulez vous connecter. Pour cela, il vous faut un compte utilisateur valide sur l’ordinateur distant. Admettons que votre compte sur celui-ci se nomme « pi ». Le transfert de votre clé publique sur ce compte se fait de la manière suivante :

ssh-copy-id pi@ipordinateurdistant

Un avertissement vous sera alors donné vous demandant de confirmer que vous voulez réellement vous connecter sur cet ordinateur. Répondez par « yes ». Le mot de passe du compte pi vous sera alors demandé et après l’avoir validé, vous serez informé que votre clé publique a été ajoutée au trousseau de ce compte.

Vous pourrez alors utiliser ssh comme mentionné plus haut pour vous connecter à l’aide de votre phrase de passe.

Configuration

Alors depuis l’ordinateur sur lequel vous avez créé les clés vous pourrez vous connecter avec votre phrase de passe, parfaitement sécurisée. Mais avec un autre ordinateur, il est possible que vous puissiez vous connecter avec un mot de passe. Si c’est le cas, toute personne pourra tenter de se connecter en ssh à votre compte pi. Pour s’y connecter, il lui suffira de trouver votre mot de passe. Si ce n’est pas le cas, l’accès lui sera simplement refusé. L’ordinateur distant ne va donc alors accepter une connexion que si il sait que c’est vous. Pour cela, il a créé, lors de la transmission de votre clé publique un fichier des hôtes connus baptisé « known_host » et un autre fichier des clés authorisées « authorised_keys ». Ainsi, il est préférable, après avoir déposé sa clé publique, d’interdire les connexions par mot de passe. Cela se fait dans le fichier de l’ordinateur distant :

/etc/ssh/sshd_config

Vous trouverez dans ce fichier la ligne suivante :

#PasswordAuthentication yes

En mode root ou avec sudo, décommentez-la est mettez sa variable à no :

PasswordAuthentication no

Enregistrez et redémarrez ssh par :

systemctl restart ssh

Désormais l’ordinateur distant ne sera plus accessible qu’à travers une phrase de passe. Attention, cela pourrait signifier que certains utilisateurs sans clés qui se connectaient avec un mot de passe pourraient ne plus pouvoir utiliser ssh.

Dérogation de droits

SI vous voulez accorder à certains utilisateurs la possibilité de se connecter par mot de passe, alors que par défaut c’est l’authentification par phrase de passe qui doit être imposée, cela est faisable en ajoutant à la fin du fichier « sshd_config » :

Match user autreuser
    PasswordAuthentication yes

où « autreuser » est un utilisateur autorisé à utiliser une authentification par mot de passe. Attention, tout ce qui vient après la ligne « Match user autreuser » concernera l’utilisateur « autreuser ». On peut ainsi ajouter d’autres directives pour cet utilisateur spécifique en dessous de « Password… ».

26. Git introduction

Nous allons prendre un dépôt relativement simple comme celui se trouvant à l’adresse : https://git.roflcopter.fr/guyotv/TM_latex

Un tel dépôt peut être téléchargé (Bouton download) ou cloné (bouton clone). Téléchargé signifie que vous allez en récupérer tous les fichiers, que vous pourrez les utiliser et les modifier sur votre ordinateur, mais pas interagir avec le dépôt. Par contre, quand vous clonez le dépôt, en plus de récupérer tous les fichiers du dépôts, vous récupérez aussi un répertoire caché nommé « .git » qui va vous permettre de modifier les fichiers du dépôt.

Pour cloner le dépôt, cliquez sur le bouton clone et copiez l’adresse de clonage. Puis, placez-vous dans le répertoire dans lequel vous mettez les dépôts clonés et clonez :

clone https://git.roflcopter.fr/guyotv/TM_latex.git

Quelques instants plus tard se trouvera cloné sur votre ordinateur le répertoire du dépôt. Vous pourrez alors travailler localement sur ses fichiers en toute liberté sans modifier le dépôt.

Une fois les modifications faites, vous pourrez utiliser la suite classique de commandes suivante :

git status
git add .
git commit -m "Voici les modifications que j'ai faites."
git push -u origin master

Cette suite de commandes est à comprendre en s’imaginant qu’il existe trois éléments de travail : les fichiers que vous avez modifiés, un dépôt local et un dépôt distant. Quand vous travaillez sur les fichiers qui sont sur votre ordinateur, vous ne modifiez aucun des deux dépôt local et distant. Ainsi :

  • la commande « git status » va comparer les fichiers qui sont dans votre répertoire local à ceux qui se trouvent dans le dépôt local. S’il n’existe pas de différence, elle vous répondra qu’aucune modifications n’est nécessaire. Par contre, si vous avez modifié les fichiers de votre répertoire local, elle va vous afficher tous ceux qui ne correspondent pas à ceux qui se trouvent dans le dépôt local.
  • la commande « git add . » (attention le point « . » est nécessaire) va vous permettre d’ajouter tous ces fichiers (le point « . » signifie tous) à la liste des fichier à modifier sur le dépôt local. Vous pourriez vouloir ne modifier que quelques uns de ceux-ci sur le dépôt local, auquel cas, il faudra les spécifier à la place du point. Ainsi, les fichiers à modifier seront marqués en tant que tel.
  • la commande « git commit -m « C’est fait. » » vous permet d’envoyer les modifications du répertoire de travail dans le dépôt local avec un message obligatoire décrivant ces changements.

À ce stade, rien n’a été effectué sur le dépôt distant. Mais tous les changements que vous avez réalisés se trouvent en attente sur le dépôt local, c’est-à-dire sur votre ordinateur.

  • la commande « git push -u origin master » vous permet d’envoyer vos changements sur le dépôt distant nommé « master ». Plus précisément, elle vous permet de les envoyer sur la branche « origin » du dépôt « master ». En effet, il peut y avoir plusieurs branches branches du même projet sur lesquelles on peut travailler en parallèle. Pour en savoir plus reportez-vous à l’article https://www.cvgg.org/wordpress/blog/27-git-et-les-branches/. Le « -u » va vous demander de spécifier l’utilisateur et vous demandera son mot de passe.

Voilà. AInsi vous pourrez reporter vos changements (pour autant que vous y soyez autorisés : utilisateur et mot de passe) sur le dépôt distant. Ainsi aussi les autres utilisateurs pourront les récupérer.


Une utilisation intéressante en mode mono-utilisateur est la suivante. Imaginez que vous travailliez comme cela est présenté ci-dessus à la maison. Vous vous rendez ensuite à votre travail et là-bas désirez modifier vos fichiers. Pour cela vous les récupérez en clonant le dépôt, faites vos modifications et les reportez successivement sur le dépôt local (à votre travail) puis sur le dépôt distant. Tout va bien. De retour chez vous, vous voulez synchroniser le dépôt distant qui a été modifié au travail avec les fichiers qui sont sur votre ordinateur à la maison. Une seule commande suffira :

git pull

Et vous verrez avec un grand plaisir que toutes les modifications faites au travail seront reportée dans vos fichiers à la maison.

Voilà. Amusez-vous bien. La puissance de git est simplement stupéfiante.

32. Gestion du temps en ligne de commande

La mise-à-jour automatique de l’heure sur un ordinateur est tellement classique qu’on en oublierait qu’elle existe. Par ailleurs, justement puisqu’elle existe, pourquoi s’en charger ? Comme il existe un service (NTP) qui se charge de fournir l’heure à l’ordinateur, pourquoi ne pas le laisser faire ?

Si NTP est un service, il doit pour faire son office, utiliser des serveurs de temps disponible sur internet. Il est donc nécessaire que l’ordinateur ait accès au réseau. Si ce n’est pas le cas, l’heure ne sera pas mise à jour. Pour des ordinateurs comprenant une petite pile (la plupart d’entre eux) ou des smartphones constamment branchés sur la batterie, ce n’est qu’après beaucoup de temps que l’heure va prendre quelque retard, puis le quartz intégré à la machine permet aujourd’hui une précision importante.

Par contre, sur certains ordinateurs non munis d’une pile, comme le raspberrypi, si vous l’éteignez, l’horloge s’arrête. En le rallumant sans connexion, l’heure ne sera donc pas correcte.

Une distribution intéressante pour faire de l’astronomie avec un raspberrypi directement sur le télescope permettant d’utiliser la raspicam au foyer (avec un télescope comme le pikon, par exemple) est Astroberry. Cette distribution crée un point d’accès wifi permettant de mettre en place un VPN pour accéder au raspberrypi depuis un portable. Généralement, le réseau internet n’est pas disponible lors d’observations hors de chez soi (le réglage de l’heure via son smartphone ne sera pas abordé ici). Il est donc nécessaire d’effectuer un réglage manuel. Avec Astroberry, on peut le faire avec une interface graphique. Mais, Astroberry nécessite un raspberrypi 3 ou 4. Si on préfère un raspberrypi 0, consommant bien moins de ressources énergétiques (on peut utiliser raspivid sur TCP pour voir les images de la caméra sur un portable et raspistill pour faire les photos), il est nécessaire de s’y connecter via ssh, c’est-à-dire en ligne de commande. Ainsi, en astronomie, avec un raspberrypi 0, le réglage manuel de l’heure peut être nécessaire régulièrement.


Pratiquement, la gestion du temps passait il y a peu par les commandes suivantes permettant notamment de gérer l’accès à un ou des serveurs ntp :

date et ntpdate

Aujourd’hui, avec systemd, un autre outil permet ce type de réglages :

timedatectl

C’est un outil de systemd, à l’instar de systemctl, disponible avec celui-ci. Voici quelques commandes intéressantes :

Activation – désactivation du réglage automatique

timedatectl set-ntp false
timedatectl set-ntp true

Réglage de la zone

timedatectl set-timezone Europe/Zurich

Réglage de la date et de l’heure

timedatectl set-time 'A-M-J HH:MM:SS'
timedatectl set-time 'A:M:J HH:MM:SS'
timedatectl set-time 'A-M-J'
timedatectl set-time 'HH:MM:SS'

Configuration du serveur de temps dans le fichier de configuration /etc/systemd/timesyncd.conf

[Time]
NTP=
FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org/

puis réactiver ntp, comme vu plus haut.

Enfin, vous pouvez consulter les réglages en cours avec :

timedatectl status

Ce qui devrait vous retourner quelque chose comme :

Local time: lun 2021-08-23 08:50:33 CEST
           Universal time: lun 2021-08-23 06:50:33 UTC
                 RTC time: n/a
                Time zone: Europe/Zurich (CEST, +0200)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Voilà. Timedatectl permet donc le réglage d’un client ntp.

Gemini

J’ai trop longtemps négligé l’importance du texte. Jeune j’ai été passionné de littérature. La science m’en a alors détourné. Paul Feyerabend m’ayant rappelé qu’elle était elle-même langage et Noam Shomsky ayant confirmé qu’il en était de même pour l’informatique, mes pratiques ont lentement dérivées vers le texte par la programmation, des cours de physiques en LaTeX et le un nouveau plaisir d’écrire en opposition radicale avec la période désagréable des vidéos-conférences. Tout alors m’a éloigné du monde des images à tel point que j’ai abandonné la télévision. Ce changement ne fut pas radical, car des années auparavant, j’avais déjà abandonné la voiture pour le vélo et je savais que le ralentissement de ses déplacements pouvait être très bénéfique. J’ai alors compris que le filtrage des informations par le texte pouvait l’être tout autant.

La découvert du groupe « rawtext.club » a donc été pour moi une véritable révélation. Toutes les valeurs des membres de ce groupe me correspondaient et comme ils proposaient de mettre de l’information sur le tout jeune Gemini, un autre web focalisé sur le texte, je me suis lancé dans l’aventure.

Le protocole

Gemini est un protocole, à l’instar d’http. Il s’agit d’accorder deux ordinateurs pour qu’il se comprennent et puissent se transmettre de l’information. Ainsi, quand vous utilisez « Hyper Text Transfer Protocol », soit http, vous utilisez un « un protocole de communication client-serveur développé pour le World Wide Web » (Wikipedia). Quand vous utilisez « Gemini », soit gemini, vous utilisez « un protocole de communication client-serveur. C’est un protocole de la couche application qui utilise le protocole TCP comme couche de transport. Il permet notamment d’accéder à des documents texte simples de type hypertexte. Les échanges entre le client et le serveur sont sécurisés à l’aide du protocole TLS. Le protocole est mis au point de manière collaborative mais n’est pas un standard internet » (Wikipedia).

« Les ressources Gemini sont identifiées au moyen d’URL dont le schéma est gemini://. Il est à noter que contrairement au protocole HTTPS qui possède un équivalent non chiffré (HTTP), le protocole Gemini ne définit volontairement pas d’équivalent non-chiffré.

La syntaxe des pages gemini, appelée Gemtext, est inspirée de celle de Markdown. »

Navigation

Pour visiter des sites gemini, on pourrait croire qu’il suffit de taper gemini:// dans la barre d’un navigateur. Mais le protocole n’étant pas standard, cela n’est pas possible aujourd’hui. Il faut un navigateur spécifique pour cela. Plusieurs solutions existent. Personnellement j’utilise « Amfora », un navigateur Gemini en mode ligne de commande. Une liste de clients gemini vous permettra de faire votre choix et de les installer. Outre Amphora, écrit en go, AV-98 écrit en python sont à tester. Sur la figure suivante, vous pouvez voir les deux navigateurs, Amfora à gauche, coloré sur fond noir et à droite dans une console transparente, AV-98 qui se superpose dans un style plus classique. Pour les navigateurs en mode graphique, Lagrange semble un bon choix.

Rawtext.club

Comme dit plus haut, ce groupe est plus qu’un hébergeur Gemini. Je vous conseille donc de vous y intéresser de plus près si vous aimez le texte et la philosophie des mouvement « LOW ».

À l’url :
gemini://rawtext.club
vous trouverez une description de ce « Slow social network », comme il se décrit lui-même.

À l’url :
gemini://rawtext.club/~guyotv
vous trouverez mon site gemini. Tout progressivement, celui-ci va prendre de l’importance et j’espère à terme pouvoir migrer entièrement vers celui-ci.

La tyrannie technologique

Critique de la société numérique

Édition l’échappée

On retrouve Célia Izoard, traductrice de l’incroyable petit ouvrage « La machine est ton seigneur et ton maître », dans ce document qui met en avant plusieurs constats, comme par exemple :

« Les sociétés traditionnelles nous apprennent […] à l’inverse que ce qui est primordial dans le don est l’implication sociale de l’acte en question. Le potlach – au même titre que d’autres formes traditionnelles d’échange (selon lesquelles être riche consiste à donner le plus possible aux autres) – est à des milliers de lieues de l’échange vanté à l’ère numérique. Le don est porteur d’une organisation sociale et économique bien plus égalitaire que la société du virtuel, puisqu’il implique non pas la gratuité, mais la réciprocité de l’échange. La gratuité libertaire des années 1970 était prônée en tant que vectrice d’égalité, non pas comme moyen d’inhiber la solidarité au sein des rapports de production. À l’inverse, l’effet principal des formes de partage via Internet est de promouvoir l’individualisme comme fondement du partage et de privilégier la connexion à des réseaux où surfent des inconnus avec qui nous sommes reliés plutôt que liés. Croire que l’essentiel dans l’échange réside dans le quantitatif (le décompte des articles obtenus) revient à reproduire la mentalité comptable et capitaliste de notre société […] »

p. 37 : le partage

dont l’analyse est subtile et permet parfois avec une grande acuité, de se rendre compte du détournement menteur de sens opéré par l’idéologie du monde actuel de la communication. Le texte ci-dessus est à mettre en relation avec l’analyse du rapport entre les gens qu’opère l’argent pour les extraire de la nécessite un lien social présenté dans « L’ordre de l’argent Critique de l’économie » de Nino Fournier aux éditions Liber et qui envisage l’abandon de celui-ci au profit de l’échange pour recréer du lien social.

Évidemment, on ne peut qu’être amené à réfléchir à la relation numérique que ces deux mondes utilisent et à l’hypothèse que c’est peut-être celle-ci qui détermine ontologiquement leurs dysfonctionnements. Le pas n’est pas franchi. Mais il constituerait une belle introduction à des philosophies à l’opposé des mathématiques actuelles dont les Big Data sont l’emblème représentatif.

Reste que d’autres constats sont tout aussi finement posés comme :

La diffusion massive des technologies ne peut pas être dissociée de la propagation d’un mode de vie fondé sur la vitesse, la consommation, l’accumulation et la toute-puissance.

P. 44 Pour une critique de la technologie

Un livre important donc, aux multiples facettes, qui sans tomber dans un excès fait d’affirmations triviales qui condamnerait jusqu’à sa mise en page, prend le parti aujourd’hui encore peu répandu de mettre en avant que le progrès n’existe pas et que l’opposition entre techniques du passé et techniques modernes est un non-sens.