Simon Désaulniers
https://sim590.github.io/fr/
Recent content on Simon Désaulniers
Hugo -- gohugo.io
fr
[email protected] (Simon Désaulniers)
[email protected] (Simon Désaulniers)
©2020 Simon Désaulniers, All Rights Reserved
Thu, 29 Dec 2022 00:00:00 +0000
-
Contrôle intégré de MPD sur la Steam Deck
https://sim590.github.io/fr/steamdeck/mpd-music-control/
Thu, 29 Dec 2022 00:00:00 +0000
[email protected] (Simon Désaulniers)
Thu, 29 Dec 2022 00:00:00 +0000
https://sim590.github.io/fr/steamdeck/mpd-music-control/
<p>En tant que vétéran (GNU)Linux aguerri et de fan de technos libres, je me suis
donné l’occasion d’expérimenter plusieurs programmes dont j’ai développé une
dépendance avec certains d’eux, et avec raison. C’est le cas du programme MPD
(Music Player Daemon) qui est un programme de lecture de musique roulant en mode
serveur. On l’utilise donc normalement en pair avec un client comme <a href="https://github.com/SoongNoonien/mpdevil">mpdevil</a>.
Personnellement, j’utilise <a href="https://github.com/arybczak/ncmpcpp">ncmpcpp</a> et il y a une <a href="https://www.musicpd.org/clients/">longue liste de
clients</a> pour MPD avec des fonctionnalités variées. Depuis que j’ai
reçu ma Steam Deck, j’ai donc bien sûr installé MPD sur celle-ci afin de pouvoir
contrôler avec mon téléphone (via <a href="https://play.google.com/store/apps/details?id=com.namelessdev.mpdroid&gl=US&pli=1">MPDroid</a>) la musique qui joue sur ma Steam
Deck connectée à ma télé ou à mes écouteurs Bluetooth. Par contre, je n’avais
pas encore de moyen de contrôler MPD par la Steam Deck directement autrement
qu’en utilisant une app graphique comme mpdevil, mais c’était handicapant
considérant le type de contrôle (joystick ou trackpad) à notre disposition.
Parfois, on peut se trouver à utiliser la Steam Deck avec une manette bluetooth,
donc on n’a pas envie d’une interface qui est prévue pour la souris, quand on
n’a qu’un joystick à portée de main.</p>
Simon Désaulniers
meta image
Steam Deck
mpd
MusicControl
Decky
Greffon
Techno
-
Transformer sa Steam Deck en Chromecast?
https://sim590.github.io/fr/steamdeck/serveur-mpv/
Sun, 09 Oct 2022 00:00:00 +0000
[email protected] (Simon Désaulniers)
Sun, 09 Oct 2022 00:00:00 +0000
https://sim590.github.io/fr/steamdeck/serveur-mpv/
<p>J’avais commandé une <a href="https://www.steamdeck.com/fr/">Steam Deck</a>, un terminal mobile (selon <a href="https://gdt.oqlf.gouv.qc.ca/ficheOqlf.aspx?Id_Fiche=8360495">la traduction de
l’OQLF</a>) basé sur <a href="https://www.archlinux.org/">Archlinux</a>, dès le moment que j’ai appris l’existence de ce
projet par <a href="https://www.valvesoftware.com/">Valve</a>. Ce terminal mobile est en fait un ordinateur complet ayant comme principale
fonction de fournir une plateforme de jeu portable, mais en réalité il permet une panoplie de choses
qui la rend capable de surpasser la compétition.</p>
<p><img src="https://sim590.github.io/images/steamdeck/steamdeck.png" alt="steamdeck"></p>
<p>Pourquoi ? Pour plusieurs raisons, mais principalement parce que je crois que c’est un appareil qui
jouera un rôle central dans le cheminement de GNU/Linux vers un statut de système plus populaire
chez les gens moins techniques et non initiés.</p>
Simon Désaulniers
meta image
Steam Deck
mpv
Techno
-
Transformateurs: composition de monades
https://sim590.github.io/fr/haskell/transformateurs/
Fri, 23 Jul 2021 04:03:00 -0400
[email protected] (Simon Désaulniers)
Fri, 23 Jul 2021 04:03:00 -0400
https://sim590.github.io/fr/haskell/transformateurs/
<script type="text/javascript"
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<p>Dès lors qu’on découvre les monades et leur utilité, on ne peut faire autrement
que de les étudier davantage et trouver les occasions pour les utiliser. Après
tout, ils sont des concepts clefs dans l’utilisation sérieuse d’un langage
fonctionnel comme Haskell. Par exemple, on ne peut pas faire d’opérations
d’entrée/sortie si on ne fonctionne pas dans la monade <code>IO</code>.</p>
<p>Une limitation importante prend forme très rapidement sous nos yeux: il devient
difficile d’utiliser plusieurs monades ensembles car on doit forcément les
développer pour passer d’une monade à l’autre. Ce faisant, on doit choisir entre
les propriétés d’une monade ou l’autre et on ne peut donc pas bénéficier des
différents monades en même temps. Les transformateurs de monades visent
justement à régler ce problème de manière à fournir une écriture finale
satisfaisante autant au niveau sémantique que pour l’organisation logique du
code.</p>
Simon Désaulniers
meta image
Transformateur
Monade
Composition
Haskell
Programmation
-
La monade Maybe
https://sim590.github.io/fr/haskell/monademaybe/
Fri, 16 Oct 2020 01:17:31 -0400
[email protected] (Simon Désaulniers)
Fri, 16 Oct 2020 01:17:31 -0400
https://sim590.github.io/fr/haskell/monademaybe/
<p>Dans cet article, je souhaite introduire le programmeur à la monade <code>Maybe</code>. Je
compte le faire en utilisant le langage Haskell puisqu’il s’agit du langage
fonctionnel que je maîtrise le mieux et que je le considère très expressif et
accessible. Afin de démontrer les bénéfices de la monade et des concepts
d’Haskell, je vais comparer ceux-ci aux méthodes usuelles du langage C++.</p>
<p>En une phrase, la monade <code>Maybe</code> peut être vue comme un <em>design pattern</em> de
gestion des cas d’erreur ou d’exception. Je vais donc utiliser un exemple fictif
et peu réaliste, mais simple, qui permet de capturer l’idée générale. Disons
qu’on a une liste de contacts pour lesquels on souhaite exécuter un traitement.
Cependant, on décide que, dans la région du programme où on implémente le code
associé à cette liste de contact, une opération qui échoue sur un contact
devrait arrêter le fil d’exécution du programme.</p>
Simon Désaulniers
meta image
Maybe
Monad
Gestion d'erreurs
Générécité
Haskell
Programmation
Monade
-
Calculs hypothécaires
https://sim590.github.io/fr/maths/calculs-hypothecaires/
Fri, 31 Jul 2020 21:18:20 -0400
[email protected] (Simon Désaulniers)
Fri, 31 Jul 2020 21:18:20 -0400
https://sim590.github.io/fr/maths/calculs-hypothecaires/
<script type="text/javascript"
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<p>Je regarde les maisons et condos depuis un certain temps déjà, histoire de
sentir un peu ce que l’achat implique pour un emprunteur. J’ai pris la peine de
rechercher différentes informations comme les conditions et les options pour une
assurance hypothèque, les frais associés à l’habitation (charge de copropriété,
taxe scolaire, etc.) ainsi que les taux d’intérêt associés à un prêt. J’ai donc
voulu mettre tout cela en commun afin d’avoir un aperçu de mes paiements par
mois ainsi que ce que cela engendre sur une période plus longue comme 5, 10 ou
même 25 ans. J’ai ainsi eu l’occasion de faire certains calculs qui seront
utiles à plusieurs pour comprendre comment les paiements hypothécaires sont
calculés. En particulier, je veux exposer trois calculs clefs dans la prévision
des avantages et inconvénients d’acheter une propriété versus louer un logement:</p>
Simon Désaulniers
meta image
Hypothèque
Prêt
Dette
Intérêt
Paiement bancaire
Newton
Pascal
Mathématiques
Finance
-
Debian: passer à «testing»
https://sim590.github.io/fr/debian/passer-%C3%A0-testing/
Sat, 09 May 2020 20:36:40 -0400
[email protected] (Simon Désaulniers)
Sat, 09 May 2020 20:36:40 -0400
https://sim590.github.io/fr/debian/passer-%C3%A0-testing/
<p>Debian est une des distributions de GNU/Linux les plus communes et robustes
grâce à son système de publication de version structuré et méticuleux. Les
versions passent par différents stades de développement appelés «branches». On
peut voir ces branches comme des «versions» de Debian qui ne sont pas figées
dans le temps contrairement aux publications de Debian. Par exemple, Buster est
le nom de la dernière version publiée par Debian à ce jour et la branche
correspondant à Debian est appelée <code>stable</code>. Par défaut, il s’agit de la branche
avec laquelle Debian s’installe. Comme le système de paquetage inclut d’abord
les paquets dans la branche <code>unstable</code>, puis <code>testing</code> et finalement <code>stable</code>,
les versions prennent un certains temps à aboutir. Ce faisant, ceci garantie une
stabilité aux utilisateurs (d’où le nom de la branche). Ceci dit, certains
utilisateurs plus avancés ayant le désir d’un système plus à jour peuvent
configurer leur système afin que celui-ci passe à <code>testing</code>. Ce processus est
très commun parmi les utilisateurs avancés et comporte pratiquement très peu
d’inconvénients. Pour plus d’information par rapport aux branches, voyez les
différents liens ci-après:</p>
Simon Désaulniers
meta image
GNU/Linux
Aptitude
Paquet Debian
Branche Debian
Debian
Techno
-
fzf: comment optimiser son utilisation de la ligne de commande
https://sim590.github.io/fr/outils/fzf/
Sat, 11 Apr 2020 00:42:27 -0400
[email protected] (Simon Désaulniers)
Sat, 11 Apr 2020 00:42:27 -0400
https://sim590.github.io/fr/outils/fzf/
<p><code>fzf</code> est un programme filtrant le flux de son entrée standard par mots clefs
fournis par l’utilisateur de manière interactive. Le filtre est du type <em>fuzzy</em>
(d’où le nom <em>fzf</em> pour <em>fuzzy finder</em>), c’est-à-dire que les termes fournis au
programme sont décomposés en sous-mots afin de permettre des recherches
approximatives par l’utilisateur. Par exemple, prenons l’entrée suivante:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plain" data-lang="plain"><span class="line"><span class="cl">toto
</span></span><span class="line"><span class="cl">titi
</span></span><span class="line"><span class="cl">tutu
</span></span></code></pre></td></tr></table>
</div>
</div><p>Si l’utilisateur fournissait le terme <code>tt</code>, toutes les lignes seraient
sélectionnées, puisque les sous-mots <code>t</code> et <code>t</code> se trouvent tous deux dans
toutes les lignes. Cependant, avec le terme de recherche <code>oo</code>, seul la première
ligne correspondrait avec le mot <code>toto</code> selon le même raisonnement.</p>
Simon Désaulniers
meta image
GNU/Linux
Productivité
Vim
zsh
ranger
pass
Techno
Outil
-
Vim peut tout faire
https://sim590.github.io/fr/vim/vim-peut-tout-faire/
Sun, 22 Mar 2020 11:11:56 -0400
[email protected] (Simon Désaulniers)
Sun, 22 Mar 2020 11:11:56 -0400
https://sim590.github.io/fr/vim/vim-peut-tout-faire/
<p>Vim est un <a href="https://fr.wikipedia.org/wiki/%C3%89diteur_de_texte">éditeur de texte</a> et clairement le meilleur qui soit. Je ne
dis pas ça sans peser mes mots. Ceci dit, il ne faut pas lui prêter une identité
qu’il n’a pas. Vim n’est pas un environnement de développement intégré (EDI ou
IDE en anglais) complet. Cependant, plusieurs aspects à son utilisation font sa
grande force pour fournir un EDI complet à son usager:</p>
<ul>
<li>un <strong>langage de touches</strong> permettant aux doigts de faire tout le travail
d’édition de texte (couper, effacer, coller, réordonner, formater, etc.). En
effet, dans une boîte de texte régulière (comme ce qu’on trouve dans les EDIs
populaires) la modification de texte, et non la simple écriture, n’est pas
chose facile. Elle demande souvent l’utilisation de la souris, donc la perte
de la position des mains déjà en place pour écrire. De plus, cette approche
est normalement très lente. Avec Vim, les doigts font le travail. La meilleure
comparaison pour comprendre le sentiment est justement celle de l’écriture. On
ne pense pas à trouver les touches pour écrire et cela se fait
automatiquement. Pour la modification de texte avec Vim, c’est la même chose.</li>
<li>un <strong>langage de script</strong> (<em>VimScript</em>) qui lui permet une haute extensibilité;</li>
<li>une <strong>intégration de l’interface système</strong> (IS ou le <em>shell</em> en anglais).
L’utilisation de l’IS est entièrement intégrée à travers VimScript ainsi que
les différents modes de Vim (Normal, Visual, CMD, etc.). Je ne peux mettre
assez l’accent sur comment ce trait de Vim est <strong>si significatif</strong>. Ce
faisant, de manière totalement gratuite, un utilisateur de Vim bénéficie déjà
des fonctionnalités de l’IS dans son éditeur de texte sans avoir recours à
l’installation très particulière d’extension par son EDI. On dit souvent que
l’IS constitue en réalité l’environnement de développement d’un utilisateur de
Vim.</li>
<li>une capacité d’intégrer des <strong>greffons</strong> (<em>plugins</em> en anglais);</li>
<li>et une <strong>communauté de développeurs</strong> très investie dans le partage de code et
d’outils qui rendent l’intégration d’outils de développement aisée et
facilement personnalisable.</li>
</ul>
<p>Le tout fait de Vim le choix idéal. Dans ce qui suit, je prends le temps de
développer concrètement mon point de vue en m’attardant à des préoccupations
très importantes de tout développeur, mais selon ma perspective, bien entendu.
Je compte donc explorer le mode Normal de Vim, l’intégration avec l’IS plus en
détail, l’intégration de <a href="https://fr.wikipedia.org/wiki/GNU_Debugger">GDB</a> (depuis Vim 8) et les différents greffons
permettant une sensation d’EDI complet.</p>
Simon Désaulniers
meta image
Vim
hjkl
greffon
Techno
Outil
Éditeur de texte
Programmation
-
Comment bien assurer la vie privée du clavardage?
https://sim590.github.io/fr/cybers%C3%A9curit%C3%A9/comment-bien-assurer-la-confidentialit%C3%A9-du-clavardage/
Mon, 09 Mar 2020 00:00:00 +0000
[email protected] (Simon Désaulniers)
Mon, 09 Mar 2020 00:00:00 +0000
https://sim590.github.io/fr/cybers%C3%A9curit%C3%A9/comment-bien-assurer-la-confidentialit%C3%A9-du-clavardage/
<p>Lorsqu’on utilise les différents outils de communications habituels de nos
jours, il est commun de supposer la garantie de sa vie privée. L’utilisateur
moyen ne se pose aucune question lorsqu’il se connecte à des services comme
Facebook, Twitter ou Skype. Ou encore, on se rassure tout de suite à l’idée de
voir des symboles de “sécurité” comme le suivant.</p>
<p><img src="https://sim590.github.io/images/chrome-s%C3%A9cu.png" alt="https"></p>
<p>Tous les services susmentionnés sont effectivement munis de protections, mais
contre et pour qui? Et sous quelle(s) hypothèse(s)? Il s’avère que les mesures
de sécurité des logiciels communiquant sur les réseaux ne protègent réellement
que les entreprises derrière les services associés. La vie privée des individus
n’est, en majeure partie des cas, pas préservée d’aucune manière.</p>
Simon Désaulniers
meta image
Chiffrement
Chiffrement de bout en bout
Confidentialité
Signal
WhatsApp
Protocole
Protocole de communication
Communication
Cybersécurité
Cryptographie
Vie privée
-
Haskell: programmation dynamique
https://sim590.github.io/fr/haskell/programmation-dynamique/
Mon, 02 Mar 2020 04:06:13 -0500
[email protected] (Simon Désaulniers)
Mon, 02 Mar 2020 04:06:13 -0500
https://sim590.github.io/fr/haskell/programmation-dynamique/
<script type="text/javascript"
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<p>L’approche de programmation dynamique est souvent associée au remplissage d’un
tableau à deux dimensions et à l’écriture explicite de ce procédé sous forme
itérative. Dans un langage fonctionnel comme Haskell, on bénéficie de quelques
avantages d’expressivité de haut niveau et de lisibilité qu’on ne retrouve pas
autrement.</p>
<p>Dans cet article, je commence par explorer deux exemples triviaux de
programmation dynamique. Ensuite, je passe sur un problème tout aussi
accessible, mais dont l’achèvement optimal demandera l’utilisation d’une
structure <code>Data.Array</code> plutôt que la liste conventionnelle.</p>
Simon Désaulniers
meta image
Séquence de Collatz
Data.Array
nombre triangulaire
Algorithmique
Haskell
Mémoïsation
Programmation
Programmation dynamique
-
Adieu
https://sim590.github.io/fr/adieu/
Sun, 19 Jun 2016 21:30:22 -0400
[email protected] (Simon Désaulniers)
Sun, 19 Jun 2016 21:30:22 -0400
https://sim590.github.io/fr/adieu/
<div style="text-align:center"> <iframe width="420" height="315" src="https://www.youtube.com/embed/pZpTXJap6Fg" frameborder="0" allowfullscreen></iframe> </div>
<h2 id="gsoc">GSOC</h2>
<p>Comme j’ai mentionné dans au <a href="https://sim590.github.io/en/gsoc/intro/">article antérieur</a>, je participe au programme <a href="https://developers.google.com/open-source/gsoc/">Google
Summer Of Code</a> grâce à l’organisation <a href="https://debian.org">Debian</a> qui supervise mes travaux
contribuant au logiciel libre <a href="https://ring.cx">Ring</a>.</p>
<h2 id="deux-jours-restants">Deux jours restants</h2>
<p>Il reste deux jours avant mon départ pour le Cape, en Afrique du sud. C’est
pour assister à l’événement <strong><a href="https://debconf16.debconf.org/">debconf</a></strong> (« Debian conference »), organisé par
Debian, que je me rends là. Cet événement est organisé à chaque année et,
l’année prochaine, c’est à Montréal que ça aura lieu ! <img src="https://sim590.github.io/images/quebec.gif" alt=""></p>
Simon Désaulniers