@Mordechay https://github.com/httplib2/httplib2/blob/master/httplib2/cacerts.txt
תמיד אתה יכול לערוך את זה ולהוסיף ידנית את התעודות של נטפרי
@Mordechay https://github.com/httplib2/httplib2/blob/master/httplib2/cacerts.txt
תמיד אתה יכול לערוך את זה ולהוסיף ידנית את התעודות של נטפרי
@Mordechay
הבעיה מוכרת ומתועדת ב-GitHub Issue #2.
בניגוד ל-requests שמשתמש ב-REQUESTS_CA_BUNDLE, ל-httplib2 יש משתנה סביבה משלו: HTTPLIB2_CA_CERTS (נוסף ב-PR
#117, גרסה v0.12.0).
הפתרון (בלי לשנות קוד)
cat /path/to/netfree.pem $(python3 -c "import httplib2; print(httplib2.CA_CERTS)") > ~/combined-ca.pem
export HTTPLIB2_CA_CERTS=~/combined-ca.pem
python3 -c "import httplib2; print(httplib2.Http().request('https://www.googleapis.com')[0].status)"
חשוב: הקובץ חייב להכיל גם את תעודת Netfree וגם את תעודות ה-CA הרגילות, אחרת אתרים אחרים יפסיקו לעבוד.
מקורות
תשובת קלוד קוד לאחר מחקר על הספריה
האם זה עוזר לך?
@י.פל. כתב באתר לחיפוש חברותא:
אני ממש ממש אשמח ( @dovid לפתוח שרשור?), גם הקוד עצמו זמין בגיטהאב, אבל אני לא יודע אם הגיוני לתת את הקוד ולחפש פרצות...
כל עוד שהתוכנה לא נמכרת בתשלום
מה הצד הכי קטן לא לשחרר את הקוד לכל מי שיכו לעבור עליו
ולתת לאנשים לשפר אותו?
לאנשים מכל העולם
@מד לא התייחסת לזה כמובן
#!/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!"
@מד עובד לי חלק
למה החלטת שזה לא יעבוד??
@מד https://github.com/EliShteinman/vue-docs-offline/tree/feature/offline-docker
תבדוק את זה
או מדוקר האב
https://hub.docker.com/r/a0533057932/vue-docs-offline
באם אתה רוצה אתה יכול להשוות למיין ולראות את השיוניים שנעשו ולהבין מה לעשות בפרוייקטים אחרים מהסוג הזה
@eido כתב בהבנת solid וclean code:
כתב בהבנת solid וclean code:
ב. איך אני מונע ממישהו להתשמש בפונקצית הוספת ערך הכללית שכוללת את הולידציה וכו' ולא להשתמש בפונקצית ההוספה ישירות, דבר שבוא אסון למסד נתונים?
אתה כמובן משתמש בקלאסים וכך יש לך פונקציית הכנסה חיצונית
שהיא רק קונטרולר כלומר שורה ראשונה קוראת לפונקציה או קלאס של ולידציה שורה שניה קוראת לפונקציה או קלאס של הכנסה
@pcinfogmach כתב בהבנת solid וclean code:
כיצד נכתוב קוד שיהיה ברור ומובנה עד כדי כך שגם כלי בינה מלאכותית יוכלו לנתח ולתחזק אותו מבלי ליצור חוסר סדר.
לענ"ד בלתי אפשרי לצערי... הם לא יודעים מימינם ומשמאלם.
אין לי מושג מול מי השתמשת אבל היום הAI יודעים טוב מאד מה היא פונקציה טובה ומה לא והם יודעים לתת צינוים לכל פונקציה
ויודעים לשפר קוד שנכתב עם כללים וסדר ברור בלי ליצור בלאגן בכלל
@pcinfogmach כתב בהבנת solid וclean code:
ש לשאול:
מה ישרת אותי ואת המערכת בצורה מיטבית לאורך זמן?
מה יסייע בניווט בקוד ובהכנסת שינויים בצורה מסודרת?
מה יאפשר למערכת לבצע את ייעודה מבלי לייצר בעיות לוגיות או תלותיות מיותרות?אם נשתמש בדוגמה מעולמנו העכשווי: כיצד נכתוב קוד שיהיה ברור ומובנה עד כדי כך שגם כלי בינה מלאכותית יוכלו לנתח ולתחזק אותו מבלי ליצור חוסר סדר.
ובשני מילים: "בהירות מודולרית"
ועוד הערה קטנה מותר לך להחליט מתי ליישם בהירות זו ומתי לא כל עוד שהחלטת כך במודע ולא מתוך עצלנות
ממקומות אחרים ומשאלה את הבינה מלאכותית נשמע שזה הסטנדרט וכך כותבים היום. עכשיו נשמע שלא?
זה אכן הסטנדרט הנפוץ ביותר לקוד שיתופי כי כך ניתן לתחזק אותו במקביל ובזמנים שונים
לכתוב פונקציה אחת גדולה שעושה הכל זה נהדר בהתחלה כל עוד אתה המתחזק היחיד והיא לא רמורה להשתנות לעולם
@dovid לעצם החילוק שלך
אתה קצת נכנס לחלק שקלאס עושה אחריות אחת
פונקציה עושה דבר אחד, דבר אחד בלבד, ועושה אותו היטב
זה לכל הפחות מה שלימדו אותי בקשר לקלין קוד (וכך גם רושם אנשל בוב) (איתור חריגות וחוסרים אני יחלק ל2 עם פונקציה שקוראת לשניהם)
@dovid אכן
אבל כמו שתארת
זה היוצא מהכלל
ככלל
שאתה רואה כזה מילה בשם פונקציה אתה מבין שיש בעיה
כחריג לזה זה פונקציה קונטרולר אבל אז אני בדרך כלל מוצא שם יותר מתאים מאשר להשתמש בand
@dovid כתב בהבנת solid וclean code:
SaveAndRestoreAndNotify
הייתי מחדד יותר
במקרה שיש לך and בשם הפונקציה עברת על הכלל
@אף-אחד-3 כאדם שמכיר את התחום אתה אינך מכיר אנדרואיד
ברור שמערכת על מכשיר סיני החסימה שלה שווה X
אולם אם תיקח מכשיר איכותי של חברה איכותית אתה יכול לחסום אותו ברמה טוטאלית שכל ניסיון לצרוב גרסה שונה יהפוך את המכשיר ללבנה
וAI לא יעזור פה
וגם לא הבחור התורן
@מעמד הנקודה בוועדה היא לא האם הפלאפון חוסום הרמטי אלא האם אני אוכל לקנות לא כשר שנראה כמוהו
מה יועיל שנביא לך את מנכ"ל סמסונג ואת כל צוות הפיתוח שיחסמו את S23 למשל לחלוטין מכל וכל אם הם יאמרו שאני יכול לקנות S23 לא כשר?
@מעמד אני לא מצליח להבין מה הולך פה מקצה לקצה
אתה מחפש מה בדיוק?
כלומר אתה שאלת שאלה האם הדבר ניתן והתשובה יהא כמובן שכן
אתה רוצה אדם שכיום בתחום ולבקש ממנו להתנדב ליצור קשר עם אדם בפורום אחר?
https://mitmachim.top/user/מישהו12 הוא בתחום
@מעמד כמובן שאפשר
וברמה מוחלטת
האם זה יעזור למכשיר סיני שעולה 70 דולר?
כנראה שלא
אבל כל המכשירים האיכותיים ניתנים לחסימה ברמה מוחלטת
@eido תשובה מכבוד הרב גימני בנו של הרב גוגל
https://g.co/gemini/share/f4c3d868b9a6
@eido latest בזה תשתמש ובעזרת ה' כאשר תעמיק עוד בידע ובענין תתחיל ללמוד על ההבדלים הדקים בין התמונות השונות