From ce6eb680b730c4d5ebd61f61deaf1a02b739140d Mon Sep 17 00:00:00 2001 From: Tykayn Date: Sun, 23 Feb 2025 19:12:15 +0100 Subject: [PATCH] up logging of generation --- atom_generate.py | 14 ++- back_files_to_roam.sh | 6 +- concat_last_billets.py | 57 --------- converters.sh | 35 +++++- linking_articles_prev_next.py | 27 ++-- pictures_resize.py | 2 +- .../20150702T150433__le-bash-de-vos-rves.org | 7 +- ...-rien-a-cacher-a-part-votre-vie-privee.org | 23 +--- ...-donnees-personnelles-sont-collectives.org | 13 -- .../20181207T152825__la-verite-cest-moi.org | 48 +------ ...162300__aaron-swartz-lenfant-dinternet.org | 12 -- ...aire-la-bataille-du-libre-sur-peertube.org | 21 ---- ...age-de-noel-de-la-part-dedward-snowden.org | 26 +--- ...28__video-du-premier-chatons-camp-2021.org | 18 +-- ...josm-avec-la-bd-ortho-ign-et-mapillary.org | 24 +--- ...s-objets-au-service-de-la-surveillance.org | 23 +--- ...20250223175621__rétrospective-de-blogs.org | 119 ++++++++++++++++++ .../lang_fr/2024-11-02__coucou-gemini.org | 7 -- .../20250129143536__pouet-pouet-hop.org | 27 ---- .../lang_fr/20250222000320__.org | 17 --- .../20250222000532__hé-bien-vouala.org | 17 --- ...20250223175621__rétrospective-de-blogs.org | 119 ++++++++++++++++++ ...l’accident-de-fusion-du-cœur-sur-l’epr.org} | 52 ++++---- 23 files changed, 340 insertions(+), 374 deletions(-) delete mode 100644 concat_last_billets.py create mode 100644 sources/cipherbliss_blog/lang_fr/20250223175621__rétrospective-de-blogs.org delete mode 100644 sources/dragonfeu_blog/lang_fr/2024-11-02__coucou-gemini.org delete mode 100644 sources/dragonfeu_blog/lang_fr/20250129143536__pouet-pouet-hop.org delete mode 100644 sources/dragonfeu_blog/lang_fr/20250222000320__.org delete mode 100644 sources/dragonfeu_blog/lang_fr/20250222000532__hé-bien-vouala.org create mode 100644 sources/dragonfeu_blog/lang_fr/20250223175621__rétrospective-de-blogs.org rename sources/dragonfeu_blog/lang_fr/{2024-09-08__strategie-mitigation-accident-fusion-coeur-epr2.org => 20250223183908__stratégie-de-mitigation-de-l’accident-de-fusion-du-cœur-sur-l’epr.org} (97%) diff --git a/atom_generate.py b/atom_generate.py index 11887fb8..cd407d1b 100755 --- a/atom_generate.py +++ b/atom_generate.py @@ -21,13 +21,20 @@ with open(json_file, 'r', encoding='utf-8') as f: # Trier les articles par date décroissante sorted_articles = sorted(articles_info.values(), key=lambda x: x['date'], reverse=True) +# Convert the date string to a valid ISO format +def convert_to_iso(date_str): + # Check if the string contains 'T' and replace it with a single 'T' + if 'T' in date_str: + date_str = date_str.replace('T', '', 1) # Replace only the first occurrence + return f"{date_str[:4]}-{date_str[4:6]}-{date_str[6:8]}T{date_str[8:10]}:{date_str[10:12]}:{date_str[12:14]}" + # Génération du flux Atom with open(f"html-websites/{args.blog}/feed/index.xml", "w", encoding="utf-8") as f: f.write('\n') f.write('\n') f.write(f' Flux Atom des articles de {args.blog}\n') f.write(f' \n') - f.write(f' {datetime.fromisoformat(sorted_articles[0]["date"]).strftime("%Y-%m-%dT%H:%M:%S+00:00")}\n') + f.write(f' {datetime.fromisoformat(convert_to_iso(sorted_articles[0]["date"])).strftime("%Y-%m-%dT%H:%M:%S+00:00")}\n') f.write(' tag:' + website_ndd + ',2023:/feed\n') f.write(' \n') f.write(f' {configs_sites[args.blog]["AUTHOR"]}\n') @@ -35,6 +42,7 @@ with open(f"html-websites/{args.blog}/feed/index.xml", "w", encoding="utf-8") as f.write(' \n') f.write(f' \n') + print(f"Génération du flux Atom pour {len(sorted_articles)} articles") # Boucle des articles for article in sorted_articles: f.write(' \n') @@ -45,8 +53,8 @@ with open(f"html-websites/{args.blog}/feed/index.xml", "w", encoding="utf-8") as f.write(f' {article["html_content"]}\n') f.write(' ]]>\n') f.write(f' {article.get("extract", "")}\n') - f.write(f' {datetime.fromisoformat(article["date"]).strftime("%Y-%m-%dT%H:%M:%S+00:00")}\n') - f.write(f' {datetime.fromisoformat(article["date"]).strftime("%Y-%m-%dT%H:%M:%S+00:00")}\n') + f.write(f' {datetime.fromisoformat(convert_to_iso(article["date"])).strftime("%Y-%m-%dT%H:%M:%S+00:00")}\n') + f.write(f' {datetime.fromisoformat(convert_to_iso(article["date"])).strftime("%Y-%m-%dT%H:%M:%S+00:00")}\n') f.write(' \n') f.write(f' {configs_sites[args.blog]["AUTHOR"]}\n') f.write(f' {configs_sites[args.blog]["EMAIL"]}\n') diff --git a/back_files_to_roam.sh b/back_files_to_roam.sh index 8e130acb..5e4bba74 100644 --- a/back_files_to_roam.sh +++ b/back_files_to_roam.sh @@ -3,14 +3,14 @@ echo "syncro de ce dépot vers les dossiers org roam" rsync -avP --inplace source/tykayn_blog/*.org /home/tykayn/Nextcloud/textes/orgmode/org-roam/tykayn_blog/ -rsync -avP --inplace source/yaya_blog/*.org /home/tykayn/Nextcloud/textes/orgmode/org-roam/helia_blog/ +rsync -avP --inplace source/other_blog/*.org /home/tykayn/Nextcloud/textes/orgmode/org-roam/helia_blog/ rsync -avP --inplace source/qzine_blog/*.org /home/tykayn/Nextcloud/textes/orgmode/org-roam/qzine_blog/ rsync -avP --inplace source/cipherbliss_blog/*.org /home/tykayn/Nextcloud/textes/orgmode/org-roam/cipherbliss_blog/ rsync -avP --inplace source/cil_gometz/*.org /home/tykayn/Nextcloud/textes/orgmode/org-roam/cil_gometz/ # on a que des posts en FR don zou dans le dossier commun rsync -avP --inplace source/tykayn_blog/lang_fr/*.org /home/tykayn/Nextcloud/textes/orgmode/org-roam/tykayn_blog/ -rsync -avP --inplace source/yaya_blog/lang_fr/*.org /home/tykayn/Nextcloud/textes/orgmode/org-roam/helia_blog/ +rsync -avP --inplace source/other_blog/lang_fr/*.org /home/tykayn/Nextcloud/textes/orgmode/org-roam/helia_blog/ rsync -avP --inplace source/qzine_blog/lang_fr/*.org /home/tykayn/Nextcloud/textes/orgmode/org-roam/qzine_blog/ rsync -avP --inplace source/cipherbliss_blog/lang_fr/*.org /home/tykayn/Nextcloud/textes/orgmode/org-roam/cipherbliss_blog/ -rsync -avP --inplace source/cil_gometz/lang_fr/*.org /home/tykayn/Nextcloud/textes/orgmode/org-roam/cil_gometz/ \ No newline at end of file +rsync -avP --inplace source/cil_gometz/lang_fr/*.org /home/tykayn/Nextcloud/textes/orgmode/org-roam/cil_gometz/ diff --git a/concat_last_billets.py b/concat_last_billets.py deleted file mode 100644 index 692d55d5..00000000 --- a/concat_last_billets.py +++ /dev/null @@ -1,57 +0,0 @@ -# list_recent_articles.py - -import os -import glob -import argparse -from website_config import configs_sites - -# Configurer argparse pour prendre le blog en argument -parser = argparse.ArgumentParser(description='Générer une liste des derniers articles de blog.') -parser.add_argument('blog', type=str, help='Nom du dossier du blog à traiter', default='tykayn_blog') -args = parser.parse_args() - -template_content = configs_sites[args.blog] - -if template_content is None: - print(f"Erreur : template_content est indéfini pour le blog donné: {args.blog}.") - exit(1) - - - - -last_n_articles=10 -source_dir = f"sources/{args.blog}/lang_fr" -output_file = f"sources/{args.blog}/build/latests_posts.org" -converted_latest_posts_path=f"sources/{args.blog}/build/latests_posts.html" - -# Vérifier si le dossier source existe -if not os.path.isdir(source_dir): - print(f"Le dossier {source_dir} n'existe pas") - exit(1) - -# Trouver les 10 fichiers les plus récents -org_files = sorted(glob.glob(os.path.join(source_dir, "*.org")), key=os.path.getmtime, reverse=True)[:last_n_articles] -# prendre le fichier output_file = f'sources/{blog_folder}/converted/tags.json' -# Créer ou écraser le fichier de sortie -with open(output_file, 'w', encoding='utf-8') as out_file: - out_file.write("#+TITLE: Articles récents\n\n") - - for file in org_files: - with open(file, 'r', encoding='utf-8') as f: - content = f.readlines() - - # Trouver le titre de premier niveau - title = None - for line in content: - if line.startswith("* "): # Titre de premier niveau - title = line[2:].strip() # Enlever le "* " et les espaces - break - - if title: - # Écrire le lien vers l'article dans le fichier de sortie - out_file.write(f"* [[file:{file}|{title}]]\n") - out_file.write("#+BEGIN_SRC org\n") - out_file.writelines(content) - out_file.write("#+END_SRC\n\n") - -print(f"Liste des 10 derniers articles générée dans {output_file}") diff --git a/converters.sh b/converters.sh index e373d882..f9f9168d 100755 --- a/converters.sh +++ b/converters.sh @@ -18,6 +18,32 @@ for arg in "$@"; do blogs_folders+=("$arg") done +# Si le tableau blogs_folders est vide, demander à l'utilisateur +if [ ${#blogs_folders[@]} -eq 0 ]; then + echo "----------- Aucun blog spécifié. Recherche des dossiers disponibles..." + + # Lister les dossiers sous sources/ + echo "Dossiers disponibles sous sources/ :" + ls -d sources/*/ 2>/dev/null | while read -r dir; do + dir=${dir%/} # Enlever le / final + dir=${dir#sources/} # Enlever le préfixe sources/ + echo "- $dir" + done + + # Demander à l'utilisateur quels dossiers inclure + echo + echo "Entrez les noms des blogs à traiter (séparés par des espaces) :" + read -r user_input + + # Convertir l'entrée utilisateur en tableau + read -ra blogs_folders <<<"$user_input" + + if [ ${#blogs_folders[@]} -eq 0 ]; then + echo "Aucun blog sélectionné. Arrêt du script." + exit 1 + fi +fi + # Afficher la liste des noms de blogs echo "----------- La liste des noms de blogs est :" for blog in "${blogs_folders[@]}"; do @@ -86,17 +112,22 @@ for website_name in "${blogs_folders[@]}"; do # générer l'index montrant les posts les plus récents à la suite # conversion des pages statiques + echo "conversion des pages statiques : linking_articles_prev_next.py" python3 linking_articles_prev_next.py $website_name # créer les pages de tags à partir des infos de tag trouvées dans les fichiers org + echo "création des pages de tags : gather_tags_in_json.py" python3 gather_tags_in_json.py $website_name - # copier le style dans le dossier html + echo "copie du style $style_file dans le dossier html" + cp $style_file html-websites/$website_name/style.css - # copier le script permettant la recherche + + echo "copie du script main_script.js dans le dossier html" cp templates/js/main_script.js html-websites/$website_name/main_script.js # traiter les réductions d'images dans l'inbox + echo "traiter les réductions d'images dans l'inbox : pictures_resize.py" python3 pictures_resize.py # régénérer le flux Atom du blog diff --git a/linking_articles_prev_next.py b/linking_articles_prev_next.py index 90802baf..7fa38557 100644 --- a/linking_articles_prev_next.py +++ b/linking_articles_prev_next.py @@ -18,20 +18,17 @@ start_time = time.time() # Configs pour tester generate_linkings_json = True generate_articles = True -run_pandoc = True # le plus long quand on a beaucoup d'articles -# run_pandoc = False -run_gemini = True -run_gemini = False # Configurer argparse pour prendre le blog en argument parser = argparse.ArgumentParser(description='Générer une liste des derniers articles de blog.') -parser.add_argument('blog', type=str, help='Nom du dossier du blog à traiter', default='tykayn_blog') -# parser.add_argument('--run_gemini', type=str, help='Activer ou non la génération des billets gemini', default=True) +parser.add_argument('blog', type=str, help='Nom du dossier du blog à traiter', default='cipherbliss_blog') +parser.add_argument('--run_gemini', type=str, help='Activer ou non la génération des billets gemini', default=False) +parser.add_argument('--run_pandoc', type=str, help='Activer ou non la génération des fichiers html', default=True) args = parser.parse_args() -# run_gemini = args.run_gemini - +run_gemini = args.run_gemini +run_pandoc = args.run_pandoc # Fonction pour extraire le basename d'un fichier def get_basename(file_name): return os.path.splitext(file_name)[0] @@ -90,16 +87,25 @@ Navigation: try: with open(destination_gmi+'/'+output_filename_slug+'.gmi', 'w', encoding='utf-8') as f: f.write(output) - print(f"Fichier GMI sauvegardé avec succès : {output_filename_slug}") + # print(f"Fichier GMI sauvegardé avec succès : {output_filename_slug}") except OSError as e: print(f"Erreur lors de la sauvegarde du fichier : {e}") return output if generate_linkings_json : + count_articles = len(os.listdir(directory)) + counter=0 + + print(f"Génération des liens entre articles pour {count_articles} articles") + print(f"run_pandoc: {run_pandoc}") + print(f"run_gemini: {run_gemini}") # Parcourir les fichiers du dossier for file_name in os.listdir(directory): if file_name.endswith('.org'): + counter+=1 + if counter % 10 == 0: + print(f"{time.strftime('%H:%M:%S')} : Articles traités : {counter}/{count_articles}") file_path = os.path.join(directory, file_name) with open(file_path, "r", encoding="utf-8") as f: content = f.read() @@ -151,6 +157,7 @@ if generate_linkings_json : if run_pandoc and rebuild_this_article_html: # convertir le contenu d'article org vers html + print(f"{time.strftime('%H:%M:%S')} : Conversion de {file_name} en html") html_content = pypandoc.convert_text(content_without_h1, 'html', format='org') else: html_content = content_without_h1 @@ -198,7 +205,7 @@ for slug, info in files_dict.items(): html_content = info['html_content'] rewritten_html_content = html_content for roam_id, slug in articles_roam_id_to_slugs.items(): - if roam_id in rewritten_html_content: + if roam_id is not None and isinstance(rewritten_html_content, str) and roam_id in rewritten_html_content: print(f'{roam_id} -> {slug}') rewritten_html_content = rewritten_html_content.replace(f'href="#{roam_id}"', f'href="{template_content["NDD"]}/{slug}"') diff --git a/pictures_resize.py b/pictures_resize.py index 5b608789..3d968074 100644 --- a/pictures_resize.py +++ b/pictures_resize.py @@ -10,7 +10,7 @@ OUTPUT_DIR = "output/pictures" YEAR = datetime.now().strftime("%Y") SMALL_SUFFIX = "_small" IMAGE_FORMAT = "jpg" -max_width_resized=600 # pixels max de largeur +max_width_resized=800 # pixels max de largeur url_folder_pics="https://www.tykayn.fr/wp-uploads/content/i" # Créer le dossier de sortie s'il n'existe pas diff --git a/sources/cipherbliss_blog/lang_fr/20150702T150433__le-bash-de-vos-rves.org b/sources/cipherbliss_blog/lang_fr/20150702T150433__le-bash-de-vos-rves.org index 10ec66b1..c4a19776 100644 --- a/sources/cipherbliss_blog/lang_fr/20150702T150433__le-bash-de-vos-rves.org +++ b/sources/cipherbliss_blog/lang_fr/20150702T150433__le-bash-de-vos-rves.org @@ -37,8 +37,10 @@ mettre de la couleur dans votre console. Essayez donc de mettre cette commande d'export à la fin de votre .bashrc, et de relancer bash. - -=$ nano ~/.bashrc==# titre du terminal personnaliséPROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'# prompt personnaliséexport PS1="\[\033[38;5;214m\]\T\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;192m\]\u\[$(tput sgr0)\]\[\033[38;5;42m\]@\[$(tput sgr0)\]\[\033[38;5;84m\]\h\[$(tput sgr0)\]\[\033[38;5;70m\]:\[$(tput sgr0)\]\[\033[38;5;6m\]\w\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]"= +#+begin_src bash +=$ nano ~/.bashrc==# titre du terminal personnalisé +PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'# prompt personnaliséexport PS1="\[\033[38;5;214m\]\T\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;192m\]\u\[$(tput sgr0)\]\[\033[38;5;42m\]@\[$(tput sgr0)\]\[\033[38;5;84m\]\h\[$(tput sgr0)\]\[\033[38;5;70m\]:\[$(tput sgr0)\]\[\033[38;5;6m\]\w\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]"= +#+end_src on enregistre avec ctrl +o, on sort avec ctrl + x. et hop! @@ -49,7 +51,6 @@ et vouala: #+begin_quote -<> 02:23:52tykay@mycomputer:/usr/local/src #+end_quote diff --git a/sources/cipherbliss_blog/lang_fr/20180511T174728__vous-navez-rien-a-cacher-a-part-votre-vie-privee.org b/sources/cipherbliss_blog/lang_fr/20180511T174728__vous-navez-rien-a-cacher-a-part-votre-vie-privee.org index 0c5a24e5..0d83f0e5 100644 --- a/sources/cipherbliss_blog/lang_fr/20180511T174728__vous-navez-rien-a-cacher-a-part-votre-vie-privee.org +++ b/sources/cipherbliss_blog/lang_fr/20180511T174728__vous-navez-rien-a-cacher-a-part-votre-vie-privee.org @@ -86,31 +86,10 @@ sur un seul téléphone et ordinateur permettent de tirer des analyses de dizaines de personnes à la fois. -<> -* -:PROPERTIES: -:CUSTOM_ID: error-title -:END: - -<> - -Error details - -<> - -<> -* -:PROPERTIES: -:CUSTOM_ID: video-password-title -:END: - -<> - -<> [[data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0cmVtIiBoZWlnaHQ9IjRyZW0iIHZpZXdib3g9IjAgMCAyNCAyNCI+CiAgICAgICAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzRjNGM0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiI+PHJlY3Qgd2lkdGg9IjE4IiBoZWlnaHQ9IjExIiB4PSIzIiB5PSIxMSIgcng9IjIiIHJ5PSIyIj48L3JlY3Q+PHBhdGggZD0iTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0Ij48L3BhdGg+PC9nPgogICAgICA8L3N2Zz4=]] -<> + Peut être aurez vous une autre perspective de la chose, la prochaine fois que vous entendrez quelqu'un vous dire qu'il diff --git a/sources/cipherbliss_blog/lang_fr/20181207T144755__nos-donnees-personnelles-sont-collectives.org b/sources/cipherbliss_blog/lang_fr/20181207T144755__nos-donnees-personnelles-sont-collectives.org index c473aedb..56b965b7 100644 --- a/sources/cipherbliss_blog/lang_fr/20181207T144755__nos-donnees-personnelles-sont-collectives.org +++ b/sources/cipherbliss_blog/lang_fr/20181207T144755__nos-donnees-personnelles-sont-collectives.org @@ -25,19 +25,6 @@ :END: -<> -* -:PROPERTIES: -:CUSTOM_ID: error-title -:END: - -<> - -<> - -<> - - Nos données personnelles ne sont pas à vendre, et malgré le RGPD, les plus grandes boites du monde continuent de violer la loi et de nous marcher sur la gueule en nous arrachant un consentement contraint. diff --git a/sources/cipherbliss_blog/lang_fr/20181207T152825__la-verite-cest-moi.org b/sources/cipherbliss_blog/lang_fr/20181207T152825__la-verite-cest-moi.org index 20d0e069..f5e03d76 100644 --- a/sources/cipherbliss_blog/lang_fr/20181207T152825__la-verite-cest-moi.org +++ b/sources/cipherbliss_blog/lang_fr/20181207T152825__la-verite-cest-moi.org @@ -30,22 +30,9 @@ Je ne pense pas que vous soyez ignorant de ce qu'est de la propagande, je suis cependant beaucoup moins certain que vous soyez en mesure d'identifier de la propagande comme telle lorsque vous y êtes exposé. - - #+end_quote - -<> -* -:PROPERTIES: -:CUSTOM_ID: error-title -:END: - -<> - -<> - -<> + (vidéo) Si vous pensiez qu'il suffit de lire ou voir une actualité émanant d'une @@ -67,8 +54,6 @@ la lumière sur des faits ne soit faite que des jours, des semaines, ou des années après l'arrivée des faits. - - Décréter que l'on est seul détenteur de la vérité relève de l'[[https://fr.wikipedia.org/wiki/Autoritarisme][autoritarisme]], et [[https://www.laquadrature.net/2018/12/12/le-parlement-europeen-appelle-a-la-censure-automatisee-et-privatisee-du-web-a-des-fins-securitaires/][s'armer @@ -79,29 +64,13 @@ dans le film [[https://peertube.cipherbliss.com/videos/watch/c3c6a810-6dc0-4a9a-aea6-7d12e9e2e58f][La classe américaine:]] - -<> -* -:PROPERTIES: -:CUSTOM_ID: error-title -:END: - -<> - -<> - -<> - +(vidéo) Peu importe vos opinions et votre discours, si la censure est votre seule réponse, vous êtes faciste. Innonder les médias d'un discours qui ne permet aucune réponse (si vous n'êtes pas content on vous envoie l'armée, la police, ou les CRS), ou de ne restreindre les débats -qu'autour d'interprétations fallacieuses est -[[https://fr.wikipedia.org/wiki/Propagande][un des visages de la -propagande]]. - - +qu'autour d'interprétations fallacieuses est [[https://fr.wikipedia.org/wiki/Propagande][un des visages de la propagande]]. La réponse qui convient à un régime détendu des opinions, c'est d'avoir des droits de réponse, d'avantage de liberté d'expression, la liberté de @@ -110,13 +79,6 @@ d'accord. -évitons -[[https://skeptikon.fr/videos/watch/ed6b0c1f-c83d-4049-95be-5f919be25498][les -arguments pourris à base de sophisme du procureur]]. +évitons [[https://skeptikon.fr/videos/watch/ed6b0c1f-c83d-4049-95be-5f919be25498][les arguments pourris à base de sophisme du procureur]]. - - - -Un peu de charité intellectuelle, que diable! - - +Un peu de charité intellectuelle, que diable! \ No newline at end of file diff --git a/sources/cipherbliss_blog/lang_fr/20190116T162300__aaron-swartz-lenfant-dinternet.org b/sources/cipherbliss_blog/lang_fr/20190116T162300__aaron-swartz-lenfant-dinternet.org index 24fe0fb9..c6c348ab 100644 --- a/sources/cipherbliss_blog/lang_fr/20190116T162300__aaron-swartz-lenfant-dinternet.org +++ b/sources/cipherbliss_blog/lang_fr/20190116T162300__aaron-swartz-lenfant-dinternet.org @@ -24,18 +24,6 @@ :CUSTOM_ID: aaron-swartz-lenfant-dinternet :END: -<> -* -:PROPERTIES: -:CUSTOM_ID: error-title -:END: - -<> - -<> - -<> - l'histoire d'[[https://fr.wikipedia.org/wiki/Aaron_Swartz][Aaron Swartz]], né en 1986 et mort en 2013, - créateur de Reddit et de bien d'autres services diff --git a/sources/cipherbliss_blog/lang_fr/20190517T220740__bonus-du-documentaire-la-bataille-du-libre-sur-peertube.org b/sources/cipherbliss_blog/lang_fr/20190517T220740__bonus-du-documentaire-la-bataille-du-libre-sur-peertube.org index e51a1f5e..b98b29bf 100644 --- a/sources/cipherbliss_blog/lang_fr/20190517T220740__bonus-du-documentaire-la-bataille-du-libre-sur-peertube.org +++ b/sources/cipherbliss_blog/lang_fr/20190517T220740__bonus-du-documentaire-la-bataille-du-libre-sur-peertube.org @@ -61,27 +61,6 @@ extrait ici avec prise de parole du boss de l'association framasoft Pierre-yves Bosset par exemple.]] -<> -* -:PROPERTIES: -:CUSTOM_ID: error-title -:END: - -<> - -Error details - -<> - -<> -* -:PROPERTIES: -:CUSTOM_ID: video-password-title -:END: - -<> - -<> [[data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0cmVtIiBoZWlnaHQ9IjRyZW0iIHZpZXdib3g9IjAgMCAyNCAyNCI+CiAgICAgICAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzRjNGM0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiI+PHJlY3Qgd2lkdGg9IjE4IiBoZWlnaHQ9IjExIiB4PSIzIiB5PSIxMSIgcng9IjIiIHJ5PSIyIj48L3JlY3Q+PHBhdGggZD0iTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0Ij48L3BhdGg+PC9nPgogICAgICA8L3N2Zz4=]] diff --git a/sources/cipherbliss_blog/lang_fr/20201227T115645__un-petit-message-de-noel-de-la-part-dedward-snowden.org b/sources/cipherbliss_blog/lang_fr/20201227T115645__un-petit-message-de-noel-de-la-part-dedward-snowden.org index 0846de01..d48519a7 100644 --- a/sources/cipherbliss_blog/lang_fr/20201227T115645__un-petit-message-de-noel-de-la-part-dedward-snowden.org +++ b/sources/cipherbliss_blog/lang_fr/20201227T115645__un-petit-message-de-noel-de-la-part-dedward-snowden.org @@ -97,31 +97,7 @@ vous êtes d'humeur généreuse vous pouvez aussi soutenir des gens comme genre de choses en France depuis bien avant l'actuel projet liberticide "Sécurité Globale". - -#+begin_quote -  - -<> -* -:PROPERTIES: -:CUSTOM_ID: error-title -:END: - -<> - -Error details - -<> - -<> -* -:PROPERTIES: -:CUSTOM_ID: video-password-title -:END: - -<> - -<> +(vidéo) [[data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0cmVtIiBoZWlnaHQ9IjRyZW0iIHZpZXdib3g9IjAgMCAyNCAyNCI+CiAgICAgICAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzRjNGM0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiI+PHJlY3Qgd2lkdGg9IjE4IiBoZWlnaHQ9IjExIiB4PSIzIiB5PSIxMSIgcng9IjIiIHJ5PSIyIj48L3JlY3Q+PHBhdGggZD0iTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0Ij48L3BhdGg+PC9nPgogICAgICA8L3N2Zz4=]] diff --git a/sources/cipherbliss_blog/lang_fr/20211023T195028__video-du-premier-chatons-camp-2021.org b/sources/cipherbliss_blog/lang_fr/20211023T195028__video-du-premier-chatons-camp-2021.org index 898147af..26656bd4 100644 --- a/sources/cipherbliss_blog/lang_fr/20211023T195028__video-du-premier-chatons-camp-2021.org +++ b/sources/cipherbliss_blog/lang_fr/20211023T195028__video-du-premier-chatons-camp-2021.org @@ -24,23 +24,7 @@ :CUSTOM_ID: vidéo-du-premier-chatons-camp-2021 :END: -<> -* -:PROPERTIES: -:CUSTOM_ID: error-title -:END: - -<> - -<> -* -:PROPERTIES: -:CUSTOM_ID: video-password-title -:END: - -<> - -<> +(vidéo) [[data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0cmVtIiBoZWlnaHQ9IjRyZW0iIHZpZXdib3g9IjAgMCAyNCAyNCI+PGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzRjNGM0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiI+PHJlY3Qgd2lkdGg9IjE4IiBoZWlnaHQ9IjExIiB4PSIzIiB5PSIxMSIgcng9IjIiIHJ5PSIyIj48L3JlY3Q+PHBhdGggZD0iTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0Ij48L3BhdGg+PC9nPjwvc3ZnPg==]] diff --git a/sources/cipherbliss_blog/lang_fr/20230323T095825__avoir-de-la-belle-imagerie-dans-josm-avec-la-bd-ortho-ign-et-mapillary.org b/sources/cipherbliss_blog/lang_fr/20230323T095825__avoir-de-la-belle-imagerie-dans-josm-avec-la-bd-ortho-ign-et-mapillary.org index 1fd77c57..daf2fdec 100644 --- a/sources/cipherbliss_blog/lang_fr/20230323T095825__avoir-de-la-belle-imagerie-dans-josm-avec-la-bd-ortho-ign-et-mapillary.org +++ b/sources/cipherbliss_blog/lang_fr/20230323T095825__avoir-de-la-belle-imagerie-dans-josm-avec-la-bd-ortho-ign-et-mapillary.org @@ -74,17 +74,7 @@ vos séquences de photos]].Pour une prise en main rapide de JOSM je vous conseille l'excellent tuto en 4 minutes de Capitaine Moustache sur le sujet: -<> -* -:PROPERTIES: -:CUSTOM_ID: error-title -:END: - -<> - -<> - -<> +(vidéo) Comme ça vous pourrez [[https://www.cipherbliss.com/comment-faire-du-livestream-entierement-libre-avec-peertube-v3-et-obs-studio/][faire @@ -92,17 +82,7 @@ du livestream]] de vos mappages à l'aise avec uniquement des outils libres.Comme présenté ici avec un petit accéléré de live que j'ai réalisé dans des coins paumés d'Essonne -<> -* -:PROPERTIES: -:CUSTOM_ID: error-title -:END: - -<> - -<> - -<> +(vidéo)  Bon mappage! diff --git a/sources/cipherbliss_blog/lang_fr/20230323T110750__linternet-des-objets-au-service-de-la-surveillance.org b/sources/cipherbliss_blog/lang_fr/20230323T110750__linternet-des-objets-au-service-de-la-surveillance.org index 9f537e5d..a9cf3339 100644 --- a/sources/cipherbliss_blog/lang_fr/20230323T110750__linternet-des-objets-au-service-de-la-surveillance.org +++ b/sources/cipherbliss_blog/lang_fr/20230323T110750__linternet-des-objets-au-service-de-la-surveillance.org @@ -116,28 +116,7 @@ carton qui ne feront que condamner notre vie privée et ont historiquement amené les heures les plus sombres de l'histoire humaine. - -<> -* -:PROPERTIES: -:CUSTOM_ID: error-title -:END: - -<> - -Error details - -<> - -<> -* -:PROPERTIES: -:CUSTOM_ID: video-password-title -:END: - -<> - -<> +(vidéo) [[data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0cmVtIiBoZWlnaHQ9IjRyZW0iIHZpZXdib3g9IjAgMCAyNCAyNCI+CiAgICAgICAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzRjNGM0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiI+PHJlY3Qgd2lkdGg9IjE4IiBoZWlnaHQ9IjExIiB4PSIzIiB5PSIxMSIgcng9IjIiIHJ5PSIyIj48L3JlY3Q+PHBhdGggZD0iTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0Ij48L3BhdGg+PC9nPgogICAgICA8L3N2Zz4=]] diff --git a/sources/cipherbliss_blog/lang_fr/20250223175621__rétrospective-de-blogs.org b/sources/cipherbliss_blog/lang_fr/20250223175621__rétrospective-de-blogs.org new file mode 100644 index 00000000..cec06baa --- /dev/null +++ b/sources/cipherbliss_blog/lang_fr/20250223175621__rétrospective-de-blogs.org @@ -0,0 +1,119 @@ + +:PROPERTIES: +:ID: 9167e3b2-8ee3-4aaf-afe4-a8d96f8e836d +:END: + +#+title: Rétrospective de blogs +#+post_ID: +#+post_slug: organisation-de-taches-orgmode +#+post_url: https://www.ciperbliss.com/2025/rétrospective-de-blogs +#+post_title: Rétrospective de blogs +#+post_tags: blog, orgmode, gemini, python, bash, dessin +#+post_series: +#+post_type: post +#+post_status: publish +#+post_date_published: <2025-02-23 17:56:21> +#+post_date_modified: <2025-02-23 17:56:21> +#+post_index_page_roam_id: 9167e3b2-8ee3-4aaf-afe4-a8d96f8e836d +#+BLOG: cipherbliss_blog + +* Rétrospective de blogs + +Au début, j'avais un blog sur papier dans mon agenda de lycée où je dessinais ce qui m'arrivait avec les camaradz de l'époque, ce qui m'a bien occupé pendant 4 ans. C'était le média social très low tech en papier de l'époque. En y repensant, mes premiers journaux de bord sur papier datent de bien avant cela, autour de 1995 quand je me suis régulièrement mis à écrire sur tout et rien juste pour le plaisir de l'écriture. + +Puis je découvre les forums de dessins en ligne à l'aide d'un ami qui s'amuse à bidouiller des mods de jeu comme American Mc Gee's Alice sur ordinateur. + +Au lycée je bricole un site personnel pour montrer mes dessins en html et css, en dupliquant plein de choses d'une page à l'autre, ce qui rend l'évolution pas super simple, le tout hébergé chez Lycos. Je ne fais pas de backup de ce site et expérimentera les déconvenues d'un crash d'ordi bien plus tard, ainsi que la découverte qu'il est tout à fait possible qu'une grosse boîte comme Lycos puisse tout à fait supprimer ses hébergements web sans prévenir, et disparaître du jour au lendemain sans possibilité de recours. Pareil pour Photobucket où j'avais placé des dessins et des photos retouchées. + +En 2003, un copain, Monoceros, me propose d'installer un blog dotclear sur mon espace free, ce qui me convient pendant pas mal de temps. Puis souhaitant bénéficier de thèmes un peu plus jolis dans un catalogue bien plus fourni de thèmes et de plugins, je convertis mon blog Dotclear en blog Wordpress, toujours hébergé chez free. + +Une copine pas du tout ingénieure, Puchi-ko, mais aimant la musique Japonaise me montre comment me servir des flux RSS des sites qu'elle lit en utilisant Firefox, c'est une super fonctionnalité dont je découvre les nombreux avantages. J'adopte peu de temps après Thunderbird pour y mettre les flux RSS principalement de sites de dessin. De nos jours, Firefox ne propose plus cette fonctionnalité et peu de sites web proposent un flux RSS. + +J'incite les gens que je connais et fréquente en festival manga / fanzine / dessin en ligne à avoir leur site personnel pour présenter leurs dessins, commençant à comprendre que dépendre d'acteurs qui n'en ont rien à faire de ce que l'on place chez eux est un risque important. +Je participe à un évènement de l'école d'ingé d'Every où le thème est "les blogs" avec d'autres gens qui le pratiquent depuis un bon bout de temps, genre Korben, Sauvane, etc. + +J'avais développé un script de migration des billets en base de données pour aller vers Wordpress. +Je constate aussi que le temps avançant, de plus en plus d'artistes qui avaient ouvert un blog sur une plateforme comme Livejournal, overblog ou d'autres endroits exotiques disposant de flux RSS ne mettent plus leurs oeuvres en ligne (sauf Loish <3 https://blog.loish.net ) + +Les gens se rendent de plus en plus captifs de plateformes privatrices sans flux RSS qui cachent à ses abonnés ce que l'on poste selon son bon vouloir, tout en requérant aux visiteurs d'avoir un compte pour accéder à ce qui est publié. +Je commence mon plan pour sortir de Facebook et Google et envisage des exports de mes données, tout en incitant d'autres à faire de même et à toujours alimenter une adresse personnelle et me mets à héberger mon instance Mastodon et à suivre des artistes dessus. + +Mes flux RSS d'artistes suivis deviennent de plus en plus morts, ayant migré deux ou trois fois de nom de domaine aussi pour mes blogs je fais en sorte d'indiquer régulièrement la nouvelle adresse et d'avoir les contenus qui fonctionnent à coup de rechercher et remplacer les liens en base de données dans mes sites. Ce n'est pas très compliqué et ça marche assez bien, le plus relou étant le changement de chemin vers les articles, le chemin du slug d'article. + +** Inspiration wiki personnel +Ayant adopté Zettlr pour faire un wiki perso et exporter tous les trucs que j'avais écrit dans des blogs avec base de donnée mysql, je fais une moulinette pour exporter mes écrits en Markdown. +Un kamaradz libriste me vante les mérites d'Emacs et je m'y essaie. Je lis des gens qui aiment particulièrement le format Org, et convertis mes écrits de Markdown à Org pour me faire un wiki personnel. +Emacs étant un bon outil pour se forger ses propres raccourcis clavier c'était bien pratique. J'ai donc mon wiki dans un format Orgmode en réunissant plein de fichiers dont je peux voir une représentation en graphe orienté avec org-roam-ui, ça me permet de préparer des articles et de relier des idées ensemble, sans que mes blogs exposent l'intégralité de mes pages de wiki. + + Je suis étonné de voir que l'ensemble de mes écrits en ligne (blogs, site perso, médias sociaux et forums) tient sur un espace disque très restreint: 33Mo. Mes dessins avec leurs versions de travail intermédiaires, tiennent quant à eux sur une cinquantaine de Go. Ce qui aurait tenu sur le disque dur de mon premier ordi perso acheté en 2003 avec l'aide de mon frère, le disque était alors un disque IDE de 80Go. + +Constatant qu'il y a un temps non négligeable entre mes écrits et leurs publication sur mes blogs wordpress, j'envisage de faire quelque chose pour relier plus directement l'écrit à la publication. + +Puis lisant du Ploum qui évoque la version finale de son blog parce qu'il en a gros des évolutions bancales et des trucs relou des CMS qui deviennent des monstres, je m'intéresse à la gestion de blog statique et aux capsules gemini. + +https://ploum.net/2022-12-04-fin-du-blog-et-derniere-version.html + +** S'inspirer des meilleurs +Je regarde comment fonctionnent deux ou trois outils de génération de blog statique, en tentant d'y reporter quelques uns de mes contenus: Pelican, Hugo, Offpunk, LazyBlorg, Zola... certains sont affreusement complexes pour comprendre les infos nécessaires à leur utilisation, d'autres beaucoup moins. + +J'examine les fonctionnalités minimales dont j'ai besoin, et quel est l'effort à faire en développement pour adapter un outil existant ou partir vers une solution maison en quelques scripts. +Je veux pouvoir réutiliser mes articles Org en devinant la date de leur publication, leur titre et leur contenu. + +Je constate que pour réutiliser des choses existantes il faut forcément bidouiller sur le contenu des articles, ne serait-ce que pour que le moteur de blog détecte les dates des articles, car la date de création ou de modification de mes fichiers org ne reflète pas du tout cela. Heureusement c'est une bidouille assez simple à faire. + +** Quelques objectifs pour mon moteur de blog: +J'opte pour un petit ensemble d'outils qui me permettent de générer à partir de documents org: + - plusieurs sites, dont les contenus sont séparés dans un dossier + - un flux RSS/Atom par site + - un thème de base en quelques lignes de scss, différent pour chaque site si on veut + - avec des posts dans plusieurs langues + - des tags naviguables qui permettent de lister les autres articles ayant ce tag + - des tags auto détectés à partir d'un vocabulaire contrôlé, spécifique à chaque blog + - une gestion simple des chemins vers les articles avec un préfixe d'année et des slugs + - pas besoin de section commentaires ou de plugins, les gens peuvent m'écrire par email à contact+blog@cipherbliss.com + - les templates html permettent une réutilisation de style pour les thèmes de wordpress + - une configuration de contenu paramétrable pour chacun des sites, titre, description, tags de base, signature, infos de soutien financier, etc. + - un index qui présente en entier quelques articles puis liste les suivants avec des liens au lieu de faire une infinité de pages + - pas de moteur de recherche interne, on utilise un lien vers un moteur externe + - une mise à disposition de l'intégralité des articles sur une forge logicielle qui cause le Git, ici +https://forge.chapril.org/tykayn/orgmode-to-gemini-blog + - une automatisation de la gestion des nouvelles images + - pas d'administration à plusieurs, bien que c'est tout à fait faisable en partageant un dossier et en ajoutant chacun ses articles avec la gestion de version git. + - un outil en ligne de commande pour simplifier la création de nouvel article avec les quelques infos nécessaires à tout article: titre, date, texte. + +Faire de la publication programmée à une heure donnée? Ce serait faisable mais finalement je n'y tiens pas particulièremment. + +Les quelques bibliothèques pour faire ce blog dynamique: git, python, pypandoc, argparse, SASS. + +Avec un peu de bash, pandoc et quelques scripts python je parviens à générer en une trentaine de secondes des pages html à partir d'un milier d'articles. En utilisant pypandoc au lieu de pandoc je réduis ce temps de conversion à moins de 2 secondes. En faisant quelques autres vérifications pour ne régénérer que les articles qui ont été modifiés depuis la dernière génération, comme le font d'autres moteurs de blog, je réduis encore ce temps. + +La mise à jour des blogs est super simple, un git pull, une génération de blog, et une copie vers les dossiers hébergés. Le tout peut se faire dans un cronjob qui lance un simple script qui ne fera des changements que si il y a du neuf. + +Voici les sources du dépot, qui contiennent donc tous mes écrits en ligne sous licence libre CC-BY-SA et en AGPLv3+ pour les scripts: + +https://forge.chapril.org/tykayn/orgmode-to-gemini-blog + +Pour le fun, ce blog de cipherbliss contient 274 articles, 140 000 mots, qui se lisent en 10h34min si vous lisez à la vitesse moyenne de 220 mots minutes comme beaucoup d'adultes. + +Bons essais à vous si vous souhaitez adopter ce moteur de blog statique, il vous suffira de commencer à lancer une commande et à mettre dedans des anciens fichiers org (dans le dossier `sources/mon_blog`), ou à en créer un nouveau avec une commande sur `new_article.py`. + +#+begin_src bash + git clone https://forge.chapril.org/tykayn/orgmode-to-gemini-blog + + cd orgmode-to-gemini-blog + + py new_article.py # ceci vous demandera le nom du dossier de blog, la langue, et le titre de l'article + # +#+end_src + + +Vous pouvez maintenant modifier votre nouvel article avec votre éditeur de texte préféré. +Et zou pour convertir votre blog en site statique: + +#+begin_src bash + bash converters mon_blog +#+end_src + +Ce qui génère un site html statique et une capsule gemini dans les dossiers de destination: html_websites/mon_blog et capsules-gemini/mon_blog + +Lisez le readme pour d'avantage de personnalisation. Havez fun! \ No newline at end of file diff --git a/sources/dragonfeu_blog/lang_fr/2024-11-02__coucou-gemini.org b/sources/dragonfeu_blog/lang_fr/2024-11-02__coucou-gemini.org deleted file mode 100644 index 2ec62526..00000000 --- a/sources/dragonfeu_blog/lang_fr/2024-11-02__coucou-gemini.org +++ /dev/null @@ -1,7 +0,0 @@ -#+post_title: Salut les giminiciens -#+post_tags: gemini,blog,salut - -* Salut les giminiciens - - -hop hop coucou diff --git a/sources/dragonfeu_blog/lang_fr/20250129143536__pouet-pouet-hop.org b/sources/dragonfeu_blog/lang_fr/20250129143536__pouet-pouet-hop.org deleted file mode 100644 index f29a7a05..00000000 --- a/sources/dragonfeu_blog/lang_fr/20250129143536__pouet-pouet-hop.org +++ /dev/null @@ -1,27 +0,0 @@ - -#+title: pouet-pouet-hop -#+post_ID: -#+post_slug: organisation-de-taches-orgmode -#+post_url: https://www.ciperbliss.com/2024/pouet-pouet-hop -#+post_title: pouet pouet hop -#+post_tags: -#+post_type: post -#+post_mime_types: -#+post_guid: -#+post_status: publish -#+post_date_published: <2025-01-29 14:35:36> -#+post_date_modified: <2025-01-29 14:35:36> -#+post_index_page_roam_id: -#+BLOG: cipherbliss_blog dragonfeu_blog - -* pouet pouet hop -#+CAPTION: This is the caption for the next figure -#+NAME: fig:placeland - -coin coin -[[https://miro.medium.com/v2/resize:fit:490/0*R7R5WF5O-tznduZZ.jpg]] - - -[[https://placehold.co/600x400/png]] - -lorem bla bla \ No newline at end of file diff --git a/sources/dragonfeu_blog/lang_fr/20250222000320__.org b/sources/dragonfeu_blog/lang_fr/20250222000320__.org deleted file mode 100644 index ce15bcbf..00000000 --- a/sources/dragonfeu_blog/lang_fr/20250222000320__.org +++ /dev/null @@ -1,17 +0,0 @@ - -#+title: -#+post_ID: -#+post_slug: organisation-de-taches-orgmode -#+post_url: https://www.ciperbliss.com/2025/ -#+post_title: None -#+post_tags: -#+post_type: post -#+post_status: publish -#+post_date_published: <2025-02-22 00:03:20> -#+post_date_modified: <2025-02-22 00:03:20> -#+post_index_page_roam_id: -#+BLOG: cipherbliss_blog dragonfeu_blog - -* None - - diff --git a/sources/dragonfeu_blog/lang_fr/20250222000532__hé-bien-vouala.org b/sources/dragonfeu_blog/lang_fr/20250222000532__hé-bien-vouala.org deleted file mode 100644 index cc2858b5..00000000 --- a/sources/dragonfeu_blog/lang_fr/20250222000532__hé-bien-vouala.org +++ /dev/null @@ -1,17 +0,0 @@ - -#+title: hé-bien-vouala -#+post_ID: -#+post_slug: organisation-de-taches-orgmode -#+post_url: https://www.ciperbliss.com/2025/hé-bien-vouala -#+post_title: hé bien vouala -#+post_tags: -#+post_type: post -#+post_status: publish -#+post_date_published: <2025-02-22 00:05:32> -#+post_date_modified: <2025-02-22 00:05:32> -#+post_index_page_roam_id: -#+BLOG: cipherbliss_blog dragonfeu_blog - -* hé bien vouala - - diff --git a/sources/dragonfeu_blog/lang_fr/20250223175621__rétrospective-de-blogs.org b/sources/dragonfeu_blog/lang_fr/20250223175621__rétrospective-de-blogs.org new file mode 100644 index 00000000..cec06baa --- /dev/null +++ b/sources/dragonfeu_blog/lang_fr/20250223175621__rétrospective-de-blogs.org @@ -0,0 +1,119 @@ + +:PROPERTIES: +:ID: 9167e3b2-8ee3-4aaf-afe4-a8d96f8e836d +:END: + +#+title: Rétrospective de blogs +#+post_ID: +#+post_slug: organisation-de-taches-orgmode +#+post_url: https://www.ciperbliss.com/2025/rétrospective-de-blogs +#+post_title: Rétrospective de blogs +#+post_tags: blog, orgmode, gemini, python, bash, dessin +#+post_series: +#+post_type: post +#+post_status: publish +#+post_date_published: <2025-02-23 17:56:21> +#+post_date_modified: <2025-02-23 17:56:21> +#+post_index_page_roam_id: 9167e3b2-8ee3-4aaf-afe4-a8d96f8e836d +#+BLOG: cipherbliss_blog + +* Rétrospective de blogs + +Au début, j'avais un blog sur papier dans mon agenda de lycée où je dessinais ce qui m'arrivait avec les camaradz de l'époque, ce qui m'a bien occupé pendant 4 ans. C'était le média social très low tech en papier de l'époque. En y repensant, mes premiers journaux de bord sur papier datent de bien avant cela, autour de 1995 quand je me suis régulièrement mis à écrire sur tout et rien juste pour le plaisir de l'écriture. + +Puis je découvre les forums de dessins en ligne à l'aide d'un ami qui s'amuse à bidouiller des mods de jeu comme American Mc Gee's Alice sur ordinateur. + +Au lycée je bricole un site personnel pour montrer mes dessins en html et css, en dupliquant plein de choses d'une page à l'autre, ce qui rend l'évolution pas super simple, le tout hébergé chez Lycos. Je ne fais pas de backup de ce site et expérimentera les déconvenues d'un crash d'ordi bien plus tard, ainsi que la découverte qu'il est tout à fait possible qu'une grosse boîte comme Lycos puisse tout à fait supprimer ses hébergements web sans prévenir, et disparaître du jour au lendemain sans possibilité de recours. Pareil pour Photobucket où j'avais placé des dessins et des photos retouchées. + +En 2003, un copain, Monoceros, me propose d'installer un blog dotclear sur mon espace free, ce qui me convient pendant pas mal de temps. Puis souhaitant bénéficier de thèmes un peu plus jolis dans un catalogue bien plus fourni de thèmes et de plugins, je convertis mon blog Dotclear en blog Wordpress, toujours hébergé chez free. + +Une copine pas du tout ingénieure, Puchi-ko, mais aimant la musique Japonaise me montre comment me servir des flux RSS des sites qu'elle lit en utilisant Firefox, c'est une super fonctionnalité dont je découvre les nombreux avantages. J'adopte peu de temps après Thunderbird pour y mettre les flux RSS principalement de sites de dessin. De nos jours, Firefox ne propose plus cette fonctionnalité et peu de sites web proposent un flux RSS. + +J'incite les gens que je connais et fréquente en festival manga / fanzine / dessin en ligne à avoir leur site personnel pour présenter leurs dessins, commençant à comprendre que dépendre d'acteurs qui n'en ont rien à faire de ce que l'on place chez eux est un risque important. +Je participe à un évènement de l'école d'ingé d'Every où le thème est "les blogs" avec d'autres gens qui le pratiquent depuis un bon bout de temps, genre Korben, Sauvane, etc. + +J'avais développé un script de migration des billets en base de données pour aller vers Wordpress. +Je constate aussi que le temps avançant, de plus en plus d'artistes qui avaient ouvert un blog sur une plateforme comme Livejournal, overblog ou d'autres endroits exotiques disposant de flux RSS ne mettent plus leurs oeuvres en ligne (sauf Loish <3 https://blog.loish.net ) + +Les gens se rendent de plus en plus captifs de plateformes privatrices sans flux RSS qui cachent à ses abonnés ce que l'on poste selon son bon vouloir, tout en requérant aux visiteurs d'avoir un compte pour accéder à ce qui est publié. +Je commence mon plan pour sortir de Facebook et Google et envisage des exports de mes données, tout en incitant d'autres à faire de même et à toujours alimenter une adresse personnelle et me mets à héberger mon instance Mastodon et à suivre des artistes dessus. + +Mes flux RSS d'artistes suivis deviennent de plus en plus morts, ayant migré deux ou trois fois de nom de domaine aussi pour mes blogs je fais en sorte d'indiquer régulièrement la nouvelle adresse et d'avoir les contenus qui fonctionnent à coup de rechercher et remplacer les liens en base de données dans mes sites. Ce n'est pas très compliqué et ça marche assez bien, le plus relou étant le changement de chemin vers les articles, le chemin du slug d'article. + +** Inspiration wiki personnel +Ayant adopté Zettlr pour faire un wiki perso et exporter tous les trucs que j'avais écrit dans des blogs avec base de donnée mysql, je fais une moulinette pour exporter mes écrits en Markdown. +Un kamaradz libriste me vante les mérites d'Emacs et je m'y essaie. Je lis des gens qui aiment particulièrement le format Org, et convertis mes écrits de Markdown à Org pour me faire un wiki personnel. +Emacs étant un bon outil pour se forger ses propres raccourcis clavier c'était bien pratique. J'ai donc mon wiki dans un format Orgmode en réunissant plein de fichiers dont je peux voir une représentation en graphe orienté avec org-roam-ui, ça me permet de préparer des articles et de relier des idées ensemble, sans que mes blogs exposent l'intégralité de mes pages de wiki. + + Je suis étonné de voir que l'ensemble de mes écrits en ligne (blogs, site perso, médias sociaux et forums) tient sur un espace disque très restreint: 33Mo. Mes dessins avec leurs versions de travail intermédiaires, tiennent quant à eux sur une cinquantaine de Go. Ce qui aurait tenu sur le disque dur de mon premier ordi perso acheté en 2003 avec l'aide de mon frère, le disque était alors un disque IDE de 80Go. + +Constatant qu'il y a un temps non négligeable entre mes écrits et leurs publication sur mes blogs wordpress, j'envisage de faire quelque chose pour relier plus directement l'écrit à la publication. + +Puis lisant du Ploum qui évoque la version finale de son blog parce qu'il en a gros des évolutions bancales et des trucs relou des CMS qui deviennent des monstres, je m'intéresse à la gestion de blog statique et aux capsules gemini. + +https://ploum.net/2022-12-04-fin-du-blog-et-derniere-version.html + +** S'inspirer des meilleurs +Je regarde comment fonctionnent deux ou trois outils de génération de blog statique, en tentant d'y reporter quelques uns de mes contenus: Pelican, Hugo, Offpunk, LazyBlorg, Zola... certains sont affreusement complexes pour comprendre les infos nécessaires à leur utilisation, d'autres beaucoup moins. + +J'examine les fonctionnalités minimales dont j'ai besoin, et quel est l'effort à faire en développement pour adapter un outil existant ou partir vers une solution maison en quelques scripts. +Je veux pouvoir réutiliser mes articles Org en devinant la date de leur publication, leur titre et leur contenu. + +Je constate que pour réutiliser des choses existantes il faut forcément bidouiller sur le contenu des articles, ne serait-ce que pour que le moteur de blog détecte les dates des articles, car la date de création ou de modification de mes fichiers org ne reflète pas du tout cela. Heureusement c'est une bidouille assez simple à faire. + +** Quelques objectifs pour mon moteur de blog: +J'opte pour un petit ensemble d'outils qui me permettent de générer à partir de documents org: + - plusieurs sites, dont les contenus sont séparés dans un dossier + - un flux RSS/Atom par site + - un thème de base en quelques lignes de scss, différent pour chaque site si on veut + - avec des posts dans plusieurs langues + - des tags naviguables qui permettent de lister les autres articles ayant ce tag + - des tags auto détectés à partir d'un vocabulaire contrôlé, spécifique à chaque blog + - une gestion simple des chemins vers les articles avec un préfixe d'année et des slugs + - pas besoin de section commentaires ou de plugins, les gens peuvent m'écrire par email à contact+blog@cipherbliss.com + - les templates html permettent une réutilisation de style pour les thèmes de wordpress + - une configuration de contenu paramétrable pour chacun des sites, titre, description, tags de base, signature, infos de soutien financier, etc. + - un index qui présente en entier quelques articles puis liste les suivants avec des liens au lieu de faire une infinité de pages + - pas de moteur de recherche interne, on utilise un lien vers un moteur externe + - une mise à disposition de l'intégralité des articles sur une forge logicielle qui cause le Git, ici +https://forge.chapril.org/tykayn/orgmode-to-gemini-blog + - une automatisation de la gestion des nouvelles images + - pas d'administration à plusieurs, bien que c'est tout à fait faisable en partageant un dossier et en ajoutant chacun ses articles avec la gestion de version git. + - un outil en ligne de commande pour simplifier la création de nouvel article avec les quelques infos nécessaires à tout article: titre, date, texte. + +Faire de la publication programmée à une heure donnée? Ce serait faisable mais finalement je n'y tiens pas particulièremment. + +Les quelques bibliothèques pour faire ce blog dynamique: git, python, pypandoc, argparse, SASS. + +Avec un peu de bash, pandoc et quelques scripts python je parviens à générer en une trentaine de secondes des pages html à partir d'un milier d'articles. En utilisant pypandoc au lieu de pandoc je réduis ce temps de conversion à moins de 2 secondes. En faisant quelques autres vérifications pour ne régénérer que les articles qui ont été modifiés depuis la dernière génération, comme le font d'autres moteurs de blog, je réduis encore ce temps. + +La mise à jour des blogs est super simple, un git pull, une génération de blog, et une copie vers les dossiers hébergés. Le tout peut se faire dans un cronjob qui lance un simple script qui ne fera des changements que si il y a du neuf. + +Voici les sources du dépot, qui contiennent donc tous mes écrits en ligne sous licence libre CC-BY-SA et en AGPLv3+ pour les scripts: + +https://forge.chapril.org/tykayn/orgmode-to-gemini-blog + +Pour le fun, ce blog de cipherbliss contient 274 articles, 140 000 mots, qui se lisent en 10h34min si vous lisez à la vitesse moyenne de 220 mots minutes comme beaucoup d'adultes. + +Bons essais à vous si vous souhaitez adopter ce moteur de blog statique, il vous suffira de commencer à lancer une commande et à mettre dedans des anciens fichiers org (dans le dossier `sources/mon_blog`), ou à en créer un nouveau avec une commande sur `new_article.py`. + +#+begin_src bash + git clone https://forge.chapril.org/tykayn/orgmode-to-gemini-blog + + cd orgmode-to-gemini-blog + + py new_article.py # ceci vous demandera le nom du dossier de blog, la langue, et le titre de l'article + # +#+end_src + + +Vous pouvez maintenant modifier votre nouvel article avec votre éditeur de texte préféré. +Et zou pour convertir votre blog en site statique: + +#+begin_src bash + bash converters mon_blog +#+end_src + +Ce qui génère un site html statique et une capsule gemini dans les dossiers de destination: html_websites/mon_blog et capsules-gemini/mon_blog + +Lisez le readme pour d'avantage de personnalisation. Havez fun! \ No newline at end of file diff --git a/sources/dragonfeu_blog/lang_fr/2024-09-08__strategie-mitigation-accident-fusion-coeur-epr2.org b/sources/dragonfeu_blog/lang_fr/20250223183908__stratégie-de-mitigation-de-l’accident-de-fusion-du-cœur-sur-l’epr.org similarity index 97% rename from sources/dragonfeu_blog/lang_fr/2024-09-08__strategie-mitigation-accident-fusion-coeur-epr2.org rename to sources/dragonfeu_blog/lang_fr/20250223183908__stratégie-de-mitigation-de-l’accident-de-fusion-du-cœur-sur-l’epr.org index 3366ffc7..df6cf11c 100644 --- a/sources/dragonfeu_blog/lang_fr/2024-09-08__strategie-mitigation-accident-fusion-coeur-epr2.org +++ b/sources/dragonfeu_blog/lang_fr/20250223183908__stratégie-de-mitigation-de-l’accident-de-fusion-du-cœur-sur-l’epr.org @@ -1,4 +1,24 @@ -* Stratégie de mitigation de l’accident de fusion du cœur sur l’EPR. + +:PROPERTIES: +:ID: 2d3dea63-7567-4def-80d9-c9bd82d41eed +:END: + +#+title: Stratégie de mitigation de l’accident de fusion du cœur sur l’EPR +#+post_ID: +#+post_slug: organisation-de-taches-orgmode +#+post_url: https://www.ciperbliss.com/2025/stratégie-de-mitigation-de-l’accident-de-fusion-du-cœur-sur-l’epr +#+post_title: Stratégie de mitigation de l’accident de fusion du cœur sur l’EPR +#+post_tags: +#+post_series: +#+post_type: post +#+post_status: publish +#+post_date_published: <2025-02-23 18:39:08> +#+post_date_modified: <2025-02-23 18:39:08> +#+post_index_page_roam_id: 2d3dea63-7567-4def-80d9-c9bd82d41eed +#+BLOG: dragonfeu_blog + +* Stratégie de mitigation de l’accident de fusion du cœur sur l’EPR + J’imagine si vous avez cliqué sur cet article, vous savez que l’EPR de Flamanville vient de “diverger” ( /nota: article écrit en septembre 2024/ ). Autrement dit la réaction en chaîne a été, et pour la première fois dans son cœur, auto-entretenue, permettant un équilibre neutronique. @@ -299,32 +319,4 @@ Je vous donne mes sources sur [[https://we.tl/t-Ubd7Pil4Np][ce lien]] (attention [[https://miro.medium.com/v2/resize:fit:629/1*1Iepu71t1QQjOppTrNy7OQ.png]] -[[https://medium.com/tag/nuclear?source=post_page-----f82c1d15ed58--------------------------------][ - -Nuclear - -]] - -[[https://medium.com/tag/accident?source=post_page-----f82c1d15ed58--------------------------------][ - -Accident - -]] - -[[https://medium.com/tag/epr?source=post_page-----f82c1d15ed58--------------------------------][ - -Epr - -]] - -[[https://medium.com/tag/astec?source=post_page-----f82c1d15ed58--------------------------------][ - -Astec - -]] - -[[https://medium.com/tag/fukushima?source=post_page-----f82c1d15ed58--------------------------------][ - -Fukushima - -]] +[[https://medium.com/tag/nuclearource=post_page-----f82c1d15ed58--------------------------------][Nuclear]] \ No newline at end of file