דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תוכנה
  3. פרוקסי בשביל הרצת אתר אופליין

פרוקסי בשביל הרצת אתר אופליין

מתוזמן נעוץ נעול הועבר תוכנה
11 פוסטים 4 כותבים 74 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מדמ מחובר
    מדמ מחובר
    מד
    כתב נערך לאחרונה על ידי מד
    #1

    לפעמים כשאני במקום שאין אינטרנט (ואני לא יכול להמשיך בעבודה שלי) אני מנצל את הזמן בלימוד קצת תיכנות.

    אז כרגע אני לומד vue.
    הורדתי את הdocs והרצתי אותה, אך לא עובד אופליין...
    כי הוא צריך להוריד את הספרייה של vue מ-CDN חיצוני.

    אז הרצתי אותה אונליין, ככה הוא הוריד את הספרייה, ואח"כ זה עבד גם באופליין על ידי הקאש.

    אבל זה:

    • לא יציב. (נמחק מהר מאיליו)
    • לא שלם, יש עוד הרבה קבצי JS וCSS ועוד ספציפיים לכל דף. (ואני לא יכנס בכל דף כל פעם שאני הולך אופליין)

    אז אני רוצה ליצור פרוקסי קטן שישמור כל הקבצים החיצוניים בקאש שלו.
    דהיינו שהוא ילכוד את כל הקריאות החיצוניות, ישמור את הקבצים בקאש שלו, וישרת אותם לאחר כך.
    וכשאני אופליין, אם נשלח קריאה לקובץ שאינו בקאש שלו, הוא ירשום את זה ויוריד אותו כשאני חוזר אונליין.

    אני חושב ליצור אותו בעזרת AI (שכל הרעיון בזכותו..), אבל זה גם דורש זמן.
    אז אני שואל פה אם יש ידיעה למישהו על תוכנת פרוקסי כזו מן המוכן.
    (לא סקוויד/נגיקס וכדומה, אלא משהו פשוט וקל (קל להגדרה, קל לשימוש, וקל על המחשב))

    תודה.

    תגובה 1 תגובה אחרונה
    1
    • dovidD מנותק
      dovidD מנותק
      dovid
      ניהול
      כתב נערך לאחרונה על ידי dovid
      #2

      אני חושב שספציפית עבור VUE כל הצורך מיותר, אני חושב שאפשר לשנות את ההפניה מהCDN לתיקיית הספריה שהותקנה על ידי מנהל החבילות.
      אגב שווה לך להכיר כלי שהייתי משתמש בו הרבה:
      https://devdocs.io/
      הכל שמה ניתן להתקנה אופליין לגמרי.

      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
      מדמ תגובה 1 תגובה אחרונה
      5
      • dovidD dovid

        אני חושב שספציפית עבור VUE כל הצורך מיותר, אני חושב שאפשר לשנות את ההפניה מהCDN לתיקיית הספריה שהותקנה על ידי מנהל החבילות.
        אגב שווה לך להכיר כלי שהייתי משתמש בו הרבה:
        https://devdocs.io/
        הכל שמה ניתן להתקנה אופליין לגמרי.

        מדמ מחובר
        מדמ מחובר
        מד
        כתב נערך לאחרונה על ידי
        #3

        @dovid כתב בפרוקסי בשביל הרצת אתר אופליין:

        אני חושב שספציפית עבור VUE כל הצורך מיותר, אני חושב שאפשר לשנות את ההפניה מהCDN לתיקיית הספריה שהותקנה על ידי מנהל החבילות.

        לא מצאתי הפניה נורמלי, רק כמו:
        https://unpkg.com/vue@${vueVersion.value || defaultVersion}/dist/vue.esm-browser.js
        במקרה הקודם (כשהקאש נמחק) ערכתי קובץ הHOSTS לשרת לוקלי שהגשתי דרכו את הקובץ, אבל אחר כמה דקות זה לא עבד, כי כל כמה דפים משתמשים בגירסה אחרת של VUE (כלומר vue@3.5.28 / vue@3.5.30).
        הגשתי אז אותו קובץ דרך כמה קישורים... אבל כנ"ל זה מאוד לא יציב ומאוד לא נוח, וזה הכל רק לגבי הספרייה המרכזית. ציינתי למעלה שמדובר בעוד הרבה קבצים שונים.

        אגב שווה לך להכיר כלי שהייתי משתמש בו הרבה:
        https://devdocs.io/
        הכל שמה ניתן להתקנה אופליין לגמרי.

        אכן כלי מצויין, מכירו מכבר. אבל הכל שם מעורב, לא רואים התחלה וסוף. גם לא כולל playground.
        מתאים יותר לרפרנס, לא ללימוד מאפס.
        (ואגב יש אותו גם כתוכנה להורדה, מעלתה שהתוכן יותר שמור נגד מחיקה אוטומטי כי זה סוכ"ס קאש)

        היוצא, עדיין אני מחפש פתרון נוח קל ומהיר בשביל הרצת אתרים כאלו אופליין באופן מושלם.

        אם אני לא ימצא, אני יעשה משהו בעצמי, אני רק רוצה לחסוך את העבודה במדה שיש.

        תגובה 1 תגובה אחרונה
        0
        • צדיק תמיםצ מנותק
          צדיק תמיםצ מנותק
          צדיק תמים
          כתב נערך לאחרונה על ידי
          #4

          תנסה את httrack תוכנה מיושנת אבל עובדת מעולה לאתרים שלא תלויים ברנדור בצד לקוח עם JS

          Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
          טיפים

          מדמ תגובה 1 תגובה אחרונה
          2
          • צדיק תמיםצ צדיק תמים

            תנסה את httrack תוכנה מיושנת אבל עובדת מעולה לאתרים שלא תלויים ברנדור בצד לקוח עם JS

            מדמ מחובר
            מדמ מחובר
            מד
            כתב נערך לאחרונה על ידי
            #5

            @צדיק-תמים אני צריך את זה לאתר שכן צריך רינדור בצד לקוח בגדול.
            לא נראה לי ששייך לפתור את הבעיה באופן מושלם בלי פרוקסי.

            A0533057932A תגובה 1 תגובה אחרונה
            0
            • מדמ מד

              @צדיק-תמים אני צריך את זה לאתר שכן צריך רינדור בצד לקוח בגדול.
              לא נראה לי ששייך לפתור את הבעיה באופן מושלם בלי פרוקסי.

              A0533057932A מחובר
              A0533057932A מחובר
              A0533057932
              כתב נערך לאחרונה על ידי A0533057932
              #6

              @מד https://github.com/EliShteinman/vue-docs-offline/tree/feature/offline-docker
              תבדוק את זה
              או מדוקר האב
              https://hub.docker.com/r/a0533057932/vue-docs-offline

              באם אתה רוצה אתה יכול להשוות למיין ולראות את השיוניים שנעשו ולהבין מה לעשות בפרוייקטים אחרים מהסוג הזה

              מדמ תגובה 1 תגובה אחרונה
              2
              • A0533057932A A0533057932

                @מד https://github.com/EliShteinman/vue-docs-offline/tree/feature/offline-docker
                תבדוק את זה
                או מדוקר האב
                https://hub.docker.com/r/a0533057932/vue-docs-offline

                באם אתה רוצה אתה יכול להשוות למיין ולראות את השיוניים שנעשו ולהבין מה לעשות בפרוייקטים אחרים מהסוג הזה

                מדמ מחובר
                מדמ מחובר
                מד
                כתב נערך לאחרונה על ידי
                #7

                @A0533057932 כתב בפרוקסי בשביל הרצת אתר אופליין:

                באם אתה רוצה אתה יכול להשוות למיין ולראות את השיוניים שנעשו ולהבין מה לעשות בפרוייקטים אחרים מהסוג הזה

                בדקתי באמצעות winmerge ולא מצא שום חילוק לבד מקבצי הדוקר והreadme 🤔
                אין לי דוקר ואני לא הולך להתקין אותו על מחשב החלש שלי, אז לא נראה שפתרת את הבעיה.
                לדוגמא, ראה אם ה-preview שבדף הזה vuejs.org/tutorial/#step-1 (כלומר localhost:8080/tutorial/#step-1) עובד אצלך.

                A0533057932A תגובה 1 תגובה אחרונה
                0
                • מדמ מחובר
                  מדמ מחובר
                  מד
                  כתב נערך לאחרונה על ידי
                  #8

                  טוב חברים, אני כבר התחלתי לעשות משהו. אני אעדכן בל"נ.

                  תגובה 1 תגובה אחרונה
                  1
                  • מדמ מד

                    @A0533057932 כתב בפרוקסי בשביל הרצת אתר אופליין:

                    באם אתה רוצה אתה יכול להשוות למיין ולראות את השיוניים שנעשו ולהבין מה לעשות בפרוייקטים אחרים מהסוג הזה

                    בדקתי באמצעות winmerge ולא מצא שום חילוק לבד מקבצי הדוקר והreadme 🤔
                    אין לי דוקר ואני לא הולך להתקין אותו על מחשב החלש שלי, אז לא נראה שפתרת את הבעיה.
                    לדוגמא, ראה אם ה-preview שבדף הזה vuejs.org/tutorial/#step-1 (כלומר localhost:8080/tutorial/#step-1) עובד אצלך.

                    A0533057932A מחובר
                    A0533057932A מחובר
                    A0533057932
                    כתב נערך לאחרונה על ידי
                    #9

                    @מד עובד לי חלק
                    למה החלטת שזה לא יעבוד??

                    מדמ תגובה 1 תגובה אחרונה
                    0
                    • A0533057932A A0533057932

                      @מד עובד לי חלק
                      למה החלטת שזה לא יעבוד??

                      מדמ מחובר
                      מדמ מחובר
                      מד
                      כתב נערך לאחרונה על ידי מד
                      #10

                      @A0533057932 ה-preview שבדף localhost:8080/tutorial/#step-1 עובד אצלך חלק? בלי אינטרנט? מוזר מאוד. כתבתי למעלה למה.

                      A0533057932A תגובה 1 תגובה אחרונה
                      0
                      • מדמ מד

                        @A0533057932 ה-preview שבדף localhost:8080/tutorial/#step-1 עובד אצלך חלק? בלי אינטרנט? מוזר מאוד. כתבתי למעלה למה.

                        A0533057932A מחובר
                        A0533057932A מחובר
                        A0533057932
                        כתב נערך לאחרונה על ידי
                        #11

                        @מד לא התייחסת לזה כמובן

                        #!/bin/bash
                        set -euo pipefail
                        
                        # =============================================================================
                        # patch-offline.sh
                        # Patches the Vue.js docs for fully offline operation:
                        #   - Downloads CDN libraries locally
                        #   - Removes analytics, ads, external search
                        #   - Adds VitePress local search
                        # =============================================================================
                        
                        PROJECT_DIR="${1:-.}"
                        PUBLIC_DIR="${PROJECT_DIR}/src/public"
                        OFFLINE_LIBS_DIR="${PUBLIC_DIR}/offline-libs"
                        
                        echo "==> Patching project for offline mode..."
                        
                        # -----------------------------------------------------------------------------
                        # 1. Download CDN libraries used in REPL import-maps
                        # -----------------------------------------------------------------------------
                        echo "==> Downloading CDN libraries for offline REPL..."
                        mkdir -p "${OFFLINE_LIBS_DIR}"
                        
                        download_cdn() {
                          local url="$1"
                          local dest="$2"
                          echo "    Downloading: ${url}"
                          curl -sL --fail --retry 3 "${url}" -o "${dest}" || {
                            echo "    WARNING: Failed to download ${url}"
                            return 1
                          }
                        }
                        
                        download_cdn \
                          "https://cdn.jsdelivr.net/npm/marked/+esm" \
                          "${OFFLINE_LIBS_DIR}/marked.esm.js"
                        
                        download_cdn \
                          "https://cdn.jsdelivr.net/npm/lodash-es/+esm" \
                          "${OFFLINE_LIBS_DIR}/lodash-es.esm.js"
                        
                        download_cdn \
                          "https://cdn.jsdelivr.net/npm/js-confetti/+esm" \
                          "${OFFLINE_LIBS_DIR}/js-confetti.esm.js"
                        
                        VUE_VERSION=$(node -e "
                        const pkg = require('${PROJECT_DIR}/node_modules/vue/package.json');
                        console.log(pkg.version);
                        ")
                        echo "    Vue version detected: ${VUE_VERSION}"
                        
                        download_cdn \
                          "https://unpkg.com/vue@${VUE_VERSION}/dist/vue.esm-browser.js" \
                          "${OFFLINE_LIBS_DIR}/vue.esm-browser.js"
                        
                        # -----------------------------------------------------------------------------
                        # 2. Patch import-map.json files to use local paths
                        # -----------------------------------------------------------------------------
                        echo "==> Patching import-map.json files..."
                        
                        cat > "${PROJECT_DIR}/src/examples/src/markdown/import-map.json" << 'EOF'
                        {
                          "imports": {
                            "marked": "/offline-libs/marked.esm.js",
                            "lodash-es": "/offline-libs/lodash-es.esm.js"
                          }
                        }
                        EOF
                        
                        cat > "${PROJECT_DIR}/src/examples/src/list-transition/import-map.json" << 'EOF'
                        {
                          "imports": {
                            "lodash-es": "/offline-libs/lodash-es.esm.js"
                          }
                        }
                        EOF
                        
                        cat > "${PROJECT_DIR}/src/tutorial/src/step-15/import-map.json" << 'EOF'
                        {
                          "imports": {
                            "js-confetti": "/offline-libs/js-confetti.esm.js"
                          }
                        }
                        EOF
                        
                        # -----------------------------------------------------------------------------
                        # 3. Patch REPL components to use local Vue build
                        # -----------------------------------------------------------------------------
                        echo "==> Patching REPL components to use local Vue..."
                        
                        sed -i 's|`https://unpkg.com/vue@${[^}]*}/dist/vue.esm-browser.js`|`/offline-libs/vue.esm-browser.js`|g' \
                          "${PROJECT_DIR}/src/examples/ExampleRepl.vue" \
                          "${PROJECT_DIR}/src/tutorial/TutorialRepl.vue"
                        
                        # -----------------------------------------------------------------------------
                        # 4. Patch .vitepress/config.ts
                        # -----------------------------------------------------------------------------
                        echo "==> Patching VitePress config..."
                        
                        CONFIG_FILE="${PROJECT_DIR}/.vitepress/config.ts"
                        
                        node -e "
                        const fs = require('fs');
                        let c = fs.readFileSync('${CONFIG_FILE}', 'utf-8');
                        
                        // Remove Fathom Analytics script block
                        c = c.replace(/,?\s*\[\s*'script',\s*\{[^}]*cdn\.usefathom\.com[^}]*\}\s*\]/s, '');
                        
                        // Remove Bitterbrains ad script block
                        c = c.replace(/,?\s*\[\s*'script',\s*\{[^}]*media\.bitterbrains\.com[^}]*\}\s*\]/s, '');
                        
                        // Remove preconnect to automation.vuejs.org
                        c = c.replace(/,?\s*\[\s*'link',\s*\{[^}]*automation\.vuejs\.org[^}]*\}\s*\]/s, '');
                        
                        // Remove carbonAds config
                        c = c.replace(/,?\s*carbonAds:\s*\{[^}]*\}/s, '');
                        
                        // Remove algolia config (multiline with nested object)
                        c = c.replace(/,?\s*algolia:\s*\{[^}]*searchParameters:\s*\{[^}]*\}\s*\}/s, '');
                        
                        // Add local search provider (insert after extends: baseConfig,)
                        if (!c.includes(\"search:\")) {
                          c = c.replace(
                            'extends: baseConfig,',
                            'extends: baseConfig,\\n\\n  search: {\\n    provider: \\'local\\'\\n  },'
                          );
                        }
                        
                        fs.writeFileSync('${CONFIG_FILE}', c, 'utf-8');
                        console.log('    Config patched successfully');
                        "
                        
                        # -----------------------------------------------------------------------------
                        # 5. Patch sponsors.ts to disable external fetch
                        # -----------------------------------------------------------------------------
                        echo "==> Patching sponsors to disable external fetch..."
                        
                        SPONSORS_FILE="${PROJECT_DIR}/.vitepress/theme/components/sponsors.ts"
                        sed -i 's|`https://automation.vuejs.org`|`/sponsors-stub`|g' "${SPONSORS_FILE}"
                        
                        # Create a local stub data.json for sponsors
                        mkdir -p "${PUBLIC_DIR}/sponsors-stub"
                        cat > "${PUBLIC_DIR}/sponsors-stub/data.json" << 'SPONSOREOF'
                        {
                          "special": [],
                          "platinum": [],
                          "platinum_china": [],
                          "gold": [],
                          "silver": [],
                          "bronze": []
                        }
                        SPONSOREOF
                        
                        echo "==> Offline patching complete!"
                        
                        
                        תגובה 1 תגובה אחרונה
                        0
                        תגובה
                        • תגובה כנושא
                        התחברו כדי לפרסם תגובה
                        • מהישן לחדש
                        • מהחדש לישן
                        • הכי הרבה הצבעות


                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום