fix template include for article

This commit is contained in:
Tykayn 2025-05-13 00:13:57 +02:00 committed by tykayn
parent a473479b83
commit 9ab4b98c1d
30 changed files with 115 additions and 87 deletions

View file

@ -52,7 +52,7 @@ except FileNotFoundError:
print(f"Impossible de trouver le fichier {json_file}") print(f"Impossible de trouver le fichier {json_file}")
exit(1) exit(1)
except Exception as e: except Exception as e:
print(f"Erreur lors de la lecture du fichier {json_file}: {e}") print(f"gather tags in json: Erreur lors de la lecture du fichier {json_file}: {e}")
exit(1) exit(1)
def find_org_files(directory): def find_org_files(directory):
@ -111,14 +111,6 @@ def generate_html_pages_for_all_tags(tag_to_files, html_output_folder):
sorted_tags = sorted(tag_to_files.items()) sorted_tags = sorted(tag_to_files.items())
for tag, files in sorted_tags: for tag, files in sorted_tags:
print('------------ tag', tag, len(files))
print('Files pour ce tag:', files)
print('Clés disponibles dans articles_info:', list(articles_info.keys())[:5], '...')
# Afficher un exemple détaillé de non-correspondance
for f in files:
if f not in articles_info:
print(f"Fichier non trouvé dans articles_info: {f}")
# Préparer les données pour le template # Préparer les données pour le template
data = { data = {

View file

@ -23,13 +23,13 @@ start_time = time.time()
# Configurer argparse pour prendre le blog en argument # Configurer argparse pour prendre le blog en argument
parser = argparse.ArgumentParser(description='Générer une liste des derniers articles de blog.') 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='cipherbliss_blog') 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=True) parser.add_argument('--run_gemini', type=bool, help='Activer ou non la génération des billets gemini', default=True)
parser.add_argument('--run_pandoc', type=str, help='Activer ou non la génération des fichiers html', default=True) parser.add_argument('--run_pandoc', type=bool, help='Activer ou non la génération des fichiers html', default=True)
parser.add_argument('--enable_roam_id_rewrite', type=str, help='Activer ou non la réécriture des liens roam', default=False) parser.add_argument('--enable_roam_id_rewrite', type=bool, help='Activer ou non la réécriture des liens roam', default=False)
parser.add_argument('--generate_html_pages', type=str, help='Activer ou non la génération des pages html', default=True) parser.add_argument('--generate_html_pages', type=bool, help='Activer ou non la génération des pages html', default=True)
parser.add_argument('--generate_linkings_json', type=str, help='Activer ou non la génération du json des liens entre articles', default=True) parser.add_argument('--generate_linkings_json', type=bool, help='Activer ou non la génération du json des liens entre articles', default=True)
parser.add_argument('--force_html_regen', action='store_true', help='Forcer la régénération des fichiers HTML même s\'ils existent déjà', default=False) parser.add_argument('--force_html_regen', type=bool, help='Forcer la régénération des fichiers HTML même s\'ils existent déjà', default=False)
parser.add_argument('--rebuild_articles_info_json', type=str, help='Reconstruire le fichier de données JSON des articles', default=False) parser.add_argument('--rebuild_articles_info_json', type=bool, help='Reconstruire le fichier de données JSON des articles', default=False)
args = parser.parse_args() args = parser.parse_args()
run_gemini = args.run_gemini run_gemini = args.run_gemini
@ -191,6 +191,8 @@ if generate_linkings_json :
# Vérifier si l'article doit être reconstruit # Vérifier si l'article doit être reconstruit
file_modified_time = os.path.getmtime(file_path) file_modified_time = os.path.getmtime(file_path)
rebuild_this_article_gemini = file_modified_time > last_gemini_build_time rebuild_this_article_gemini = file_modified_time > last_gemini_build_time
if rebuild_this_article_gemini:
print("le dernier build gemini est plus ancien que la dernière modification de la source, on le rebuild")
except Exception as e: except Exception as e:
print(f"Erreur lors de la vérification des dates pour {gemini_path}: {e}") print(f"Erreur lors de la vérification des dates pour {gemini_path}: {e}")
rebuild_this_article_gemini = True rebuild_this_article_gemini = True
@ -238,7 +240,7 @@ if generate_linkings_json :
if len(files_dict[slug_with_year]['html_content_without_h1']) > 0 : if len(files_dict[slug_with_year]['html_content_without_h1']) > 0 :
html_content_without_h1 = files_dict[slug_with_year]['html_content_without_h1'] html_content_without_h1 = files_dict[slug_with_year]['html_content_without_h1']
else: else:
print('========= pas de contenu html existant: ', title) print('========= pas de contenu html existant: ', title , '|on le génère|',slug_with_year)
print(f"\033[91m {time.strftime('%H:%M:%S')} BRRRRRRRRRRRRR pandoc html_content : {title} en html\033[0m") print(f"\033[91m {time.strftime('%H:%M:%S')} BRRRRRRRRRRRRR pandoc html_content : {title} en html\033[0m")
pandoc_runs_counter += 1 pandoc_runs_counter += 1
html_content = pypandoc.convert_text(content_without_h1, 'html', format='org') html_content = pypandoc.convert_text(content_without_h1, 'html', format='org')
@ -247,13 +249,13 @@ if generate_linkings_json :
if run_pandoc and rebuild_this_article_html or force_html_regen: if run_pandoc and rebuild_this_article_html or force_html_regen:
print(f"run_pandoc: {run_pandoc}") # print(f"run_pandoc: {run_pandoc}")
print(f"rebuild_this_article_html: {rebuild_this_article_html}") # print(f"rebuild_this_article_html: {rebuild_this_article_html}")
print(f"force_html_regen: {force_html_regen}") # print(f"force_html_regen: {force_html_regen}")
# convertir le contenu d'article org vers html # convertir le contenu d'article org vers html
print(f"\033[91m {time.strftime('%H:%M:%S')} BRRRRRRRRRRRRR pandoc : {title} en html\033[0m")
# print(f"\033[91m.\033[0m", end='', flush=True) # print(f"\033[91m.\033[0m", end='', flush=True)
if not html_content: if not html_content:
print(f"\033[91m {time.strftime('%H:%M:%S')} BRRRRRRRRRRRRR pandoc : {title} en html\033[0m")
html_content = pypandoc.convert_text(content_without_h1, 'html', format='org') html_content = pypandoc.convert_text(content_without_h1, 'html', format='org')
html_content_without_h1 = re.sub(r'<h1>.*?</h1>', '', html_content) html_content_without_h1 = re.sub(r'<h1>.*?</h1>', '', html_content)
pandoc_runs_counter += 1 pandoc_runs_counter += 1
@ -435,8 +437,11 @@ Dernière mise à jour: {dt.datetime.now().strftime('%Y-%m-%d, %H:%M:%S')}
=> tags.gmi Tags => tags.gmi Tags
----------------------------------------------- -----------------------------------------------
{template_content['SOUTIEN']} {template_content['SOUTIEN']}
----------------------------------------------- -----------------------------------------------
{template_content['WEBSITE_GENERATOR_DESCRIPTION']} {template_content['WEBSITE_GENERATOR_DESCRIPTION']}
{template_content['WEBSITE_GENERATOR']} {template_content['WEBSITE_GENERATOR']}
""" """
@ -535,7 +540,7 @@ def generate_article_pages(json_file, template_file, output_dir):
print(f"\033[94m Nombre d'articles gemini générés : {counter_gemini}\033[0m") print(f"\033[94m Nombre d'articles gemini générés : {counter_gemini}\033[0m")
return return
except IOError as e: except IOError as e:
print(f"Erreur lors de la lecture du fichier {json_file}: {e}") print(f"linking articles prev next: Erreur lors de la lecture du fichier {json_file}: {e}")
sys.exit(1) sys.exit(1)
except Exception as e: except Exception as e:
print(f"Erreur inattendue lors de la lecture du fichier {json_file}: {e}") print(f"Erreur inattendue lors de la lecture du fichier {json_file}: {e}")

