לגבי אינדקס על שדה בוליאני: זה כדאי רק במקרה שהסינון על העמודה יחזיר רק מיעוט מהשורות (רוב המוחלט של השורות הוא true או false) וכדאי לאנדקס רק השורות עם הערך הפחות נפוץ (true או false), דהיינו להוסיף where לפקודה של יצירת האינדקס
עיין https://stackoverflow.com/a/42972924
yossiz
-
מתי להגדיר אינדקס במסד נתונים -
מתי להגדיר אינדקס במסד נתוניםיש תורה שלימה שאי אפשר למסור על רגל אחת (גם אם הייתי מכיר את זה היטב)
הכלל הבסיסי הוא שכדאי לאנדקס במקרה שאינדקס יגרום לחסכון גדול בשיעור הקריאה מהדיסק שהמסד צריך כדי לענות על השאילתה
המקרה הקלאסי הוא כאשר בלי אינדקס המסד יצטרך לעבור על כל הטבלה כדי לענות על השאלה, ועם אינדקס הוא יצטרך קריאה של רק אחוז קטן מהטבלה
למשל, שאילתה על טבלה גדולה שמחזירה רק שורות מועטות מתוך הטבלה על ידי סינון עמודה
דוגמאות למקרים שלא צריכים אינדקס:- שאילתה שמחזירה את רוב שורות הטבלה (גם עם אינדקס אתה בכל מקרה קורא את רוב הטבלה)
- שאילתה שמחזירה כמה שורות לפי מפתח ראשי עם
WHERE
על עמודה נוספת (גם בלי אינדקס על העמודה המסננת, שליפת שורה לפי מפתח ראשי הוא מהיר)
אני ממליץ בשלב הזה לטפל נקודתית בשאילתות שאתה רואה שהם איטיים, ולבדוק אם אפשר לשפר אותם על ידי אינדקס ולא סתם לחפש ליצור אינדקסים
לפעמים AI מצליח לענות תשובה נכונה אם אתה שואל אותו "איזה אינדקס כדאי לעשות לשפר את הביצועים של שאילתה זו" -
תוכנה חינמית לשליטה מרחוק, לא אני דסק -
לוקליזציה בhebcal/core בnodeconst { HDate, Locale, gematriya } = require("@hebcal/hdate"); Locale.useLocale("he-x-nonikud"); const convertToHebrewDate = (dateString) => { const date = new Date(dateString); const hDate = new HDate(date); return `${gematriya(hDate.getDate())} ב${Locale.lookupTranslation( hDate.getMonthName() )} ${gematriya(hDate.getFullYear())}`; }; console.log(convertToHebrewDate("2021-09-07")); // א׳ בתשרי תשפ״ב
-
בכניסה לphpmyadmin מקבל שגיאה שהקוקיז לא הופעל@ששא לא בדיוק ענית על השאלות
בכל מקרה, ייתכן שאם תגדיר את הקונפיגרציהPmaAbsoluteUri
לערך הנכון (https://forum.*****.ovh/project
) זה יפתור את הבעיה
https://docs.phpmyadmin.net/en/latest/config.html -
בכניסה לphpmyadmin מקבל שגיאה שהקוקיז לא הופעל@ששא איך בדיוק התקנת את phpmyadmin?
ואיך בדיוק אתה ניגש אליה? -
אפשר לעשות קישור למלל מסויים בדף, הידעתם?סוף סוף נוסף תמיכה לתכונה בגירסת פיירפוקס האחרונה
עדיין צריך תוסף כדי להעתיק קישור לטקסט מסויים ללוח -
התקנת Liver Server++@שלום-עולם-0 תוריד מפה
-
התקנת Liver Server++@שלום-עולם-0 התשובה של @Shloimy נכון באופן כללי, אבל בדיוק פה ההתקנה תיכשל בשלב ה-
npm install
הקוד ישן ולא מתוחזק וכבר לא עובד
יש תוסף בחנות התוספים של vscode שנראה שנותן אותו יתרון: yandeu.five-server תבדוק אם זה נותן לך מה שאתה רוצה -
אתגר | האם אפשר להחזיר את התהליך אחורה?@אוריי
מן הסתם הסיכון באפליקציה כמו שלך קטן יחסית, אני מניח שזה לא להפצה המונית
אני עדיין טוען שהדבר האידיאלי הוא להשתמש באלגוריתם גיבוב מוכר וידוע כבטוח, ציינתי כמה חולשות באלגוריתם שלך, ואולי יש נוספות, אבל אפשר להסתכל על זה בהקשר הכללי של אפליקציה עם סיכון יחסית קטן
אני מבין שקשה לך למצוא פתרון חוצה מחשבים/מערכות הפעלה שיעבוד במאה אחוז, זו כבר שאלה ספציפית לגבי אקסס שאין לי את הידע לענות -
אתגר | האם אפשר להחזיר את התהליך אחורה? -
אתגר | האם אפשר להחזיר את התהליך אחורה?@אוריי כתב באתגר | האם אפשר להחזיר את התהליך אחורה?:
האם אפשר לדבג אותם אחורה או שכתבתי מעולה
אני רוצה להציע אפשרות שלישית: ייתכן שקשה או בלתי אפשרי לדבג אחורה, אבל לא כתבת מעולה
קיבלתי מרבותי: "לא ממציאים שיטות הצפנה מקוריות"
ההסבר: (מדובר כאשר ההצפנה הוא לצרכי אבטחה) אבטחה הוא נושא רגיש, והצפנה הוא נושא מתמטי קשה כאשר פרט קטן יכול לשבש את כל הבטיחות של האלגוריתם. היו מקרים של אלגוריתמים שמומחים גדולים חשבו שהם טובים עד שהגיע אחד והצביע על חולשה. לכן סומכים על אלגוריתמים שעברו ביקורת של הרבה אנשים חכמים מאוד ולא מנסים להמציא משהו מקורי משלנו.לגבי עצם האתגר: גם בלי הרבה חישובים לכאורה אפשר להחליט שאי אפשר להחזיר את התהליך אחורה לגמרי מסיבה פשוטה: יש יותר מקלט אחד שיתאים לפלט של האלגוריתם. זה יכול להיות קצת בעיה באלגוריתם לשמירת סיסמאות...
אני לא טוב במתמטיקה ולא מומחה בקריפטולוגיה (וגם עצלן, אם אפשר להעביר ביקורת בלי להתאמץ עם חישובים מתמטיים, למה לא...), אבל חולשות שאני רואה מיד (לעומת אלגוריתם גיבוב בטיחותי כמו SHA1 לדוגמה)
- מה שהזכרתי למעלה: לכאורה יש אפשרות קלה מדי להתנגשויות (לא עיינתי כל הצורך בזה)
- האורך של הפלט תמיד זהה לאורך של הקלט, דבר שמגלה מידע חשוב לפורץ
- שינוי של חלק אחד של הקלט משנה רק מקומית את הפלט, תוקף יכול לזהות איזה מחרוזות יש להם חלקים זהים
בכל מקרה, יהיה מעניין גם לקבל תשובה לאתגר המקורי שלך: נסיון להחזיר אחורה את התהליך בלי brute force
אגב, הדבר הראשון שעשיתי כאשר קראתי את השאלה זה לבקש מ-chatGPT לתרגם את הקוד לשפה יותר קריאה...
-
עדכון אטומי בmongodb@ivrtikshoret בעניותי עוד לא הבנתי למה אי אפשר להשתמש ב-
inc
הבדיקה אם התאריך פג לא צריך להיות אטומי -
שאלה - האם ניתן להגדיר לאפלקציית גוגל צאט' מייל קבוע להצגת הצאטים?בינתיים מצאתי את זה
https://github.com/karlhorky/pwa-tricks
פתרונות מסובכים -
מחלקה פשוטה ב-JS לטפל בחוסר הודאות בקיום localstorageקיבלתי הרבה דיווחי שגיאות בקוד פרונטאנד מסויים בגלל מצבים שונים שבהם localstorage לא זמין, למשל בדפדפנים מסויימים במצב גלישה בסתר, או גירסאות מסויימות של דפדפנים למובייל וכדומה
אז כתבתי את המחלקה הזאת כמעטפה ל-localstorage
אשמח לקבל שיפוריםexport class Storage { static #nullStorage = { getItem() {}, setItem() {}, removeItem() {} }; static #cookieBasedStorage = { getItem(key, defaultValue) { // https://stackoverflow.com/a/64472572 return Object.fromEntries(document.cookie.split('; ').map((v) => v.split(/=(.*)/s).map(decodeURIComponent)))[key] ?? defaultValue; }, setItem(key, value) { document.cookie = `${key}=${value}`; }, removeItem(key) { document.cookie = `${key}=; expires=Thu, 01 Jan 1970 00:00:00 UTC`; } }; static #storage = this.#storageAvailable(localStorage) ? localStorage : this.#storageAvailable(this.#cookieBasedStorage) ? this.#cookieBasedStorage : this.#nullStorage; static #storageAvailable(storage) { // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API#Feature-detecting_localStorage try { const x = '__storage_test__'; storage.setItem(x, x); storage.removeItem(x); return true; } catch (e) { return false; } } static getItem(key, defaultValue) { return this.#storage.getItem(key) ?? defaultValue; } static setItem(key, value) { this.#storage.setItem(key, value); } static removeItem(key) { this.#storage.removeItem(key); } }
-
הגדרת מתודה של אובייקט ב-JS@dovid כתב בהגדרת מתודה של אובייקט ב-JS:
לא הייתה פה שאלה מעשית
אכן
הקוד הזה בלבל אותי לכמה דקות טובות
בניגוד למושכל הראשון שלי (ומן הסתם בניגוד לכוונת המתכנת שכתב את זה), המילהfunction
בקוד הזה הוא לא מילת מפתח אלא שם של שדה.אגב, בעוד שאני עובד על הבנת הקוד ראיתי דבר שלא ידעתי מקודם:
יש שני הבדלים ב-JS בין פונקציה למתודהפונקציה
let x = { foo: function() {} }
- יכול להיות constructor. כלומר, הקוד הזה לא יזרוק שגיאה:
new x.foo
- לא יכול להשתמש במילת המפתח
super
מתודה
let x = { foo() {} }
- לא יכול להיות בנאי, הקוד:
new x.foo
יזרוק שגיאה - יכול להשתמש במילת המפתח
super
כדי לציין את הפרוטוטייפ שלו. האיגוד שלsuper
לפורטוטייפ הוא סטטי וזה לא משתנה לפי צורת הקריאה של הפונקציה, בניגוד לאיגוד שלthis
- יכול להיות constructor. כלומר, הקוד הזה לא יזרוק שגיאה:
-
הגדרת מתודה של אובייקט ב-JSנתקלתי בקוד המוזר הזה היום:
let o = { async function () { // do stuff } }
איזה שדה יש בתוך אובייקט
o
? איך קוראים לפונקציה הלכאורה אנונימית הזו? -
אובנטו 22.04 לא מצליח להתקין GMPsudo add-apt-repository ppa:ondrej/php sudo apt update
ואז נסה שוב:
sudo apt install php7.4-gmp
-
כמה משלמים על עבודת תכנות כזאת@mekev כתב בכמה משלמים על עבודת תכנות כזאת:
לגלות?
לא... מה הענין?
הדיון העסקי רלוונטי ומעניין בפנ"ע בלי הפרטים הטכניים שפותח הנושא בחר להעלים -
כמה משלמים על עבודת תכנות כזאת@one1010 כתב בכמה משלמים על עבודת תכנות כזאת:
בחיפוש בגוגל קפצו כמה תוצאות
לא ברור מה חיפשת כי התיאור ש@אף-אחד-3 נתן די עמום (אולי בכוונה)