December Adventure

Un mois, un projet ou plus. Qui sait ?

Coder ? Non, je bidouille, au mieux.

Le plaisir est tout de même présent.

Quoi de mieux qu'un mois de décembre pour entreprendre d'écrire du code autour de zettelzen.


20 : Script dico avec stardict et la base de synonymes de cnrtl.fr.

==> inc/code/dico

19 : Je me suis rendu compte que j'avais plusieurs scripts en doublon pour travailler/naviguer dans mes notes. J'ai donc regroupé toutes les fonctions dans un seul script, puis elles sont appelables via des scripts spécifiques pour acme.

==> inc/code/zk

18 : Ajout d'un timeout pour la récup' des flux et début de scripts avec stardict.

17 : Retour en arrière pour la division du script principal. Je ne suis pas assez doué pour comprendre ce qui ne fonctionne pas. J'ai également réparé la mauvaise conversion des lignes débutant par - juste après une citation.

16 : Un tout petit peu de temps aujourd'hui. J'ai surtout divisé le script principal en plusieurs parties pour faciliter le repérage dans le code. J'ai aussi retravaillé mon script pour les flux afin qu'il n'affiche pas le titre du site si il n'y a pas de nouveau contenu depuis deux semaines.

Demain, si le temps le permet, j'aimerai bien écrire un script pour afficher une liste de synonymes ainsi que la définition d'un mot surligné.

15 : Rien de bien extraordinaire aujourd'hui. Simplement changer la syntaxe pour les blocs de code pour que --- serve pour les balises <hr>.

14 : Pas d'écran aujourd'hui.

13 : Rajout d'une limite à deux semaines pour les flux, ainsi qu'un rafraichissement automatique après une journée.

Pour l'écriture j'ai piqué le script conjugueur.py à Milouse.

==> inc/code/conjugueur.py

12 : Le script pour la lecture de flux est terminé.

J'ai opté pour python une nouvelle fois avec feedparser c'est un jeu d'enfant.

==> inc/code/acme/afeed

D'ailleurs j'ai également changé la façon d'afficher du code.

Je trouve cela plus clair.

11 : Bien avancé sur min script de rss/atom. Probablement terminé demain.

10 : En bidouillant un peu je me suis dit que cela pourrait être sympa d'avoir mon lecteur de flux rss directement dans acme. J'ai donc commencé à écrire un script assez simple.

09 : Les blocs de code/texte affiche maintenant en entête le fichier associé, ceci permet l'ouverture du dit-fichier dans le navigateur.

08 : Le script est terminé.

==> inc/code/imgconv

07 : Simplification du script pour les images, en bonne voie pour être terminée demain.

06 : Oups, rien du tout

05 : Réecriture commencée pour le script gérant les images. Diminution de la taille, dithering et ... plus rien. Guitare pendant le reste de l'aprem.

04 : Ajout du support blockcode avec ---. D'ailleurs je réfléchis s'il est judicieux de mettre un fichier code complet dans une page html, je trouve que cela n'est pas très lisible lorsqu'il dépasse la cinquantaine de lignes. Et je vais plutôt partir sur des morceaux de code en étendant la syntaxe {^code le_fichier} avec la délimitation de ligne à afficher.

{^code iomlan.py:1:71-106} devrait ainsi afficher que la dite-partie.

inc/code/iomlan.py
import html [...] def include_file(file_type, reference): dir_map = {"code": "code", "text": "text"} parts = reference.split(":") filename = parts[0] line_ranges = parts[1:] file_path = os.path.join( INCLUDE_DIR, dir_map[file_type], filename if file_type == "code" else f"{filename}.txt" ) content = read_file(file_path) if not content: return f"<pre><code>File not found: {filename}</code></n" if not line_ranges: return f"<pre><code>==> <a href=\"{file_path}\">{file_path}</a></code></pre>" content_lines = content.splitlines() selected_lines = [] for line_range in line_ranges: try: if "-" in line_range: start, end = map(int, line_range.split("-")) selected_lines.append("\n".join(content_lines[start - 1:end])) else: line = int(line_range) selected_lines.append(content_lines[line - 1]) except (ValueError, IndexError): selected_lines.append(f"Error processing range: {line_range}") formatted_content = "\n\n[...]\n\n".join(selected_lines) escaped_content = html.escape(formatted_content) return f"<pre><section><a href=\"{file_path}\">{file_path}</a></section>\n<code>{escaped_content}</code></pre>"

Au final ai-je bien besoin d'une syntaxe pour les blockcodes ?

03 : Plus une journée de réflexion aujourd'hui sur comment bien organiser iomlan afin que la maintenance soit quasi-nulle d'ici la fin du mois.

Je me suis arrêté sur le modèle suivant, divisé par semaines:

02 : J'avais quelques soucis de fichiers non-lisibles en envoyant l'html vers mon serveur. Réglé avec :

import os

DST_DIR = "dst"

def set_permissions(DST_DIR):
for root, dirs, files in os.walk(DST_DIR):
# Set permissions for directories to 755
for dir_name in dirs:
dir_path = os.path.join(root, dir_name)
os.chmod(dir_path, 0o755)

# Set permissions for files to 644
for file_name in files:
file_path = os.path.join(root, file_name)
os.chmod(file_path, 0o644)


# Call this function after generating the files in dst_dir
set_permissions(DST_DIR)

Le script affichant le contexte de la note contenait beaucoup de code redondant (plusieurs invocations de grep ou find). J'ai simplifié le tout avec while read.

==> inc/code/acme/acontext

01 : Démarrage en douceur avec un script simple, envoyant le texte sélectionné vers un fichier scratchpad.

D'ailleurs je découvre avec joie la variable $samfile pour accéder au fichier en cours, d'édition. Pratique

==> inc/code/acme/ascratch

Liens

Connexion(s):
  • Home - Atrium du temps, en perpétuel mouvement, porté par le furvent.
  • Journal - Traces dans le temps, sillons dans l'espace
  • Log - Les évolutions du site.
Back to top