אגב, יש לנושא הזה היסטוריה ארוכה. היה פולמוס גדול כבר בשנות ה-1980 אם צריך ללכת על ארכיטקטורה של microkernel (קרנל מינימליסטי מאוד, כאשר כל שאר שירותי המערכת - כולל דרייברים - רצים בתהליכים מבודדים) בגלל הבטיחות והיציבות שזה נותן
אני רואה עכשיו שהקרנל של מאק וגם של ווינדוס מוגדרים כקרנל היברידי. משהו בין מיקרו למונולית'
yossiz
-
למה תקלת CrowdStrike לא יכולה להתרחש בmacOS, ולמה מייקרוסופט לא יכולה לנקוט בצעדי התגוננות דומים -
למה תקלת CrowdStrike לא יכולה להתרחש בmacOS, ולמה מייקרוסופט לא יכולה לנקוט בצעדי התגוננות דומים@חגי זה מסוכן מדי. לך תדע איפה יש שיבוש בזכרון. לדרייבר יש גישה לכל מרחב הזכרון של הקרנל. אין מספיק בידוד בין הדרייבר לשאר הקרנל. אם המערכת ממשיכה לרוץ אולי קבצים ישובשו. או היזק קבע אחר.
(זה מושכל ראשון שלי. אולי למומחים בפיתוח קרנל יש תשובה יותר טובה מזה) -
למה תקלת CrowdStrike לא יכולה להתרחש בmacOS, ולמה מייקרוסופט לא יכולה לנקוט בצעדי התגוננות דומים@חגי יש מחקרים שמראים איזה אחוז של בעיות אבטחה בעולם האמיתי נגרמים מבעיות ניהול זכרון. זה אחוז גבוה. מסתבר שגם סתם חריגות זה אחוז דומה. אז ראסט בטח תתרום לאקו סיסטם יותר טוב.
-
למה תקלת CrowdStrike לא יכולה להתרחש בmacOS, ולמה מייקרוסופט לא יכולה לנקוט בצעדי התגוננות דומיםhttps://github.com/microsoft/ebpf-for-windows
זו דרך להריץ קוד בטוח בקרנל
הקוד שכותבים עם טכנולוגיה זו, אפשר להוכיח מתמטית שהוא לא יכול לגרום חריגה או לשבש זכרון וכו' -
ספריית Sequelize: איך למנוע שליחת שדות מסויימות לצד לקוח@ivrtikshoret טכנית אתה צודק לגבי הקוד המדוייק ש@dovid הביא. אבל הנקודה הכללית עדיין עומדת וקיימת. כלומר ששם אי אפשר לשנות את שדה
id
ספציפית כי יש בדיקה לזה. גם בלי הבדיקה, הרי הרשומה שמעדכנים היא הרשומה עם ה-id
ששלחת ב-body, אז תמיד זה יהיה זהה. אבל עדיין ייתכן שיש שדות רגישות אחרות. כמו"כ בהרבה מקרים פרמטרid
שמצביע על המזהה של הרשומה שצריך לעדכן נשלח בנפרד לאובייקט העדכון ואז הבדיקה לא תועיל. -
למה תקלת CrowdStrike לא יכולה להתרחש בmacOS, ולמה מייקרוסופט לא יכולה לנקוט בצעדי התגוננות דומיםנראה לי שיש עוד סיבה שקשה יותר ל-MS לאסור קוד צד שלישי בקרנל. כי הם חייבים לתמוך בחומרה מחברות שונות. הם לא שולטים על החומרה. וכדי לקבל ביצועים טובים, הדרייברים של ההתקנים חייב לרוץ במרחב הקרנל.
משא"כ אפל ששולטים לגמרי על החומרה ומאפשרים חיבור התקנים של צד שלישי רק דרך ממשקים מוגדרים כמו USB וכדו', הם יכולים לשלוט לגמרי על כל הקוד במרחב הקרנל.
מכיון שבכל מקרה MS לא יכולים להוציא לגמרי קוד של צד שלישי מהקרנל, יכול להיות שיש להם פחות מוטיבציה להוציא מוצרי אבטחה מהקרנל. -
למה תקלת CrowdStrike לא יכולה להתרחש בmacOS, ולמה מייקרוסופט לא יכולה לנקוט בצעדי התגוננות דומים@A-I-V כתב בלמה תקלת CrowdStrike לא יכולה להתרחש בmacOS, ולמה מייקרוסופט לא יכולה לנקוט בצעדי התגוננות דומים:
ב. אם זה פוגע בתחרות, איך הEU נותן לאפל לעשות את זה?
אם הבנתי נכון הבעיה היא רק כי יש למייקרוסופט אנטי וירוס משלהם
הם התחייבו שהאנטי וירוס שלהם לא יקבל יותר גישה למערכת מאנטי וירוסים של צד שלישי
לכאורה תיאורטית הם יכולים לבנות ממשק API עבור מוצרי אבטחה שירוץ ב-userspace ויעבירו את האנטי וירוס שלהם גם כן לשם
צריך עיון אם ה-xprotect המובנה של אפל מקבל יותר גישה ממוצרי אבטחה אחרים. אבל אולי זה פחות בעיה כי xprotect הוא לא אנטי וירוס שלם וזה לא ממש מתחרה במוצרי אבטחה אחרים -
למה תקלת CrowdStrike לא יכולה להתרחש בmacOS, ולמה מייקרוסופט לא יכולה לנקוט בצעדי התגוננות דומים@A-I-V כתב בלמה תקלת CrowdStrike לא יכולה להתרחש בmacOS, ולמה מייקרוסופט לא יכולה לנקוט בצעדי התגוננות דומים:
א. מה מתוך זה רלוונטי לכל מערכות הUNIX ולא רק Mac?
כלום
-
קומבוקס בvue@חגי בגדול זה כן עובד שם. רק עבור date, time, range and color זה לא עובד
-
העברת props למסלולים מקבילים בnextJS - איך?מקווה שאני לא מבלבל את המוח
ראיתי שיש עוד דרך להעביר מידע ל-slot
עםReact.cloneElement
עיין כאן (בכלל זו כתבה יפה על דרכים שונות למימוש slot בריאקט ובעיותיהם)
ועיין עוד: https://react.dev/reference/react/cloneElement#alternatives -
קומבוקס בvue@אביי לא ברור במה אתה מתקשה. כתבת בעצמך שזה נקרא combobox. יש הרבה ספרייות של קומפוננטות ויו שכוללים קומפוננטה כזאת.
אתה מתקשה במציאת ספרייה? אולי אתה רוצה לממש בעצמך? -
העברת props למסלולים מקבילים בnextJS - איך?עדכון חשוב: עכשיו ראיתי את זה בתיעוד של nextjs
Sharing data between components
When fetching data on the server, there may be cases where you need to share data across different components. For example, you may have a layout and a page that depend on the same data.
Instead of using React Context (which is not available on the server) or passing data as props, you can use fetch or React's cache function to fetch the same data in the components that need it, without worrying about making duplicate requests for the same data. This is because React extends fetch to automatically memoize data requests, and the cache function can be used when fetch is not available.
Passing data between a parent layout and its children is not possible. However, you can fetch the same data in a route more than once, and React will automatically dedupe the requests without affecting performance.
עיין עוד:
-
העברת props למסלולים מקבילים בnextJS - איך?@nach האם הסתדרת כבר? יש לי תשובה אבל עם התנצלות מראש: אין לי כמעט נסיון בריאקט ואני כלל לא מכיר את nextjs
ועכשיו לתשובה: איך שאני מבין, השאלה פחות קשורה ל-nextjs ויותר לנושא הכללי של slots ב-React. ספריית nextjs משתמשת פה ב-pattern נפוץ - slots. הכוונה הוא, העברת חלקים של ה-markup של הקומפוננט בצורה דינאמית דרך prop.
השאלה שלך הוא איך להעביר ל-slot משתני state רלוונטיים.
כאשר מנסחים את השאלה בצורה זו אפשר יותר בקלות למצוא תשובות ברשת
מה שהעליתי בחכתי בנושא:
בוויו slots הם "אזרח מדרגה ראשונה" (first class citizen), כלומר, ה-pattern מוכר ונתמך ישירות על ידי הפריימוורק, בריאקט לא כל כך (יש הצעה פה להוסיף תמיכה לזה. בינתיים לא התקבלה), אבל עדיין אפשר להשתמש ב-pattern בצורה די קלה.
הנה כתבה על הנושא
עם התייחסות מפורשת לשאלה שלך בקטע זה
(התשובה בקצרה:useContext
)
מקווה שזה עוזר -
שגיאה בהעלאת טקסט לקובץ בימות המשיחיש פה משהו מעניין
למרות שכאשר מעבירים מחרוזת ל-fetch (או ל-axios) הם עושים עליו encodeURI אוטומטי, אבל במקרה של ירידת שורה הם מורידים אותו
נסיתי קצת להתחקות אחרי המקור להתנהגות זו
מצאתי פהRemove all ASCII tab or newline from input.
עיין גם https://security.stackexchange.com/questions/234662/
-
שגיאה בהעלאת טקסט לקובץ בימות המשיחאופסס... טעיתי.
במושכל ראשון חשבתי שבטח הבעיה היא שיש backtick במקום גרש
אבל אחרי בדיקה אני רואה שגם ב-template string (מחרוזת בתוך backtick-ים) אמור לעבוד\n
במקום ירידת שורה
אז כנראה שיש הסבר אחר למה לא עובד עבור @avi-rz
אולי צריך לעשות urlencode למחרוזת לפני ההעברה ל-axiosעריכה: אכן זו ההסבר, axios מוריד ירידות שורה. צריך קודם לעשות encodeURI על המחרוזת ואז להעביר ל-axios
-
שגיאה בהעלאת טקסט לקובץ בימות המשיח@ivrtikshoret כתב בשגיאה בהעלאת טקסט לקובץ בימות המשיח:
תנסה לשים ב שורה 6 גרשיים ולא גרש
רק למען הדיוק: ההבדל לא בין גרש לגרשיים אלא בין backtick (תו זה: `) לגרש/גרשיים (
"
/'
)
אין שום הבדל בין גרש לגרשיים ב-JS -
מכונה וירטואלית עם מערכת יוניקס (לא לינוקס)@קן-ציפור כתב במכונה וירטואלית עם מערכת יוניקס (לא לינוקס):
אז בעצם מה "מאחד" את כל יוצאי יוניקסים?
https://www.opengroup.org/certifications/unix
https://en.wikipedia.org/wiki/Single_UNIX_Specification@קן-ציפור כתב במכונה וירטואלית עם מערכת יוניקס (לא לינוקס):
הקרנל? המעטפת?
לא הקרנל או המעטפת עצמם אלא הפיצ'רים שהם חושפים למשתמשים ותוכנות.
לא קראתי את התקנים. אבל אני משער שמדובר בעיקר על ה-system calls שקרנל חושף, הפקודות שקיימים במערכת והתנהגותם, ותחביר של ה-shell -
מכונה וירטואלית עם מערכת יוניקס (לא לינוקס)@קן-ציפור אין יוניקס אחד. זו משפחה. גם macOS נחשב חלק מהמשפחה (אפילו יותר מלינוקס כי יש להם "תו תקן" של תקן POSIX שנועד לאחד את היוניקסים). גם לינוקס.
-
ספריית Sequelize: איך למנוע שליחת שדות מסויימות לצד לקוח@dovid כתב בספריית Sequelize: איך למנוע שליחת שדות מסויימות לצד לקוח:
על ידי Auto Mapper
אתה מתכוון לזה?
-
ספריית Sequelize: איך למנוע שליחת שדות מסויימות לצד לקוחתיאור הבעיה
על פי רוב בממשקי API, האובייקטים שה-API שולח משקפים במידה רבה את המבנה של ה-DB. עד כדי כך, שלרוב התשובה של ה-API הוא פשוט ייצוג JSON של שורות ב-DB.
מתכנתים עצלנים כמו רוב עמך (כולל אני) בד"כ פשוט עונים לבקשות API עם תבנית זו:- שאילתת DB לקבל את הישויות הרלוונטיות
- הרצת לוגיקה על היישויות, כמו בדיקת הרשאות, או עדכון נתונים וכו'
- סיריאליזציה של ישות ה-DB שרלוונטי לתשובה ל-JSON, ושליחה לקליינט
הבעיה היא שקורה הרבה שהשדות שנצרכים עבור שלב 2 שונים מהשדות שרוצים לשלוח בשלב 3
למשל בבקשת login בד"כ שולפים שורה שמייצגת משתמש, ועבור שלב 2 רוצים לבדוק שהסיסמה נכונה, ולכן שולפים את השדה שמייצג את ההאש של הסיסמה, אבל בשלב 3 בד"כ לא רוצים לשלוח את זה חזרה לקליינט
עוד דוגמה: אפליקציה ששומרת מפתח API של המשתמש כדי להריץ עבורו פעולות מול צד שלישי, רוצה לשלוף את המידע הזה מה-DB עבור שלב 2 כדי לטפל בבקשות שונות, אבל לא רוצה לשלוח את זה חזרה לקליינט
וכהנה רבות
מצו"ב קוד קצר לטיפול נוח בנושא זה עבור משתמשי Sequelize
הסבר על הפתרון
בספריית Sequelize, כאשר הופכים מודל ל-JSON, מנוע JS משתמש מתחת למכסה בפונקציית
Sequelize.Model.prototype.toJSON
הרעיון הוא שנוסיף שדה סטטית להגדרת המודלים שלנו שמכיל מערך של שדות שצריך תמיד להשמיט מהסיריאליזציה, ונכתובtoJSON
מותאם אישית שלנו שיכבד רשימה זו
כדי שזה יעבוד גם על מודלים מקוננים, נקרא לפונקצייה זו בצורה ריקורסיבית על מודלים מקונניםהנה הקוד
// Override the builtin `toJSON` method to allow hiding certain fields from the client // To hide a field, add it to the `hidden` array on the model's prototype // We recursively call `toJSON` on all included models Sequelize.Model.prototype.toJSON = function () { const includes = this._options.includeNames ?? []; const hiddenKeys = this.hidden ?? []; const values = Object.assign({}, this.get()); for (const hiddenKey of hiddenKeys) { delete values[hiddenKey]; } for (const include of includes) { if (Array.isArray(values[include])) { values[include] = values[include].map((value) => value.toJSON()); } else if (typeof values[include].toJSON === 'function') { values[include] = values[include].toJSON(); } } return values; };
והנה הגדרת מודל לדוגמה:
const User = sequelize.define( 'User', { firstName: { type: DataTypes.STRING, allowNull: false, }, lastName: { type: DataTypes.STRING, }, passwordHash: { type: DataTypes.STRING, } }); User.prototype.hidden = ['passwordHash']
או אם אתה מעדיף קלאסים:
class User extends Model { static hidden = ['passwordHash'] } User.init( { firstName: { type: DataTypes.STRING, allowNull: false, }, lastName: { type: DataTypes.STRING, }, passwordHash: { type: DataTypes.STRING, } }, { sequelize, modelName: 'User', }, );
נ.ב. הקוד נכתב עבור sequelize v6. אני משתמש בשדה פנימית של
Model
(ה-_options.includeNames
). אין הבטחה שהקוד ימשיך לעבוד בגירסאות הבאות של sequelizeעוד הערה:
אני לא חושב שקוד זה מספיק טוב לאפליקציה רצינית
נראה לי שאפליקציה רצינית אמורה להפריד בין הייצוג הפנימי לאובייקטים החיצוניים שנשלחים לקליינט, ולהשתמש בשכבה שיודע להמיר בין אובייקטים פנימיים לאובקטים "חיצוניים"
בפרוייקט אחד שלי השתמשתי ב-https://github.com/typestack/class-transformer לצורך זה