This commit is contained in:
Tykayn 2024-11-14 13:32:56 +01:00 committed by tykayn
parent 9267636687
commit 086287fad3
48 changed files with 536 additions and 1681 deletions

View File

@ -76,14 +76,18 @@ Pandoc, PandocGmi
# Roadmap # 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
- réparer la génération de fichiers gmi
- template footer article: gestion article suivant et précédent
- conversion des liens avec nom de domaine si relatifs
- template footer article: gestion article suivant et précédent
- sérendipité
- pages de tags
- liste de N derniers articles sur l'accueil, 10 par défaut
- réécriture des liens internes
- conversion des liens avec nom de domaine si relatifs
- détection des ID org-roam pour réécrire les liens html
- réécriture des url des images vers le dossier courant
# Fait # Fait
- génération de fichiers gmi
- config par site web de son nom de domaine
- navigation sur les pages d'article - 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 - gestion multi site et multi langue

View File

@ -1,59 +1,58 @@
import os
import argparse import argparse
import re
import datetime import datetime
import os
import re
import shutil import shutil
import re from enrich_html import enrich_one_file
from website_config import configs_sites from website_config import configs_sites, global_config
# from enrich_html import static_page_path # from enrich_html import static_page_path
# génère l'index gemini et html des articles rangés par langue # génère l'index gemini et html des articles rangés par langue
parser = argparse.ArgumentParser(description="Générer un site Web à partir de fichiers HTML.") parser = argparse.ArgumentParser(description="Générer un site Web à partir de fichiers HTML.")
parser.add_argument("source", help="Le chemin vers le dossier contenant les fichiers HTML.") parser.add_argument("source", help="Le chemin vers le dossier contenant les fichiers HTML.")
parser.add_argument("title", default="Mon site Web", help="Le titre du site Web.")
args = parser.parse_args() args = parser.parse_args()
# Variables personnalisables # Variables personnalisables
DOSSIER_SOURCE = 'sources/'+args.source # Nom du dossier contenant les fichiers Markdown DOSSIER_SOURCE = 'sources/' + args.source # Nom du dossier contenant les fichiers Markdown
FICHIER_INDEX = 'index_'+args.source # Nom du fichier d'index à générer FICHIER_INDEX = 'index_' + args.source # Nom du fichier d'index à générer
# TITRE_INDEX = f" # {args.title} - Articles"
TITRE_INDEX = f"" TITRE_INDEX = f""
source_files_extension="org" source_files_extension = "org"
config_title = configs_sites[args.source]['BLOG_TITLE']
# Expression régulière pour extraire la date et le slug du nom de fichier org # Expression régulière pour extraire la date et le slug du nom de fichier org
regex = r"^(\d{14})(-[a-zA-Z0-9_-]+)\.gmi$" regex = r"^(\d{14})(-[a-zA-Z0-9_-]+)\.gmi$"
regex_orgroam = r"^(\d{14})_([a-zA-Z0-9_-]+)\.gmi$" regex_orgroam = r"^(\d{14})_([a-zA-Z0-9_-]+)\.gmi$"
use_article_file_for_name=False use_article_file_for_name = (not global_config["slug_with_year"])
website_name = args.source website_name = args.source
def trouver_nom_article(fichier_org, format="html"): def trouver_nom_article(fichier_org, format="html"):
print('fichier_org, ',fichier_org) # print('fichier_org, ', fichier_org)
with open(fichier_org, 'r') as file: with open(fichier_org, 'r') as file:
lignes = file.readlines() lignes = file.readlines()
nom_article = '' nom_article = ''
# print('trouver_nom_article format',format)
# Expressions régulières pour trouver les titres de niveau 1 et 2 # Expressions régulières pour trouver les titres de niveau 1 et 2
if format == 'html': if format == 'html':
titre_niveau_1 = r'^\<h1 id.*?\>(.+)\<\/h1\>$' titre_niveau_1 = r'<h1\s+(?:id|data-created)="[^"]*">(.*?)</h1>'
titre_niveau_2 = r'^\<h2.*?\>(.+)\<\/h2\>$' titre_niveau_2 = r'^\<h2.*?\>(.+)\<\/h2\>$'
else: else:
titre_niveau_1 = r'^\*+ (.+)$' titre_niveau_1 = r'^\*+ (.+)$'
titre_niveau_2 = r'^\*\*+ (.+)$' titre_niveau_2 = r'^\*\*+ (.+)$'
# Itérer sur les lignes du fichier # Itérer sur les lignes du fichier
for ligne in lignes: for ligne in lignes:
# Rechercher un titre de niveau 1 # Rechercher un titre de niveau 1
titre_niveau_1_match = re.match(titre_niveau_1, ligne) titre_niveau_1_match = re.match(titre_niveau_1, ligne)
if titre_niveau_1_match: if titre_niveau_1_match:
titre_niveau_1_texte = titre_niveau_1_match.group(1) titre_niveau_1_texte = titre_niveau_1_match.group(1)
if titre_niveau_1_texte.lower() != "article" and titre_niveau_1_texte.lower() != "liens" : if titre_niveau_1_texte.lower() != "article" and titre_niveau_1_texte.lower() != "liens":
nom_article = titre_niveau_1_texte nom_article = titre_niveau_1_texte
break break
else: else:
@ -62,18 +61,18 @@ def trouver_nom_article(fichier_org, format="html"):
if titre_niveau_2_match: if titre_niveau_2_match:
nom_article = titre_niveau_2_match.group(1) nom_article = titre_niveau_2_match.group(1)
break break
print(f"Nom de l'article : {nom_article}") # print(f"Nom de l'article : {nom_article}")
return nom_article.replace(args.source+'_', '').replace('_', ' ') return nom_article.replace(args.source + '_', '').replace('_', ' ')
def find_year_and_slug(fichier): def find_year_and_slug(fichier):
fichier = fichier.replace('..','.') fichier = fichier.replace('..', '.')
# print(f" ------------ build_indexes: find in {fichier} -------------") # print(f" ------------ build_indexes: find in {fichier} -------------")
slug = fichier.replace('.gmi','') slug = fichier.replace('.gmi', '')
annee = '2024' annee = '2024'
date_str= '2024-00-00' date_str = '2024-00-00'
date= '2024-00-00' date = '2024-00-00'
match = re.match(regex_orgroam, fichier) match = re.match(regex_orgroam, fichier)
if match: if match:
@ -89,12 +88,12 @@ def find_year_and_slug(fichier):
date = datetime.datetime.strptime(date_str, "%Y-%m-%d") date = datetime.datetime.strptime(date_str, "%Y-%m-%d")
else: else:
date = datetime.datetime.strptime(date_str, "%Y%m%d%H%M%S") date = datetime.datetime.strptime(date_str, "%Y%m%d%H%M%S")
date_string_replaced = str(date).replace(' 00:00:00','') date_string_replaced = str(date).replace(' 00:00:00', '')
slug = fichier.replace('.gmi','') slug = fichier.replace('.gmi', '')
slug = slug.replace(date_string_replaced,'') slug = slug.replace(date_string_replaced, '')
slug = enlever_premier_tiret_ou_underscore(slug) slug = enlever_premier_tiret_ou_underscore(slug)
annee = str(date.year).replace(' 00:00:00','') annee = str(date.year).replace(' 00:00:00', '')
# else: # else:
# print('ERREUR aucun slug trouvé') # print('ERREUR aucun slug trouvé')
@ -113,7 +112,6 @@ def enlever_premier_tiret_ou_underscore(chaîne):
return chaîne return chaîne
# création des dossiers intermédiaires s'il y en a # création des dossiers intermédiaires s'il y en a
# déplace le fichier dans le dossier spécifié # déplace le fichier dans le dossier spécifié
def create_path_folders_and_move_file(path, file): def create_path_folders_and_move_file(path, file):
@ -121,15 +119,17 @@ def create_path_folders_and_move_file(path, file):
shutil.move(file, path) shutil.move(file, path)
def get_files_list_of_folder(folder_path): def get_files_list_of_folder(folder_path):
# Vérifie si le dossier existe # Vérifie si le dossier existe
if not os.path.exists(folder_path): if not os.path.exists(folder_path):
print(f" ------------ build_indexes: Erreur : Le dossier '{dossier_md}' n'existe pas.") print(f" ------------ build_indexes: Erreur : Le dossier '{folder_path}' n'existe pas.")
return return
print('----------- get_files_list_of_folder: folder_path : ',folder_path) # print('----------- get_files_list_of_folder: folder_path : ', folder_path)
# Liste les fichiers articles, trie par nom décroissant # Liste les fichiers articles, trie par nom décroissant
try: try:
fichiers_md = sorted([f.replace('.'+source_files_extension, '.gmi') for f in os.listdir(folder_path) if f.endswith(source_files_extension)], reverse=True) fichiers_md = sorted([f.replace('.' + source_files_extension, '.gmi') for f in os.listdir(folder_path) if
f.endswith(source_files_extension)], reverse=True)
print('fichiers trouvés:', len(fichiers_md)) print('fichiers trouvés:', len(fichiers_md))
return fichiers_md return fichiers_md
except OSError as e: except OSError as e:
@ -140,99 +140,87 @@ def get_files_list_of_folder(folder_path):
# transformer le nom du fichier orgmode en une création de dossier de l'année, et un sous dossier du nom du slug dans le nom de fichier, contenant un seul fichier d'index afin de faire de l'url rewrite en dur. # transformer le nom du fichier orgmode en une création de dossier de l'année, et un sous dossier du nom du slug dans le nom de fichier, contenant un seul fichier d'index afin de faire de l'url rewrite en dur.
# le nom de fichier org commence par une date YYYY-MM-DD ou bien YYYYMMDDHHmmss, est suivie d'un slug, et finit par l'extension .org # le nom de fichier org commence par une date YYYY-MM-DD ou bien YYYYMMDDHHmmss, est suivie d'un slug, et finit par l'extension .org
# Titre pour le fichier d'index def generer_index(dossier_source, fichier_index):
def empty_folder_content(path):
print("empty ", path)
# parcours tous les fichiers et sous-dossiers du dossier
# for filename in os.listdir(path):
# file_path = os.path.join(path, filename)
# # supprime le fichier ou le sous-dossier
# if os.path.isfile(file_path):
# os.remove(file_path)
# else:
# shutil.rmtree(file_path)
def generer_index(dossier_source, fichier_index, titre_index):
# Chemin absolu du dossier parent (pour sauver le fichier d'index) # Chemin absolu du dossier parent (pour sauver le fichier d'index)
dossier_parent = os.path.dirname(os.path.abspath(__file__)) dossier_parent = os.path.dirname(os.path.abspath(__file__))
empty_folder_content(dossier_parent+'/html-websites/'+args.source+'/')
# Chemin complet du dossier contenant les Markdown # Chemin complet du dossier contenant les Markdown
chemin_dossier_source = os.path.join(dossier_parent, dossier_source) chemin_dossier_source = os.path.join(dossier_parent, dossier_source)
files_static = get_files_list_of_folder(chemin_dossier_source+'/') files_static = get_files_list_of_folder(chemin_dossier_source + '/')
files_fr = get_files_list_of_folder(chemin_dossier_source+'/lang_fr') files_fr = get_files_list_of_folder(chemin_dossier_source + '/lang_fr')
files_en = get_files_list_of_folder(chemin_dossier_source+'/lang_en') files_en = get_files_list_of_folder(chemin_dossier_source + '/lang_en')
# Chemin complet pour le fichier d'index # Chemin complet pour le fichier d'index
chemin_fichier_index_gemini = os.path.join(dossier_parent, fichier_index+'.gmi') chemin_fichier_index_gemini = os.path.join(dossier_parent, 'gemini-capsules', args.source, 'index.gmi')
chemin_fichier_index_html = os.path.join(dossier_parent, '/'+fichier_index+'.html') chemin_fichier_index_html = os.path.join(dossier_parent, 'html-websites', args.source, 'index.html')
print('\n index html: ', chemin_fichier_index_html) print('\n index html: ', chemin_fichier_index_html)
# Génère le contenu du fichier d'index # Génère le contenu du fichier d'index
contenu_index_gmi = f"{titre_index}\n{'- ' * len(titre_index)}\n\n" contenu_index_gmi = f"{config_title}\n{'- ' * len(config_title)}\n\n"
contenu_index_html = f"{titre_index}\n{'- ' * len(titre_index)}\n\n" contenu_index_html = f"{config_title}\n{'- ' * len(config_title)}\n\n"
contenu_index_gmi += "\n# Navigation\n-------------------------\n" contenu_index_gmi += "\n# Navigation\n-------------------------\n"
contenu_index_html += "<h1>Navigation</h1>" contenu_index_html += "<h1>Navigation</h1>"
for fichier in files_static: for fichier in files_static:
print(" -------- fichier ",fichier) # print(" -------- fichier ", fichier)
link_html = fichier.replace('.gmi','.html') link_html = fichier.replace('.gmi', '.html')
link_org = fichier.replace('.gmi','.org') link_org = fichier.replace('.gmi', '.org')
file_path_org = os.path.join(dossier_parent, "sources", website_name, link_org)
article_name = trouver_nom_article(file_path_org, 'org')
if article_name:
contenu_index_gmi += f"=> {fichier} {article_name}\n"
else:
contenu_index_gmi += f"=> {fichier}\n" contenu_index_gmi += f"=> {fichier}\n"
if fichier != "index.gmi": if fichier != "index.gmi":
print(' -------- rechercher le nom de l article dans le fichier ') # print(' -------- rechercher le nom de l article dans le fichier ')
if use_article_file_for_name: if use_article_file_for_name:
article_name = link_html article_name = link_html
else: else:
file_path_org = os.path.join(dossier_parent,"sources",website_name, link_org) article_name = trouver_nom_article(file_path_org, 'org')
print('-------------- trouver_nom_article ',file_path_org)
article_name=trouver_nom_article(file_path_org, 'org')
if not article_name: if not article_name:
article_name = link_html article_name = link_html
else: else:
article_name = 'Index' article_name = 'Index'
article_name = article_name.replace('_',' ') article_name = article_name.replace('_', ' ')
contenu_index_html += f"<br><a href=/{link_html}>{article_name}</a>" contenu_index_html += f"<br><a href=/{link_html}>{article_name}</a>"
# ne préciser la langue français que si on a des articles en Anglais # ne préciser la langue français que si on a des articles en Anglais
if len(files_en): if len(files_en):
contenu_index_gmi += "\n# Articles en Français\n-------------------------\n" contenu_index_gmi += "\n# Articles en Français\n-------------------------\n"
# contenu_index_html += "<h1>Articles en Français</h1>" lang_folder = "lang_fr/"
lang_folder="lang_fr/"
# ----------- indexer les articles en Français ------------------ # ----------- indexer les articles en Français ------------------
for fichier in files_fr: 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)
new_folder=f"{année}/{slug}"
new_folder_path_this_article = os.path.join(dossier_parent, 'html-websites/'+args.source+'/'+new_folder+'/')
contenu_index_gmi += f"=> {fichier}\n" contenu_index_gmi += f"=> {fichier}\n"
link_html = fichier.replace('..gmi','.html') link_html = fichier.replace('.gmi', '.html')
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
chemin_fichier_this_article = 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)
article_name=trouver_nom_article(chemin_fichier_this_article) article_name = trouver_nom_article(file_path_org, 'org')
if not article_name: if not article_name:
article_name=slug.replace('-', ' ') article_name = slug.replace('-', ' ')
# contenu_index_html += f"<br><a href=/{lang_folder}/{link_html}>{link_html}</a>" if global_config["slug_with_year"]:
new_folder = f"{année}/{slug}"
new_folder_path_this_article = os.path.join(dossier_parent,
'html-websites/' + args.source + '/' + new_folder + '/')
# 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=/{année}/{slug}>{année} {article_name}</a>" contenu_index_html += f"<br><a href=/{année}/{slug}>{année} {article_name}</a>"
os.makedirs(os.path.dirname(new_folder_path_this_article), exist_ok=True) os.makedirs(os.path.dirname(new_folder_path_this_article), exist_ok=True)
# déplacer le fichier html dans le dossier slug, et le renommer en index.html ensuite pour ne pas modifier l'index du blog shutil.copy(chemin_fichier_this_article_html, new_folder_path_this_article + 'index.html')
shutil.copy(chemin_fichier_this_article, new_folder_path_this_article+'index.html') else:
contenu_index_html += f"<br><a href=/{lang_folder}/{link_html}>{link_html}</a>"
# ---------------- pareil en anglais TODO # ---------------- pareil en anglais TODO
# contenu_index_gmi += "\n# Articles in English\n-------------------------\n" # contenu_index_gmi += "\n# Articles in English\n-------------------------\n"
@ -241,28 +229,24 @@ def generer_index(dossier_source, fichier_index, titre_index):
# for fichier in files_en: # for fichier in files_en:
# ---------------------------------------- # ----------------------------------------
print(contenu_index_gmi) print('chemin_fichier_index_html', chemin_fichier_index_html)
print('chemin_fichier_index_html' , dossier_parent+chemin_fichier_index_html)
print(' ') print(' ')
with open(dossier_parent+chemin_fichier_index_html, 'w', encoding='utf-8') as file: with open(chemin_fichier_index_html, 'w', encoding='utf-8') as file:
file.write('<html><head><title>'+args.title+'</title><link rel=\"stylesheet\" href=\"/style.css\"></link></head><body>'+contenu_index_html+'</article></body></html>') print('contenu_index_html', contenu_index_html)
contenu_index_html = enrich_one_file(contenu_index_html)
file.write(contenu_index_html)
print(f" ------------ build_indexes: Fichier d'index '{chemin_fichier_index_html}' généré avec succès.") print(f" ------------ build_indexes: Fichier d'index '{chemin_fichier_index_html}' généré avec succès.")
destination_html = dossier_parent+'/html-websites/'+args.source+'/'
shutil.copy(dossier_parent+chemin_fichier_index_html, destination_html)
shutil.copy(destination_html+chemin_fichier_index_html, destination_html+'index.html')
# Écrit le contenu dans le fichier d'index # Écrit le contenu dans le fichier d'index
try: try:
with open(chemin_fichier_index_gemini, 'w', encoding='utf-8') as file: with open(chemin_fichier_index_gemini, 'w', encoding='utf-8') as file:
file.write(contenu_index_gmi) file.write(contenu_index_gmi)
print(f" ------------ build_indexes: Fichier d'index gemini '{chemin_fichier_index_gemini}' généré avec succès.") print(
f" ------------ build_indexes: Fichier d'index gemini '{chemin_fichier_index_gemini}' généré avec succès.")
except OSError as e: except OSError as e:
print(f" ------------ build_indexes: Erreur lors de l'écriture du fichier d'index : {e}") print(f" ------------ build_indexes: Erreur lors de l'écriture du fichier d'index : {e}")
if __name__ == "__main__": if __name__ == "__main__":
generer_index(DOSSIER_SOURCE, FICHIER_INDEX, TITRE_INDEX) generer_index(DOSSIER_SOURCE, FICHIER_INDEX)

