@www @מעלה-ומוריד תודה חברים על המחמאות
אפשר לחזור חזרה לנושא...
yossiz
-
תכנה לניהול רשימות עם תגיות -
כללים לחיפושי גוגל יעיליםתגובה: למה אין עדיין פורום מחשבים חרדי מקצועי??
@nigun אמר בלמה אין עדיין פורום מחשבים חרדי מקצועי??:
כלל ראשון: שליטה טובה באנגלית חובה
נכון שזה עוזר, אבל לא הייתי שם את זה ככלל ראשון ואפילו לא שני
(ממש אין לי משנה סדורה בנושא... אבל לפום ריהטא -)
כלל ראשון: לפני שאתה מחפש את עצם הנושא, תנסה להבין את הנושא בצורה מספיקה שתוכל למקד את השאלה. תלמד את מילות המפתח שקשורים לנושא.
כלל שני: נסה לבודד מתוך כל המילות שמתארות את השאלה את המילות שהכי סביר שיימצאו בקשר לבעיה שלך ולא בקשר לבעיות אחרותכל אחד מוזמן לכתוב את הכללים שלו...
-
💡 טיפ: חיפוש מהיר באתריש אתר שאתם מחפשים בו הרבה? אולי אמזון או עליאקספרס. למתכנתים, אולי npm או github.
אפשר להגדיר אותו כמנוע חיפוש בכרום ולחפש באתר מתוך שורת הכתובת-
כינסו לכתובת זו:
chrome://settings/searchEnginesאו ל"הגדרות" > "מנוע חיפוש" > "ניהול של מנועי החיפוש ושל החיפוש באתרים ספציפיים". -
בקטע "חיפוש באתרים ספציפיים" יש רשימה של אתרים (אתרים שנכנסתם אליהם בעבר) שמפרסמים אפשרות לחפש בהם.
-
לכל ערך ברשימה יש שתי עמודות: שם האתר, וקיצור דרך
-
השימוש בקיצור הדרך הוא על ידי כתיבת המילה המוגדרת בשורת הכתובת של כרום ואח"כ טאב.
כרום יציין את שם האתר בו נעשה החיפוש:

