• # Feedback

    Posté par  . É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 ?

    • [^] # Re: Feedback

      Posté par  (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

      • [^] # Re: Feedback

        Posté par  . É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  (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

        • [^] # Re: Feedback

          Posté par  (site web personnel) . Évalué à 5.

          Tu sera content de voir que cela a été implémenté :)

          https://link-society.com - https://kubirds.com

          • [^] # Re: Feedback

            Posté par  . É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  (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

              • [^] # Re: Feedback

                Posté par  . É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)

                • [^] # Re: Feedback

                  Posté par  . Évalué à 5.

                  Ça n'a rien à voir avec ton problème, mais pour lister comme ça une arborescence find est ton ami

                  % cd mongrosrepertoireavecpleindemd
                  % find
                  .
                  ./DOC1.md
                  ./DOC2.md
                  ./DOC3.md
                  ./images
                  ./images/image1.jpg
                  ./images/image2.jpg
                  ./images/image3.jpg
                  

                  C'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  . Évalué à -3.

                    Merci Captain Obvious.
                    Demain, tu nous apprends "tree" et "ls -R" ?

                    • [^] # Re: Feedback

                      Posté par  . É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  . É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 :

                        $ find . -name "*.md"
                        ./DOC3.md
                        ./DOC7.md
                        ./DOC6.md
                        ./DOC2.md
                        ./DOC8.md
                        ./DOC5.md
                        ./DOC1.md
                        
                        $ ls *.md
                        DOC1.md
                        DOC2.md
                        DOC3.md
                        DOC4.md
                        DOC5.md
                        DOC6.md
                        DOC7.md
                        DOC8.md
                        

                        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  (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

                  • [^] # Re: Feedback

                    Posté par  . Évalué à 2.

                    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 :-/

                    • [^] # Re: Feedback

                      Posté par  . É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() :

                      $ grep -r hasStaticFile *
                      Binary file easymd matches
                      pkg/server/static.go:func hasStaticFile(rootDocument string, urlPath string) (string, bool) {
                      pkg/server/main.go:     if path, found := hasStaticFile(rootDocument, r.URL.Path); found {
                      

                      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  (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  (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 de python -m http.server quoi.

      https://link-society.com - https://kubirds.com

  • # Docsify

    Posté par  . É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  (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

      • [^] # Re: Docsify

        Posté par  . É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  (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.


          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.

          https://link-society.com - https://kubirds.com

          • [^] # Re: Docsify

            Posté par  . É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  . Évalué à 2.

              s/rendus coté client/rendus coté client/
              évidemment

            • [^] # Re: Docsify

              Posté par  . É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.