remake detection already built

This commit is contained in:
Tykayn 2025-02-28 13:12:02 +01:00 committed by tykayn
parent a029792664
commit 3b9061514f
24 changed files with 248 additions and 1696 deletions

View file

@ -28,10 +28,58 @@ if not sorted_articles:
# Convert the date string to a valid ISO format
def convert_to_iso(date_str):
# Check if the string contains 'T' and replace it with a single 'T'
if 'T' in date_str:
date_str = date_str.replace('T', '', 1) # Replace only the first occurrence
return f"{date_str[:4]}-{date_str[4:6]}-{date_str[6:8]}T{date_str[8:10]}:{date_str[10:12]}:{date_str[12:14]}"
"""
Convertit une chaîne de date en format ISO 8601.
Gère les formats:
- YYYYMMDDHHMMSS
- YYYYMMDDTHHMMSS
- YYYY-MM-DD
Retourne: YYYY-MM-DDTHH:MM:SS
"""
try:
# Nettoyer la chaîne d'entrée
date_str = date_str.strip()
# Supprimer tous les 'T' existants
date_str = date_str.replace('T', '')
# Si la date contient des tirets, la convertir au format attendu
if '-' in date_str:
try:
parsed_date = datetime.strptime(date_str, '%Y-%m-%d')
return parsed_date.strftime('%Y-%m-%dT00:00:00')
except ValueError:
print(f"Format de date invalide: {date_str}")
return datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
# S'assurer que la chaîne a la bonne longueur
if len(date_str) < 14:
date_str = date_str.ljust(14, '0')
elif len(date_str) > 14:
date_str = date_str[:14]
# Extraire les composants de la date
year = date_str[:4]
month = date_str[4:6]
day = date_str[6:8]
hour = date_str[8:10]
minute = date_str[10:12]
second = date_str[12:14]
# Vérifier que tous les composants sont des nombres
components = [year, month, day, hour, minute, second]
if not all(c.isdigit() for c in components):
print(f"Date invalide détectée: {date_str}, utilisation de la date actuelle")
return datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
# Construire la chaîne ISO
return f"{year}-{month}-{day}T{hour}:{minute}:{second}"
except Exception as e:
print(f"Erreur lors de la conversion de la date {date_str}: {e}")
# En cas d'erreur, retourner la date actuelle
return datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
# Génération du flux Atom
with open(f"html-websites/{args.blog}/feed/index.xml", "w", encoding="utf-8") as f:

View file

@ -1,6 +1,7 @@
import argparse
import json
from collections import defaultdict
import os
from jinja2 import Environment, FileSystemLoader
import json
@ -39,11 +40,20 @@ count_not_tagged_files = 0
count_orgfiles = 0
destination_json = f'sources/{args.blog}/build'
json_file = destination_json + '/articles_info.json'
# Charger les données JSON
with open(json_file, 'r', encoding='utf-8') as f:
articles_info = json.load(f)
if not os.path.exists(json_file):
print(f"Le fichier {json_file} n'existe pas. Veuillez d'abord générer le fichier articles_info.json")
exit(1)
try:
with open(json_file, 'r', encoding='utf-8') as f:
articles_info = json.load(f)
except FileNotFoundError:
print(f"Impossible de trouver le fichier {json_file}")
exit(1)
except Exception as e:
print(f"Erreur lors de la lecture du fichier {json_file}: {e}")
exit(1)
def find_org_files(directory):
org_files = []

View file

@ -100,172 +100,197 @@ if generate_linkings_json :
# Parcourir les fichiers du dossier
for index, directory in enumerate(directories_to_scan):
print(f"Traitement du dossier {directory}, {index}/{len(directories_to_scan)}")
for index, subdir in enumerate(os.listdir(directory)):
print(f"Traitement du dossier {directory}/{subdir}, {index}/{len(os.listdir(directory))}")
if subdir == ".." or subdir == "build" or subdir == "templates" or subdir == "img":
print(f"Traitement du dossier {directory}, {index+1}/{len(directories_to_scan)}")
try:
# Vérifier si le répertoire existe
if not os.path.exists(directory):
print(f"Le répertoire {directory} n'existe pas, on passe au suivant")
continue
# Déterminer le type d'article en fonction du chemin
if directory == '/':
article_type = "page"
else:
article_type = "article"
# Extraire la langue du dossier si elle commence par "lang_"
if directory.split('/')[-1].startswith('lang_'):
lang_folder = directory.split('/')[-1][5:] # Prend les caractères après "lang_"
for index, file_name in enumerate(os.listdir(f'{directory}/{subdir}')):
print(f"directory: {subdir}, {article_type}, {file_name}, {index}/{len(os.listdir(f'{directory}/{subdir}'))}")
# Vérifier si le fichier se termine par une extension supportée
if not (file_name.endswith('.org') or file_name.endswith('.md') or file_name.endswith('.gmi')):
print(f"Fichier {file_name} non supporté")
continue
if file_name.endswith('.org'):
counter+=1
# print(f"Traitement de l'article {counter}/{count_articles} {file_name}")
file_path = os.path.join(directory, subdir, file_name)
if force_html_regen and counter % 10 == 0:
print(f"{time.strftime('%H:%M:%S')} : Articles traités : {counter}/{count_articles}")
# on ouvre chacun des fichiers interprétables
# pour déterminer les informations qu'il contient
# afin de les stocker dans un json pour la génération des pages html et gemini
with open(file_path, "r", encoding="utf-8") as f:
print(f"----- Traitement de l'article {counter}/{count_articles} {file_name}")
content = f.read()
# Convertir le contenu Org en HTML
title = find_first_level1_title(content)
subdirs = [d for d in os.listdir(directory)
if os.path.isdir(os.path.join(directory, d))
and d not in ["..", "build", "templates", "img"]]
for subdir_index, subdir in enumerate(subdirs):
print(f"Traitement du sous-dossier {subdir}, {subdir_index+1}/{len(subdirs)}")
subdir_path = os.path.join(directory, subdir)
try:
# Liste tous les fichiers du sous-dossier avec les extensions supportées
files = [f for f in os.listdir(subdir_path)
if f.endswith(('.org', '.md', '.gmi'))]
for file_index, file_name in enumerate(files):
print(f"Traitement du fichier {file_name}, {file_index+1}/{len(files)}")
# Vérifier si le fichier se termine par une extension supportée
if not (file_name.endswith('.org') or file_name.endswith('.md') or file_name.endswith('.gmi')):
print(f"Fichier {file_name} non supporté")
continue
if file_name.endswith('.org'):
counter+=1
# print(f"Traitement de l'article {counter}/{count_articles} {file_name}")
file_path = os.path.join(directory, subdir, file_name)
if force_html_regen and counter % 10 == 0:
print(f"{time.strftime('%H:%M:%S')} : Articles traités : {counter}/{count_articles}")
# on ouvre chacun des fichiers interprétables
# pour déterminer les informations qu'il contient
# afin de les stocker dans un json pour la génération des pages html et gemini
with open(file_path, "r", encoding="utf-8") as f:
print(f"----- Traitement de l'article {counter}/{count_articles} {file_name}")
content = f.read()
# Convertir le contenu Org en HTML
title = find_first_level1_title(content)
date_modified = time.ctime(os.path.getmtime(file_path))
date_modified = time.ctime(os.path.getmtime(file_path))
rebuild_this_article_gemini = False
rebuild_this_article_html = False
basename = get_basename(file_name)
date_str, annee, slug = find_year_and_slug_on_filename(basename)
slug = slugify_title(title)
tags = extract_tags_from_file(file_path, global_config['excluded_tags'])
# Convertir les tags en liste si c'est un set
if isinstance(tags, set):
tags = list(tags)
boom = basename.split('__')
# Désactiver les warning d'identifiant dupliqué dans la conversion pandoc
content_without_h1 = re.sub(r'^\*.*?$', '', content, count=1, flags=re.MULTILINE)
gemini_content = ''
html_content = ''
html_content_without_h1 = ''
# Vérifier l'existence du fichier HTML pour déterminer last_html_build
html_path = f"html-websites/{args.blog}/{annee}/{slug}/index.html"
print(f"html_path existe il? : {html_path}")
last_html_build_time = None
if os.path.exists(html_path):
# Obtenir la date de création du fichier HTML
last_html_build_time = os.path.getctime(html_path)
print(f"----- last_html_build EXISTE: {last_html_build_time} : {html_path}")
else:
print(f"html_path n'existe pas: on va le créer")
#print(f"----------- last_html_build html_path: {html_path} n'existe pas")
# Vérifier l'existence du fichier Gemini pour déterminer last_gemini_build
gemini_path = f"./gemini-capsules/{args.blog}/{annee}/{slug}.gmi"
last_gemini_build = None
if os.path.exists(gemini_path):
last_gemini_build = time.ctime(os.path.getmtime(gemini_path))
# Vérifier si l'article doit être reconstruit en comparant les dates de modification
if last_gemini_build:
file_modified_time = os.path.getmtime(file_path)
last_build_time = time.mktime(time.strptime(last_gemini_build))
rebuild_this_article_gemini = file_modified_time > last_build_time
else:
rebuild_this_article_gemini = True
# print(f"rebuild_this_article_gemini: {rebuild_this_article_gemini}")
# Vérifier si l'article doit être reconstruit en comparant les dates de modification
if last_html_build_time:
file_modified_time = os.path.getmtime(file_path)
print(f"--------- file_modified_time: {file_path} : {file_modified_time}")
print(f"--------- last_html_build_time: {last_html_build_time}")
# Obtenir l'heure de dernière modification du fichier HTML
rebuild_this_article_html = file_modified_time > last_html_build_time
if rebuild_this_article_html:
print(f"--------- article modifié après le build de son rendu html: {file_path}, {rebuild_this_article_html}")
else:
print(f"--------- article non modifié après le build de son rendu html: {file_path}, {rebuild_this_article_html}, on ne recrée pas")
rebuild_this_article_gemini = False
rebuild_this_article_html = False
else:
# si il n'y a pas de fichier html, on le construit pour la première fois
print('on reconstruit le html de l\'article', file_name)
rebuild_this_article_html = True
if rebuild_this_article_html:
rebuild_counter += 1
basename = get_basename(file_name)
date_str, annee, slug = find_year_and_slug_on_filename(basename)
slug = slugify_title(title)
tags = extract_tags_from_file(file_path, global_config['excluded_tags'])
# Convertir les tags en liste si c'est un set
if isinstance(tags, set):
tags = list(tags)
boom = basename.split('__')
# Désactiver les warning d'identifiant dupliqué dans la conversion pandoc
content_without_h1 = re.sub(r'^\*.*?$', '', content, count=1, flags=re.MULTILINE)
gemini_content = ''
html_content = ''
html_content_without_h1 = ''
# Vérifier l'existence du fichier HTML pour déterminer last_html_build
html_path = f"html-websites/{args.blog}/{annee}/{slug}/index.html"
print(f"html_path existe il? : {html_path}")
last_html_build_time = None
if os.path.exists(html_path):
# Obtenir la date de création du fichier HTML
last_html_build_time = os.path.getctime(html_path)
print(f"----- last_html_build EXISTE: {last_html_build_time} : {html_path}")
else:
print(f"html_path n'existe pas: on va le créer")
# Vérifier l'existence du fichier Gemini pour déterminer last_gemini_build
gemini_path = f"./gemini-capsules/{args.blog}/{annee}/{slug}.gmi"
last_gemini_build = None
if os.path.exists(gemini_path):
try:
# Obtenir directement le timestamp au lieu de la chaîne de date
last_gemini_build_time = os.path.getmtime(gemini_path)
last_gemini_build = time.ctime(last_gemini_build_time)
# Vérifier si l'article doit être reconstruit
file_modified_time = os.path.getmtime(file_path)
rebuild_this_article_gemini = file_modified_time > last_gemini_build_time
except Exception as e:
print(f"Erreur lors de la vérification des dates pour {gemini_path}: {e}")
rebuild_this_article_gemini = True
else:
rebuild_this_article_gemini = True
# print(f"rebuild_this_article_gemini: {rebuild_this_article_gemini}")
# Vérifier si l'article doit être reconstruit en comparant les dates de modification
if last_html_build_time:
file_modified_time = os.path.getmtime(file_path)
print(f"--------- file_modified_time: {file_path} : {file_modified_time}")
print(f"--------- last_html_build_time: {last_html_build_time}")
# Obtenir l'heure de dernière modification du fichier HTML
rebuild_this_article_html = file_modified_time > last_html_build_time
if rebuild_this_article_html:
print(f"--------- article modifié après le build de son rendu html: {file_path}, {rebuild_this_article_html}")
else:
print(f"--------- article non modifié après le build de son rendu html: {file_path}, {rebuild_this_article_html}, on ne recrée pas")
rebuild_this_article_html = False
else:
# si il n'y a pas de fichier html, on le construit pour la première fois
print('on reconstruit le html de l\'article', file_name)
rebuild_this_article_html = True
if rebuild_this_article_html:
rebuild_counter += 1
# Garder le contenu HTML existant si déjà présent
if f"{annee}/{slug}" in files_dict and 'html_content' in files_dict[f"{annee}/{slug}"]:
#print('on reprend le contenu html existant')
if len(files_dict[f"{annee}/{slug}"]['html_content']) > 0:
html_content = files_dict[f"{annee}/{slug}"]['html_content']
if len(files_dict[f"{annee}/{slug}"]['html_content_without_h1']) > 0:
html_content_without_h1 = files_dict[f"{annee}/{slug}"]['html_content_without_h1']
else:
html_content_without_h1 = re.sub(r'<h1>.*?</h1>', '', html_content)
# Garder le contenu HTML existant si déjà présent
if f"{annee}/{slug}" in files_dict and 'html_content' in files_dict[f"{annee}/{slug}"]:
#print('on reprend le contenu html existant')
if len(files_dict[f"{annee}/{slug}"]['html_content']) > 0 :
html_content = files_dict[f"{annee}/{slug}"]['html_content']
if len(files_dict[f"{annee}/{slug}"]['html_content_without_h1']) > 0 :
html_content_without_h1 = files_dict[f"{annee}/{slug}"]['html_content_without_h1']
else:
html_content_without_h1 = re.sub(r'<h1>.*?</h1>', '', html_content)
else:
print(f"\033[91m {time.strftime('%H:%M:%S')} BRRRRRRRRRRRRR pandoc : {title} en html\033[0m")
pandoc_runs_counter += 1
html_content = pypandoc.convert_text(content_without_h1, 'html', format='org')
html_content_without_h1 = re.sub(r'<h1>.*?</h1>', '', html_content)
if run_pandoc and rebuild_this_article_html or force_html_regen:
# convertir le contenu d'article org vers html
print(f"\033[91m {time.strftime('%H:%M:%S')} BRRRRRRRRRRRRR pandoc : {title} en html\033[0m")
# print(f"\033[91m.\033[0m", end='', flush=True)
if not html_content:
html_content = pypandoc.convert_text(content_without_h1, 'html', format='org')
html_content_without_h1 = re.sub(r'<h1>.*?</h1>', '', html_content)
pandoc_runs_counter += 1
# else:
# html_content = content_without_h1
if run_pandoc and rebuild_this_article_html or force_html_regen:
# convertir le contenu d'article org vers html
print(f"\033[91m {time.strftime('%H:%M:%S')} BRRRRRRRRRRRRR pandoc : {title} en html\033[0m")
# print(f"\033[91m.\033[0m", end='', flush=True)
html_content = pypandoc.convert_text(content_without_h1, 'html', format='org')
pandoc_runs_counter += 1
else:
html_content = content_without_h1
# if run_gemini and rebuild_this_article_gemini:
# #print('-----------on régénère le gemini')
# # convertir le contenu d'article org vers gmi pour la capsule gemini
# gemini_content = org_to_gmi(content_without_h1)
# #print('len(gemini_content)', len(gemini_content))
# else:
# print('-----------on ne régénère pas le gemini')
if rebuild_this_article_gemini:
print(f"\033[91m {time.strftime('%H:%M:%S')} BRRRRRRRRRRRRR gemini : {title} en gmi\033[0m")
gemini_content = org_to_gmi(content_without_h1)
# if run_gemini and rebuild_this_article_gemini:
# #print('-----------on régénère le gemini')
# # convertir le contenu d'article org vers gmi pour la capsule gemini
# gemini_content = org_to_gmi(content_without_h1)
# #print('len(gemini_content)', len(gemini_content))
# else:
# print('-----------on ne régénère pas le gemini')
if rebuild_this_article_gemini:
print(f"\033[91m {time.strftime('%H:%M:%S')} BRRRRRRRRRRRRR gemini : {title} en gmi\033[0m")
gemini_content = org_to_gmi(content_without_h1)
files_dict[f"{annee}/{slug}"] = {
'path': file_path,
'basename': basename,
'roam_id': find_org_roam_id(content),
'slug': f"{slug}/",
'slug_with_year': f"{annee}/{slug}",
'date': boom[0],
'lang': lang_folder,
'article_type': article_type,
'date_modified' : date_modified,
'first_picture_url' : get_first_picture_url(content),
'date_formattee': format_date_str(date_str),
'annee': annee,
'tags': tags,
'title': title,
'next': None,
'previous': None,
'last_html_build': last_html_build_time,
'last_gemini_build': last_gemini_build,
'org_content': content, # Contenu Org original
'html_content_without_h1': html_content_without_h1, # Contenu HTML converti sans le titre de premier niveau
'html_content': html_content, # Contenu first_picture_urlHTML converti
'gemini_content': gemini_content,
'gemini_file_path': f"{annee}/{slug}.gmi",
# Contenu gemini
}
files_dict[f"{annee}/{slug}"] = {
'path': file_path,
'basename': basename,
'roam_id': find_org_roam_id(content),
'slug': f"{slug}/",
'slug_with_year': f"{annee}/{slug}",
'date': boom[0],
'lang': lang_folder,
'article_type': article_type,
'date_modified' : date_modified,
'first_picture_url' : get_first_picture_url(content),
'date_formattee': format_date_str(date_str),
'annee': annee,
'tags': tags,
'title': title,
'next': None,
'previous': None,
'last_html_build': last_html_build_time,
'last_gemini_build': last_gemini_build,
'org_content': content, # Contenu Org original
'html_content_without_h1': html_content_without_h1, # Contenu HTML converti sans le titre de premier niveau
'html_content': html_content, # Contenu first_picture_urlHTML converti
'gemini_content': gemini_content,
'gemini_file_path': f"{annee}/{slug}.gmi",
# Contenu gemini
}
except OSError as e:
print(f"Erreur lors de la lecture du sous-dossier {subdir_path}: {e}")
continue
except OSError as e:
print(f"Erreur lors de la lecture du dossier {directory}: {e}")
continue
print(f"======= Nombre d'articles reconstruits: {rebuild_counter}")
print(f"======= Nombre de runs de pandoc: {pandoc_runs_counter}")
@ -497,41 +522,3 @@ generate_article_pages(destination_json + '/articles_info.json', 'templates/html
# À la fin du script, calculer et afficher le temps d'exécution
execution_time = time.time() - start_time
#print(f"Temps d'exécution : {execution_time:.2f} secondes")
def format_date_str(date_str):
"""
Formate une chaîne de date dans différents formats possibles
"""
try:
# Format YYYYMMDDHHMMSS (14 caractères)
if len(date_str) == 14:
return datetime.strptime(date_str, '%Y%m%d%H%M%S').strftime('%d %B %Y à %H:%M:%S')
# Format YYYYMMDDTHHMMSS (15 caractères avec T)
elif len(date_str) == 15 and 'T' in date_str:
return datetime.strptime(date_str, '%Y%m%dT%H%M%S').strftime('%d %B %Y à %H:%M:%S')
# Format YYYYMMDDTHHMM (13 caractères avec T)
elif len(date_str) == 13 and 'T' in date_str:
return datetime.strptime(date_str, '%Y%m%dT%H%M').strftime('%d %B %Y à %H:%M')
# Format YYYY-MM-DD
elif len(date_str) == 10 and '-' in date_str:
return datetime.strptime(date_str, '%Y-%m-%d').strftime('%d %B %Y')
# Format YYYYMMDDTHHMMS (14 caractères avec T, manque un chiffre pour les secondes)
elif len(date_str) == 14 and 'T' in date_str:
# Ajouter un '0' pour compléter les secondes
date_str = date_str + '0'
return datetime.strptime(date_str, '%Y%m%dT%H%M%S').strftime('%d %B %Y à %H:%M:%S')
else:
print(f"Format de date non reconnu: {date_str}")
return date_str
except ValueError as e:
print(f"Erreur lors du formatage de la date {date_str}: {str(e)}")
return date_str

View file

@ -1,35 +0,0 @@
:PROPERTIES:
:ID: 3a1e3fd2-1c51-43ac-9864-0127d54d1692
:END:
#+title:
* Article
- ID: 616
- guid:
- status: draft
- publié le: <2017-11-05 21:30:39>
- modifié: <2017-11-05 21:30:39>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** Faire une timelapse sur raspberry pi avec module caméra (normal ou noIR)
ceci_est_du_html
Montage du circuit
Script
Crontab
Prise de vue
Assemblage
???
Profit!
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,23 +0,0 @@
:PROPERTIES:
:ID: 1d00384c-91f3-43b9-a2f4-59727c91241a
:END:
#+title:
* Article
- ID: 634
- guid:
- status: draft
- publié le: <2017-12-18 13:57:28>
- modifié: <2017-12-18 13:57:28>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** ajouter des modules Z-wave et EnOcean sur Domoticz et raspberry pi
ceci_est_du_html
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,36 +0,0 @@
:PROPERTIES:
:ID: 7af99c68-dab9-4233-917f-a6c8e5000aa4
:END:
#+title:
* Article
- ID: 743
- guid:
- status: draft
- publié le: <2018-04-16 17:39:59>
- modifié: <2018-04-16 17:39:59>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** dompter le mammouth
ceci_est_du_html
<a href="https://www.cipherbliss.com/wp-content/uploads/2018/04/mastodon_social.jpeg"><img class="wp-image-735 size-medium" src="https://www.cipherbliss.com/wp-content/uploads/2018/04/mastodon_social-300x168.jpeg" alt="" width="300" height="168" /></a>
Mastodon, le mammouth hypersocial open source
&nbsp;
Tim urban, du site<em> <a href="https://www.waitbutwhy.com">wait but why</a></em> écrivait précisément à ce propos dans son article "<a href="https://waitbutwhy.com/2013/10/why-procrastinators-procrastinate.html">pourquoi les procrastinateurs procrastinent</a>" (en englishe) sur le mammouth qui est en nous: nous avons une partie de notre cerveau qui n'a pas changé depuis l'époque où l'on était des Hommes des cavernes, c'est comme si dans notre conscience on avait des animaux qui venaient perturber la direction du cerveau le plus évolué.
On a par exemple le singe de la gratification immédiate qui vient tout le temps perturber l'humain raisonné et prend le commandement dès que l'on est happé par des petites choses pas bien utiles mais qui ont l'avantage d'être immédiatement gratifiantes, satisfaisantes. Un vrai truc pour lutter contre la procrastination est de prendre conscience de l'existence de ce singe en nous pour ensuite bosser avec et le laisser diriger la barre quand cela nous est le plus utile. Afin que l'on fasse des trucs de nos journées, enfin, on verra ça demain hein :D
Pour avoir des infos claires sur comment vaincre la procrastination, c'est par ici: <a href="https://waitbutwhy.com/2013/11/how-to-beat-procrastination.html">https://waitbutwhy.com/2013/11/how-to-beat-procrastination.html</a> (toujours en englishe)
Mais le singe n'est pas le seul à nous embrouiller les idées. Il y a aussi le Monstre de la Panique, et le Mammouth social que l'on nourrit avec des tas de choses à la con qui ne sont plus vitales depuis bien longtemps. S'il est difficile de lutter contre des instincts primitifs, il est néanmoins bien plus simple de lâcher cette saleté de Facebook et d'adopter un Mammouth en se rendant sur
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,38 +0,0 @@
:PROPERTIES:
:ID: 271a5c87-a65b-4ab4-8942-81d8534b986f
:END:
#+title:
* Article
- ID: 752
- guid:
- status: draft
- publié le: <2018-04-16 18:17:29>
- modifié: <2018-04-16 18:17:29>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** Des outils pour la vie privée
ceci_est_du_html
<div>parce qu'il est crucial que la vie privée reste privée et sous le contrôle des gens normaux qui ne sont pas experts en informatique,</div>
<div>je ne saurai que trop vous conseiller de laisser tomber facebook, whatsapp et messenger pour les remplacer par des outils bien plus sympas.</div>
<div></div>
<div>Des logiciels qui eux ne sont pas des logiciels espions dont la seule mission est de revendre toute info vous concernant vous et vos proches afin de <a title="https://www.cipherbliss.com/comment-facebook-choisit-vos-amis-a-votre-place/" href="https://www.cipherbliss.com/comment-facebook-choisit-vos-amis-a-votre-place/" target="_blank" rel="noreferrer nofollow noopener">vous profiler et vous manipuler de diverses façons</a> (hausse des prix d'assurance, lien social avec des personnes jugées peu fiables, refus d'emploi, pub ciblée, censure de publications, revente de vos historiques de positions, habitudes, infos bancaires et médicales, la liste est longue mais bien réelle).</div>
<div>Pas besoin de hackers pour usurper des identités ou vous faire voler des infos qui seront forcément utilisées contre vous, lorsque vous les donnez de votre plein gré.</div>
<div><b>Heureusement il existe des alternatives bien plus propres dont la façon de gagner leur vie n'implique absolument pas ce genre de saletés:</b></div>
<div></div>
<div>installez <a title="https://www.telegram.org/" href="https://www.telegram.org/" target="_blank" rel="noreferrer nofollow noopener">Telegram</a> (ordi et tel) pour remplacer les conversations instantanées, appels et les SMS (qui ne sont pas chiffrés par défaut),</div>
<div>utilisez <a title="https://mamot.fr" href="https://mamot.fr" target="_blank" rel="noreferrer nofollow noopener">Mamot.fr</a> pour les réseaux sociaux (celui ci est sans publicité, et sans pistage/revente de votre vie privée) ,</div>
<div>adoptez une boite <a title="https://protonmail.com/fr/" href="https://protonmail.com/fr/" target="_blank" rel="noreferrer nofollow noopener">Protonmail</a> pour les email.</div>
<div>utilisez <a title="https://www.mozilla.org/fr/" href="https://www.mozilla.org/fr/" target="_blank" rel="noreferrer nofollow noopener">Firefox</a> au lieu de google Chrome.</div>
<div><a title="https://duckduckgo.com/" href="https://duckduckgo.com/" target="_blank" rel="noreferrer nofollow noopener">recherchez sur le web avec DuckDuckGo</a> au lieu de Google search.</div>
<div>utilisez <a title="https://fr.libreoffice.org/" href="https://fr.libreoffice.org/" target="_blank" rel="noreferrer nofollow noopener">LibreOffice</a> au lieu de microsoft office (de façon générale toute version logiciel libre est préférable a une version de logiciel privatif)</div>
<div>et utilisez un gestionnaire de mots de passe comme <a title="https://www.lastpass.com/" href="https://www.lastpass.com/" target="_blank" rel="noreferrer nofollow noopener">LastPass</a> protégé par une phrase de passe forte et facile a retenir (du style "il était thym Petit Navire") au lieu d'un pass identique partout qui sera deviné en une dizaine de secondes par des scripts capables de deviner des milliers de combinaisons possible par seconde. chaque caractère supplémentaire représente un temps de recherche exponentiel, et la plupart des gens utilisent des mots de passe tout pourris de 6 caractères qui se trouvent en une dizaine de secondes)</div>
<div></div>
<div>Plus on sera nombreux à utiliser des alternatives respectueuses de la vie privée, et plus ce sera un message fort pour les industries que les gens normaux ne veulent pas utiliser de services qui leur font des sales coups dans le dos et surtout qui ont des répercussions dans la vraie vie.</div>
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,29 +0,0 @@
:PROPERTIES:
:ID: 29027b6c-ca3f-411a-9aea-5aa9d6645e50
:END:
#+title:
* Article
- ID: 774
- guid:
- status: draft
- publié le: <2018-05-10 19:27:21>
- modifié: <2018-05-10 19:27:21>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** installez votre peertube sur serveur ubuntu
ceci_est_du_html
Vérifiez les dépendances requises
Clonez le dépot
Gérez votre virtual host
Lancez le serveur
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,30 +0,0 @@
:PROPERTIES:
:ID: 253d3b39-abd2-41bf-b663-17843b2541b7
:END:
#+title:
* Article
- ID: 863
- guid:
- status: draft
- publié le: <2018-08-22 12:04:41>
- modifié: <2019-01-08 16:58:44>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** Installer Gitlab sur Ubuntu 18
ceci_est_du_html
<!-- wp:embed {"url":"https://linuxize.com/post/how-to-install-and-configure-gitlab-on-ubuntu-18-04/","type":"rich","providerNameSlug":"prise-en-charge-des-contenus-embarques"} -->
<figure class="wp-block-embed is-type-rich is-provider-prise-en-charge-des-contenus-embarques">
https://linuxize.com/post/how-to-install-and-configure-gitlab-on-ubuntu-18-04/
</figure>
<!-- /wp:embed -->
source : <a href="https://linuxize.com/post/how-to-install-and-configure-gitlab-on-ubuntu-18-04/">https://linuxize.com/post/how-to-install-and-configure-gitlab-on-ubuntu-18-04/</a>
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,61 +0,0 @@
:PROPERTIES:
:ID: 206ab35b-34f4-47fe-b9f2-591a6b5008ea
:END:
#+title:
* Article
- ID: 672
- guid:
- status: draft
- publié le: <2018-08-22 12:07:23>
- modifié: <2018-08-22 12:07:23>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** miner de la cryptomonnaie
ceci_est_du_html
<h2>Donc, faut bien piger de quoi on cause</h2>
Les créateurs du bitcoin ont écrit un minuscule livre blanc (de 10 pages) à son lancement pour éclairer à quoi c'est censé servir, et à quels besoins ce système doit répondre. Vous pouvez trouver <a href="https://www.cipherbliss.com/wp-content/uploads/2018/01/bitcoin_fr.pdf">sa traduction en français ici</a> en pdf.
La blockchain (ou chaîne de blocs) c'est comme un carnet de transactions sécurisé et transparent où chaque page serait sécurisée de telle sorte qu'elle dépend de la page précédente.
Chacun peut créer une monnaie selon ses propres règles afin par exemple de <a href="https://www.economie.gouv.fr/particuliers/monnaie-locale">favoriser le commerce local</a>.
On peut donc voir en temps réel le volume monétaire du monde entier pour une monnaire, où chacun peut rajouter des lignes, vérifier les transactions réalisées, mais pas n'importe comment et surtout sans pouvoir modifier les lignes précédentes.
Actuellement, chaque banque fait des transactions et les garde en mémoire dans des sortes de grands livres de transactions, dans des énormes bases de données auxquelles aucun client n'a accès. On fait une confiance aveugle en les institutions régissant les livres de comptes sans avoir de contrôle dessus, on peut annuler des transactions à posteriori, on a aucun contrôle si quelqu'un de la banque veut modifier notre solde sans notre accord, ou si la banque fait faillite, on se base sur des étalons pour établir la valeur de la monnaie régie par des règles institutionnelles, et on peut avoir un solde négatif.
Avec des bitcoins par exemple, vous ne pouvez pas dépenser plus que vous n'avez investi dedans, vous ne pouvez pas avoir de solde négatif sur un portefeuille bitcoin, ethereum ou dogecoin.
<img class="aligncenter size-full" src="https://cdn.worldvectorlogo.com/logos/ethereum.svg" width="2500" height="1715">
Les personnes qui se chargent de créer les blocs de transactions de façon sécurisée font d'énormes calculs afin de trouver comment sécuriser un bloc et donc poursuivre la chaîne de blocs, on les appelle des mineurs à l'image des vrais mineurs qui allaient chasser le minerai.
Ce sont des gens disposant de tas de super ordinateurs comme des entreprises spécialisées, ou des gens comme vous et moi qui minent en groupe (on dit en <em>pool</em>) et se répartissent la récompense de la création de bloc à hauteur de la puissance de calcul que vous mettez en place dedans.
[caption id="" align="aligncenter" width="1000"]<img src="https://www.avoir-alire.com/IMG/jpg/deadpool_white_poster.jpg" alt="" width="1000" height="392"> si vous minez avec une pool où y'a personne ça fait une dead pool[/caption]
Pour ma part à titre d'exemple , avec une carte graphique Nvidia GTX 1060 je peux faire entre 18 et 30 Méga hash par seconde pour miner de l'ethereum avec ethminer, ce qui me fournit quelque chose de l'ordre de 0.002 ethereum par jour. à côté de ça je ne peux pas vraiment utiliser mon ordi pour faire quoi que ce soit d'autre en même temps. Ce qui n'est donc pas hyper intéressant si on regarde l'investissement d'un ordi avec une carte graphique contre ce que ça rapporte en ethereum, à moins que la valeur des ethereum grimpe de beaucoup comme ça a été le cas avec le bitcoin en Décembre 2017 où il est passé de 8000€ à pas loin de 20 000€.
Un montage plus intéressant consisterait &nbsp;à se créer une petite ferme perso, un mining rig avec plusieurs cartes graphiques. Mais ça demande un gros investissement de départ et du savoir faire sur le montage d'ordi.
En résumé, sur une distribution type debian / ubuntu avec une machine équipée de carte graphique nvidia récente il vous faudra avoir installé les drivers nvidia les plus récents capable de faire du CUDA, du calcul distribué. ça peut vous servir aussi à faire du TensorFlow et autres trucs d'apprentissage d'intelligence artificielle.
&nbsp;
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,27 +0,0 @@
:PROPERTIES:
:ID: b506ee6f-5b9d-4ec1-bf9e-c6ad09658f56
:END:
#+title:
* Article
- ID: 950
- guid:
- status: draft
- publié le: <2018-09-05 18:32:48>
- modifié: <2018-09-05 18:32:48>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** mon titre
ceci_est_du_html
jeijsijgijdijgd#+begin_src shell
<!-- wp:image {"id":945} -->
<figure class="wp-block-image"><img src="https://www.cipherbliss.com/wp-content/uploads/2018/09/caisse_bliss_descritpion_open_source_cipherbliss.png" alt="" class="wp-image-945"/></figure>
<!-- /wp:image -->
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,34 +0,0 @@
:PROPERTIES:
:ID: a9e4094a-b14f-4697-843c-e956b0394237
:END:
#+title:
* Article
- ID: 1011
- guid:
- status: draft
- publié le: <2018-10-10 10:49:08>
- modifié: <2019-01-08 16:48:50>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** Comment intégrer un front end Angular sur un site web en Symfony
ceci_est_du_html
on fait un projet git pour le front, et un pour le back symfony
on range notre multi projet à coup de git submodule,
on compile les sources du front dans un dossier accessible à symfony
on insère le js compilé dans un template twig
et hop, on peut voir le tout intégré dans l'app symfony en local.
roulez jeunesse!
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,96 +0,0 @@
:PROPERTIES:
:ID: bb12d744-bfae-4042-9823-f80e7c1e3518
:END:
#+title:
* Article
- ID: 1144
- guid:
- status: draft
- publié le: <2019-01-11 23:14:49>
- modifié: <2019-01-11 23:14:49>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** Passer son oneplus à lineageOS
ceci_est_du_html
Touts les petits pas pour se dégager de Google sont bons, Android étant un projet libre à la base, pourquoi utiliser la version pleine de trackers Google de ce projet quand on peut se servir de la version libre?
Avec le bon tuto ce n'est pas bien compliqué.
Avant tout il faut faire un bon backup de son tel par câble usb.
Il faut installer deux logiciels sur son ordi pour gérer son tel branché en usb. Ces logiciels sont Adb et Fastboot.
Chopper le système linerage os en zip. Chopper le mode recovery de twrp qui permet de démarrer sur le téléphone et de faire le ménage pour installer un nouveau système d'exploitation.
Vérifier l'intégrité du zip.
Mettre le  mode développeur sur son ordi Phone.
Débloquer le démarreur.
Utiliser fastboot pour rooter le téléphone
Installer un mode récupération (recovery)
Mettre le nouveau système dans la mémoire du tel par Adb sideload.
Virer l'ancien système en balayant plusieurs trucs. Le cache dalvik, les fichiers perso, l'os précèdent. Et enfin installer le zip du nouveau système, ce qui prend entre 5 et 10 min.
Une fois que c'est bon on redémarre et voilà le nouveau système tout propre qui fonctionne sans avoir besoin du play store ou d'un compte chez Google.
Vous pouvez profiter des applications du play store en utilisant le Yalp store. Que vous pouvez récupérer par f-droid. Que vous pouvez récupérer en allant chercher son fichier d'installation .apk sur le site officiel de f-droid ou en le copiant par usb depuis votre ordi.
Voilà.
Mais le jeu en vaut la chandelle.
&nbsp;
Ensuite dans les trucs à faire.
Récupérer son gestionnaire de mot de passe avant les autres applis pour gagner un temps fou à ne pas aller chercher plein de mots de passe.
Son compte Firefox.
Réinstaller quelques applis bien pratiques pour syncroniser son calendrier et ses contacts sur nextcloud. Avec caldav.
Changer de clavier de base, désactiver ces phutin de vibrations à chaque touches.
Profiter du mode ne pas déranger sur certaines plages horaires.
Désactiver les utilisations de nfc, GPS, Bluetooth.
Verouiller l'accès au tel par schéma ou empreinte ou ce que vous voulez mais pas question de sortir à poil.
Enjaillez !
&nbsp;
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,30 +0,0 @@
:PROPERTIES:
:ID: 3e6eb17d-4c4d-4900-92ec-f0b2bc28ff07
:END:
#+title:
* Article
- ID: 1235
- guid:
- status: draft
- publié le: <2019-05-08 00:01:41>
- modifié: <2019-05-08 00:01:41>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** L'internet des objets au service de la surveillance
ceci_est_du_html
« Le capitalisme de surveillance sait tout de nous, alors que ses opérations sont conçues pour que nous nen sachions rien », il « annule les droits fondamentaux associés à lautonomie individuelle », droits« essentiels à la possibilité même dune société démocratique ».
Il ny a pas de fatalité technologique, estime au contraire lautrice. Les technologies ne sont pas des fins en soi mais des moyens au service de léconomie : « Sil est possible dimaginer quelque chose comme lInternet des objets sans le capitalisme de surveillance, il nest pas possible dimaginer le capitalisme de surveillance sans lInternet des objets. »
https://www.rallumerlesetoiles.com/2019/03/le-capitalisme-de-surveillance-maitre-des-marionnettes.html
https://www.laquadrature.net/2019/05/01/la-vie-privee-pour-les-faibles-la-transparence-pour-les-puissants/
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,57 +0,0 @@
:PROPERTIES:
:ID: 229210f2-e1ed-4448-a51d-1fadf9baf930
:END:
#+title:
* Article
- ID: 1239
- guid:
- status: draft
- publié le: <2019-05-11 21:07:43>
- modifié: <2019-05-11 21:07:43>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** Mettre à jour nextcloud avec plusieurs versions majeures de retard
ceci_est_du_html
C'est pas faisable. Voilà. Bisous!
Bon, c'est faisable mais en plusieurs fois avec l'outil en ligne de commande occ (own cloud command line interface)
&nbsp;
Vous devez faire une mise à jour de votre dépôt via gît en allant à la version majeure juste au dessus de la vôtre.
Mettez à jour votre dépôt
Git pull origin master
Listez les tags de nextcloud avec
Git tag -l
Ce qui vous donnera une longue liste de versions. Vous pouvez naviguer avec les flèches du clavier et appuyer sur la touche q pour quitter la liste.
Pour savoir votre version vous pouvez utiliser status
Git status
Ensuite on bouge à la version majeure juste au dessus de la notre. Si vous êtes sur la version 14.truc.bidule,
Allez à la version v15.0.0
Git checkout v15.0.0
Appliquez les migrations de base de donnée,
Puis faites un autre checkout + mise à jour jusqu'à arriver à la version majeure la plus à l'heure actuelle.
Et voala !
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,59 +0,0 @@
:PROPERTIES:
:ID: f0b3d7ed-9a3b-4bff-8f30-6d8a61983a4d
:END:
#+title:
* Article
- ID: 1291
- guid:
- status: draft
- publié le: <2019-06-18 18:44:29>
- modifié: <2019-06-18 18:44:29>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** Le temps c'est un non problème
ceci_est_du_html
Comme vous le dirait ce cher Jean Pierre Coffe, le problème du temps, c'est un non-problème. Hors, il se trouve aussi que, plus vous vivez près de la pauvreté, plus la notion de temps libre vous est étrangère. Non seulement vous vivez sans cesse en mode survie, mais vous n'avez pas la possibilité d'envisager quoi que ce soit à long terme: vous n'êtes pas maître de votre temps ni de votre argent, et ce n'est pas de votre faute. Comme le montre <a href="https://www.atd-quartmonde.org/wp-content/uploads/2019/05/Dim_Pauvr_fr_FINAL1.pdf">cette étude d'Atd Quart-monde</a>
Hors il se trouve que pour pouvoir acquérir des compétences dans les métiers de l'informatique, il faut pouvoir disposer de temps d'exploration, d'espace au calme afin de lire et de comprendre ce que l'on lit, d'un environnement assez calme pour ne pas être interrompu toutes les 6 minutes maxiumum comme c'est le cas dans les open-space. Bref, cela demande de pouvoir s'instruire et expérimenter librement.
Et il se trouve que le temps c'est aussi de l'argent, qui n'est pas forcément le vôtre.
Prendre le contrôle de son temps c'est aussi savoir refuser de se mettre à disposition de l'agenda d'autres personnes. Il vous faut donc apprendre à dire non, à refuser des choses à faire, les ordonner selon votre propre conception du temps afin de dégager du temps libre parmi le bullshit de tâches absconses que constitue la violence administrative qui gangrène toujours plus l'agenda de tout un chacun.
Cette bullshitisation des métiers est un véritable fléau à plusieurs visages.
<ul>
<li>Création d'amnésie chez les experts en changeant les technoslogies tendances afin de rallonger les délais de production de projets.</li>
<li>Dépossession des prises de décision aux exécutants.</li>
<li>Création de procédures administratives totalement absurdes.</li>
<li>Réglementations et retouches dans les procédés afin d'occuper le temps d'une armée de cols blancs.</li>
<li>Obligations de passer par des paperasses interminables demandant plusieurs fois les mêmes informations au sein d'un même formulaire (sic).</li>
<li>Emplois de larbins qui n'ont d'autre objet que de donner l'impression qu'une personne est importante, de rustine, de porte flingue, de cocheur de case, de pancarte humaine... Tels que théorisés par l'anthropologue David Graeber et illustrés de nombreux exemples dans son livre "bullshit jobs : les métiers à la con", disponible en Français et que je vous recommande chaudement.</li>
</ul>
Beaucoup de stratégies managériales et d'objectifs d'emploi ne sont <strong>vraiment pas</strong> louables (le programme de management next chez France Telecom qui a engendré près de vingt mille démissions et qui a été surtout plus connu du fait de nombreux suicides. Une recette que l'on retrouve de nos jours <a href="https://blogs.mediapart.fr/wael-mejrissi/blog/110119/suicides-des-agents-sncf-dans-lindifference-generale">sous un angle encore plus tragique à la SNCF</a> en phase de privatisation: 57 suicides sur leur lieu de travail en 2017) et répondent à un système proche de la féodalité où l'importance d'une personne se mesure à l'aune de son grand nombre de sous-fifres.
Le travail est un monde hérissé de tabous.
Sans parler du rapport sado masochiste que des employés vivent avec leurs managers et supérieurs en général, si vous ne passez pas votre vie à souffir et à détester votre travail, il y a de grandes chances que vos proches (et moins proches) vous en veuillent.
S'approprier le temps des gens est donc une forme de pouvoir permise par nos structures hiérarchiques dignes du moyen âge. Savoir s'en dépêtrer est à la fois nécessaire mais aussi souhaitable à une vie équilibrée. Ce qui ne <a href="https://duckduckgo.com/l/?kh=-1&amp;uddg=https%3A%2F%2Fmedium.com%2Fs%2Ffuturehuman%2Fsurvival-of-the-richest-9ef6cddd0cc1">va bien entendu pas dans le sens des personnes à la tête de la pyramide</a>, qui n'ont pas encore saisi l'importance de l'effondrement prochain, et qu'une de leur piste de survie serait:
<ul>
<li>d'arrêter leurs conneries mégalomanes</li>
<li>de commencer à mieux considérer leurs employés dès aujourd'hui.</li>
<li>de détruire le présentéisme afin que les personnes aient une vie et des contacts sociaux en dehors de leur travail</li>
</ul>
&nbsp;
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,35 +0,0 @@
:PROPERTIES:
:ID: 9e4f435f-b264-4eaa-822c-4dbcc3a2f313
:END:
#+title:
* Article
- ID: 1379
- guid:
- status: draft
- publié le: <2020-06-01 09:42:02>
- modifié: <2020-06-01 09:42:02>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** Se mettre au bépo
ceci_est_du_html
Ben c'est pas facile
Typematrix avec d'énorme frais de douane
Klavaro
Régler son clavier au boot comme indiqué sur le wiki
avoir de la patience
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,70 +0,0 @@
:PROPERTIES:
:ID: e8aa3a61-93cf-4e70-b012-70abf156becf
:ROAM_ALIASES: "framadate histoire"
:END:
#+title:
#+filetags: :framadate:
* Article
- ID: 1381
- guid:
- status: draft
- publié le: <2020-06-01 09:42:29>
- modifié: <2020-06-01 09:42:29>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** Framadate version funky
Il était une fois Framadate, une petite histoire de télétravail hors
pandémie de Covid-19. Comme beaucoup de boulots collaboratifs de
logiciels libre, c'est une contribution faite à distance, par beaucoup
de personnes dans le monde, sur leur temps libre. De quoi apprendre des
choses utiles en ces temps où le télétravail semble être totalement
nouveau, alors que *pour beaucoup de contributeurs au libre, le travail
de loin à plusieurs a toujours été l'unique façon de faire*. Donc
Framadate, installé sur [[https://framadate.org/][framadate.org]], c'est
comme Doodle (qui est devenu très cher pour le commun des mortels), mais
en mieux du point de vue éthique.
** Qu'est-ce que c'est, Framadate?
:PROPERTIES:
:CUSTOM_ID: quest-ce-que-cest-framadate
:END:
[[https://www.cipherbliss.com/wp-content/uploads/2020/04/framadate_date.jpg]]
[[https://www.cipherbliss.com/wp-content/uploads/2020/04/framadate_classic.jpg]]
C'est un petit logiciel que vous pouvez installer sur votre serveur afin
de permettre à n'importe qui d'organiser des sondages pour se faire des
rendez-vous (au lieu d'utiliser la technique moisie des échanges
interminables d'email "moi je suis dispo tel jour" "ha moi non" "ah moi
oui" "oui mais toi on s'en fout Bébert!" ... pauvre Bébert!), sans que
les gens que vous souhaitiez réunir n'aient besoin de s'sinscrire, de
faire chauffer la carte bleue, ou de se faire pister par les GAFAM.
C'est un logiciel très utilisé, mais qui souffre de problème d'ergonomie
énorme sur mobile. Comme beaucoup de projets libres, faits par des gens
qui ne sont pas experts en User eXperience, design, accessibilité,
traduction. Il était question de retaper son front end depuis un bout de
temps, et Maiwann s'est lancé dans la réunion d'idées en 2018, a produit
des design d'écrans en 2019, et fait un appel a discuter du truc avec le
hashtag #framadate, depuis un post Mastodon en Aout 2019. Les maquettes
étaient prêtes et n'attendaient qu'à être traduites en logiciel.
Nouvelle tête de framadate, maquettes sur Zeplin, cette version n'est
pas encore en production:
[[https://www.cipherbliss.com/wp-content/uploads/2020/04/Screenshot_2020-04-10-Zeplin-Project.png]]
[[id:ce0c7b63-604e-42bf-94eb-486ace36b055][contribuer_projet_libre]]
** histoire
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]
[[id:19c34cd0-8e0e-4484-85d6-5a8ed056fb04][refonte-de-framadate-avec-api]]
[[id:c2c9fce0-fd7d-4b82-8b08-cd97840ca112][quelques-avancements-sur-framadate-funky]]

View file

@ -1,132 +0,0 @@
:PROPERTIES:
:ID: b0740252-a4ed-4117-ace5-63254483ad2d
:END:
#+title:
* Article
- ID: 1383
- guid:
- status: draft
- publié le: <2020-06-04 18:56:54>
- modifié: <2020-06-04 18:56:54>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** échec de sauvegarde
je n'avais pas automatisé suffisamment de choses et soudain bam ! Mon
serveur mysql ne veut plus démarrer.
<https://blog.ledez.net/informatique/comment-r%C3%A9cup%C3%A9rer-un-rm-rf-var-lib-mysql/>
# Regrouper tout le bazar
# Supprimer les dossiers et fichiers vides dans le bazar
compter les fichiers et dossiers vides
find ./ -empty -type f |wc -l
find ./ -empty -type d |wc -l
les supprimer
find ./ -empty -type f -delete
find ./ -empty -type d -delete
# Définir son architecture de sauvegarde
## ranger la destination
/home/tykayn/backup
- serveurs
- sys
- postgresql
- dump
- lib
- mysql
- dump
- lib
- home
- www
- mastodon
- tykayn
- spare
- peertube
- vps
- cloudland
- nextcloud
- mysql
- dump
les scripts de sauvegarde doivent faire partie de la sauvegarde
## ranger les sources en recherchant par type de fichier
bases de données
- mysql
- postgresql
- snap mysql
plusieurs serveurs
- 3 serveurs de 2To chacun répliquent la sauvegarde
- Mon NAS de 10 To se syncronise avec un de ces trois serveurs.
fichiers de chaque serveur à copier
- configuration nginx
- dossier de snap nextcloud
- tout le contenu des sites web
- des archives diverses
tout réunir avec **Borg Backup**
```
apt install borgbackup
```
Créer le dossier de destination des sauvegardes
borg init --encryption=repokey-blake2 /home/tykayn/borg
borg create /borg::{now} /home/tykayn/backup
faire le ménage dans les sauvegardes passées et ne garder que quelques
copies
borg prune -v --list --stats --keep-daily=4 --keep-weekly=4
--keep-monthly=3 /media/tykayn/tk4to/backup_land4to
syncroniser le dossier de borg
## cronjob de sauvegarde
### Résoudre le problème de connection sans mot de passe
https://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/
### Créer le script avec son log
```
sudo nano /etc/cron.daily/tykayn-backup
```
#!/bin/bash
echo "start daily tykayn-backup cron job" >>
/home/tykayn/backup/all.log
sudo su - mastodon -c "cd && today=$(date +"%Y-%m-%d_%H-%I-%s") ;
pg_dump -Fc mastodon -f
/home/mastodon/backups/backup_${today}_mastodon-cipherbliss-com.dump"
bash /home/tykayn/rsync_all.sh
alias dumpall='today=$(date +"%Y-%m-%d_%H-%I-%S") ; mysqldump -utykayn
-pplopplop01 --all-databases >
/home/tykayn/backup/mysql_dump_all_databases/backup_mysql_${today}_.sql';
alias mysimport='mysqlimport -uroot -pplopplop01'
# Script de healthcheck
ping sur différents sites
vérification de services qui fonctionnent
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,38 +0,0 @@
:PROPERTIES:
:ID: 15172771-391d-4ee5-ab5d-0dab8b4595a4
:END:
#+title:
* Article
- ID: 1359
- guid:
- status: draft
- publié le: <2020-06-21 19:47:19>
- modifié: <2020-06-21 19:47:19>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** Avoir de la belle imagerie dans JOSM avec la Bd Ortho IGN et Mapillary
ceci_est_du_html
JOSM propose des tas d'imageries que l'on peut ajouter dans notre éditeur.
La meilleure imagerie sattelite disponible actuellement est la BD Ortho de l'IGN.
Pour l'activer il faut se rendre dans le menu imagerie &gt; préférences.
Ajouter la couche BD Ortho. Ensuite, l'activer. Et voilà!
Pour avoir des images au niveau du sol, contribuées par des millions de gens il existe le projet Mapillary.
Vous pouvez aussi activer son calque de lignes et points verts marquant les séquences disponbles dans la zone que vous avez en vue actuellement.
JOSM peut aussi vous permettre de réaligner vos séquences de photos.
&nbsp;
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,297 +0,0 @@
:PROPERTIES:
:ID: 97d851d5-88c4-4def-bf16-28622d03dc7b
:END:
#+title:
* Article
- ID: 1448
- guid:
- status: draft
- publié le: <2020-07-15 11:34:16>
- modifié: <2020-07-15 11:34:16>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** construction de maison
[[id:ec45b2ee-3358-4fa6-a1bf-b2912bad7281][construction_maison]]
RTIES:
:CUSTOM_ID: combien-de-gens-à-la-fois
:END:
Le nombre d'enfants et la fréquence à laquelle vous hébergez des gens
aussi change le nombre de pièces que vous allez devoir placer. Pour
atteindre notre objectif on a donc comparé deux entreprises de maîtrise
d'ouvrage, puis choisi une qui a le mieux répondu à nos questions durant
l'entretien, et qui a été capable de faire quelques schémas répondant au
besoin en live. On est tombé sur quelqu'un de très compétant gérant une
boîte, on a lancé la procédure de permis de construire, et notre héros
est malheureusement tombé en /burnout/ et a du déléguer l'intégralité du
dossier à ses collègues qui n'ont malheureusement pas les mêmes
compétences. (tin tin tinnnnn!!)
** Gestion de projet
:PROPERTIES:
:CUSTOM_ID: gestion-de-projet
:END:
La base pour s'organiser c'est d'avoir un suivi de tout ce qu'on doit
entreprendre, les contacts de tous nos interlocuteurs, savoir avec qui
on entreprend, quelles décisions prendre, quels sont les options,
combien coûte différentes hypothèses et qui investit combien à quel
moment... bref, savoir gérer un projet d'envergure *sur plusieurs
années*. Il se trouve que compter uniquement sur sa boite mail pour
faire tout ça est un désastre garanti. Surtout quand il s'agit à chauqe
fois de devoir situer de quel endroit on parle sur un plan. Mais on le
savait à l'avance, c'est pourquoi on s'est fabriqué une bonne feuille de
calcul qu'on a fait évoluer au fil des jours et de nos interrogations.
Bien sûr il existe des logiciels tout à fait adaptés à la gestion de
projet de cette envergure, voire pour des projets beaucoup plus
complexes, mais on a fait un truc assez bon à notre sauce.
* Faire sa feuille de calcul de suivi
:PROPERTIES:
:CUSTOM_ID: faire-sa-feuille-de-calcul-de-suivi
:END:
Notre feuille de suivi répond a plusieurs besoins, un pour chaque tab.
Puisqu'il nous fallait pouvoir y accéder de plusieurs endroits nous
avons utilisé une feuille google drive, que nous avons ensuite migré
dans notre NAS, ce qui nous permettait de la modifier à distance dans
une page web. voici les feuilles de notre classeur, éditées avec
LibreOffice Calc et syncronisées avec notre NAS.   La suite dans le
prochaine épisode.  
pour une maison neuve
- réflexion, décisions
- études techniques
- croquis
- prises de mesure sur place pour ajuster les plans
- communication:
- prise d'infos
- recherche de prestataires
- transmission d'infos
- négociations
- se réunir
- faire des achats
- transporter du gros matos
- couts de livraison à prévoir
- sur chantier: réalisation de travaux / ouvrage
- paperasse administrative
- signature de devis
- fournir éléments pour permis de construire
- logistique des échafaudages, outils et machines
- contrôle chantier
- suivi des avancements
- désigner responsable des étapes
- faire signer les gens
- retapage des erreurs
- attendre beaucoup
savoir ce que l'on veut
faire un budget
en prévoyant qu'il est fréquent que le budget augmente en cours de
construction à hauteur de 5% environ.
généralement, la matière première compte 1/3 du budget, et les services
de prestation 2/3. donc vous pouvez vous construire une maison pour 1/3
du prix si vous la faites à la main, easy!
pour ça vous pourrez trouver conseil sur l'association régionale des
castors d'ile de france, par exemple  [[https://www.arcif.net/]]
lieu
définir nos exigences en termes de commerce, de densité de population,
de calme ou de bordel constant, de boulot / centre de télétravail, de
proximité d'une forêt, d'accès aux transports en commun, aux études et
groupes scolaires, crèche si vous avez un gaminou, aux loisirs, aux
grands axes routiers, aux voies cyclables, de proximité du reste de la
famille.
trouver un terrain
plans
dessiner des croquis de plans trouver un architecte
savoir comment vous voulez répartir vos pièces, comment garer vos
véhicules, comment orienter la maison de sorte à pouvoir profiter des
apports solaires, organiser plusieurs étages
savoir où placer les machines
faire en sorte que vos tuyeaux d'eau soient le plus court possible
savoir si vous voulez pouvoir habiter sur un seul étage (si vous n'aimez
pas les escaliers / vous êtes plsu tout jeune, et que vous avez de la
surface de terrain)
réfléchir à ce que vous voulez faire de votre jardin
espace de jeux
piscine ou non
terrasse pour manger ou glander dehors
avoir des arbres ou non
réfléchir à comment aménager le sol, gérer ses pentes, ses bosses, ses
trous, ses accès
voir un paysagiste
gestion des réseaux, position des prises et interrupteurs, domotique,
home cinéma, enceintes multi room,
disposition de la cuisine
chambre d'ami
laisser la possibilité à vos habitudes d'évoluer
quand tout est clair on peut lancer le permis de construire
[[https://www.service-public.fr/particuliers/vosdroits/F1986]]
(un mois minimum si tout est bon)
afficher le permis de construire dans la rue. attendre la période
d'opposition publique de 2 mois avant de pouvoir commencer les travaux.
au fur et a mesure de l'avancement des plans, vous serez amenés à écrire
de longs mails pour préciser des choses sur des endroits de plans à
retoucher. Et donc passer un temps énorme a juste décrire de quoi vous
voulez parler.
alors que vous pouvez mettre en ligne vos plans et créer des points de
discussion dessus avec des outils comme Marvel.
vous pourrez clore les discussions au fur et à mesure que les soucis
sont résolus et que les plans sont mis à jour.
comme ça, pas la peine de vous trimballer ouatmille plans pas à jour
imprimés partout.
suivre ses dépenses
prospection des prestataires
suivi des paiements
savoir qui paie quoi
paiement en plusieurs fois, toujours
les boites ne finissent pas toujours ce qu'elles commencent
réflexion sur les éléments à acheter
savoir quel prestataire fournit des éléments
échéancier
des travaux empêchent l'avancement d'autres travaux, il est rare que les
prestataires puissent travailler en même temps, et ce n'est d'ailleurs
pas permis par leurs assurances
savoir quel prestataire s'occupe de quel percement
diagramme de gantt
visiter le chantier souvent
mettre à jour nos envies
en se baladant sur le chantier nous avons retapé les emplacement de pas
mal de pièces
relever les anomalies, les erreurs de placement
faire face aux contraintes qui apparaissent au fur et à mesure, et qui
demandent de retaper les plans
gérer les malfaçons
constater et faire constater
désigner les responsables et couper court aux jeux de patate chaude
entre les prestataires
réparer dans un délai raisonnable
activer les réseaux un trimestre avant la fin
eau
elec, enedis
internet, orange, même si vous êtes chez un fournisseur éthique, c'est
orange qui construit les nouvelles lignes.
commander les meubles de sorte qu'ils arrivent après les revêtements de
sol
réceptionner la maison
en contrôlant bien le tout
préparer le déménagement
rediriger ses courriers
installer sa nouvelle boite à lettre / étiquette
Réexpédition définitive nationale - 1 contrat, 6 Mois
[[https://www.laposte.fr]]
changer son adresse sur https://www.service-public.fr
virer ou donner des trucs dont on ne se sert pas
cartonner
protéger la vaisselle
enrouler les fauteuils/canapés/matelas
ressources:
oalley  [[https://www.oalley.net/map]]
feuille de calcul regroupant le tout
[[https://fr.smartsheet.com/modeles-de-gestion-de-construction-pour-Excel]]
[[/ns/dv/WLh9w/d1904e19d03a575e12581f2402704252e3ec21ba/_ZkOZIQBw75NA97waGYktaA/1556800112467.jpg?SynoToken=KraWgUUq0PUzE&_sid=%22Xr9ppM4oRyQrM15C0MIN193500%22&thumb=true]]
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,169 +0,0 @@
:PROPERTIES:
:ID: f5b6a3e6-34c1-4c3b-92f7-30f48b2609de
:END:
#+title:
* Article
- ID: 1457
- guid:
- status: draft
- publié le: <2020-08-07 00:38:25>
- modifié: <2020-08-07 00:38:25>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** Duniter et la monnaie libre, la seule monnaie sans inflation nominale
ceci_est_du_html
Dans les logiciels libres, ce qui est libre, ce sont les gens qui les utilisent. Dans les logiciels privateurs, ce sont les gens sont utilisés, privés de leur libertés et de leur autonomie au même titre que du bétail passant sur le chemin d'un fermier en quête de marchés industriels juteux.
lorsque vous êtes considérés comme une marchandise ce n'est jamais à votre avantage. Si c'est gratuit, et que ce n'est pas libre, c'est vous le produit. vous avez déjà certainement entendu cette phrase mais savez vous à quel point c'est une mauvaise affaire et à quoi vous renoncez quand vous épousez un produit de Google, Apple, Facebook, d'Amazon, ou Microsoft... ou que vous utilisez une monnaie non libre qui est par construction une pyramide de Ponzi autorisée par la loi ?
Le concept de monnaie dette m'avait été narré il y a pas mal d'années, bien avant que je bosse avec une banque, mais j'ignorais qu'on pouvait concevoir de la monnaie autrement.
j'ignorais aussi à quel point la création monétaire est réellement de l'argent qui sort de nulle part: d'une ligne dans un livre comptable, écrite sur un disque dur, d'un ensemble de serveurs gérés par des banques. Comme dit Ploum, notre argent c'est aussi vrai qu'un score sur une borne d'arcade. Est il donc judicieux d'organiser toute sa vie pour faire juste grimper un score ?
moi j'pense la question elle est vite répondue.
Il est évident que le rôle de la confiance dans une monnaie est une composante essentielle de ce qui fait que l'on peut vraiment s'en servir.
j'avais entendu parler du projet de la monnaie libre et de son implémentation dans le monde réel en 2017 avec la blockchain Duniter, qui permet d'utiliser la G1 (la June, lancée le jour de la fête internationale du droit des femmes). Une monnaie basée sur la Théorie Relative de la Monnaie de Stéphane L'aborde, qui conçoit un ensemble de règles définissant ce qu'est une monnaie libre.
Je m'étais créé un compte il y a quelques temps après avoir lu des articles par ci par la, après avoir vu une conférence Ted de Lionel Dricot - aka Ploum, puis en croisant des gens comme Pouhiou ainsi que d'autres gens qui en parlaient au festival Pas Sage En Seine, je me suis rappelé du sujet. Puis j'ai étudié un peu plus en détail le tout sur le site officiel duniter.org, en fouillant les dépôts du gitlab, les sujets du forum monnaie-libre.fr, en regardant sur l'agenda du libre les rencontres qui arrivaient, en causant avec des gens via une recherche par hashtag sur Mastodon, puis en rencontrant un des développeurs dans un patelin à 15 minutes de chez moi. Après avoir vu une petite demo avec des cartes pour montrer le fonctionnement des crédits en monnaie habituelle et du dividende universel en monnaie libre, j'ai fouillé un peu plus le sujet en zieutant des vidéos puis en lisant le livre de la théorie relative de la monnaie.
Depuis j'ai appris pas mal de trucs que j'ai recoupé avec d'autres sources. Un sujet qui peut être aussi barbant que la monnaie à première vue peut se révéler en fait très intéressant si on s'éloigne des conneries racontées par les écoles de commerce.
Ce n'est pas du tout aussi compliqué que ça en a l'air.
Ça a des implications dans le monde réel qui sont catastrophiques très régulièrement.
Le simple fait que l'on ne soit pas correctement éduqué à ce en quoi consiste la création monétaire montre à quel point on nous a appris à utiliser des choses sans les comprendre et sans chercher à les remettre en question. Ce qui est un signe de soumission assez évident. "L'ignorance c'est la force"
A quel point les banques se gavent sur l'asservissement généralisé de la population, d'une façon que personne d'autre n'a le droit de faire.
Adosser la valeur d'une monnaie sur un métal précieux ne le rend pas stable pour autant.
Il n'a jamais existé de société ou l'on ne faisait que du troc pour échanger des biens et des services.
Le Prix intérieur brut est la somme de tous les salaires déclarés.
La croissance dont on vous rabâche les oreilles à longueur de temps mesure la vitesse à laquelle circule la monnaie officielle déclarée.
L'économie, La finance, et la monnaie, ce sont des choses différentes que tout le monde utilise pour désigner l'un ou l'autre, même dans des lieux où on s'attendait à ce que les gens sachent de quoi ils parlent. Ce qui n'aide pas.
Comment fonctionne la création monétaire. Beaucoup de choses sont beaucoup plus faciles à comprendre quand on a vu ça.
Il existe une toute petite proportion d'euros qui est palpable en billets et en pièces.
Il est possible de savoir précisément dans le temps combien il existe d'euros et d'autres devises. ce qui permet de mesurer des tas de choses.
Comment comparer deux zones économiques.
Quand on ne se donne pas de direction à ses choix on va forcément tendre vers celles qui permettent un accroissement de son pognon.
La lutte des classes est bien réelle, d'une violence sans précédent, et la monnaie est un des moyens de la mener.
mais malheureusement elle est menée avec beaucoup plus de force et violence de toutes sortes envers les classes en dessous de la classe dominante.
il y a cinq ans, 50 personnes détenaient autant de pognon que la moitié de l'humanité la plus pauvre, en 2020 on fait cette comparaison avec seulement 7 personnes les plus riches versus la moitié la plus pauvre.
L'inflation nominale n'est pas une fatalité.
Le dividende universel est techniquement possible.
Le revenu de base est techniquement possible sans avoir à "aller chercher les sous quelque part".
L'euro est une monnaie aussi numérique que le bitcoin ou la G1. La confiance dans une monnaie est plus déterminante à son utilisation que son aspect technique.
Le bitcoin n'est pas une monnaie libre.
Une cryptomonnaie n'est pas obligée d'être un objet de spéculation.
Une cryptomonnaie peut parfaitement fonctionner sans être obligée de bouffer un maximum d'électricité. D'ailleurs vous êtes vous déjà demandé combien d'électricité bouffait le réseau Visa / Mastercard / AmericanExpress et le chauffage de ses châteaux remplis d'employés au travail fictif qui mangent des énergies fossiles pour faire le trajet tous les jours ?
Les choses qui ont de la valeur sont déterminées par ceux qui sont en mesure de créer la monnaie. Dans la monnaie libre, tout le monde est égal face à cette création monétaire, redistribuée de façon égale tous les jours.
Ce n'est pas parce que vous gagnez votre vie et que vous pouvez vous payer des abonnements à des loisirs, ou que vous vous qualifiez de classe moyenne, que vous échappez à la violence bourgeoise.
Des personnes qui sont nées rentières et ne feront jamais de travail pénible dans leur vie viennent tous les jours répéter dans les grands médias que ceux qui ne gagnent pas d'argent méritent une mort douloureuse. Si vous adhérez à cette idée vous pourrez alors diriger votre colère contre l'ennemi intérieur au lieu de questionner la raison pour laquelle ces personnes tiennent absolument à ce que l'on concoive la société autrement. Ou que l'on se demande si les parasites, ce ne seraient pas ces mêmes membres de la classe dominante.
Donc quand vous apprenez qu'il serait en fait sain et normal que tout le monde touche un revenu universel, ça contrarie cette idée de requin bourgeois qui n'aime pas que des gens ne soient pas à son service, de près ou de loin.
Il y a de grandes chances que vous vous tirez une balle dans le pied en perpetrant la violence bourgeoise. Que ce soit en répétant ses mythes de méritocratie qui fait omission de tout ce qu'ont découvert les sciences sociales telles que l'anthropologie depuis bien des années.
Vouloir de la croissance implique nécessairement de la création de monnaie, et donc, de l'asservissement humain au bénéfice des créateurs de dette.
Une création d'argent avec des intérêts implique que l'on doive... de l'argent qui n'existe pas. La monnaie dette est un schéma de Ponzi, mathématiquement impossible à faire fonctionner dans le temps. Et qui a des conséquences gravissimes sur la vie de la majorité des gens.
Combattre la régulation bancaire c'est précipiter les conséquences fatales.
Toute sainte croissance économique est basée sur l'utilisation de ressources fossiles.
Notre plus gros problème, c'est le CO2, qui pilote les autres gaz à effet de serre.
Cela fait depuis 1970 que les menaces sur la vie humaine par le changement climatique du à la pollution anthropique ont été très bien étudiés dans le rapport Meadows. Mais si les choses ne changent pas radicalement c'est parce qu'à la racine, la bourgeoisie qui bénéficie de l'exploitation humaine et fossile n'a aucun intérêt à rendre les clés de la ville et la propriété de leur temps aux gens bien sagement. Elle emploie d'ailleurs toute son énergie et force policière pour attaquer physiquement toute contestation depuis 2018.
La haine des riches semble être le moyen de se faire converger les luttes pour la survie de l'humanité. En tous cas, c'est ce qui se déroule dans les rues de tous les pays du monde, ainsi qu'au cinéma ces dernières années.
Nous sommes gouvernés par des connards, comme le détaille Lordon dans Le Monde.
Les emmerdes ne vont pas arriver progressivement, mais par palier. Il suffit d'une voiture à l'arrêt pour obtenir des centaines de kilomètres de bouchon sur une route.
Il ne peut pas y avoir de croissance infinie dans un monde aux ressources finies, que l'on fait partir en fumée de façon de plus en plus rapide. Adopter une monnaie qui ralentit de cent millions de fois ce processus est donc un acte bien plus efficace que de faire pipi sous la douche.
il est parfaitement possible d'utiliser une monnaie sans avoir besoin de banques.
il est possible d'obtenir un consensus distribué sans autorité centrale, c'est un des principes fondateurs d'une blockchain.
&nbsp;
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -1,198 +0,0 @@
:PROPERTIES:
:ID: 98f5927a-aeea-414b-b391-fca09f8be696
:END:
#+title:
* Article
- ID: 1387
- guid:
- status: draft
- publié le: <2021-02-11 21:56:10>
- modifié: <2021-02-11 21:56:10>
- Index des articles du blog [[id:39e91a2e-d003-4acd-a99a-b58dca74df77][Cipherbliss blog]]
** quelle messagerie instantanée libre pour rassembler le monde
Comment communiquer avec ses proches ou des inconnus, de façon vraiment
sécurisée par défaut, sans se faire pister en permanence par des
entreprises qui asservissent l'humanité, sans avoir à être un fondu de
la ligne de commande, et que ça soit utilisable au quotidien ?
** La mode qui passe
:PROPERTIES:
:CUSTOM_ID: la-mode-qui-passe
:END:
Selon Stéphane Bortzmeyer, bien que les gens semblent coincés dans
l'utilisation d'un logiciel en particulier pour communiquer, les modes
passent et les gens s'inscrivent massivement à un nouveau truc plein de
paillettes tous les cinq ans environ. Ce ne sont pas les propriétés des
logiciels qui sucitent la mode, comme le fait qu'ils soient facile a
utiliser, beaux, pratiques, gratuits, permettant de s'envoyer des gifs,
de faire de la visio conférence a cinq cent à la fois, hé non. c'est
parce que des gens influent ont fait croire à suffisament de monde que
ça valait le coup, pour qu'émerge
[[https://fr.wikipedia.org/wiki/Effet_de_r%C3%A9seau][un effet de
réseau]].
#+BEGIN_QUOTE
L'*effet de réseau* (ou rarement *effet-club*) est le phénomène par
lequel l'[[https://fr.wikipedia.org/wiki/Utilit%C3%A9][utilité]]
réelle d'une [[https://fr.wikipedia.org/wiki/Technique][technique]] ou
d'un produit dépend de la quantité de ses utilisateurs. “J'y suis et
j'y reste parce que tout le monde est là”.
#+END_QUOTE
Ou plus précisément, j'y suis jusqu'à ce que quelqu'un d'assez influent
sur moi m'ordonne de le suivre ailleurs. C'est pénible à reconnaître,
mais dans nos fréquentations, certaines personnes vont avoir une posture
hiérarchique sur nous, et nous sur eux. Il est clair que pour certaines
personnes avec qui on communique, il est très facile de les convaincre
de n'importe laquelle de nos convictions et leur faire adopter une
pratique similaire à la notre pour beaucoup de sujets, pour d'autres
cela relève de la mission impossible, et pour encore d'autres ce sont
eux qui nous font changer de comportement sans que l'on se sente
légitime à remettre en cause cette domination. Le mot fait peur, mais
c'est une réalité.
Ainsi, lorsqu'un service basé sur le
[[https://www.monde-diplomatique.fr/2019/01/ZUBOFF/59443][capitalisme de
surveillance]] (théorisé par Shoshana Zuboff) obtient un effet de mode,
il devient cool de faire la promotion de ce service et de se porter
garant de sa communication en criant à qui veut bien l'entendre qu'on a
un compte dessus, comme si la coolitude du dit service était aussi un
peu la nôtre, [[https://www.youtube.com/watch?v=e5jDspIC4hY][de la même
façon que l'on partage son engouement à soutenir un club de sport]]. On
ne soutient pas un membre en particulier, mais une équipe, quand bien
même cette équipe ne comporte plus une seule des personnes de l'époque
où on l'a connu. On a alors une approche dogmatique de ce qu'il convient
de suivre et la remise en question du dogme devient difficile au fur et
à mesure qu'on en fait la promotion en demandant de ne pas le remettre
en question. Bref, on se tire une balle dans le pied quand on soutient
une cause si on ne nous autorise pas à la comprendre ou a la
questionner.
D'un autre côté, pour gérer leur identité en ligne, beaucoup de gens ont
toujours en usage une ou deux très vieilles adresse e-mail, créé il y a
fort fort longtemps avec un mot de passe tout pourri de 5 caractères et
un chèque en blanc au fournisseur d'e-mail pour tout savoir de nos
communications et de notre graphe social. C'est le cas pour Gmail mais
aussi pour n'importe quel fournisseur d'e-mail qui ne pratique pas par
défaut un chiffrement intégral et de bout en bout.
Des boites comme Protonmail ou Tutanota le font de façon ultra simple
pour les utilisateurs, tout en gagnant leur pain avec des abonnements et
des donations. Des gens qui s'auto-hébergent peuvent aussi le faire sur
leur propre ordinateur, mais c'est long, difficile et demande beaucoup
de montée en compétences. Dans thunderbird il existe l'extension
Enigmail qui permet de faire les choses plutôt facilement, mais là aussi
ce n'est pas par défaut. L'e-mail reste la base de l'identité numérique
sur le web et c'est bien souvent la première chose qu'on vous demande
pour créer un compte quelque part. Comme tout le monde a au moins une
adresse email, ça pourrait servir à communiquer.
** Le souci de l'inscription
:PROPERTIES:
:CUSTOM_ID: le-souci-de-linscription
:END:
S'incrire à un service est une chose pénible, en général. Enfin, sauf si
on sait
[[https://www.cipherbliss.com/comment-ne-plus-perdre-de-temps-avec-ses-mots-de-passe/][utiliser
un gestionnaire de mot de passe]] ;)
De ce fait, fournir une identité qui vous permet de vous connecter a un
site “via” un autre pour lequel vous avez déjà un compte, devient un
grand atout face à la flemme. Google et Facebook l'ont bien compris et
fourni de quoi faire en sorte de se connecter à des millions d'autres
sites via leur
[[https://fr.wikipedia.org/wiki/Authentification_unique][Single Sign
On]], qui leur permet de savoir et de contrôler qui se connecte à quoi,
et comment.
Partant du principe que
“[[https://knowyourmeme.com/memes/do-you-guys-not-have-phones][tout le
monde a un smartphone]]”, certaines messageries comme
[[https://signal.org/fr/][Signal]] ou
[[https://telegram.org/][Telegram]] ont d'ailleurs fait le pari de
prendre un numéro de téléphone comme base de l'identité, et non pas un
email ou un autre compte. Ce qui facilite l'inscription, permet de
retrouver tous ses contacts très facilement, et permet de sortir de
Whatsapp, filiale de Facebook, très simplement en pratique.
ça permet aussi de faire du commerce d'une donnée identifiant une
personne de façon assez forte partout dans le monde (le numéro IMEI, le
VIN du téléphone, l'adresse MAC, l'identifiant publicitaire adwords ou
facebook), et de compter sur un fournisseur d'identité à l'international
déjà existant: les services télécom.
C'est votre numéro IMEI qui permet à votre opérateur Français de vous
dire "coucou, vous venez de passer la frontière, voilà comment ça se
passe le roaming et voici les tarifs" ou encore "bienvenu dans tel pays,
on est trop sympa de vous facturer seulement 7€ la minute si vous
appelez vers la France métropolitaine"
** La mort des entreprises
:PROPERTIES:
:CUSTOM_ID: la-mort-des-entreprises
:END:
Un logiciel privateur, (et donc fermé à la contribution et à l'audit du
fonctionnement par des gens externes à l'entreprise) maintenu par une
entreprise n'est pérenne que tant que ladite entreprise qui le maintient
décide de faire bosser des gens compétents dessus... et que l'entreprise
elle même reste en vie. Si un des deux disparaît, c'est fini. Pas
forcément tout de suite, mais très rapidement. N'allez pas croire que
c'est réservé aux petites entreprises et admirez donc le nombre de
[[https://gcemetery.co/][logiciels tués par Google sur son cimetière]],
qui propose également des alternatives.
Contrairement à un logiciel libre, qui peut parfaitement survivre à ses
créateurs et être repris par d'autres, tant qu'il reste accessible à la
communauté. C'est pourquoi tout mettre sur Github, détenu par Microsoft
et uniquement là bas est forcément une bêtise. L'enjeu de la pérennité
de la forge logicielle et du partage des sources sous une licence
adaptée est donc toute aussi importante. C'est ce qui fait que
[[https://www.nextinpact.com/lebrief/41883/11639-github--microsoft--se-paie-le-gestionnaire-de-paquets-npm][github
et NPM ont été rachetés par Microsoft]], et Gitlab par Google.
** La messagerie par dessus l'email
:PROPERTIES:
:CUSTOM_ID: la-messagerie-par-dessus-lemail
:END:
Deltachat
** Communiquer avec ceux qui n'ont pas de compte
:PROPERTIES:
:CUSTOM_ID: communiquer-avec-ceux-qui-nont-pas-de-compte
:END:
L'enjeu d'une communication globale et privée est donc de taille, et ne
saurait passer par un service centralisé sujet à la mort ou au bon
vouloir des actionnaires d'une entreprise.
Suite à une conférence de uwu et owo à Pas Sage en seine 2019, j'ai
lancé un sondage recensant quelles sont les messageries pour lesquelles
vous avez un compte.
https://framaforms.org/quelles-messageries-instantanees-de-groupe-utilisez-vous-1589371245
* Liens
- cipherbliss [[id:d14d8051-bbb9-4279-a574-84d78bfe5b66][Cipherbliss blog]]

View file

@ -32,12 +32,13 @@
<header id="masthead" class="site-header">
<div class="header-image" style="background-image: url('{{template_content[" BANNIERE_ENTETE"]}}');
background-repeat: no-repeat; background-size: cover;">
<div class="template-header">
<a href="/">
<img src="{{template_content['SITE_ICON']}}" class="site-icon img">
</a>
<h1 class="blog-title">{{template_content['BLOG_TITLE']}}</h1>
<p class="blog-subtitle">{{template_content['BLOG_SUBTITLE']}}</p>
<div class="template-header">
</div>
</div>