View File

@ -92,13 +92,13 @@ generate_website() {
cd templates cd templates
convert_sources ../ convert_sources ../
echo "----------- convert_sources : pages template $website_name converties" # echo "----------- convert_sources : pages template $website_name converties"
cd .. cd ..
# traduction fr # traduction fr
cd lang_fr cd lang_fr
convert_sources ../ convert_sources ../
echo "----------- convert_sources :pages en français du site web $website_name converties" # echo "----------- convert_sources :pages en français du site web $website_name converties"
cd .. cd ..
# traduction en # traduction en
@ -133,10 +133,10 @@ convert_markdown_to_gmi() {
echo "----------- convert_markdown_to_gmi : $PWD" # echo "----------- convert_markdown_to_gmi : $PWD"
echo "----------- convert_markdown_to_gmi : destination: $destination_gemini" # echo "----------- convert_markdown_to_gmi : destination: $destination_gemini"
echo "----------- convert_markdown_to_gmi : fichiers markdown présents dans le dossier de base: " # echo "----------- convert_markdown_to_gmi : fichiers markdown présents dans le dossier de base: "
ls -l sources/$website_name/converted/*.md |wc ls -l sources/$website_name/converted/*.md |wc
@ -146,7 +146,7 @@ convert_markdown_to_gmi() {
# pages en # pages en
for fichier in sources/$website_name/converted/*.md ; do for fichier in sources/$website_name/converted/*.md ; do
if [ -f "$fichier" ]; then if [ -f "$fichier" ]; then
echo "----------- convert_markdown_to_gmi : md2gemini : $destination_gemini : $fichier" # echo "----------- convert_markdown_to_gmi : md2gemini : $destination_gemini : $fichier"
md2gemini "$fichier" -w -d $destination_gemini/ md2gemini "$fichier" -w -d $destination_gemini/
fi fi
done done
@ -154,7 +154,7 @@ convert_markdown_to_gmi() {
for fichier in sources/$website_name/lang_fr/converted/*.md ; do for fichier in sources/$website_name/lang_fr/converted/*.md ; do
if [ -f "$fichier" ]; then if [ -f "$fichier" ]; then
echo "----------- convert_markdown_to_gmi : md2gemini : $fichier" # echo "----------- convert_markdown_to_gmi : md2gemini : $fichier"
md2gemini "$fichier" -w -d sources/$website_name/lang_fr/converted/ md2gemini "$fichier" -w -d sources/$website_name/lang_fr/converted/
fi fi
done done
@ -162,7 +162,7 @@ convert_markdown_to_gmi() {
for fichier in sources/$website_name/lang_en/converted/*.md ; do for fichier in sources/$website_name/lang_en/converted/*.md ; do
if [ -f "$fichier" ]; then if [ -f "$fichier" ]; then
echo "----------- convert_markdown_to_gmi : md2gemini : $fichier" # echo "----------- convert_markdown_to_gmi : md2gemini : $fichier"
md2gemini "$fichier" -w -d sources/$website_name/lang_fr/converted/ md2gemini "$fichier" -w -d sources/$website_name/lang_fr/converted/
fi fi
done done
@ -183,7 +183,6 @@ convert_markdown_to_gmi() {
# regrouper les types de fichiers générés # regrouper les types de fichiers générés
bash sass_styles.sh bash sass_styles.sh
# ls -l $style_file
# Boucle à travers la liste des sites Web # Boucle à travers la liste des sites Web
for website_name in "${blogs_folders[@]}"; do for website_name in "${blogs_folders[@]}"; do
@ -192,28 +191,18 @@ for website_name in "${blogs_folders[@]}"; do
convert_markdown_to_gmi $website_name convert_markdown_to_gmi $website_name
# création de l'index: # création de l'index listant les articles pour le html et la capsule gemini:
# prendre les fichiers markdown du dossier md/ , # prendre les fichiers markdown du dossier md/ ,
# et créer un index des fichiers situés dedans, rangés par nom de fichier décroissant, # et créer un index des fichiers situés dedans, rangés par nom de fichier décroissant,
# sauver le tout dans un fichier index.gmi # sauver le tout dans un fichier index.gmi
python3 build_indexes.py $website_name "$website_name" python3 build_indexes.py $website_name
# déplacer les fichiers générés en html dans le dossier statique # déplacer les fichiers générés en html dans le dossier statique
mv sources/$website_name/converted/*.html html-websites/$website_name/
cp sources/$website_name/converted/*.html html-websites/$website_name/ python3 enrich_html.py html-websites/$website_name --style $style_file
cp index_$website_name.html html-websites/$website_name/index.html
# cp sources/$website_name/templates/converted/*.html html-websites/$website_name/templates/
# cp sources/$website_name/lang_en/converted/*.html html-websites/$website_name/lang_en/
python3 enrich_html.py html-websites/$website_name -t $website_name --style $style_file # copier le style dans le dossier html
# # déplacer les fichirers gemini dans la capsule
cp index_$website_name.gmi gemini-capsules/$website_name/index.gmi
# cp sources/$website_name/converted/*.gmi gemini-capsules/$website_name/
# cp sources/$website_name/lang_fr/converted/*.gmi gemini-capsules/$website_name/lang_fr/
# cp sources/$website_name/lang_en/converted/*.gmi gemini-capsules/$website_name/lang_en/
# copy style
cp $style_file html-websites/$website_name/style.css cp $style_file html-websites/$website_name/style.css
done done

View File

@ -1,36 +1,34 @@
#!/bin/python3 #!/bin/python3
import os
import argparse import argparse
import os
import re import re
from website_config import configs_sites from website_config import configs_sites
parser = argparse.ArgumentParser(description="Générer un site Web à partir de 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("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.") 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()
# Style CSS minimaliste # Style CSS minimaliste
style_file = args.style style_file = args.style
blog_name = args.blog_name.replace('html-websites/','') blog_name = args.blog_name.replace('html-websites/', '')
source_blog = f"sources/{blog_name}" source_blog = f"sources/{blog_name}"
header_content_path = f"{source_blog}/templates/converted/header_page.html" header_content_path = f"{source_blog}/templates/converted/header_page.html"
footer_content_path = f"{source_blog}/templates/converted/footer_page.html" footer_content_path = f"{source_blog}/templates/converted/footer_page.html"
static_page_path = f"{source_blog}/templates/html/static.html" static_page_path = f"{source_blog}/templates/html/static.html"
print('---------- blog name ', blog_name) print('---------- blog name ', blog_name)
template_content = configs_sites[blog_name] template_content = configs_sites[blog_name]
footer_content='' after_article = ''
after_article=''
# TODO add footer on every article
# with open(footer_content_path, "r") as f:
# footer_content = f.read()
# TODO make these variables overrided by configuration of a source website inline_the_css = False
# variables du template de page
# inline_the_css=True
def extract_body_content(html_content): def extract_body_content(html_content):
pattern = r'<body[^>]*?>(.*?)</body>' pattern = r'<body[^>]*?>(.*?)</body>'
@ -40,41 +38,26 @@ def extract_body_content(html_content):
else: else:
return None return None
def remove_properties_section(text): def remove_properties_section(text):
pattern = r"<h1 id=\"article\">Article</h1>.+?</ul>" pattern = r"<h1 id=\"article\">Article</h1>.+?</ul>"
replacement = "" replacement = ""
return re.sub(pattern, replacement, text, flags=re.DOTALL) return re.sub(pattern, replacement, text, flags=re.DOTALL)
def remove_article_head_properties_orgmode(text): def remove_article_head_properties_orgmode(text):
pattern = r":PROPERTIES:.+?:END:" pattern = r":PROPERTIES:.+?:END:"
replacement = "" replacement = ""
return re.sub(pattern, replacement, text, flags=re.DOTALL) return re.sub(pattern, replacement, text, flags=re.DOTALL)
def remove_hint_html(text): def remove_hint_html(text):
pattern = r"<p>ceci<sub>estduhtml</sub></p>" pattern = r"<p>ceci<sub>estduhtml</sub></p>"
replacement = "" replacement = ""
return re.sub(pattern, replacement, text, flags=re.DOTALL) return re.sub(pattern, replacement, text, flags=re.DOTALL)
def enrich_one_file(html_content, partials={"header_page": "", "footer_content": ""}):
def enrich_one_file(file, root_path):
print(' ----------- enrich_html: file:',os.path.join(root_path, file))
css_content = ""
inline_the_css=False
# inline_the_css=True
print(' ----------- enrich_html: CSS inline: ',inline_the_css)
# Trouver le fichier entête
header_content=''
with open(os.path.join(root_path, file), "r") as f:
header_content = f.read()
# Ouvrir le fichier HTML en mode lecture
with open(os.path.join(root_path, file), "r") as f:
html_content = f.read()
# remove some parts # remove some parts
html_content = remove_properties_section(html_content) html_content = remove_properties_section(html_content)
html_content = remove_article_head_properties_orgmode(html_content) html_content = remove_article_head_properties_orgmode(html_content)
@ -126,13 +109,15 @@ def enrich_one_file(file, root_path):
</a> </a>
<h1 class="blog-title">{template_content['BLOG_TITLE']}</h1> <h1 class="blog-title">{template_content['BLOG_TITLE']}</h1>
<p class="blog-subtitle">{template_content['BLOG_SUBTITLE']}</p> <p class="blog-subtitle">{template_content['BLOG_SUBTITLE']}</p>
<div class="template-header">
</div>
</div> </div>
<nav class="navbar is-fixed-top is-dark" role="navigation" aria-label="main navigation"> <nav class="navbar is-fixed-top is-dark" role="navigation" aria-label="main navigation">
<div class="navbar-brand"> <div class="navbar-brand">
<a class="navbar-item" href="{template_content['NDD']}"> <a class="navbar-item" href="{template_content['NDD']}">
Accueil
</a> </a>
</div> </div>
<div id="navbarBasicExample" class="navbar-menu"> <div id="navbarBasicExample" class="navbar-menu">
@ -168,11 +153,12 @@ def enrich_one_file(file, root_path):
<footer class="site-footer has-top-divider"> <footer class="site-footer has-top-divider">
<div class="container"> <div class="container">
<div class="site-footer-inner"> <div class="site-footer-inner">
<div class="site-foot">
</div>
<nav class="footer-nav">
{template_content['NAVIGATION']} {template_content['NAVIGATION']}
</nav>
</div> </div>
</div> </div>
</footer> </footer>
@ -182,17 +168,46 @@ def enrich_one_file(file, root_path):
</html> </html>
""" """
# {partials['footer_page']}
# {partials['header_page']}
return html_content
html_path_enriched=os.path.join(root_path, file)
print(' ----------- enrich_html: html_path_enriched ============> ',html_path_enriched) def ouvrir_fichier(chemin_fichier):
if os.path.exists(chemin_fichier):
with open(chemin_fichier, 'r') as fichier:
# Faire quelque chose avec le fichier ouvert
contenu = fichier.read()
return contenu
else:
raise FileNotFoundError(f"Le fichier {chemin_fichier} n'existe pas.")
# Parcourir tous les fichiers HTML dans le dossier
for root_path, _, files in os.walk(blog_name):
# Prendre les templates partiaux pour chaque site web
partials = {
"header_content": "",
"footer_content": "",
}
partials["header_content"] = ouvrir_fichier(os.path.join(root_path, 'templates', 'header_page.org'))
partials["footer_content"] = ouvrir_fichier(os.path.join(root_path, 'templates', 'footer_page.org'))
for file in files:
if file.endswith(".html"):
print(' ----------- enrich_html: file:', os.path.join(root_path, file))
print(' ----------- enrich_html: CSS inline: ', inline_the_css)
# Ouvrir le fichier HTML en mode lecture
with open(os.path.join(root_path, file), "r") as f:
html_content = f.read()
html_content = enrich_one_file(html_content, partials)
html_path_enriched = os.path.join(root_path, file)
print(' ----------- enrich_html: html_path_enriched ============> ', html_path_enriched)
# Écrire le contenu modifié dans le fichier HTML # Écrire le contenu modifié dans le fichier HTML
with open(html_path_enriched, "w") as f: with open(html_path_enriched, "w") as f:
f.write(html_content) f.write(html_content)
print('\n ----------- enrich_html: html écrit ', html_path_enriched) print('\n ----------- enrich_html: html écrit ', html_path_enriched)
# Parcourir tous les fichiers HTML dans le dossier
for root, _, files in os.walk(blog_name):
# print(files)
for file in files:
if file.endswith(".html"):
enrich_one_file(file, root)

1
essais.html Normal file
View File

@ -0,0 +1 @@
<div class="template-header"></div>

View File

@ -0,0 +1,7 @@
--------------------------------------------------------------------------------
## title: tykayn_blog
# index du vortex à chats
coucou!

View File

@ -1,15 +1,15 @@
Tykayn Blog
- - - - - - - - - - -
# Navigation # Navigation
------------------------- -------------------------
=> projets.gmi => projets.gmi Projets
=> index.gmi
=> footer-articles.gmi => footer-articles.gmi
=> contact.gmi => coucou.gmi index du vortex à chats
=> blogroll.gmi => contact.gmi Contact
=> accueil.gmi => blogroll.gmi Blogs recommandés
=> a-propos.gmi => accueil.gmi Accueil
=> a-propos.gmi à propos
=> 20241111235943-sketches_de_toulouse.gmi => 20241111235943-sketches_de_toulouse.gmi
=> 20211211215731-krita.gmi => 20211211215731-krita.gmi

View File

@ -9,13 +9,11 @@ id: 0302f197-3e37-4ea8-b7ca-e880202889b5 title: tykayn_blog
# sketches de toulouse {#sketches-de-toulouse-1 created="[2024-11-12 00:00:19]"} # sketches de toulouse {#sketches-de-toulouse-1 created="[2024-11-12 00:00:19]"}
Quelques jours à Toulouse étaient l'occasion de se voir avec Regulus et Aube, on a visité le pays malgré la grisaille, revu la cité de l'espace et ses ouatmille trucs à voir et à essayer (y'en a plein, on ne peut pas tout voir en une seule journée X)), tester un restaurant végé vachement sympa nommé Quelques jours à Toulouse étaient l'occasion de se voir avec Regulus et Aube, on a visité le pays malgré la grisaille, revu la cité de l'espace et ses ouatmille trucs à voir et à essayer (y'en a plein, on ne peut pas tout voir en une seule journée X)), tester un restaurant végé vachement sympa nommé
=> https://web.archive.org/web/20240825225407/https://www.lafaimdesharicots.fr/ la Faim des haricots => https://www.lafaimdesharicots.fr/ la Faim des haricots
. omnomnomnom! C'était un peu notre *reuvayvaule* de . omnomnomnom! C'était un peu notre *reuvayvaule* de
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/?s=vadrouille la petite vadrouille => https://tykayn.fr/?s=vadrouille la petite vadrouille
. .
=> https://tykayn.fr/wp-content/uploads/2024/02/2024-02-18T21.36.27-1024x577.jpg [IMG] => https://tykayn.fr/wp-content/uploads/2024/02/2024-02-18T21.36.27.jpg [IMG]
=> https://tykayn.fr/wp-content/uploads/2024/02/2024-02-18T21.37.23-1024x577.jpg [IMG] => https://tykayn.fr/wp-content/uploads/2024/02/2024-02-18T21.37.23.jpg [IMG]
P

View File

@ -8,8 +8,8 @@ id: ca57e319-7134-4fe2-b223-a723700b7245 title: tykayn_blog
# sketches 18+ {#sketches-18-1 created="[2024-11-12 00:01:36]"} # sketches 18+ {#sketches-18-1 created="[2024-11-12 00:01:36]"}
=> https://tykayn.fr/wp-content/uploads/2024/02/2022-02-08-des-boobies-1024x768.jpg [IMG] => https://tykayn.fr/wp-content/uploads/2024/02/2022-02-08-des-boobies.jpg [IMG]
=> https://tykayn.fr/wp-content/uploads/2024/02/2022-07-22-sketch1-pouic-table-et-back-pak-724x1024.jpg [IMG] => https://tykayn.fr/wp-content/uploads/2024/02/2022-07-22-sketch1-pouic-table-et-back-pak.jpg [IMG]
=> https://tykayn.fr/wp-content/uploads/2024/02/2022-07-22_sketch2_face_cuisses_brr-small-1024x724.jpg [IMG] => https://tykayn.fr/wp-content/uploads/2024/02/2022-07-22_sketch2_face_cuisses_brr-small.jpg [IMG]

View File

@ -12,8 +12,9 @@ En 2023 je n'ai pas fait l'inktober mais le kinktober, manquant de temps disponi
Enjaillez! Enjaillez!
=> https://tykayn.fr/wp-content/uploads/2024/02/2023-kinktober-first-girl-nue-splash-448x1024.jpg [IMG] => https://tykayn.fr/wp-content/uploads/2024/02/2023-kinktober-first-girl-nue-splash.jpg [IMG]
[* https://tykayn.fr/wp-content/uploads/2024/02/2023-kinktober_girl_2-1024x803.jpg*]{.spurious-link target="
=> https://tykayn.fr/wp-content/uploads/2024/02/2023-kinktober_girl_2-1024x803.jpg%22%7D => https://tykayn.fr/wp-content/uploads/2024/02/2023-kinktober_girl_2.jpg [IMG]
[* https://tykayn.fr/wp-content/uploads/2024/02/2023-kintober_miss_patounage-1024x1008.jpg*]{.spurious-link target="
=> https://tykayn.fr/wp-content/uploads/2024/02/2023-kintober_miss_patounage-1024x1008.jpg%22%7D [* https://tykayn.fr/wp-content/uploads/2024/02/2023-kintober_miss_patounage.jpg*]{.spurious-link target="
=> https://tykayn.fr/wp-content/uploads/2024/02/2023-kintober_miss_patounage.jpg%22%7D

View File

@ -9,17 +9,16 @@ id: 2cd8fd23-9f44-4410-8d09-fe4d65ed1e87 title: tykayn_blog
# calin yuri AH {#calin-yuri-ah-1 created="[2024-11-12 00:07:14]"} # calin yuri AH {#calin-yuri-ah-1 created="[2024-11-12 00:07:14]"}
Petit yuri printanier avec les personnages de l'histoire Ayominai Hitomi, Petit yuri printanier avec les personnages de l'histoire Ayominai Hitomi,
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/2009/bd-one-shot-ayominai-hitomi/ une BD que j'ai fait en 2004 => https://tykayn.fr/2009/bd-one-shot-ayominai-hitomi/ une BD que j'ai fait en 2004
. .
[* https://tykayn.fr/wp-content/uploads/2023/08/2023-04-14-AH-calin-tykayn-yuri-1024x724.jpg*]{.spurious-link target=" => https://tykayn.fr/wp-content/uploads/2023/08/2023-04-14-AH-calin-tykayn-yuri.jpg [IMG]
=> https://tykayn.fr/wp-content/uploads/2023/08/2023-04-14-AH-calin-tykayn-yuri-1024x724.jpg%22%7D
Publié dans Publié dans
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/category/non-classe/ Non classé => https://tykayn.fr/category/non-classe/ Non classé
Etiqueté Etiqueté
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/ayominai-hitomi/ ayominai hitomi => https://tykayn.fr/tag/ayominai-hitomi/ ayominai hitomi
, ,
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/dessin/ dessin => https://tykayn.fr/tag/dessin/ dessin
, ,
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/yuri/ yuri => https://tykayn.fr/tag/yuri/ yuri

View File

@ -11,13 +11,13 @@ id: 78c21f96-39d5-46c3-990f-324150825437 title: tykayn_blog
=> https://tykayn.fr/wp-content/uploads/2020/11/20200923_155228.jpg https://tykayn.fr/wp-content/uploads/2020/11/20200923_155228.jpg => https://tykayn.fr/wp-content/uploads/2020/11/20200923_155228.jpg https://tykayn.fr/wp-content/uploads/2020/11/20200923_155228.jpg
conseils en conseils en
=> https://web.archive.org/web/20240825225407/https://mastodon.cipherbliss.com/tags/art #art => https://mastodon.cipherbliss.com/tags/art #art
: :
* lancez vous dans des projets beaucoup moins gros, vraiment, des trucs minuscules, surtout au début de votre vie d'artiste. * lancez vous dans des projets beaucoup moins gros, vraiment, des trucs minuscules, surtout au début de votre vie d'artiste.
* dessinez en prenant des modèles, des références, photos, sujets et objets. pourquoi pas du modèle vivant, rejoindre un cours d'art. * dessinez en prenant des modèles, des références, photos, sujets et objets. pourquoi pas du modèle vivant, rejoindre un cours d'art.
* ayez des objectifs à long terme et à court terme dans ce que vous souhaitez faire pour vous améliorer en tant qu' * ayez des objectifs à long terme et à court terme dans ce que vous souhaitez faire pour vous améliorer en tant qu'
=> https://web.archive.org/web/20240825225407/https://mastodon.cipherbliss.com/tags/artiste #artiste => https://mastodon.cipherbliss.com/tags/artiste #artiste
* apprenez à faire de la perspective, vraiment. * apprenez à faire de la perspective, vraiment.
* ne dessinez pas que des bustes de personnages. * ne dessinez pas que des bustes de personnages.
* ne soyez pas déçus si vous avez des retours constructifs qui ne vous mettent pas sur un piédestal. On a jamais fini de s'améliorer * ne soyez pas déçus si vous avez des retours constructifs qui ne vous mettent pas sur un piédestal. On a jamais fini de s'améliorer
@ -29,17 +29,17 @@ conseils en
* foutez la paix à votre téléphone, vous pouvez le mettre dans une autre pièce et en moda avion pour gagner un maximum de concentration. vous n'avez vraiment pas besoin de répondre à cette personne qui dit des bêtises dans votre flux interminable d'actualités. ni maintenant ni jamais. * foutez la paix à votre téléphone, vous pouvez le mettre dans une autre pièce et en moda avion pour gagner un maximum de concentration. vous n'avez vraiment pas besoin de répondre à cette personne qui dit des bêtises dans votre flux interminable d'actualités. ni maintenant ni jamais.
* faites d'autres activités plutôt que de rester uniquement à votre lieu de production. Planifiez des moments hors ligne. Faites une balade, des activités physiques, de l'exploration du monde. * faites d'autres activités plutôt que de rester uniquement à votre lieu de production. Planifiez des moments hors ligne. Faites une balade, des activités physiques, de l'exploration du monde.
* renseignez vous sur les syndicats qui existent. Ne restez pas seul et n'attendez pas de découvrir comment ça se passe quand on enrtre dans le bassin des requins, le monde professionel est somble et plein de terreurs. * renseignez vous sur les syndicats qui existent. Ne restez pas seul et n'attendez pas de découvrir comment ça se passe quand on enrtre dans le bassin des requins, le monde professionel est somble et plein de terreurs.
=> https://web.archive.org/web/20240825225407/https://www.artistes-auteurs.fr/ <https://www.artistes-auteurs.fr> => https://www.artistes-auteurs.fr/ <https://www.artistes-auteurs.fr>
Rencontrez d'autres artistes et entraidez-vous. Rencontrez d'autres artistes et entraidez-vous.
* mettez la tête dans le chat. * mettez la tête dans le chat.
Publié dans Publié dans
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/category/non-classe/ Non classé => https://tykayn.fr/category/non-classe/ Non classé
Etiqueté Etiqueté
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/art/ art => https://tykayn.fr/tag/art/ art
, ,
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/conseil/ conseil => https://tykayn.fr/tag/conseil/ conseil
, ,
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/dessin/ dessin => https://tykayn.fr/tag/dessin/ dessin
, ,
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/entraide/ entraide => https://tykayn.fr/tag/entraide/ entraide

View File

@ -11,9 +11,9 @@ id: 21964c8f-7e77-4ce4-894e-a76d31845aa2 title: tykayn_blog
Jeux de mains pour essayages en cabine. Jeux de mains pour essayages en cabine.
Cette illustration est disponible dans le Cette illustration est disponible dans le
=> https://web.archive.org/web/20240825225407/https://cloud.tykayn.fr/index.php/s/NjrPwGNHCGio49R dossier de partage nextcloud du tk blog => https://cloud.tykayn.fr/index.php/s/NjrPwGNHCGio49R dossier de partage nextcloud du tk blog
. Vous pouvez y retrouver le fichier source pour mes illus. celle-ci a été faite avec . Vous pouvez y retrouver le fichier source pour mes illus. celle-ci a été faite avec
=> https://web.archive.org/web/20240825225407/https://krita.org/fr/ Krita => https://krita.org/fr/ Krita
, un excellent logiciel libre de dessin numérique. , un excellent logiciel libre de dessin numérique.
=> https://tykayn.fr/wp-content/uploads/2022/04/cabine_girl_001-1024x1024.jpg [IMG] => https://tykayn.fr/wp-content/uploads/2022/04/cabine_girl_001-1024x1024.jpg [IMG]
@ -23,10 +23,10 @@ Cette illustration est disponible dans le
=> https://tykayn.fr/wp-content/uploads/2022/04/cabine_girl_002-1024x768.jpg [IMG] => https://tykayn.fr/wp-content/uploads/2022/04/cabine_girl_002-1024x768.jpg [IMG]
Publié dans Publié dans
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/category/floodish/ Floodish => https://tykayn.fr/category/floodish/ Floodish
Etiqueté Etiqueté
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/boobies/ boobies => https://tykayn.fr/tag/boobies/ boobies
, ,
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/essayage/ essayage => https://tykayn.fr/tag/essayage/ essayage
, ,
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/patounage/ patounage => https://tykayn.fr/tag/patounage/ patounage

View File

@ -9,21 +9,21 @@ id: 213879ff-4d38-4c19-ac43-be723ad66b4b title: tykayn_blog
# la fougue dans les rideaux {#la-fougue-dans-les-rideaux-1 created="[2024-11-12 00:10:19]"} # la fougue dans les rideaux {#la-fougue-dans-les-rideaux-1 created="[2024-11-12 00:10:19]"}
Et hop, de la fougue dans les rideaux ajoutée au Et hop, de la fougue dans les rideaux ajoutée au
=> https://web.archive.org/web/20240825225407/https://cloud.tykayn.fr/index.php/s/NjrPwGNHCGio49R dossier de partage nextcloud du tk blog => https://cloud.tykayn.fr/index.php/s/NjrPwGNHCGio49R dossier de partage nextcloud du tk blog
. Vous pouvez y retrouver le fichier source pour mes illus. celle-ci a été faite avec . Vous pouvez y retrouver le fichier source pour mes illus. celle-ci a été faite avec
=> https://web.archive.org/web/20240825225407/https://krita.org/fr/ Krita => https://krita.org/fr/ Krita
, un excellent logiciel libre de dessin numérique. , un excellent logiciel libre de dessin numérique.
=> https://web.archive.org/web/20240825225407im_/https://tykayn.fr/wp-content/uploads/2022/04/fougue_rideaux-scaled.jpg [IMG] => https://web.archive.org/web/20240825225407im_/https://tykayn.fr/wp-content/uploads/2022/04/fougue_rideaux-scaled.jpg [IMG]
Voir sur Mastodon Voir sur Mastodon
=> https://web.archive.org/web/20240825225407/https://mastodon.cipherbliss.com/@tykayn/108115540654384055 <https://mastodon.cipherbliss.com/@tykayn/108115540654384055> => https://mastodon.cipherbliss.com/@tykayn/108115540654384055 <https://mastodon.cipherbliss.com/@tykayn/108115540654384055>
Publié dans Publié dans
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/category/non-classe/ Non classé => https://tykayn.fr/category/non-classe/ Non classé
Etiqueté Etiqueté
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/couple/ couple => https://tykayn.fr/tag/couple/ couple
, ,
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/illustration/ illustration => https://tykayn.fr/tag/illustration/ illustration
, ,
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/nsfw/ nsfw => https://tykayn.fr/tag/nsfw/ nsfw

View File

@ -10,20 +10,20 @@ id: eb168f39-c356-4783-8152-cb2e0f45a5ce title: tykayn_blog
Si vous souhaitez avoir accès aux illustrations postées sur ce site et que j'ai réalisé, j'ai créé un dossier de partage nextcloud que je remplirai de temps à autre. Ces fichiers sont sous licence CC-BY Si vous souhaitez avoir accès aux illustrations postées sur ce site et que j'ai réalisé, j'ai créé un dossier de partage nextcloud que je remplirai de temps à autre. Ces fichiers sont sous licence CC-BY
=> https://web.archive.org/web/20240825225407/https://cloud.tykayn.fr/index.php/s/dessins_partage_blog [https://cloud.tykayn.fr/index.php/s/dessins\\\_partage\\\_blog](https://cloud.tykayn.fr/index.php/s/dessins\_partage\_blog) => https://cloud.tykayn.fr/index.php/s/dessins_partage_blog [https://cloud.tykayn.fr/index.php/s/dessins\\\_partage\\\_blog](https://cloud.tykayn.fr/index.php/s/dessins\_partage\_blog)
Vous pouvez aussi récupérer les contenus des fanzines plein de CULture de Qzine par ici: Vous pouvez aussi récupérer les contenus des fanzines plein de CULture de Qzine par ici:
=> https://web.archive.org/web/20240825225407/https://qzine.fr/telechargez-les-fanzines-qzine/ <https://qzine.fr/telechargez-les-fanzines-qzine/> => https://qzine.fr/telechargez-les-fanzines-qzine/ <https://qzine.fr/telechargez-les-fanzines-qzine/>
Le but de cette license étant de permettre beaucoup de choses, je vous encourage également à publier vos oeuvres avec une licence Creative Commons qui va bien, Le but de cette license étant de permettre beaucoup de choses, je vous encourage également à publier vos oeuvres avec une licence Creative Commons qui va bien,
=> https://web.archive.org/web/20240825225407/https://creativecommons.org/choose/ vous avez le choix => https://creativecommons.org/choose/ vous avez le choix
. .
=> https://web.archive.org/web/20240825225407/http://creativecommons.org/licenses/by/4.0/ => http://creativecommons.org/licenses/by/4.0/
=> https://web.archive.org/web/20240825225407im_/https://i.creativecommons.org/l/by/4.0/80x15.png [IMG] => https://web.archive.org/web/20240825225407im_/https://i.creativecommons.org/l/by/4.0/80x15.png [IMG]
> Ce(tte) œuvre est mise à disposition selon les termes de la > Ce(tte) œuvre est mise à disposition selon les termes de la
=> https://web.archive.org/web/20240825225407/http://creativecommons.org/licenses/by/4.0/ Licence => http://creativecommons.org/licenses/by/4.0/ Licence
> Creative Commons Attribution 4.0 > Creative Commons Attribution 4.0
> International > International
. .
@ -31,6 +31,6 @@ Le but de cette license étant de permettre beaucoup de choses, je vous encourag
Bonne réutilisation o/ Bonne réutilisation o/
Publié dans Publié dans
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/category/non-classe/ Non classé => https://tykayn.fr/category/non-classe/ Non classé
Etiqueté Etiqueté
=> https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/reutilisation/ réutilisation => https://tykayn.fr/tag/reutilisation/ réutilisation

View File

@ -175,16 +175,13 @@ id="sketches-de-toulouse-1">sketches de toulouse</h1>
et Aube, on a visité le pays malgré la grisaille, revu la cité de et Aube, on a visité le pays malgré la grisaille, revu la cité de
lespace et ses ouatmille trucs à voir et à essayer (yen a plein, on ne lespace et ses ouatmille trucs à voir et à essayer (yen a plein, on ne
peut pas tout voir en une seule journée X)), tester un restaurant végé peut pas tout voir en une seule journée X)), tester un restaurant végé
vachement sympa nommé <a vachement sympa nommé <a href="https://www.lafaimdesharicots.fr/">la
href="https://web.archive.org/web/20240825225407/https://www.lafaimdesharicots.fr/">la
Faim des haricots</a>. omnomnomnom! Cétait un peu notre Faim des haricots</a>. omnomnomnom! Cétait un peu notre
<em>reuvayvaule</em> de <a <em>reuvayvaule</em> de <a href="https://tykayn.fr/?s=vadrouille">la
href="https://web.archive.org/web/20240825225407/https://tykayn.fr/?s=vadrouille">la
petite vadrouille</a>.</p> petite vadrouille</a>.</p>
<p><img <p><img
src="https://tykayn.fr/wp-content/uploads/2024/02/2024-02-18T21.36.27-1024x577.jpg" /></p> src="https://tykayn.fr/wp-content/uploads/2024/02/2024-02-18T21.36.27.jpg" /></p>
<p><img <p><img
src="https://tykayn.fr/wp-content/uploads/2024/02/2024-02-18T21.37.23-1024x577.jpg" /></p> src="https://tykayn.fr/wp-content/uploads/2024/02/2024-02-18T21.37.23.jpg" /></p>
<p>P</p>
</body> </body>
</html> </html>

View File

@ -1,4 +1,115 @@
<html><head><title>tykayn_blog</title><link rel="stylesheet" href="/style.css"></link></head><body>
<h1>Navigation</h1><br><a href=/projets.html>Projets</a><br><a href=/index.html>Index</a><br><a href=/footer-articles.html>footer-articles.html</a><br><a href=/contact.html>Contact</a><br><a href=/blogroll.html>Blogs recommandés</a><br><a href=/accueil.html>Accueil </a><br><a href=/a-propos.html>à propos</a><br><a href=/2024/20241111235943-sketches_de_toulouse>2024 20241111235943 sketches_de_toulouse</a><br><a href=/2021/20211211215731-krita>2021 krita astuces.</a></article></body></html> <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta property="og:image" content="https://tykayn.fr/wp-content/uploads/2016/12/rond.png">
<meta property="og:locale" content="fr_FR">
<meta property="og:description" content="Le vortex à chats - Illustrations, trucs en tout genre par Tykayn">
<meta property="og:url" content="https://tykayn.fr">
<meta property="og:site_name" content="">
<link rel="alternate" type="application/rss+xml" title="Cipher Bliss » Flux" href="https://tykayn.fr/feed/">
<link href="/style.css" rel="stylesheet">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<meta name="author" content="Tykayn">
<link rel="alternate" type="application/rss+xml" title="Tykayn Blog » Flux"
href="https://tykayn.fr/feed/">
<meta property="og:title" content="Baptiste Lemoine">
<meta property="og:locale" content="fr_FR">
<!-- Description de la page -->
<meta name="description" content="Baptiste Lemoine">
<meta name="reply-to" content="contact@cipherbliss.com">
<link rel="icon" type="image/png" href="https://tykayn.fr/wp-content/uploads/2016/12/rond.png">
</head>
<body>
<div id="page">
<header id="masthead" class="site-header">
<div class="header-image" style="background: url(https://www.cipherbliss.com/wp-content/uploads/2016/11/bg.jpg)">
<a href="/">
<img src="https://tykayn.fr/wp-content/uploads/2016/12/rond.png" class="site-icon img">
</a>
<h1 class="blog-title">Tykayn Blog</h1>
<p class="blog-subtitle">Le vortex à chats - Illustrations, trucs en tout genre par Tykayn</p>
<div class="template-header">
</div>
</div>
<nav class="navbar is-fixed-top is-dark" role="navigation" aria-label="main navigation">
<div class="navbar-brand">
<a class="navbar-item" href="https://tykayn.fr">
Accueil
</a>
</div>
<div id="navbarBasicExample" class="navbar-menu">
<div class="navbar-start">
<a class="navbar-item" href="https://tykayn.fr">
<img src="https://tykayn.fr/wp-content/uploads/2016/12/rond.png"
class="img-fluid">
</a>
<nav>
<a href="/">Accueil</a>
<a href="https://portfolio.cipherbliss.com">Portfolio</a>
<a href="https://qzine.fr">Qzine</a>
<a href="https://www.cipherbliss.com">Cipherbliss</a>
<a href="/feed">Flux RSS</a>
<a href="https://cloud.tykayn.fr/index.php/s/dessins_partage_blog">Sources des illustrations</a>
<a href="/contact">Contact</a>
</nav>
</div>
<div class="navbar-end">
<div class="navbar-item">
<form role="search" method="get" class="search-form" action="/">
<label>
<input class="search-field" placeholder="Recherche" value="" name="s"
type="search">
</label>
<input class="is-hidden search-submit" value="Rechercher" type="submit">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="body-wrap boxed-container">
<article class="content">
None
<p class="after-article">
</p>
</article>
</main>
<footer class="site-footer has-top-divider">
<div class="container">
<div class="site-footer-inner">
<div class="site-foot">
</div>
<nav class="footer-nav">
<nav>
<a href="/">Accueil</a>
<a href="https://portfolio.cipherbliss.com">Portfolio</a>
<a href="https://qzine.fr">Qzine</a>
<a href="https://www.cipherbliss.com">Cipherbliss</a>
<a href="/feed">Flux RSS</a>
<a href="https://cloud.tykayn.fr/index.php/s/dessins_partage_blog">Sources des illustrations</a>
<a href="/contact">Contact</a>
</nav>
</nav>
</div>
</div>
</footer>
</div>
</body>
<!-- généré avec orgmode-to-gemini-blog par Tykayn -->
</html>

View File

@ -1,239 +0,0 @@
# Navigation
-------------------------
=> index.gmi
=> contact.gmi
# Articles en Français
-------------------------
=> 20241109231603-connaître-la-couleur-des-jours-edf-tempo-en-ligne-de-commande.gmi
=> 20241109231110-tags.gmi
=> 20241109230937-ressources-de-café-vie-privée.gmi
=> 20241108151758-ça-déménage.gmi
=> 20241103131856_cipherbliss_blog_soutien.gmi
=> 20241103124156_cipherbliss_blog_création-d'un-blog-gemini.gmi
=> 20220106183554_cipherbliss_blog_241_programme-pour-une-annee-2022-moins-pire.gmi
=> 20211023195028_cipherbliss_blog_240_video-du-premier-chatons-camp-2021.gmi
=> 20211023192307_cipherbliss_blog_239_nouvelles-doctobre-2021.gmi
=> 20210927092238_cipherbliss_blog_238_des-sauvegardes-qui-durent-mille-ans.gmi
=> 20210927092238_cipherbliss_215_des-sauvegardes-qui-durent-mille-ans.gmi
=> 20210820125241_cipherbliss_blog_237_nouvelles-daout-2021.gmi
=> 20210806154459_cipherbliss_blog_236_vider-sa-boite-protonmail-pour-faire-du-zero-inbox.gmi
=> 20210610150449_cipherbliss_blog_235_quelques-avancements-sur-framadate-funky.gmi
=> 20210527133058_cipherbliss_blog_211_plan-darchivage-et-de-backup.gmi
=> 20210417125303_cipherbliss_blog_234_bus-factor.gmi
=> 20210223005400_cipherbliss_blog_233_actus-de-fevrier-2021.gmi
=> 20210127151403_cipherbliss_blog_232_comment-faire-du-livestream-entierement-libre-avec-peertube-v3-et-obs-studio.gmi
=> 20201227115645_cipherbliss_blog_231_un-petit-message-de-noel-de-la-part-dedward-snowden.gmi
=> 20201125111911_cipherbliss_blog_230_passage-dans-lemission-libre-a-vous-le-17-novembre-2020.gmi
=> 20201118110346_cipherbliss_blog_229_live-toot-de-la-conference-avec-etienne-klein.gmi
=> 20201112113141_cipherbliss_blog_228_recuperer-de-la-musique-libre-de-lemission-cause-commune.gmi
=> 20201019161609_cipherbliss_blog_227_rencontre-openstreetmap-en-essonne-le-24-octobre-2020.gmi
=> 20201016165857_cipherbliss_blog_226_convertir-son-archive-mastodon-en-html-et-obtenir-ses-statistiques-de-compte.gmi
=> 20200714142306_cipherbliss_blog_222_notes-de-reunion-et-avancement-de-framadate.gmi
=> 20200714140305_cipherbliss_blog_223_refonte-de-framadate-avec-api.gmi
=> 20200629115208_cipherbliss_blog_221_comment-resourdre-bd_crypto_luks_open_blob-called-but-not-implemented.gmi
=> 20200624172458_cipherbliss_blog_216_lancement-de-joinfediverse-org.gmi
=> 20200624163242_cipherbliss_blog_219_liberation-de-donnees-publiques-de-meluzine.gmi
=> 20200621115644_cipherbliss_blog_220_un-site-web-pour-le-club-informatique-et-libertes-de-gometz-le-chatel.gmi
=> 20200621111423_cipherbliss_blog_210_comment-developper-localement-son-mastodon.gmi
=> 20200621104759_cipherbliss_blog_218_entraide-locale-avec-des-affiches-et-un-pad-en-ligne.gmi
=> 20200531174005_cipherbliss_blog_212_2e-confinatelier-le-6-juin-2020.gmi
=> 20191211202710_cipherbliss_blog_209_changer-la-limite-de-caracteres-sur-son-instance-mastodon.gmi
=> 20191028100923_cipherbliss_les-plateformes-sociales-privatives.gmi
=> 20190831120846_cipherbliss_blog_204_comment-jai-quitte-facebook-et-google.gmi
=> 20190819145346_cipherbliss_blog_206_comment-se-faire-des-amis-sur-mastodon.gmi
=> 20190819144521_cipherbliss_blog_205_comment-devenir-un-artiste-a-succes-sur-mastodon.gmi
=> 20190725153826_cipherbliss_blog_203_comparaison-entre-openstreetmap-et-googlemap-googleknowsnothing.gmi
=> 20190721113842_cipherbliss_blog_202_mobilizon-a-reussi-son-financement-et-a-depasse-ses-objectifs.gmi
=> 20190721110110_cipherbliss_blog_201_lappel-du-collectif-nofakescience-sur-le-traitement-desastreux-de-la-science-dans-les-medias.gmi
=> 20190520154212_cipherbliss_blog_199_mobilizon-lance-son-financement-participatif-et-cartonne-tout-des-le-premier-jour.gmi
=> 20190517220740_cipherbliss_blog_198_bonus-du-documentaire-la-bataille-du-libre-sur-peertube.gmi
=> 20190511134441_cipherbliss_blog_197_ouverture-dun-canal-matrix-cipherbliss.gmi
=> 20190501195621_cipherbliss_blog_194_suivre-une-chaine-de-videos-par-flux-rss.gmi
=> 20190225140842_cipherbliss_blog_192_rester-relie-a-son-passe-via-les-reseaux-sociaux.gmi
=> 20190222134640_cipherbliss_blog_186_debuter-sur-openstreetmaps.gmi
=> 20190214123525_cipherbliss_blog_193_faire-son-propre-theme-mastodon.gmi
=> 20190118155715_cipherbliss_blog_191_byebye-facebook.gmi
=> 20190116162300_cipherbliss_blog_190_aaron-swartz-lenfant-dinternet.gmi
=> 20190116121335_cipherbliss_blog_189_on-a-besoin-de-competences-en-ux-design-dans-les-projets-libres.gmi
=> 20190109154442_cipherbliss_blog_187_une-vraie-matiere-de-programmation-informatique-au-lycee.gmi
=> 20181207152825_cipherbliss_blog_185_la-verite-cest-moi.gmi
=> 20181207144755_cipherbliss_blog_184_nos-donnees-personnelles-sont-collectives.gmi
=> 20181122111749_cipherbliss_blog_183_ajouter-la-meteo-a-votre-calendrier.gmi
=> 20181120164153_cipherbliss_blog_182_lister-ses-branches-git-par-ordre-de-commit-le-plus-recent.gmi
=> 20181119164812_cipherbliss_blog_181_comment-se-delester-de-la-charge-mentale.gmi
=> 20181026165415_cipherbliss_blog_180_envoyer-des-sms-depuis-son-ordinateur.gmi
=> 20181011163735_cipherbliss_blog_179_deplacer-le-dossier-de-donnees-de-nextcloud.gmi
=> 20181009143617_cipherbliss_blog_175_10-raisons-pour-lesquelles-lopen-source-est-bon-pour-les-affaires.gmi
=> 20180928165919_cipherbliss_blog_177_les-obstacles-les-plus-frequents-au-travail-dequipe.gmi
=> 20180924114743_cipherbliss_blog_176_astuce-pour-faire-son-compte-rendu-dactivite.gmi
=> 20180902213912_cipherbliss_blog_173_faites-un-previsionnel-de-vos-comptes-sur-caisse-bliss.gmi
=> 20180902122416_cipherbliss_blog_172_raccourcis-photoshop-pour-gimp-2-10.gmi
=> 20180822175551_cipherbliss_blog_132_le-trajet-le-plus-court-ou-le-plus-agreable.gmi
=> 20180822122238_cipherbliss_blog_150_comment-ne-pas-repartir-de-zero-a-chaque-nouvel-ordi.gmi
=> 20180818171429_cipherbliss_blog_171_linstanciation-dobjets-dans-blender-ou-les-particules-objets.gmi
=> 20180808170150_cipherbliss_blog_170_dedupliquer-ses-archives.gmi
=> 20180803160326_cipherbliss_blog_168_comment-ne-plus-perdre-de-temps-avec-ses-mots-de-passe.gmi
=> 20180713153958_cipherbliss_blog_167_la-detresse-emotionnelle-pour-installer-un-programme.gmi
=> 20180713152156_cipherbliss_blog_166_depasser-la-barriere-de-la-langue.gmi
=> 20180713144352_cipherbliss_blog_165_se-passer-de-google-pour-ses-agendas.gmi
=> 20180622152225_cipherbliss_blog_123_lhumilitie-dans-lignorance.gmi
=> 20180516162134_cipherbliss_blog_164_saviez-vous-que-la-pub-sur-le-net-vous-coute-de-largent.gmi
=> 20180511174728_cipherbliss_blog_163_vous-navez-rien-a-cacher-a-part-votre-vie-privee.gmi
=> 20180510102309_cipherbliss_blog_161_graphique-fraude-aux-entreprises-vs-fraude-au-chomage.gmi
=> 20180420163455_cipherbliss_blog_159_une-caisse-en-ligne-pour-les-exposants.gmi
=> 20180416180525_cipherbliss_blog_158_panopticlick-contre-le-pistage-de-navigation.gmi
=> 20180416174522_cipherbliss_blog_156_facebook-est-mort-vive-mastodon.gmi
=> 20180410171321_cipherbliss_blog_152_parlez-vous-le-bullshit-couramment.gmi
=> 20180327162442_cipherbliss_blog_155_certifiez-la-detention-et-la-date-dun-document-grace-a-lethereum.gmi
=> 20180302205637_cipherbliss_blog_154_formation-angular-pour-faire-un-jeu-dont-vous-etes-le-heros.gmi
=> 20180207120417_cipherbliss_blog_153_cest-du-tres-loud-du-tres-tres-lourd.gmi
=> 20180205150537_cipherbliss_blog_146_blockchain-bitcoins-ethereum-dogecoin.gmi
=> 20180126114802_cipherbliss_blog_149_recuperer-les-infos-de-votre-compteur-linky.gmi
=> 20180122113954_cipherbliss_blog_148_installer-owncloud-sur-ubuntu-server.gmi
=> 20180108225408_cipherbliss_blog_147_le-vent-est-puissant-avec-celui-ci.gmi
=> 20171218135235_cipherbliss_blog_144_comment-installer-domoticz-sur-un-raspberry-pi-2-ou-3.gmi
=> 20171105212700_cipherbliss_blog_142_comment-reduire-en-masse-plein-de-photos-avant-de-les-transmettre.gmi
=> 20171105212346_cipherbliss_blog_141_comment-enlever-les-informations-exif-de-vos-photos-avant-de-les-publier.gmi
=> 20171103212517_cipherbliss_blog_140_le-village-global-dinternet.gmi
=> 20171031135433_cipherbliss_blog_139_nos-autodafes-numeriques.gmi
=> 20171031134709_cipherbliss_blog_138_le-futur-ecologique-des-annees-2000-sera-t-il-realite.gmi
=> 20170927222054_cipherbliss_blog_131_lautohebergement-cest-tellement-bien.gmi
=> 20170922184451_cipherbliss_blog_133_techniques-de-gestion-de-temps-sur-projets-personnels.gmi
=> 20170921210232_cipherbliss_blog_137_statistiques-sur-les-fanzines-references-par-meluzine.gmi
=> 20170921205432_cipherbliss_blog_136_comment-desactiver-de-facon-permanente-le-mode-only-full-group-by-de-mysql.gmi
=> 20170709144828_cipherbliss_blog_135_restez-en-vie-luttez-contre-le-presenteisme.gmi
=> 20170611124222_cipherbliss_blog_134_quand-ton-migrateur-de-blog-vers-wordpress-fonctionne.gmi
=> 20170212124235_cipherbliss_blog_130_comment-faire-sa-compta-dentreprise-individuelle-dans-une-feuille-de-calcul.gmi
=> 20170203145717_cipherbliss_blog_129_comment-facebook-choisit-vos-amis-a-votre-place.gmi
=> 20161230120120_cipherbliss_blog_128_prendre-en-main-gimp-avec-les-raccourcis-de-photoshop.gmi
=> 20161226174242_cipherbliss_blog_127_faire-ses-factures-avec-libreoffice-ou-google-sheet.gmi
=> 20161023215104_cipherbliss_blog_126_reparer-louverture-de-liens-dans-chrome.gmi
=> 20161003140749_cipherbliss_blog_125_du-grand-art-avec-gimp.gmi
=> 20160925220750_cipherbliss_blog_124_ne-vous-dites-pas-programmeur.gmi
=> 20160905220655_cipherbliss_blog_122_quand-tu-fais-migrer-ton-equipe-vers-gitlab.gmi
=> 20160824153918_cipherbliss_blog_121_changer-lediteur-de-texte-associe-a-git.gmi
=> 20160726204835_cipherbliss_blog_1_la-galaxie-des-fanzines.gmi
=> 20160726092648_cipherbliss_blog_2_ubuntu-party-15-10.gmi
=> 20160726084700_cipherbliss_blog_3_exporter-une-visualisation-de-son-schma-sql.gmi
=> 20160726082722_cipherbliss_blog_4_le-dysoon-de-djo.gmi
=> 20160511192505_cipherbliss_blog_5_conversion-de-pdf-en-image-et-ocr.gmi
=> 20160510145657_cipherbliss_blog_6_retour-d-exprience.gmi
=> 20160421131007_cipherbliss_blog_7_le-petit-printf.gmi
=> 20160329171940_cipherbliss_blog_8_gulpifie-ton-prestashop.gmi
=> 20160304165040_cipherbliss_blog_9_amlioration-continue-de-l-quipe.gmi
=> 20160102110725_cipherbliss_blog_10_gestion-de-projet.gmi
=> 20151208091242_cipherbliss_blog_11_twig-et-angular.gmi
=> 20151122152143_cipherbliss_blog_12_convertir-les-fichiers-de-config-de-symfony2-facilement.gmi
=> 20151122094803_cipherbliss_blog_13_2-degrs-avant-la-fin-du-monde.gmi
=> 20151118165642_cipherbliss_blog_14_il-suffit.gmi
=> 20151118102152_cipherbliss_blog_15_dveloppez-le-commerce-localhost.gmi
=> 20151116113834_cipherbliss_blog_16_inspirer-les-femmes-prendre-les-postes-qui-faconnent-le-monde.gmi
=> 20151111123141_cipherbliss_blog_17_les-resources-du-blog-sur-github.gmi
=> 20151108152227_cipherbliss_blog_18_dbuter-sa-gestion-de-projet.gmi
=> 20151108115733_cipherbliss_blog_19_mise-en-forme-de-code-color-sur-votre-site.gmi
=> 20150925133619_cipherbliss_blog_20_dual-boot-windows-10-et-linux.gmi
=> 20150909150013_cipherbliss_blog_21_le-triangle-du-projet.gmi
=> 20150908121246_cipherbliss_blog_22_avoir-une-vie-prive.gmi
=> 20150722135638_cipherbliss_blog_23_les-couleurs-de-la-ratp-dans-sass.gmi
=> 20150706140018_cipherbliss_blog_24_des-live-templates-pour-angular-dans-intellij.gmi
=> 20150702150433_cipherbliss_blog_25_le-bash-de-vos-rves.gmi
=> 20150702142939_cipherbliss_blog_26_customiser-son-serveur.gmi
=> 20150701120014_cipherbliss_blog_27_des-tests-plus-rapides-avec-jasmine.gmi
=> 20150630151830_cipherbliss_blog_28_paye-ton-arrondi-en-js.gmi
=> 20150626210550_cipherbliss_blog_29_installer-cozy-cloud-sur-son-serveur-ubuntu-14-04.gmi
=> 20150617085410_cipherbliss_blog_30_convertir-un-projet-javascript-en-coffeescript.gmi
=> 20150604190842_cipherbliss_blog_31_se-crer-un-historique-complet-de-git-log.gmi
=> 20150514195327_cipherbliss_blog_32_gnrateur-angular-jeej.gmi
=> 20150422104016_cipherbliss_blog_33_whatis-love.gmi
=> 20150421092707_cipherbliss_blog_34_faites-bosser-internet-pour-vous-avec-if-this-then-that.gmi
=> 20150421090948_cipherbliss_blog_35_transfrer-des-fichiers-en-wifi-direct-entre-son-ordi-et-son-tel-android.gmi
=> 20150417112747_cipherbliss_blog_36_un-testament-par-e-mail.gmi
=> 20150417110334_cipherbliss_blog_37_calculez-votre-heure-de-rveil.gmi
=> 20150407142422_cipherbliss_blog_38_un-datepicker-dans-un-formulaire-symfony2.gmi
=> 20150330080405_cipherbliss_blog_39_les-dates-importantes-de-votre-vie.gmi
=> 20150330075127_cipherbliss_blog_40_les-24h-de-la-bd-et-autres-vnements-ont-leur-planning.gmi
=> 20150330074730_cipherbliss_blog_41_du-php-sexiste.gmi
=> 20150316092450_cipherbliss_blog_42_digital-learning-day-2015.gmi
=> 20150304150212_cipherbliss_blog_43_paye-ton-explication.gmi
=> 20150205134708_cipherbliss_blog_44_la-fte-des-passwords-et-la-neutralit-du-net.gmi
=> 20141219122836_cipherbliss_blog_45_la-filbre-optique-c-est-pas-gagn.gmi
=> 20141219122038_cipherbliss_blog_46_la-neutralit-du-net.gmi
=> 20141016105818_cipherbliss_blog_47_capturer-et-annoter-facilement.gmi
=> 20140910192438_cipherbliss_blog_48_signez-pour-la-neutralit-du-net.gmi
=> 20140904202028_cipherbliss_blog_49_schema-graphique-de-base-de-donnes.gmi
=> 20140904100304_cipherbliss_blog_50_la-thorie-des-chaines-de-caractre.gmi
=> 20140811095601_cipherbliss_blog_51_distributions-img-et-sauvegarde-de-carte-sd.gmi
=> 20140807135049_cipherbliss_blog_52_anti-hack-de-nfc.gmi
=> 20140728093301_cipherbliss_blog_53_installer-une-distribution-linux-sur-une-carte-sd-pour-le-raspberry-pi.gmi
=> 20140717112116_cipherbliss_blog_54_des-alternatives-plein-de-softwares.gmi
=> 20140604194801_cipherbliss_blog_55_fosuserbundle-could-not-convert-database-value-to-doctrine-type-array.gmi
=> 20140523102823_cipherbliss_blog_56_redimension-d-image-en-ligne-de-commande-avec-imagemagick.gmi
=> 20140509114349_cipherbliss_blog_57_wordpress-comment-ne-plus-demander-les-dtails-ftp-pour-mettre-jour.gmi
=> 20140413190834_cipherbliss_blog_58_symfony-et-apc.gmi
=> 20140411154209_cipherbliss_blog_59_raspberry-pi-case-en-papier.gmi
=> 20140405105316_cipherbliss_blog_60_perdu-de-recherche.gmi
=> 20140318204651_cipherbliss_blog_61_a-wizard-installing-software.gmi
=> 20140313130915_cipherbliss_blog_62_css-split-circles.gmi
=> 20140313130103_cipherbliss_blog_63_poids-des-slecteurs-css.gmi
=> 20140304202259_cipherbliss_blog_64_smartwatch-faite-maison-avec-l-aide-de-hong-kong.gmi
=> 20140212082847_cipherbliss_blog_65_zen-coding.gmi
=> 20140201214844_cipherbliss_blog_66_astuces-pour-ligne-de-commande-linux.gmi
=> 20140130100646_cipherbliss_blog_67_s-essayer-git-pas-pas.gmi
=> 20131207203655_cipherbliss_blog_68_afficher-le-jour-de-la-semaine-dans-la-barre-d-ubuntu.gmi
=> 20131206210739_cipherbliss_blog_69_importer-facilement-sa-base-de-donnes.gmi
=> 20131127221604_cipherbliss_blog_70_dcaler-les-sous-titres-dans-vlc-media-player.gmi
=> 20131126112903_cipherbliss_blog_71_alias-symfony-et-git-pour-linux.gmi
=> 20131014085745_cipherbliss_blog_72_rooter-galaxy-s3-et-cyanogenmod-10.gmi
=> 20130814130055_cipherbliss_blog_73_les-illtrs-technologiques-que-nous-sommes.gmi
=> 20130729142557_cipherbliss_blog_74_crer-des-alias-de-commande-windows-7.gmi
=> 20130725132546_cipherbliss_blog_75_redirection-dotclear.gmi
=> 20130606200412_cipherbliss_blog_76_navigo-c-est-pas-toujours-facile.gmi
=> 20130606200218_cipherbliss_blog_77_mangez-des-pommes.gmi
=> 20130606195819_cipherbliss_blog_78_clavier-lumineux.gmi
=> 20130605091107_cipherbliss_blog_79_faire-durer-4-jours-d-autonomie-un-galaxy-s3.gmi
=> 20130512213030_cipherbliss_blog_80_git-it-git-it-no-one-wants-to-be-defeated.gmi
=> 20130503135733_cipherbliss_blog_81_problme-avec-le-slecteur-css-last-child.gmi
=> 20130503073224_cipherbliss_blog_82_skype-sous-linux-debian-6-0.gmi
=> 20130502140046_cipherbliss_blog_83_une-autre-poque.gmi
=> 20130502064740_cipherbliss_blog_84_comment-tuer-git.gmi
=> 20130221135547_cipherbliss_blog_85_wampserveur-403-forbidden.gmi
=> 20130208125527_cipherbliss_blog_86_cache-manifest.gmi
=> 20121208192248_cipherbliss_blog_87_tethering-android-2.gmi
=> 20120917162837_cipherbliss_blog_88_bill-gates-vs-steve-jobs.gmi
=> 20120912132000_cipherbliss_blog_89_tutoriel-de-plugin-jquery.gmi
=> 20120912123209_cipherbliss_blog_90_tuto-comment-crer-un-plugin-jquery.gmi
=> 20120831204952_cipherbliss_blog_91_processus-com-motorola-service-main-s-est-arrt.gmi
=> 20120702120713_cipherbliss_blog_92_dclaration-de-l-internet-libre.gmi
=> 20120430050428_cipherbliss_blog_93_envoyer-des-mails-depuis-localhost.gmi
=> 20120425170530_cipherbliss_blog_94_changer-de-lecteur-de-code-source-dans-firefox.gmi
=> 20120423235600_cipherbliss_blog_95_stabilisation-vido-diteur-youtube.gmi
=> 20120320210224_cipherbliss_blog_96_tablette-qui-fait-sentir-des-textures.gmi
=> 20120215171320_cipherbliss_blog_97_technologie.gmi
=> 20120128054429_cipherbliss_blog_98_non-acta-manifestation-dans-toute-l-europe.gmi
=> 20120114182002_cipherbliss_blog_99_tron-legacy-les-effets-spciaux.gmi
=> 20120113231642_cipherbliss_blog_100_jusqu-o-peut-on-zoomer-dans-l-univers.gmi
=> 20120104110842_cipherbliss_blog_101_se-dbarrasser-de-ie-6.gmi
=> 20120102115840_cipherbliss_blog_102_entre-du-tgv-lyon-perrache-vue-conducteur.gmi
=> 20111227225952_cipherbliss_blog_103_internet-meme-database-know-your-meme.gmi
=> 20111219184902_cipherbliss_blog_104_fonction-random-picture.gmi
=> 20111219175754_cipherbliss_blog_105_dsignations-dans-une-quipe.gmi
=> 20111218231405_cipherbliss_blog_106_ne-souriez-pas-aux-inconnus.gmi
=> 20111209054553_cipherbliss_blog_107_un-peu-de-ralit-augmente-magique.gmi
=> 20111209042031_cipherbliss_blog_108_smartphone-voiture-pourquoi-choisir.gmi
=> 20111206044956_cipherbliss_blog_109_retour-haptique-haptic-feedback.gmi
=> 20111206041850_cipherbliss_blog_110_maison-l-preuve-des-zombies-et-des-tmoins-de-jovah.gmi
=> 20111206033912_cipherbliss_blog_111_lier-une-image-alatoire-dans-un-dossier.gmi
=> 20111204185751_cipherbliss_blog_112_my-first-crowbar-manette-pour-half-life.gmi
=> 20111202143254_cipherbliss_blog_113_url-maker-1-6-publier-des-liens-sans-avoir-les-crire.gmi
=> 20111201070237_cipherbliss_blog_114_dotclear-commenter-sans-tre-oblig-de-preview.gmi
=> 20111130170248_cipherbliss_blog_115_restauration-de-fichiers.gmi
=> 20111130155035_cipherbliss_blog_116_ninite-multi-installeur.gmi
=> 20111129174943_cipherbliss_blog_117_connaissances-de-base-en-tableur.gmi
=> 20111129161519_cipherbliss_blog_118_ssd-tuto-de-remplacement-sur-pc-portable-laptop.gmi
=> 20111129153113_cipherbliss_blog_119_geek-nerd-dork.gmi
=> 20111126170159_cipherbliss_blog_120_bienvenue-sur-informageek.gmi

View File

@ -15,48 +15,48 @@
le, hah! 2018-04-03T22:05:22Z 95 le, hah! 2018-04-03T22:05:22Z 95
hey les pouets! vous me conseillez quoi de beau comme espace de hey les pouets! vous me conseillez quoi de beau comme espace de
coworking du côté d&apos Orsay ? 91 c'est dimanche et il fait beau, les coworking du côté d' Orsay ? 91 c'est dimanche et il fait beau, les
cyclistes sont de sortie. fly safe Les gens 2018-05-06T07:33:32Z 91 cyclistes sont de sortie. fly safe Les gens 2018-05-06T07:33:32Z 91
aaaaaah bon matin les mastodontes! on a pas idée de se lever aussi tôt aaaaaah bon matin les mastodontes! on a pas idée de se lever aussi tôt
2018-05-03T05:09:42Z 77 passer la moitié du temps chez la famille a 2018-05-03T05:09:42Z 77 passer la moitié du temps chez la famille a
dormi, ça c'est fait 2018-03-24T21:16:37Z 76 je sais pas pour vous mais dormi, ça c'est fait 2018-03-24T21:16:37Z 76 je sais pas pour vous mais
je perds toute sociabilité dès que j&apos ai trop chaud.c&apos 71 ça se je perds toute sociabilité dès que j' ai trop chaud.c' 71 ça se
situe comment sur le spectre transgenre la Cisjordanie ? situe comment sur le spectre transgenre la Cisjordanie ?
2018-03-17T21:27:04Z 69 bonjour, je suis secrétaire et je me nomme Alain 2018-03-17T21:27:04Z 69 bonjour, je suis secrétaire et je me nomme Alain
Primante 2018-05-01T11:36:11Z 64 si Claude François était sur internet Primante 2018-05-01T11:36:11Z 64 si Claude François était sur internet
il chanterait : &quot je n&apos 62 ah la bonne odeur de café dans le il chanterait : &quot je n' 62 ah la bonne odeur de café dans le
placard de la cuisine 2018-05-05T19:37:04Z 62 et hop, quelques bitcoins placard de la cuisine 2018-05-05T19:37:04Z 62 et hop, quelques bitcoins
de plus dans la cagnotte o/ 2018-05-05T12:09:49Z 60 hey les gens qui de plus dans la cagnotte o/ 2018-05-05T12:09:49Z 60 hey les gens qui
avez des enfants ça vous arrive d&apos avoir du temps pour lire un livre avez des enfants ça vous arrive d' avoir du temps pour lire un livre
ou un ebook? le seul moyen que j&apos 58 allez bonne manifestation de ou un ebook? le seul moyen que j' 58 allez bonne manifestation de
demain tout le monde 2018-03-21T20:53:25Z 56 quand ton écran fait un demain tout le monde 2018-03-21T20:53:25Z 56 quand ton écran fait un
bruit de criquets c&apos est le moment de se barrer en vacances 51 Pti bruit de criquets c' est le moment de se barrer en vacances 51 Pti
tour en Vaporetto à Lyon bien chaleureux 2018-04-22T09:22:31Z 51 coucou tour en Vaporetto à Lyon bien chaleureux 2018-04-22T09:22:31Z 51 coucou
la ville de Mâcon ! parce que c&apos est notre POJEEEET 46 aaaaah vos la ville de Mâcon ! parce que c' est notre POJEEEET 46 aaaaah vos
gueules les emails de RGPD! 2018-05-25T08:48:28Z 45 hop café du matin. gueules les emails de RGPD! 2018-05-25T08:48:28Z 45 hop café du matin.
oh wait déjà 11h30 2018-05-01T09:33:33Z 44 Bienvenue sur diaspora! Heu, oh wait déjà 11h30 2018-05-01T09:33:33Z 44 Bienvenue sur diaspora! Heu,
mamoot 2017-06-03T20:38:48Z 42 quand tu réussis un truc en 2018 c&apos mamoot 2017-06-03T20:38:48Z 42 quand tu réussis un truc en 2018 c'
est formi-DAB 42 est il de notoriété publique qu&apos un chantier de est formi-DAB 42 est il de notoriété publique qu' un chantier de
maison ça avance toujours aussi lentement qu&apos 39 bonne mamans à maison ça avance toujours aussi lentement qu' 39 bonne mamans à
toutes les fêtes! 2018-05-27T08:17:09Z 39 when you do a js class but toutes les fêtes! 2018-05-27T08:17:09Z 39 when you do a js class but
don&apos t use this 38 bienvenue dans LE jour de l&apos année où on fait don' t use this 38 bienvenue dans LE jour de l' année où on fait
attention que tout ce que l&apos 35 mieux vaux .tar que jamais attention que tout ce que l' 35 mieux vaux .tar que jamais
2017-05-31T09:59:23Z 33 1,829 meters under 2018-03-21T20:52:53Z 25 lit 2017-05-31T09:59:23Z 33 1,829 meters under 2018-03-21T20:52:53Z 25 lit
bébé, délivré 2018-04-26T08:56:20Z 24 coucou Houilles! bébé, délivré 2018-04-26T08:56:20Z 24 coucou Houilles!
2018-03-30T08:48:31Z 23 coucou Auxerre ! 2018-04-21T07:02:55Z 23 en vaut 2018-03-30T08:48:31Z 23 coucou Auxerre ! 2018-04-21T07:02:55Z 23 en vaut
deux 2018-04-02T10:43:09Z 19 ptain c&apos est tellement moche de devoir deux 2018-04-02T10:43:09Z 19 ptain c' est tellement moche de devoir
reconduire de la voiture thermique auprès avoir acheté une électrique. reconduire de la voiture thermique auprès avoir acheté une électrique.
c&apos 15 quelqu&apos un sait ce qui délimite les toots mis en local ? c' 15 quelqu' un sait ce qui délimite les toots mis en local ?
ceux postés par des gens inscris sur mamot.fr vs le reste du monde ? *o* ceux postés par des gens inscris sur mamot.fr vs le reste du monde ? *o*
14 quelqu&apos un saurait m&apos 14 bon c&apos est pas grave j&apos 13 14 quelqu' un saurait m' 14 bon c' est pas grave j' 13
was c&apos est presque aussi cher que le café à 7 euros que j&apos 13 was c' est presque aussi cher que le café à 7 euros que j' 13
rha c&apos est moche les gens bourrés sur l&apos 13 Let&apos s see what rha c' est moche les gens bourrés sur l' 13 Let' s see what
is running here. Not me 11 j&apos aurai bien soutenu financièrement les is running here. Not me 11 j' aurai bien soutenu financièrement les
cheminots avec le pot commun mais ce site est archi buggé 9 c&apos est cheminots avec le pot commun mais ce site est archi buggé 9 c' est
un peu mignon ici 9 c&apos est parti pour la fête à Macron 9 &quot un peu mignon ici 9 c' est parti pour la fête à Macron 9 &quot
Businesses that make money by collecting and selling detailed records of Businesses that make money by collecting and selling detailed records of
private lives were once plainly described as &quot 8 &quot bonjour je private lives were once plainly described as &quot 8 &quot bonjour je
m&apos 8 0 m' 8 0
* Liens * Liens

View File

@ -1,174 +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>tykayn_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">tykayn_blog</h1>
</header>
<h1 id="à-propos">à propos</h1>
<p>à propos de ce site</p>
</body>
</html>

View File

@ -1,174 +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>tykayn_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">tykayn_blog</h1>
</header>
<h1 id="accueil">Accueil</h1>
<p>hello les gens.</p>
</body>
</html>

View File

@ -1,176 +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>tykayn_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">tykayn_blog</h1>
</header>
<h1 id="blogs-recommandés">Blogs recommandés</h1>
<ul>
<li></li>
</ul>
</body>
</html>

View File

@ -1,173 +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>tykayn_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">tykayn_blog</h1>
</header>
<h1 id="contact">Contact</h1>
</body>
</html>

View File

@ -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>tykayn_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">tykayn_blog</h1>
</header>
<hr />
<p>Écrit par Tykayn. Si vous aimez ce que nous faisons, soutenez
vous</p>
</body>
</html>

View File

@ -1,176 +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>tykayn_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">tykayn_blog</h1>
</header>
<h1 id="projets">Projets</h1>
<ul>
<li>mon projet 1</li>
</ul>
</body>
</html>

View File

@ -9,4 +9,8 @@
:END: :END:
[[https://tykayn.fr/wp-content/uploads/2024/02/2022-02-08-des-boobies-1024x768.jpg]] [[https://tykayn.fr/wp-content/uploads/2024/02/2022-07-22-sketch1-pouic-table-et-back-pak-724x1024.jpg]] [[https://tykayn.fr/wp-content/uploads/2024/02/2022-07-22_sketch2_face_cuisses_brr-small-1024x724.jpg]] [[https://tykayn.fr/wp-content/uploads/2024/02/2022-02-08-des-boobies.jpg]]
[[https://tykayn.fr/wp-content/uploads/2024/02/2022-07-22-sketch1-pouic-table-et-back-pak.jpg]]
[[https://tykayn.fr/wp-content/uploads/2024/02/2022-07-22_sketch2_face_cuisses_brr-small.jpg]]

View File

@ -13,5 +13,9 @@ En 2023 je nai pas fait linktober mais le kinktober, manquant de temps dis
Enjaillez! Enjaillez!
[[https://tykayn.fr/wp-content/uploads/2024/02/2023-kinktober-first-girl-nue-splash-448x1024.jpg]] [[ https://tykayn.fr/wp-content/uploads/2024/02/2023-kinktober_girl_2-1024x803.jpg]] [[ https://tykayn.fr/wp-content/uploads/2024/02/2023-kintober_miss_patounage-1024x1008.jpg]] [[https://tykayn.fr/wp-content/uploads/2024/02/2023-kinktober-first-girl-nue-splash.jpg]]
[[https://tykayn.fr/wp-content/uploads/2024/02/2023-kinktober_girl_2.jpg]]
[[ https://tykayn.fr/wp-content/uploads/2024/02/2023-kintober_miss_patounage.jpg]]

View File

@ -0,0 +1,16 @@
:PROPERTIES:
:ID: 2cd8fd23-9f44-4410-8d09-fe4d65ed1e87
:END:
#+title: calin yuri AH
2023-08-07
* calin yuri AH
:PROPERTIES:
:CREATED: [2024-11-12 00:07:14]
:END:
Petit yuri printanier avec les personnages de lhistoire Ayominai Hitomi, [[https://tykayn.fr/2009/bd-one-shot-ayominai-hitomi/][une BD que jai fait en 2004]].
[[https://tykayn.fr/wp-content/uploads/2023/08/2023-04-14-AH-calin-tykayn-yuri.jpg]]
Publié dans [[https://tykayn.fr/category/non-classe/][Non classé]]
Etiqueté [[https://tykayn.fr/tag/ayominai-hitomi/][ayominai hitomi]], [[https://tykayn.fr/tag/dessin/][dessin]], [[https://tykayn.fr/tag/yuri/][yuri]]

View File

@ -11,11 +11,11 @@
https://tykayn.fr/wp-content/uploads/2020/11/20200923_155228.jpg https://tykayn.fr/wp-content/uploads/2020/11/20200923_155228.jpg
conseils en [[https://web.archive.org/web/20240825225407/https://mastodon.cipherbliss.com/tags/art][#art]]: conseils en [[https://mastodon.cipherbliss.com/tags/art][#art]]:
- lancez vous dans des projets beaucoup moins gros, vraiment, des trucs minuscules, surtout au début de votre vie dartiste. - lancez vous dans des projets beaucoup moins gros, vraiment, des trucs minuscules, surtout au début de votre vie dartiste.
- dessinez en prenant des modèles, des références, photos, sujets et objets. pourquoi pas du modèle vivant, rejoindre un cours dart. - dessinez en prenant des modèles, des références, photos, sujets et objets. pourquoi pas du modèle vivant, rejoindre un cours dart.
- ayez des objectifs à long terme et à court terme dans ce que vous souhaitez faire pour vous améliorer en tant qu[[https://web.archive.org/web/20240825225407/https://mastodon.cipherbliss.com/tags/artiste][#artiste]] - ayez des objectifs à long terme et à court terme dans ce que vous souhaitez faire pour vous améliorer en tant qu[[https://mastodon.cipherbliss.com/tags/artiste][#artiste]]
- apprenez à faire de la perspective, vraiment. - apprenez à faire de la perspective, vraiment.
- ne dessinez pas que des bustes de personnages. - ne dessinez pas que des bustes de personnages.
- ne soyez pas déçus si vous avez des retours constructifs qui ne vous mettent pas sur un piédestal. On a jamais fini de saméliorer - ne soyez pas déçus si vous avez des retours constructifs qui ne vous mettent pas sur un piédestal. On a jamais fini de saméliorer
@ -26,8 +26,8 @@ conseils en [[https://web.archive.org/web/20240825225407/https://mastodon.cipher
- laissez des espaces vides sur votre bureau / atelier / espace de création artistique. - laissez des espaces vides sur votre bureau / atelier / espace de création artistique.
- foutez la paix à votre téléphone, vous pouvez le mettre dans une autre pièce et en moda avion pour gagner un maximum de concentration. vous navez vraiment pas besoin de répondre à cette personne qui dit des bêtises dans votre flux interminable dactualités. ni maintenant ni jamais. - foutez la paix à votre téléphone, vous pouvez le mettre dans une autre pièce et en moda avion pour gagner un maximum de concentration. vous navez vraiment pas besoin de répondre à cette personne qui dit des bêtises dans votre flux interminable dactualités. ni maintenant ni jamais.
- faites dautres activités plutôt que de rester uniquement à votre lieu de production. Planifiez des moments hors ligne. Faites une balade, des activités physiques, de lexploration du monde. - faites dautres activités plutôt que de rester uniquement à votre lieu de production. Planifiez des moments hors ligne. Faites une balade, des activités physiques, de lexploration du monde.
- renseignez vous sur les syndicats qui existent. Ne restez pas seul et nattendez pas de découvrir comment ça se passe quand on enrtre dans le bassin des requins, le monde professionel est somble et plein de terreurs. [[https://web.archive.org/web/20240825225407/https://www.artistes-auteurs.fr/][https://www.artistes-auteurs.fr]] Rencontrez dautres artistes et entraidez-vous. - renseignez vous sur les syndicats qui existent. Ne restez pas seul et nattendez pas de découvrir comment ça se passe quand on enrtre dans le bassin des requins, le monde professionel est somble et plein de terreurs. [[https://www.artistes-auteurs.fr/][https://www.artistes-auteurs.fr]] Rencontrez dautres artistes et entraidez-vous.
- mettez la tête dans le chat. - mettez la tête dans le chat.
Publié dans [[https://web.archive.org/web/20240825225407/https://tykayn.fr/category/non-classe/][Non classé]] Publié dans [[https://tykayn.fr/category/non-classe/][Non classé]]
Etiqueté [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/art/][art]], [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/conseil/][conseil]], [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/dessin/][dessin]], [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/entraide/][entraide]] Etiqueté [[https://tykayn.fr/tag/art/][art]], [[https://tykayn.fr/tag/conseil/][conseil]], [[https://tykayn.fr/tag/dessin/][dessin]], [[https://tykayn.fr/tag/entraide/][entraide]]

View File

@ -0,0 +1,22 @@
:PROPERTIES:
:ID: 21964c8f-7e77-4ce4-894e-a76d31845aa2
:END:
#+title: essais en cabine
2022-04-12
* Essais en cabine
:PROPERTIES:
:CREATED: [2024-11-12 00:09:19]
:END:
Jeux de mains pour essayages en cabine.
Cette illustration est disponible dans le [[https://cloud.tykayn.fr/index.php/s/NjrPwGNHCGio49R][dossier de partage nextcloud du tk blog]]. Vous pouvez y retrouver le fichier source pour mes illus. celle-ci a été faite avec [[https://krita.org/fr/][Krita]], un excellent logiciel libre de dessin numérique.
[[https://tykayn.fr/wp-content/uploads/2022/04/cabine_girl_001-1024x1024.jpg]]
[[https://tykayn.fr/wp-content/uploads/2022/04/cabine_girl_brouillon-1024x768.jpg]]
[[https://tykayn.fr/wp-content/uploads/2022/04/cabine_girl_002-1024x768.jpg]]
Publié dans [[https://tykayn.fr/category/floodish/][Floodish]]
Etiqueté [[https://tykayn.fr/tag/boobies/][boobies]], [[https://tykayn.fr/tag/essayage/][essayage]], [[https://tykayn.fr/tag/patounage/][patounage]]

View File

@ -0,0 +1,19 @@
:PROPERTIES:
:ID: 213879ff-4d38-4c19-ac43-be723ad66b4b
:END:
#+title: la fougue dans les rideaux
2022-04-12
* la fougue dans les rideaux
:PROPERTIES:
:CREATED: [2024-11-12 00:10:19]
:END:
Et hop, de la fougue dans les rideaux ajoutée au [[https://cloud.tykayn.fr/index.php/s/NjrPwGNHCGio49R][dossier de partage nextcloud du tk blog]]. Vous pouvez y retrouver le fichier source pour mes illus. celle-ci a été faite avec [[https://krita.org/fr/][Krita]], un excellent logiciel libre de dessin numérique.
[[https://web.archive.org/web/20240825225407im_/https://tykayn.fr/wp-content/uploads/2022/04/fougue_rideaux-scaled.jpg]]
Voir sur Mastodon [[https://mastodon.cipherbliss.com/@tykayn/108115540654384055][https://mastodon.cipherbliss.com/@tykayn/108115540654384055]]
Publié dans [[https://tykayn.fr/category/non-classe/][Non classé]]
Etiqueté [[https://tykayn.fr/tag/couple/][couple]], [[https://tykayn.fr/tag/illustration/][illustration]], [[https://tykayn.fr/tag/nsfw/][nsfw]]

View File

@ -0,0 +1,32 @@
:PROPERTIES:
:ID: eb168f39-c356-4783-8152-cb2e0f45a5ce
:END:
#+title: dossier de partage des sources d'illustrations
2022-01-24
* dossier de partage des sources d'illustrations
:PROPERTIES:
:CREATED: [2024-11-12 00:11:19]
:END:
Si vous souhaitez avoir accès aux illustrations postées sur ce site et que jai réalisé, jai créé un dossier de partage nextcloud que je remplirai de temps à autre. Ces fichiers sont sous licence CC-BY
[[https://cloud.tykayn.fr/index.php/s/dessins_partage_blog][https://cloud.tykayn.fr/index.php/s/dessins\_partage\_blog]]
Vous pouvez aussi récupérer les contenus des fanzines plein de CULture de Qzine par ici: [[https://qzine.fr/telechargez-les-fanzines-qzine/][https://qzine.fr/telechargez-les-fanzines-qzine/]]
Le but de cette license étant de permettre beaucoup de choses, je vous encourage également à publier vos oeuvres avec une licence Creative Commons qui va bien, [[https://creativecommons.org/choose/][vous avez le choix]].
#+begin_quote
[[http://creativecommons.org/licenses/by/4.0/][https://web.archive.org/web/20240825225407im_/https://i.creativecommons.org/l/by/4.0/80x15.png]]
Ce(tte) œuvre est mise à disposition selon les termes de la [[http://creativecommons.org/licenses/by/4.0/][Licence Creative Commons Attribution 4.0 International]].
#+end_quote
Bonne réutilisation o/
Publié dans [[https://tykayn.fr/category/non-classe/][Non classé]]
Etiqueté [[https://tykayn.fr/tag/reutilisation/][réutilisation]]

View File

@ -8,10 +8,9 @@
:CREATED: [2024-11-12 00:00:19] :CREATED: [2024-11-12 00:00:19]
:END: :END:
Quelques jours à Toulouse étaient loccasion de se voir avec Regulus et Aube, on a visité le pays malgré la grisaille, revu la cité de lespace et ses ouatmille trucs à voir et à essayer (yen a plein, on ne peut pas tout voir en une seule journée X)), tester un restaurant végé vachement sympa nommé [[https://web.archive.org/web/20240825225407/https://www.lafaimdesharicots.fr/][la Faim des haricots]]. omnomnomnom! Cétait un peu notre /reuvayvaule/ de [[https://web.archive.org/web/20240825225407/https://tykayn.fr/?s=vadrouille][la petite vadrouille]]. Quelques jours à Toulouse étaient loccasion de se voir avec Regulus et Aube, on a visité le pays malgré la grisaille, revu la cité de lespace et ses ouatmille trucs à voir et à essayer (yen a plein, on ne peut pas tout voir en une seule journée X)), tester un restaurant végé vachement sympa nommé [[https://www.lafaimdesharicots.fr/][la Faim des haricots]]. omnomnomnom! Cétait un peu notre /reuvayvaule/ de [[https://tykayn.fr/?s=vadrouille][la petite vadrouille]].
[[https://tykayn.fr/wp-content/uploads/2024/02/2024-02-18T21.36.27-1024x577.jpg]] [[https://tykayn.fr/wp-content/uploads/2024/02/2024-02-18T21.36.27.jpg]]
[[https://tykayn.fr/wp-content/uploads/2024/02/2024-02-18T21.37.23-1024x577.jpg]] [[https://tykayn.fr/wp-content/uploads/2024/02/2024-02-18T21.37.23.jpg]]
P

View File

@ -1,16 +0,0 @@
:PROPERTIES:
:ID: 2cd8fd23-9f44-4410-8d09-fe4d65ed1e87
:END:
#+title: calin yuri AH
2023-08-07
* calin yuri AH
:PROPERTIES:
:CREATED: [2024-11-12 00:07:14]
:END:
Petit yuri printanier avec les personnages de lhistoire Ayominai Hitomi, [[https://web.archive.org/web/20240825225407/https://tykayn.fr/2009/bd-one-shot-ayominai-hitomi/][une BD que jai fait en 2004]].
[[ https://tykayn.fr/wp-content/uploads/2023/08/2023-04-14-AH-calin-tykayn-yuri-1024x724.jpg]]
Publié dans [[https://web.archive.org/web/20240825225407/https://tykayn.fr/category/non-classe/][Non classé]]
Etiqueté [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/ayominai-hitomi/][ayominai hitomi]], [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/dessin/][dessin]], [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/yuri/][yuri]]

View File

@ -1,22 +0,0 @@
:PROPERTIES:
:ID: 21964c8f-7e77-4ce4-894e-a76d31845aa2
:END:
#+title: essais en cabine
2022-04-12
* Essais en cabine
:PROPERTIES:
:CREATED: [2024-11-12 00:09:19]
:END:
Jeux de mains pour essayages en cabine.
Cette illustration est disponible dans le [[https://web.archive.org/web/20240825225407/https://cloud.tykayn.fr/index.php/s/NjrPwGNHCGio49R][dossier de partage nextcloud du tk blog]]. Vous pouvez y retrouver le fichier source pour mes illus. celle-ci a été faite avec [[https://web.archive.org/web/20240825225407/https://krita.org/fr/][Krita]], un excellent logiciel libre de dessin numérique.
[[https://tykayn.fr/wp-content/uploads/2022/04/cabine_girl_001-1024x1024.jpg]]
[[https://tykayn.fr/wp-content/uploads/2022/04/cabine_girl_brouillon-1024x768.jpg]]
[[https://tykayn.fr/wp-content/uploads/2022/04/cabine_girl_002-1024x768.jpg]]
Publié dans [[https://web.archive.org/web/20240825225407/https://tykayn.fr/category/floodish/][Floodish]]
Etiqueté [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/boobies/][boobies]], [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/essayage/][essayage]], [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/patounage/][patounage]]

View File

@ -1,19 +0,0 @@
:PROPERTIES:
:ID: 213879ff-4d38-4c19-ac43-be723ad66b4b
:END:
#+title: la fougue dans les rideaux
2022-04-12
* la fougue dans les rideaux
:PROPERTIES:
:CREATED: [2024-11-12 00:10:19]
:END:
Et hop, de la fougue dans les rideaux ajoutée au [[https://web.archive.org/web/20240825225407/https://cloud.tykayn.fr/index.php/s/NjrPwGNHCGio49R][dossier de partage nextcloud du tk blog]]. Vous pouvez y retrouver le fichier source pour mes illus. celle-ci a été faite avec [[https://web.archive.org/web/20240825225407/https://krita.org/fr/][Krita]], un excellent logiciel libre de dessin numérique.
[[https://web.archive.org/web/20240825225407im_/https://tykayn.fr/wp-content/uploads/2022/04/fougue_rideaux-scaled.jpg]]
Voir sur Mastodon [[https://web.archive.org/web/20240825225407/https://mastodon.cipherbliss.com/@tykayn/108115540654384055][https://mastodon.cipherbliss.com/@tykayn/108115540654384055]]
Publié dans [[https://web.archive.org/web/20240825225407/https://tykayn.fr/category/non-classe/][Non classé]]
Etiqueté [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/couple/][couple]], [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/illustration/][illustration]], [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/nsfw/][nsfw]]

View File

@ -1,32 +0,0 @@
:PROPERTIES:
:ID: eb168f39-c356-4783-8152-cb2e0f45a5ce
:END:
#+title: dossier de partage des sources d'illustrations
2022-01-24
* dossier de partage des sources d'illustrations
:PROPERTIES:
:CREATED: [2024-11-12 00:11:19]
:END:
Si vous souhaitez avoir accès aux illustrations postées sur ce site et que jai réalisé, jai créé un dossier de partage nextcloud que je remplirai de temps à autre. Ces fichiers sont sous licence CC-BY
[[https://web.archive.org/web/20240825225407/https://cloud.tykayn.fr/index.php/s/dessins_partage_blog][https://cloud.tykayn.fr/index.php/s/dessins\_partage\_blog]]
Vous pouvez aussi récupérer les contenus des fanzines plein de CULture de Qzine par ici: [[https://web.archive.org/web/20240825225407/https://qzine.fr/telechargez-les-fanzines-qzine/][https://qzine.fr/telechargez-les-fanzines-qzine/]]
Le but de cette license étant de permettre beaucoup de choses, je vous encourage également à publier vos oeuvres avec une licence Creative Commons qui va bien, [[https://web.archive.org/web/20240825225407/https://creativecommons.org/choose/][vous avez le choix]].
#+begin_quote
[[https://web.archive.org/web/20240825225407/http://creativecommons.org/licenses/by/4.0/][https://web.archive.org/web/20240825225407im_/https://i.creativecommons.org/l/by/4.0/80x15.png]]
Ce(tte) œuvre est mise à disposition selon les termes de la [[https://web.archive.org/web/20240825225407/http://creativecommons.org/licenses/by/4.0/][Licence Creative Commons Attribution 4.0 International]].
#+end_quote
Bonne réutilisation o/
Publié dans [[https://web.archive.org/web/20240825225407/https://tykayn.fr/category/non-classe/][Non classé]]
Etiqueté [[https://web.archive.org/web/20240825225407/https://tykayn.fr/tag/reutilisation/][réutilisation]]

View File

@ -15,48 +15,48 @@
le, hah! 2018-04-03T22:05:22Z 95 le, hah! 2018-04-03T22:05:22Z 95
hey les pouets! vous me conseillez quoi de beau comme espace de hey les pouets! vous me conseillez quoi de beau comme espace de
coworking du côté d&apos Orsay ? 91 c'est dimanche et il fait beau, les coworking du côté d' Orsay ? 91 c'est dimanche et il fait beau, les
cyclistes sont de sortie. fly safe Les gens 2018-05-06T07:33:32Z 91 cyclistes sont de sortie. fly safe Les gens 2018-05-06T07:33:32Z 91
aaaaaah bon matin les mastodontes! on a pas idée de se lever aussi tôt aaaaaah bon matin les mastodontes! on a pas idée de se lever aussi tôt
2018-05-03T05:09:42Z 77 passer la moitié du temps chez la famille a 2018-05-03T05:09:42Z 77 passer la moitié du temps chez la famille a
dormi, ça c'est fait 2018-03-24T21:16:37Z 76 je sais pas pour vous mais dormi, ça c'est fait 2018-03-24T21:16:37Z 76 je sais pas pour vous mais
je perds toute sociabilité dès que j&apos ai trop chaud.c&apos 71 ça se je perds toute sociabilité dès que j' ai trop chaud.c' 71 ça se
situe comment sur le spectre transgenre la Cisjordanie ? situe comment sur le spectre transgenre la Cisjordanie ?
2018-03-17T21:27:04Z 69 bonjour, je suis secrétaire et je me nomme Alain 2018-03-17T21:27:04Z 69 bonjour, je suis secrétaire et je me nomme Alain
Primante 2018-05-01T11:36:11Z 64 si Claude François était sur internet Primante 2018-05-01T11:36:11Z 64 si Claude François était sur internet
il chanterait : &quot je n&apos 62 ah la bonne odeur de café dans le il chanterait : &quot je n' 62 ah la bonne odeur de café dans le
placard de la cuisine 2018-05-05T19:37:04Z 62 et hop, quelques bitcoins placard de la cuisine 2018-05-05T19:37:04Z 62 et hop, quelques bitcoins
de plus dans la cagnotte o/ 2018-05-05T12:09:49Z 60 hey les gens qui de plus dans la cagnotte o/ 2018-05-05T12:09:49Z 60 hey les gens qui
avez des enfants ça vous arrive d&apos avoir du temps pour lire un livre avez des enfants ça vous arrive d' avoir du temps pour lire un livre
ou un ebook? le seul moyen que j&apos 58 allez bonne manifestation de ou un ebook? le seul moyen que j' 58 allez bonne manifestation de
demain tout le monde 2018-03-21T20:53:25Z 56 quand ton écran fait un demain tout le monde 2018-03-21T20:53:25Z 56 quand ton écran fait un
bruit de criquets c&apos est le moment de se barrer en vacances 51 Pti bruit de criquets c' est le moment de se barrer en vacances 51 Pti
tour en Vaporetto à Lyon bien chaleureux 2018-04-22T09:22:31Z 51 coucou tour en Vaporetto à Lyon bien chaleureux 2018-04-22T09:22:31Z 51 coucou
la ville de Mâcon ! parce que c&apos est notre POJEEEET 46 aaaaah vos la ville de Mâcon ! parce que c' est notre POJEEEET 46 aaaaah vos
gueules les emails de RGPD! 2018-05-25T08:48:28Z 45 hop café du matin. gueules les emails de RGPD! 2018-05-25T08:48:28Z 45 hop café du matin.
oh wait déjà 11h30 2018-05-01T09:33:33Z 44 Bienvenue sur diaspora! Heu, oh wait déjà 11h30 2018-05-01T09:33:33Z 44 Bienvenue sur diaspora! Heu,
mamoot 2017-06-03T20:38:48Z 42 quand tu réussis un truc en 2018 c&apos mamoot 2017-06-03T20:38:48Z 42 quand tu réussis un truc en 2018 c'
est formi-DAB 42 est il de notoriété publique qu&apos un chantier de est formi-DAB 42 est il de notoriété publique qu' un chantier de
maison ça avance toujours aussi lentement qu&apos 39 bonne mamans à maison ça avance toujours aussi lentement qu' 39 bonne mamans à
toutes les fêtes! 2018-05-27T08:17:09Z 39 when you do a js class but toutes les fêtes! 2018-05-27T08:17:09Z 39 when you do a js class but
don&apos t use this 38 bienvenue dans LE jour de l&apos année où on fait don' t use this 38 bienvenue dans LE jour de l' année où on fait
attention que tout ce que l&apos 35 mieux vaux .tar que jamais attention que tout ce que l' 35 mieux vaux .tar que jamais
2017-05-31T09:59:23Z 33 1,829 meters under 2018-03-21T20:52:53Z 25 lit 2017-05-31T09:59:23Z 33 1,829 meters under 2018-03-21T20:52:53Z 25 lit
bébé, délivré 2018-04-26T08:56:20Z 24 coucou Houilles! bébé, délivré 2018-04-26T08:56:20Z 24 coucou Houilles!
2018-03-30T08:48:31Z 23 coucou Auxerre ! 2018-04-21T07:02:55Z 23 en vaut 2018-03-30T08:48:31Z 23 coucou Auxerre ! 2018-04-21T07:02:55Z 23 en vaut
deux 2018-04-02T10:43:09Z 19 ptain c&apos est tellement moche de devoir deux 2018-04-02T10:43:09Z 19 ptain c' est tellement moche de devoir
reconduire de la voiture thermique auprès avoir acheté une électrique. reconduire de la voiture thermique auprès avoir acheté une électrique.
c&apos 15 quelqu&apos un sait ce qui délimite les toots mis en local ? c' 15 quelqu' un sait ce qui délimite les toots mis en local ?
ceux postés par des gens inscris sur mamot.fr vs le reste du monde ? *o* ceux postés par des gens inscris sur mamot.fr vs le reste du monde ? *o*
14 quelqu&apos un saurait m&apos 14 bon c&apos est pas grave j&apos 13 14 quelqu' un saurait m' 14 bon c' est pas grave j' 13
was c&apos est presque aussi cher que le café à 7 euros que j&apos 13 was c' est presque aussi cher que le café à 7 euros que j' 13
rha c&apos est moche les gens bourrés sur l&apos 13 Let&apos s see what rha c' est moche les gens bourrés sur l' 13 Let' s see what
is running here. Not me 11 j&apos aurai bien soutenu financièrement les is running here. Not me 11 j' aurai bien soutenu financièrement les
cheminots avec le pot commun mais ce site est archi buggé 9 c&apos est cheminots avec le pot commun mais ce site est archi buggé 9 c' est
un peu mignon ici 9 c&apos est parti pour la fête à Macron 9 &quot un peu mignon ici 9 c' est parti pour la fête à Macron 9 &quot
Businesses that make money by collecting and selling detailed records of Businesses that make money by collecting and selling detailed records of
private lives were once plainly described as &quot 8 &quot bonjour je private lives were once plainly described as &quot 8 &quot bonjour je
m&apos 8 0 m' 8 0
* Liens * Liens

27
utils.py Normal file
View File

@ -0,0 +1,27 @@
#!/bin/python3
import re
# this path should be customized
org_roam_dir: str = '/home/tykayn/Nextcloud/textes/orgmode/org-roam/'
pattern_roam_id_search = r':ID:(?:\s+)?([a-zA-Z0-9-]+)'
def get_id_of_roam_note_content(content):
match = re.search(pattern_roam_id_search, content)
if match:
return match.group(1)
return None
def find_first_level1_title(content):
pattern = r'^\* (.+)$'
match = re.search(pattern, content, re.MULTILINE)
if match:
if match.group(1) != 'Article':
return match.group(1)
else:
pattern = r'^\*\* (.+)$'
match = re.search(pattern, content, re.MULTILINE)
if match:
return match.group(1)
return None

View File

@ -1,6 +1,8 @@
#!/usr/bin/python3 #!/usr/bin/python3
# configuration pour générer les sites web de plusieurs dossiers # configuration pour générer les sites web de plusieurs dossiers
global_config = {
"slug_with_year": True,
}
configs_sites = { configs_sites = {
"cipherbliss_blog": { "cipherbliss_blog": {
"DOSSIER_SOURCE":"cipherbliss_blog", "DOSSIER_SOURCE":"cipherbliss_blog",