unify slugs
This commit is contained in:
parent
a0bb742d4c
commit
63d51307d5
@ -55,12 +55,11 @@ def generer_index(dossier_source, fichier_index):
|
||||
|
||||
# ----------- indexer les articles en Français ------------------
|
||||
for fichier in files_fr:
|
||||
date_string, année, slug = find_year_and_slug(fichier)
|
||||
# date_string, année, slug = find_year_and_slug(fichier)
|
||||
|
||||
contenu_index_gmi += f"=> {fichier}\n"
|
||||
link_html = fichier.replace('.gmi', '.html')
|
||||
chemin_fichier_this_article_html = chemin_dossier_source + '/lang_fr/converted/' + link_html
|
||||
chemin_fichier_this_article_html = chemin_dossier_source + '/lang_fr/converted/' + link_html
|
||||
|
||||
link_org = fichier.replace('.gmi', '.org')
|
||||
file_path_org = os.path.join(dossier_parent, "sources", website_name, lang_folder, link_org)
|
||||
@ -70,15 +69,14 @@ def generer_index(dossier_source, fichier_index):
|
||||
article_relative_url = detect_slug_in_file_basename(basename_file)
|
||||
|
||||
if not article_name:
|
||||
article_name = slug.replace('-', ' ')
|
||||
article_name = article_relative_url.replace('-', ' ')
|
||||
|
||||
if global_config["slug_with_year"]:
|
||||
new_folder = article_relative_url
|
||||
new_folder_path_this_article = os.path.join(dossier_parent, f"html-websites{args.source}/{new_folder}/")
|
||||
new_folder_path_this_article = os.path.join(dossier_parent, f"html-websites/{args.source}/{article_relative_url}/")
|
||||
|
||||
# déplacer le fichier html dans le dossier slug,
|
||||
# et le renommer en index.html ensuite pour ne pas modifier l'index du blog
|
||||
contenu_index_html += f"<br/><a href={article_relative_url}>{année} {article_name}</a>"
|
||||
contenu_index_html += f"<br/><a href={article_relative_url}>{article_name}</a>"
|
||||
os.makedirs(os.path.dirname(new_folder_path_this_article), exist_ok=True)
|
||||
shutil.copy(chemin_fichier_this_article_html, new_folder_path_this_article + 'index.html')
|
||||
else:
|
||||
|
@ -108,7 +108,7 @@ def enrich_one_file(html_content: str, partials: dict = {"header_page": "", "foo
|
||||
|
||||
<div id="navbarBasicExample" class="navbar-menu">
|
||||
<div class="navbar-start">
|
||||
<a class="navbar-item" href="{template_content['NDD']}">
|
||||
<a class="logo" href="{template_content['NDD']}">
|
||||
<img src="{template_content['SITE_ICON']}"
|
||||
class="img-fluid">
|
||||
</a>
|
||||
|
@ -48,7 +48,7 @@
|
||||
|
||||
<div id="navbarBasicExample" class="navbar-menu">
|
||||
<div class="navbar-start">
|
||||
<a class="navbar-item" href="https://www.cipherbliss.com">
|
||||
<a class="logo" href="https://www.cipherbliss.com">
|
||||
<img src="https://www.cipherbliss.com/wp-content/uploads/2016/12/rond.png"
|
||||
class="img-fluid">
|
||||
</a>
|
||||
|
@ -48,7 +48,7 @@
|
||||
|
||||
<div id="navbarBasicExample" class="navbar-menu">
|
||||
<div class="navbar-start">
|
||||
<a class="navbar-item" href="https://www.cipherbliss.com">
|
||||
<a class="logo" href="https://www.cipherbliss.com">
|
||||
<img src="https://www.cipherbliss.com/wp-content/uploads/2016/12/rond.png"
|
||||
class="img-fluid">
|
||||
</a>
|
||||
@ -100,7 +100,7 @@
|
||||
|
||||
<div id="navbarBasicExample" class="navbar-menu">
|
||||
<div class="navbar-start">
|
||||
<a class="navbar-item" href="https://www.cipherbliss.com">
|
||||
<a class="logo" href="https://www.cipherbliss.com">
|
||||
<img src="https://www.cipherbliss.com/wp-content/uploads/2016/12/rond.png"
|
||||
class="img-fluid">
|
||||
</a>
|
||||
@ -133,7 +133,7 @@
|
||||
Cipher Bliss
|
||||
- - - - - - - - - - - -
|
||||
|
||||
<br/><a href=2024/05_cipherbliss_blog_suivi-de-rédaction-de-livre-orgmode>2024 Suivi de rédaction de livre Orgmode</a><br/><a href=2024/04_cipherbliss_blog_techniques-pour-planter-votre-association-ou-votre-entreprise>2024 Techniques pour planter votre association ou votre entreprise</a><br/><a href=2024/03-connaître-la-couleur-des-jours-edf-tempo-en-ligne-de-commande>2024 Connaître la couleur des jours EDF Tempo en ligne de commande</a><br/><a href=2024/10-tags>2024 Tags - Étiquettes de cipherbliss</a><br/><a href=2024/37-ressources-de-café-vie-privée>2024 Ressources de café vie privée</a><br/><a href=2024/58-ça-déménage>2024 Ça déménage</a><br/><a href=2024/56_cipherbliss_blog_soutien>2024 Soutien</a><br/><a href=2024/56_cipherbliss_blog_création-d'un-blog-gemini>2024 Création d'un blog gemini</a><br/><a href=2011/59_cipherbliss_blog_120_bienvenue-sur-informageek>2011 Bienvenue sur Informageek !</a><hr/><h1>Navigation</h1><br/><a href=/contact.html>Contact</a>
|
||||
<br/><a href=2024/suivi-de-rédaction-de-livre-orgmode>Suivi de rédaction de livre Orgmode</a><br/><a href=2024/techniques-pour-planter-votre-association-ou-votre-entreprise>Techniques pour planter votre association ou votre entreprise</a><br/><a href=2024/connaître-la-couleur-des-jours-edf-tempo-en-ligne-de-commande>Connaître la couleur des jours EDF Tempo en ligne de commande</a><br/><a href=2024/tags>Tags - Étiquettes de cipherbliss</a><br/><a href=2024/ressources-de-café-vie-privée>Ressources de café vie privée</a><br/><a href=2024/ça-déménage>Ça déménage</a><br/><a href=2024/soutien>Soutien</a><br/><a href=2024/création-d'un-blog-gemini>Création d'un blog gemini</a><br/><a href=2011/bienvenue-sur-informageek>Bienvenue sur Informageek !</a><hr/><h1>Navigation</h1><br/><a href=/contact.html>Contact</a>
|
||||
<p class="after-article">
|
||||
|
||||
</p>
|
||||
|
@ -103,16 +103,19 @@ p {
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 4rem;
|
||||
color: #221d30;
|
||||
font-size: 2.5rem;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 3rem;
|
||||
font-size: 2rem;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.5rem;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
h1,
|
||||
|
@ -103,16 +103,19 @@ p {
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 4rem;
|
||||
color: #221d30;
|
||||
font-size: 2.5rem;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 3rem;
|
||||
font-size: 2rem;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.5rem;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
h1,
|
||||
|
@ -1,201 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>cipherbliss_blog</title>
|
||||
<style>
|
||||
html {
|
||||
color: #1a1a1a;
|
||||
background-color: #fdfdfd;
|
||||
}
|
||||
body {
|
||||
margin: 0 auto;
|
||||
max-width: 36em;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
hyphens: auto;
|
||||
overflow-wrap: break-word;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-kerning: normal;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
font-size: 0.9em;
|
||||
padding: 12px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.8em;
|
||||
}
|
||||
}
|
||||
@media print {
|
||||
html {
|
||||
background-color: white;
|
||||
}
|
||||
body {
|
||||
background-color: transparent;
|
||||
color: black;
|
||||
font-size: 12pt;
|
||||
}
|
||||
p, h2, h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
h2, h3, h4 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
a {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
a:visited {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1.4em;
|
||||
}
|
||||
h5, h6 {
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
}
|
||||
h6 {
|
||||
font-weight: normal;
|
||||
}
|
||||
ol, ul {
|
||||
padding-left: 1.7em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
li > ol, li > ul {
|
||||
margin-top: 0;
|
||||
}
|
||||
blockquote {
|
||||
margin: 1em 0 1em 1.7em;
|
||||
padding-left: 1em;
|
||||
border-left: 2px solid #e6e6e6;
|
||||
color: #606060;
|
||||
}
|
||||
code {
|
||||
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
|
||||
font-size: 85%;
|
||||
margin: 0;
|
||||
hyphens: manual;
|
||||
}
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
pre code {
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
overflow-wrap: normal;
|
||||
}
|
||||
.sourceCode {
|
||||
background-color: transparent;
|
||||
overflow: visible;
|
||||
}
|
||||
hr {
|
||||
background-color: #1a1a1a;
|
||||
border: none;
|
||||
height: 1px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
table {
|
||||
margin: 1em 0;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
display: block;
|
||||
font-variant-numeric: lining-nums tabular-nums;
|
||||
}
|
||||
table caption {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
tbody {
|
||||
margin-top: 0.5em;
|
||||
border-top: 1px solid #1a1a1a;
|
||||
border-bottom: 1px solid #1a1a1a;
|
||||
}
|
||||
th {
|
||||
border-top: 1px solid #1a1a1a;
|
||||
padding: 0.25em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
td {
|
||||
padding: 0.125em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 4em;
|
||||
text-align: center;
|
||||
}
|
||||
#TOC li {
|
||||
list-style: none;
|
||||
}
|
||||
#TOC ul {
|
||||
padding-left: 1.3em;
|
||||
}
|
||||
#TOC > ul {
|
||||
padding-left: 0;
|
||||
}
|
||||
#TOC a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
/* The extra [class] is a hack that increases specificity enough to
|
||||
override a similar rule in reveal.js */
|
||||
ul.task-list[class]{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
font-size: inherit;
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header id="title-block-header">
|
||||
<h1 class="title">cipherbliss_blog</h1>
|
||||
</header>
|
||||
<h1 id="article">Article</h1>
|
||||
<ul>
|
||||
<li>ID: 309</li>
|
||||
<li>guid:</li>
|
||||
<li>status: publish</li>
|
||||
<li>publié le: <2011-11-26 17:01:59></li>
|
||||
<li>modifié: <2011-11-26 17:47:37></li>
|
||||
<li>Index des articles du blog <a
|
||||
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
|
||||
</ul>
|
||||
<h2 id="bienvenue-sur-informageek-1">Bienvenue sur Informageek !</h2>
|
||||
<p>ceci<sub>estduhtml</sub></p>
|
||||
<p><img alt="<a
|
||||
href="https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png">https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png</a>"
|
||||
src="<a
|
||||
href="https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png">https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png</a>"
|
||||
/></p>
|
||||
<p>Salut les ptis poulets et bienvenue dans un lieu de déperdition
|
||||
geekesque où vont s'affronter divers centres d'intérêt autour des
|
||||
nouvelles technologies, de la programmation et de l'insolite du web.
|
||||
Bonne visite!</p>
|
||||
<p>(<a title="Internet" hreflang="fr" href="<a
|
||||
href="https://fr.wikipedia.org/wiki/Internet">https://fr.wikipedia.org/wiki/Internet</a>">photo:
|
||||
wikipédia page internet</a>)</p>
|
||||
<h1 id="liens">Liens</h1>
|
||||
<ul>
|
||||
<li>cipherbliss <a
|
||||
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
@ -1,313 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>cipherbliss_blog</title>
|
||||
<style>
|
||||
html {
|
||||
color: #1a1a1a;
|
||||
background-color: #fdfdfd;
|
||||
}
|
||||
body {
|
||||
margin: 0 auto;
|
||||
max-width: 36em;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
hyphens: auto;
|
||||
overflow-wrap: break-word;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-kerning: normal;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
font-size: 0.9em;
|
||||
padding: 12px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.8em;
|
||||
}
|
||||
}
|
||||
@media print {
|
||||
html {
|
||||
background-color: white;
|
||||
}
|
||||
body {
|
||||
background-color: transparent;
|
||||
color: black;
|
||||
font-size: 12pt;
|
||||
}
|
||||
p, h2, h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
h2, h3, h4 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
a {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
a:visited {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1.4em;
|
||||
}
|
||||
h5, h6 {
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
}
|
||||
h6 {
|
||||
font-weight: normal;
|
||||
}
|
||||
ol, ul {
|
||||
padding-left: 1.7em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
li > ol, li > ul {
|
||||
margin-top: 0;
|
||||
}
|
||||
blockquote {
|
||||
margin: 1em 0 1em 1.7em;
|
||||
padding-left: 1em;
|
||||
border-left: 2px solid #e6e6e6;
|
||||
color: #606060;
|
||||
}
|
||||
code {
|
||||
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
|
||||
font-size: 85%;
|
||||
margin: 0;
|
||||
hyphens: manual;
|
||||
}
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
pre code {
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
overflow-wrap: normal;
|
||||
}
|
||||
.sourceCode {
|
||||
background-color: transparent;
|
||||
overflow: visible;
|
||||
}
|
||||
hr {
|
||||
background-color: #1a1a1a;
|
||||
border: none;
|
||||
height: 1px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
table {
|
||||
margin: 1em 0;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
display: block;
|
||||
font-variant-numeric: lining-nums tabular-nums;
|
||||
}
|
||||
table caption {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
tbody {
|
||||
margin-top: 0.5em;
|
||||
border-top: 1px solid #1a1a1a;
|
||||
border-bottom: 1px solid #1a1a1a;
|
||||
}
|
||||
th {
|
||||
border-top: 1px solid #1a1a1a;
|
||||
padding: 0.25em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
td {
|
||||
padding: 0.125em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 4em;
|
||||
text-align: center;
|
||||
}
|
||||
#TOC li {
|
||||
list-style: none;
|
||||
}
|
||||
#TOC ul {
|
||||
padding-left: 1.3em;
|
||||
}
|
||||
#TOC > ul {
|
||||
padding-left: 0;
|
||||
}
|
||||
#TOC a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
/* The extra [class] is a hack that increases specificity enough to
|
||||
override a similar rule in reveal.js */
|
||||
ul.task-list[class]{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
font-size: inherit;
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||
/* CSS for syntax highlighting */
|
||||
pre > code.sourceCode { white-space: pre; position: relative; }
|
||||
pre > code.sourceCode > span { line-height: 1.25; }
|
||||
pre > code.sourceCode > span:empty { height: 1.2em; }
|
||||
.sourceCode { overflow: visible; }
|
||||
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
||||
div.sourceCode { margin: 1em 0; }
|
||||
pre.sourceCode { margin: 0; }
|
||||
@media screen {
|
||||
div.sourceCode { overflow: auto; }
|
||||
}
|
||||
@media print {
|
||||
pre > code.sourceCode { white-space: pre-wrap; }
|
||||
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
|
||||
}
|
||||
pre.numberSource code
|
||||
{ counter-reset: source-line 0; }
|
||||
pre.numberSource code > span
|
||||
{ position: relative; left: -4em; counter-increment: source-line; }
|
||||
pre.numberSource code > span > a:first-child::before
|
||||
{ content: counter(source-line);
|
||||
position: relative; left: -1em; text-align: right; vertical-align: baseline;
|
||||
border: none; display: inline-block;
|
||||
-webkit-touch-callout: none; -webkit-user-select: none;
|
||||
-khtml-user-select: none; -moz-user-select: none;
|
||||
-ms-user-select: none; user-select: none;
|
||||
padding: 0 4px; width: 4em;
|
||||
color: #aaaaaa;
|
||||
}
|
||||
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
||||
div.sourceCode
|
||||
{ }
|
||||
@media screen {
|
||||
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
|
||||
}
|
||||
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
|
||||
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
|
||||
code span.at { color: #7d9029; } /* Attribute */
|
||||
code span.bn { color: #40a070; } /* BaseN */
|
||||
code span.bu { color: #008000; } /* BuiltIn */
|
||||
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
|
||||
code span.ch { color: #4070a0; } /* Char */
|
||||
code span.cn { color: #880000; } /* Constant */
|
||||
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
|
||||
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
|
||||
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
|
||||
code span.dt { color: #902000; } /* DataType */
|
||||
code span.dv { color: #40a070; } /* DecVal */
|
||||
code span.er { color: #ff0000; font-weight: bold; } /* Error */
|
||||
code span.ex { } /* Extension */
|
||||
code span.fl { color: #40a070; } /* Float */
|
||||
code span.fu { color: #06287e; } /* Function */
|
||||
code span.im { color: #008000; font-weight: bold; } /* Import */
|
||||
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
|
||||
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
|
||||
code span.op { color: #666666; } /* Operator */
|
||||
code span.ot { color: #007020; } /* Other */
|
||||
code span.pp { color: #bc7a00; } /* Preprocessor */
|
||||
code span.sc { color: #4070a0; } /* SpecialChar */
|
||||
code span.ss { color: #bb6688; } /* SpecialString */
|
||||
code span.st { color: #4070a0; } /* String */
|
||||
code span.va { color: #19177c; } /* Variable */
|
||||
code span.vs { color: #4070a0; } /* VerbatimString */
|
||||
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header id="title-block-header">
|
||||
<h1 class="title">cipherbliss_blog</h1>
|
||||
</header>
|
||||
<h1
|
||||
id="connaître-la-couleur-des-jours-edf-tempo-en-ligne-de-commande-1">Connaître
|
||||
la couleur des jours EDF Tempo en ligne de commande</h1>
|
||||
<p>EDF expose une API pour connaître les couleurs de jour TEMPO, mais
|
||||
cette api n'est pas bien référencée sur le wouaib, ce sont donc des
|
||||
sites qui n'ont rien à voir qui vous donneront cette info avec moult
|
||||
trackers et pubs de partout.</p>
|
||||
<p>Voici l'url dont vous avez besoin:</p>
|
||||
<p>> <a
|
||||
href="https://api-commerce.edf.fr/commerce/activet/v1/calendrier-jours-effacement?option=TEMPO&dateApplicationBorneInf=%7Bdate_inférieure%7D&dateApplicationBorneSup=%7Bdate_supérieure%7D&identifiantConsommateur=src">https://api-commerce.edf.fr/commerce/activet/v1/calendrier-jours-effacement?option=TEMPO&dateApplicationBorneInf={date_inférieure}&dateApplicationBorneSup={date_supérieure}&identifiantConsommateur=src</a></p>
|
||||
<p>Cette API de commerce EDF ne fonctionne que si vous demandez des
|
||||
dates ayant 365 jours d'écart de différence, et si vous ne mettez pas de
|
||||
zéro précédant le numéro de journée au format année-mois-jour. Autre
|
||||
limitation, la couleur du jour du lendemain vous sera donnée seulement à
|
||||
partir de 11h du matin dans la journée.</p>
|
||||
<p>Fabriquez vous un petit script en python pour aller pêcher ce
|
||||
calendrier, piocher les couleurs des deux derniers jours. Il vous
|
||||
suffira d'un alias de commande pour lancer "python
|
||||
mon<sub>scripttempo</sub>.py" en ayant le dossier où le script est placé
|
||||
dans votre variable d'environnement PATH.</p>
|
||||
<div class="sourceCode" id="cb1"><pre
|
||||
class="sourceCode python"><code class="sourceCode python"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> requests</span>
|
||||
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> json</span>
|
||||
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> datetime <span class="im">import</span> datetime, timedelta </span>
|
||||
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> date_il_y_a_un_an(date):</span>
|
||||
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a> date_obj <span class="op">=</span> datetime.strptime(date, <span class="st">"%Y-%m-</span><span class="sc">%d</span><span class="st">"</span>)</span>
|
||||
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a> date_il_y_a_un_an <span class="op">=</span> date_obj <span class="op">-</span> timedelta(days<span class="op">=</span><span class="dv">365</span>)</span>
|
||||
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> date_il_y_a_un_an.strftime(<span class="st">"%Y-%m-</span><span class="sc">%d</span><span class="st">"</span>)</span>
|
||||
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> get_tempo_for_today_and_tomorrow():</span>
|
||||
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a> <span class="co"># Obtenir la date d'aujourd'hui</span></span>
|
||||
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true" tabindex="-1"></a> datenow <span class="op">=</span> datetime.now()</span>
|
||||
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a> sup <span class="op">=</span> (datenow <span class="op">+</span> timedelta(days<span class="op">=</span><span class="dv">1</span>))</span>
|
||||
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true" tabindex="-1"></a> inf <span class="op">=</span> date_il_y_a_un_an(datenow.strftime(<span class="st">"%Y-%m-</span><span class="sc">%d</span><span class="st">"</span>))</span>
|
||||
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true" tabindex="-1"></a> <span class="co"># Obtenir la date de demain</span></span>
|
||||
<span id="cb1-19"><a href="#cb1-19" aria-hidden="true" tabindex="-1"></a> sup <span class="op">=</span> sup.strftime(<span class="st">"%Y-%m-</span><span class="sc">%d</span><span class="st">"</span>)</span>
|
||||
<span id="cb1-20"><a href="#cb1-20" aria-hidden="true" tabindex="-1"></a> sup <span class="op">=</span> sup.replace(<span class="st">"-0"</span>, <span class="st">"-"</span>)</span>
|
||||
<span id="cb1-21"><a href="#cb1-21" aria-hidden="true" tabindex="-1"></a> inf <span class="op">=</span> inf.replace(<span class="st">"-0"</span>, <span class="st">"-"</span>)</span>
|
||||
<span id="cb1-22"><a href="#cb1-22" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-23"><a href="#cb1-23" aria-hidden="true" tabindex="-1"></a> <span class="co"># print("Date inf :", inf)</span></span>
|
||||
<span id="cb1-24"><a href="#cb1-24" aria-hidden="true" tabindex="-1"></a> <span class="co"># print("Date sup:", sup)</span></span>
|
||||
<span id="cb1-25"><a href="#cb1-25" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-26"><a href="#cb1-26" aria-hidden="true" tabindex="-1"></a> <span class="co"># URL de l'API d'EDF pour récupérer les informations sur les couleurs des jours de l'offre Tempo</span></span>
|
||||
<span id="cb1-27"><a href="#cb1-27" aria-hidden="true" tabindex="-1"></a> url <span class="op">=</span> <span class="ss">f"https://api-commerce.edf.fr/commerce/activet/v1/calendrier-jours-effacement?option=TEMPO&dateApplicationBorneInf=</span><span class="sc">{</span>inf<span class="sc">}</span><span class="ss">&dateApplicationBorneSup=</span><span class="sc">{</span>sup<span class="sc">}</span><span class="ss">&identifiantConsommateur=src"</span></span>
|
||||
<span id="cb1-28"><a href="#cb1-28" aria-hidden="true" tabindex="-1"></a> <span class="bu">print</span>(url)</span>
|
||||
<span id="cb1-29"><a href="#cb1-29" aria-hidden="true" tabindex="-1"></a> <span class="co"># Effectuer la requête HTTP et récupérer la réponse JSON</span></span>
|
||||
<span id="cb1-30"><a href="#cb1-30" aria-hidden="true" tabindex="-1"></a> response <span class="op">=</span> requests.get(url)</span>
|
||||
<span id="cb1-31"><a href="#cb1-31" aria-hidden="true" tabindex="-1"></a> data <span class="op">=</span> json.loads(response.text)</span>
|
||||
<span id="cb1-32"><a href="#cb1-32" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-33"><a href="#cb1-33" aria-hidden="true" tabindex="-1"></a> <span class="co"># Récupérer la liste des couleurs des jours pour les 30 prochains jours</span></span>
|
||||
<span id="cb1-34"><a href="#cb1-34" aria-hidden="true" tabindex="-1"></a> calendrier <span class="op">=</span> data[<span class="st">"content"</span>][<span class="st">"options"</span>][<span class="dv">0</span>][<span class="st">"calendrier"</span>]</span>
|
||||
<span id="cb1-35"><a href="#cb1-35" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-36"><a href="#cb1-36" aria-hidden="true" tabindex="-1"></a> texte_retour<span class="op">=</span><span class="st">""</span></span>
|
||||
<span id="cb1-37"><a href="#cb1-37" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-38"><a href="#cb1-38" aria-hidden="true" tabindex="-1"></a> <span class="co"># # Afficher les couleurs des jours pour le prochain jour</span></span>
|
||||
<span id="cb1-39"><a href="#cb1-39" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> jour <span class="kw">in</span> calendrier[<span class="op">-</span><span class="dv">2</span>:]:</span>
|
||||
<span id="cb1-40"><a href="#cb1-40" aria-hidden="true" tabindex="-1"></a> date <span class="op">=</span> jour[<span class="st">"dateApplication"</span>]</span>
|
||||
<span id="cb1-41"><a href="#cb1-41" aria-hidden="true" tabindex="-1"></a> code_couleur <span class="op">=</span> jour[<span class="st">"statut"</span>]</span>
|
||||
<span id="cb1-42"><a href="#cb1-42" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> code_couleur <span class="op">==</span> <span class="st">"TEMPO_BLEU"</span>:</span>
|
||||
<span id="cb1-43"><a href="#cb1-43" aria-hidden="true" tabindex="-1"></a> texte_retour<span class="op">+=</span>(<span class="ss">f"</span><span class="ch">\033</span><span class="ss">[34m</span><span class="sc">{</span>date<span class="sc">}</span><span class="ss">: journée </span><span class="sc">{</span>code_couleur<span class="sc">}</span><span class="ch">\033</span><span class="ss">[0m</span><span class="ch">\n</span><span class="ss">"</span>)</span>
|
||||
<span id="cb1-44"><a href="#cb1-44" aria-hidden="true" tabindex="-1"></a> <span class="cf">elif</span> code_couleur <span class="op">==</span> <span class="st">"TEMPO_BLANC"</span>:</span>
|
||||
<span id="cb1-45"><a href="#cb1-45" aria-hidden="true" tabindex="-1"></a> texte_retour<span class="op">+=</span>(<span class="ss">f"</span><span class="ch">\033</span><span class="ss">[37m</span><span class="sc">{</span>date<span class="sc">}</span><span class="ss">: journée </span><span class="sc">{</span>code_couleur<span class="sc">}</span><span class="ch">\033</span><span class="ss">[0m</span><span class="ch">\n</span><span class="ss">"</span>)</span>
|
||||
<span id="cb1-46"><a href="#cb1-46" aria-hidden="true" tabindex="-1"></a> <span class="cf">elif</span> code_couleur <span class="op">==</span> <span class="st">"TEMPO_ROUGE"</span>:</span>
|
||||
<span id="cb1-47"><a href="#cb1-47" aria-hidden="true" tabindex="-1"></a> texte_retour<span class="op">+=</span>(<span class="ss">f"</span><span class="ch">\033</span><span class="ss">[31m</span><span class="sc">{</span>date<span class="sc">}</span><span class="ss">: journée </span><span class="sc">{</span>code_couleur<span class="sc">}</span><span class="ch">\033</span><span class="ss">[0m</span><span class="ch">\n</span><span class="ss">"</span>)</span>
|
||||
<span id="cb1-48"><a href="#cb1-48" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span>:</span>
|
||||
<span id="cb1-49"><a href="#cb1-49" aria-hidden="true" tabindex="-1"></a> texte_retour<span class="op">+=</span>(<span class="ss">f"</span><span class="sc">{</span>date<span class="sc">}</span><span class="ss">: journée </span><span class="sc">{</span>code_couleur<span class="sc">}</span><span class="ss">"</span>)</span>
|
||||
<span id="cb1-50"><a href="#cb1-50" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-51"><a href="#cb1-51" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> texte_retour</span>
|
||||
<span id="cb1-52"><a href="#cb1-52" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-53"><a href="#cb1-53" aria-hidden="true" tabindex="-1"></a>texte <span class="op">=</span> get_tempo_for_today_and_tomorrow()</span>
|
||||
<span id="cb1-54"><a href="#cb1-54" aria-hidden="true" tabindex="-1"></a><span class="bu">print</span>(texte)</span>
|
||||
<span id="cb1-55"><a href="#cb1-55" aria-hidden="true" tabindex="-1"></a></span></code></pre></div>
|
||||
<p>Bonne réduction des pointes de conso!</p>
|
||||
</body>
|
||||
</html>
|
@ -1,214 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>cipherbliss_blog</title>
|
||||
<style>
|
||||
html {
|
||||
color: #1a1a1a;
|
||||
background-color: #fdfdfd;
|
||||
}
|
||||
body {
|
||||
margin: 0 auto;
|
||||
max-width: 36em;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
hyphens: auto;
|
||||
overflow-wrap: break-word;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-kerning: normal;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
font-size: 0.9em;
|
||||
padding: 12px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.8em;
|
||||
}
|
||||
}
|
||||
@media print {
|
||||
html {
|
||||
background-color: white;
|
||||
}
|
||||
body {
|
||||
background-color: transparent;
|
||||
color: black;
|
||||
font-size: 12pt;
|
||||
}
|
||||
p, h2, h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
h2, h3, h4 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
a {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
a:visited {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1.4em;
|
||||
}
|
||||
h5, h6 {
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
}
|
||||
h6 {
|
||||
font-weight: normal;
|
||||
}
|
||||
ol, ul {
|
||||
padding-left: 1.7em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
li > ol, li > ul {
|
||||
margin-top: 0;
|
||||
}
|
||||
blockquote {
|
||||
margin: 1em 0 1em 1.7em;
|
||||
padding-left: 1em;
|
||||
border-left: 2px solid #e6e6e6;
|
||||
color: #606060;
|
||||
}
|
||||
code {
|
||||
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
|
||||
font-size: 85%;
|
||||
margin: 0;
|
||||
hyphens: manual;
|
||||
}
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
pre code {
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
overflow-wrap: normal;
|
||||
}
|
||||
.sourceCode {
|
||||
background-color: transparent;
|
||||
overflow: visible;
|
||||
}
|
||||
hr {
|
||||
background-color: #1a1a1a;
|
||||
border: none;
|
||||
height: 1px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
table {
|
||||
margin: 1em 0;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
display: block;
|
||||
font-variant-numeric: lining-nums tabular-nums;
|
||||
}
|
||||
table caption {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
tbody {
|
||||
margin-top: 0.5em;
|
||||
border-top: 1px solid #1a1a1a;
|
||||
border-bottom: 1px solid #1a1a1a;
|
||||
}
|
||||
th {
|
||||
border-top: 1px solid #1a1a1a;
|
||||
padding: 0.25em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
td {
|
||||
padding: 0.125em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 4em;
|
||||
text-align: center;
|
||||
}
|
||||
#TOC li {
|
||||
list-style: none;
|
||||
}
|
||||
#TOC ul {
|
||||
padding-left: 1.3em;
|
||||
}
|
||||
#TOC > ul {
|
||||
padding-left: 0;
|
||||
}
|
||||
#TOC a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
/* The extra [class] is a hack that increases specificity enough to
|
||||
override a similar rule in reveal.js */
|
||||
ul.task-list[class]{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
font-size: inherit;
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header id="title-block-header">
|
||||
<h1 class="title">cipherbliss_blog</h1>
|
||||
</header>
|
||||
<h1
|
||||
id="techniques-pour-planter-votre-association-ou-votre-entreprise-1">Techniques
|
||||
pour planter votre association ou votre entreprise</h1>
|
||||
<p>:inclusivité:</p>
|
||||
<p>Il existe moult techniques pour que votre asso n'accueille pas plus
|
||||
de gens:</p>
|
||||
<ul>
|
||||
<li>dénigrer les centres d'intérêts des nouveaux membres</li>
|
||||
<li>faire de la rétention d'information, ne pas documenter, ne pas
|
||||
partager les accès aux outils, aux salles, aux gens dont l'asso
|
||||
dépend</li>
|
||||
<li>se plaindre que y'a pas assez de gens pour faire les corvées</li>
|
||||
<li>attaquer le physique des gens</li>
|
||||
<li>ignorer les gens qu'on ne connaît pas</li>
|
||||
<li>faire comme on a toujours fait</li>
|
||||
<li>ne s'occuper que d'un aspect et d'une façon de la cause importante
|
||||
de l'asso</li>
|
||||
<li>ne pas s'informer sur ce que font d'autres gens sur le même
|
||||
sujet</li>
|
||||
<li>faire des "blagues" à propos des femmes</li>
|
||||
<li>ne laisser la parole qu'aux personnes qui en ont l'habitude</li>
|
||||
<li>ne pas accompagner les gens à faire les activités</li>
|
||||
</ul>
|
||||
<p>On retrouve toutes ces choses dans des tas d'associations parce que
|
||||
c'est la façon principale dont sont gérées toutes les structures à l'ère
|
||||
post capitaliste: le pouvoir est détenu par ceux qui s'appuient sur les
|
||||
structures de domination d'hier, sans reproduction de ces injustices et
|
||||
de ces violences, pas de pouvoir pour les mêmes.</p>
|
||||
<p>Alors s'il vous plaît, ne faites pas ça dans vos milieux associatifs
|
||||
et mettez en place des actions pour veiller à ce que vous ne
|
||||
reproduisiez pas ce que vous subissez par ailleurs. la tendance
|
||||
naturelle et la normalisation de ces violences fait que si vous ne
|
||||
prenez pas soin de les repérer et de les démonter, vous allez
|
||||
"naturellement" les mettre en place.</p>
|
||||
<p>Sauf qu'en plus, dans les milieux bénévoles, vous n'êtes pas payé
|
||||
pour subir ça, contrairement à d'autres endroits.</p>
|
||||
<p>Bien sûr, il n'est pas non plus normal de subir cela dans des milieux
|
||||
qui vous paient pour y dédier votre temps.</p>
|
||||
<p>Vous avez essayé de contribuer à une association et avez vu votre
|
||||
motivation défoncée par des gens internes à cette asso qui vous ont
|
||||
empêché d'y participer ou ont dénigré ce que vous souhaitez faire ?
|
||||
Témoignez en commentaire.</p>
|
||||
</body>
|
||||
</html>
|
@ -1,175 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>cipherbliss_blog</title>
|
||||
<style>
|
||||
html {
|
||||
color: #1a1a1a;
|
||||
background-color: #fdfdfd;
|
||||
}
|
||||
body {
|
||||
margin: 0 auto;
|
||||
max-width: 36em;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
hyphens: auto;
|
||||
overflow-wrap: break-word;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-kerning: normal;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
font-size: 0.9em;
|
||||
padding: 12px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.8em;
|
||||
}
|
||||
}
|
||||
@media print {
|
||||
html {
|
||||
background-color: white;
|
||||
}
|
||||
body {
|
||||
background-color: transparent;
|
||||
color: black;
|
||||
font-size: 12pt;
|
||||
}
|
||||
p, h2, h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
h2, h3, h4 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
a {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
a:visited {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1.4em;
|
||||
}
|
||||
h5, h6 {
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
}
|
||||
h6 {
|
||||
font-weight: normal;
|
||||
}
|
||||
ol, ul {
|
||||
padding-left: 1.7em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
li > ol, li > ul {
|
||||
margin-top: 0;
|
||||
}
|
||||
blockquote {
|
||||
margin: 1em 0 1em 1.7em;
|
||||
padding-left: 1em;
|
||||
border-left: 2px solid #e6e6e6;
|
||||
color: #606060;
|
||||
}
|
||||
code {
|
||||
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
|
||||
font-size: 85%;
|
||||
margin: 0;
|
||||
hyphens: manual;
|
||||
}
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
pre code {
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
overflow-wrap: normal;
|
||||
}
|
||||
.sourceCode {
|
||||
background-color: transparent;
|
||||
overflow: visible;
|
||||
}
|
||||
hr {
|
||||
background-color: #1a1a1a;
|
||||
border: none;
|
||||
height: 1px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
table {
|
||||
margin: 1em 0;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
display: block;
|
||||
font-variant-numeric: lining-nums tabular-nums;
|
||||
}
|
||||
table caption {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
tbody {
|
||||
margin-top: 0.5em;
|
||||
border-top: 1px solid #1a1a1a;
|
||||
border-bottom: 1px solid #1a1a1a;
|
||||
}
|
||||
th {
|
||||
border-top: 1px solid #1a1a1a;
|
||||
padding: 0.25em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
td {
|
||||
padding: 0.125em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 4em;
|
||||
text-align: center;
|
||||
}
|
||||
#TOC li {
|
||||
list-style: none;
|
||||
}
|
||||
#TOC ul {
|
||||
padding-left: 1.3em;
|
||||
}
|
||||
#TOC > ul {
|
||||
padding-left: 0;
|
||||
}
|
||||
#TOC a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
/* The extra [class] is a hack that increases specificity enough to
|
||||
override a similar rule in reveal.js */
|
||||
ul.task-list[class]{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
font-size: inherit;
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header id="title-block-header">
|
||||
<h1 class="title">cipherbliss_blog</h1>
|
||||
</header>
|
||||
<h1 id="suivi-de-rédaction-de-livre-orgmode-1">Suivi de rédaction de
|
||||
livre Orgmode</h1>
|
||||
<p>ouiii voilà hop hop</p>
|
||||
</body>
|
||||
</html>
|
@ -1,218 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>cipherbliss_blog</title>
|
||||
<style>
|
||||
html {
|
||||
color: #1a1a1a;
|
||||
background-color: #fdfdfd;
|
||||
}
|
||||
body {
|
||||
margin: 0 auto;
|
||||
max-width: 36em;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
hyphens: auto;
|
||||
overflow-wrap: break-word;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-kerning: normal;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
font-size: 0.9em;
|
||||
padding: 12px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.8em;
|
||||
}
|
||||
}
|
||||
@media print {
|
||||
html {
|
||||
background-color: white;
|
||||
}
|
||||
body {
|
||||
background-color: transparent;
|
||||
color: black;
|
||||
font-size: 12pt;
|
||||
}
|
||||
p, h2, h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
h2, h3, h4 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
a {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
a:visited {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1.4em;
|
||||
}
|
||||
h5, h6 {
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
}
|
||||
h6 {
|
||||
font-weight: normal;
|
||||
}
|
||||
ol, ul {
|
||||
padding-left: 1.7em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
li > ol, li > ul {
|
||||
margin-top: 0;
|
||||
}
|
||||
blockquote {
|
||||
margin: 1em 0 1em 1.7em;
|
||||
padding-left: 1em;
|
||||
border-left: 2px solid #e6e6e6;
|
||||
color: #606060;
|
||||
}
|
||||
code {
|
||||
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
|
||||
font-size: 85%;
|
||||
margin: 0;
|
||||
hyphens: manual;
|
||||
}
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
pre code {
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
overflow-wrap: normal;
|
||||
}
|
||||
.sourceCode {
|
||||
background-color: transparent;
|
||||
overflow: visible;
|
||||
}
|
||||
hr {
|
||||
background-color: #1a1a1a;
|
||||
border: none;
|
||||
height: 1px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
table {
|
||||
margin: 1em 0;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
display: block;
|
||||
font-variant-numeric: lining-nums tabular-nums;
|
||||
}
|
||||
table caption {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
tbody {
|
||||
margin-top: 0.5em;
|
||||
border-top: 1px solid #1a1a1a;
|
||||
border-bottom: 1px solid #1a1a1a;
|
||||
}
|
||||
th {
|
||||
border-top: 1px solid #1a1a1a;
|
||||
padding: 0.25em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
td {
|
||||
padding: 0.125em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 4em;
|
||||
text-align: center;
|
||||
}
|
||||
#TOC li {
|
||||
list-style: none;
|
||||
}
|
||||
#TOC ul {
|
||||
padding-left: 1.3em;
|
||||
}
|
||||
#TOC > ul {
|
||||
padding-left: 0;
|
||||
}
|
||||
#TOC a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
/* The extra [class] is a hack that increases specificity enough to
|
||||
override a similar rule in reveal.js */
|
||||
ul.task-list[class]{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
font-size: inherit;
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header id="title-block-header">
|
||||
<h1 class="title">cipherbliss_blog</h1>
|
||||
</header>
|
||||
<h1 id="tags---étiquettes-de-cipherbliss">Tags - Étiquettes de
|
||||
cipherbliss</h1>
|
||||
<p>Voici les thématiques abordées sur ce site:</p>
|
||||
<p><a href="file:///tag/ai/">AI</a> <a
|
||||
href="file:///tag/archives/">archives</a> <a
|
||||
href="file:///tag/autohebergement/">autohébergement</a> <a
|
||||
href="file:///tag/backup/">backup</a> <a
|
||||
href="file:///tag/blockchain/">blockchain</a> <a
|
||||
href="file:///tag/borg/">borg</a> <a
|
||||
href="file:///tag/caisse/">caisse</a> <a
|
||||
href="file:///tag/comptabilite/">comptabilité</a> <a
|
||||
href="file:///tag/comptes/">comptes</a> <a
|
||||
href="file:///tag/data-visualisation/">data visualisation</a> <a
|
||||
href="file:///tag/design/">design</a> <a
|
||||
href="file:///tag/email/">email</a> <a
|
||||
href="file:///tag/entreprise/">entreprise</a> <a
|
||||
href="file:///tag/entreprise-individuelle/">entreprise individuelle</a>
|
||||
<a href="file:///tag/ethereum/">ethereum</a> <a
|
||||
href="file:///tag/facebook/">facebook</a> <a
|
||||
href="file:///tag/factures/">factures</a> <a
|
||||
href="file:///tag/floss/">FLOSS</a> <a
|
||||
href="file:///tag/fediverse/">fédiverse</a> <a
|
||||
href="file:///tag/gestion-de-projet/">gestion de projet</a> <a
|
||||
href="file:///tag/gestion-du-temps/">gestion du temps</a> <a
|
||||
href="file:///tag/gestionnaire-de-mot-de-passe/">gestionnaire de mot de
|
||||
passe</a> <a href="file:///tag/gimp/">gimp</a> <a
|
||||
href="file:///tag/git/">git</a> <a
|
||||
href="file:///tag/logiciellibre/">logiciellibre</a> <a
|
||||
href="file:///tag/logiciel-libre/">logiciel libre</a> <a
|
||||
href="file:///tag/mastodon/">mastodon</a> <a
|
||||
href="file:///tag/mobilizon/">mobilizon</a> <a
|
||||
href="file:///tag/mot-de-passe/">mot de passe</a> <a
|
||||
href="file:///tag/mysql/">mysql</a> <a
|
||||
href="file:///tag/nextcloud/">nextcloud</a> <a
|
||||
href="file:///tag/open-source/">open source</a> <a
|
||||
href="file:///tag/openstreetmap/">openstreetmap</a> <a
|
||||
href="file:///tag/orgmode/">orgmode</a> <a
|
||||
href="file:///tag/osm/">OSM</a> <a href="file:///tag/photos/">photos</a>
|
||||
<a href="file:///tag/pim/">pim</a> <a
|
||||
href="file:///tag/projet/">projet</a> <a
|
||||
href="file:///tag/prevision/">prévision</a> <a
|
||||
href="file:///tag/python/">python</a> <a
|
||||
href="file:///tag/reseau-social/">réseau social</a> <a
|
||||
href="file:///tag/sauvegardes/">sauvegardes</a> <a
|
||||
href="file:///tag/script/">script</a> <a href="file:///tag/ux/">UX</a>
|
||||
<a href="file:///tag/vie-privee/">vie privée</a></p>
|
||||
</body>
|
||||
</html>
|
@ -1,220 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>cipherbliss_blog</title>
|
||||
<style>
|
||||
html {
|
||||
color: #1a1a1a;
|
||||
background-color: #fdfdfd;
|
||||
}
|
||||
body {
|
||||
margin: 0 auto;
|
||||
max-width: 36em;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
hyphens: auto;
|
||||
overflow-wrap: break-word;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-kerning: normal;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
font-size: 0.9em;
|
||||
padding: 12px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.8em;
|
||||
}
|
||||
}
|
||||
@media print {
|
||||
html {
|
||||
background-color: white;
|
||||
}
|
||||
body {
|
||||
background-color: transparent;
|
||||
color: black;
|
||||
font-size: 12pt;
|
||||
}
|
||||
p, h2, h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
h2, h3, h4 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
a {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
a:visited {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1.4em;
|
||||
}
|
||||
h5, h6 {
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
}
|
||||
h6 {
|
||||
font-weight: normal;
|
||||
}
|
||||
ol, ul {
|
||||
padding-left: 1.7em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
li > ol, li > ul {
|
||||
margin-top: 0;
|
||||
}
|
||||
blockquote {
|
||||
margin: 1em 0 1em 1.7em;
|
||||
padding-left: 1em;
|
||||
border-left: 2px solid #e6e6e6;
|
||||
color: #606060;
|
||||
}
|
||||
code {
|
||||
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
|
||||
font-size: 85%;
|
||||
margin: 0;
|
||||
hyphens: manual;
|
||||
}
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
pre code {
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
overflow-wrap: normal;
|
||||
}
|
||||
.sourceCode {
|
||||
background-color: transparent;
|
||||
overflow: visible;
|
||||
}
|
||||
hr {
|
||||
background-color: #1a1a1a;
|
||||
border: none;
|
||||
height: 1px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
table {
|
||||
margin: 1em 0;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
display: block;
|
||||
font-variant-numeric: lining-nums tabular-nums;
|
||||
}
|
||||
table caption {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
tbody {
|
||||
margin-top: 0.5em;
|
||||
border-top: 1px solid #1a1a1a;
|
||||
border-bottom: 1px solid #1a1a1a;
|
||||
}
|
||||
th {
|
||||
border-top: 1px solid #1a1a1a;
|
||||
padding: 0.25em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
td {
|
||||
padding: 0.125em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 4em;
|
||||
text-align: center;
|
||||
}
|
||||
#TOC li {
|
||||
list-style: none;
|
||||
}
|
||||
#TOC ul {
|
||||
padding-left: 1.3em;
|
||||
}
|
||||
#TOC > ul {
|
||||
padding-left: 0;
|
||||
}
|
||||
#TOC a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
/* The extra [class] is a hack that increases specificity enough to
|
||||
override a similar rule in reveal.js */
|
||||
ul.task-list[class]{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
font-size: inherit;
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header id="title-block-header">
|
||||
<h1 class="title">cipherbliss_blog</h1>
|
||||
</header>
|
||||
<h1 id="ressources-de-café-vie-privée-1">Ressources de café vie
|
||||
privée</h1>
|
||||
<p>Voici de quoi se repérer dans la jungle des notions voisines à celle
|
||||
de la vie privée.</p>
|
||||
<p>Vous retrouverez ici de nombreuses notions abordées lors des cafés
|
||||
vie privée que j’anime, avec d’autres personnes intéressées par les les
|
||||
enjeux autour des logiciels libres et des communs, tel que le groupe <a
|
||||
href="https://web.archive.org/web/20240617080716/https://www.liness.org/">Liness</a>
|
||||
en Essonne.</p>
|
||||
<p>Les slides de mes présentations et les autres fichiers de support de
|
||||
présentation sont disponibles dans <a
|
||||
href="https://web.archive.org/web/20240617080716/https://cloud.tykayn.fr/index.php/s/FQ57cqXmJ6ngDfo">le
|
||||
dossier de partage nextcloud</a>: <a
|
||||
href="https://web.archive.org/web/20240617080716/https://cloud.tykayn.fr/index.php/s/FQ57cqXmJ6ngDfo"><span>https://cloud.tykayn.fr/index.php/s/FQ57cqXmJ6ngDfo</span></a></p>
|
||||
<p>Vous pouvez me contacter via les divers moyens listés dans <a
|
||||
href="https://web.archive.org/web/20240617080716/https://www.cipherbliss.com/contact">la
|
||||
page dédiée aux moyens de contact</a>.</p>
|
||||
<p>Dans un café vie privée on vulgarise auprès du grand public des
|
||||
enjeux et des notions autour de la vie privée et des technologies
|
||||
numériques. Voici quelques sujets régulièrement abordés dans les
|
||||
ateliers:</p>
|
||||
<p>Comprendre les dangers d’un monde sans vie privée répandu sous la
|
||||
fameuse idée que l' »on a rien à cacher », communiquer de façon
|
||||
sécurisée, réaliser des sauvegardes automatiques, comprendre
|
||||
l’architecture d’internet et du web, contribuer au libre, défendre le
|
||||
droit d’accès à l’information de qualité, comprendre les sciences,
|
||||
sortir des GAFAM, adopter <a
|
||||
href="https://web.archive.org/web/20240617080716/https://www.chatons.org/">les
|
||||
CHATONS</a>, protéger des accès avec des <a
|
||||
href="https://web.archive.org/web/20240617080716/https://www.cipherbliss.com/comment-ne-plus-perdre-de-temps-avec-ses-mots-de-passe/">gestionnaires
|
||||
de mot de passe</a>, sortir des bulles de filtrage des médias sociaux,
|
||||
récupérer son temps d’attention, suivre les évolutions juridiques et les
|
||||
atteintes aux libertés fondamentales, remettre la solidarité humaine et
|
||||
l’émancipation au cœur des enjeux de société.</p>
|
||||
<p>Des évènements et groupes de personnes similaires peuvent être
|
||||
retrouvés dans l’<a
|
||||
href="https://web.archive.org/web/20240617080716/https://www.agendadulibre.org/">agenda
|
||||
du libre</a> et dans le fédiverse.</p>
|
||||
<p>Des recettes de cookies sous licence libre, la fameuse pâtisserie qui
|
||||
habite dans nos navigateurs web : <a
|
||||
href="https://web.archive.org/web/20240617080716/https://www.cuisine-libre.org/cookies"><span>https://www.cuisine-libre.org/cookies</span></a></p>
|
||||
<p>Trouver des alternatives aux logiciels privateurs: <a
|
||||
href="https://web.archive.org/web/20240617080716/https://alternativeto.net/"><span>https://alternativeto.net</span></a></p>
|
||||
<p>Le covoiturage libre: <a
|
||||
href="https://web.archive.org/web/20240617080716/https://www.mobicoop.fr/"><span>https://www.mobicoop.fr</span></a></p>
|
||||
<p>Sci hub pour libérer l’accès aux publications scientifiques: <a
|
||||
href="https://web.archive.org/web/20240617080716/https://sci-hub.hkvisa.net/"><span>https://sci-hub.hkvisa.net</span></a></p>
|
||||
<p>Bon voyage sur les internets!</p>
|
||||
</body>
|
||||
</html>
|
@ -1,237 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>cipherbliss_blog</title>
|
||||
<style>
|
||||
html {
|
||||
color: #1a1a1a;
|
||||
background-color: #fdfdfd;
|
||||
}
|
||||
body {
|
||||
margin: 0 auto;
|
||||
max-width: 36em;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
hyphens: auto;
|
||||
overflow-wrap: break-word;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-kerning: normal;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
font-size: 0.9em;
|
||||
padding: 12px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.8em;
|
||||
}
|
||||
}
|
||||
@media print {
|
||||
html {
|
||||
background-color: white;
|
||||
}
|
||||
body {
|
||||
background-color: transparent;
|
||||
color: black;
|
||||
font-size: 12pt;
|
||||
}
|
||||
p, h2, h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
h2, h3, h4 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
a {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
a:visited {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1.4em;
|
||||
}
|
||||
h5, h6 {
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
}
|
||||
h6 {
|
||||
font-weight: normal;
|
||||
}
|
||||
ol, ul {
|
||||
padding-left: 1.7em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
li > ol, li > ul {
|
||||
margin-top: 0;
|
||||
}
|
||||
blockquote {
|
||||
margin: 1em 0 1em 1.7em;
|
||||
padding-left: 1em;
|
||||
border-left: 2px solid #e6e6e6;
|
||||
color: #606060;
|
||||
}
|
||||
code {
|
||||
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
|
||||
font-size: 85%;
|
||||
margin: 0;
|
||||
hyphens: manual;
|
||||
}
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
pre code {
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
overflow-wrap: normal;
|
||||
}
|
||||
.sourceCode {
|
||||
background-color: transparent;
|
||||
overflow: visible;
|
||||
}
|
||||
hr {
|
||||
background-color: #1a1a1a;
|
||||
border: none;
|
||||
height: 1px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
table {
|
||||
margin: 1em 0;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
display: block;
|
||||
font-variant-numeric: lining-nums tabular-nums;
|
||||
}
|
||||
table caption {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
tbody {
|
||||
margin-top: 0.5em;
|
||||
border-top: 1px solid #1a1a1a;
|
||||
border-bottom: 1px solid #1a1a1a;
|
||||
}
|
||||
th {
|
||||
border-top: 1px solid #1a1a1a;
|
||||
padding: 0.25em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
td {
|
||||
padding: 0.125em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 4em;
|
||||
text-align: center;
|
||||
}
|
||||
#TOC li {
|
||||
list-style: none;
|
||||
}
|
||||
#TOC ul {
|
||||
padding-left: 1.3em;
|
||||
}
|
||||
#TOC > ul {
|
||||
padding-left: 0;
|
||||
}
|
||||
#TOC a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
/* The extra [class] is a hack that increases specificity enough to
|
||||
override a similar rule in reveal.js */
|
||||
ul.task-list[class]{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
font-size: inherit;
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header id="title-block-header">
|
||||
<h1 class="title">cipherbliss_blog</h1>
|
||||
</header>
|
||||
<h1 id="création-dun-blog-gemini-1">Création d'un blog gemini</h1>
|
||||
<p>Et hop, un générateur qui fait le café à partir de fichiers orgmode
|
||||
ou markdown.</p>
|
||||
<p>L'idée est d'avoir un ensemble de billets de blogs en texte simple
|
||||
versionnés avec git et servis par une capsule gemini ainsi que par un
|
||||
site web. On aura besoin de convertir des billets existants, et de
|
||||
rédiger les nouveaux dans un format qui nous convient, par exemple
|
||||
markdown ou orgmode afin de rendre le tout le plus pérenne possible. On
|
||||
aura aussi besoin de référencer les images dans un dossier de notre
|
||||
dépot, et de gérer les relations entres articles pour que les liens
|
||||
aient du sens sur la capsule gemini autant que dans la version web. On
|
||||
souhaite aussi fournir un flux RSS, et un template de billet de blog
|
||||
avec une entête et un pied de page commun qui donne des moyens de
|
||||
contact, de soutenir l'auteur, et de revenir à l'accueil. On prendra
|
||||
aussi en charge différentes pages:</p>
|
||||
<ul>
|
||||
<li>à propos</li>
|
||||
<li>contact</li>
|
||||
<li>nos projets</li>
|
||||
<li>une liste des articles triés par date.</li>
|
||||
</ul>
|
||||
<p>Il nous faudra aussi un script de mise à jour du blog qui se charge
|
||||
de mettre à jour le flux rss, le dépot git. On peut aller chercher de
|
||||
l'automatisation dans la gestion de plusieurs capsules différentes en
|
||||
tagguant les articles par nom de blog, ce qui nécessite un fichier de
|
||||
config pour les correspondances.</p>
|
||||
<h1 id="export-darticles-existants">export d'articles existants</h1>
|
||||
<h2 id="depuis-wordpress">Depuis wordpress</h2>
|
||||
<p>Connec à la base de données mysql, et extraction de chaque article
|
||||
pour récupérer la partie HTML et la convertir en markdown et en fichiers
|
||||
org.</p>
|
||||
<h2 id="depuis-des-fichiers-orgmode.">Depuis des fichiers orgmode.</h2>
|
||||
<p>J'écris en orgmode une base de connaissances qui contient aussi un
|
||||
export de mes anciens billets de blog dans un dossier par blog. Pour
|
||||
cibler quels billets utiliser pour quel blog j'ai donc deux
|
||||
possibilités: leur chemin de fichier, ou des tags particuliers présents
|
||||
dans les fichiers org. <a
|
||||
href="id:5a197a1b-ddfe-4c79-8934-d9a28ab6df65">Textes de blog en
|
||||
préparation</a> <a
|
||||
href="https://forge.chapril.org/tykayn/org-report-stats">https://forge.chapril.org/tykayn/org-report-stats</a></p>
|
||||
<h1 id="flux-créatif">Flux créatif</h1>
|
||||
<p>Rédaction, conversion, completion des nouveaux articles, régénération
|
||||
des indexs et flux rss, mise à jour du dépot git, publication des
|
||||
pages.</p>
|
||||
<h1 id="sources-dinspiration">Sources d'inspiration:</h1>
|
||||
<p>Offpunk LazyBlog Dotclear, Wordpress, Hugo, Pélican Pandoc, PandocGmi
|
||||
<a
|
||||
href="https://github.com/njamescouk/pandocGmi/tree/master">https://github.com/njamescouk/pandocGmi/tree/master</a></p>
|
||||
<h1 id="roadmap">Roadmap</h1>
|
||||
<ul>
|
||||
<li>config par site web de son nom de domaine</li>
|
||||
<li>réécriture des liens internes</li>
|
||||
<li>réécriture des url des images vers le dossier courant</li>
|
||||
<li>réparer la génération de fichiers gmi</li>
|
||||
<li>template footer article: gestion article suivant et précédent</li>
|
||||
<li>conversion des liens avec nom de domaine si relatifs</li>
|
||||
</ul>
|
||||
<h1 id="fait">Fait</h1>
|
||||
<ul>
|
||||
<li>navigation sur les pages d'article</li>
|
||||
</ul>
|
||||
<p>- gestion des langues dans la source et la destination</p>
|
||||
<ul>
|
||||
<li>gestion multi site et multi langue</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
@ -1,182 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>cipherbliss_blog</title>
|
||||
<style>
|
||||
html {
|
||||
color: #1a1a1a;
|
||||
background-color: #fdfdfd;
|
||||
}
|
||||
body {
|
||||
margin: 0 auto;
|
||||
max-width: 36em;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
hyphens: auto;
|
||||
overflow-wrap: break-word;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-kerning: normal;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
font-size: 0.9em;
|
||||
padding: 12px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.8em;
|
||||
}
|
||||
}
|
||||
@media print {
|
||||
html {
|
||||
background-color: white;
|
||||
}
|
||||
body {
|
||||
background-color: transparent;
|
||||
color: black;
|
||||
font-size: 12pt;
|
||||
}
|
||||
p, h2, h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
h2, h3, h4 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
a {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
a:visited {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1.4em;
|
||||
}
|
||||
h5, h6 {
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
}
|
||||
h6 {
|
||||
font-weight: normal;
|
||||
}
|
||||
ol, ul {
|
||||
padding-left: 1.7em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
li > ol, li > ul {
|
||||
margin-top: 0;
|
||||
}
|
||||
blockquote {
|
||||
margin: 1em 0 1em 1.7em;
|
||||
padding-left: 1em;
|
||||
border-left: 2px solid #e6e6e6;
|
||||
color: #606060;
|
||||
}
|
||||
code {
|
||||
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
|
||||
font-size: 85%;
|
||||
margin: 0;
|
||||
hyphens: manual;
|
||||
}
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
pre code {
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
overflow-wrap: normal;
|
||||
}
|
||||
.sourceCode {
|
||||
background-color: transparent;
|
||||
overflow: visible;
|
||||
}
|
||||
hr {
|
||||
background-color: #1a1a1a;
|
||||
border: none;
|
||||
height: 1px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
table {
|
||||
margin: 1em 0;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
display: block;
|
||||
font-variant-numeric: lining-nums tabular-nums;
|
||||
}
|
||||
table caption {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
tbody {
|
||||
margin-top: 0.5em;
|
||||
border-top: 1px solid #1a1a1a;
|
||||
border-bottom: 1px solid #1a1a1a;
|
||||
}
|
||||
th {
|
||||
border-top: 1px solid #1a1a1a;
|
||||
padding: 0.25em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
td {
|
||||
padding: 0.125em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 4em;
|
||||
text-align: center;
|
||||
}
|
||||
#TOC li {
|
||||
list-style: none;
|
||||
}
|
||||
#TOC ul {
|
||||
padding-left: 1.3em;
|
||||
}
|
||||
#TOC > ul {
|
||||
padding-left: 0;
|
||||
}
|
||||
#TOC a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
/* The extra [class] is a hack that increases specificity enough to
|
||||
override a similar rule in reveal.js */
|
||||
ul.task-list[class]{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
font-size: inherit;
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header id="title-block-header">
|
||||
<h1 class="title">cipherbliss_blog</h1>
|
||||
</header>
|
||||
<h1 id="soutien-1">Soutien</h1>
|
||||
<p>[2024-11-03] Si vous aimez ce que nous faisons à Cipher Bliss, vous
|
||||
pouvez nous soutenir de plusieurs façons: en faisant un micro don sur
|
||||
liberapay. Donner : <a
|
||||
href="https://liberapay.com/cipherbliss/donate">https://liberapay.com/cipherbliss/donate</a></p>
|
||||
<p>Le plus simple nous pour nous faire connaître étant de partager cet
|
||||
article. Suivez moi sur Mastodon @tykayn@mastodon.cipherbliss.com. <a
|
||||
href="https://mastodon.cipherbliss.com/@tykayn">https://mastodon.cipherbliss.com/@tykayn</a></p>
|
||||
<p>Ce site restera libre comme un gnou dans la nature et sans pubs,
|
||||
parce qu'on vous aime. Que la source soit avec vous!</p>
|
||||
</body>
|
||||
</html>
|
@ -1,177 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>cipherbliss_blog</title>
|
||||
<style>
|
||||
html {
|
||||
color: #1a1a1a;
|
||||
background-color: #fdfdfd;
|
||||
}
|
||||
body {
|
||||
margin: 0 auto;
|
||||
max-width: 36em;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
hyphens: auto;
|
||||
overflow-wrap: break-word;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-kerning: normal;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
font-size: 0.9em;
|
||||
padding: 12px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.8em;
|
||||
}
|
||||
}
|
||||
@media print {
|
||||
html {
|
||||
background-color: white;
|
||||
}
|
||||
body {
|
||||
background-color: transparent;
|
||||
color: black;
|
||||
font-size: 12pt;
|
||||
}
|
||||
p, h2, h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
h2, h3, h4 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
a {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
a:visited {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1.4em;
|
||||
}
|
||||
h5, h6 {
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
}
|
||||
h6 {
|
||||
font-weight: normal;
|
||||
}
|
||||
ol, ul {
|
||||
padding-left: 1.7em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
li > ol, li > ul {
|
||||
margin-top: 0;
|
||||
}
|
||||
blockquote {
|
||||
margin: 1em 0 1em 1.7em;
|
||||
padding-left: 1em;
|
||||
border-left: 2px solid #e6e6e6;
|
||||
color: #606060;
|
||||
}
|
||||
code {
|
||||
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
|
||||
font-size: 85%;
|
||||
margin: 0;
|
||||
hyphens: manual;
|
||||
}
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
pre code {
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
overflow-wrap: normal;
|
||||
}
|
||||
.sourceCode {
|
||||
background-color: transparent;
|
||||
overflow: visible;
|
||||
}
|
||||
hr {
|
||||
background-color: #1a1a1a;
|
||||
border: none;
|
||||
height: 1px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
table {
|
||||
margin: 1em 0;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
display: block;
|
||||
font-variant-numeric: lining-nums tabular-nums;
|
||||
}
|
||||
table caption {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
tbody {
|
||||
margin-top: 0.5em;
|
||||
border-top: 1px solid #1a1a1a;
|
||||
border-bottom: 1px solid #1a1a1a;
|
||||
}
|
||||
th {
|
||||
border-top: 1px solid #1a1a1a;
|
||||
padding: 0.25em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
td {
|
||||
padding: 0.125em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 4em;
|
||||
text-align: center;
|
||||
}
|
||||
#TOC li {
|
||||
list-style: none;
|
||||
}
|
||||
#TOC ul {
|
||||
padding-left: 1.3em;
|
||||
}
|
||||
#TOC > ul {
|
||||
padding-left: 0;
|
||||
}
|
||||
#TOC a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
/* The extra [class] is a hack that increases specificity enough to
|
||||
override a similar rule in reveal.js */
|
||||
ul.task-list[class]{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
font-size: inherit;
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header id="title-block-header">
|
||||
<h1 class="title">cipherbliss_blog</h1>
|
||||
</header>
|
||||
<h1 id="ça-déménage-1">Ça déménage</h1>
|
||||
<p>Oui ce blog fait bouger les lignes avec son générateur statique fait
|
||||
maison à partir de fichiers Orgmode. La peinture est fraîche.</p>
|
||||
<p><a
|
||||
href="https://forge.chapril.org/tykayn/orgmode-to-gemini-blog">https://forge.chapril.org/tykayn/orgmode-to-gemini-blog</a></p>
|
||||
</body>
|
||||
</html>
|
@ -1,201 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>cipherbliss_blog</title>
|
||||
<style>
|
||||
html {
|
||||
color: #1a1a1a;
|
||||
background-color: #fdfdfd;
|
||||
}
|
||||
body {
|
||||
margin: 0 auto;
|
||||
max-width: 36em;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
hyphens: auto;
|
||||
overflow-wrap: break-word;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-kerning: normal;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
font-size: 0.9em;
|
||||
padding: 12px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.8em;
|
||||
}
|
||||
}
|
||||
@media print {
|
||||
html {
|
||||
background-color: white;
|
||||
}
|
||||
body {
|
||||
background-color: transparent;
|
||||
color: black;
|
||||
font-size: 12pt;
|
||||
}
|
||||
p, h2, h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
h2, h3, h4 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
a {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
a:visited {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1.4em;
|
||||
}
|
||||
h5, h6 {
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
}
|
||||
h6 {
|
||||
font-weight: normal;
|
||||
}
|
||||
ol, ul {
|
||||
padding-left: 1.7em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
li > ol, li > ul {
|
||||
margin-top: 0;
|
||||
}
|
||||
blockquote {
|
||||
margin: 1em 0 1em 1.7em;
|
||||
padding-left: 1em;
|
||||
border-left: 2px solid #e6e6e6;
|
||||
color: #606060;
|
||||
}
|
||||
code {
|
||||
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
|
||||
font-size: 85%;
|
||||
margin: 0;
|
||||
hyphens: manual;
|
||||
}
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
pre code {
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
overflow-wrap: normal;
|
||||
}
|
||||
.sourceCode {
|
||||
background-color: transparent;
|
||||
overflow: visible;
|
||||
}
|
||||
hr {
|
||||
background-color: #1a1a1a;
|
||||
border: none;
|
||||
height: 1px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
table {
|
||||
margin: 1em 0;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
display: block;
|
||||
font-variant-numeric: lining-nums tabular-nums;
|
||||
}
|
||||
table caption {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
tbody {
|
||||
margin-top: 0.5em;
|
||||
border-top: 1px solid #1a1a1a;
|
||||
border-bottom: 1px solid #1a1a1a;
|
||||
}
|
||||
th {
|
||||
border-top: 1px solid #1a1a1a;
|
||||
padding: 0.25em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
td {
|
||||
padding: 0.125em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 4em;
|
||||
text-align: center;
|
||||
}
|
||||
#TOC li {
|
||||
list-style: none;
|
||||
}
|
||||
#TOC ul {
|
||||
padding-left: 1.3em;
|
||||
}
|
||||
#TOC > ul {
|
||||
padding-left: 0;
|
||||
}
|
||||
#TOC a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
/* The extra [class] is a hack that increases specificity enough to
|
||||
override a similar rule in reveal.js */
|
||||
ul.task-list[class]{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
font-size: inherit;
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header id="title-block-header">
|
||||
<h1 class="title">cipherbliss_blog</h1>
|
||||
</header>
|
||||
<h1 id="article">Article</h1>
|
||||
<ul>
|
||||
<li>ID: 309</li>
|
||||
<li>guid:</li>
|
||||
<li>status: publish</li>
|
||||
<li>publié le: <2011-11-26 17:01:59></li>
|
||||
<li>modifié: <2011-11-26 17:47:37></li>
|
||||
<li>Index des articles du blog <a
|
||||
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
|
||||
</ul>
|
||||
<h2 id="bienvenue-sur-informageek-1">Bienvenue sur Informageek !</h2>
|
||||
<p>ceci<sub>estduhtml</sub></p>
|
||||
<p><img alt="<a
|
||||
href="https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png">https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png</a>"
|
||||
src="<a
|
||||
href="https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png">https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/2009_internet_ratio_p1000.png/400px-2009_internet_ratio_p1000.png</a>"
|
||||
/></p>
|
||||
<p>Salut les ptis poulets et bienvenue dans un lieu de déperdition
|
||||
geekesque où vont s'affronter divers centres d'intérêt autour des
|
||||
nouvelles technologies, de la programmation et de l'insolite du web.
|
||||
Bonne visite!</p>
|
||||
<p>(<a title="Internet" hreflang="fr" href="<a
|
||||
href="https://fr.wikipedia.org/wiki/Internet">https://fr.wikipedia.org/wiki/Internet</a>">photo:
|
||||
wikipédia page internet</a>)</p>
|
||||
<h1 id="liens">Liens</h1>
|
||||
<ul>
|
||||
<li>cipherbliss <a
|
||||
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
@ -38,15 +38,12 @@ https://forge.chapril.org/tykayn/org-report-stats
|
||||
régénération des indexs et flux rss,
|
||||
mise à jour du dépot git,
|
||||
publication des pages.
|
||||
|
||||
* Sources d'inspiration:
|
||||
Offpunk
|
||||
LazyBlog
|
||||
Dotclear, Wordpress, Hugo, Pélican
|
||||
Pandoc, PandocGmi
|
||||
Offpunk, LazyBlog, Dotclear, Wordpress, Hugo, Pélican, Pandoc, PandocGmi
|
||||
https://github.com/njamescouk/pandocGmi/tree/master
|
||||
|
||||
* Roadmap
|
||||
|
||||
- config par site web de son nom de domaine
|
||||
- réécriture des liens internes
|
||||
- réécriture des url des images vers le dossier courant
|
||||
@ -56,5 +53,5 @@ Pandoc, PandocGmi
|
||||
|
||||
* Fait
|
||||
- navigation sur les pages d'article
|
||||
- gestion des langues dans la source et la destination
|
||||
- gestion des langues dans la source et la destination
|
||||
- gestion multi site et multi langue
|
||||
|
@ -103,16 +103,19 @@ p {
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 4rem;
|
||||
color: #221d30;
|
||||
font-size: 2.5rem;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 3rem;
|
||||
font-size: 2rem;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.5rem;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
h1,
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"sourceRoot":"","sources":["../styles_src/style_general.scss"],"names":[],"mappings":";AAAA;AACA;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;EAIE;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;;;AAGF;AAEA;EACE;;AAEA;EAEE;;;AAIJ;EACE;EACA;EACA;EACA;;;AAGF;AAGI;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;;;AAGN;EACE;;;AAIF;EACE;EAEA;EACA;EACA;;AAEA;EACE;EACA;;AAIF;EAEI;EACA;EACA;EACA;;;AAIN;AAAA;AAAA;AAAA;EAIE;;;AAEF;EACI;EACF;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAMM;EACJ;EACA;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;AAAA;AAAA;EAIE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAIF;EACE;;;AAIA;EAEE;EACA;EACA;;;AAIJ;EACE;;AACA;EACE;EACA;EACA;EACA;EACA;;;AAGJ;EACE;;;AAEF;AAAA;EAEE;;;AAIF;EACI;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAIF;EACE;IACE;;EAEF;IACE","file":"style_general.css"}
|
||||
{"version":3,"sourceRoot":"","sources":["../styles_src/style_general.scss"],"names":[],"mappings":";AAAA;AACA;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;EAIE;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;;;AAGF;AAEA;EACE;;AAEA;EAEE;;;AAIJ;EACE;EACA;EACA;EACA;;;AAGF;AAGI;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;;;AAGN;EACE;;;AAIF;EACE;EAEA;EACA;EACA;;AAEA;EACE;EACA;;AAIF;EAEI;EACA;EACA;EACA;;;AAIN;AAAA;AAAA;AAAA;EAIE;;;AAEF;EACI;EACF;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;EACF;EACA;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;AAAA;AAAA;EAIE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAIF;EACE;;;AAIA;EAEE;EACA;EACA;;;AAIJ;EACE;;AACA;EACE;EACA;EACA;EACA;EACA;;;AAGJ;EACE;;;AAEF;AAAA;EAEE;;;AAIF;EACI;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAIF;EACE;IACE;;EAEF;IACE","file":"style_general.css"}
|
@ -112,16 +112,19 @@ p {
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 4rem;
|
||||
color: #221d30;
|
||||
font-size: 2.5rem;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 3rem;
|
||||
font-size: 2rem;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.5rem;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -130,7 +133,7 @@ h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
overflow-wrap: break-word;
|
||||
overflow-wrap: break-word;
|
||||
text-wrap: balance;
|
||||
line-height: 1.3em;
|
||||
}
|
||||
|
31
testing.py
31
testing.py
@ -1,15 +1,30 @@
|
||||
#!/bin/python3
|
||||
import os
|
||||
import argparse
|
||||
import re
|
||||
# import argparse
|
||||
|
||||
from utils import *
|
||||
from website_config import configs_sites
|
||||
|
||||
parser = argparse.ArgumentParser(description="Générer un site Web à partir de fichiers HTML.")
|
||||
parser.add_argument("blog_name", help="Le chemin vers le dossier contenant les fichiers HTML.")
|
||||
# parser = argparse.ArgumentParser(description="Générer un site Web à partir de fichiers HTML.")
|
||||
# parser.add_argument("blog_name", help="Le chemin vers le dossier contenant les fichiers HTML.")
|
||||
# parser.add_argument("--title", "-t", default="Mon site Web", help="Le titre du site Web.")
|
||||
# parser.add_argument("--style", default="templates/style_general.css", help="Le chemin vers le fichier de style CSS.")
|
||||
args = parser.parse_args()
|
||||
# args = parser.parse_args()
|
||||
|
||||
# print(configs_sites[args.blog_name]['DESCRIPTION'])
|
||||
# tester la génération de slug sur un fichier org donné
|
||||
|
||||
print(configs_sites[args.blog_name]['DESCRIPTION'])
|
||||
mylog(configs_sites[f"{args.blog_name}"]['DESCRIPTION'])
|
||||
basename_file = '20111126170159_cipherbliss_blog_120_bienvenue-sur-informageek.org'
|
||||
found_slug = detect_slug_in_file_basename(basename_file)
|
||||
print('slug found:',found_slug)
|
||||
|
||||
basename_file = '20200803124344_blog_cil_gometz_11_ecrire-une-comptine-en-python-bonjour-le-jour.org'
|
||||
found_slug = detect_slug_in_file_basename(basename_file)
|
||||
print('slug found:',found_slug)
|
||||
|
||||
basename_file = '20241115010205_cipherbliss_blog_suivi-de-rédaction-de-livre-orgmode.org'
|
||||
found_slug = detect_slug_in_file_basename(basename_file)
|
||||
print('slug found:',found_slug)
|
||||
|
||||
basename_file = '20061125015032_tkblog_864_pourquoi-mee2-est-il-une-flamme.org'
|
||||
found_slug = detect_slug_in_file_basename(basename_file)
|
||||
print('slug found:',found_slug)
|
||||
|
37
utils.py
37
utils.py
@ -3,6 +3,7 @@ import os
|
||||
import re
|
||||
import shutil
|
||||
from datetime import datetime
|
||||
import unicodedata
|
||||
|
||||
from website_config import *
|
||||
|
||||
@ -183,19 +184,47 @@ def remove_hint_html(text):
|
||||
return re.sub(pattern, replacement, text, flags=re.DOTALL)
|
||||
|
||||
|
||||
def detect_slug_in_file_basename(file_basename):
|
||||
def slugify_title(title_text):
|
||||
"""
|
||||
Transforme un titre en un slug valide.
|
||||
|
||||
:param title_text: Titre en texte (str).
|
||||
:return: Slug en minuscules avec des tirets (str).
|
||||
"""
|
||||
title_text = unicodedata.normalize('NFKD', title_text).encode('ascii', 'ignore').decode('ascii')
|
||||
title_text = title_text.lower()
|
||||
title_text = re.sub(r'[^a-z0-9\s-]', '', title_text)
|
||||
title_text = re.sub(r'\s+', '-', title_text)
|
||||
title_text = re.sub(r'-+', '-', title_text)
|
||||
title_text = title_text.strip('-')
|
||||
return title_text
|
||||
|
||||
def detect_slug_in_file_basename(file_basename) -> str:
|
||||
"""
|
||||
Extrait l'année et le slug du nom de fichier selon le format spécifié.
|
||||
|
||||
:param file_basename: Nom de fichier (str).
|
||||
:return: Tuple contenant l'année et le slug (année, slug) ou None si non trouvé.
|
||||
"""
|
||||
pattern = r'^(\d{4})\d{8}(.+)\.org$'
|
||||
pattern = r'^(\d{4})\d{10}(.+)\.org$'
|
||||
match = re.match(pattern, file_basename)
|
||||
if match:
|
||||
year = match.group(1)
|
||||
slug = match.group(2)
|
||||
# prendre la partie finale du nom du fichier
|
||||
splitted = slug.split('_')
|
||||
# print('len(splitted)', len(splitted), splitted)
|
||||
if len(splitted) > 1:
|
||||
slug = splitted[len(splitted)-1]
|
||||
|
||||
final_slug = f"{year}/{slug}"
|
||||
return final_slug
|
||||
# final_slug=slug.replace("_cipherbliss_blog_","")
|
||||
# final_slug=final_slug.replace("_blog_cil_gometz_","")
|
||||
slug=enlever_premier_tiret_ou_underscore(slug)
|
||||
|
||||
slug = f"{year}/{slug}"
|
||||
|
||||
|
||||
|
||||
return slug
|
||||
return None
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user