-
הרשימה מחולקת לקיצורי דרך פעילים ולא פעילים. אם האתר שבו אתה מעוניין לא נמצא ברשימה של הפעילים, חפשו ברשימת הלא פעילים את האתר שבו אתה מעוניין ותלחצו על "הפעלה" (יש תיבת חיפוש למעלה בתחילת הדף)
-
ערכו את הקיצור דרך למשהו נוח בשבילך ותהנו מהאפשרות לחפש באתר מתוך שורת הכתובת של כרום
יש המון אתרים שכרום מוסיף לרשימה אוטומטית. אם האתר הרצוי לא מופיע ברשימה ואתה יודע איך מחפשים בו, אפשר להוסיף אותו ידנית בלחיצה על "הוספה".
מידע נוסף
- https://support.google.com/chrome/answer/95426?hl=iw&co=GENIE.Platform%3DDesktop
- איך אתר יכול לפרסם את צורת החיפוש באתר: https://developer.mozilla.org/en-US/docs/Web/OpenSearch
- איזה אתרים כרום מוסיף אוטומטי לרשימה: https://www.chromium.org/tab-to-search
-
-
למה כדאי להשתמש במנהל סיסמאותתגובה: סיסמה ארוכה באתר "בנק" הדואר
@yossiz אמר בסיסמה ארוכה באתר "בנק" הדואר:
מומלץ לעבור למנהל סיסמאות...
@aknvtchtk אמר בסיסמה ארוכה באתר "בנק" הדואר:
@yossiz אני בדר"כ זוכר את הסיסמאות והם שמורים לי גם אלא ששם וכו' וכו'
לא זו סיבת ההמלצה, כדי שלא יאבדו לך. (למרות שזה גם דבר טוב).
הסיבה להמלצה היא כך: אם אתה לא משתמש במנהל סיסמאות אתה בד"כ מוכרח א) ליצור סיסמאות קלים לזכירה ב) להשתמש באותה סיסמה או בוריאציות שלה בכמה וכמה אתרים כי הרי הזכרון האנושי מוגבל ביכולותיה.
והרי מעשים בכל יום שאתרים נפרצים, ומה קורה אז? הפורצים ניגשים למסד הנתונים ומוציאים את כל שמות המשתמשים והסיסמאות. ועוברים עליהם אחד אחד ומפצחים אותם. אם זה אתר ממש גרוע, ייתכן והסיסמאות שמורות בלי שום הצפנה, אבל גם במקרים טובים יותר עכ"פ קורה הרבה באתרים גרועים שההצפנה לא מספיק חזקה.
ובד"כ כל סיסמה שקלה לזכירה היא גם קלה יותר לפיצוח.ואם תשאל "מה איכפת לי אם לפורץ יש את הסיסמה שלי לפורום XYZ"?
התשובה היא שמיד שמצליחים לפצח זוג של כתובת מייל וסיסמה הם עוברים על אתרים אחרים ומנסים את הצירוף הזה של מייל וסיסמה. ואז הם יכולים להגיע לאתרים חשובים באמת.
לכן מומלץ א) להשתמש בסיסמאות שלא בנויות ממילות שכיחות (וממילא קשות לזכירה). ב) לא להשתמש באותה סיסמה בכמה אתרים.
מנהל סיסמאות יכול לעזור מאוד בשמירת ההמלצות
לסיכום, המלצות:
- הסיסמה של המייל היא המפתח לזיהוי שלך באינטרנט, זה חייב להיות סיסמה שאתה לא משתמש בו בשום מקום אחר, ושיהיה קשה לנחש.
- סיסמאות של אתרים שמאחסנים מידע רגיש שלך, כמו פרטי תשלום, וכו' מומלץ מאוד שיהיו ייחודיות, כלומר שלא תשתמש באותה סיסמה בכמה אתרים.
- סיסמאות עבור אתרים אחרים שלא חשובים אפשר להקל ראש קצת, (וכן אני נוהג...)
-
GitHub Copilot עכשיו בחינם@קומפיונט כתב בGitHub Copilot עכשיו בחינם:
ואגב, למי שלא אוהב לשתף קטעי קוד שלו עם GitHub
כמובן שזה רלוונטי רק למי שמשקיע בקוד שלו ולא נותן ל-AI לחבר בשבילו הכל...
(סליחה, לא שלטתי בעצמי, יש לי הרבה קיטור לשחרר נגד אנשים שעושים שימוש יתר ולא נכון ב-AI...) -
צלילה לעומק TS: טייפ X לא זהה ל-union של כל הערכים האפשריים שהטייפ כוללהטייפ השולל:
neverנחזור שוב ל-
neverלכמה רגעים
הטייפneverהוא סט בלי חברים, טייפ ששום ערך לא יכול להיות בו חבר.
נמצא שלא יקרה אף פעם שלערך אמיתי יהיה טייפnever
אם כן לְמָה זה טייפ שימושי?שלילת מצב
אחד מהשימושים של טייפ זה הוא לסמן ל-TS שמצב מסויים אמור להיות בלתי אפשרי, ולקבל אישור מ-TS שזה באמת בלתי אפשרי
למשל: אם רוצים לוודא שב-switch עברנו על כל האפשרויות ולא פיספסנו אחד מהם בטעות אפשר לכתוב ככה:type Color = 'red' | 'blue' | 'green' function handleColor(color: Color) { switch (color) { case 'red': // ... break case 'blue': // ... break case 'green': // ... break default: throw new Error('Impossible!') } }פה אנחנו בודקים בזמן ריצה שלא הגענו לענף הבלתי אפשרי
אבל עם TS יש לנו אפשרות לבדוק בזמן קימפול שלא שכחנו לטפל בשום אפשרות
מוסיפים שורה זו:type Color = 'red' | 'blue' | 'green' function handleColor(color: Color) { switch (color) { case 'red': // ... break case 'blue': // ... break case 'green': // ... break default: const _test:never = color throw new Error('Impossible!') } }עיין שורה 15. אנחנו מצהירים ל-TS שבשלב הזה מיצינו את כל הערכים האפשריים ש-color יכול לקבל ופה הטייפ חייב להיות never, כלומר זה לא יקרה אף פעם
(להבין יותר איך זה עובד, כדאי להכיר את המושג narrowing, בקיצור נמרץ: מנוע TS עוקב אחרי משתנים תוך כדי זרימת הקוד וכאשר הוא רואה ביטויים מסויימים בקוד, הוא מבין אותם ומוציא מתוך ה-union של הטייפ של המשתנים את אותם הטייפים שהקוד שולל, ובהקשר שלנו, בכל ענף של ה-switch, מנוע TS יכיר בעובדה שהטייפ שלcolorהוא רק הערך שאותו ענף מטפל, ובענףdefaultהטייפ הוא האפשרויות שה-switch לא מיצה)
ברגע שנוסיף עוד אפשרות ל-union שלColorנקבל מיד אזהרה שהמשתנה_testקיבל ערך שהטייפ שלו הוא לאneverשלילת ערך
אבל השימוש שמעניין אותנו יותר פה הוא השימוש השני,
כאשר יוצרים טייפ חדש באמצעות ביטוי עם תנאי, ורוצים שענף אחד של התנאי לא יחזיר שום טייפ, או יותר נכון: יחזיר טייפ ריק, במקום כזה באneverלידי שימוש
נדגים את זה על ידי ה-helper המובנה -Exclude
(helper הוא פונקציה שעוזר לבניית טייפ שמבוסס על טייפ קיים. נזכיר: פונקציה ב-TS == generic)
הטייפExcludeמגיע מובנה ב-TS ושימושו הוא כאשר רוצים ליצור מ-union קיים, טייפ שדומה למקור רק שחסר ממנו אחד או יותר ערכים.
למשל:type Weekday = 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' type Workday = Exclude<Weekday, 'friday' | 'saturday'>כפי שאפשר לראות: ה"פונקציה"
Excludeמקבלת כפרמטר ראשון את הטייפ המקורי ובפרמטר השני union של טייפים (או טייפ יחיד) לחסר מהטייפ המקורי.איך הוא עובד?
הנה קוד המקורtype Exclude<T, U> = T extends U ? never : Tלהבין את זה צריך להקדים עוד דבר אחד: ביטוי של תנאי שמריצים על union עובד על כל אבר של ה-union בנפרד
בתיעוד של TS קוראים לזה: Distributive Conditional Types
כלומר זה עובד כמו הקוד פסואודו הבא:function Conditional(source: Union, condition: Type => Bool, resultIfTrue: Type => Type, resultIfFalse: Type => Type) { const runConditional = (type: Type) => { if (condition(type)) { return resultIfTrue(type) } else { return resultIfFalse(type) } } return source.split('|').map(runConditional).join('|') } function Exclude(source: Union, exclusions: Union) { return Conditional(source, t => t.extends(exclusions), t => t, t => never) } Exclude(Weekday, 'friday' | 'saturday') // 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | never | neverמקווה שהפסאודו קוד מובן
רק מזכיר שוב כמה נקודות שכבר הזכרנו:- בדיקת extends בודק עם הצד שמאלי כולו כלול בתוך הסט שהצד הימני מייצג
- פעולת union עם never - כמוהו כמו אי-פעולה. הוספת סט ריק לסט המקורי לא מוסיף שום דבר, לכן בתוצאה של
Excludeאפשר להשמיט את ה-neverבלי שום השלכה
הערה בענין מילת
extends
בדרך אגב, כמה אנשים שאלו שאלה זו: למה המצב שבו טייפ אחד כלול לגמרי בתוך טייפ אחר נקרא בלע"ז extends, הרי המשמעות של extend בלע"ז הוא "הרחבה" ופה מדובר על הצרה?!
התשובה לזה לכאורה (וכן הסכים לזה מתכנת אחר שדיבר איתי על זה) שהמילה "הרחבה" בהקשר זה לא מדבר על הסט שהוא תוצאה מהגדרת הטייפ אלא על הגדרת הטייפ עצמו,
ככל שאתה יותר מאריך בהגדרת הטייפ, כך אתה שולל יותר ויותר מועמדים פוטנציאליים.
לדוגמה: טייפunknownהוא הטייפ הכי גדול מצד אחד, כי הוא כולל כל הערכים האפשריים, ומצד שני הגדרתו הוא הכי קצר: אין שום הגדרה, כל מה שזז נכנס לתוך הטייפ הזה. ברגע שמרחיבים את ההגדרה, למשל מוסיפים תנאי שיש לו מתודה פלונית, אתה מצר את מעגל החברים בטייפ"פונקציית"
Omitעכשיו נוכל להסביר את הטייפ
Omitשבו סיימנו את הפוסט הראשון, וזה אמור להיות מובן בקלות כעתהפונקציה מקבלת בפרמטר הראשונה אובייקט, ובשנייה, union של מפתחות שאתה רוצה להשמיט ממנו
דוגמה לשימוש (מתוך התיעוד הרשמי):type Todo = { title: string description: string completed: boolean createdAt: number } type TodoPreview = Omit<Todo, "description">;
שיניתי קצת מהמקור בתיעוד של TS ממילת המפתח interfaceלמילתtypeרק לשם העקביות כי לא הצגנוinterfaceבמאמר זה - יש הבדל קטן בין השניים אבל זה נושא לשיחה אחרת ולא חשוב כעת
פה אני רוצה להתמקד על האינטואיציות המרכזיות ולא על פרטים קטניםוהנה קוד המקור של
Omittype Omit<T, K extends keyof any> = { [P in Exclude<keyof T, K>]: T[P]; }ננתח את זה לחלקים:
הפרמטרים
Omit<T, K extends keyof any>הפונקציה מקבלת שני פרמטרים, הראשון ברור. זה יכול להיות כל טייפ שהוא. השני מוגבל לקבל רק טייפ שמקיים בעצמו התנאי
extends keyof any
מה זהkeyof any? זו דרך קצרה להגיד כל טייפ שחוקי להשתמש בו כמפתח של אובייקט כלשהו, שזה כהיום:string | number | symbol. אז הפרמטר השני הוא טייפ שמורכב רק מדברים שמותרים במפתח אובייקטה-body של הפונקציה
{ [P in Exclude<keyof T, K>]: T[P]; }יש פה שימוש בכמה דברים שהסברנו כבר למעלה, נתחיל מהפנים לחוץ:
keyof T= מחזיר union של כל המפתחות של שדות בטייפTExclude<keyof T, K>= מוציא מתוך זה את השמות של השדות שאתה רוצה להשמיט בטייפ הסופי- מיפוי
[P in Exclude<keyof T, K>]מריץ לולאה על כל חבר מבודד מתוך ה-union שהתקבל מהשלב הקודם כאשר הטייפ המבודד מיוצג על ידי המשתנהP { [P in Exclude<keyof T, K>]: T[P]; }= מייצג טייפ שבו עבור כלPבלולאה, יש שדה בשםPוערך מהטייפT[P]= כלומר הטייפ המקורי של שדה זו בטייפ המקורי
פסואודו קוד
והנה פסאודו קוד לקינוח:
function Omit(t: Type, u: UnionOfKeys) { const res = {} for (key of Omit(Keyof(t), u).split('|')) { res[key] = t[key] } return res }פשוט ביותר!
הנושא המקורי (אחרי כל ההקדמות הארוכות)
נחזור לנושא המקורי שהצגתי בכותרת
(אם חיכית בקוצר רוח לחלק זה, זה באמת לא כל כך מרעיש עולמות... מצטער...)ולשם הקדמה אביא את הטריגר שהביא אותי להבנה זו:
מישהו שאל: איך אפשר ליצור טייפ שבו מותרים רק שדהxו-yולא שום שדה נוסףנציין פה שיש טעות נפוצה אצל מתחילים ב-TS, שאם טייפ לא כולל שדה מסויים, אז ערך שיש בו שדה זו לא יכול להיות חבר בטייפ. זה לא נכון.
ב-TS, העובדה שטייפ לא כולל שדה מסויים, עדיין לא שולל שהשדה יכול להיות קיים.
למשל:type HasFoo = { foo: string }גם אובייקט שיש לו שדה
barיכול להיות חבר בקובצתHasFooconst hasBar = { bar: 1, foo: 'foo' } const test:HasFoo = hasBar // no error
Object literal may only specify known properties
אם הייתי כותב בקיצור בקטע הנ"ל:const test:HasFoo = { bar: 1, foo: 'foo' }הייתי מקבל שגיאה זו:
Object literal may only specify known properties, and 'bar' does not exist in type 'HasFoo'.(2353)
אל תתנו לשגיאה זו להטעות אותך! העובדה ש-HasFooלא מצהיר על שדהbarלא מונע מחברי הסט לשאת שדות נוספות!
ההתרעה של TS הוא מסיבה אחרת: מכיון שהמשתנה היחיד שקיבל את הערך של{ bar: 1, foo: 'foo' }יש לו טייפ שלא כולל את השדהbar, יוצא שבפועל אין דרך להשתמש בשדהbar. כי הגישה דרך משתנהtestאסור כי השדה לא כלול בטייפ שלו. רוב הסיכויים הם שקוד כזה הוא שגיאה של המתכנת, לכן TS מתריע.
לעומת זאת, בדוגמה שהבאתי, ששמרתי את הערך בתוך משתנה אחר לפני ההשמה ל-test, אין על מה להתריע מכיון ששדהbarנשאר נגיש דרך משתנהhasBarנחזור לשאלה: איך אפשר לשלול שדות לא מוצהרות מטייפ
ספוילר: התשובה היא שאי אפשר. וזה מתועד בתשובות ב-stack overflow ו-issues בגיטהאב
אבל אני כעקשן ניסתי בכל זאת לפתור את זה על ידי הטייפ הבא:
type T = { x: string y: number } type Exact<T> = { [K in keyof any]?: K extends keyof T ? T[K] : never }מקווה שכעת קל לכם להבין את הקוד
בתרגום לאנגלית, זה אומר ככה:
בטייפExact<T>: קח את הטייפ של כל מפתח חוקי אפשרי (keyof any), עבור כל חבר מתוך מרכיביו בלולאה ותבדוק אם הוא מתוך המפתחות שלT, אם כן, הערך של המפתח בתוך התוצאה צריך להיות כמו ב-T(המקור); אחרת הטייפ צריך להיותnever- דבר שכמובן לא יכול להיות
לכאורה יצא לנו טייפ שאוסר מפתחות מיותרותהתשובה היא מה שכתבתי בכותרת: "טייפ X לא זהה ל-union של כל הערכים האפשריים שהטייפ כולל"
כלומר, הלולאה של
K in keyof anyשמפרק אתkeyof anyלמרכיביו, ומעביר כל מרכיב בודד בלולאה, לא מפרק את הטייפstringלכל מחרוזת אפשרית. בהקשר זהstringהוא אטומי. כמו"כnumber.היה אפשר לחשוב אחרת, כי סה"כ הטייפ
stringהוא סה"כ סט שמחובר מכל המחרוזות האפשריים ביקום. אבל לצערנו TS לא מסתכל על זה ככה. אלא מתייחסים ל-stringכאטום. ולכן בלולאהK in keyof anyיש התייחסות רק ל-stringו-numberו-symbolולא לערכים הפרטיים שמרכיבים אותם. כמובן, אם ככה, ההמצאה שלי לא תעבוד כי התנאיK extends keyof Tאף פעם לא יתקייםהשלכה נוספת
עוד דבר שאנשים מבקשים מפעם לפעם (עיין דברי ימי שאלות SO ואישיו-אים של GH) הוא טייפ שמייצג כל מחרוזת אפשרית חוץ ממחרוזות ידועות לשמצה. למשל
type NotWeekday = Exclude<string, Weekday>אנשים מצפים שדבר כזה יעבוד. אבל זה לא עובד. ולפי הנ"ל זה מובן
נזכיר את קוד המקור שלExcludetype Exclude<T, U> = T extends U ? never : Tהטייפ מתבסס על העובדה שלפני בדיקת התנאי יש פירוק של
Tלמרכיביו ובדיקת התנאי רץ על כל מרכיב בנפרד (Distributive Conditional Types)
אבל לצערנו, הטייפstringהוא אטומי. הוא לא מתפרק לכל המחרוזות שמרכיבים אותו. לכן התנאיT extends Uאף פעם לא מתקיים
תם ולא נשלם
-
לימודי תכנותקשה לייעץ בפרטות
באופן כללי מאוד (לענ"ד),
העבודות הכי נפוצות והכי נגישות למתחילים הם פיתוח אתרים, זה נכון בין למשרות מסודרות בין לפרילנסינג
בפיתוח אתרים יש צד שרת וצד לקוח, על פי רוב לאנשים יש נטייה יותר לצד זה או השני אבל הכי כדאי ללמוד שניהם
הטכנולוגיות העיקריות שצריך ללמוד עבור צד לקוח זה HTML ו-CSS, ושפת javascript, ואז כדאי ללמוד פריימוורק אחד (אני אישית ממליץ על VUE עבור מתחילים, אבל אפשר ללמוד גם ריאקט או אנגולר)
עבור צד שרת צריך ללמוד או nodejs או php (יש עוד הרבה שפות אבל אלו הכי פופולאריות ונגישות היום. אפשר להוסיף במקום שלישי גם פייתון). ב-php מומלץ לעבוד עם פריימוורק כמו laraval. אני ממליץ לעבוד עם PHP ו-laravel כך יהיה לך הכי קל להקים אתר שלם מקצועי עם הכי מעט עבודה
כדאי גם ללמוד קצת על מסדי נתונים ו-SQLצריך לזכור שעבודה בתכנות פירושו למידה מתמדת. אף פעם לא גומרים ללמוד, אבל צריך לעבור מינימום למידה בסיסי של הנ"ל כדי להתחיל בפיתוח full stack דהיינו גם צד שרת וגם צד לקוח
למי שזה מתאים לו, אפשר בהחלט ללמוד לבד, אבל זה תלוי באופי שלך, אחרת אפשר למצוא המון קורסים באנגלית או קצת בעברית, תוכל לבקש המלצות על קורס בנושא ספציפי בפוסט נפרד
אפשרות שונה לגמרי הוא ללמוד #C וללמוד פיתוח תוכנות דסקטופ לווינדוס. אבל נראה לי שיותר קשה למצוא עבודה בזה
האם יש מספיק עבודה בתחום בצורה שמאפשר ניהול אורח חיים חרדי? בהחלט כן, אבל זה גם בהחלט לא מתאים לכל אופי. וצריך סייעתא דשמיא.
-
עצומה בשביל שלמקדונלד'ס יהיה סניף כשראני מתלבט אם לצחוק או לבכות או להתעלם במשיכת כתפיים
-
פורום מדהים!!@סלבודקער אחד מהדברים הטובים פה שאין סתם קשקשת. תנסה לשמור שימשיך להיות כך...
-
שימוש יעיל ב AIתודה @יוסף-בן-שמעון
הייתי מוסיף/מחדד שלא טוב להשתמש ב-AI לברר עובדות
זה מצויין לקבל רעיונות, כיוונים, הסברים וכו ואפילו ידיעות כלליות, אבל אי אפשר לברר פרטים מולונקודה נוספת: לא לדבר איתו כמו בנאדם. זה מכונה, וכדאי לזכור את זה תמיד. אני רואה אנשים מתווכחים, מתלוצצים, מתבדחים, מבקשים חיזוקים מחמאות וטפיחות שכם, כל זה לא נכון ומגוחך. צריך לזכור שזה מכונה.
לאנשי הדור הישן: יש נושא טיפים לחיפושי גוגל יעילים
-
שאלה פילוסופית עד איזו רמה של מיקרו אופטימיזציה האדם מצווה לדקדק@dovid אמר בשאלה פילוסופית עד איזו רמה של מיקרו אופטימיזציה האדם מצווה לדקדק:
@ארכיטקט אני חושב שמתחילים צריכים להיות פאנטים
אם מותר לי להוסיף (מקווה שזו הבהרה ולא סילוף):
גם כאן קודם כל להיות פנאטי על ניפוי באגים ואז על קוד קריא ובנוי טוב ורק אח"כ על ביצועיםרק להאריך יותר להסביר את הכלל הזה:
קוד שלא עושה מה שביקשת ממנו לא שווה כלום גם אם זה הכי אלגנטי והכי מהר, אז ברור שעדיפות ראשונה זה קוד שעובד.
קוד שקשה לתחזוק עולה יותר מקוד איטי, לכן זה עדיפות שנייה. (כמובן מדובר כל עוד שזה עונה לדרישות, אם זה איטי עד שזה לא עונה על הדרישות אז זה בכלל השלב הראשון) -
דרוש מתכנת מנוסה למענה על שאלות גם מחוץ לגבולות הפורום@davidnead אמר בדרוש מתכנת מנוסה למענה על שאלות גם מחוץ לגבולות הפורום:
מעט חסד, שבדרך כלל לא דורש ממנו הרבה
אתה צודק בהסתכלות הפרטית על כל בקשה, לפעמים קשה למבקש להבין למה כל כך קשה לענות לו על שאלה קטנטנה כזו או אחרת, אבל מנסיון, מי שמשקיע מעט בעזרה לאחרים לפעמים יכול להגיע ל-burnout אז כל עזרה לא אמור להיות מובנת מאליה.
יש כמה יתרונות בעזרה דרך הפורום שאין בעזרה בפרטי,
- אין לחץ. אתה מחליט מתי ועל מה לענות וממה להתעלם
- יש מוטיבציה לכתוב משהו איכותי ומושקע, ומקבלים הכרה על ההשקעה, הדבר הזה גורם שלפעמים הרווח לעוזר יכול לעלות על הרווח לנעזר. אני אישית הרווחתי המון מהעזרה דרך הפורום, כאשר (לענ"ד) רוב התועלת לא הייתי מקבל מלענות בפרטי.
-
💡 תכונה לא ידועה בוורד - צבירת קטעים בלוח והדבקה של כולם ביחדהנה תכונה בוורד שמאוד לא מוכר.
מה עושים אם צריך להעתיק מתוך קובץ וורד כמה קטעים לא רצופים?
אז יש דבר אחד שכן מוכר:
בוחרים קטע, ומוסיפים עוד קטעים לבחירה על ידי לחיצה על ctrl בעת הבחירה, כך מקבלים בחירות מרובות לא רצופים, ומעתיקים כולם ביחד ומדביקים.דוגמא:

אבל מה תעשה אם זה קובץ ארוך ארוך ארוך? זה כבר נהיה מאוד מסורבל לעבוד כך.
בשביל זה יש את ה-"spike". זה כמו לוח שני (לא קשור ללוח העיקרי) שאפשר להוסיף לו דברים. צורת העבודה כך:
- ctrl+f3 חותך את הטקסט הנבחר מהמסמך ומוסיפו ל-spike
- ctrl+shift+f3 מרוקן את ה-spike ומדביקו לתוך המסמך איפה שהסמן נמצא
- אם רוצים להדביק בלי לרוקן את ה-spike, כותבים SPIKE בתוך המסמך איפה שרוצים להדביק ושוב לוחצים F3. (ביאור הדברים: ה-spike הוא טקסט אוטומטי בתוך וורד, כתיבה של השם של הטקסט האוטומטי ולחיצת F3, מחליף את השם בטקסט האוטומטי)
מתחת לשטח ה-spike הוא טקסט אוטומטי, אפשר לראות את זה פה (במארגן של חלקים מהירים - אין לי מושג איך הם קוראים לזה בעברית...):

הוספה:
זה נמצא גם פה:

-
הפקדת צ'קים בנטפרי ע"י אימולטר - אפשרי\נפתר@yossiz אמר בהפקדת צ'קים בנטפרי ע"י אימולטר - אפשרי\נפתר:
תסביר אולי למתמיהים למה ההסתרה הזו?
לשם תיקון הרושם שיש לי משהו נגד הרב ה@מנתק:
לאחרונה בעולם החילוני/גויי יש טרנד שסובר ששיתוף ידע אמור להיות חינמי. (יש לזה סיבות מהם מוצדקות יותר ומהם פחות). אני (לצערי, כי יהודי לא אמור להיות מושפע בשום צורה מהעולם החיצון) מושפע מאוד מהטרנד הזה וכידוע אני משתף ידע בצורה נדיבה לכל דורש ככל שהכוחות, הזמן והחשק נותנים. אבל אני ממש ממש לא סבור שזה מחייב אחרים. אם @מנתק עבד קשה על פתרון מסויים אין שום הצדקה לדרוש ממנו את הידע בחינם לכל דורש וזכותו המלאה לשמור את זה לעצמו/למשלמים או עבור כל תמורה שהוא רוצה. עד כאן.
-
מדריך: שורת הפקודה - תגובותכאן ניתן להגיב על מדריך: שורת הפקודה
-
איך כותבים ומדפיסים בצבע לבן בוורד@חוקר אמר באיך כותבים ומדפיסים בצבע לבן בוורד:
למיטב הבנתי בהרכבת צבעים אמור להיות למדפסת אפשרות להרכיב צבע לבן מהצבעים במדפסת (לבן זה תרכובת של שלושת הצבעים העיקריים).
@יעקב-ישראל אמר באיך כותבים ומדפיסים בצבע לבן בוורד:
חיבור כל ארבעת הצבעים לא אמור ליצור לבן ?
איך שזה מובן היום: הראייה שלנו עובדת כך: אור (לשם הדוגמה נדבר על אור מהשמש) יוצא ממקור האור (השמש), ונכנס לעין שלנו.
כאשר אין חפצים מסביב, האור עובר בנתיב ישר מהשמש אל העין, מכל הכיוונים האחרים אין אור, כתוצאה מזה נראה רק עיגול לבן (צהוב) בכיוון של השמש, והכל חוץ מזה יהיה שחור
כאשר יש חפצים בסביבה, האור נתקל בחפצים וחוזרת לעין שלנו מעוד כיוונים, הצורה של האור שחוזרת לעין מלמדת אותנו על החפצים. חפץ שיש לו צבע, מסנן את האור הלבן ורק חלק מהתדרים חוזרים, זה יוצר רושם של צבע. המוח שלנו מייצר תמונה של הסביבה מתוך הצורה של האור המסונן שחוזר לעין שלנו.יש הבדל עצום בין מדפסת למסך.
התפקיד של המדפסת הוא לגרום שהאור הלבן שיוצא מהשמש ונתקל בנייר הלבן, יחזור לעין שלנו בצורה מסוננת, בצורה שהוא ייצור רושם של תמונה מסויימת. לשם כן הוא צריך להוריד תדרים מסויימים של האור.
צבעי המדפסת מורידים חלקים מן האור, כדי לקבל את הצבע הנכון, מתחילים מלבן, ומורידים את הצבעים המיותרים.
מסך לעומת זאת, לא עושה שימוש כלל באור השמש, אדרבה אור השמש מפריע לעבודתו, הוא יוצר גלי אור חדשים ממקורות האור שבתוך המסך, בצורה שגלי האור ייצרו רושם של תמונה מסויימת,
כדי שהמסך יקבל צבע אדום, הוא צריך ליצור רק התדר של אור אדום, כדי לקבל לבן, הוא צריך ליצור את כל התדרים של האור ביחד.
כדי לקבל צבע מסויים המסך מוסיף את הצבעים (תדרים) הנדרשיםצבעי המסך (RGB) הם מקורות אור - כל אחד מוסיף טווח תדרים מסויים.
צבעי המדפסת (CMY) הם מסנני אור - כל אחד מוריד טווח תדרים מסוייםחיבור צבעי המסך (RGB), מייצרים אור לבן.
חיבור צבעי המדפסת (CMY), זה אומר בעצם לסנן את כל האור: מייצר שחור.(ע"ע)
-
בדיקת מהירות - מהם פינג וריצוד?הכי קל להסביר הוא בצורת משל לצינור מים
- הפינג: זה כמה זמן לוקח מהרגע שהכנסת מים בצד זה עד שהמים יצאו מהצד השני (בעצם מדובר בזמן שלוקח נסיעה הלוך וחזור). זה יכול להיות מושפע ממכשולים בדרך. או מאורך הצינור. (זה משפיע בעיקר על שימושים שצריכים תגובות מהירות)
- המהירות: זה כמה מים עוברים בצינור בכל שנייה, זה קשור בעיקר לרוחב הצינור, וגם למהירות המים בתוך הצינור. (זה משפיע על מהירות הורדות)
- הריצוד: זה עקביות שיעור הפינג. לכמה סוגי שימושים (בעיקר הזרמת מדיה) לא כך מפריע פינג איטי, אבל כן מפריע חוסר עקביות.
(אני לא מומחה לרשתות לכן אולי פיספסתי קצת את הנקודה, אבל כך אני מבין)
-
שאלה פילוסופית עד איזו רמה של מיקרו אופטימיזציה האדם מצווה לדקדק@ארכיטקט מקובלנו מפי רבותינו:
על שלושה דברים הקוד עומד: על התקינות, על הקריאות, ועל הביצועים. ובסדר הזה דייקא.מצאתי במגילה עתיקה הכתובה בלשון לעז:
Make It Work Make It Right Make It Fast
עוד מקובלנו מפי רבותינו:
מיטוב שלא במקום צוואר בקבוק, בזבוז אנרגיהע"ע https://en.wikipedia.org/wiki/Program_optimization#When_to_optimize
זקן מדע המחשבים דונלד קנות' אמר:
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%
-
התקנתי Visual Studio 2022 כאן המקום למי שיודע דברים חשובים על IDE בכלל - דברים ששינו לי את החיים@ארכיטקט אמר בהתקנתי Visual Studio 2022 כאן המקום למי שיודע דברים חשובים על IDE בכלל - דברים ששינו לי את החיים:
כל אחד שגילה משהו באיזה שהוא IDE פופולרי וזה שינה את חייו, אולי להעלות ולשתף את זה כאן
אני תמיד נופל בטעות של המחשבה ש"כולם כבר יודעים". אז הנה מה שעולה לי בראש כרגע על VSCODE - כמה קיצורים ותכונות שימושיות. (VSCODE ראוי לשם IDE?)
-
הקיצור ctrl+d - אני משתמש בו בתדירות. זה מוצא ומדגיש ("בוחר") את המופע הבא של הטקסט המודגש (או המילה הנוכחית אם אין משהו מודגש). כל לחיצה נוספת מדגישה עוד מופע ועוד מופע, ואז אפשר לערוך את כולם ביחד.
-
alt+shift+i - אם יש שורות מרובות בבחירה, זה הופך את הבחירה מבחירה אחת גדולה על כל הטווח לבחירות מרובות - אחת לכל שורה. ממש שימושי אם רוצים להוסיף משהו בסוף/תחילת כל שורה וכדומה.
-
alt+shift+
או alt+shift+
- משכפל את האיזור המודגש (או השורה הנוחכית) למעלה או למטה -
ctrl+enter / ctrl+shift+enter -- יורד (עולה) שורה בלי לשבור את השורה הנכחית
-
-
המלצה על קורס "מנאנד לטטריס" - איך עובד מחשב מא' עד ת'תמיד תהיתם איך ממעגלים חשמליים זעירים מגיעים למשחק טטריס?
בדיוק בשבילך קיים קורס חינמי באתר קמפוסIL שיקח אותך ממעגלים חשמליים זעירים עד למשחק טטריס.
הקורס מושקע מאוד. כחלק מהקורס אתם בונים מחשב מהמסד עד הטפחות (למעט החומרה...). עבור סימלוט המחשב משתמשים בתוכנות ייעודיות שנבנו במיוחד עבור הקורס.
עברתי בינתיים על חלק א מהקורס ומאוד נהניתי. ממליץ מאוד.