moldu

Python script using Flask to generate a simple ssg
Log | Files | Refs

commit 3f3992255f574cebf22fcc73d67cc104f5e3bf74
Author: Justin Bridouz <justin.bridouz@zaclys.net>
Date:   Thu, 19 Sep 2019 09:46:07 +0200

initial commit

Diffstat:
.gitignore | 3+++
moldu.py | 86+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
pages/about.md | 3+++
pages/blog/2016/01-premiere-fois.md | 35+++++++++++++++++++++++++++++++++++
pages/blog/2016/02-vivre-avec-le-reste-ou-la-distance-pro.md | 29+++++++++++++++++++++++++++++
pages/blog/2017/01-le-soin-outil-pour-retablir-humain.md | 23+++++++++++++++++++++++
pages/blog/2017/02-un-dimanche-en-ehpad.md | 40++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/01-beets-mpd-combo-gagnant.md | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/02-ameliorer-gedit.md | 24++++++++++++++++++++++++
pages/blog/2018/03-plasma-et-solus.md | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/04-des-depots-git-sur-votre-raspberry.md | 47+++++++++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/05-subliminal-sous-titres-nautilus.md | 19+++++++++++++++++++
pages/blog/2018/06-bloguslivrus-raysday2018.md | 41+++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/07-kodi-et-retrogaming.md | 41+++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/08-orgmode-finalement.md | 24++++++++++++++++++++++++
pages/blog/2018/09-on-sembete-avec-les-de-tant-mieux.md | 26++++++++++++++++++++++++++
pages/blog/2018/10-orgcapture.md | 78++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/11-construire-des-paquets-sous-solus.md | 144+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/12-trucs-et-astuces-pour-le-packaging-solus.md | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/13-blogusmusicus-oct-2018.md | 46++++++++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/14-orgcapture-android.md | 49+++++++++++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/15-alzheimer-prendre-soin-sans-oublier.md | 47+++++++++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/16-orgmode-config-emacs.md | 40++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/17-git-hook-blog.md | 35+++++++++++++++++++++++++++++++++++
pages/blog/2018/18-voidlinux.md | 63+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/19-ecrire-prose-emacs.md | 78++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
pages/blog/2018/20-ssg-entr-bash.md | 35+++++++++++++++++++++++++++++++++++
pages/blog/2019/01-resolutions.md | 15+++++++++++++++
pages/blog/2019/02-bloguscomicus-fables.md | 19+++++++++++++++++++
pages/blog/2019/03-blogusmusicus-live-stevenwilson.md | 62++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
pages/blog/2019/04-mtp-simplement-cli.md | 31+++++++++++++++++++++++++++++++
pages/blog/2019/05-pointlinux-debut2019.md | 30++++++++++++++++++++++++++++++
pages/blog/2019/06-musique-mars-2019.md | 40++++++++++++++++++++++++++++++++++++++++
pages/blog/2019/07-mysterybox-nextcloud.md | 23+++++++++++++++++++++++
pages/blog/2019/08-darkestdungeon.md | 31+++++++++++++++++++++++++++++++
pages/blog/2019/09-jeneconnaisplusmonnom.md | 43+++++++++++++++++++++++++++++++++++++++++++
pages/blog/2019/10-jesuislapourtoi.md | 44++++++++++++++++++++++++++++++++++++++++++++
pages/blog/2019/11-decroissancenumerique.md | 43+++++++++++++++++++++++++++++++++++++++++++
pages/blog/2019/12-oud-init.md | 27+++++++++++++++++++++++++++
pages/mysterybox.md | 7+++++++
pages/notes/2019/01-raspup.md | 20++++++++++++++++++++
pages/notes/2019/02-rustupcross.md | 63+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
requirements.txt | 13+++++++++++++
static/css/style.css | 122+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
static/img/comics/daredevilguardiandevil.jpg | 0
static/img/comics/fables_integrale1.jpg | 0
static/img/comics/fables_snowbigby.jpg | 0
static/img/emacs/flyspell_ivy.png | 0
static/img/emacs/orgcapturepop.png | 0
static/img/emacs/orgffcapture.png | 0
static/img/emacs/orgmodelayout.png | 0
static/img/favicon.png | 0
static/img/jeux/darkestdungeon_affliction.jpg | 0
static/img/jeux/darkestdungeon_banner.jpg | 0
static/img/jeux/darkestdungeon_virtue.jpg | 0
static/img/livres/alienbradbury.jpg | 0
static/img/musique/conbrioexplorer.jpg | 0
static/img/musique/davidcrosby_hereifyoulisten.jpg | 0
static/img/musique/gojirathewayofallflesh.jpg | 0
static/img/musique/oud-saz.jpg | 0
static/img/musique/snarkypuppy_immigrance.jpg | 0
static/img/musique/thepineapplethiefdissolution.jpg | 0
static/img/musique/weendo_timeofawakening.jpg | 0
static/img/solus/geditplugins.png | 0
static/img/solus/mysterybox_sharerenamer.png | 0
static/img/solus/plasmatiling.png | 0
static/js/archives.js | 18++++++++++++++++++
templates/_list.html | 10++++++++++
templates/archives.html | 25+++++++++++++++++++++++++
templates/base.html | 35+++++++++++++++++++++++++++++++++++
templates/base.xml | 22++++++++++++++++++++++
templates/index.html | 17+++++++++++++++++
templates/page.html | 28++++++++++++++++++++++++++++
templates/tag.html | 12++++++++++++
74 files changed, 2041 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -0,0 +1,2 @@ +build/ +.venv/+ \ No newline at end of file diff --git a/moldu.py b/moldu.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python + +import markdown +import sys +import datetime + +from flask import Flask, render_template +from flask_flatpages import FlatPages +from flask_frozen import Freezer + +DEBUG = True +AUTHOR = 'Justin Bridouz' +BASE_URL = 'https://www.bloguslibrus.fr' +FREEZER_BASE_URL = 'https://www.bloguslibrus.fr' +FOOTER = 'Généré sans venin avec *Python* et *Flask*' +FLATPAGES_AUTO_RELOAD = DEBUG +FLATPAGES_EXTENSION = '.md' +FLATPAGES_MARKDOWN_EXTENSIONS = ["attr_list", "fenced_code", "footnotes"] + +app = Flask(__name__) +app.config.from_object(__name__) +pages = FlatPages(app) +freezer = Freezer(app) + +app.jinja_env.filters['markdown'] = lambda text: markdown.markdown(text) +app.jinja_env.trim_blocks = True +app.jinja_env.lstrip_blocks = True +app.jinja_env.keep_trailing_newline = True + +@app.context_processor +def inject_ga(): + return dict(BASE_URL=BASE_URL) + +@app.template_filter('date') +def format_date(value, format='%B %d, %Y'): + return value.strftime(format) + +@app.template_filter() +def to_rfc2822(dt): + if not dt: + return + formatted = dt.strftime("%a, %d %b %Y %H:%M:%S +0000") + return formatted + +@app.context_processor +def inject_now(): + return {'now': datetime.datetime.now().strftime("%d/%m/%Y %H:%M")} + +@app.route('/') +def index(): + posts = [page for page in pages if "date" in page.meta] + latest = sorted(posts, reverse=True, key=lambda p: p.meta['date']) + hpages = [page for page in pages if "date" not in page.meta] + return render_template('index.html', pages=latest[:5], hpages=hpages) + +@app.route('/tags/<string:tag>/') +def tag(tag): + tagged = [p for p in pages if tag in p.meta.get('tags', [])] + hpages = [page for page in pages if "date" not in page.meta] + return render_template('tag.html', pages=tagged, tag=tag, hpages=hpages) + +@app.route('/archives/') +def archives(): + posts = [page for page in pages if "date" in page.meta] + latest = sorted(posts, reverse=True, key=lambda p: p.meta['date']) + hpages = [page for page in pages if "date" not in page.meta] + return render_template('archives.html', pages=latest, hpages=hpages) + +@app.route("/<path:path>/") +def page(path): + page = pages.get_or_404(path) + hpages = [page for page in pages if "date" not in page.meta] + return render_template("page.html", page=page, hpages=hpages) + +@app.route('/feed.xml') +def feed(): + posts = [page for page in pages if "date" in page.meta] + latest = sorted(posts, reverse=True, key=lambda p: p.meta['date']) + now = datetime.datetime.now() + return render_template('base.xml', pages=latest[:15], build_date=now) + +if __name__ == '__main__': + if len(sys.argv) > 1 and sys.argv[1] == "build": + freezer.freeze() + else: + app.run(port=8000) diff --git a/pages/about.md b/pages/about.md @@ -0,0 +1,3 @@ +title: À propos + +Test diff --git a/pages/blog/2016/01-premiere-fois.md b/pages/blog/2016/01-premiere-fois.md @@ -0,0 +1,35 @@ +title: "Première fois" +date: 2016-06-26T18:00:00+01:00 +tags: [Aidesoignant, Santé, Vie 1.0] + +Il faut une première fois à tout, même si cela doit être désagréable et vienne perturber notre vie, on n'y coupe pas. Pour ma part c'était un jeudi 23 juin, il était 15h15. + +La troisième semaine de mon stage dans un service d'hématologie avait tranquillement débuté, tout se passait bien, j'avais atteint ma vitesse de croisière, je prenais plaisir à travailler et apparemment je travaillais même bien. Depuis le lundi 19 juin j'étais en quasi-autonomie, trois arrêts de travail en même temps couplés au manque de personnel ça donne un service où il manque du monde et donc l'étudiant – qui est dans la dernière ligne droite pour devenir professionnel, dans deux semaines d'ailleurs ce ne sera plus un étudiant mais plutôt un collègue – se voit confier un secteur : sept chambres, sept patients, sept personnes, sept histoires. +C'est ainsi que je me suis retrouvé à travailler comme si j'étais en poste, avec l'infirmier, assumant mon statut d'aide-soignant, mobilisant mes connaissances et m'organisant pour travailler convenablement. + +Nous sommes le jeudi 23 juin, il est 13h40, la journée commence par les transmissions de l'équipe du matin. Les patients vont bien, quelques petits désagréments pour certains cependant (nausées, diarrhées), merci la chimio. Dans une des chambres, il y avait un patient, arrivé depuis 8 jours, en provenance de son domicile car l'HAD (Hôpital à domicile) ne pouvait plus assurer la surveillance nécessaire pour cet homme. Atteint d'un myélome (cancer du sang, dérèglement de la production d'anticorps, risque infectieux, insufissance rénale, troubles neurologiques...), infecté par une mucormycose (champignon), l'état du monsieur commençait à se dégrader et il fallait donc une hospitalisation pour une surveillance plus rapprochée. C'est ainsi qu'il est arrivé dans le service. + +Nous étions donc le jeudi 23 juin, il était 13h55 quand les transmissions se firent au sujet du patient. Depuis le lundi de cette semaine-là, le monsieur se dégradait, il alternait entre fièvre et température normale. Quand il commençait à chauffer, il était pris de violents frissons qui le faisait trembler comme s'il était envoyé en Antarctique en short et T-shirt. Le pire, c'est que cela venait progressivement et donc, qu'il avait le temps de sentir les frissons s'emparer de lui. Ces derniers ne pouvaient s’arrêter qu'avec un antalgique mais, dès lors que les effets du médicament s'estompaient les frissons revenaient quasi systématiquement. De plus son sang commençait à manquer d'oxygène, si bien que nous avions dû lui passer de l'oxygène avec un masque. 3 litres par minute, puis 4, puis 6... Le masque l'emmerdait profondément, car il n'était plus libre de ses mouvements. Avec son accord les infirmiers avaient donc opté pour un passage aux lunettes nasales, moins désagréables pour lui. + +Les médecins avaient été clairs avec lui en début de semaine, le diagnostic était simple, il n'y avait plus rien à faire. Le myélome est un cancer incurable à l'heure actuelle et de plus, son infection aux poumons était trop importante, elle s'était propagée sur les deux lobes et rien ne pouvait être envisagé pour l'éradiquer. Sa famille quant à elle continuait d'espérer, se rattachant au fait que parfois il n'avait plus de fièvre pendant une douzaine d'heures et que donc, l'infection se dissipait et il avait été dur pour elle de devoir accepter que rien ne pouvait être fait dorénavant pour guérir le monsieur. + +Depuis deux nuits le monsieur recevait de l'hypnovel (sédatif) pour le calmer afin qu'il soit confortable mais, depuis le matin du 23 juin et après les nombreuses alertes de l'équipe soignante sur la souffrance du monsieur depuis quelques jours les médecins, en accord avec la famille et le monsieur avaient introduit l'hypnovel la journée ainsi que de l'oxycodone (similaire à la morphine). Le monsieur était donc sédaté, dans un état semi-conscient. + +La journée du 23 juin se poursuivit par le tour de distributions de café, je passais ainsi dans chaque chambre pour dire bonjour tout d'abord, et pour savoir s'il voulait une boisson. Arrivant devant la porte du monsieur, je toquai et, bien qu'il n'avalait plus rien depuis quelques jours, il fallait que je rentre, pour m'assurer que son état était stable, pour lui dire bonjour même s'il ne me répondait pas, pour voir comment allait sa famille qui était restée à son chevet toute la nuit et le matin. En rentrant je m’aperçus que la famille n'était plus là, on m'apprendra quelques minutes après qu'elle était parti prendre une douche et se reposer pendant deux heures avant de revenir. Le monsieur lui, était stable et dormait, je lui touchai le bras, il ouvrit les yeux et me regarda l'espace de quelques secondes, je lui dis " Bonjour monsieur, c'est moi qui serais là jusqu'à ce soir, je reviens tout à l'heure". Le monsieur referma ses yeux et je sortis de la chambre pour poursuivre mon tour de barman ambulant. Il était 14h30. + +15h, c'est le moment où, en binôme avec l'infirmière du secteur, nous allons relever les constantes des patients, voir s'ils sont confortables et s'ils ne manquent de rien. Nous commençons le tour avec un monsieur en aplasie (le moment où suite à une chimio le système immunitaire est détruit par cette dernière et donc la personne se retrouve en situation à haut risque. Des mesures sont prises pour que sa santé soit préservée en attendant que son système immunitaire se recréer.) qui, ne pouvant sortir de sa chambre pour éviter le contact avec des bactéries et des germes pouvant avoir de graves conséquences sur son organisme, s'était fait prendre durant la nuit à se la jouer Steve McQueen dans la grande évasion, pour aller assouvir son besoin de nicotine au clair de lune. Il en riait, tout comme nous, la journée commençait bien. Quelques chambres plus tard, je dus aider une patiente à se remettre dans son lit et pendant ce temps, l'infirmière avança dans la chambre suivante, je la rejoignis quelques minutes plus tard. + +Je rentrai donc dans la chambre, l'infirmière se retourna vers moi et me dit : « Tu peux aller me chercher un médecin s'il te plaît ? Et reviens me voir après, il ne faut pas que tu restes seul. » Je m’exécuta, mais ces derniers mots me glacèrent le sang car j'avais très bien compris ce qu'il se passait. C'était fini. + +Je revins dans la chambre, suivit de près par le médecin. Je me mis un peu en retrait, l'observant ausculter le monsieur, cherchant son pouls puis il prononça ces mots : «Heure du décès : 15h15». + +Il était donc 15h15 et je regardais le monsieur, son corps sans vie reposant dans son lit, son esprit emporté par madame la mort quelques minutes auparavant. Je redoutais ce moment depuis le début de ma formation, car je savais qu'en travaillant dans la Santé j'allais être confronté à la mort mais, j'avais jusqu'à présent réussi à esquiver le chemin de la grande faucheuse, croisant quelques fois son regard mais sans jamais pouvoir la voir à l'œuvre. En arrivant dans ce service j'étais quasiment sûr qu'elle allait s'exhiber ici. + +Je sortis de la chambre en silence, une collègue arrivant vers moi me demanda comment j'allais, je lui répondis que pour le moment ça allait, mais je sentais que mon bide venait d'encaisser une droite. Elle me demanda si je voulais venir pour la préparation à la famille, j'acceptai, car il le fallait mais les larmes dans mes yeux indiquaient que ce n'était pas facile. Je l'accompagnai donc dans la chambre, elle me demanda juste d'observer, je ne fis pas la toilette et l'observa en silence. On entend souvent que le personnel soignant n'est plus impacté par la mort, qu'il fait partie de son travail. Bien sûr il faut se préparer à voir disparaître des personnes mais en revanche nous ne restons pas insensibles. Dans la chambre ma collègue parlait encore avec le monsieur, me disant que pour elle il fallait qu'elle continue à lui parler un temps, pour digérer le décès d'une personne. En sortant les bruits dans le couloir s'étaient tuent, un silence dérangeant s'y était installé et planait sur le service, on se croisait sans trop parler, on se parlait sans trop sourire. On ne se réjouit pas de la mort d'une personne en revanche, le voir partir sans souffrir peut être un soulagement, car il est assez insoutenable de voir tous les jours la personne souffrir, nous dire qu'elle a le «cafard», nous demandant de rester avec elle encore un peu, qu'elle se sent mieux quand quelqu'un est présent à ses côtés. Voir une personne souffrir physiquement est dur à supporter mais, si la souffrance est également psychologique alors c'est encore plus dur. Alors oui le décès peut parfois être une délivrance, dans des cas bien précis il soulage même. + +Au début j'ai ressenti un sentiment d'échec, le fait de voir partir une vie, une histoire, une personne me chagrine, car je l'ai perçu dans un premier temps comme un échec dans mon travail, dans le travail de la Santé; nous avons été impuissants. Je m'étais attaché à ce patient, son histoire m'avait bien sûr touché mais c'est avant tout l'homme qu'il était qui m'avait accroché, où du moins ce que j'en ai vu. Je pensais à la famille, la souffrance qu'elle allait une nouvelle fois éprouver, la douleur de voir disparaître un mari, un père, un homme et je me suis dis que c'était sûrement mieux qu'il soit décédé alors qu'elle était absente, ça lui épargnera une douleur supplémentaire. Je pense aussi que le monsieur avait attendu que sa famille quitte la chambre pour se laisser partir, j'en suis intimement convaincu. + +Premier décès en tant que professionnel, ça remue les tripes, ça remet pas mal de choses à sa place, ça permet également de se rendre compte que le travail en équipe est important, car elle a été là pour moi, m'encadrant, me parlant, se livrant même inversant ainsi les rôles élève/équipe. Les membres de l'équipe vivent le deuil de diverses façons mais la solidarité présente permet d'accepter la chose plus facilement et de pouvoir parler afin de mieux digérer. Pour ma part ça a été bénéfique car je dois dire que j'étais assez surpris de ma réaction face à la mort. Là où depuis des mois je me disais que j'allais m'effondrer, j'ai tenu bon et j'ai suivi le processus professionnel quand un décès a lieu. Nous avons également accompagné la famille à la morgue pour les tâches administratives et je fus surpris de voir mes collègues raconter à la famille leurs derniers moments avec la personne. Dans la douleur il est important de partager et mes collègues m'éxpliquèrent par la suite qu'il était important de parler du défun avec la famille pour montrer notre implication, que l'on partage leur peine. + +Ce qui est fabuleux dans ce métier c'est la proximité que l'on peut avoir, créer, avec certains patients en un temps très court. L'humain est une chose profondément fascinante et le contact est l’élément que j'affectionne le plus dans mon métier. En revanche ce contact humain dans un univers où la maladie, la souffrance et la mort sont présentes impliquent des soignants un détachement obligatoire pour ne pas sombrer dans cet univers teinté de tristesse. +L'homme de la chambre faisait partie de ces rencontres qui vous font avancer, qui vous font rentrer chez vous le bide retourné. Il fait également partie des personnes qui m'auront façonné et dont je n'oublierai rien. diff --git a/pages/blog/2016/02-vivre-avec-le-reste-ou-la-distance-pro.md b/pages/blog/2016/02-vivre-avec-le-reste-ou-la-distance-pro.md @@ -0,0 +1,29 @@ +title: "Vivre avec le reste ou la distance professionnelle" +date: 2016-11-13T18:00:00+01:00 +tags: [Aidesoignant, Vie 1.0] + +Voilà maintenant près de 4 mois que je suis professionnel et outre le mode de vie qui change, les tâches administratives qui pointent le bout de leurs nez prouvant bien que je suis définitivement rentré dans le monde des grands à mon plus grand désespoir sur ce sujet (c'est d'un chiant l'administratif), le taf me fait pas mal cogiter et pour cause, je suis souvent confronté à des situations singulières, des situations d'urgences vitales. + +Premièrement il m'aura fallu deux mois pour me défaire de cette barrière mentale qui me faisait encore penser que jetais un stagiaire. Dorénavant je pense être en mesure d'être un professionnel, qualifié, faisant relativement bien son boulot même si le chemin de l'apprentissage ne disparaîtra jamais et c'est tant mieux. + +Depuis septembre je travaille dans un service de soins intensifs de cardiologie, autant dire que parfois ça peut aller très vite et qu'il faut être en mesure de réagir rapidement et proprement face à des situations mettant la vie de personnes en jeu. Du haut de mes vingt-quatre années mon temps de réaction est encore assez faible par rapports à des collègues aguerris et ces situations laissent une marque indélébile dans mon esprit. + +Une fois la journée de travail terminée, je raccroche la tenue *- je la balance dans le bac à linge plus précisément, mon adresse au shoot commence à afficher des statistiques plutôt satisfaisants d'ailleurs -* et je rentre chez moi pour reprendre une vie privée. Du haut de mes vingt-quatre années je dois savoir dissocier le boulot du reste car sinon c'est un beau bordel. Au taff les soignants sont souvent confrontés à des situations atypiques que ce soit sur les histoires de vie de certains patients, sur l’état physique ou émotionnel de ces derniers et bien sûr les situations urgences vitales où la vie ne tient plus que par un fil. Si la différentiation *travail/le reste* je ne peux la faire, je vois mal comment vivre avec tout cela sans que ma vie privée en pâtisse. + +Se retrouver entouré de médecins et d'infirmiers entourant eux-mêmes un patient en arrêt cardiaque n'est pas une situation qu'on vit tous les jours. Savoir quoi faire alors que l'on est encore jeune diplômé, sans recule, sans expérience est déstabilisant. Et, quand la mort pointe le bout de son nez elle amène avec elle un tas de questions et un chamboulement. + +Je me retrouve face à un être sans vie, où mon travail consiste à assurer l'après, tout ce qui doit être fait avant que la famille arrive, l'après-vie. Se retrouver, à vingt-quatre ans, devant un homme que l'on a vu mourir devant soi, que l'on a pu avec l'équipe médicale sauver est une situation assez étrange. Tout a été fait pour le réanimer et l’échec doit être accepté, digéré pour pouvoir continuer à avancer, à travailler. + +Dans des moments comme celui-ci il est important de travailler en équipe, pour se soutenir, parler, et avancer mais, je trouve qu'il est également important - voir même essentiel - de faire un travail sur soi. Ce jour-là en revenant chez moi, le trajet du retour me parut cours, et je n'ai pensé qu'à cette situation une fois à la maison. J'en ai oublié ma vie privée l'espace de quelques-heures et c'est ici que le danger se trouve. Se perdre soi-même à cause du boulot. + +Cette distance professionnelle n'est pas quelque-chose d’innée et elle évolue avec le temps, avec ce que l'on vit aussi bien au boulot comme à la maison, elle peut parfois être fine, voir même quasi inexistante en apparence et pourtant elle est bien là. Le fait de rire d'une situation dramatique n'est pas un manque de respect non, cela montre la distance que le soignant met entre le boulot et lui-même pour ne pas s'autodétruire. + +Pour le moment, et c'est une très bonne chose, je n'ai été directement confronté à la mort qu'à deux reprises. Je ne fais pas ce métier pour voir des gens mourir, et même si ce fait doit être assimilé pour travailler dans ce domaine je pense qu'aucun soignant ne souhaite voir beaucoup de décès dans sa carrière car, même si parfois ils sont inévitables, ils remettent tout un tas de chose en question dans le cadre d'un exercice professionnel et viennent profondément bouleverser le soignant et l'équipe soignante. + +En relisant le billet je me rends compte qu'il est assez brouillon, et ça reflète bien la cogitation actuelle dans mon cerveau. Avec la mort rien ne peut être arrêté, la théorie n'éxiste pas finalement, et chaque situation m'affectera singulièrement, nous affecte d'une empreinte qui lui est propre. Alors il faut avancer, y penser, ne pas oublier, mais avancer pour continuer à faire son boulot et vivre avec le reste, ne pas céder, prendre de la distance et avancer, toujours. + +Pouvoir avancer avec soi-même on appelle ça la résilience dans la langue psychologisante. +> La résilience est un phénomène psychologique qui consiste, pour un individu affecté par un traumatisme, à prendre acte de l'événement traumatique pour ne plus, ou ne pas, avoir à vivre dans la dépression et se reconstruire. + +Alors oui il est parfois difficile de rentrer chez soi et mettre de côté les émotions vécus au travail, il est parfois difficile de rentrer chez soi et de continuer à vivre comme on l'a toujours fait en ayant conscience de certaines situations. Mais il est impératif de continuer à vivre et oublier, l'espace de quelques heures, le boulot et ce qu'on y voit. Tout cela construit cette distance, construit le soignant que l'on deviendra. + diff --git a/pages/blog/2017/01-le-soin-outil-pour-retablir-humain.md b/pages/blog/2017/01-le-soin-outil-pour-retablir-humain.md @@ -0,0 +1,23 @@ +title: "Le soin, outil pour rétablir l'humain" +date: 2017-06-13T18:00:00+01:00 +tags: [Aidesoignant, Vie 1.0] + +Depuis quelques jours je suis passé sur un nouveau poste, dans un nouveau service. Après 7 longs mois sur un poste bouche-trou à ranger des compotes et me balader dans le CHU pour livrer des bilans sanguins et remonter des médocs je suis enfin retourné dans mon _cœur de métier_ (mot-compte-triple au CHU en ce moment): **le soin**. + + Direction l'unité neuro-vasculaire aka l'unité post-AVC aka l'unité de la transpiration, de l'urgence bordélique et des heures sup'. Direction le boulot, ce pour quoi je me plais à me lever le matin et à finir tard le soir. + Au sein du service la majeure partie des patients ont été victimes d'un AVC, plus ou moins grave, mais en règle générale ça a laissé pas mal de traces, surtout des paralysies d'une moitié du corps _(hémiplégie)_ et/ou une perte de la parole _(aphasie)_. + +C'est dans des services comme celui-ci que le métier d'aide-soignant prend tout son sens. Il reste un métier physique où devoir laver des gens ne contrôlant pas leur corps rime avec effort pour la mobilisation, grosse sueur pendant les mises au fauteuil et couchés, mais il s'enrichit également de petites victoires qui font que le métier ne se résume pas seulement à l'_entretien_ d'un corps. + +Voir des personnes ayant perdu l'usage de la parole est une chose à laquelle on s'habitue, qu'on apprend à comprendre pour au final développé un moyen propre à chaque patient pour communiquer, quand cela est possible. Avec cette communication alternative le soin continue et l'équipe au complet est derrière le patient pour qu'il retrouve l'usage de la parole. Le cerveau est une structure plus que complexe, si bien que chaque AVC est singulier. +Il y a bien-sûr des effets communs à certains types d'AVC, mais chaque être humain aura également des effets propres. Un AVC fatigue énormément le corp ainsi que le moral il faut alors veiller à prévenir cette fatigue et stimuler la personne pour essayer de la remettre sur le chemin de l'activité. + +L'un des effets les plus communs après un AVC reste la perte de la parole pouvant également venir avec une perte du langage (compréhension, expression). Il faut donc arriver à créer une connexion entre le patient et le soignant pour établir une communication humaine allant dans le sens du soin. + +Que ce soit par sa posture, ses gestes ou encore l'intonation de sa voix le soignant joue un rôle essentiel dans la reconstruction de la personne victime d'un AVC, elle sert de guide pour rétablir une faculté endommagée. +On se retrouve alors dans une position similaire à celles que peuvent vivre de jeunes parents entendant pour la première fois leur bambin prononcer un mot. On s’émerveille d'un petit rien, qui en réalité signifie beaucoup pour le patient. + +Le soin se présente sous diverses formes, allant d'une aide partielle à une prise en charge complète, d'attentions affectueuses envers des corps et esprits endommagés. Raser quelqu'un prend du temps (surtout quand soit même on se laisse pousser la barbe), demande une vigilance accrue pour ne pas faire souffrir la personne mais au final, le sourire d'une personne fraîchement rasée, retrouvant une part de lui qui avait disparu avec l'AVC est un plaisir total. + +Le métier reste mal-connu, probablement dévalorisant apparemment selon certains, mais il y a de quoi faire dans une carrière sans jamais s'ennuyer, il y a du taff partout et même plusieurs taffs par personne tant la pénurie commence à se faire sentir. S'occuper des humains, j'irai même jusqu'à être russophile et parler de _camarades_, est un plaisir quotidien qui permet d'enrichir sa vision du monde. +Un AVC est un épisode douloureux dans une vie et il se doit donc d'être pris en charge de la meilleure façon qu'il soit, dans sa globalité. Ne pas oublier que derrière le terme médical il y a une personne qui a souffert, qui va souffrir eventuellement par la suite de cette perte d'autonomie. diff --git a/pages/blog/2017/02-un-dimanche-en-ehpad.md b/pages/blog/2017/02-un-dimanche-en-ehpad.md @@ -0,0 +1,40 @@ +title: "Un dimanche en EHPAD" +date: 2017-09-24T18:00:00+01:00 +tags: [Aidesoignant, Vie 1.0] + +L'EHPAD est certainement l'endroit qui recrute le plus dans le milieu aide-soignant, il faut dire que la filière est juteuse autant pour les établissements publics que les entreprises privées. +En revanche ce n'est pas si rose que cela quand on ouvre la boîte... + +*Attention ce texte est hautement ironique, les vieux c'est chouette...vraiment* + +Nouvelle ville, nouvelle vie, nouveau boulot et me voici donc en EHPAD et principalement sur deux unités de 15 résidents chacune dont une dite *UHR* pour les personnes souffrant de troubles neuro-dégénératifs de type *Alzheimer*. + +L'EHPAD est un lieu de vie, considéré comme beaucoup comme une partie de la santé qui n'en est pas vraiment une alors, dans ce cas, pourquoi accorder des moyens humains (et également financiers) pour une catégorie de la société qui a fait son temps, qui ne fera plus gagner d'argent et cela même si elle se lève tôt 7 sur 7 ? + +Le dimanche c'est un jour payé un peu plus cher que les autres, que voulez-vous il faut tout de même une petite compensation, alors pour ne pas non plus débourser des milles et des cents les établissements déclarent les dimanches (et jours fériés) comme jours à effectifs réduits. Ce qui concrètement veut dire, dans mon cas, que sur les deux services on retrouve une aide-soignante pour chaque secteur le matin puis une l'après-midi et une autre travaillant en horaire coupé (9h-13h puis 17h30-21h). Dans l'unité *UHR* on est à un ratio de 1 pour 15, une personne qui va devoir en 7h30 de boulot : + + - Donner le petit-déjeuner et les médicaments + faire manger une personne sur les quinze + - S'occuper de la toilette + - Assurer le repas du midi + faire manger une personne sur les quinze + - Installer les personnes faisant la sieste si elle le souhaite + - *Tenter* de faire un tour pour changer les protections si besoin avant la fin de son service + - Et tout au long de la journée, elle va devoir surveiller les déambulations, les comportements altérés par la maladie qui se résument par des tentatives de fugues, de la violence physique, des cris, des altercations verbales, du bruit toute la journée. + +Alors on en arrive à un point ou humainement parlant il est difficile de réaliser *professionnellement* les tâches que j'ai énoncées plus haut. Du coup, au grand dam des soignants, les dimanches riment avec une toilette TMC (Tête-Main-C**), l'essentiel pour que la personne soit un minimum propre. Si des personnes ne peuvent plus marcher et doivent être levées on remettra ça au lundi car le dimanche c'est un course contre la montre épuisante. + +Mais il ne faut pas s’arrêter à ce côté *déplaisant* du boulot, qui fait qu'on rentre parfois à la maison avec un sentiment de honte nous suivant comme une ombre. Ce n'est pas un traitement humain pour des personnes méritant simplement qu'on prenne soin d'eux (le prendre soin est tout de même l'essence du métier d'aide-soignante). + +S'ajoute à ça les déboires de budget car oui, dans notre vision de la société, le vieux ça ne rapporte plus grand-chose à la tendre *entreprise France* alors pourquoi donc leur allouer des budgets convenables pour leur permettre de profiter de leurs derniers jours après une vie bien remplie. Simple exemple qui suffira à lui-même sur ce budget minimal qui nous est alloué : + + - Certaines personnes, de part leur âge et leur condition physique, ne peuvent tout simplement plus boire de l'eau plate, de liquide. Alors il existe un produit communément appelé *épaississant* qui permet de transformer un liquide en quelque-chose de plus solide, plus épais (vraiment ?) afin d'éviter les fausse-routes (du liquide dans les poumons = pas bon). Hé bien ce produit est rationalisé, nous ne pouvons en commander que deux boites là où pour une semaine il en faudrait 5 ou 6 pour que les personnes puissent être hydratées convenablement. Alors, pour ne pas laisser les gens se *dessécher*, on essaie de donner du liquide, doucement, à la petite cuillère, à la pipette. Le souci c'est que ça prend encore plus de temps, que ça n'apporte pas beaucoup d'hydratation et surtout que généralement la personne ne supporte pas ça et PAF fausse-route assurée et gros moment de frayeur. + +Arriver en EHPAD en tant que soignant est une chose délicate, on y entre avec pleins de projets pour un lieu de vie dynamique, un lieu de vie où le résident est soigné, un lieu de vie apaisé et au lieu de ça on rentre dans un lieu où le résident est délaissé, où le soignant doit sans-cesse se battre pour obtenir un peu de dignité dans la prise en soin du résident. + +Heureusement que certaines équipes se battent pour leur vision du soin dans un EHPAD car si pour beaucoup le *vieux* est dégouttant et ne donne pas envie d'en faire son secteur de prédilection dans la santé il en reste pas moins qu'il s’agit bien ici d'humain et que nous nous devons tous de faire le nécessaire pour assurer un service de qualité. + +S'occuper de résidents dans un EHPAD est une autre facette des métiers de la santé, ce n'est pas comme une hospitalisation. Ici des liens peuvent se créer, on s'attache forcément à force de se voir tous les jours pendant des années. On travail main dans la main avec le résident pour créer un *projet de vie* adapté permettant de mieux le prendre en soin en apprenant à le connaître d'avantage lui et ses goûts, ses envies. +Le *prendre soin* c'est aussi cela, accompagner au mieux une personne jusqu'à la fin de sa vie, en prenant soin d'ouvrir les yeux pour détecter la moindre anomalie et pouvoir y remédier au plus vite. + +J'ose imaginer ce que l'avenir nous prépare car, plus les générations avancent et plus les mentalités changent, les besoins tout autant, par rapport à nos chers *vieux* des années 30-40. Comment allons-nous affronter la chose par la suite avec un tel manque de moyen ? Comment allez-**vous** supporter cela ? Comment allons-nous réussir à ouvrir les yeux et bouger pour essayer de sauver nos derniers jours, nous assurer que des gens seront là avec tous les outils en main pour s'occuper de nous ? Pour nous accompagner à vivre jusqu'au bout et non croupir en espérant être sélectionné pour les quelques sorties trop rarement obtenu par la force par les équipes soignantes ? + +Les cartes sont dans nos mains, assurons-nous de les jouer avant de ne plus avoir la force nécessaire et d'abandonner la bataille de l'âge... diff --git a/pages/blog/2018/01-beets-mpd-combo-gagnant.md b/pages/blog/2018/01-beets-mpd-combo-gagnant.md @@ -0,0 +1,56 @@ +title: Beets et MPD, un combo gagnant +date: 2018-06-06T17:45:00+01:00 +tags: [Musique, Linux, CLI, Python] + +Depuis quelques années j'accumule les albums en mp3 sur mon PC, ma médiathèque grossie petit à petit et il est important de garder des informations à jours dessus, histoire de pouvoir savourer pleinement les écoutes. En effet il est toujours agréable de connaître l'année de sortie (originale) d'un album, l'équipe et les musiciens ayant travaillés dessus. J'éprouve ce besoin surtout pour les albums de rock des années 70 comme *Pink Floyd*, *Rush* et autres *Yes* et *Led Zeppelin*. Le **padre** est bien là en cas de besoin, pour sortir des anecdotes sur le sujet... Et MusicBrainz également. + +[**MusicBrainz**](https://musicbrainz.org/) C'est un site où les sorties sont répertoriées et les tags id3 à jour. + +Avec plus de 300 albums (Buckethead m'en prends plus d'une centaine à luio tout seul) la tache manuelle avec des logiciels comme EasyTag pourrait s'avérer fastidieuse, mais le monde de l'informatique a souvent une solution plus automatisée et pour la musique elle s'appelle [**Beets**](http://beets.io/). + +> The purpose of beets is to get your music collection right once and for all. +It catalogs your collection, automatically improving its metadata as it goes using the MusicBrainz database. +Then it provides a bouquet of tools for manipulating and accessing your music. +Because beets is designed as a library, it can do almost anything you can imagine for your music collection. Via plugins, beets becomes a panacea. + +L'outil est écrit en **Python**, et donc installable via `pip install beets`. Une fois installé il est accessible via la commande `beets` ou `beet` dans un terminal. +Ensuite il suffit de lancer un `beet import` dans le dossier contenant vos fichiers musicaux pour que le logiciel se mette au travail comme un grand, allant chercher les bonnes informations sur le net et vous avertissant que plusieurs choix sont possibles quand les informations de vos fichiers ne sont pas assez précises. Notons qu'outre *MusicBrainz*, `beets` permet aussi de lancer des recherches sur *Discogs* ainsi que sur *Beatport*. + +Son atout principal reste la gestion d'une médiathèque par ses méta-données, mais `beets` ne s’arrête pas là et il propose également de transcoder vos fichiers dans le format de votre choix, de gérer les doublons dans votre médiathèque ainsi que d'identifier les albums ayant des pistes manquant à l'appel. +S'ajoute à cela la possibilité d'avoir un lecteur web *HTML5* pour contrôler sa musique depuis son navigateur. + +Pour ma part la configuration que j'ai pour `beets` ressemble à ça, j'ai deux dossiers contenant de la musique, un *pending* où je stocke les nouveautés à écouter, et lorsque l'album me plait je l'importe avec `beets` et les fichiers sont modifiés, ordonnés puis déplacés dans le répertoire *Musique*: + +``` yaml +directory: ~/Musique +library: ~/.config/beets/library.db + +import: + move: yes + +match: + preferred: + media: ['CD', 'Digital Media|File'] + original_year: yes + +plugins: fetchart inline play random +paths: + default: $albumartist/$year - $album%aunique{}/%if{$multidisc,Disc $disc/}$track $title +item_fields: + multidisc: 1 if disctotal > 1 else 0 +art_filename: cover +threaded: yes +original_date: yes + +play: + command: mpc add + raw: yes +``` + +Vous l'aurez compris, `beets` est un couteau suisse pour amateurs de musique et d'organisation. Si vous êtes déjà un adepte de la ligne de commande, je pense que vous allez vite être conquis. Pour les autres, ce ne sera qu'une question de temps pour s'habituer à l'outil, mais je doute que vous mettiez longtemps vu la simplicité d'utilisation. + +Bonne écoute. + +--- +<https://musicbrainz.org/> +<http://beets.io/> diff --git a/pages/blog/2018/02-ameliorer-gedit.md b/pages/blog/2018/02-ameliorer-gedit.md @@ -0,0 +1,24 @@ +title: Améliorer Gedit +date: 2018-06-11T18:15:00+01:00 +tags: [Linux, Gnome, Tips] + +Outre **Firefox** et **mpd** l'outil que j'utilise le plus est sans doute **Gedit**, l'éditeur de texte par défaut pour l’environnement *GNOME* (*Budgie* dans mon cas). Écrire des notes, des billets pour le blog, éditer des fichiers de configuration, etc. Alors quand on utilise un outil assez fréquemment il est souhaitable qu'il soit complet (tout en étant simple à utiliser). **Gedit** est vraiment très facile à prendre en main et, de facto, propose le minimum vital pour écrire, mais il est possible de l'améliorer un peu pour qu'il devienne beaucoup plus puissant. + +Pour cela, un seul paquet supplémentaire est nécessaire : `gedit-plugins`. +Une fois installé il n'y a plus qu'à se rendre dans l'onglet *Greffons* du panneau *Préférences* et d'activer les plugins qui vous intéressent. + +Pour ma part j'apprécie tout particulièrement: + + - Complétion de parenthèses + - Espaces intelligents (Forget you're not using tabulations) + - Fragments de code (par défaut avec Gedit) + - Surlignage des lignes ayant changé depuis le dernier commit + - Indicateur d'espaces + - Panneau d'explorateur de fichiers + - Recherche dans tous les fichiers d'un dossier + +![Améliorer Gedit](/static/img/solus/geditplugins.png) + +Avec ça l'édition est beaucoup plus agréable et permet de garder un outil simple et intuitif et de ne pas migrer vers les lourdeurs que son *Atom* et *VS Studio*, surtout quand on est pas un codeur de métier. + +PS: Billet écrit avec `vim` :) diff --git a/pages/blog/2018/03-plasma-et-solus.md b/pages/blog/2018/03-plasma-et-solus.md @@ -0,0 +1,52 @@ +title: Plasma et Solus +date: 2018-07-05T10:00:00+01:00 +tags: [Linux, KDE, Solus] + +**Solus** est la distribution que j'utilise au quotidien depuis maintenant plus de deux ans, et que madame a adopté depuis presque un an. C'est une distribution *relativement* petite mais qui a le mérite d'apporter une attention toute particulière au confort de l'utilisateur. Là où il y a quelques années j'aimais l'instabilité je me trouve bien heureux d'avoir des passionnés offrant un environnement stable sans oublier d'avoir des logiciels à la pointe. + +Bref, **Solus** donc, et du coup **Budgie** et des logiciels *GNOME/Gtk*. Pour le DE j'aime beaucoup, simple et élégant, sans trop de configuration ce qui permet de se concentrer sur l'usage et non la forme. Cependant les logiciels GNOME me paraissent assez lourds pour mon vieux coucou et surtout, j'y vois une uniformité manquante, un manque de je-ne-sais-quoi. +Ce qui gène donc un peu et, les vacances et le temps étant enfin réunis, pourquoi ne pas en profiter pour aller voir du côté de *KDE/Qt*, j'en entends du bien depuis un moment et j'ai été un fervent utilisateur de sa quatrième mouture il y a quelques année. + +Surtout que *Plasma* est arrivé depuis quelque temps dans les dépots de Solus. Tout n'est pas encore là mais les packagers s'affèrent à combler les trous. +Un `sudo eopkg it -c desktop.kde.core` et me voilà avec un environnement **Plasma** minimal, sans fioritures. + + +Globalement je trouve que le DE a fait de gros progrès depuis ~2 ans. À l'époque le gestionnaire de fenêtre *Kwin* plantait souvent sur ma bécane, les logiciels n'étaient pas encore tous portés vers *Qt5*, ce qui entraînait des incohérences au niveau de l’expérience utilisateur, ainsi que des plantages. +*Plasma planta edition*, c'était son surnom. + +Après quelques jours d'utilisation je dois bien avouer que les développeurs ont fait un boulot de dingue et que le DE est devenu un vrai plaisir à utiliser. +Parmi les points positifs de **KDE Plasma 5(.13)** je noterais: + + - **Kate** : l'éditeur de texte qui peut être grandement customisé. Partir d'un éditeur rapide à un *presque* IDE avec accès rapides aux projets *git*, terminal à disposition, outils pour la complétion syntaxique, possibilité de scinder l'écran verticalement ou horizontalement, colorisation syntaxique et bien d'autres. + - **L'utilisation RAM** : 420MO sans rien. Ça laisse de la place pour les autres logiciels. Et c'est vraiment un point que *KDE* a grandement travaillé. il y a quelques années j'étais plus proche des 800MO. Bien joué. De plus la libération de **RAM** une fois les fenêtres/logiciels fermés est rapide. Sympa, sympa. + - **Falkon** : Un navigateur web léger et fonctionnel, ayant intégré récemment le giron de KDE pour l’hébergement git. J'utilisais *Firefox* auparavant, mais il faut bien dire qu'il commençait vraiment à devenir lourd. Là l'occupation de RAM en est divisé par ~2. Certes il n'y a pas pléthore d’add-ons mais l'essentiel *bloqueur de pub* est présent. Et c'est tout ce que je demande. + - **Utilisation CPU** : j'ai également été surpris par la réactivité des logiciels et du bureau en général. L'utilisation CPU n'est certe pas minime mais elle redescend vraiment rapidement une fois le logiciel fermé. + - **Kwin** : gestionnaire de fenêtre aussi configurable que le reste, avec un tas d'extensions. Et dans le mot il y en a même une pour le tiling [Quarter Timing](https://github.com/Jazqa/kwin-quarter-tiling). Ça marche du tonnerre ! *Je vous conseille cependant d'installer manuellement en suivant les indications sur Github. La version présente sur le KDE Store est daté et un poil bugé lors de mes tests.* + + **Akonadi** prend trop de RAM avec sa base Mysql ? (chez mois j'étais arrivé à ~300Mo rien que pour ce dernier) + Pas de soucis, il suffit d'éditer le fichier `~/.config/akonadi/akonadiserverrc` et de supprimer la partie *Mysql* et de changer le `Driver` de `QMYSQL` à `QSQLITE3`. Avec ça j'arrive à 630Mo en arrivant sur ma session. Bureau + Nextcloud + Daemon akonadi + mpd. Plutôt correct. + +# Modularité + +> Simple by Default, Powerful When Needed + +**KDE** s'exprime beaucoup sur ce sujet et effectivement les développeurs ont réussis à créer quelque-chose de cohérent, uniforme et modulable à souhait. À l'installation, un environnement *Plasma* peut directement être utilisable, les logiciels peuvent être facilement installés et on se retrouve rapidement avec un bureau fonctionnel et complet. + +Les goûts aux niveaux de l'apparence varient selon les utilisateurs alors je ne traiterais pas ce sujet. Notons tout de même la grande variété de thèmes/icônes disponibles. + +Ensuite, libre à vous d'explorer les paramètres du bureau ou des logiciels pour faire vos petits arrangements au fil du temps. Personnellement c'est ce que j'aime chez **KDE**. Les outils sont déjà agréables à utiliser avec des paramètres *sortie d'usine*, mais il est possible de tout parametrer comme on le souhaite. +Le nombre de raccourcis clavier est absolument immense. Les logiciels **K** ont quasi tous des fonctionnalités supplémentaires, installables avec des paquets *-addons* et surtout ils sont complets. + + +# Cohérence + +Le design se rapproche plus de ce que l'on connaît tous, notamment avec *Windows*. C'est classique et efficace. Là où je pouvais reprocher à Gnome de faire des choix un peu étranges. (cf le menu logé dans la barre, qui soit-dit-en passant va être réintégré à la fenêtre des logiciels pour Gnome 3.32) +Les deux DE n'ont pas la même philosophie, inutile donc de les comparer et d'alimenter une guerre numérique qui n'a pas lieu d'être. + +De plus l’émergence du framework [*Kirigami*](https://www.kde.org/products/kirigami/) permet d'avoir un design plus que sympa et surtout, pouvant être cohérent avec une utilisation sur smartphone. En vue d'un éventuel **Plasma Mobile** C'est plutôt pas mal. +En tout cas je m'y retrouve complètement avec *Plasma 5.13*. Un bon DE : complet, pratique, intuitif, modulable et ne bouffant pas non plus toute la RAM. Un vrais coup de cœur. + +Et que dire du travail effectué chez *Solus* ? Encore une fois l'intégration est propre, sans bavure (où alors je ne les vois pas.) La fonction de mise à jour *delta* est un réel plus vu la rapidité de sorties des versions de **Plasma**. Quelques logiciels manquent encore à l'appel cependant alors, je m'en vais ressortir mes outils de construction et vais dès maintenant essayer d'empaqueter deux trois logiciels. + + +![Plasma 5.13 en action](/static/img/solus/plasmatiling.png) diff --git a/pages/blog/2018/04-des-depots-git-sur-votre-raspberry.md b/pages/blog/2018/04-des-depots-git-sur-votre-raspberry.md @@ -0,0 +1,47 @@ +title: Dépôts git en toute simplicité sur un Raspberry +date: 2018-07-06T10:00:00+01:00 +tags: [Linux, Raspberry, Tips] + +Git*hub/lab* sont des mots compte triple en ce moment sur le web. Fort heureusement **git** n'est pas simplement un outil pour ces forges. Certes elles l'utilisent et lui servent d'étendards, mais son utilisation ne s'arrète pas là. + +*Je ne reviendrais pas sur l'actualité, libre à cachun de penser ce qu'il veut.* + +J'utilise **git** pour plusieurs choses : + + - Gérer mon blog (utilisant la génération automatique avec Framagit). + - Sauvegarder mes *dotfiles* (fichiers de configuration), au cas où mon ordi plante. + - Utilisation avec [Password-Store](https://www.passwordstore.org/) + - empaqueter des logiciels pour [Solus](https://solus-project.com) + +J'utilisais jusque-là *Gitea* comme interface. Un service écrit en *Go*, très léger et tournant vraiment bien su un *Raspberry*. Et comme souvent je me suis rendu compte que je n'exploitais pas toutes ses fonctionnalités alors autant utiliser simplement **git** pour créer des dépôts distants servant de miroirs/backups. Je n'ai nul besoin d'interface web, ces dépôts servent juste de sauvegardes pour mes différents usages. + +Pour cela : + +``` bash +# Créer un utilisateur dédié pour git +sudo adduser --gecos "" git + +# Créer le dépôt bare +git init --bare /home/git/repo + +# Si créé avec un autre utilisateur +sudo chown git:git /home/git/repo +``` + +Si on souhaite sécuriser la connexion en autorisant seulement les accès via clés ssh préalablement autorisées : + +``` bash +# Copier la clé ssh du client +ssh-copy-id git@server + +# Éditer le ficher /etc/ssh/sshd_config +PubkeyAuthentication yes +AuthorizedKeysFile %h/.ssh/authorized_keys +PasswordAuthentification no +PermitEmptyPasswords no +``` + +> Terminé + +Et voilà, maintenant il n'y a plus qu'à rajouter le remote +`git@votreserveur:/home/user/repo` à vos projets et le tour est joué. diff --git a/pages/blog/2018/05-subliminal-sous-titres-nautilus.md b/pages/blog/2018/05-subliminal-sous-titres-nautilus.md @@ -0,0 +1,19 @@ +title: Subliminal, sous-titres et Nautilus +date: 2018-08-14T16:00:00+01:00 +tags: [Linux, Scripts, Outils] + + +Il arrive parfois qu'en *enregistrant de vidéos à la télévision sur votre enregistreur VHS* (modernisé la méthode si besoin) vous ayez des vidéos dans un autre langage que celui que vous parlez. Bien évidemment il est possible de récupérer des sous-titres sur internet. Et quand vous pouvez le faire directement depuis votre gestionnaire de fichiers c'est encore mieux. + +Utilisant *Budgie* et donc le stack *GNOME* je suis parti à la recherche une solution utilisable avec Nautilus. J'ai trouvé deux scripts répondant à mon besoin. + +Le [premier](https://github.com/emericg/OpenSubtitlesDownload), *OpenSubtitlesDownload*, comme son nom l'indique, cherchera uniquement sur OpenSubtitles. + +Le [deuxième](https://github.com/Diaoul/nautilus-subliminal), *Nautilus-Subliminal* référence plusieurs sites de sous-titres dont le précédent et Addic7ed. L'interface permet de choisir la langue voulue, de régler deux trois choses. + +Le script d'installation part du principe que vous avez une distribution fonctionnant avec le gestionnaire de paquets *apt*. Vu que j'utilise **Solus** et son *eopkg* ce n'est pas le cas, il est tout de même possible de l'installer manuellement en s'inspirant du script de base ou alors un simple coup d'oeil aux *pull requests* en attente permet de voir qu'un utilisateur [a déjà porté](https://github.com/Diaoul/nautilus-subliminal/pull/7/commits/5a6a7c9286e9e196deb36ff2b360edcebebc73a0) le dit-script pour **Solus**. + +Une fois installé il faudra redémarrer la session pour pouvoir avoir accès à **Subliminal** au clic droit sur un fichier vidéo. +L'outil est vraiment agréable à utiliser et avec les sources de sous-titres disponibles il sera difficile de le mettre à l'amende. De plus il est possible de sélectionner toutes les vidéos présentes dans un dossier et **Subliminal** ira chercher chaque sous-titre tout seul, en le renommant pour correspondre au nom de votre fichier vidéo. Sympa non. + +Bonne soirée magnétoscope. ;) diff --git a/pages/blog/2018/06-bloguslivrus-raysday2018.md b/pages/blog/2018/06-bloguslivrus-raysday2018.md @@ -0,0 +1,41 @@ +title: Blogus Livrus - Ray's Day 2018 +date: 2018-08-22T18:10:00+01:00 +tags: [Culture, Livres] + +Je l'avais loupé l'année dernière alors hors de question de le louper cette année. Aujourd'hui 22 août nous [fêtons l'anniversaire](https://raysday.net) de la mort de **Ray Bradbury**, amoureux des mots et écrivain témoignant d'une rare poésie dans sa prose. + +Voici donc un petit concentré de mon histoire livresque. + +![Ray was one of them](/static/img/livres/alienbradbury.jpg) + +Je pense avoir de la chance en ayant des parents avides de lecture qui, lors de mon enfance, m'ont toujours encouragé à lire. Tout petit en passant par les célèbres *Astrapi*, *L'école des loisirs*, en m'emmenant à la bibliothèque. La chance était là également quand, le soir emmitouflé dans ma couette, j'écoutais d'une oreille somnolante mes parents me lire des histoires. + +*J'aime Lire* fut aussi un passage important, l'attente du petit feuillet rouge pour lire et rigoler avec les aventures de *Tom-Tom et Nana*. D'autres noms comme *Rahan*, *Asterix* ou encore *Tintin* m'ont également accompagné. **Gotlib** fut sans doute le premier atome crochu littéraire partagé avec mon père. Un phrasé réfléchi, poétique et drôle capable de toucher toutes les générations, amenant des degrés de lecture inédits au fil des années. (Ce propos vaut pour *Gotlib* pas pour ce fou de père. Quoique...) + +Adolescent j'ai doucement délaissé la lecture en faveur d'un écran rétro-éclairé et son clavier (les lettres n'étaient pas loin). De l'entrée du collège jusqu'à la terminale je n'ai plus lu par plaisir, simplement par obligation scolaire. +Seul la lecture de *La ligne verte* me marque profondément, car elle s'associe pour la première fois à l'écoute d'un album. (*Six Degrees of Inner Turbulence* de **Dream Theater** et plus précisément le morceau [The Glass Prison](https://duckduckgo.com/?q=pr%C3%A9cisement&t=qupzilla&ia=web)) +Un moment rare qui, des années après, me renvoie toujours des images, des mots, des sons. C'est marrant comme le mariage du mot et du son peut rester ancré en nous. + +Dernière année au lycée et je reprends goût à la lecture via les journaux. Ceux d'informations régionales dans un premier temps, ceux d'analyse politico-satirique à la maison. La reprise de la lecture est là mais, je ne le sais pas encore. Un ami me fait découvrir les comics, devant le lycée avant la sonnerie du matin. Un *Deadpool* sur un écran 5 pouces avec Android Froyo (balbutiements smartphoniques). Puis je m'y intéresse un peu plus et dévore les Deadpool donc puis l'event *Civil War* de **Marvel**. +C'est alors que je redécouvre un héros de mon enfance, **Batman**, qui, je l'ignorais, à une vie dessinée plus que riche outre-atlantique. Un monde infini s'ouvre alors à moi et je tombe rapidement dans la lecture compulsive de comics (super-héroïque et autres). Un pan de la culture américaine que je ne connaissais pas, me paraissant sans autre intérêt que le divertissement *blockbuster*. Je découvre alors des pépites comme *Watchmen*, *V pour Vendetta* et des dessins bluffants comme dans *House of M*, *Batman Hush* ou encore *Daredevil Guardian Devil*. + +![Daredevil Guardian Devil](/static/img/comics/daredevilguardiandevil.jpg) + +Le lycée est fini et je prépare ma rentrée en faculté d'anglais *littérature et civilisatrion*. La HP Touchpad arrive sur le marché pour repartir quelques semaines plus tard, un bide total qui me permettra d'avoir une tablette compétitive pour moins de 100 euros. +*(7 ans plus tard elle est toujours vivante, me sert à lire mes comics et tourne pour 10 heures de lecture sans soucis et ce sur la dernière version d'Android en date. Prends ça dans les dents l'obsolescence programmée)* + +Arrivé à la fac je me vois obliger de lire les classiques anglo-saxons et j'y découvre au détour de quelques oeuvres un plaisir renaissant à vibrer au fil des mots. Je rencontre des gens me poussant à lire, découvre la science-fiction, la fantasy, les romans à l'histoire implacable à l'Américaine. J'y découvre également la plume poétique d'un Paul Auster C'est d'ailleurs à ce moment-là que je découvre monsieur **Bradbury** avec *Fahrenheit 451*. Je rencontre madame également qui n'y est certainement pas pour rien non-plus dans ce renouveau littéraire. + +Aujourd'hui j'ai repris goût à la lecture. Des comics encore et toujours et des bouquins, beaucoup de bouquins. +SF, fantasy, Stephen King, romans américains, super-héros. + +Si j'avais quelques conseils de *grandes* lectures à ce jour je dirais : + + - *La Horde du Contrevent* d'**Alain Damasio** pour le travail du texte, le voyage, la verve brute, le questionnement de soi. Mon numéro un incontesté et incontestable, une claque puissante. Une relecture prochaine est prévue et un billet est en cours de rédaction depuis 2 ans. (Une publication pour le RayDay 2019 ?) + - *La Tour Sombre* de **Stephen King** (bouffez-en c'est un dieu vivant de l'histoire parfaite, des idées toutes bêtes ou trop bêtes qui partent en sucette) + - *Les Sentiers des Astres* de **Stephen Platteau** (fantasy mythologique d'une rare finesse, une fresque écologique teinté d'influences multiples.) + - *Of Mice and Men* de **John Steinbeck** (pur réalisme, histoire humaine incroyable, caractérisation attachante au possible) + +Papier ou numérique peut importe. Le plaisir de lire n'a pas d'égal, l'harmonie et la puissance formé par le langage peut parfois toucher au plus profond de l'être. + +*PS: N'hésitez-pas à partager vos grands moments de lecture dans les commentaires.* diff --git a/pages/blog/2018/07-kodi-et-retrogaming.md b/pages/blog/2018/07-kodi-et-retrogaming.md @@ -0,0 +1,41 @@ +title: Kodi et Rétrogaming +date: 2018-08-31T09:30:00+01:00 +tags: [Raspberry, Jeux] + +Il y a quelques jours j'ai vu passé l'info sur le net comme quoi [Nintendo avait lancé des poursuites](https://torrentfreak.com/why-nintendo-will-never-defeat-retro-gamers-180912/) contre un grand nombre de sites de *retro-gaming*. Résultat: des fermetures à la pelle. +Bien évidement cela m'a donné envie de rejouer à ces jeux de mon enfance. + +Le *rétro-gaming* est un phénomène *nostalgique* de grande ampleur, nous ramenant à une époque où les jeux avait une certaine saveur et, où, le marché hollywoodien n'avait pas encore amené cette notion de *grand spectacle*. Pour beaucoup il est lié à des souvenirs d'enfance, des moments partagés devant la console. Pour ma part c'est toujours un plaisir de rejouer à ces jeux, de me rappeler ces moments avec mon frère, mon père. Ces parties sans fin, ces nuits à essayer d'avancer dans *Le Roi Lion* sur **Snes** jusqu'à ce que ma mère rentre du boulot pour nous trouver encore éveiller. (Le père a dû se faire légerement engueulé cette fois ci.) + +Bref, ce plaisir (le plus souvent pas tout à fait légal) est en train de disparaitre avec les attaques récentes de Nintendo. En y réfléchissant c'est à la fois logique et incompréhensible. + + - **Logique** car Nintendo, et les autres éditeurs, ont bien compris ce phénomène et commence à surfer dessus avec les réeditions de leurs vieilles consoles comprenant les hits de l'époque. Ça ne leur coute pas grand-chose et ça rapporte un max. + - **Incompréhensible**, car ces consoles et ces jeux ont fait leur temps, ont rapporté beaucoup d'argent et ont permis d'assurer la rentabilité financière et, parfois, le respect créatif des éditeurs. Pourquoi alors venir embetter ces sites et joueurs voulant simplement revivre des moments de plaisirs ? Tout en sachant qu'un grand nombre de ces rétro-gamers jouent toujours, et ce sur des consoles récentes en achetant légalement les jeux ? + +Quoi qu'il en soit j'ai eu envie de m'y remettre un peu (hier soir d'ailleurs nous avons, avec Madame, refait **Donkey Kong Country** sur *Snes*. Un réel plaisir.) et j'en profite d'avoir un *Raspberry Pi* pour installer **Recalbox**. + +Dans le monde des distributions multi-émulation il y a deux grands noms: + + - Recalbox + - Retropie + +J'ai voulu essayer *Recalbox* car elle apparaît comme étant la solution la plus facile d'accès pour l'utilisateur. Un simple plug-n-play et tout est sensé fonctionner sans besoins d'aller bidouiller quoique ce soit. +Effectivement c'est le cas, tout est reconnu sans le moindre effort. Les émulateurs (Megadrive, Nes et Snes) fonctionnent à merveille. Un pur plaisir pour la partie rétro-gaming. Cependant *Recalbox* propose également *Kodi* pour faire office de media-center et, la version proposée est plus qu'obsolète pour l'utiliser avec des addons. + + +Alors je suis parti sur l'idée d'avoir un dual-boot sur mon Raspberry pour pouvoir profiter d'un Kodi dernier cri et de recalbox. Pour cela j'ai utilisé [NOOBS](https://www.raspberrypi.org/downloads/noobs/) puis [PINN](https://github.com/procount/pinn/). + + - LibreElec/Recalbox -> Installation fonctionnelle pour LibreElec, Recalbox n'accroche pas au boot. Problème connu, sans solution vraisemblablement. + - OSMC/Recalbox - Les deux démarrent sans problème, j'ai cependant du mal avec l'interface maison. Il est possible de repasser sur le thème de base de *Kodi* mais, je ne sais pas pourquoi je préfère LibreElec dans sa simplicité. + +Finalement c'est moyennement satisfaisant ces dual-boots. Alors j'ai cherché, me suis rappelé qu'il y avait un add-on pour utiliser **RetroArch** ou **EmuleStation** avec *LibreElec*, [GameStarter](https://github.com/bite-your-idols/Gamestarter), qui faisait super bien le job. Et puis j'ai découvert via les résultats du moteur de recherche que Kodi, dans sa dernière version *(18)* en cours de développement, avait intégré une partie nommée **RetroPlayer**. + +Ainsi Kodi s'étoffe encore en apportant toute la joie du retrogaming. J'ai ainsi commencé à explorer la chose en flashant l'image alpha de LibreElec 9 avec Kodi 18. Un menu **Jeux** est présent, les émulateurs sont disponibles à l'installation dans le dépôt LibreElec et il suffit alors de récupérer des Roms. +Lancement ... Et ça fonctionne, enfin pas tout car certains émulateurs ne fonctionnent pas vraiment mais pour la SNES et la Mega-drive on en a au moins un pour chacune des consoles. Les manettes (Xbox 360 wireless et une imitation 360 filaire) sont reconnus sans besoin de bidouiller. + +Très bonne surprise donc si vous cherchez une solution simple pour un combo média-center/rétro-gaming. Kodi gère le tout et, même si la deuxième partie n'est pas encore complète (système de sauvegarde non implanté) cela est très prométteur. Surtout pour une solution qui, originellemetn, a vu le jour sur une console de jeu (Xbox). + +Si l'aventure vous tente c'est par ici: + + - [Image LibreElec 8.90.003](https://libreelec.tv/2018/08/libreelec-leia-v8-90-003-alpha/) + - [Builds journaliers de la branche 9 par Milhouse](https://forum.kodi.tv/showthread.php?tid=298461) diff --git a/pages/blog/2018/08-orgmode-finalement.md b/pages/blog/2018/08-orgmode-finalement.md @@ -0,0 +1,24 @@ +title: Org-Mode, finalement +date: 2018-09-21T17:30:00+01:00 +tags: [Emacs, Linux, Orgmode] + +Il y a quelques semaines je disais avoir essayé **Org-Mode** et l'avoir trouvé bien trop complet et préférais ainsi continuer à utiliser **Markdown** pour la mise en forme de mes billets et mes notes. C'est donc tout naturellement que j'ai relancé _Emacs_ la semaine dernière...<br /> + +La raison est simple, je suis actuellement une formation professionnelle et je voulais un outil pour retaper mes notes manuscrites, un outil simple et me permettant de faire des recherches dedans plutôt rapidement. La formation étant articulée autours de quatre modules le système d'_headings_ avec possibilité de pliage et le réarrangement facilité de ces derniers me paraît être une fonctionnalité intéressante pour la mise en forme de mes notes.w + +Org-Mode donc, quelques vidéos (pour confirmer mon choix) ici et là et me voilà parti. + +Et bien évidemment, je m'y suis plongé et je pense avoir trouvé un environnement d'écriture qui me convient. La syntaxe est similaire à **Markdown** et s'appréhende rapidement. + +Ce qui fait la force d'**Org-Mode** c'est ses fonctionnalités à la pelle. + +Parmi celles-ci je me dois de parler d'_org-capture_. Cette dernière permet de rapidement écrire de petites notes ou encore de sauvegarder une information importante comme un lien URL, un lien avec un morceau de texte issu de la page web, etc.<br /> +Quelques lignes de code plus tard les templates sont générés pour différentier les divers usages et il est même possible d'invoquer la fonction depuis un navigateur ou le système. Très pratique lorsqu'une idée survient de nulle part et qu'il faut la coucher sur papier numérique rapidement. j'y reviendrai dans un billet prochain tant la fonction est utile et pratique. + +> Everything should be made as simple as possible, but not any simpler -- Albert Einstein + +**Org-Mode** propose également l'export vers un grand nombre de format (HTML, Markdown, ODT, Latex ou encore PDF) et là aussi il est possible de choisir d'exporter un _heading_ en particulier ou l'intégralité du fichier. + +![Orgmode Layout](/static/img/emacs/orgmodelayout.png) + +Je crois qu'à l'heure actuelle je n'ai exploré qu'une faible partie des diverses possibilités qu'offre **Org-Mode** mais je sens déjà que l'outil me plaît. Certes l'apprentissage est rude au début, car il faut assimiler une nouvelle syntaxe, un concept d'headings et subheadings mais, je pense qu'il ne faut pas s'y plonger à corps perdu dès le début et d'accepter de ne pas tout maîtriser puis, apprendre petit à petit à maitriser les raccourcis et les diverses fonctionnalités pour se construire une méthode de travail propre et efficace. diff --git a/pages/blog/2018/09-on-sembete-avec-les-de-tant-mieux.md b/pages/blog/2018/09-on-sembete-avec-les-de-tant-mieux.md @@ -0,0 +1,26 @@ +title: On s'embête avec les DE, tant mieux +date: 2018-09-28T11:00:00+01:00 +tags: [Linux] + +J'ai pu lire chez [Olivyeahh](https://leblogdolivyeahh.wordpress.com/2018/09/23/sur-les-desktops-daccord-pas-daccord/) et [Frederic Bezies](http://frederic.bezies.free.fr/blog/?p=17949) deux billets fort intéressants sur la stabilité qu'offrent les DE de nos jours et le fait qu'il y est donc une perte de _bidouille_ pour l'utilisateur. Car, il faut bien le reconnaitre, le monde linuxien est devenu beaucoup plus agréable à manier pour un utilisateur standard qu'il y a quelques années. + +Les distributions s'installent majoritairement sans encombre, il faut cependant se familiariser avec les images `iso` et comment les mettre sur un support usb. Le _Live CD_ n'éxiste quasiment plus de nos jours, 700MO pour une distribution c'est un peu dépassé (ou alors c'est une _netinstall_).<br /> +Donc l'installation se fait sans soucis et arrive par la suite le choix de **DE**. Il est vrai que pour un utilisateur windowsien n'ayant pas eu le choix auparavant sur son environnement de bureau il y a de quoi être perdu lorsqu'on commence les recherches sur Linux. _Gnome_, _Kde_, _Xfce_, _Mate_ ou encore _Cinnamon_ pour les plus connus, il y a du choix et on ne voit pas très bien ce que l'un apporte par rapport à l'autre. + +Choisir _GNOME_ permet d'avoir une interaction visuelle avec son OS d'une façon nouvelle. Déroutante la première fois, mais qui peut s'avérer très intéressante si on y adhère rapidement. La simplification est de mise et on se rend compte rapidement si cette dernière nous convient ou non. + +Choisir _Kde_ permet d'avoir un DE solide et plus que complet, un environnement qui est capable de s'adapter à l'utilisateur. Les moins exigeants accepteront les réglages par défauts et retrouveront des habitudes visuelles prise chez Windows. En revanche si le besoin de régler le **DE** plus précisément se fait sentir il est tout à fait possible de le faire. _Kde_ permet une profondeur de modification assez intéressante sans pour autant pousser l'utilisateur à tout régler. Si ce dernier en a envie la possibilité est là, le cas contraire tout fonctionnera sans rien toucher. + +Choisir _Xfce_ revient aussi à choisir la simplicité, la légèreté, dans un environnement visuel ne cassant pas les codes windowsiens. Son apparence ancestrale à première vue peut en détourner plus d'un mais une fois le tour des configurations possibles il se peut que sa légéreté vous convienne. Son rythme lent de mise à jours en fait un OVNI dans le paysage actuel où l'on veut un flux continue de nouveautés. Ici rien ne change en apparence, dessous le capot les changements sont lents et ne seront publié qu'une fois le tout refait à neuf. + +Tout l'écosystème Linux est quand même plus plaisant à utiliser qu'il y a quelques années. Globalement ça fonctionne sans rien modifier et les utilisateurs moins chevronnés y gagnent en maniabilité. + +Si je prends l'exemple de madame à la maison, elle tourne depuis un an sous Linux maintenant et elle n'a eu qu'une fois à aller bidouiller (pour utiliser flash car une web app pour son boulot fournit avec). Sinon tout a fonctionné comme sur des roulettes. Le navigateur tourne, LibreOffice ne plante pas, elle peut écouter de la musique, télécharger des torrents et ranger ses fichiers avec le gestionnaire. C'est majoritairement ce que font les utilisateurs standards avec leur ordinateur, et ça marche au top. + +Sans nul doute une étape est franchie. Plus besoin d'éditer des fichiers `.conf` pour faire détecter son imprimante (la faire fonctionner était encore autre chose il y a quelques années), on branche et soit le driver s'installe seul soit il suffit d'ouvrir les paramètres du système pour l'installer tranquillement. Les logiciels _basiques_ sont d'une solidité impressionnante, et le l'éventail de choix est là pour satisfaire la majorité des utilisateurs.<br /> +D'un point de vue stabilité et confort d'utilisation c'est une victoire. Avoir un environnement graphique stable c'est également pouvoir se concentrer sur autres choses. Les développeurs de ces derniers l'ont bien compris et se focalisent maintenant sur l'amélioration des performances, l'optimisation dans la gestion des ressources afin de pouvoir s'adapter à la multitude de configurations possible sur un PC. + +La ligne de commande n'est pas pour tout le monde, il faut un minimum de connaissance pour ne pas casser quelque-chose et il faut surtout de la volonté. Chose que certains n'ont pas et n'en veulent pas car voulant faire autre-chose de leur outil informatique et c'est leur droit. +Ceux voulant apprendre le feront naturellement, et ceux en voulant toujours plus et aimant la _bidouille_ se tourneront vers d'autres solutions comme les gestionnaires de fenêtre _tiling_. Il y en a pour tout le monde et c'est ça qui est chouette avec le monde Linux. + +Linux est vraiment devenu **grand-public** au sein de son écosystème, il manque seulement le changement dans la mentalité générale pour qu'un nombre d'utilisateurs _pré-disposés_ à pouvoir utiliser Linux franchissent le pas. Et c'est cela sans doute qui sera la prochaine grosse étape, impliquant davantage de vulgarisation et davantage d'échanges humains pour faire connaitre et reconnaitre Linux comme une alternative viable, sécurisé et complète. diff --git a/pages/blog/2018/10-orgcapture.md b/pages/blog/2018/10-orgcapture.md @@ -0,0 +1,78 @@ +title: Org-Capture, la prise de note rapide +date: 2018-10-08T10:00:00+01:00 +tags: [Emacs, Orgmode] + +Dans mon exploration d'**emacs** et org-mode je suis tombé sur _org-capture_. Un système de prise de notes ultra rapide avec des modèles pouvant être prédéfinis. Pratique lorsque l'on travaille sur un document et qu'une idée surgit sans crier gare ou qu'une tâche à accomplir vient de faire irruption dans votre cerveau. + + +``` +(require 'org-capture) +(require 'org-protocol) +(require 'org-capture-pop-frame) +(global-set-key (kbd "C-c c") 'org-capture) +``` + +Ce qui est génial c'est qu'il est possible de programmer des _templates_ pour différentes prises de notes. Ainsi à l'invocation d'`org-capture` un choix est demandé pour utiliser tel ou tel template en fonction de la note. + +``` +(setq org-capture-templates + '( + ("n" "Note" + entry (file+headline "~/org/StuffBox.org" "Notes") + "** %^{Title} %^g \n%?\n") + ("l" "Web Link" + entry (file+headline "~/org/StuffBox.org" "Web") + "** %a %^g \n" :immediate-finish t) + ("p" "Web Paste" + entry (file+headline "~/org/StuffBox.org" "Web") + "** %a %^g \n %i\n" :immediate-finish t) + ) +) +``` + +**Org-Capture** sert donc à prendre des notes rapidement ou enregistrer des informations pour plus tard. Et quoi de mieux comme lieu de découverte qu'un navigateur web (ouvert sur les bonnes pages bien entendu) ?<br /> +J'utilise _Firefox_ et des [extension existent](https://addons.mozilla.org/fr/firefox/search/?platform=linux&q=org-capture) pour intégrer `org-capture` au navigateur, elles fonctionnent bien mais ne sont pas très fléxibles. Je préfère alors utiliser un bookmarlet en `javascript` pour communiquer avec org-capture via `org-protocol`. La solution permet de sauvegarder un simple lien, mais peut également sauvegarder le texte mis en surbrillance sur la dite-page. Vraiment sympa pour relever des citations, des phrases ou morceaux de code. + +``` +javascript:location.href="org-protocol:///capture?url="+encodeURIComponent(location.href)+"&title="+encodeURIComponent(document.title||"[untitled page]")+"&body="+encodeURIComponent(window.getSelection()) +``` + +_Bien naturellement un bookmarlet JavaScript est utilisé ici, donc la solution peut être appliquée avec les autres navigateurs._ + +L'intégration dans Firefox c'est bien, mais il est possible d'aller encore plus loin en créeant un raccourcis clavier dans votre système pour pouvoir avoir accès à `org-capture` depuis n'importe où. + +``` +emacsclient org-protocol://capture? +``` + +En invoquant cette commande je fais le choix délibéré de ne pas choisir de templates particulié, car il est possible que je veuille simplement entrer un note ou alors ajouter une tâche ou je ne sais quoi encore. + +Mais alors il me manque une chose pour adapter mon usage à cette technologie : _Du popup_. Je ne souhaite pas passer par une instance d'emacs et sortir de mon logiciel utilisé. J'aime l'idée qu'une fenêtre surgisse, permette une prise de notes rapide, une sauvegarde de liens puis se referme en me laissant avec mon logiciel ouvert. + +La solution `org-capture-pop-frame`, un paquet qui comme son nom l'indique transforme chaque appelle d'`org-capture` en une fenêtre popup. Avec le paramètre `immediate-finish t` c'est un vrai plaisir. + +``` +(defadvice org-capture-finalize + (after delete-capture-frame activate) + "Advise capture-finalize to close the frame" + (if (equal "capture" (frame-parameter nil 'name)) + (delete-frame))) + +(defadvice org-capture-destroy + (after delete-capture-frame activate) + "Advise capture-destroy to close the frame" + (if (equal "capture" (frame-parameter nil 'name)) + (delete-frame))) + +(use-package noflet + :ensure t ) +(defun make-capture-frame () + "Create a new frame and run org-capture." + (interactive) + (make-frame '((name . "capture"))) + (select-frame-by-name "capture") + (delete-other-windows) + (noflet ((switch-to-buffer-other-window (buf) (switch-to-buffer buf))) + (org-capture))) +``` +![Org capture Firefox](/img/emacs/orgffcapture.png) diff --git a/pages/blog/2018/11-construire-des-paquets-sous-solus.md b/pages/blog/2018/11-construire-des-paquets-sous-solus.md @@ -0,0 +1,144 @@ +title: Construire des paquets sous Solus +date: 2018-11-04T23:00:00+01:00 +tags: [Solus, Contribution] + +Construire des paquets pour une distribution permet aux utilisateurs de pouvoir télécharger des logiciels prêts à l'emploi, de ne pas avoir à les construire et reconstruire. Sous Solus le packaging est relativement simple et chacun peu y participer, soumettre des mises-à-jour ou des demandes d'inclusion de logiciels dans les dépôts. (Les membres de l'équipe intégreront vos maj et valideront ou non les demandes d'inclusion) + +## La préparation + +Pour pouvoir commencer à construire des paquets il faut préparer le terrain, installer les bases qui vont nous servir. + +### Le fichier packager +Premièrement il est important de créer un fichier `packager` dans le dossier `~/.solus`. Ce fichier contient votre nom et votre adresse mail, qui seront ajouté au paquet. + +``` +[Packager] +Name=Votre nom +Email=votre.adresse@mail.truc +``` + +### Solbuild + +Par la suite il faut installer les outils de développement nécessaire avec la commande `sudo eopkg it -c system.devel`, veillez également à ce que git soit installé. + +#### Initialiser solbuild + +Il suffit alors d'installer **solbuild** avec `sudo eopkg it solbuild`. Ensuite deux manières de construire les paquets s'offre à vous. + + - Construction en se basant sur les paquets et versions de logiciels disponibles dans *shanon*, la branche stable, celle que la majorité des utilisateurs utilisent. + - Construire en se basant sur *unstable* et donc bénéficier des dernières versions logiciels. + +Il est important de noter que les MAJ chez Solus se font généralement le vendredi, donc il est possible en construisant avec la branche stable que des versions de logiciels empêchent la création d'un paquet. + +En revanche la construction d'un paquet avec stable permet de pouvoir l'installer sur le système directement après la construction alors qu'en le créant avec unstable il faudra parfois attendre le sync du vendredi si les versions de logiciels diffèrent entre les deux branches. + +Si vous choisissez de construire avec unstable il faudra également installer le paquet `solbuild-config-unstable`. + +Une fois cela fait la commande `sudo solbuild init`peut être lancé et l'image de base de solbuild va être construite. Profitez-en pour aller vous prendre une tasse, un bol, un verre, ou vous faire un irish coffee. + +#### Mettre à jour solbuild + +Solbuild est une image à un moment t des logiciels constituant la base du système de construction de paquets et donc, les versions des logiciels peuvent changer. Ainsi il est conseiller de mettre à jour solbuild régulièrement pour ne pas devoir à chaque construction télécharger les dites-mises à jour. La commande `sudo solbuild update` fera le travail. + +### Common + +Pour finir il faut télécharger `common`, un ensemble de scripts facilitant l’empaquetage. Le paquet `git` doit être installé sur votre système pour cela et `common` doit être téléchargé dans le même dossier ou vous allez empaqueter (chaque empaquetage se fera dans un sous-dossier portant le nom du logiciel). + +``` bash +git clone https://dev.getsol.us/source/common.git +``` + +Ensuite nous créons des liens symboliques pour permettre l'accès à ces fichiers de construction. + +``` bash +ln -sv common/Makefile.common . +ln -sv common/Makefile.toplevel Makefile +ln -sv common/Makefile.iso . +``` + +Dans le dossier de votre futur paquet il faudra utiliser `echo "include ../Makefile.common" > Makefile` pour permettre de lancer la construction du paquet. + +Voilà donc à quoi ressemble la hiérarchie de mon dossier nommé `Solbuild`. + +``` +| common/ +| your-package/ +| - Makefile +| Makefile +| Makefile.common +| Makefile.iso +``` + +## Créer des paquets + +Enfin ! Eh bien non, il y a encore quelques bases à voir avant de se lancer. L’Irlande ne s'est pas construite en un jour. + +### Package.yml + +Le fichier concentrant les éléments relatifs à la construction d'un paquet se nomme `package.yaml` et sa structure est la suivante. + +``` yaml +name : Nom du paquet +version : Numéro de version +release : Numéro de release actuelle (incrémentation +1 à chaque MAJ) +source : Source pour télécharger l'archive +license : Licence du logiciel +component : Groupe du paquet, liste dispo via la commande *eopkg lc* +summary : Résumé du logiciel +description : Plus ample description +builddeps : Dépendances pour construire, faire +fonctionner le logiciel si nécessaire. + - pkgconfig(lib) + - paquet-devel +setup :| Lancer la configuration si nécessaire + %configure +build :| Lancer la construction du paquet + %make +install :| Emplacement d'installation du paquet + &make install +``` + +#### Builddeps + +Certaines librairies et autres embarquent des noms `pkgconfig`, ce sont ces noms dont nous aurons besoin lors du build pour créer le paquet : + - par exemple `gtk+-3.0` est contenu dans `libgtk-3-devel`, quand le build commence il recherche le nom *standard* de gtk+-3.0 et ça lui dit comment build against gtk3. (ou regarder pour trouver les librairies et les fichiers header, et quelles librairies utiliser) +en gros l'avantage ici c'est que le build system retrouve tout seul comme un grand ce qu'il faut. + + - attention cependant tous les paquets ne contiennent pas des pkgconfigs, on peut le vérifier en tapant `sudo eopkg info libgtk-3-devel` par exemple et la réponse sera : + `Provides: pkgconfig(gtk+-3.0) pkgconfig(gdk-3.0)...`. + - Pour les paquets ne disposant pas de pkgconfig, il suffit de lister le paquet devel. Si ce dernier n'est pas disponible, lister le paquet normal. + +Les version de paquet avec le suffixe *-devel* contiennent les fichiers nécessaires pour construire un paquet comme les headers, des fichiers .so, .pc etc... + +une fois le fichier *package.yml* correctement documenté +il suffit de lancer la commande `sudo solbuild build` à la racine du dossier comprenant votre fichier `package.yaml` et le build commence. +Lors du build, le package .eopkg est crée ainsi qu'un package nommé *pspec_x86_64.xml*. Ce dernier est un fichier résumant le contenu du package et les informations sur l'empaqueteur (**Vous** !!) + +## Soumettre des paquets + +Pour soumettre des paquets dans les dépôts Solus il faut passer par le [Phabricator](https://dev.getsol.us). Il est conseillé de faire une recherche pour s'assurer qu'une demande d'inclusion n'a pas déjà été faite (et peut-être rejeté), qu'une soumission n'a pas été faite (pour une mise à jour ou après l'acceptation de l'inclusion.) Ensuite il suffit de suivre quelques règles : + +### Paquet non présent dans les dépôts + +Il faudra tout d'abord passer par une demande d'inclusion en précisant le nom du paquet, le site web (ou lien git), la raison de la demande (et si une alternative est déjà présente dans les dépôts qu'apporte de plus votre demande), si vous pensez que le logiciel sera utile/utilisé par beaucoup de monde (ou préciser la fourchette d'utilisateurs) ainsi que le lien vers l'archive du code source (Solus n’accepte pas les liens vers l'archive master d'un dépôt git, seulement les tags/releases sont autorisés). + +### Paquet déjà présent / intégration acceptée + +Il s'agit donc d'une inclusion ou d'une mise à jour. Les procédures sont similaires et commencent comme ci : + + - Une fois le paquet construit et testé il faut nettoyer le dossier avec `make clean` pour supprimer les paquets `.eopkg`. + - on enchaine ensuite les commandes `git add .` et `git commit` pour ajouter les changements au dépôt. + +L'envoie sur *Phabricator* se fait via `arcanist`. Il faut donc installer le paquet et le configurer. + +``` bash +sudo eopkg it arcanist +arc set-config default https://dev.getsol.us +arc install-certificate +``` + +La troisième commande vous enverra sur le site pour vous connecter avec votre compte et vous attribuer un jeton personnel pour autoriser `arc`à échanger avec *Phabricator*. + +Ensuite utiliser la commande `arc diff`, le logiciel se débrouille tout seul et vous propose de remplir un schéma pour ensuite le poster. Remplissez-le et voilà c'est terminé. + +Pour aller plus loin je vous recommande d'aller lire la [doc officielle](https://getsol.us/articles/packaging/) de Solus. diff --git a/pages/blog/2018/12-trucs-et-astuces-pour-le-packaging-solus.md b/pages/blog/2018/12-trucs-et-astuces-pour-le-packaging-solus.md @@ -0,0 +1,77 @@ +title: Trucs et astuces pour le packaging sous Solus +date: 2018-11-07T16:00:00+01:00 +tags: [Solus, Contribution] + +Suite à mon [précédent billet](../20181104-construire-des-paquets-sous-solus) sur le packaging sous **Solus** je vous propose aujourd'hui un court billet avec diverses astuces pour faciliter la vie de l'empaqueteur. C'est parti + +Quand on débute un empaquetage pour un logiciel non-présent dans les dépôts il faut dans un premier temps créer un fichier `Makefile` et initialiser un dépôt git qui permettra de suivre les changements d'empaquetage. +Pour cela j'utilise un `alias` dans `.bashrc`. + +``` +alias mkf='echo "include ../Makefile.common" > Makefile && git init .' +``` + +Lors de ce premier empaquetage il est également essentiel de créer un fichier `package.yml`. Ce dernier servira à construire le paquet en donnant les informations nécessaire aux outils de construction. Un script est disponible pour *automatiser* la première création de ce fichier. Je colle donc un `alias` dans le fichier `.bashrc`. Il suffit alors d'appeler `yauto.py` avec en argument le lien vers l'archive contenant les sources du logiciel. + +``` +alias yauto="/home/justin/Solus/Solbuild/common/Scripts/yauto.py" +``` + +Si je lance `yauto https://www.nano-editor.org/dist/v3/nano-3.1.tar.xz` + +``` +name : nano +version : 3.1 +release : 1 +source : + - https://www.nano-editor.org/dist/v3/nano-3.1.tar.xz : 14c02ca40a5bc61c580ce2f9cb7f9fc72d5ccc9da17ad044f78f6fb3fdb7719e +license : GPL-2.0-or-later # CHECK ME +component : PLEASE FILL ME IN +summary : PLEASE FILL ME IN +description: | + PLEASE FILL ME IN +builddeps : +setup : | + %configure +build : | + %make +install : | + %make_install +``` + +Après avoir vu des astuces pour un premier empaquetage d'un logiciel, voyons celles pour une mise à jour. + +Il faut dans un premier temps récupérer le dépôt git chez **Solus** contenant le fichier `package.yml` et autres fichiers. J'ajoute un `alias` dans le fichier `.gitconfig` pour simplifier le clonage. + +``` +[url "https://dev.getsol.us/source/"] + insteadOf = solus: +``` + +Ainsi pour cloner le dépôt `nano` il suffira de taper `git clone solus://nano`. + +Ensuite lors d'une montée en version d'un logiciel il faut modifier plusieurs lignes du fichier `package.yml`. + +``` +version : 3.1 +release : 1 +source : + - https://www.nano-editor.org/dist/v3/nano-3.1.tar.xz : 14c02ca40a5bc61c580ce2f9cb7f9fc72d5ccc9da17ad044f78f6fb3fdb7719e +``` + +La ligne la plus embêtante est sans doute celle `source` car la structure de l'url peut parfois changer et surtout il faudra recalculer la somme `sha256`. Un script est mis à disposition avec `ypkg` pour faciliter cela, son nom : `yupdate.py`. Un `alias` dans `.bashrc` plus tard et c'est parti. + + +``` +alias pkgup="/usr/share/ypkg/yupdate.py" +``` + +le script prend deux arguments dans un ordre précis. Le premier est le numéro de la nouvelle version et le deuxième est l'url de cette dernière. + +``` +yauto 3.1 https://www.nano-editor.org/dist/v3/nano-3.1.tar.xz +``` + +Le script fait le job, modifie les lignes nécessaires dans le fichier `package.yml` et il ne reste plus qu'à lancer la construction. + +Voilà pour les quelques astuces que j'utilise. Si vous en utilisez d'autres n'hésitez pas à les partager dans les commentaires. diff --git a/pages/blog/2018/13-blogusmusicus-oct-2018.md b/pages/blog/2018/13-blogusmusicus-oct-2018.md @@ -0,0 +1,46 @@ +title: "Blogus Musicus : Octobre 2018" +date: 2018-11-12T12:00:00+01:00 +tags: [Musique] + +Avec un peu de retard voici la fournée musicale du mois d'octobre 2018. Trois albums dont deux nouveautés. + +## Con Brio : Explorer + +![Con Brio - Explorer](/static/img/musique/conbrioexplorer.jpg){: .thumbnail .right } +L'arrivée du froid laisse plus de place à l'écoute de musique. Moins de temps dehors, plus de temps au chaud avec le casque sur la tête. + +Le groupe revient après un premier album d'une incroyable qualité et une notoriété de groupe live acquise à juste titre. Explorer est le nom de ce deuxième opus et il porte bien son titre tant, à la première écoute, l'univers musical soûl/funk du groupe parait changé. + +Le son se veut plus _moderne_, dans l'air du temps avec pas mal d'électronique et les mélodies ont un aspect plus pop et normé. + +**Con Brio** ne perd pas pour autant son charme du premier album et on ressent tout au long de l'écoute l'influence sous-jacente qui n'est jamais loin. Rien que sur le premier morceau _Saddle Up_ les premières notes de guitares nous mettent dans le bain et les cuivres finissent le boulot, accrochant définitivement l'auditeur pour un voyage musical. + +_Heart shaped box_ est une reprise de grande classe, changeant totalement le spectre du morceau originel de **Nirvana**. Les derniers morceaux reviennent vers du funk/soûl comme on pouvait en trouver sur le premier album. + +*Explorer* porte bien son nom et nous emmène dans un univers inhabituelle pour le groupe. Pari réussi et les prestations live s'annoncent très intéressantes tant le groupe déploie tout son potentiel lorsqu'il est sur scène. + +[Con Brio - Too Lit 2 Quite // Live at North Sea Jazz Festival](https://www.youtube.com/watch?v=l8ghOprNhrA) + + +## The Pineapple Thief : Dissolution + +![The Pineapple Thief - Dissolution](/static/img/musique/thepineapplethiefdissolution.jpg){: .thumbnail .left } +Groupe totalement inconnu et pourtant il s'avère être actif depuis 1999 avec un bon nombres d'albums sortis. + +Du rock progressif dans la veine de *Steven Wilson*, c'est calme et mélancolique. Le son est très bien travaillé, mention spéciale pour les guitares qui, il faut le signaler, ont ici trouvé le juste milieu entre distortion et netteté. + +Pas de structures complexes ici, ni même de multiples nappes confuses d'instruments. Non, avec *Dissolution* le groupe propose une musique épurée, accessible bien que progressive. + +[The Pineapple Thief - Try As I Might](https://www.youtube.com/watch?v=-yBCcT3L2e0) + +## Gojira - The Way of all flesh + +![Gojira - The Way of All Flesh](/static/img/musique/gojirathewayofallflesh.jpg){: .thumbnail .right } +Recemment j'ai fait le ménage dans la musicothèque sur mon PC et en nettoyant les artistes et albums qui ne m'intéresse plus je suis retombé sur **Gojira**. Fleuron du métal français le groupe produit un death métal moderne où il ne suffit pas de frapper comme un malade sur sa batterie et de balancer des riffs le plus rapidement possible en +hurlant comme un dératé. + +_The Way of All Flesh_ est l'album qui m'a fait découvrir le groupe, je crois d'ailleurs que j'avais écouter un morceau dans un CD demu magasine Hard Rock.Celà faisait très longtemps que je n'avais pas écouter cette galette et c'est toujours un plaisir. + +Le son est puissant, travaillé tout en laissant pourtant surgir cette brutalité sans artifice. Les compositions sont d'une qualité impréssionnante, fleurtant parfois vers un côté progtessif que je ne saurais regnier. Le jeu de batterie est à couper le souffle, à mille lieux des stéréotypes du métal. Tantot tribal, tantot mechanique, le tempo est donné et c'est un album que je vous conseille vivement. + +[Gojira - Oroborus](https://www.youtube.com/watch?v=2o_MPASoLC4) diff --git a/pages/blog/2018/14-orgcapture-android.md b/pages/blog/2018/14-orgcapture-android.md @@ -0,0 +1,49 @@ +title: Org-Capture sous Android +date: 2018-11-16T00:00:00+01:00 +tags: [Emacs, Android, Termux] + +Toujours envoûté par _emacs_, l’interaction devient de plus en plus fluide, mon cerveau commence à sortir les raccourcis claviers intuitivement. Sous Linux c'est déjà top et depuis peu je l'utilise également sous Android sur mon téléphone et ma tablette. Un éditeur plus que puissant dans la poche, et puis _org-capture_ et ça, c'est chouette. + +Pour ceux qui ne connaissent pas, [Termux](https://termux.com/) est une application _Android_ officiant comme un émulateur de terminal avec une belle collection de paquets **Linux**. On peut y faire beaucoup de choses : éditer des fichiers avec `nano`, musique avec `mpd`, IRC avec `weechat`, du `ssh`, du `python`, gérer ses dépôts avec `git` et bien évidement `emacs`. + + +## Termux-url-opener + +En premier lieu il faut créer un fichier `~/bin/termux-url-opener` qui sera utilisé par _termux_ pour ouvrir les liens que les autres applications lui envoient. Pour ma part j'ai piqué un exemple sur le net que j'ai modifié pour qu'il puisse me proposer _org-capture_. + +``` +#!/data/data/com.termux/files/usr/bin/bash + +link=$1 + +echo "What should I do with $link ?" +echo "c) Org-capture" +echo "l) Capture links" +echo "x) nothing" + +read CHOICE +case $CHOICE in + c) + emacsclient org-protocol://capture? + ;; + l) + emacsclient "org-protocol:/capture?template=p&url=$link&title=$link" + ;; + x) + echo "Bye" + ;; +esac +``` + +On remarque donc qu'en appuyant sur `l` L’URL sera transmise à emacs, me permettant de sauvegarder le lien rapidement. L'option `c` me permet juste d'aller sur le menu de sélection de templates `org-capture` depuis n'importe quelle application en partageant vers `termux`. + + +## termux-boot + +Ensuite vient le cas du chargement d'emacs qui peut s'avérer assez long (quelques secondes). pour éviter cela il est possible de lancer `emacs --daemon` pour ensuite se connecter rapidement avec `emacsclient -c`. + +Il suffit de créer un fichier d'installer [Termux:Boot](https://wiki.termux.com/wiki/Termux:Boot), de créer un fichier dans `termux/boot/` et y placer `emacs --daemon`. Ainsi au lancement du smartphone emacs se lancera en mode daemon. Notez cependant que l'OS peut entrer en veille profonde avant de lancer le script et donc tout faire capoter. Il suffit d'ajouter `termux-wake-lock` au script pour empêcher la mise en veille au démarrage. + +Cependant tant que `termux-wake-lock` est activé le téléphone ne rentrera pas en sommeil profond et l'impact sur la durée de vie de la batterie se fera sentie. Il suffit alors d’appuyer sur `release wakelock` dans la notification termux. J'ai essayé de caser `termux-wake-unlock` dans le script, sans succès. + +Voilà maintenant org-capture est disponible sous Android et la sauvegarde de liens bien organisée devient un jeu d'enfant. diff --git a/pages/blog/2018/15-alzheimer-prendre-soin-sans-oublier.md b/pages/blog/2018/15-alzheimer-prendre-soin-sans-oublier.md @@ -0,0 +1,47 @@ +title: Alzheimer, prendre soin sans oublier +date: 2018-11-20T00:00:00+01:00 +tags: [Aidesoignant, Sante] + +_Ce billet ne parlera que des EHPAD publics et de mes expériences. Le privé est une aberration sans nom, une honte pour la dignité des résidents et un contre-sens total sur la vocation de soignant._ + +Alzheimer, un nom dont on parle de plus en plus souvent, car la maladie se déclare de plus en plus et de plus en plus tôt. À ce jour on comptabilise ~900 000 malades de la mémoire. L'impact de la maladie sur ces personnes varie mais, il arrive parfois un moment où la possibilité de rester à la maison n'est plus possible. Soit les malades ne peuvent plus du tout assurer une vie quotidienne en toute sécurité soit, et c'est un critère assez répandu, les aidants sont à bout et ne peuvent plus s'occuper de leur parent. + +Cet épuisement est **normal** car, la maladie d'Alzheimer est cruelle. Elle renvoie le plus souvent un inversement des statuts familiaux. Là où l'oublie apparaît, le fils peut devenir le père pour un père qui ne se rappelle plus avoir d'enfant. Cette maladie perturbe tout une structure établie, redistribue les cartes. De plus, bien qu'il y ai des points communs, des ressemblances entre les malades de la mémoire on remarque tout de même que la maladie s'exprime différemment chez chaque individu. + + +## Déni + +Une des choses compliquées avec cette maladie de la mémoire est qu'il faut souvent faire face au **déni**. Celui de la personne atteinte en début de maladie, masquant les troubles pour ne pas faire apparaître au grand jour la maladie. Celui des familles par la suite, refusant d'accepter ce que leur parent est devenu, ou plutôt ce que la maladie a modifié en lui. Et le plus souvent avec un malade cachant le réel avancement de la maladie, lorsque la famille remarque qu'il y a quelque-chose qui cloche c'est le plus souvent trop tard. La maladie est déjà présente depuis des années et son statut neurodégénératif fait qu'elle ne pourra être stoppée. Peut-être retardée si prise à temps mais ce n'est qu'une situation optimale. + +Lorsque la maladie dépasse les aidants le parent est ainsi pris en soin par une institution. Il est important de préciser que le malade de la mémoire peut, selon l'impact qu'a sa maladie sur lui et les autres, rentrer en EHPAD dans une unité _classique_. Où, lorsque la maladie présente un danger pour la personne ou l'entourage, les **UHR** (unité d’hébergement renforcée) peuvent être une solution d'accueil en phase aiguë.<br /> +Dans ces unités spécifiques la personne y trouvera du personnel formé, des structures adaptées pour prendre en soin et stimuler ses fonctions résiduelles. + + +## Des petits rien pour stimuler + +Faire de grands projets pour un malade de la mémoire est le plus souvent quelque-chose d'irrationnel. Là où la dégénérescence peut être atténuée se trouve dans la capacité à entretenir la mémoire résiduelle (odeur, mécanique etc) et à stimuler la mémoire procédurale pour recréer des automatismes.<br /> +Installer le nécessaire de toilette toujours de la même façon, inscrire un ordre dans le déroulement du soin permet, selon l'avancement de la maladie, de créer un automatisme, des mouvements répétés, sans réfléchir. + +Un malade de la mémoire n'est pas forcément incontinent par exemple, seulement il ne sait, ne comprend plus à quoi servent les toilettes ou bien exprimer l'envie d'éliminer. La mémoire procédurale permet d'essayer de faire entrer ce geste comme une habitude, un geste automatique. _(Ce dernier paraissant logique pour un cerveau non atteint ne l'est pas forcément pour un cerveau endommagé)_ + + +## Une chute inéluctable + +Et la partie la plus dur sans doute est le côté neurodégénératif de la maladie qui, pour le moment, ne peut qu'être ralentit et non enrayé. + +Il y a des moments durs à voir d'un point de vue humain. Le regard _vide_ et fixe d'une personne est quelque-chose qui me rend instantanément triste. L'incompréhension dans l'échange est une source d'angoisse profonde pour le malade de la mémoire, pouvant parfois exprimer les choses dans un cadre différent que celui qui entend. Une douleur peut se manifester par une marche incessante, une constipation par de l'agitation et de la confusion. + + +## Ne pas oublier la personne derrière + +Il y a ceux qui parcourent 30km par jours, infatigables marcheurs en quête d'une chose qu'eux seul peuvent expliquer sans réussir à l'exprimer. Ceux qui oublient sans cesse, n'enregistre plus et angoisse, angoisse. Ceux qui ne reconnaissent plus leur entourage, qui ne reconnaisse plus cette vieille personne dans le miroir alors que leur esprit leur renvoie un âge bien inférieur. Ceux chez qui la maladie n'a pas tout emporté et qui, dans de brefs moments, se rendent compte de leur maladie et de ses répercussions. Là aussi c'est une chose dur à voir.<br /> +Cet homme qui ne devrait pas être à la retraite et qui, pourtant, est bien devant toi quand tu arrives dans l'unité. Cet homme qui souffre, qui se renferme pour ne pas faire souffrir ses proches. Cet homme qui, tu le sais, ne remontra pas la pente et qui sans accepter ton aide verra sa maladie progresser bien plus vite que tu ne peux l'imaginer. + +Et puis il y a ces moments où toi, soignant, tu te poses et observes. Tu regardes une quinzaine de personnes dans une même pièce, marcher seuls, sans attaches. Tu regardes cette multitude de vies, d'histoires,de liens coupés avec le monde se mouvoir devant toi, sans avoir ce réflexe de discuter, de créer du lien. Alors tu t'assois avec eux, tu sers un café pour remémorer les bons souvenirs, tu parles de la pluie, du beau temps, tu stimules ce reste de mémoire qui leur ai inaccessible sans aide extérieur. + +Tu entends la personne délirer et parler d'une époque révolue, tu ne casse pas ce délire _innoffencif_ non, tu essaies plutôt de lancer des accroches pour ramener la personne à revenir doucement à la réalité en stimulant sa mémoire. Tu ne t'énerves pas quand une personne malade te repousse alors que tu essaies de palier à son incontinence non, car tu sais au fond de toi que la personne ne te repousse pas **toi** mais plutôt ce geste **intrusif** qu'elle ne **comprend plus**. + +Tu essaies de te renseigner sur cette vie passée, partiellement oubliée pour en tirer des informations qui te seront utile dans la prise en soin. Tu te rends le plus disponible, sans pression ni tension car tu le sais, les malades de la mémoire sont de vrais éponges et, si tu es énervé, stressé, alors eux le ressentiront et réagiront à ces émotions. + +Prendre soin des malades de la mémoire, dans un exercice professionnel, est une des choses les plus intéressantes qu'il m’aie été donné de faire dans ce métier. Et si déjà vous partez du fait que la maladie, au vue des recherches actuelles, ne peut être guéri votre rôle est très simple :<br /> +_Restaurer ou maintenir l'autonomie et assurer que la personne vive décemment, jusqu'à la fin inéluctable en prenoin soin que la personne ne souffre pas par votre faute._ diff --git a/pages/blog/2018/16-orgmode-config-emacs.md b/pages/blog/2018/16-orgmode-config-emacs.md @@ -0,0 +1,40 @@ +title: Org-Mode et configuration d'emacs +date: 2018-11-21T17:00:00+01:00 +tags: [Emacs, Orgmode] + +Emacs est un logiciel utilisant le langage de programmation `lisp` et tout fichier servant à le configurer est écrit en `.el` bien naturellement, mais pas seulement. + +Ce qui est génial avec emacs c'est **Org mode**, outil à tout faire, et il est possible décrire son fichier de configuration général (_init_) en utilisant Org mode pour ainsi bénéficier de tous ses avantages de mise en forme. + +On appelle cela de la _programmation lettrée_ et je dois bien avouer que pour un non-programmeur c'est une chose absolument géniale. Non seulement _Emacs_ se veut être une machine personnalisable à souhait mais la possibilité de le faire en détaillant en prose absolument tout ce que l'on veut est génial pour s'y repérer et pouvoir rapidement comprendre à quoi serve les lignes de codes ajoutées. + +Ces dernières doivent être contenues dans un bloc `SRC` (rapidement mis en forme avec `<s` auquel il suffit de rajouter la langue `emacs-lisp`. + +``` +#+TITLE: Emacs config +#+AUTHOR: Justin Bridouz +#+PROPERTY: header-args +#+STARTUP: overview + +* Package +** Set package repositories + +#+BEGIN_SRC emacs-lisp + (package-initialize) + + (add-to-list 'package-archives + '("melpa" . "https://melpa.org/packages/")) + + (when (not package-archive-contents) + (package-refresh-contents)) +#+END_SRC +``` + +Avec **Org-Mode** il est possible de structurer son document avec des en-têtes `*`, pratique pour organiser son fichier de configuration. Le mien par exemple est structuré de la sorte. + +pour cela j'ai créé un fichier `config.org` dans le dossier `.emacs.d` avec ma config structurée avec _Org mode_ puis mon fichier `init.el` contient : + +``` +(org-babel-load-file +(expand-file-name "config.org" user-emacs-directory)) +``` diff --git a/pages/blog/2018/17-git-hook-blog.md b/pages/blog/2018/17-git-hook-blog.md @@ -0,0 +1,35 @@ +title: Git-hook et blog +date: 2018-12-17T18:30:00+01:00 +tags: [ Trucs, Zola] + +Le procédé de publication d'un blog ne doit pas être fastidieux +sous peine de gâcher l'écriture et son plaisir. J'utilise **Zola** comme générateur statique pour mon blog et le tout est versionnée avec *git*. Du coup à chaque commit envoyé sur mon serveur le script suivant est exécuté. + +``` +#!/bin/bash + +export GIT_WORK_TREE=/home/git/blog + +echo `pwd` +echo "Generating site with Zola" + +mkdir -p $GIT_WORK_TREE +chmod 755 $GIT_WORK_TREE + +git checkout -f master + +rm -rf $GIT_WORK_TREE/public +cd $GIT_WORK_TREE && zola build +cd $GIT_WORK_TREE/public && ln -s rss.xml index.xml +find $GIT_WORK_TREE/public -type f -print | xargs -d '\n' chmod 644 +find $GIT_WORK_TREE/public -type d -print | xargs -d '\n' chmod 755 + + echo "All done!" +``` + +Il supprime le blog et me régénère, applique les bonnes permissions et rajoute un lien symbolique vers l'ancienne adresse du flux rss histoire que ça ne casse pas tout à chaque changement de générateur. + +Il est possible de faire cela avec des forges comme *Gitlab* ou *Gitea* tout comme il est possible de le faire en utilisant **git** sans ces interfaces. +Pour cela il suffit de créer un fichier `post-receive` dans `$VOTRE_DÉPÔT_GIT/hooks/` et le tour est joué. + +Écriture, commit, push et basta. diff --git a/pages/blog/2018/18-voidlinux.md b/pages/blog/2018/18-voidlinux.md @@ -0,0 +1,63 @@ +title: Void Linux, la légèreté véloce +date: 2018-12-20T12:00:00+01:00 +tags: [Linux] + +Dans le monde linux j'affectionne tout particulièrement deux courants. Le premier se veut vraiment orienté sur le confort d'utilisation pour une personne lambda avec une interface graphique propre, fonctionnelle, une distribution plus que stable qui permet à une personne sans connaissance d'utiliser son OS simplement et sans soucis. Le deuxième est destiné aux utilisateurs souhaitant jouer avec le système et permet de créer un environnement propre à chaque utilisateur. Tout ou presque est à paramétrer selon l'utilisation que l'on souhaite faire de son OS. + +Ainsi j'utilise deux distributions : **Solus** dont je parle régulièrement et plus récemment **Void**. + +J'en entends parler depuis quelques mois mais je ne pensais pas qu'elle avait autant de bouteille. Sa date de création remonte à 2008, par *Juan Romero Pardines* qui auparavant développait pour *NetBSD*. Au vue du nombres de logiciels disponibles dans les dépôts nul doute qu'elle a fait du chemin depuis, et qu'elle a l'air d'avoir un build system plus que robuste avec de l'optimisation et plusieurs architectures disponibles. **Void** vient également avec son outils d'empaquetage maison *xbps* et est une distribution *rolling-release*. + + +## L'installation + +L'image de base pour l'installation fait ~350MO, et s'installe en 5 minutes montre en main. L'installateur, justement, est en mode texte et est d'une grande clarté, il fait le job sans sourcilier. Nul besoin de déjà se compliquer la vie à l'installation de l'OS comme peut le faire *Arch*. On peut vouloir se configurer un OS aux petits oignons sans pour autant se taper l'installation basique. (**OpenBSD** permet également d'installer sa base en un rien de temps.) Très bon point donc. + +Au premier redémarrage je suis surpris par la vitesse de boot de l'OS. Je gagne facilement ~8 secondes par rapport à un OS utilisant systemd. Avec l'image de base je tombe sur la ligne de commande. Ensuite libre à chacun d'installer ce qu'il souhaite. + +Des images avec *xfce*, *lxde*, *lxqt*, *enlightement*, *mate ou encore *cinnamon* sont disponibles et allant de 650 à 850MO. Personnellement j'ai testé l'image *xfce*, le look est classique, sans fioriture et on retrouve ce DE tant aimé sans la moindre fausse note. À noter que si l'on veut installer l'OS avec l'une de ces images il fait passer par la ligne de commande pour lancer `void-installer`. + + +## Runit + +**Void** n'utilise pas *systemd* et lui préfère *runit* un système d'init plus léger qui fonctionne essentiellement à base de liens symbolique. Pas de possibilité de lancer les services par utilisateurs, ici on s'occupe des services de fond pour l'OS dans sa globalité. + +Je trouve que ce système d'init est vraiment pas mal. Il fonctionne efficacement et simplement, les liens symboliques sont rapides à mettre en place. + + sudo ln -s /etc/sv/*** /var/services/ + +les arguments `start`, `status` et `stop` peuvent être utiliser pour gérer les différents services. + +Pour le moment pas de gestion de service par utilisateur, cependant cela est tout de même possible après deux, trois bidouilles. + + +## Musl + +La distribution propose deux choix pour libc , *glibc* et [*musl*](https://www.musl-libc.org/). + +Je n'y connais pas grand chose mais de ce que je lis **Musl** est une alternative à **Glibc** +se voulant mieux écrite et plus sécurisée. +Firefox marche, feh, zathura, transmission également. Je n'ai rencontrer des soucis que lors de tests avec Qupzilla où le moteur de rendu QtWeKit plantait joyeusement. Le problème est identifié et des développeurs travaillent dessus. + +En revanche Musl ne peut, pour le moment, gérer les différentes langues du système via *local* ce qui fait que l'on se retrouve avec un OS forcément en anglais. Ce n'est pas rédhibitoire mais bon à signaler. + +## Bilan + +Pour le moment je trouve tout ce dont j'ai besoin, même des outils plus *BSD* comme **stagit** sont de la partie. Niveau DE on retrouve les plus connus *Gnome*, *KDE* ou encore *Xfce*, du côté des wm il y a également du choix. Et niveau logiciels on retrouve tous les cadors autant niveau GUI que CLI. + +**Xbps** fait le boulot pour installer, supprimer et rechercher. le processus est limpide et plus que rapide. + +le système d'empaquetage semble plus que roder et simple à prendre en main. Des outils maisons sont mis à disposition pour simplifier le processus et les environnements de builds type *cmake*, *go build* ou encore *python3*. Il est possible de contribuer au dépôt via *Github*, J'espère que **Void** continuera de grandir et que son infrastructure migrera un jour vers autre chose que Github, mais pour le moment ça tourne vraiment bien et l'équipe est plus que réactive pour modérer les PRs. + +Je suis agréablement surpris par cette distribution qui se révèle être une très bonne distribution pour du *sur-mesure*. Je tourne actuellement avec **bspwm** (config piquée [ici](https://github.com/addy-dclxvi/void-bspwm-dotfiles)) et beaucoup d'outils en ligne de commande (*zathura* pour le pdf, *feh* pour les images, *ranger* comme gestionnaire de fichier). Ça tourne plus que bien sur mon vieux pc portable sans pour autant trop solliciter le cpu et me déclencher le ventilo de la mort (marque déposée). Scanner et imprimantes fonctionnent sans soucis également. + +**Runit** apporte un gestionnaire init plus que simple et léger, et la quantité de paquets disponibles dans le dépôt est un réel plus. Nul de besoin de passer par un *AUR* pouvant s'avérer source de problèmes. + +Si l'aventure vous tente je recommande chaudement. + + +--- +Liens: + - [Void Linux](https://voidlinux.org/) + - [Musl](https://www.musl-libc.org/) + - [Solus](https://getsol.us/) diff --git a/pages/blog/2018/19-ecrire-prose-emacs.md b/pages/blog/2018/19-ecrire-prose-emacs.md @@ -0,0 +1,78 @@ +title: Écrire de la prose avec Emacs +date: 2018-12-23T09:00:00+01:00 +tags: [Emacs, Ecriture] + +N'étant pas un développeur/codeur/admintruc je n'utilise que très rarement **emacs** pour écrire du code. J'écris principalement de la prose et j'aime avoir un environnement d'écriture propre et complet. + +Voici donc ce que j'utilise pour écrire. + +J'ai dans un premier temps essayer `vim` que j'ai très rapidement abandonné car bien que léger, je ne le trouvais pas intuitif pour l'écriture et il me manquait deux ou trois fonctionnalités par rapport à `emacs`. L'édition modale peut avoir son intérêt et je pense que je reconsidérerai la question une fois vraiment à l'aise avec `emacs` en général en utilisant `evil`. + + +## Thème + +Le but ultime de l'écriture est de se créer un environnement confortable. Pour ma part cela inclue une minimum de distraction et c'est pourquoi j'ai opté pour le thème [Poet](https://github.com/kunalb/poet) où l'auteur l'a pensé tout particulièrement pour l'écriture. + +Un fond légèrement coloré, une charte graphique sobre tout en sachant mettre en relief les blocs de codes ou de citations. C'est tout ce dont j'ai besoin. + + +## Interface + +Je pourrais diviser mes phases d'écriture en deux catégories : + +- La prise de note +- l'écriture + +La première ne nécessite pas de réglage particulier hormis la fonction popup avec `org-capture` dont j'avais parlé il y a quelques jours. Sinon quand je travaille sur une formation avec un support pdf ou diapo je partage souvent mon écran en deux fenêtres pour lire et prendre des notes en même temps. + +En revanche lorsque j'écris un billet j'aime avoir **emacs** en plein écran. Le plus souvent j'écris en utilisant *org-mode* et donc mes parties sont structurés avec des headers. Le fichier comprenant les brouillons du bloc compte un billet par header de niveau 1. Parfois il m'arrive d'éditer plusieurs billets simultanément ou de vouloir me concentrer uniquement sur une partie précise du billet. Alors je split la fenêtre emacs en deux, avec un ratio 1/3. + +La partie de gauche n'affiche que les headers, un peu comme une table des matières et celle de droite affiche le header où j'écris actuellement. + +Pour cela j'utilise deux raccourcis maison et une fonction glissant automatiquement le focus sur la `frame` nouvellement créée. + +```emacs-lisp +("C-M-q" . org-tree-open-in-right-frame) +("C-M-z" . org-tree-to-indirect-buffer) + +(defun org-tree-open-in-right-frame () + (interactive) + (org-tree-to-indirect-buffer) + (windmove-right)) +``` +![Org mode Layout](/static/images/emacs/orgmodelayout.png) + +## Orthographe + +Pour la vérification orthographique j'utilise `flyspell` avec le dictionnaire `hunspell`. Là encore, et c'est bien le charme d'emacs, j'utilise deux fonctions pour l'utilisation des dictionnaires. + +```emacs-lisp +(setq ispell-program-name (executable-find "hunspell") + ispell-dictionary "fr_FR") + +(bind-key "C-c F" + (lambda () + (interactive) + (ispell-change-dictionary "fr_FR") + (flyspell-buffer))) + +(bind-key "C-c E" + (lambda () + (interactive) + (ispell-change-dictionary "en_GB") + (flyspell-buffer))) + +(use-package flyspell-correct-ivy + :ensure t + :after flyspell + :bind (:map flyspell-mode-map + ("C-;" . flyspell-correct-word-generic))) +``` + +Le plus souvent une fois qu'une session d'écriture touche à sa fin et qu'il faut alors réviser le texte. Je me concentre sur l'ortographe et avec les raccourcis `C-c F` et `C-c E` je peux rapidement activer la correction selon la langue souhaitée. Quant à `C-;`, le raccourcis permet de corriger un mot via une liste de suggestions présents dans le minibuffer via `ivy` + +![Flyspell et Ivy](/static/img/emacs/flyspell_ivy.png) + +## Grammaire + +Pour la grammaire franchouillarde c'est tout naturellement que j'utilise l'excellent [Grammalecte](https://grammalecte.net/) avec `flycheck-grammalecte`. Le plus souvent je ne le lance pas au démarrage et préfère attendre la fin d'une session d'écriture pour l'activer et corriger si besoin. diff --git a/pages/blog/2018/20-ssg-entr-bash.md b/pages/blog/2018/20-ssg-entr-bash.md @@ -0,0 +1,35 @@ +title: Ssg4, Entr et Bash Blogging +date: 2018-12-27T09:00:00+01:00 +tags: [Linux, Outils] +song: "[Steven Wilson - Arriving Somewhere But Not Here (Porcupine Tree)](https://www.youtube.com/watch?v=9TkGUbGTzoU)" + +Ouais, encore un changement, probablement le dernier pour cette année. En fait je dois bien avouer que cela faisait longtemps que je lorgnais du côté des générateurs de sites statiques relativement simple, notamment avec [swx](https://3hg.fr/Scripts/swx/). + +Et puis en faisant des recherches je suis tombé sur [ssg](https://www.romanzolotarev.com/ssg.html) qui est actuellement dans sa quatrième itération. + +> Make a static site with find(1), grep(1), and lowdown(1) + +Et là forcément ça me donne envie, un site entièrement généré avec des outils inclus d'office dans toutes les distributions Linux/BSD hormis `lowdown`, mais ce dernier se compile en une fraction de secondes et ne dépend quasiment de rien. + +De la légèreté au rendez-vous donc et c'est effectivement le cas. Ici pas de système de *tags*, *frontmatter*, *redimentionnement d'images* ou de *templating html*. Ici nous sommes sur du basique, une génération brute d'un fichier `markdown` en un fichier `html` en entourant le contenu avec un fichier `header.html` et un fichier `footer.html`. + +En fait `ssg` est tellement léger qu'il n'y a même pas de génération d'archives pour les billets, de page d'accueil avec ces derniers ou encore d'un flux rss (qui peut être généré avec un outils du même auteur [rssg](https://www.romanzolotarev.com/rssg.html)) + +Au départ je m'étais dit que j'allais tout faire à la main et puis, comme à l'habitude, j'ai changé d'avis et j'ai retroussé les manches pour pondre un truc bien crado qui fait le job. Le script génère donc une page d'archive avec l'ensemble des billets présents dans le dossier `posts`, il affiche les cinq derniers billets sur la page d'accueil et enfin il régénère le `footer` en incrustant la date et l'heure de génération. + +Avec cela j'ai également découvert l’outil `entr` qui permet de surveiller des changements dans un répertoire pour ensuite y exécuter une commande. + +``` +#!/bin/sh +cd dst && python3 -m http.server & +cd $HOME/Blog +while : +do + find . -type f ! -path '*/.*' | + entr -d "$HOME/Blog/exssg" +done +``` + +Ce minimalisme me eprmet d'essayer de bidouiller en scripts `bash` et avec 229 lignes de code pour `ssg4` et 184 pour `rssg` il y a vraiment de quoi s'amuser pour un non professionnel. + +Aurais-je finalement trouver chaussure à mon pied ? Il se pourrait bien que oui. diff --git a/pages/blog/2019/01-resolutions.md b/pages/blog/2019/01-resolutions.md @@ -0,0 +1,15 @@ +title: "Résolutions" +date: 2019-01-01T09:00:00+01:00 +tags: [Trucs] + +Comme souvent le début d'année rime avec les résolutions que l'on prend et que l'on ne tient que trop peu. Bien évidemment je ne passe pas au travers de cela et voici ma liste. + + - Réduire voir arrêter la clope. + - Reprendre la course à pied/VTT. + - Faire un potager digne de ce nom. (ÉCHEC) + - Avancer dans ma pile de lecture. + - Réparer l'ampli et me remettre sérieusement à la guitare/piano. + - Continuer à m'investir dans Solus. + - Stabiliser ma méthode d'écriture et de prise de note. + - Ne pas changer une énième fois de générateur pour le blog. (ÉCHEC) + - Écrire plus régulièrement, sur des sujets divers et variés diff --git a/pages/blog/2019/02-bloguscomicus-fables.md b/pages/blog/2019/02-bloguscomicus-fables.md @@ -0,0 +1,19 @@ +title: "Blogus Comicus: Fables" +date: 2019-01-07T09:02:00+00:00 +tags: [Comics] +song: "[Tool - Sober](https://www.youtube.com/watch?v=hglVqACd1C8)" + +Le comics, j'aime le répéter, n'est pas uniquement une affaire de super-héros. Non, en réalité et bien que ces derniers soient les histoires les plus connues de ce médium (notamment grâce à *Marvel* et *DC*) cela ne s'arrête pas qu'à cela et on retrouve beaucoup d'autres choses. + +Aujourd'hui j'aimerai vous parler de **Fables**, la création de _Bill Willingham_ +et de _Mark Buckingham_. Un série où tous les héros des contes traditionnelles évoluent dans notre monde, à l’abri des regards, devant faire faces aux aléas de la vie ainsi qu'au redoutable _Adversaire_, personnage maléfique ayant conquis les _Royaumes_ et les ayant poussés à s'exiler. + +Série parue entre 2003 et 2015 **Fables** conte 21 recueils (TPB) en VO et se voit regrouper dans de magnifiques _Intégrales_ en français par l'éditeur **Urban Comics**. De nombreuse fois primés au prix _Will Eisner_, Fables sort du lot en proposant un récit adulte des héros de notre enfance, nul besoin de connaître les personnages pour comprendre leur comportement, cependant il est intéressant de se renseigner sur les personnages que l'on découvre car il faut bien l'avouer il y en a la pelle. Leur passif est pleinement intégré dans l'histoire et on se prend au jeux de la nostalgie en se ressassant leurs aventures et en riant lors des contentieux entre personnages. + +![Fables, Snow et Bigby](/static/img/comics/fables_snowbigby.jpg) + +Niveau graphique la série bénéficie du remarquable travail de _Mark Buckingham_ pour l'histoire principale et d'une multitude d'artistes pour les secondaires. Les dessins sont somptueux, tout comme les couvertures et c'est un plaisir de voir cet univers féerique prendre vie au fil des pages. J'ai un faible tout particulier pour les ornements faisant les bordures des panels, je trouve que cela donne vraiment un charme au tout. + +Drames, humour, enquêtes, conflits, ruse et coups dans le dos. Voilà ce qui vous attend dans l'univers de **Fables**. À ce jour (janvier 2019), quatre volumes sont sorties et d'après mes calculs il devrait y en avoir 9 au minimum. Le volume vous coûtera 28 euros pour un minimum de 400 pages (histoire, recherches graphiques, couvertures des singles US). Je recommande chaudement. + +![Fables, Intégrale 1](/static/img/comics/fables_integrale1.jpg) diff --git a/pages/blog/2019/03-blogusmusicus-live-stevenwilson.md b/pages/blog/2019/03-blogusmusicus-live-stevenwilson.md @@ -0,0 +1,62 @@ +title: "Blogus Musicus, Live report Steven Wilson" +date: 2019-01-23T09:00:00+01:00 +tags: [Musique, Rock] +song: "[Porcupine Tree - Anesthetize](https://www.youtube.com/watch?v=MSEQZ8reJA4)" + +Parfois on revient à l'essentiel, on se prend de la musicalité dans la tronche et, il faut bien l'avouer ça fait un bien fou. + +Lundi soir c'était donc en allant voir **Steven Wilson** que ce shoot légal et totalement bénéfique pour la santé fut pris, en famille avec le padre. + +**Steven Wilson** c'est plus de trente ans de carrières pour un mec ayant 51 ans tout en paraissant 15 de moins. Des projets renommés comme [Porcupine +Tree](https://fr.wikipedia.org/wiki/Porcupine_Tree), ou encore [Blackfield](https://fr.wikipedia.org/wiki/Blackfield) en tant que musicien, mais aussi en tant que producteur et mixeur pour trois albums d'[Opeth](https://fr.wikipedia.org/wiki/Opeth). À partir de 2009, via son propre label ( _Headphone Dust_ ), il sort son première album solo _Insurgentes_. S'en suit alors quatre albums dont le dernier, _To The Bone_, est sorti courant 2017. + +C'est donc avec la tournée de ce dernier album que j'ai eu la chance de le voir au grand auditorium de la Cité des Congrès de Nantes. +Plus de 2h de concert, avec des titres parcourants toute sa carrière, un show rodé, énergique, allant à l'essence même du rock. Le monsieur vit pour sa musique, +interprète tous ses titres avec une passion rare. Il la transmet également par son, du pur rock en y allant franco sur sa guitare, la faisant vivre de +par ces sons qu'elle dégage tout en restant d'une rigueur remarquable au niveau du son et de l'écoute dans le groupe. + +Le reste de groupe n'est pas en reste non plus, on a d'ailleurs du mal à discerner qui est le plus doué. Un batteur monstrueux de technique au point où on ne lui +prête plus trop attention tant sa précision et ses schémas rythmiques sont adaptés aux morceaux, un claviériste sortant des sons tout droit sortie des années où _Deep +Purple_ et consorts étaient à l'affiche. Un guitariste au top, avec un jeu fluide et un sourire communicatif et un bassiste (qui se détache peut-être finalement) +démontrant qu'il est possible de maitriser à la perfection le [Chapman Stick](https://fr.wikipedia.org/wiki/Chapman_Stick) tout en assurant également des lignes de +basses absolument phénoménal. Et comme tout bon bassiste, on a l'impression que cela est facile tant la désinvolture du musicien en impose sur scène. + +Un live d'exception donc, travaillé, d'une justesse rare, éclectique à souhait et c'est ce dernier élément qui est le plus plaisant et qui révèle également tout le talent du gars. Pas de limitation à un _style_ de musique en particulier, mais plutôt un melting-pot d'influences diverses parfaitement assimilé et rendu en musique par un cinqua au sommet de son art. Un concert inoubliable tant sa musique m'accompagne depuis plus de dix ans (Merci papa, vraiment). + +Pour les amateurs, la setlist du soir (seul bémol pour ma part je suis tombé sur le soir où _Arriving Somewhere But Not Here_ n'était pas joué.) + +``` +# Setlist    + +## Set 1 + + - Intro ("Truth" short film) + - Nowhere Now + - Pariah + - Home Invasion + - Regret #9 + - The Creator Has a Mastertape (Porcupine Tree song) + - Refuge + - The Same Asylum as Before + - Ancestral + +## Set 2 + + - Cenotaph (Bass Communion song) + - No Twilight Within the Courts of the Sun + - Index + - Permanating + - Song of I + - Lazarus (Porcupine Tree song) + - Detonation + - Song of Unborn + - Vermillioncore + - Sleep Together (Porcupine Tree song) + + +## Encore: + + - Blackfield (Blackfield song) + - The Sound of Muzak (Porcupine Tree song) + - The Raven That Refused to Sing +``` diff --git a/pages/blog/2019/04-mtp-simplement-cli.md b/pages/blog/2019/04-mtp-simplement-cli.md @@ -0,0 +1,31 @@ +title: "MTP simplement en ligne de commande" +date: 2019-01-30T09:00:00+01:00 +tags: [Android, CLI] + +**MTP** c'est une bien belle connerie, un moyen de supprimer les transferts classiques via _usb_ par un protocole verrouillé et franchement pas pratique. + +Fort heureusement il est possible de l'utiliser plus ou moins convenablement avec un gestionnaire de fichier graphique (_Gnome_ ou _Xfce_ le supportent très bien, _Kde_ depuis très récemment). En revanche en ligne de commande c'est autre chose, et c'est là qu'intervient `simple-mtpfs`. + +> Pensez bien à utiliser [le fichier udev +global](https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules) répertoriant toutes les propriétés de montage des différents appareils +connus pour utiliser **MTP**. Sans ce fichier, il est possible que le +montage ne se fasse pas, surtout si vous souhaitez bidouiller de +l'auto montage. + +Le programme est écrit en `c++` et ses sources sont trouvables sur [Github](https://github.com/phatina/simple-mtpfs). Le logiciel n'a pas vu un _commit_ depuis fin 2016, mais il fonctionne toujours aussi bien, et cela sans problèmes relevés pour ma part. Le paquet est bien entendu disponible sur un bon nombres de distributions et peut se compiler très facilement sachant qu'il ne dépend que de `fuse >=2.7.3` et `libmtp`. + +Une fois le logiciel installé il est possible d'identifier les appareils +connectés à votre ordinateur avec `simple-mtpfs -l`. Le logiciel permet +de monter un appareil dans votre répertoire `$HOME`, par exemple j'ai +créé un dossier `AndroidDevice` et je monte mon smartphone dessus +lorsque j'ai besoin de l'utiliser. Pas de `sudo` ni d'emplacements +compliqués à atteindre sans permissions. +Par la suite deux solutions s'offrent à vous : + + - Vous avez **plusieurs** éléments connectés et il est alors possible +de choisir lequel vous voulez monter avec `simple-mtpfs --device +<numéro_de_l'appareil> ~/AndroidDevice1` + - Vous n'avez qu'**un seul** appareil connecté et un simple +`simple-mtpfs ~/AndroidDevice` fera l'affaire. + +Une fois que vous voulez démonter l'appareil `fusermount -u ~/AndroidDevice` sera la commande à utiliser. Le procédé est donc relativement simple finalement, d'où peut-être le nom du logiciel. diff --git a/pages/blog/2019/05-pointlinux-debut2019.md b/pages/blog/2019/05-pointlinux-debut2019.md @@ -0,0 +1,30 @@ +title: "Point Linux, début 2019" +date: 2019-02-13T18:00:00+01:00 +tags: [Linux, Solus, Gnome, Kde] +song: "[Gojira - Global Warning](https://www.youtube.com/watch?v=8DiWzvE52ZY)" + +Début d'année 2019 et voici un point sur mon utilisation actuelle de l'informatique et de Linux. + +Niveau distributions je tourne toujours avec [Solus](https://getsol.us). Toujours comblé par la stabilité et la rapidité du système. L'équipe a d'ailleurs publié en début d'année une [_roadmap_](https://getsol.us/2019/01/14/2019-to-venture-ahead/) pour 2019, beaucoup de bonnes choses à venir. + +**Budgie** est mon DE de prédilection, les logiciels _GNOME_ sont intuitifs, sans superflue et j'aime cela. Ça va droit au but, permet de faire simplement les actions de tous les jours d'un utilisateur moyen. J'attends le passage à _GNOME 3.30 / 3.32_ pour voir si le gain de réactivité apparemment apporter par ces versions s'appliquera avec **Budgie**. +Je continue à suivre _KDE_ de près car à chaque nouvelle version le DE devient de plus en plus alléchant, l'équilibre entre une multitude de fonctionnalités, des réglages par défauts adaptés à l'utilisateur lambda et une possibilité de personnalisation accrue font que _KDE_ devient réellement intéressant. + +La distribution (Solus) est maintenue par une petite équipe de passionnés, des gens œuvrant à apporter un environnement propre et agréable à utiliser. Pas le moindre bug en deux ans d'utilisation, une maj hebdomadaire le vendredi et c'est un plaisir de réactivité. Le départ du fondateur/développeur principal durant l'été 2018 aurait pu totalement chambouler **Solus** mais Josh, Bryan, Peter, Jean-Yves et d'autres ont admirablement repris le flambeau. Certes le parlé et l'hyperactivité d'_Ikey_ manqueront au paysage Linuxien, il laisse tout de même une création, une vision et c'est déjà beaucoup. + +Terminé donc la bidouille et la multitude de logiciels, retour à l'essentiel. + + - Le vénérable **Firefox** comme navigateur web + - **Gedit/LibreOffice** pour l'édition et le traitement de texte + - **Lollypop** comme lecteur audio + - **Transmission** pour le torrent + - **Syncthing/Nextcloud** pour les sauvegardes et flux _rss_ + - **Gnome-mpv** pour la lecture vidéo + +Finalement je n'ai pas vraiment besoin de plus, tout est fonctionnel, avec une prise en main relativement facile. + +Niveau blog après un bref passage avec [ssg4](https://www.romanzolotarev.com/ssg.html) je reviens avec [hugo](https://gohugo.io) (depuis ce billet). C'est complet, ça marche et surtout j'aime vraiment l'utiliser, j'y ai mes habitudes et ça tourne sans soucis. Le thème se veut minimaliste, utilise le _framework_ css [**sakura**](https://github.com/oxalorg/sakura) avec de légères modifications, un thème propre, simple et agréable. +L'auto-hébergement est toujours de mise, pas d'impact majeur sur la bande-passante à la maison, le déploiement est assuré via _git_ et un _hook_ assurant la génération automatique à chaque push. Pour ce qui est des statistiques je n'y prête que très peu d’intérêt, j'utilise cependant [_goaccess_](https://goaccess.io/) pour regarder parfois les visites sur la journée. + +Finalement _Linux_ est, je pense, vraiment devenu agréable à utiliser pour quiconque veut l'utiliser. Que ce soit avec _GNOME_ ou _KDE_, les deux poids lourds niveau DE font le taff amplement, facilitent l'utilisation classique d'un ordinateur. Les distributions les plus connues sont vraiment stables et l'offre de logiciels (tout comme leur qualité générale) s'est grandement étoffée. +Que c'est bon d'être libre.. diff --git a/pages/blog/2019/06-musique-mars-2019.md b/pages/blog/2019/06-musique-mars-2019.md @@ -0,0 +1,40 @@ +title: "Musique - Mars 2019" +date: 2019-03-27T10:15:00+01:00 +tags: [Musique, Fusion, Jazz, Folk] + + +Le troisième mois de l'année 2019 touche bientôt à sa fin, autant le finir comme il se doit. En musique. + +## Snarky Puppy - Immigrance + +![Snarky Puppy - Immigrance](/static/img/musique/snarkypuppy_immigrance.jpg) + +Nouvel album, nouvelle claque. Comme toujours Snarky Puppy est un groupe doté d'une virtuosité impressionnante. Moins de démonstration technique sur cet album, au contraire le groupe joue beaucoup plus sur l'instauration d'ambiances et une musique de groupe cohérente où chaque instrument est à sa place, mettant en avant le collectif. D'ailleurs les morceaux ont été écrits à bien plus de mains qu'à l'ordinaire et cette richesse d'écriture se ressent tout au long de l'album. On peut y déceler par-ci par-là les _sans-doutes_ influences de tel ou tel musicien. + +Taillé pour le live, qui je pense pourra offrir une dimension supplémentaire voir complètement nouvelle aux titres, l'album ébloui par son exploration renouvelée. Mention spéciale au dernier morceau, _Even Us_, petite pépite tirant son aura d'influences d'Europe de l'Est et du Moyen-Orient. + +Encore une fois le groupe livre un album de toute beauté qui, au fil des écoutes, n'en finit toujours pas de révéler ses petits secrets, ses notes disséminées l'air de rien. Une réussite qui me tarde d'apprécier encore plus en live. + +[Snarky Puppy - Chonks](https://www.youtube.com/watch?v=tmeJsETS-Yk) + +## Weend'ô - Time of Awakening + +![Weend'ô - Time of Awakening](/static/img/musique/weendo_timeofawakening.jpg) + +Un groupe français de rock progressif découvert il y a peu grâce à l'excellent [musicwaves](http://www.musicwaves.fr). Une voix féminine poétique et rafraîchissante, des musiciens sachant laisser place aux silences, ne jouant pas tous leur partie à toute vitesse. On sent ici la grande maîtrise du rythme, ça groove pas mal et c'est un plaisir pour les oreilles. Là aussi on trouve cet équilibre si précieux entre tous les membres du groupe, personnes ne prend le pied sur l'autre et cela offre un album hypnotisant, magistralement exécuté. + +Une découverte vraiment plaisante, qui sort de tous ces groupes se ressemblant les uns aux autres. + +[Weend'ô - Time of Awakening](https://www.youtube.com/watch?v=e7MJSTPRJDk) + +## David Crosby - Here If You Listen + +![David Crosby - Here If You Listen](/static/img/musique/davidcrosby_hereifyoulisten.jpg) + +Le monsieur n'est plus a présenté, véritable dieu vivant du rock/folk américain David Crosby a connu les sommets puis le vide total avant de resurgir de nul part en 2014 avec son album Croz, le premier d'un enchaînement merveilleux. Âgé de 77 ans, le musicien propose ici son septième album solo, toujours dans un style très épuré, envoûtant, et terriblement musicalement parfait. + +_Here If You Listen_ est donc son dernier album en date, écrit lors de la tournée du précédent (_Lighthouse_) et composé majoritairement à quatre ( avec Becca Stevens à la guitare, Michael League (Bassiste/Leader de _Snarky Puppy_, Crosby étant sur le label du groupe) et Michelle Willis au clavier), l'album est un exemple de cohérence, de partage. Point de chagrin ici, l'ambiance est joyeuse et empli d'espoir. On se laisse happer avec grand plaisir dans ce bonheur hors du temps que nous offre ce vieil homme qui, ayant déjà tout vécu (lisez sa biographie, le monsieur a eu plus de vies qu'un chat.), joue pleinement sa musique, sans se soucier de quoi que ce soit d'autre. Comme toujours la voix de _Crosby_ est fascinante et le travail fait sur les harmonies vocales force le respect tant l'émotion qui s'en dégage est puissante. + +Voilà pour ce mois de mars 2019, et celui qui arrive s'annonce plein de bonnes choses. + +[David Crosby - Woodstock](https://www.youtube.com/watch?v=Lp5iJGOHOlY) diff --git a/pages/blog/2019/07-mysterybox-nextcloud.md b/pages/blog/2019/07-mysterybox-nextcloud.md @@ -0,0 +1,23 @@ +title: "Mystery Box et Nextcloud" +date: 2019-04-05T10:00:00+01:00 +tags: ["Outils"] +song: "[Riverside - Out of Myself](https://www.youtube.com/watch?v=LXL_7s7T79w)" + +J'avais vu passer le concept il y a quelques temps, m'étais dit qu'il serait chouette de mettre ça en place puis, comme _trop_ souvent, mon cerveau a mis l'info de côté et est passé à autre chose. + +Bref, c'est enfin chose faite. La `Secret Box` est là. Comment ça se boutique me direz-vous, eh bien c'est très simple. + +J'utilise Nextcloud où je crée un dossier et je partage son url en spécifiant qu'il s'agit d'un partage par envoi, sans possibilité de lister les fichiers présents dans le dossier. + +![Nextcloud Mystery Box](/static/img/solus/mysterybox_sharerenamer.png) + +Rien de plus simple, et l'url qui suit vois permettra de déposer ce que vous voulez. Si vous souhaitez vous aussi avoir une url de partage propre et personnalisable il fait installer l'application [ShareRenamer](https://apps.nextcloud.com/apps/sharerenamer). + +<https://cloud.bloguslibrus.fr/s/mystery-box> + +J'aime ce concept et cela me rappelle la _mystery box_ de **JJ Abrams**. Concept qu'il expliqua dans une [conf TedX](https://www.ted.com/talks/j_j_abrams_mystery_box) et qui venait apporter des informations sur sa façon d'écrir des histoires. Selon lui le but étant de créer une zone d'ombre dans le scénario, attirant le lecteur à se poser des questions et ne jamais y répondre. + +Dans une société où on se doit de tout connaître, tout le temps, je trouve le procédé plus que salvateur. Bien sûr certains y trouveront ici un moyen peu travaillé de combler un manque scénaristique dans une histoire. Au contraire je trouve que cette **mystery box** permet de mettre en action l'imaginaire, la réflexion et le débat. Il est intéressant de noter que chaque individu peut avoir sa propre version du mystère, chaque idée étant plausible. + +La magie de la culture réside, en partie selon bibi, dans cette part de mystère insufflée dans une œuvre. Tout comprendre sans se creuser un peu la tête c'est une solution bien trop simpliste pour les humains que nous sommes. +Si l'aventure vous tente, n'hésitez pas ;) diff --git a/pages/blog/2019/08-darkestdungeon.md b/pages/blog/2019/08-darkestdungeon.md @@ -0,0 +1,31 @@ +title: "Darkest Dungeon, souffrir de jouer" +date: 2019-05-02T10:00:00+01:00 +tags: [Jeux] + +Imaginez un jeu où l'objectif est d’enchaîner les donjons par groupe de quatre héros pour, petit à petit, arriver à reconquérir le manoir familial. Facile non ? + +Rajoutez donc un peu de stress impactant les héros, leur faisant perdre la boule au point de développer des traits mentaux peu reluisants. Ça commence à se corser ? Ajoutez également la mort permanente aux héros, la reconstruction mentale coûteuse en temps et en argent puis, saupoudrez le tout de mécanismes connus des rpg avec attaques uniquement selon un placement spécifique, malus/bonus et autre résistance/faiblesse, ajoutez aussi une jauge de lumière qui influe sur le tout et vous obtenez [**Darkest Dungeon**](https://www.darkestdungeon.com/). Un bon petit jeu bien addictif et terriblement sadique. + +![Darkest Dungeon](/static/img/jeux/darkestdungeon_banner.jpg) + +Je ne suis pas un grand joueur, mais depuis quelque temps j'éprouve l'envie de jouer occasionnellement et si possible à des jeux faits par des studios indépendants, des jeux réfléchis, et durs. Des jeux mettant à l'épreuve ma logique. Celui-ci en fait naturellement partie. + +> Il faut tout de même jouer dans un environnement sécurisé si vous êtes comme moi un peu expressif dans la défaite, car avec ce jeu vous allez perdre, beaucoup, souvent, trop selon les goûts. Tout comme les héros virtuels que vous gérez, votre santé mentale sera mise à rude épreuve. + +Le principe est simple, vous gérez des héros, reposant dans un petit village où il est possible de les améliorer, de les faire se reposer pour partir à l'aventure. Les quêtes se font par groupe de quatre héros, et durant ces dernières et selon les ennemies que vous rencontrez, les pièges et différentes interactions que vous pourrez avoir ils génèrent du stress. + +Ce stress se cote sur 200, une fois passer la centaine votre héro subira une souffrance, un trouble mental néfaste. Ainsi il pourra devenir suicidaire et donc partir au combat sans vous laisser le temps de décider son action ou la refuser, il pourra perdre de la vie, reculer dans l'ordre de vos personnages. Bref selon le trouble un comportement spécifique s'appliquera. Parfois votre héros ne souffrira pas, bien au contraire, il obtiendra une vertu offrant alors un bonus pour le personnage. + +Si le stress atteint son seuil maximum le personnage subira une crise cardiaque, réduisant ainsi sa jauge de vie au néant en le faisant entrer en agonie. Là deux cas de figure se présentent, soit le personnage succombe, soit il est en sursis et chaque attaque risquera de l'anéantir, de plus des pénalités de stats viendront s'ajouter. + +![Darkest Dungeon Affliction](/static/img/jeux/darkestdungeon_affliction.jpg) + +Cet aspect du jeu est vraiment intéressant, il humanise les personnages en leur donnant des traits propres ainsi l'aventure se corse, car il faudra veiller à toujours associer environnement, quête et caractères. Et parfois le hasard fera que même un bon personnage pourra tomber en quelques combats, vous emportant avec lui dans un profond chagrin. + +Des bosses vous attendent régulièrement pour venir corser les choses et, selon les quêtes il est possible de récupérer des objets pour vos personnages en récompense. Ces objets offrent souvent des avantages précieux pour les statistiques et, bien souvent, un malus viendra également avec l'objet forçant le joueur a bien réfléchir à sa stratégie. + +Le jeu est sorti en janvier 2016 et compte à ce jour 4 dlc venant apporter des lieux, ennemies, héros, et mécanismes nouveaux. Pour le moment je n'y ai pas touché et suis l'aventure basique. Si vous avez envie de voir quelques images du jeu, leur site permet de se faire un avis avec [un bon nombre de capture d'écran](https://www.darkestdungeon.com/media/#screenshots). + +**Darkest Dungeon** est donc un jeu éprouvant pour le joueur, l'impliquant dans son aventure, l'invitant à vivre des moments difficiles comme des moments de joie (obtenir une vertus lorsque le stress atteint les 100 points, c'est toujours un grand moment de soulagement). + +![Darkest Dungeon Virtue](/static/img/jeux/darkestdungeon_virtue.jpg) diff --git a/pages/blog/2019/09-jeneconnaisplusmonnom.md b/pages/blog/2019/09-jeneconnaisplusmonnom.md @@ -0,0 +1,43 @@ +title: "Je ne connais plus mon nom" +date: 2019-05-06T10:00:00+00:00 +tags: [Aidesoignant, Vie 1.0] + +> Billet faisant partie d'un diptyque avec [Je suis là pour toi](/blog/2019/10-jesuislapourtoi). + +Cerveau off/on, j'ouvre les yeux. Incapable de savoir l'heure qu'il est. La pièce me paraît familière, mais je ne pourrais dire où je suis. Je regarde autour de moi, il y a une porte. Je l'ouvre et je sors dans le couloir. Je marche, me saisis d'objets à l'abandon sur une table. J'arrive dans une grande salle, au loin je distingue un garçon habillé en rose avec, mon coeur se met à battre la chamade, de la nourriture. + +Il me regarde, me sourit, me dit quelque-chose en levant sa main face à moi. Il commence à brasser de la nourriture, je le regarde, avec envie, ça a l'air bon tout cela. Oh ! Il m'apporte une assiette. Merci lui dis-je en avalant mon jus d'orange à toute vitesse. + +L'assiette finit je relève la tête, où suis-je ? Je me lève et je commence à marcher. La porte a l'air fermé, je repars dans l'autre sens, je rentre dans des pièces où des gens sont allongés dans un lit, faisant un bruit de gens qui dorment. Je rentre dans une autre chambre, la personne allongée dans ce lit ne dort pas, elle crie. Mais pourquoi crie-t-elle comme cela, j'essaie d'en faire abstraction et je continue de farfouiller ce meuble rempli de trésor. +Un garçon en rose rentre alors dans la chambre, peut-être que lui aussi il en a marre d'entendre ce monsieur crier. Il se tourne vers moi, me parle. Une autre langue probablement. Il me passe le bras autour des épaules et m'invite à le suivre en dehors de la chambre. Pas sympa ça, je râle un peu et je le suis. + +Où suis-je ? Le garçon m’emmène dans un dédale, je le suis, lui prend la main pour me rassurer. Dans la pièce où il m'emmène il y a quelque-chose de familier, avec un trou et de l'eau en son centre. J'inspecte les lieux, me saisit d'un petit rectangle assez doux, le monsieur est toujours là, sa bouche bouge mais impossible de comprendre ce qu'il dit, à qui parle il. Moi ? Je lui réponds quelque-chose, on verra bien. + +Tout en parlant, l'homme commence à enlever mes vêtements, des images me reviennent, je n'aime pas ça. Alors je dis "Non !" puis "NON ! STOP !". L'homme arrête, me prend la main délicatement, me regarde dans les yeux, fredonne quelque-chose. Oh de la musique, j'aime cela moi. + +Bon, je n'aime pas être à moitié nu devant quelqu'un, ce dernier me touchant avec de l'eau et du savon. Une fois habillé c'est déjà mieux. + +Nous ressortons de cette pièce, je me saisis de quelques biblos laissés ici et là, le monsieur m'invite à manger un petit truc tout rond, couleur chocolat au lait. Impossible de savoir ce que c'est, mais que c'est bon. + +Où suis-je ? Cette pièce me parait familière, il y a pas mal de personnes ici, je marche, les regarde, je dois marcher car j'ai du travail. Oh ! Du pain posé sur le bar, et hop ça c'est pour mon estomac. Je marche, encore et toujours, je dois marcher, je le sens. + +Les personnes dans la salle sont maintenant toutes assises et, l'homme en rose, il commence à me faire des signes et me montre un objet semblable à ceux qu'ont les autres personnes sous leurs fesses. Je m'approche, m’assieds à mon tour. Il me donne une serviette, je croque dedans, ça ne vient pas. +Il installe un grand rectangle rouge devant moi, un verre et des machins couleurs métal que j'utiliserai pour manger. Mais entre nous je n'ai jamais compris comment cela fonctionnait alors j'utilise mes mains, plus rapide, plus facile. + +Ah ! Que je n'aime pas être assis, il semblerait d'ailleurs que je ne puisse pas sortir, le fauteuil ne bouge pas. J'essaie encore une fois et si ça ne marche pas je mangerai ce qu'il y a dans mon assiette. + +[...] + +Je me réveille brutalement, où suis-je ? j'essaie de me lever, réflexe. Je commence à marcher, je ramasse des objets laissés à l'abandon sur la table proche de moi. Un bloc de feuilles assemblées les unes aux autres, des serviettes, un de ces machins en métal. J'essaie de porter cela à ma bouche. C'est dur comme du fer, impossible à manger. + +Je marche, encore et toujours, je pénètre dans une pièce. Il y a beaucoup de personnes en roses, ça parle, ça rigole, ça vit. Je fais le tour de la pièce, je repère un homme, en rose lui aussi, je m'approche vers lui, résiste à la tentation de prendre cette tasse qui m'appelle sur le trajet, je luis pose ma main sur son épaule et dit : + +> " Ouais... Oh ! Tu vois là, y'a pleins de tibikodu plabsdatroptruc." + +L'homme semble les voir lui aussi, il suit mon doigt du regard et me montre également la même-chose. Ouf, je suis rassuré, je pensais que j'étais le seul à les voir. + +L'homme se lève, me tent la main, je lui serre. Il me regarde dans les yeux, avec un sourire qui fait plaisir à voir. Me souhaite un bon après-midi et me dit à demain. + +Qui est-ce ? Pourquoi demain ? Et moi d'ailleurs, comment je m'appelle, qu'est-ce que je fous là. Je commence à sangloter, pleurer, lui serrer la main de plus en plus fort, pour me raccrocher à la vie, au présent. + +L'homme commence à avoir les yeux humides, il me prend dans ses bras, me masse les épaules, prononce un prénom qui me fait croiser son regard. Il me semble que c'est le mien, ou peut-être pas. Je me saisis d'un bout de pain traînant sur la table et je m'en vais. Je marche, encore, toujours, pour vivre, pour survivre, seul, dans un monde inconnu où, tout de même, des phares sont là pour me guider. diff --git a/pages/blog/2019/10-jesuislapourtoi.md b/pages/blog/2019/10-jesuislapourtoi.md @@ -0,0 +1,44 @@ +title: "Je suis là pour toi" +date: 2019-05-06T10:00:00+00:00 +tags: [Aidesoignant, Vie 1.0] + +> Billet faisant partie d'un diptyque avec [Je ne connais plus mon nom](/blog/2019/09-jeneconnaisplusmonnom). + +Je me lève, 5h. Un café vite avalé, un coup d'eau sur la tronche, un rapide tour du web pour lire deux ou trois informations et hop, dans la voiture direction le boulot. Musique à fond, sinon autant ne pas en écouter, pas le choix de toute façon il faut bien réveiller le bonhomme. + +6h30, l'équipe de nuit laisse sa place à l'équipe du matin, les transmissions orales se font. +6h45, le café est à couler, je prépare le petit-déjeuner pour les résidents. + +Ça ronfle ce matin, pas grand monde de lever. Je prépare deux petit-déjeuner et je prends un café avec une résidente. Un résident arrive, pieds nus, en pyjama. Je lui souris, le salut de la main et l'invite à venir prendre le petit-déjeuner. Il arrive face à moi, je lui prépare ses tartines de pains, lui sert un café. +Il me regarde avec envie, ses mains ne tiennent pas en place, la tentation est trop fort. L'assiette est prête, je l'invite à s’asseoir et savourer ce petit déjeuner. Il me sourit, me dit merci et enfourne un premier morceau de tartine dans sa bouche en disant " Mmmh, oh oui, ça c'est bon." + +Je m'occupe d'autres personnes puis, au détour d'une chambre j'entends un résident crier. + +> SORS DE MA CHAMBRE ! WHOOOOOOOOO! Y'A QUELQU'UN DANS MA CHAMBRE ! + +J'y vais, vois le monsieur de ce matin, en train de toucher aux objets sur le meuble TV de l'autre personne, je l'invite à sortir, il ne comprend pas, s'en moque royalement, je lui prends le bras et l'invite alors à me suivre. + +Il me fait un sourire puis me suis, m'accompagne dans ma déambulation intentionnelle. Je l'emmène vers sa chambre, ouvre la porte de la salle de bain puis, une fois le nécessaire de toilette sorti, l'invite à se dévêtir pour se laver. +Comme à son habitude, ce moment le gène au plus au point, il manifeste verbalement son mécontentement. Je lui prends la min et commence à fredonner une chanson qu'il affectionne. Le déclic est là, l'appréhension est mise de côté et je peux alors prendre soin de lui, sans lui faire du mal. + +Je sors un chocolat, qu'il prend un malin plaisir à contempler, manipuler, avant de l'envoyer dans sa bouche pour, je l'espère, un bonheur gustatif. + +Une fois le soin terminé je m'en vais vers d'autres personnes, en prenant le soin de disposer des morceaux de pain un peu partout dans l'unité, sur des points stratégiques de ses déambulations. + +La matinée passe vite et l'heure du repas approche. J'invite les gens à s'installer, repère mon marcheur invétéré au loin en train de … marcher. Je prépare un fauteuil que je pourrais bloquer par la suite pour lui offrir, un peu malgré lui je l'avoue, un temps de repos bénéfique pour lui. Il arrive, s'installe au fauteuil. Je dispose un tapis antidérapant devant lui avec assiette, couverts et verre d'eau. +Les couverts sont futiles ici, ne servent qu'à plaire à la hiérarchie, car le monsieur n'arrive plus à s'en servir, ne comprend plus comment. Alors l'instinct humain utilise ce qu'il connaît, ses mains. Ce n'est pas dérangeant, le monsieur mange à sa faim, prend du plaisir et porte une serviette de table. Alors pourquoi lui priver ce plaisir. + +À la fin du repas je regarde ce monsieur s'assoupir et partir paisiblement dans les bras de Morphée pour quelques minutes. Que c'est bon de le voir calme comme cela, les trais du visage sont détendu et sa panse, quant à elle, bien remplie. + +Je pars dans la salle de pause pour les transmissions avec l'équipe d'après-midi. La porte est toujours grande ouverte car il est important de pouvoir offrir des repères aux personnes désorientées. Le monsieur arrive, comme à son habitude. Il regarde avec envies les tasses de café sur la table puis s'avance vers moi, pointe quelque-chose dehors que seul son esprit peut voir et expliquer puis il dit: + +> " Ouais... Oh ! Tu vois là, y'a pleins de tibikodu plabsdatroptruc." + +Je le regarde, sourie, intérieurement je sais que c'est un appel à l'aide, une demande d'affection masquée. Alors je suis son doigt, regarde à mon tour dehors, hoche la tête pour valider ses émotions, son message. Son visage se détend. + +L'heure est arrivée de rentrer à la maison, je me lève, lui tent la main et lui serre avec toute la compassion restante après 8h de travail. Je lui souhaite un bon après-midi et lui dit à demain, il sanglote. + +Je le prends dans mes bras, l'appelle par son prénom, le remercie de sa présence. Nos regards se croisent, je crois bien que dans le miens il y a une humidité non dissimulé. Dans le sien, difficile à dire. Encore une fois il sourit. Un beau sourire, sincère, franc, sans retenu. Un vrai sourire. Il attrape un bout de pain à la volée, avant de partir de la salle. + +Je retourne chez moi maintenant, laissant ce monsieur marcher sans interruption, marcher pour vivre, survivre. Je le laisse seul, abandonné, avec 14 autres personnes tout aussi seules les unes que les autres. Je les dépose soigneusement dans mon vestiaire, prends le plus grand soin à bien le fermer pour les garder là, en sécurité. +Pour pouvoir, jusqu'à demain, passer à autre chose, ne plus y penser, essayer du moins, pour revenir frais et disponible, à l'écoute du moindre bruit, du moindre geste trahissant une souffrance exprimée dans un langage qu'ils sont seuls à connaître, l'espace de quelques minutes, avant d'oublier la clé de décodage et de repartir, en boucle, vers l'inconnu. diff --git a/pages/blog/2019/11-decroissancenumerique.md b/pages/blog/2019/11-decroissancenumerique.md @@ -0,0 +1,43 @@ +title: "Décroissance numérique, salvatrice simplification" +date: 2019-05-22T18:00:00+01:00 +tags: [Linux, Vie 1.0] +song: "[Ben Harper - Jah Work](https://www.youtube.com/embed/lc2n58vzhz8)" + +L'informatique, le web, des univers fascinants, chronophages, attirants, repoussant même parfois. J'utilise ces technologies, comme beaucoup, pas mal de mon temps dans la journée. Lire des articles, faire défiler un flux sans-fin, Essayer des choses, trop de choses. + +Depuis quelques mois, l'idée de restreindre cet usage me trotte dans la tête. Pouvoir retrouver le _réel_ plaisir de se prendre une heure, un jour, pour aller se balader sur le net et non suivre bêtement. + +Une réflexion qui mature tranquillement depuis quelques mois et qui est enfin arrivée à terme il y a quelques jours. Le déclencheur était la dizaine d'onglets ouverts dans Firefox. À ce moment précis je me suis dit que ce n'était plus possible, qu'à trop en vouloir je me dispersais et que cela n'apportait rien de bien intéressant quand je faisais le point. + +Frénétiquement je me suis détaché d'ailleurs de mes centres d'intérêts pendants quelque temps. Je ne lis plus autant qu'avant. Ma pile d'albums grossit et je ne prends plus le temps de pleinement écouter un album. Bref il est l'heure de la décroissance numérique. + +Simplifier mon usage, mes pratiques, tout en gardant tout de même le côté bidouille amatrice qui me tient à cœur. Ce que je souhaite c'est un système qui tourne avec des outils simples. + +Pour la distribution ce sera Void Linux, j'en avais déjà parler précédemment et fort est de constater que la distribution tourne toujours admirablement bien. La variante `musl` semble intéressante, cependant certains jeux ne sont pas compatibles et utilise trop `glibc` alors je vais prendre cette dernière. + + - **Cwm** comme gestionnaire de fenêtres, c'est simple et direct. La configuration est facile à prendre en main et le mélange clavier/sourie est vraiment bien équilibrée. + - **Dmenu** pour accéder à tout ce que je peux/veux. Minimaliste et extensible à souhait avec des scripts. + - Un navigateur sans onglet, **surf**, pour me recentrer sur ce que je lis, ce que je fais et non ce que je mets de côté. + - Un éditeur de texte, **vim**. Puissant et léger à la fois. + +La prochaine étape majeure s'annonce comme étant l'installation d'openBSD. Par malchance mon px portable a une carte wifi non supporté et le ventilo tournait à pleins régime non-stop lors d'une précédente installation. Ce sera donc lorsque mon fidèle acolyte lâchera que je me pencherai sur l'acquisition d'un pc portable compatible. + +Côté serveur j'ai aussi fait le ménage. J'utilise un [Raspberry Pi 3](https://raspberrypi.org) pour héberger différents services. + + - Le blog et ses commentaires + - Nextcloud + - Un agrégateur de flux rss/atom + - Une interface centralisant mes différents dépôts _git_ + +Du coup ce n'est pas grand-chose. Je n'exploite clairement pas toute la puissance de l'appareil alors, dans la mesure du possible, autant proposer simplement des pages html pures, peu gourmandes en ressources. + +L'OS choisit est [Raspbian](https://raspbian.org/), c'est éprouvé, stable et officiellement supportée par la fondation et largement utilisé par les processeurs de Rpi. Ainsi le support est facile d'accès. Le serveur web est géré, quant à lui, par `nginx`. Là encore le logiciel est connu, stable et tourne sans le moindre soucis. + +Le blog tourne avec [lgbt](https://ybad.name/Logiciel-libre/Code/lgbt.html), codé par l'ami bidouilleur [@prx](https://bsd.network/@prx). un script shell de ~300 lignes qui fait le job, couplé avec `git` le blog se met à jour comme un grand à chaque _push_. La génération se veut simple et minimaliste. C'est accessible et facilement extensible. + +L'interface `git` est générée, toujours en simple page html, par [stagit](https://codemadness.org/stagit.html). Ayant plusieurs dépôts git voulant être accessibles j'utilise un script pour générer le tout. Ce dernier est lancer à chaque push git sur l'un des dépôts. Peut-être un peu extrême mais ça fait le job. + +Ma lecture de flux rss subit le même traitement avec un logiciel, du même auteur, nommé [sfeeds](https://codemadness.org/sfeed-simple-feed-parser.html). Un fichier de configuration recueille les différents noms et urls des flux puis une commande transforme le tout en pages html, une autre créée un fichier txt qui sera utiliser sur le pc avec dmenu pour naviguer depuis le bureau. +Ces différentes actions sont centralisées dans un script shell se lançant, via `cron` toutes les 8 heures. + +Ralentissement donc et refonte de mon usage du web et de l'informatique. Pour le moment ça tient la route et j'ai l'impression que je suis plus à même de réaliser le pourquoi du changement. Une décroissance salvatrice, reconnectant mon esprit avec lui-même. diff --git a/pages/blog/2019/12-oud-init.md b/pages/blog/2019/12-oud-init.md @@ -0,0 +1,26 @@ +title: "Oud Init" +date: 2019-09-16T17:00:00+01:00 +tags: [Musique, Oud] +song: "[Rahim Alhaj - Dream](https://www.youtube.com/watch?v=ye30R9ZQVvQ)" + +Après plus d'une décennie à jouer de la guitare l'envie m'a pris de découvrir un nouvel instrument. Les cuivres m'attiraient énormément mais mon dévolu s'est jeté sur un instrument ouvrant de nouveaux horizons, un renouveau dans la façon de jouer et de comprendre la musique. + +C'est donc comme cela qu'un **oud** a atterri à la maison. + +![Mon Oud Saz](/static/img/musique/oud-saz.jpg) + +Le oud est un instrument oriental à cordes pincées, s'écrivant عود en arabe. On le retrouve dans les pays arabes, la Turquie, en Grèce mais également en Arménie. + +Ce qui est intéressant donc c'est de revoir totalement la création musicale. La musique orientale a de différent, avec celle occidentale, qu'elle utilise les quarts de ton ainsi que différentes gammes. La théorie est également plus poétique et plus flexible. La transmission étant pendant longtemps orale les interprétations ont fleuri si bien qu'aujourd'hui on retrouve des bases encourageant l'ornement, la modulation et l’improvisation du musicien, faisant ressortir sa singularité. + +L'instrument se démarque de la forme à cordes pincées la plus rependue en occident, la guitare, par le fait qu'il ne possède pas de _frettes_, ces petites barres délimitant les cases du manche et donc offrant des repères pour les notes. Ici le manche est donc _fretless_ et il faudra alors mémoriser les positions ainsi que se fier à son oreille pour savoir si la note jouée est bien celle voulue. + +Au niveau du nombre de cordes là aussi cela change, nous avons des ouds à 11 ou 12 cordes. Les cordes vont par paired et dont zinsi doublées sur la même note pour plus d’harmonique et un léger chorus naturel. Les variantes à 11 cordes ne doublent pas la cordes la plus graves et l'on peut trouver tout un tas de variante sur le net. Encore une fois tout est affaire de musicien et de ses préférences. + +Je suis donc parti sur un accordage arabe _standard_ , corde de basse non doublée : + + - `Ré-Sol-La-Ré-Sol-Do` + +Beaucoup de choses à découvrir donc, et c'est un réel plaisir de se creuser les méninges pour se réinventer, musicalement. + +Au niveau de l'accordage là encore la palette est variée.+ \ No newline at end of file diff --git a/pages/mysterybox.md b/pages/mysterybox.md @@ -0,0 +1,7 @@ +title: Mystery Box + +La mystery box est un moyen de me faire parvenir du contenu. Je ne peux savoir qui me l'aura envoyé, mais je suis sûr que ça me fera plaisir. + +<https://cloud.bloguslibrus.fr/s/mystery-box> + +Merci d'avance :) diff --git a/pages/notes/2019/01-raspup.md b/pages/notes/2019/01-raspup.md @@ -0,0 +1,20 @@ +title: "Raspbian, de Stretch à Buster" +date: 2019-06-28T10:00:00+01:00 +tags: [Raspberry, Linux] + +L'arrivé de _Debian Buster_ est prévue pour juillet, _Raspbian_ suivra. + +Il est cependant possible de passer à **Buster** rapidement et facilement. + +``` +grep -rl stretch /etc/apt/ | sudo xargs sed -i 's/stretch/buster/g' +``` + +Une fois les dépôts pointant vers ceux de **Buster**, la mise à jour du système peut débuter. + +``` +sudo apt update && sudo apt dist-upgrade +``` + +> Certaines configurations peuvent nécessiter quelques modifications manuelles. Je pense notamment à php qui passe de la version `7.0` à `7.3`. +> Recopier ses fichiers de configuration c'est bien, bêtement c'est tout de suite moins sympa. diff --git a/pages/notes/2019/02-rustupcross.md b/pages/notes/2019/02-rustupcross.md @@ -0,0 +1,63 @@ +title: "Rustup et cross-compilation" +date: 2019-07-03T09:05:00+02:00 +tags: [Raspberry, Linux, Rust] + +[**Rustup**](https://rustup.rs/) est l'outil servant à gérer les différentes versions de `rust` installées sur son ordinateur, il permet également de facilement ajouter des cibles afin de profiter de la cross-compilation. + +``` +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +``` + +## Configuration + +Une fois l'installation faite il est possible d'installer une _target_ pour pouvoir cross-compiler. + +``` +# Pour un Raspberry Pi 3 +rustup target add armv7-unknown-linux-gnueabihf + +# Éditez $HOME/.cargo/config pour lier la cible et le compileur c +[target.armv7-unknown-linux-gnueabihf] +linker = "arm-linux-gnueabihf-gcc" +``` + +> Il faudra alors veiller à avoir, sur son système, les versions de GNU Binutils, GCC ou GLIBC (par exemple) supportant votre hôte cible. +> Par exemple sous Fedora il faut passer via [_Copr_](https://copr.fedorainfracloud.org/coprs/lantw44/arm-linux-gnueabihf-toolchain/) pour installer cela. + +## Compilation + +Il ne reste plus qu'à lancer la commande pour lancer le build. + +``` +cargo build --release --target=armv7-unknown-linux-gnueabihf +``` + +## Supplément + +### OpenSSL +Sacrés soucis de compilation avec `openssl`, plusieurs solutions sont possibles[^1]. + + - Remplacer la dépendance dans `cargo.toml` par (Simple): + `openssl = { version = "0.10", features = ["vendored"] }` + - Installer `pkg-config` et `openssl-devel` (Perso ça ne fonctionne pas) + - Faire ça à la main : + +``` +wget https://www.openssl.org/source/openssl-xxx.tar.gz +tar xzf openssl-xxx.tar.gz +export MACHINE=armv7 +export ARCH=arm +export CC=arm-linux-gnueabihf-gcc +cd openssl-xxx && ./config shared && make && cd - + +export OPENSSL_LIB_DIR=/tmp/openssl-xxx/ +export OPENSSL_INCLUDE_DIR=/tmp/openssl-xxx/include +``` + +### Sass +Avec `sass-rs` il faut bien veiller à ce que `cmake` soit installer sur votre OS pour la cross-compilation. L'erreur soulevée par `rust` n'était pas limpide et j'ai passé du temps à m'énerver alors que la solution était toute simple. + +### Cross +Pour la cross-compilation il est également possible d'utiliser [`cross`](https://github.com/rust-embedded/cross). De ce que je comprends ça utilise `docker` pour simplifier les choses... + +[^1]: Doc Rust sur OpenSSL <https://docs.rs/openssl/> diff --git a/requirements.txt b/requirements.txt @@ -0,0 +1,13 @@ +Click==7.0 +Flask==1.1.1 +Flask-FlatPages==0.7.1 +Frozen-Flask==0.15 +itsdangerous==1.1.0 +Jinja2==2.10.1 +Markdown==3.1.1 +MarkupSafe==1.1.1 +mccabe==0.6.1 +pyflakes==2.1.1 +Pygments==2.4.2 +PyYAML==5.1.2 +Werkzeug==0.15.6 diff --git a/static/css/style.css b/static/css/style.css @@ -0,0 +1,121 @@ +html { + background: #f2f2f2; + color: #2e3440; +} + +body { + max-width: 82ch; + margin: auto; + padding: 1em; + font: .9rem/1.7 sans-serif +} + +article { + padding: 2ch; + background-color: #f9f9f9; + text-align: justify;; +} + +/* header and footer areas */ +nav, footer { + margin: .5ch 0; + padding: .5ch; + background: #e8e8e8; + text-align: center; +} + +nav a { padding: 1ch; } + +/* code */ +pre { + background: #f1f1f1; + box-shadow: 5px 5px 5px #eee; + padding: 2ch; + font: .8rem/1.6 monospace; + overflow-x: auto; +} + +code { + background: #f1f1f1; + margin: .2ch; + padding: .5ch; + word-wrap: break-word; +} + +/* meta */ +.meta { + margin: 1rem 0; + padding: 1rem; + border-top: 1px solid #d9d9d9; + border-bottom: 1px solid #d9d9d9; + font-size: .85rem; + text-align: center; +} + +time { + padding-right: 1ch; + font-style: italic; + color: #da4453; +} + +.tags { + margin-bottom: .5rem; + padding: 0 1ch .5rem; + font-size: .9rem; + color: #338618; +} + +/* typography */ +h1 { + font-size: 2rem; + text-align: center; +} + +h2, h3, h4, h5, h6 { border-bottom: 1px solid #d9d9d9; } + +/* misc elements */ +a { + text-decoration: none; + color: #2c8898; +} + +a:hover { + color: #982c61; + text-decoration: underline; +} + +img { + display: block; + margin: auto; + max-width: 90%; +} + +blockquote { + background: #f2f2f2; + border-left: 2px solid #2c8898; + padding: 3px 1em 3px; +} + +input[type=text] { + display: block; + width: 34ch; + margin: 0 auto; + background: #f2f2f2; + padding: 1ch; + border: 1px solid #d9d9d9; + text-align: center; +} + +input[type=text]:focus { width: 90%; } + +/* media queries */ +@media (min-width: 52em) { + .meta { + margin: .5rem 10%; + width: 80%; + } +} + +@media (max-width: 52em) { +} +f1f1f1+ \ No newline at end of file diff --git a/static/img/comics/daredevilguardiandevil.jpg b/static/img/comics/daredevilguardiandevil.jpg Binary files differ. diff --git a/static/img/comics/fables_integrale1.jpg b/static/img/comics/fables_integrale1.jpg Binary files differ. diff --git a/static/img/comics/fables_snowbigby.jpg b/static/img/comics/fables_snowbigby.jpg Binary files differ. diff --git a/static/img/emacs/flyspell_ivy.png b/static/img/emacs/flyspell_ivy.png Binary files differ. diff --git a/static/img/emacs/orgcapturepop.png b/static/img/emacs/orgcapturepop.png Binary files differ. diff --git a/static/img/emacs/orgffcapture.png b/static/img/emacs/orgffcapture.png Binary files differ. diff --git a/static/img/emacs/orgmodelayout.png b/static/img/emacs/orgmodelayout.png Binary files differ. diff --git a/static/img/favicon.png b/static/img/favicon.png Binary files differ. diff --git a/static/img/jeux/darkestdungeon_affliction.jpg b/static/img/jeux/darkestdungeon_affliction.jpg Binary files differ. diff --git a/static/img/jeux/darkestdungeon_banner.jpg b/static/img/jeux/darkestdungeon_banner.jpg Binary files differ. diff --git a/static/img/jeux/darkestdungeon_virtue.jpg b/static/img/jeux/darkestdungeon_virtue.jpg Binary files differ. diff --git a/static/img/livres/alienbradbury.jpg b/static/img/livres/alienbradbury.jpg Binary files differ. diff --git a/static/img/musique/conbrioexplorer.jpg b/static/img/musique/conbrioexplorer.jpg Binary files differ. diff --git a/static/img/musique/davidcrosby_hereifyoulisten.jpg b/static/img/musique/davidcrosby_hereifyoulisten.jpg Binary files differ. diff --git a/static/img/musique/gojirathewayofallflesh.jpg b/static/img/musique/gojirathewayofallflesh.jpg Binary files differ. diff --git a/static/img/musique/oud-saz.jpg b/static/img/musique/oud-saz.jpg Binary files differ. diff --git a/static/img/musique/snarkypuppy_immigrance.jpg b/static/img/musique/snarkypuppy_immigrance.jpg Binary files differ. diff --git a/static/img/musique/thepineapplethiefdissolution.jpg b/static/img/musique/thepineapplethiefdissolution.jpg Binary files differ. diff --git a/static/img/musique/weendo_timeofawakening.jpg b/static/img/musique/weendo_timeofawakening.jpg Binary files differ. diff --git a/static/img/solus/geditplugins.png b/static/img/solus/geditplugins.png Binary files differ. diff --git a/static/img/solus/mysterybox_sharerenamer.png b/static/img/solus/mysterybox_sharerenamer.png Binary files differ. diff --git a/static/img/solus/plasmatiling.png b/static/img/solus/plasmatiling.png Binary files differ. diff --git a/static/js/archives.js b/static/js/archives.js @@ -0,0 +1,18 @@ +function FilterArchive() { + var input, filter, ul, li, a, i, txtValue; + input = document.getElementById('archivefilter'); + filter = input.value.toUpperCase(); + li = document.getElementsByTagName('li'); + + // Loop through all list items, and hide those who don't match the search query + for (i = 0; i < li.length; i++) { + a = li[i].getElementsByTagName("a")[0]; + txtValue = a.textContent || a.innerText; + txtValue += ' ' + a.href; + if (txtValue.toUpperCase().indexOf(filter) > -1) { + li[i].style.display = ""; + } else { + li[i].style.display = "none"; + } + } +} diff --git a/templates/_list.html b/templates/_list.html @@ -0,0 +1,10 @@ +<ul> +{% for page in pages %} + <li> + <time datetime="{{ page.date|to_rfc2822 }}">{{ page.date|date('%d %B %Y') }}</time> + <a href="{{ url_for("page", path=page.path) }}">{{ page.title }}</a> + </li> +{% else %} + <li>No page.</li> +{% endfor %} +</ul> diff --git a/templates/archives.html b/templates/archives.html @@ -0,0 +1,24 @@ +{% extends "base.html" %} + +{% block content %} + <header> + <h1>Archives<h1> + </header> + <article> + <input type="text" id="archivefilter" onkeyup="FilterArchive()" placeholder="?" autofocus> + {% with pages=pages %} + <ul> +{% for page in pages %} + <li> + <time datetime="{{ page.date|to_rfc2822 }}">{{ page.date|date('%d %b %Y') }}</time> + <a href="{{ url_for("page", path=page.path) }}">{{ page.title }}</a> + </li> +{% endfor %} + + {% endwith %} + </article> +{% endblock content %} + +{% block js %} +<script src="{{ url_for('static', filename='js/archives.js') }}"></script> +{% endblock js %}+ \ No newline at end of file diff --git a/templates/base.html b/templates/base.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html lang="fr-fr"> +<head> + <meta charset="utf-8"> + <meta name="generator" content="Flask and co" /> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Blogus Librus{% block title %}{% endblock %}</title> + <link rel="shortcut icon" type="image/png" href="{{ url_for('static', filename='img/favicon.png') }}"/> + <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/style.css') }}"> +</head> +<body> +<nav> + <a href="{{ url_for("index") }}">~/</a> · + <a href="{{ url_for("archives") }}">Archives</a> · + <a href="{{ url_for("feed") }}">Rss</a> · + {% for page in hpages %} + <a href="{{ url_for("page", path=page.path)}}"> + {{ page.title }} + </a> · + {% endfor %} + <a href="https://git.bloguslibrus.fr/">Git</a> + +</nav> +<main> +{% block content %} + <p>Default content to be displayed</p> +{% endblock content %} +{% block js %} +{% endblock js %} +</main> +<footer> +<p>Généré sans venin avec <b>Python</b> et <em>Flask</em>. Mis à jour le <code>{{ now }}</code></p> +</footer> +</body> +</html> diff --git a/templates/base.xml b/templates/base.xml @@ -0,0 +1,22 @@ +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>Blogus Librus Feed</title> + <link>{{ BASE_URL }}/</link> + <atom:link href="{{ BASE_URL }}/feed.xml" rel="self" type="application/rss+xml"/> + <description>Billets récents</description> + <lastBuildDate>{{ build_date|to_rfc2822 }}</lastBuildDate> + <pubDate>{{ build_date|to_rfc2822 }}</pubDate> + <ttl>3600</ttl> + + {% for page in pages %} + <item> + <title>{{ page.title|escape }}</title> + <link>{{ BASE_URL }}/{{ page.path }}/</link> + <pubDate>{{ page.date|to_rfc2822 }}</pubDate> + <guid>{{ BASE_URL }}/{{ page.path }}/</guid> + <author>justin.bridouz@zaclys.net (Justin Bridouz)</author> + <description>{{- page.html|escape -}}</description> + </item> + {% endfor %} + </channel> +</rss> diff --git a/templates/index.html b/templates/index.html @@ -0,0 +1,17 @@ +{% extends "base.html" %} + +{% block content %} + <h1>Blogus Librus + <br> + <small>Un blog libre, à publication sporadique</small> + </h1> + <article> + <p>Te voila arrivé sur un site auto-hébergé par un bidouilleur amateur. Un assemblage de pages html qui, je l'espère, forme un tout. Point de profilage, ni de ressources extérieures ici. Tout est hébergé <code>@home</code>. Le site se veut donc <em>léger</em>, <em>rapide</em> et <b>respectueux du visiteur</b>.</p> + <p>La partie principale est celle du <a href="/blog">blog</a> où je parle d'informatique, linux, musique et bouquins. Il y a également une partie <a href="/notes">notes</a> où j'essaies, plus ou moins régulièrement, d'y placer de courts textes/mémos sur différentes choses.</p> + <p>Bonne visite et, si cela te plaît, il est possible de venir me déposer un petit truc sur ma <a href="/mysterybox"><code>Mystery Box</code></a>.</p> + <h2>Derniers billets</h2> + {% with pages=pages %} + {% include "_list.html" %} + {% endwith %} + </article> +{% endblock content %} diff --git a/templates/page.html b/templates/page.html @@ -0,0 +1,28 @@ +{% extends "base.html" %} + +{% block title %} + - {{ page.title }} +{% endblock %} + +{% block content %} + <article> + <h1>{{ page.title }}</h1> + {% if "date" not in page.meta %} + {{ page.html|safe }} + </article> + {% else %} + <div class="meta"> + <time>{{ page.date|date('%d/%m/%Y') }}</time> + {% for tag in page.tags %} + <a class="tags" href="{{ url_for("tag", tag=tag) }}">#{{ tag }}</a> + {% endfor %} + {% if page.song %} + {{ page.song|markdown|safe }} + {% endif %} + </div> + {{ page.html|safe }} + </article> + <div class="meta"><em>Si le billet vous a plus, n'hésitez pas laisser un commentaire ou bien passer déposer quelquechose dans ma <a href="https://cloud.bloguslibrus.fr/s/mystery-box"> Mystery Box</a>.</em></div> + {% endif %} +{% endblock content %} + diff --git a/templates/tag.html b/templates/tag.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} + +{% block content %} + <header> + <h1>List of stuff tagged <em>{{ tag }}</em></h1> + </header> + <article> + {% with pages=pages %} + {% include "_list.html" %} + {% endwith %} + </article> +{% endblock content %}