View file

@ -7,7 +7,11 @@ sass templates/styles_src/style_general.scss templates/styles/style_general.css
echo "copier le style général et le js principal vers html-websites pour chaque site" echo "copier le style général et le js principal vers html-websites pour chaque site"
for i in $(ls html-websites); do for i in $(ls sources); do
if [ -d "html-websites/$i" ]; then
cp templates/styles/style_general.css html-websites/$i/style.css cp templates/styles/style_general.css html-websites/$i/style.css
cp templates/js/main_script.js html-websites/$i/main_script.js cp templates/js/main_script.js html-websites/$i/main_script.js
fi
done done
echo "c'est fait!"

View file

@ -29,7 +29,7 @@ raconte pourquoi les femmes sont encore bien trop mises à l'écart des
corps de métier. corps de métier.
<<player>> https://www.youtube.com/watch?v=FEeTLopLkEo
* Une erreur s'est produite. * Une erreur s'est produite.

View file

@ -19,7 +19,7 @@
#+retrieved_from_db_at: <2024-11-18 16:25:08> #+retrieved_from_db_at: <2024-11-18 16:25:08>
* comment se délester de la charge mentale * Comment se délester de la charge mentale
:PROPERTIES: :PROPERTIES:
:CUSTOM_ID: comment-se-délester-de-la-charge-mentale :CUSTOM_ID: comment-se-délester-de-la-charge-mentale
:END: :END:
@ -463,12 +463,17 @@ intéressent. 
:END: :END:
Et si c'était les évènements qui se rappelaient à Et si c'était les évènements qui se rappelaient à
nous au bon moment, au lieu d'avoir tout le temps à y nous au bon moment, au lieu d'avoir tout le temps à y
penser?[[https://www.cipherbliss.com/wp-content/uploads/2017/11/odgn4Ry_700wa_0.jpg][https://www.cipherbliss.com/wp-content/uploads/2017/11/odgn4Ry_700wa_0.jpg]]Beaucoup penser?
de gens ont un smartphone, mais assez peu utilisent des agendas
[[https://www.cipherbliss.com/wp-content/uploads/2017/11/odgn4Ry_700wa_0.jpg][https://www.cipherbliss.com/wp-content/uploads/2017/11/odgn4Ry_700wa_0.jpg]]
Beaucoup de gens ont un smartphone, mais assez peu utilisent des agendas
numériques sur leur téléphone. C'est bien dommage. Alors créez un agenda numériques sur leur téléphone. C'est bien dommage. Alors créez un agenda
numérique et faites en sorte de le partager avec votre conjoint de sorte numérique et faites en sorte de le partager avec votre conjoint de sorte
que lui/elle aussi puisse le mettre à jour sur des choses qui vous que lui/elle aussi puisse le mettre à jour sur des choses qui vous
concernent tous les deux. les options de partage se trouvent dans les concernent tous les deux.
les options de partage se trouvent dans les
propriétés d'agenda, sur google calendar et d'autres c'est propriétés d'agenda, sur google calendar et d'autres c'est
pareil.Comme ça vous n'aurez pas en plus à penser à pareil.Comme ça vous n'aurez pas en plus à penser à
rappeler à l'autre que vous avez des choses qui arrivent rappeler à l'autre que vous avez des choses qui arrivent
@ -476,15 +481,14 @@ bientôt.Votre smartphone se chargera pour vous de ce
boulot de rappel. Vous venez d'avoir rendez-vous avec votre médecin et boulot de rappel. Vous venez d'avoir rendez-vous avec votre médecin et
il vous propose de vous revoir dans trois mois? Notez-le tout de suite il vous propose de vous revoir dans trois mois? Notez-le tout de suite
dans votre agenda. Votre chat doit se faire revisiter tous les ans? dans votre agenda. Votre chat doit se faire revisiter tous les ans?
faites un évènement récurrent.Faites plusieurs faites un évènement récurrent.
agendas afin de ne pas polluer votre partenaire de notifications qui ne
le concernent pas.Ne mettez pas vos réunions de Faites plusieurs agendas afin de ne pas polluer votre partenaire de notifications qui ne le concernent pas.
boulot dans votre agenda partagé.Mais c'est un bon
endroit pour prévoir de recevoir des amis ou de partir en Ne mettez pas vos réunions de boulot dans votre agenda partagé.Mais c'est un bon endroit pour prévoir de recevoir des amis ou de partir en
vacances.Créez un agenda spécifique à la gestion des vacances.
RDV et évènements relatifs à vos enfants, que vous pourrez partager
également. Utiliser DES agendas évite énormément de charge mentale Créez un agenda spécifique à la gestion des RDV et évènements relatifs à vos enfants, que vous pourrez partager également. Utiliser DES agendas évite énormément de charge mentale inutile.
inutile.
*** Pour les tâches n'ayant pas spécialement de date, utiliser un tableau kanban *** Pour les tâches n'ayant pas spécialement de date, utiliser un tableau kanban

View file

@ -265,11 +265,6 @@ roulez jeunesse.
[[https://www.cipherbliss.com/wp-content/uploads/2021/05/vorta.png]] [[https://www.cipherbliss.com/wp-content/uploads/2021/05/vorta.png]]
 
 
Plus qu'a attendre quelques minutes ou heures selon le volume de trucs à Plus qu'a attendre quelques minutes ou heures selon le volume de trucs à
sauvegarder et la force de compression que vous avez choisi. sauvegarder et la force de compression que vous avez choisi.

View file

@ -1,7 +1,7 @@
#+title: jeux-de-données-sur-datagouv #+title: jeux-de-données-sur-datagouv
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: jeux-de-données-sur-datagouv
#+post_url: https://www.ciperbliss.com/2024/jeux-de-données-sur-datagouv #+post_url: https://www.ciperbliss.com/2024/jeux-de-données-sur-datagouv
#+post_title: Jeux de données sur DataGouv #+post_title: Jeux de données sur DataGouv
#+post_tags: #+post_tags:

View file

@ -1,7 +1,7 @@
#+title: julia-de-l'ign---elles-font-le-libre---sotmfr-2024 #+title: julia-de-l'ign---elles-font-le-libre---sotmfr-2024
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: julia-de-l'ign---elles-font-le-libre---sotmfr-2024
#+post_url: https://www.ciperbliss.com/2024/julia-de-l'ign---elles-font-le-libre---sotmfr-2024 #+post_url: https://www.ciperbliss.com/2024/julia-de-l'ign---elles-font-le-libre---sotmfr-2024
#+post_title: Julia de l'IGN - Elles font le libre - sotmfr 2024 #+post_title: Julia de l'IGN - Elles font le libre - sotmfr 2024
#+post_tags: sotm, ign, open-data #+post_tags: sotm, ign, open-data

View file

@ -1,7 +1,7 @@
#+title: stitching-de-photo-gopro-fusion-pour-panoramax #+title: stitching-de-photo-gopro-fusion-pour-panoramax
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: stitching-de-photo-gopro-fusion-pour-panoramax
#+post_url: https://www.ciperbliss.com/2024/stitching-de-photo-gopro-fusion-pour-panoramax #+post_url: https://www.ciperbliss.com/2024/stitching-de-photo-gopro-fusion-pour-panoramax
#+post_title: Stitching de photo gopro fusion pour Panoramax #+post_title: Stitching de photo gopro fusion pour Panoramax
#+post_tags: panoramax, hugin, gopro, photo, 360 #+post_tags: panoramax, hugin, gopro, photo, 360

View file

@ -1,7 +1,7 @@
#+title: julie-de-la-fabrique-des-mobilités-elles-font-le-libre #+title: julie-de-la-fabrique-des-mobilités-elles-font-le-libre
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: julie-de-la-fabrique-des-mobilités-elles-font-le-libre
#+post_url: https://www.ciperbliss.com/2024/julie-de-la-fabrique-des-mobilités-elles-font-le-libre #+post_url: https://www.ciperbliss.com/2024/julie-de-la-fabrique-des-mobilités-elles-font-le-libre
#+post_title: Julie de la fabrique des mobilités - Elles font le libre #+post_title: Julie de la fabrique des mobilités - Elles font le libre
#+post_tags: openstreetmap, transport, sotm #+post_tags: openstreetmap, transport, sotm

View file

@ -1,7 +1,7 @@
#+title: dépasser-la-spécialisation #+title: dépasser-la-spécialisation
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: dépasser-la-spécialisation
#+post_url: https://www.ciperbliss.com/2024/dépasser-la-spécialisation #+post_url: https://www.ciperbliss.com/2024/dépasser-la-spécialisation
#+post_title: dépasser la spécialisation #+post_title: dépasser la spécialisation
#+post_tags: information, médias, internet, médias sociaux, mastodon #+post_tags: information, médias, internet, médias sociaux, mastodon

View file

@ -1,7 +1,7 @@
#+title: critères-de-qualité-de-votre-plan-de-sauvegarde #+title: critères-de-qualité-de-votre-plan-de-sauvegarde
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: critères-de-qualité-de-votre-plan-de-sauvegarde
#+post_url: https://www.ciperbliss.com/2025/critères-de-qualité-de-votre-plan-de-sauvegarde #+post_url: https://www.ciperbliss.com/2025/critères-de-qualité-de-votre-plan-de-sauvegarde
#+post_title: Critères de qualité de votre plan de sauvegarde #+post_title: Critères de qualité de votre plan de sauvegarde
#+post_tags: backup, chiffrement #+post_tags: backup, chiffrement

View file

@ -27,19 +27,19 @@ https://forge.chapril.org/tykayn/wololo
Vous pouvez par exemple voir ce que cela donne sur le jeu de données Data Gouv des bornes de recharge pour véhicules électriques qui contient une cinquantaine de propriétés différentes: Vous pouvez par exemple voir ce que cela donne sur le jeu de données Data Gouv des bornes de recharge pour véhicules électriques qui contient une cinquantaine de propriétés différentes:
#+begin_src bash #+BEGIN_SRC bash
git clone https://forge.chapril.org/tykayn/wololo git clone https://forge.chapril.org/tykayn/wololo
cd wololo cd wololo
npm install npm install
make irve make irve
#+end_src #+END_SRC
Le makefile permet de lancer des scripts prédéfinis sur le point d'entrée principal du projet, du Nodejs écrit en TypeScript à qui on donne un fichier à convertir et une configuration de conversion. Le makefile permet de lancer des scripts prédéfinis sur le point d'entrée principal du projet, du Nodejs écrit en TypeScript à qui on donne un fichier à convertir et une configuration de conversion.
#+begin_src bash #+BEGIN_SRC bash
ts-node convert_to_osm_tags.ts ts-node convert_to_osm_tags.ts
#+end_src #+END_SRC
Vous avez le fichier geojson qui a suivi les conversions selon le Mapper IRVE, et celui ci contient des tags OpenStreetMap. Ça se passe par ici: Vous avez le fichier geojson qui a suivi les conversions selon le Mapper IRVE, et celui ci contient des tags OpenStreetMap. Ça se passe par ici:
https://forge.chapril.org/tykayn/wololo/src/branch/main/mappings/converters/configIRVE.ts https://forge.chapril.org/tykayn/wololo/src/branch/main/mappings/converters/configIRVE.ts
@ -185,7 +185,7 @@ Le projet Wololo permet aussi d'appliquer des conversions sur des geojson issus
https://osmose.openstreetmap.fr https://osmose.openstreetmap.fr
* Extraction de données depuis OpenStreetMap ** Extraction de données depuis OpenStreetMap
On peut faire des extractions thématiques sur des données OpenStreetMap un peu à la façon Geodatamine. On peut faire des extractions thématiques sur des données OpenStreetMap un peu à la façon Geodatamine.
https://geodatamine.fr/ https://geodatamine.fr/

View file

@ -44,15 +44,15 @@ docker-compose --project-name essonne run --rm backend ./osmose_run.py --list-an
Vous verrez que plusieurs analyses ont des noms très similaires, ils diffèrent par leur zone géographique car on valide différemment des données selon leur production, qui se fait souvent par zones et par des gens dont l'informatique n'est (généralement) pas du tout le métier. C'est pourquoi concernant la catégorie défibrilateurs vous avez ceci: Vous verrez que plusieurs analyses ont des noms très similaires, ils diffèrent par leur zone géographique car on valide différemment des données selon leur production, qui se fait souvent par zones et par des gens dont l'informatique n'est (généralement) pas du tout le métier. C'est pourquoi concernant la catégorie défibrilateurs vous avez ceci:
#+BEGIN_QUOTE #+BEGIN_QUOTE
merge_defibrillators_FR merge_defibrillators_FR
merge_defibrillators_FR_aedmap merge_defibrillators_FR_aedmap
merge_defibrillators_FR_hautesalpes merge_defibrillators_FR_hautesalpes
merge_defibrillators_FR_issylesmoulineaux merge_defibrillators_FR_issylesmoulineaux
merge_defibrillators_FR_lorient merge_defibrillators_FR_lorient
merge_defibrillators_FR_montfort merge_defibrillators_FR_montfort
merge_defibrillators_FR_paris merge_defibrillators_FR_paris
merge_defibrillators_FR_saintmalo merge_defibrillators_FR_saintmalo
merge_defibrillators_FR_toulouse merge_defibrillators_FR_toulouse
#+END_QUOTE #+END_QUOTE
Vous pouvez faire une analyse qui incluera toutes les validation des zones à la fois de cette thématique, ou plus précisément en ne demandant qu'une validation spécifique à une zone, mais pas forcément sur cette zone. Sauf que vous risquez de ne pas avoir de données à comparer. Vous pouvez faire une analyse qui incluera toutes les validation des zones à la fois de cette thématique, ou plus précisément en ne demandant qu'une validation spécifique à une zone, mais pas forcément sur cette zone. Sauf que vous risquez de ne pas avoir de données à comparer.
@ -66,8 +66,11 @@ https://www.cipherbliss.com/2025/contribuer-%c3%a0-un-projet-libre/
Avant d'aller vraiment modifier une analyse, on va faire tourner le projet sur son propre ordi et voir ce qui se passe dans une analayse simple. Avant d'aller vraiment modifier une analyse, on va faire tourner le projet sur son propre ordi et voir ce qui se passe dans une analayse simple.
** Analyser une zone localement ** Analyser une zone localement
Disons que l'on veut modifier le Merger "merge_charging_station_FR", et que l'on veut voir ce que donne nos modifications en lançant une analyse. Pour éviter que cela prenne toute la journée, nous allons restreindre le champ d'analyse au patelin perdu de Monaco.
Après une installation locale avec docker-compose du dépot osmose-backend, nous pouvons lancer cette commande qui va demander au point d'entrée principal de faire marcher l'analyse "merge_charging_station_FR" sur la zone "monaco", sans supprimer les données en base si elles existent déjà:
Disons que l'on veut modifier le Merger `merge_charging_station_FR`, et que l'on veut voir ce que donne nos modifications en lançant une analyse. Pour éviter que cela prenne toute la journée, nous allons restreindre le champ d'analyse au patelin perdu de Monaco.
Après une installation locale avec docker-compose du dépot osmose-backend, nous pouvons lancer cette commande qui va demander au point d'entrée principal de faire marcher l'analyse `merge_charging_station_FR` sur la zone `monaco`, sans supprimer les données en base si elles existent déjà:
#+BEGIN_SRC shell #+BEGIN_SRC shell
# je vous passe l'installation de docker et docker-compose # je vous passe l'installation de docker et docker-compose

View file

@ -5,7 +5,7 @@
#+title: Rétrospective de blogs #+title: Rétrospective de blogs
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: rétrospective-de-blogs
#+post_url: https://www.ciperbliss.com/2025/rétrospective-de-blogs #+post_url: https://www.ciperbliss.com/2025/rétrospective-de-blogs
#+post_title: Rétrospective de blogs #+post_title: Rétrospective de blogs
#+post_tags: blog, orgmode, gemini, python, bash, dessin #+post_tags: blog, orgmode, gemini, python, bash, dessin

View file

@ -5,7 +5,7 @@
#+title: Stratégie de mitigation de laccident de fusion du cœur sur lEPR #+title: Stratégie de mitigation de laccident de fusion du cœur sur lEPR
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: stratégie-de-mitigation-de-laccident-de-fusion-du-cœur-sur-lepr
#+post_url: https://www.ciperbliss.com/2025/stratégie-de-mitigation-de-laccident-de-fusion-du-cœur-sur-lepr #+post_url: https://www.ciperbliss.com/2025/stratégie-de-mitigation-de-laccident-de-fusion-du-cœur-sur-lepr
#+post_title: Stratégie de mitigation de laccident de fusion du cœur sur lEPR #+post_title: Stratégie de mitigation de laccident de fusion du cœur sur lEPR
#+post_tags: nucléaire, fusion, EPR, corium, core catcher #+post_tags: nucléaire, fusion, EPR, corium, core catcher

View file

@ -1,7 +1,7 @@
#+title: les-récits-de-jeanine-chapitre-4 #+title: les-récits-de-jeanine-chapitre-4
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: les-récits-de-jeanine-chapitre-4
#+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-4 #+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-4
#+post_title: Les récits de Jeanine - chapitre 4 #+post_title: Les récits de Jeanine - chapitre 4
#+post_tags: récit #+post_tags: récit

View file

@ -1,7 +1,7 @@
#+title: les-récits-de-jeanine-chapitre-5 #+title: les-récits-de-jeanine-chapitre-5
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: les-récits-de-jeanine-chapitre-5
#+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-5 #+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-5
#+post_title: Les récits de Jeanine - chapitre 5 #+post_title: Les récits de Jeanine - chapitre 5
#+post_tags: récit #+post_tags: récit

View file

@ -1,7 +1,7 @@
#+title: les-récits-de-jeanine-chapitre-6 #+title: les-récits-de-jeanine-chapitre-6
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: les-récits-de-jeanine-chapitre-6
#+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-6 #+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-6
#+post_title: Les récits de Jeanine - chapitre 6 #+post_title: Les récits de Jeanine - chapitre 6
#+post_tags: récit #+post_tags: récit

View file

@ -1,7 +1,7 @@
#+title: les-récits-de-jeanine-chapitre-7 #+title: les-récits-de-jeanine-chapitre-7
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: les-récits-de-jeanine-chapitre-7
#+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-7 #+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-7
#+post_title: Les récits de Jeanine - chapitre 7 #+post_title: Les récits de Jeanine - chapitre 7
#+post_tags: #+post_tags:

View file

@ -1,7 +1,7 @@
#+title: les-récits-de-jeanine-chapitre-12 #+title: les-récits-de-jeanine-chapitre-12
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: les-récits-de-jeanine-chapitre-12
#+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-12 #+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-12
#+post_title: Les récits de Jeanine - chapitre 12 #+post_title: Les récits de Jeanine - chapitre 12
#+post_tags: #+post_tags:

View file

@ -1,7 +1,7 @@
#+title: les-récits-de-jeanine-chapitre-13 #+title: les-récits-de-jeanine-chapitre-13
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: les-récits-de-jeanine-chapitre-13
#+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-13 #+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-13
#+post_title: Les récits de Jeanine - chapitre 13 #+post_title: Les récits de Jeanine - chapitre 13
#+post_tags: #+post_tags:

View file

@ -1,7 +1,7 @@
#+title: les-récits-de-jeanine-chapitre-14 #+title: les-récits-de-jeanine-chapitre-14
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: les-récits-de-jeanine-chapitre-14
#+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-14 #+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-14
#+post_title: Les récits de Jeanine - chapitre 14 #+post_title: Les récits de Jeanine - chapitre 14
#+post_tags: #+post_tags:

View file

@ -1,7 +1,7 @@
#+title: les-récits-de-jeanine-chapitre-15 #+title: les-récits-de-jeanine-chapitre-15
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: les-récits-de-jeanine-chapitre-15
#+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-15 #+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-15
#+post_title: Les récits de Jeanine - chapitre 15 #+post_title: Les récits de Jeanine - chapitre 15
#+post_tags: #+post_tags:

View file

@ -1,7 +1,7 @@
#+title: les-récits-de-jeanine-chapitre-16 #+title: les-récits-de-jeanine-chapitre-16
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: les-récits-de-jeanine-chapitre-16
#+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-16 #+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-16
#+post_title: Les récits de Jeanine - chapitre 16 #+post_title: Les récits de Jeanine - chapitre 16
#+post_tags: #+post_tags:

View file

@ -1,10 +1,10 @@
#+title: les-récits-de-jeanine-chapitre-17 #+title: les-récits-de-jeanine-chapitre-17
#+post_ID: #+post_ID:
#+post_slug: organisation-de-taches-orgmode #+post_slug: les-récits-de-jeanine-chapitre-17
#+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-17 #+post_url: https://www.ciperbliss.com/2024/les-récits-de-jeanine-chapitre-17
#+post_title: Les récits de Jeanine - chapitre 17 #+post_title: Les récits de Jeanine - chapitre 17
#+post_tags: #+post_tags: récits
#+post_type: post #+post_type: post
#+post_mime_types: #+post_mime_types:
#+post_guid: #+post_guid:

View file

@ -1,7 +1,4 @@
{% include 'templates/html/site_head.html.j2' %}
{% include 'site_head.j2' %}
<body> <body>

View file

@ -48,12 +48,17 @@ h6 {
line-height: 1.3em; line-height: 1.3em;
} }
.article-title,
hr + h1 { hr + h1 {
margin-top: 5rem; margin-top: 5rem;
border-left: 3px solid gray;
padding-left: 3rem;
margin-left: -4rem;
} }
h1:first-letter { h1:first-letter {
text-transform: uppercase; text-transform: uppercase;
font-size: 4.5rem;
} }
h1 { h1 {
@ -138,6 +143,8 @@ p {
text-wrap: pretty; text-wrap: pretty;
margin-top: 1.5rem; margin-top: 1.5rem;
margin-bottom: 1rem; margin-bottom: 1rem;
font-size: 1.25rem;
line-height: 1.75rem;
} }
#root, #root,
@ -315,6 +322,12 @@ q {
margin-right: 1rem; margin-right: 1rem;
} }
.site-foot-soutien {
font-size: 0.8rem;
width: 75ch;
max-width: calc(100vw - 6rem);
}
@media (max-width: 75ch) { @media (max-width: 75ch) {
body { body {
padding: 0; padding: 0;

View file

@ -1 +1 @@
{"version":3,"sourceRoot":"","sources":["../styles_src/style_general.scss","../styles_src/_variables.scss"],"names":[],"mappings":";AAAA;AAGA;EACE;EACA;EACA;;AAEA;EAEE;;;AAIJ;EACE,WCCe;EDAf,aCoBiB;;;ADjBnB;EACE;EACA,WCJe;EDKf;EACA,OCtBW;EDuBX,YCtBiB;EDuBjB;EACA,gBCGW;;;ADAb;AAAA;AAAA;AAAA;EAIE,WClBoB;EDmBpB;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAME,aCNoB;EDOpB,YCjBW;EDkBX,eChBW;EDiBX,OC3Cc;ED4Cd;EACA;EACA;EACA,aC3BoB;;;AD8BtB;EACE,YCxBW;;;AD2Bb;EACE;;;AAGF;EACE,OC1DiB;ED2DjB,WC5Ca;ED6Cb;;;AAGF;EACE,WChDa;EDiDb;;;AAGF;EACE,WCpDa;EDqDb;;;AAGF;EACE,WC5DkB;ED6DlB;;AAEA;AAAA;AAAA;AAAA;AAAA;EAKE,OCxEY;EDyEZ;EACA,YC7DS;ED8DT,eC9DS;ED+DT;;;AAIJ;AAAA;EAEE;;;AAIF;EACE;EACA,eCrEiB;EDsEjB,OClGW;EDmGX;EACA,SC9EW;;ADgFX;EACE,YCjGkB;EDkGlB,OCxGS;;AD0GT;EACE,OC3GO;;AD+GX;EAEE;EACA;EACA,cC7FS;ED8FT,eC9FS;;ADiGX;EACE;EACA;;;AAIJ;EACE,YC1Fe;;AD4Ff;EACE;EACA,YC/Fe;;;ADmGnB;AAAA;AAAA;AAAA;EAIE;;;AAGF;EACE;EACA;EACA,YCzHW;ED0HX,eC3HW;;;AD8Hb;AAAA;EAEE;;;AAGF;EACE;EACA;;;AAGF;EACE,eCzIW;;AD2IX;EACE;;AAGF;EACE;EACA,cCjJS;;;ADsJb;EACE;;;AAGF;EACE;EACA;;;AAIA;EACE;;;AAKF;EACE,OCrKS;EDsKT,QCtKS;EDuKT,cCzKS;;AD4KX;EACE;EACA;;;AAIJ;EACE,YClLW;EDmLX,eCnLW;EDoLX;;AAEA;EACE;EACA,SC1LS;ED2LT;EACA,eCtLe;;;AD0LnB;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA,SCvMS;;;AD2Mb;EACE;EACA,SC7MW;ED8MX;EACA;;;AAGF;AAAA;EAEE,QCpNW;EDqNX,OC9OiB;ED+OjB;;;AAGF;EACE,YC7Oc;;;ADgPhB;EACE,YCvPiB;EDwPjB,SC3NkB;ED4NlB;EACA,YCjOW;EDkOX,eC5NiB;ED6NjB;;AAEA;EACE;;;AAIJ;EACE;EACA,SC1OW;ED2OX,YClQgB;EDmQhB,OClQkB;;;ADqQpB;EACE,OC/Pc;EDgQd;;;AAGF;EACE;EACA,SCxPW;;;AD2Pb;EACE,YC1PW;ED2PX,eC3PW;;AD6PX;EACE,eC9PS;;;ADkQb;EACE,YCrQW;EDsQX,eCtQW;;ADwQX;EACE;EACA,SC3QS;;;ADkRX;AAAA;EACE;;AAGF;AAAA;EACE;EACA;;AAEA;AAAA;EACE;EACA,SC5RO;;;ADiSb;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA,cCtSW;EDuSX,aCxSW;EDySX,gBCzSW;;;AD4Sb;EACE;;;AAIA;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;EACA,cC7TS;;;ADiUb;EACE;IACE;;EAGF;IACE,SCvUS","file":"style_general.css"} {"version":3,"sourceRoot":"","sources":["../styles_src/style_general.scss","../styles_src/_variables.scss"],"names":[],"mappings":";AAAA;AAIA;EACE;EACA;EACA;;AAEA;EAEE;;;AAIJ;EACE;EACA,aCmBiB;;;ADhBnB;EACE;EACA,WCLe;EDMf,aCDiB;EDEjB,OCvBW;EDwBX,YCvBiB;EDwBjB;EACA,gBCEW;;;ADCb;AAAA;AAAA;AAAA;EAIE,WCnBoB;EDoBpB;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAME,aCPoB;EDQpB,YClBW;EDmBX,eCjBW;EDkBX,OC5Cc;ED6Cd;EACA;EACA;EACA,aC5BoB;;;ADgCtB;AAAA;EAEE,YAvDW;EAwDX;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE,OCjEiB;EDkEjB,WCnDa;EDoDb;;;AAGF;EACE,WCvDa;EDwDb;;;AAGF;EACE,WC3Da;ED4Db;;;AAGF;EACE,WCnEkB;EDoElB;;AAEA;AAAA;AAAA;AAAA;AAAA;EAKE,OC/EY;EDgFZ;EACA,YCpES;EDqET,eCrES;EDsET;;;AAIJ;AAAA;EAEE;;;AAIF;EACE;EACA,eC5EiB;ED6EjB,OCzGW;ED0GX;EACA,SCrFW;;ADuFX;EACE,YCxGkB;EDyGlB,OC/GS;;ADiHT;EACE,OClHO;;ADsHX;EAEE;EACA;EACA,cCpGS;EDqGT,eCrGS;;ADwGX;EACE;EACA;;;AAIJ;EACE,YCjGe;;ADmGf;EACE;EACA,YCtGe;;;AD0GnB;AAAA;AAAA;AAAA;EAIE;;;AAGF;EACE;EACA;EACA,YChIW;EDiIX,eClIW;EDmIX;EACA;;;AAGF;AAAA;EAEE;;;AAGF;EACE;EACA;;;AAGF;EACE,eClJW;;ADoJX;EACE;;AAGF;EACE;EACA,cC1JS;;;AD+Jb;EACE;;;AAGF;EACE;EACA;;;AAIA;EACE;;;AAKF;EACE,OC9KS;ED+KT,QC/KS;EDgLT,cClLS;;ADqLX;EACE;EACA;;;AAIJ;EACE,YC3LW;ED4LX,eC5LW;ED6LX;;AAEA;EACE;EACA,SCnMS;EDoMT;EACA,eC/Le;;;ADmMnB;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA,SChNS;;;ADoNb;EACE;EACA,SCtNW;EDuNX;EACA;;;AAGF;AAAA;EAEE,QC7NW;ED8NX,OCvPiB;EDwPjB;;;AAGF;EACE,YCtPc;;;ADyPhB;EACE,YChQiB;EDiQjB,SCpOkB;EDqOlB;EACA,YC1OW;ED2OX,eCrOiB;EDsOjB;;AAEA;EACE;;;AAIJ;EACE;EACA,SCnPW;EDoPX,YC3QgB;ED4QhB,OC3QkB;;;AD8QpB;EACE,OCxQc;EDyQd;;;AAGF;EACE;EACA,SCjQW;;;ADoQb;EACE,YCnQW;EDoQX,eCpQW;;ADsQX;EACE,eCvQS;;;AD2Qb;EACE,YC9QW;ED+QX,eC/QW;;ADiRX;EACE;EACA,SCpRS;;;AD2RX;AAAA;EACE;;AAGF;AAAA;EACE;EACA;;AAEA;AAAA;EACE;EACA,SCrSO;;;AD0Sb;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA,cC/SW;EDgTX,aCjTW;EDkTX,gBClTW;;;ADqTb;EACE;;;AAIA;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;EACA,cCtUS;;;AD0Ub;EACE;EACA;EACA;;;AAGF;EACE;IACE;;EAGF;IACE,SCtVS","file":"style_general.css"}

View file

@ -1,5 +1,6 @@
/*style général scss*/ /*style général scss*/
@use 'variables' as *; @use 'variables' as *;
$spacing-xl: 5rem;
* { * {
box-sizing: border-box; box-sizing: border-box;
@ -49,14 +50,20 @@ h6 {
overflow-wrap: break-word; overflow-wrap: break-word;
text-wrap: balance; text-wrap: balance;
line-height: $line-height-heading; line-height: $line-height-heading;
} }
.article-title,
hr+h1 { hr+h1 {
margin-top: $spacing-xl; margin-top: $spacing-xl;
border-left: 3px solid gray;
padding-left: 3rem;
margin-left: -4rem;
} }
h1:first-letter { h1:first-letter {
text-transform: uppercase; text-transform: uppercase;
font-size: 4.5rem;
} }
h1 { h1 {
@ -149,6 +156,8 @@ p {
text-wrap: pretty; text-wrap: pretty;
margin-top: $spacing-md; margin-top: $spacing-md;
margin-bottom: $spacing-sm; margin-bottom: $spacing-sm;
font-size: 1.25rem;
line-height: 1.75rem;
} }
#root, #root,
@ -346,6 +355,12 @@ q {
} }
} }
.site-foot-soutien {
font-size: 0.8rem;
width: 75ch;
max-width: calc(100vw - 6rem);
}
@media (max-width: $article-width) { @media (max-width: $article-width) {
body { body {
padding: 0; padding: 0;