
yossiz
-
אתגר | האם אפשר להחזיר את התהליך אחורה? -
אתגר | האם אפשר להחזיר את התהליך אחורה?@אוריי כתב באתגר | האם אפשר להחזיר את התהליך אחורה?:
האם אפשר לדבג אותם אחורה או שכתבתי מעולה
אני רוצה להציע אפשרות שלישית: ייתכן שקשה או בלתי אפשרי לדבג אחורה, אבל לא כתבת מעולה
קיבלתי מרבותי: "לא ממציאים שיטות הצפנה מקוריות"
ההסבר: (מדובר כאשר ההצפנה הוא לצרכי אבטחה) אבטחה הוא נושא רגיש, והצפנה הוא נושא מתמטי קשה כאשר פרט קטן יכול לשבש את כל הבטיחות של האלגוריתם. היו מקרים של אלגוריתמים שמומחים גדולים חשבו שהם טובים עד שהגיע אחד והצביע על חולשה. לכן סומכים על אלגוריתמים שעברו ביקורת של הרבה אנשים חכמים מאוד ולא מנסים להמציא משהו מקורי משלנו.לגבי עצם האתגר: גם בלי הרבה חישובים לכאורה אפשר להחליט שאי אפשר להחזיר את התהליך אחורה לגמרי מסיבה פשוטה: יש יותר מקלט אחד שיתאים לפלט של האלגוריתם. זה יכול להיות קצת בעיה באלגוריתם לשמירת סיסמאות...
אני לא טוב במתמטיקה ולא מומחה בקריפטולוגיה (וגם עצלן, אם אפשר להעביר ביקורת בלי להתאמץ עם חישובים מתמטיים, למה לא...), אבל חולשות שאני רואה מיד (לעומת אלגוריתם גיבוב בטיחותי כמו 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 נתן די עמום (אולי בכוונה)
-
כמה משלמים על עבודת תכנות כזאת@אף-אחד-3 אני ממש לא מומחה בעסקים, אבל איך שאני מבין הדבר המומלץ לעשות פה הוא לנסות להבין כמה המשימה הזאת שווה ללקוח ולהתחיל את המשא ומתן עם המחיר הכי גבוה שלהשערתך הוא עשוי לקבל
איך שאני מבין, ממש אין פה מחירים, יש רק את הכללים הבסיסיים של משא ומתן עסקי -
כמה משלמים על עבודת תכנות כזאתלענ"ד אין מנהג בדבר כזה. מגיעים למחיר שמקובל על שניכם.
-
מתחיל לבנות אתר? תשקול להתשמש ב-filament@אבי תודה על ההערה
בנוגע לגמישות: הייתי צריך להדגיש, אני מתייחס לאתר בלי צורך בהרבה פיתוח פרונט מותאם אישית. כלומר אתר של CRUD עם טפסים וטבלאות רגילים
ברגע שיש אפיון גרפי מאוד ספציפי יותר כדאי ללכת על Laravel + Inertiaבנוגע לביצועים: הרכיבים המובנים של Filament בנויים בצורה טובה. אם אתה בונה רכיב מותאים אישית, אתה צריך לדאוג שלא כל האינטראקציה יהיה עם livewire בשיתוף הבקאנד, אפשר להשתמש ב-alpinejs פשוט כדי לקבל אינטראקציה מהירה בתוך הפרונט. פשוט צריך להיות מודע לנושא ולבנות עם הבנה.
@אבי כתב במתחיל לבנות אתר? תשקול להתשמש ב-filament:
שאומר PHP גם בצד לקוח
הייתי מגדיר את זה קצת אחרת, אבל זה לא הנושא פה...
-
מתחיל לבנות אתר? תשקול להתשמש ב-filamentמתחיל לבנות אתר? תשקול להתשמש ב-filament
קיבלתי פרוייקט של בניית אתר. אני ממש לא מתכנת פרונט, לכן קצת חששתי מקבלת הפרוייקט
מישהו המליץ לי על filament
אחרי שימוש אינטנסיבי בזה בשבועיים האחרונים, אני מרגיש חובה להודיע לציבור כדי לא להיות מונע טוב מבעליו
התאהבתי לגמרי
זה נותן לך גם צד שרת וגם צד לקוח בצורה מאוד נוחה (לטעמי) עם הרבה אפשרות קסטומיזציה מהעיצוב עד לשכבות הנמוכות ביותר של הסטאק
מכיון שזה בנוי על Laravel, מקבלים את כל הספרייות המצויינות של האקוסיסטם הלרבל-יזה פשוט תענוג, צד שרת וצד לקוח,
אני ממליץ לנסות
אגב, זה תומך לגמרי בעברית ו-RTL
(אפשר להתרשם מהיכולות הבסיסיות המובנות באתר הדוגמה שלהם)אם יש שאלות בנושא, אני פה בפורום ואשמח לענות כמיטב יכולתי על נושאים קשורים לLaravel/Filament
-
winkey + . (חלונית אימוג'י) בלינוקס?!@יעקב-מ-פינס כתב בwinkey + . (חלונית אימוג'י) בלינוקס?!:
בלינוקס
הערה כללית על שאלות בלינוקס: אתה צריך להכיר ש"לינוקס" הוא לא מעכרת הפעלה
זה רק רכיב אחד (מרכזי מאוד) של מערכת ההפעלה.
אם התקנת את ה-ubuntu הרגיל, אז השאלה שלך הוא על "סביבת שולחן עבודה" (זה הסביבה הגרפית של המחשב) בשם Gnome
או אפשר לחפש על ubuntu
אבל לא כדאי לחפש בכללי על לינוקס -
נתיב יחסי לpython interpreter ולקבצים בvscodeאולי אפשר להשתמש עם המשתנה
${execPath}
שזה הנתיב של תוכנת vscode.
משהו כזה:"python.defaultInterpreterPath": "${execPath}../../../python3.12/bin/python3"
-
יצירת תמונת דיסק במערכת הפעלה אובונטו@יעקב-מ-פינס ברור שיש דרך
אבל מכיון שביקשת דרך פשוטה, אז התשובה היא שאין
בלי ידע טכני תתקל בבעיות שלא תדע לפתור
בפרט במקרה שלך שיש תקלה בדיסק הקשיח, ייתכן שבכלל אין דרך -
התקנת תוספים לוורדפרס לוקאלי על מחשב עם נטפרי נכשלת -
סגירת קוד קטן ב java + xml ל apk | ללא ידע מוקדם -
קריסת מערכת ההפעלה בהפעלת כמה תהליכיםלכאורה נראה כבעית חומרה בדיסק הקשיח