Posté par Prae .
Évalué à 3.
Dernière modification le 02 novembre 2022 à 14:03.
Quelques petits feedbacks:
- Une petite doc pour build en go (un simple "go build main.go" par exemple) dans le README.md
- La gestion des fichiers "autres" : par exemple, j'ai des images en local, le serveur http ne les délivrent pas, il serait utile d'avoir un truc du genre (pseudocode rapidos ;)
(pseudocode dans Serve())
if *.md:
buffer = RenderPath(file);
else:
buffer = ReadFile(file);
push_http(buffer)
UPDATE: en fait, cela part en erreur interne quand c'est un fichier non MD, et surtout il cherche par défaut un "_index.md", pourquoi pas directement index.md ?
Oui la doc (comme le projet) a été fait à la va-vite, le but était de partager vite fait une longue discussion sur IRC sans devoir sortir Google Docs ou une connerie du genre.
Pour les fichiers statiques j'y ai pensé aussi, rajouter une option -s, --static qui pointe vers un dossier statique, et servi sur /static/* me semble sympathique. Je verrai si je peux faire ça ce soir ou ce weekend.
Posté par Prae .
Évalué à 3.
Dernière modification le 02 novembre 2022 à 14:52.
Est-ce que c'est possible que "si pas MD alors fichier static" ? plutôt que "c'est dans un répertoire static" ? parce que j'ai donné comme exemple /images/, mais j'ai d'autres répertoires avec différents éléments statiques, et pour le coup, je me dis que c'est plus simple de partir sur un "if mdfile { render }" et le reste, juste en push sur le http handler, non ?
Je me dis que si je suis dans ce cas de figure, d'autres aussi en l'utilisant;
Sinon pour le reste, c'est niquel, je trouve le rendu très proche de ce que j'ai sur d'autres renders markdown et le rendu final en html est plutôt clean.
Petit test avec la dernière release, j'ai toujours un souci :(
Par exemple, si j'essaye d'accéder à cette url http://localhost:8000/images/image.jpg
J'ai un "Internal Server Error" "(c)ould not render document: open images/image.jpg/_index.md: not a directory"
Posté par Prae .
Évalué à 3.
Dernière modification le 03 novembre 2022 à 15:28.
Rien de folichon, je me place dans mon répertoire avec plein de MD, je lance easymd, sans arguments.
En version shell:
$ cd mongrosrepertoireavecpleindemd/
$ ls *.md
DOC1.md
DOC2.md
DOC3.md
$ ls images/
image1.jpg
image2.jpg
image3.jpg
$ /tmp/easymd/easymd
2022/11/03 15:22:35 Listening on http://0.0.0.0:8000
Je prends un navigateur, je vais sur 0.0.0.0:8000, j'ai bien un listing du répertoire courant, je rajoute /DOC1 et cela m'affiche bien le document, mais sans les images. Et si j'essaye d'afficher les images, j'ai l'erreur interne.
Et c'est tout :-/
PS: un truc qui me vient, il n'y a pas un système de cache de build dans go qui pourrait me faire croire que je build les dernières sources mais en fait pas du tout ? (go clean ne change pas le résultat)
Le fait d'utiliser "ls" était justifié pour ne donner que le résultat escompté et dans l'ordre établi. Pour optimiser ses sorties, "find" évite de sort sa sortie.
Un exemple avec des documents créés initialement à différentes temporalités :
Pour le même résultat - celui de ne sortir que les fichiers md dans l'ordre - nous avons une commande simple qui donne satisfaction; Et de l'autre, une commande avec quasiment 2x plus d'arguments pour un résultat imparfait et non voulu.
commit cac79f1a1a6f04fc40c6106d86bf123bd4cd5b8d (HEAD -> main, tag: v0.2.1, origin/main, origin/HEAD)
Author: Constantin Catalin Bratu <ccbratu@notariato.it>
Date: Wed Nov 2 22:48:09 2022 +0100
:pencil2: fix command flags in README example
commit b0b8e0e2a7f2d4e5262bfefcb49bb51a9371d16e
Author: jppaled <22444128+jppaled@users.noreply.github.com>
Date: Thu Nov 3 00:01:15 2022 +0100
:bug: remove extra space with Sprintf
commit 7099fb19da3c4bc7801cd75e16b47360b233fe7f
Author: David Delassus <david.jose.delassus@gmail.com>
Date: Wed Nov 2 19:42:19 2022 +0100
:sparkles: serve static files if they are not markdown documents
commit 31c8d17258a68c20e2d9863aff039ce6f99d8bc9 (tag: v0.1.0)
Author: David Delassus <david.jose.delassus@gmail.com>
Date: Wed Nov 2 04:51:23 2022 +0100
:bookmark: v0.1.0
commit 65a362293fa569ad7313d484da7a3c58d76b3c62
Author: David Delassus <david.jose.delassus@gmail.com>
Date: Wed Nov 2 04:43:58 2022 +0100
:tada: create repository
Je vois bien tes derniers commits au niveau des logs et je vois bien tes modifs dans les sources en local. Pour être sûr, j'ai même refais un checkout complet.
C'est étrange si tu as un comportement totalement différent :-/
Le concept du truc me fait instantanément penser à Hugo, mis à part que ce dernier compile directement les MD en HTML (ou autre), et que tu peux les servir avec n’importe quoi qui existe déjà.
Oui, j'ai pas mal de site fait avec Hugo, mais c'est toute une pipeline a mettre en place, la je voulais juste scp le binaire sur mon serveur et partager des fichiers markdown, un genre de python -m http.server quoi.
Vois ça comme un python -m http.server qui fait le rendu des markdowns.
Les documents markdowns sont rendu à la volée lors de la requête HTTP, quasiment rien n'est personnalisable, c'est juste un binaire statique que tu dépose et lance.
Docsify a pas mal de fonctionnalité, comme la sidebar, les table of contents, un système de plugin, une navbar, etc…
De plus, cela a l'air de faire le rendu du markdown côté client.
Ici, les documents markdown sont générés à la volée, ce n'est donc pas du fichier statique. Il sont générés côté serveur, donc pas besoin de JS côté client.
easymd ne fait qu'une seule chose : servir des documents markdown, rien d'autre.
Le but n'est pas de faire un générateur de site web, juste partager des documents markdown avec des gens, pour pas avoir a sortir du Google Docs, ou autre bazooka.
Un autre objectif, c'était aussi d'avoir un binaire statique que je pouvais scp sur un serveur et lancer tel quel en tant qu'utilisateur non-root. C, C++, Rust auraient aussi fait l'affaire, mais c'était infiniment plus rapide à faire avec Go.
J'ai fait ce petit outil en 30min le temps de chercher les libs qui vont bien sur google. J'ai pas pris le temps d'aller voir l'état de l'art.
Pour l'install ça se limite à npm install
Il faut donc sur ton serveur :
NodeJS
NPM
de l'espace disque pour les 437 dépendances dans le node_modules (je troll)
Ici, je scp un binaire et le lance sur un serveur ou j'ai pas forcément accès à root (seul ma pipeline de CI/CD a accès root en général).
Je sais bien que quand on montre un projet, il faut s'attendre à ce que les gens le comparent avec d'autres. Mais ici c'est comme comparer cat et vim.
# Feedback
Posté par Prae . Évalué à 3. Dernière modification le 02 novembre 2022 à 14:03.
Quelques petits feedbacks:
- Une petite doc pour build en go (un simple "go build main.go" par exemple) dans le README.md
- La gestion des fichiers "autres" : par exemple, j'ai des images en local, le serveur http ne les délivrent pas, il serait utile d'avoir un truc du genre (pseudocode rapidos ;)
UPDATE: en fait, cela part en erreur interne quand c'est un fichier non MD, et surtout il cherche par défaut un "_index.md", pourquoi pas directement index.md ?
[^] # Re: Feedback
Posté par David Delassus (site web personnel) . Évalué à 2.
Merci pour ton retour!
Oui la doc (comme le projet) a été fait à la va-vite, le but était de partager vite fait une longue discussion sur IRC sans devoir sortir Google Docs ou une connerie du genre.
Pour les fichiers statiques j'y ai pensé aussi, rajouter une option
-s, --static
qui pointe vers un dossier statique, et servi sur/static/*
me semble sympathique. Je verrai si je peux faire ça ce soir ou ce weekend.https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
[^] # Re: Feedback
Posté par Prae . Évalué à 3. Dernière modification le 02 novembre 2022 à 14:52.
Est-ce que c'est possible que "si pas MD alors fichier static" ? plutôt que "c'est dans un répertoire static" ? parce que j'ai donné comme exemple /images/, mais j'ai d'autres répertoires avec différents éléments statiques, et pour le coup, je me dis que c'est plus simple de partir sur un "if mdfile { render }" et le reste, juste en push sur le http handler, non ?
Je me dis que si je suis dans ce cas de figure, d'autres aussi en l'utilisant;
Sinon pour le reste, c'est niquel, je trouve le rendu très proche de ce que j'ai sur d'autres renders markdown et le rendu final en html est plutôt clean.
[^] # Re: Feedback
Posté par David Delassus (site web personnel) . Évalué à 3.
C'est une solution aussi. Je vais y réfléchir un peu avant :) Merci!
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
[^] # Re: Feedback
Posté par David Delassus (site web personnel) . Évalué à 5.
Tu sera content de voir que cela a été implémenté :)
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
[^] # Re: Feedback
Posté par Prae . Évalué à 2.
Petit test avec la dernière release, j'ai toujours un souci :(
Par exemple, si j'essaye d'accéder à cette url http://localhost:8000/images/image.jpg
J'ai un
"Internal Server Error" "(c)ould not render document: open images/image.jpg/_index.md: not a directory"
J'ai loupé un truc ? :-/
[^] # Re: Feedback
Posté par David Delassus (site web personnel) . Évalué à 2.
Quelle est la commande que tu utilises pour lancer le serveur ? Et quelle est ta structure de dossier ? Je n'arrive pas à reproduire l'erreur.
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
[^] # Re: Feedback
Posté par Prae . Évalué à 3. Dernière modification le 03 novembre 2022 à 15:28.
Rien de folichon, je me place dans mon répertoire avec plein de MD, je lance easymd, sans arguments.
En version shell:
Je prends un navigateur, je vais sur 0.0.0.0:8000, j'ai bien un listing du répertoire courant, je rajoute /DOC1 et cela m'affiche bien le document, mais sans les images. Et si j'essaye d'afficher les images, j'ai l'erreur interne.
Et c'est tout :-/
PS: un truc qui me vient, il n'y a pas un système de cache de build dans go qui pourrait me faire croire que je build les dernières sources mais en fait pas du tout ? (go clean ne change pas le résultat)
[^] # Re: Feedback
Posté par barmic 🦦 . Évalué à 5.
Ça n'a rien à voir avec ton problème, mais pour lister comme ça une arborescence
find
est ton amiC'est moins rébarbatif pour et tu as moins de risque de rater des fichiers cachés par exemple.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Feedback
Posté par Prae . Évalué à -3.
Merci Captain Obvious.
Demain, tu nous apprends "tree" et "ls -R" ?
[^] # Re: Feedback
Posté par barmic 🦦 . Évalué à 4.
Je vais faire fit de la volonté d'être désobligeant.
Je ne pense pas généralement à ls récursif ça aurait permis de présenter plus d'infos pour aider au debug.
tree n'est pas installé par défaut c'est dommage d'avoir à installer quelque chose pour un usage aussi simple et ponctuel.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Feedback
Posté par Prae . Évalué à 1.
Le fait d'utiliser "ls" était justifié pour ne donner que le résultat escompté et dans l'ordre établi. Pour optimiser ses sorties, "find" évite de sort sa sortie.
Un exemple avec des documents créés initialement à différentes temporalités :
Pour le même résultat - celui de ne sortir que les fichiers md dans l'ordre - nous avons une commande simple qui donne satisfaction; Et de l'autre, une commande avec quasiment 2x plus d'arguments pour un résultat imparfait et non voulu.
[^] # Re: Feedback
Posté par David Delassus (site web personnel) . Évalué à 3.
J'arrive pas a reproduire :(
Et non, go build devrait bien te filer la bonne version, un ptit git log pour être sur?
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
[^] # Re: Feedback
Posté par Prae . Évalué à 2.
Je vois bien tes derniers commits au niveau des logs et je vois bien tes modifs dans les sources en local. Pour être sûr, j'ai même refais un checkout complet.
C'est étrange si tu as un comportement totalement différent :-/
[^] # Re: Feedback
Posté par Prae . Évalué à 2.
J'ai essayé de faire un gros
go clean -i -r -cache -testcache -modcache -fuzzcache
.j'ai bien la dernière release comprenant le
hasStaticFile()
:Nouvelle compilation, rien de nouveau, j'ai toujours les images manquantes :/
Je continue la recherche, ça doit être un truc tout idiot en plus.
# Et par rapport à Hugo ?
Posté par SpaceFox (site web personnel, Mastodon) . Évalué à 6.
Le concept du truc me fait instantanément penser à Hugo, mis à part que ce dernier compile directement les MD en HTML (ou autre), et que tu peux les servir avec n’importe quoi qui existe déjà.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Et par rapport à Hugo ?
Posté par David Delassus (site web personnel) . Évalué à 8.
Oui, j'ai pas mal de site fait avec Hugo, mais c'est toute une pipeline a mettre en place, la je voulais juste
scp
le binaire sur mon serveur et partager des fichiers markdown, un genre depython -m http.server
quoi.https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
# Docsify
Posté par El Titi . Évalué à 3.
Pourrais-tu nous presenter ce qui pourrait différencier ce projet de Docsify dans ta vision, hormis l'usage du Go ?
[^] # Re: Docsify
Posté par David Delassus (site web personnel) . Évalué à 5.
Vois ça comme un
python -m http.server
qui fait le rendu des markdowns.Les documents markdowns sont rendu à la volée lors de la requête HTTP, quasiment rien n'est personnalisable, c'est juste un binaire statique que tu dépose et lance.
Tout le contraire d'un couteau suisse quoi.
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
[^] # Re: Docsify
Posté par El Titi . Évalué à 3. Dernière modification le 02 novembre 2022 à 19:52.
Mais c'est exactement ce que fait docsify, servir des fichiers md en statique
https://docsify.js.org/#/quickstart?id=manually-preview-your-site
https://docsify.js.org/#/more-pages
La personnalisation est facultative au travers d'une CSS et de plugins à partir du fichier index.html.
https://docsify.js.org/#/configuration
Pour l'install ca de limite à un npm install
[^] # Re: Docsify
Posté par David Delassus (site web personnel) . Évalué à 8. Dernière modification le 02 novembre 2022 à 20:13.
Docsify a pas mal de fonctionnalité, comme la sidebar, les table of contents, un système de plugin, une navbar, etc…
De plus, cela a l'air de faire le rendu du markdown côté client.
Ici, les documents markdown sont générés à la volée, ce n'est donc pas du fichier statique. Il sont générés côté serveur, donc pas besoin de JS côté client.
easymd
ne fait qu'une seule chose : servir des documents markdown, rien d'autre.Le but n'est pas de faire un générateur de site web, juste partager des documents markdown avec des gens, pour pas avoir a sortir du Google Docs, ou autre bazooka.
Un autre objectif, c'était aussi d'avoir un binaire statique que je pouvais scp sur un serveur et lancer tel quel en tant qu'utilisateur non-root. C, C++, Rust auraient aussi fait l'affaire, mais c'était infiniment plus rapide à faire avec Go.
J'ai fait ce petit outil en 30min le temps de chercher les libs qui vont bien sur google. J'ai pas pris le temps d'aller voir l'état de l'art.
Il faut donc sur ton serveur :
Ici, je scp un binaire et le lance sur un serveur ou j'ai pas forcément accès à root (seul ma pipeline de CI/CD a accès root en général).
Je sais bien que quand on montre un projet, il faut s'attendre à ce que les gens le comparent avec d'autres. Mais ici c'est comme comparer
cat
etvim
.https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
[^] # Re: Docsify
Posté par El Titi . Évalué à 2.
Je t'assure que les documents sont rendus coté serveur avec du JS, les fichiers markdown apparaissent dans l'onglet network de Devtools.
Et c'est pour ça que je t'ai envoyé un lien qui montre qu'on peut les servir avec le serveur web statique de python.
Mais bonne chance pour ton projet.
[^] # Re: Docsify
Posté par El Titi . Évalué à 2.
s/rendus coté client/rendus coté client/
évidemment
[^] # Re: Docsify
Posté par El Titi . Évalué à 3.
Et sinon pour l'aspect déploiement tout en un avec scp, il suffit d'uploader binserve et l'arborescence docs et ça le fait.
Si tu ne veux pas installer avec npm tu récupères le script depuis le cdn et tu l'insères dans ton index.html.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.