דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
yossizY

yossiz

@yossiz
אודות
פוסטים
6.1k
נושאים
124
קבוצות
0
עוקבים
26
עוקב אחרי
0

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • כללים לחיפושי גוגל יעילים
    yossizY yossiz

    תגובה: למה אין עדיין פורום מחשבים חרדי מקצועי??

    @nigun אמר בלמה אין עדיין פורום מחשבים חרדי מקצועי??:

    כלל ראשון: שליטה טובה באנגלית חובה

    נכון שזה עוזר, אבל לא הייתי שם את זה ככלל ראשון ואפילו לא שני
    (ממש אין לי משנה סדורה בנושא... אבל לפום ריהטא -)
    כלל ראשון: לפני שאתה מחפש את עצם הנושא, תנסה להבין את הנושא בצורה מספיקה שתוכל למקד את השאלה. תלמד את מילות המפתח שקשורים לנושא.
    כלל שני: נסה לבודד מתוך כל המילות שמתארות את השאלה את המילות שהכי סביר שיימצאו בקשר לבעיה שלך ולא בקשר לבעיות אחרות

    כל אחד מוזמן לכתוב את הכללים שלו...


  • 💡 טיפ: חיפוש מהיר באתר
    yossizY yossiz

    יש אתר שאתם מחפשים בו הרבה? אולי אמזון או עליאקספרס. למתכנתים, אולי npm או github.
    אפשר להגדיר אותו כמנוע חיפוש בכרום ולחפש באתר מתוך שורת הכתובת

    • כינסו לכתובת זו: chrome://settings/searchEngines או ל"הגדרות" > "מנוע חיפוש" > "ניהול של מנועי החיפוש ושל החיפוש באתרים ספציפיים".

    • בקטע "חיפוש באתרים ספציפיים" יש רשימה של אתרים (אתרים שנכנסתם אליהם בעבר) שמפרסמים אפשרות לחפש בהם.

    • לכל ערך ברשימה יש שתי עמודות: שם האתר, וקיצור דרך

    • השימוש בקיצור הדרך הוא על ידי כתיבת המילה המוגדרת בשורת הכתובת של כרום ואח"כ טאב.
      כרום יציין את שם האתר בו נעשה החיפוש:
      0ce7ec8d-bf8e-4a7b-afc4-673b30553bd5-CleanShot 2023-06-15 at 11.08.12.png

    • הרשימה מחולקת לקיצורי דרך פעילים ולא פעילים. אם האתר שבו אתה מעוניין לא נמצא ברשימה של הפעילים, חפשו ברשימת הלא פעילים את האתר שבו אתה מעוניין ותלחצו על "הפעלה" (יש תיבת חיפוש למעלה בתחילת הדף)

    • ערכו את הקיצור דרך למשהו נוח בשבילך ותהנו מהאפשרות לחפש באתר מתוך שורת הכתובת של כרום

    יש המון אתרים שכרום מוסיף לרשימה אוטומטית. אם האתר הרצוי לא מופיע ברשימה ואתה יודע איך מחפשים בו, אפשר להוסיף אותו ידנית בלחיצה על "הוספה".

    מידע נוסף

    • 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

  • למה כדאי להשתמש במנהל סיסמאות
    yossizY yossiz

    תגובה: סיסמה ארוכה באתר "בנק" הדואר

    @yossiz אמר בסיסמה ארוכה באתר "בנק" הדואר:

    מומלץ לעבור למנהל סיסמאות...

    @aknvtchtk אמר בסיסמה ארוכה באתר "בנק" הדואר:

    @yossiz אני בדר"כ זוכר את הסיסמאות והם שמורים לי גם אלא ששם וכו' וכו'

    לא זו סיבת ההמלצה, כדי שלא יאבדו לך. (למרות שזה גם דבר טוב).

    הסיבה להמלצה היא כך: אם אתה לא משתמש במנהל סיסמאות אתה בד"כ מוכרח א) ליצור סיסמאות קלים לזכירה ב) להשתמש באותה סיסמה או בוריאציות שלה בכמה וכמה אתרים כי הרי הזכרון האנושי מוגבל ביכולותיה.

    והרי מעשים בכל יום שאתרים נפרצים, ומה קורה אז? הפורצים ניגשים למסד הנתונים ומוציאים את כל שמות המשתמשים והסיסמאות. ועוברים עליהם אחד אחד ומפצחים אותם. אם זה אתר ממש גרוע, ייתכן והסיסמאות שמורות בלי שום הצפנה, אבל גם במקרים טובים יותר עכ"פ קורה הרבה באתרים גרועים שההצפנה לא מספיק חזקה.
    ובד"כ כל סיסמה שקלה לזכירה היא גם קלה יותר לפיצוח.

    ואם תשאל "מה איכפת לי אם לפורץ יש את הסיסמה שלי לפורום XYZ"?

    התשובה היא שמיד שמצליחים לפצח זוג של כתובת מייל וסיסמה הם עוברים על אתרים אחרים ומנסים את הצירוף הזה של מייל וסיסמה. ואז הם יכולים להגיע לאתרים חשובים באמת.

    לכן מומלץ א) להשתמש בסיסמאות שלא בנויות ממילות שכיחות (וממילא קשות לזכירה). ב) לא להשתמש באותה סיסמה בכמה אתרים.

    מנהל סיסמאות יכול לעזור מאוד בשמירת ההמלצות

    לסיכום, המלצות:

    • הסיסמה של המייל היא המפתח לזיהוי שלך באינטרנט, זה חייב להיות סיסמה שאתה לא משתמש בו בשום מקום אחר, ושיהיה קשה לנחש.
    • סיסמאות של אתרים שמאחסנים מידע רגיש שלך, כמו פרטי תשלום, וכו' מומלץ מאוד שיהיו ייחודיות, כלומר שלא תשתמש באותה סיסמה בכמה אתרים.
    • סיסמאות עבור אתרים אחרים שלא חשובים אפשר להקל ראש קצת, (וכן אני נוהג...)

  • GitHub Copilot עכשיו בחינם
    yossizY yossiz

    @קומפיונט כתב בGitHub Copilot עכשיו בחינם:

    ואגב, למי שלא אוהב לשתף קטעי קוד שלו עם GitHub

    כמובן שזה רלוונטי רק למי שמשקיע בקוד שלו ולא נותן ל-AI לחבר בשבילו הכל...
    (סליחה, לא שלטתי בעצמי, יש לי הרבה קיטור לשחרר נגד אנשים שעושים שימוש יתר ולא נכון ב-AI...)


  • צלילה לעומק TS: טייפ X לא זהה ל-union של כל הערכים האפשריים שהטייפ כולל
    yossizY yossiz

    הטייפ השולל: 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 במאמר זה - יש הבדל קטן בין השניים אבל זה נושא לשיחה אחרת ולא חשוב כעת
    פה אני רוצה להתמקד על האינטואיציות המרכזיות ולא על פרטים קטנים

    והנה קוד המקור של Omit

    type 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 של כל המפתחות של שדות בטייפ T
    • Exclude<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 יכול להיות חבר בקובצת HasFoo

    const 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>
    

    אנשים מצפים שדבר כזה יעבוד. אבל זה לא עובד. ולפי הנ"ל זה מובן
    נזכיר את קוד המקור של Exclude

    type Exclude<T, U> = T extends U ? never : T
    

    הטייפ מתבסס על העובדה שלפני בדיקת התנאי יש פירוק של T למרכיביו ובדיקת התנאי רץ על כל מרכיב בנפרד (Distributive Conditional Types)
    אבל לצערנו, הטייפ string הוא אטומי. הוא לא מתפרק לכל המחרוזות שמרכיבים אותו. לכן התנאי T extends U אף פעם לא מתקיים


    תם ולא נשלם


  • לימודי תכנות
    yossizY yossiz

    קשה לייעץ בפרטות
    באופן כללי מאוד (לענ"ד),
    העבודות הכי נפוצות והכי נגישות למתחילים הם פיתוח אתרים, זה נכון בין למשרות מסודרות בין לפרילנסינג
    בפיתוח אתרים יש צד שרת וצד לקוח, על פי רוב לאנשים יש נטייה יותר לצד זה או השני אבל הכי כדאי ללמוד שניהם
    הטכנולוגיות העיקריות שצריך ללמוד עבור צד לקוח זה HTML ו-CSS, ושפת javascript, ואז כדאי ללמוד פריימוורק אחד (אני אישית ממליץ על VUE עבור מתחילים, אבל אפשר ללמוד גם ריאקט או אנגולר)
    עבור צד שרת צריך ללמוד או nodejs או php (יש עוד הרבה שפות אבל אלו הכי פופולאריות ונגישות היום. אפשר להוסיף במקום שלישי גם פייתון). ב-php מומלץ לעבוד עם פריימוורק כמו laraval. אני ממליץ לעבוד עם PHP ו-laravel כך יהיה לך הכי קל להקים אתר שלם מקצועי עם הכי מעט עבודה
    כדאי גם ללמוד קצת על מסדי נתונים ו-SQL

    צריך לזכור שעבודה בתכנות פירושו למידה מתמדת. אף פעם לא גומרים ללמוד, אבל צריך לעבור מינימום למידה בסיסי של הנ"ל כדי להתחיל בפיתוח full stack דהיינו גם צד שרת וגם צד לקוח

    למי שזה מתאים לו, אפשר בהחלט ללמוד לבד, אבל זה תלוי באופי שלך, אחרת אפשר למצוא המון קורסים באנגלית או קצת בעברית, תוכל לבקש המלצות על קורס בנושא ספציפי בפוסט נפרד

    אפשרות שונה לגמרי הוא ללמוד #C וללמוד פיתוח תוכנות דסקטופ לווינדוס. אבל נראה לי שיותר קשה למצוא עבודה בזה

    האם יש מספיק עבודה בתחום בצורה שמאפשר ניהול אורח חיים חרדי? בהחלט כן, אבל זה גם בהחלט לא מתאים לכל אופי. וצריך סייעתא דשמיא.


  • עצומה בשביל שלמקדונלד'ס יהיה סניף כשר
    yossizY yossiz

    אני מתלבט אם לצחוק או לבכות או להתעלם במשיכת כתפיים


  • שימוש יעיל ב AI
    yossizY yossiz

    תודה @יוסף-בן-שמעון
    הייתי מוסיף/מחדד שלא טוב להשתמש ב-AI לברר עובדות
    זה מצויין לקבל רעיונות, כיוונים, הסברים וכו ואפילו ידיעות כלליות, אבל אי אפשר לברר פרטים מולו

    נקודה נוספת: לא לדבר איתו כמו בנאדם. זה מכונה, וכדאי לזכור את זה תמיד. אני רואה אנשים מתווכחים, מתלוצצים, מתבדחים, מבקשים חיזוקים מחמאות וטפיחות שכם, כל זה לא נכון ומגוחך. צריך לזכור שזה מכונה.

    לאנשי הדור הישן: יש נושא טיפים לחיפושי גוגל יעילים


  • שאלה פילוסופית עד איזו רמה של מיקרו אופטימיזציה האדם מצווה לדקדק
    yossizY yossiz

    @dovid אמר בשאלה פילוסופית עד איזו רמה של מיקרו אופטימיזציה האדם מצווה לדקדק:

    @ארכיטקט אני חושב שמתחילים צריכים להיות פאנטים

    אם מותר לי להוסיף (מקווה שזו הבהרה ולא סילוף):
    גם כאן קודם כל להיות פנאטי על ניפוי באגים ואז על קוד קריא ובנוי טוב ורק אח"כ על ביצועים

    רק להאריך יותר להסביר את הכלל הזה:
    קוד שלא עושה מה שביקשת ממנו לא שווה כלום גם אם זה הכי אלגנטי והכי מהר, אז ברור שעדיפות ראשונה זה קוד שעובד.
    קוד שקשה לתחזוק עולה יותר מקוד איטי, לכן זה עדיפות שנייה. (כמובן מדובר כל עוד שזה עונה לדרישות, אם זה איטי עד שזה לא עונה על הדרישות אז זה בכלל השלב הראשון)


  • דרוש מתכנת מנוסה למענה על שאלות גם מחוץ לגבולות הפורום
    yossizY yossiz

    @davidnead אמר בדרוש מתכנת מנוסה למענה על שאלות גם מחוץ לגבולות הפורום:

    מעט חסד, שבדרך כלל לא דורש ממנו הרבה

    אתה צודק בהסתכלות הפרטית על כל בקשה, לפעמים קשה למבקש להבין למה כל כך קשה לענות לו על שאלה קטנטנה כזו או אחרת, אבל מנסיון, מי שמשקיע מעט בעזרה לאחרים לפעמים יכול להגיע ל-burnout אז כל עזרה לא אמור להיות מובנת מאליה.

    יש כמה יתרונות בעזרה דרך הפורום שאין בעזרה בפרטי,

    • אין לחץ. אתה מחליט מתי ועל מה לענות וממה להתעלם
    • יש מוטיבציה לכתוב משהו איכותי ומושקע, ומקבלים הכרה על ההשקעה, הדבר הזה גורם שלפעמים הרווח לעוזר יכול לעלות על הרווח לנעזר. אני אישית הרווחתי המון מהעזרה דרך הפורום, כאשר (לענ"ד) רוב התועלת לא הייתי מקבל מלענות בפרטי.

  • 💡 תכונה לא ידועה בוורד - צבירת קטעים בלוח והדבקה של כולם ביחד
    yossizY yossiz

    הנה תכונה בוורד שמאוד לא מוכר.

    מה עושים אם צריך להעתיק מתוך קובץ וורד כמה קטעים לא רצופים?

    אז יש דבר אחד שכן מוכר:
    בוחרים קטע, ומוסיפים עוד קטעים לבחירה על ידי לחיצה על ctrl בעת הבחירה, כך מקבלים בחירות מרובות לא רצופים, ומעתיקים כולם ביחד ומדביקים.

    דוגמא:

    87dd8329-3a78-4958-85e0-ade5be1d538e-image.png

    אבל מה תעשה אם זה קובץ ארוך ארוך ארוך? זה כבר נהיה מאוד מסורבל לעבוד כך.

    בשביל זה יש את ה-"spike". זה כמו לוח שני (לא קשור ללוח העיקרי) שאפשר להוסיף לו דברים. צורת העבודה כך:

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

    מתחת לשטח ה-spike הוא טקסט אוטומטי, אפשר לראות את זה פה (במארגן של חלקים מהירים - אין לי מושג איך הם קוראים לזה בעברית...):
    c62cdf86-96e9-457a-9520-274f560c5be0-image.png

    הוספה:
    זה נמצא גם פה:
    6f85b87c-801e-41bc-9581-d6c0bc738ff3-image.png


  • מדריך: שורת הפקודה - תגובות
    yossizY yossiz

    כאן ניתן להגיב על מדריך: שורת הפקודה


  • איך כותבים ומדפיסים בצבע לבן בוורד
    yossizY yossiz

    @חוקר אמר באיך כותבים ומדפיסים בצבע לבן בוורד:

    למיטב הבנתי בהרכבת צבעים אמור להיות למדפסת אפשרות להרכיב צבע לבן מהצבעים במדפסת (לבן זה תרכובת של שלושת הצבעים העיקריים).

    @יעקב-ישראל אמר באיך כותבים ומדפיסים בצבע לבן בוורד:

    חיבור כל ארבעת הצבעים לא אמור ליצור לבן ?

    איך שזה מובן היום: הראייה שלנו עובדת כך: אור (לשם הדוגמה נדבר על אור מהשמש) יוצא ממקור האור (השמש), ונכנס לעין שלנו.
    כאשר אין חפצים מסביב, האור עובר בנתיב ישר מהשמש אל העין, מכל הכיוונים האחרים אין אור, כתוצאה מזה נראה רק עיגול לבן (צהוב) בכיוון של השמש, והכל חוץ מזה יהיה שחור
    כאשר יש חפצים בסביבה, האור נתקל בחפצים וחוזרת לעין שלנו מעוד כיוונים, הצורה של האור שחוזרת לעין מלמדת אותנו על החפצים. חפץ שיש לו צבע, מסנן את האור הלבן ורק חלק מהתדרים חוזרים, זה יוצר רושם של צבע. המוח שלנו מייצר תמונה של הסביבה מתוך הצורה של האור המסונן שחוזר לעין שלנו.

    יש הבדל עצום בין מדפסת למסך.
    התפקיד של המדפסת הוא לגרום שהאור הלבן שיוצא מהשמש ונתקל בנייר הלבן, יחזור לעין שלנו בצורה מסוננת, בצורה שהוא ייצור רושם של תמונה מסויימת. לשם כן הוא צריך להוריד תדרים מסויימים של האור.
    צבעי המדפסת מורידים חלקים מן האור, כדי לקבל את הצבע הנכון, מתחילים מלבן, ומורידים את הצבעים המיותרים.
    מסך לעומת זאת, לא עושה שימוש כלל באור השמש, אדרבה אור השמש מפריע לעבודתו, הוא יוצר גלי אור חדשים ממקורות האור שבתוך המסך, בצורה שגלי האור ייצרו רושם של תמונה מסויימת,
    כדי שהמסך יקבל צבע אדום, הוא צריך ליצור רק התדר של אור אדום, כדי לקבל לבן, הוא צריך ליצור את כל התדרים של האור ביחד.
    כדי לקבל צבע מסויים המסך מוסיף את הצבעים (תדרים) הנדרשים

    צבעי המסך (RGB) הם מקורות אור - כל אחד מוסיף טווח תדרים מסויים.
    צבעי המדפסת (CMY) הם מסנני אור - כל אחד מוריד טווח תדרים מסויים

    חיבור צבעי המסך (RGB), מייצרים אור לבן.
    חיבור צבעי המדפסת (CMY), זה אומר בעצם לסנן את כל האור: מייצר שחור.

    (ע"ע)


  • בדיקת מהירות - מהם פינג וריצוד?
    yossizY yossiz

    הכי קל להסביר הוא בצורת משל לצינור מים

    • הפינג: זה כמה זמן לוקח מהרגע שהכנסת מים בצד זה עד שהמים יצאו מהצד השני (בעצם מדובר בזמן שלוקח נסיעה הלוך וחזור). זה יכול להיות מושפע ממכשולים בדרך. או מאורך הצינור. (זה משפיע בעיקר על שימושים שצריכים תגובות מהירות)
    • המהירות: זה כמה מים עוברים בצינור בכל שנייה, זה קשור בעיקר לרוחב הצינור, וגם למהירות המים בתוך הצינור. (זה משפיע על מהירות הורדות)
    • הריצוד: זה עקביות שיעור הפינג. לכמה סוגי שימושים (בעיקר הזרמת מדיה) לא כך מפריע פינג איטי, אבל כן מפריע חוסר עקביות.

    (אני לא מומחה לרשתות לכן אולי פיספסתי קצת את הנקודה, אבל כך אני מבין)


  • פורום מדהים!!
    yossizY yossiz

    @סלבודקער אחד מהדברים הטובים פה שאין סתם קשקשת. תנסה לשמור שימשיך להיות כך...


  • שאלה פילוסופית עד איזו רמה של מיקרו אופטימיזציה האדם מצווה לדקדק
    yossizY yossiz

    @ארכיטקט מקובלנו מפי רבותינו:
    על שלושה דברים הקוד עומד: על התקינות, על הקריאות, ועל הביצועים. ובסדר הזה דייקא.

    מצאתי במגילה עתיקה הכתובה בלשון לעז:

    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 בכלל - דברים ששינו לי את החיים
    yossizY yossiz

    @ארכיטקט אמר בהתקנתי Visual Studio 2022 כאן המקום למי שיודע דברים חשובים על IDE בכלל - דברים ששינו לי את החיים:

    כל אחד שגילה משהו באיזה שהוא IDE פופולרי וזה שינה את חייו, אולי להעלות ולשתף את זה כאן

    אני תמיד נופל בטעות של המחשבה ש"כולם כבר יודעים". אז הנה מה שעולה לי בראש כרגע על VSCODE - כמה קיצורים ותכונות שימושיות. (VSCODE ראוי לשם IDE?)

    • הקיצור ctrl+d - אני משתמש בו בתדירות. זה מוצא ומדגיש ("בוחר") את המופע הבא של הטקסט המודגש (או המילה הנוכחית אם אין משהו מודגש). כל לחיצה נוספת מדגישה עוד מופע ועוד מופע, ואז אפשר לערוך את כולם ביחד.

    • alt+shift+i - אם יש שורות מרובות בבחירה, זה הופך את הבחירה מבחירה אחת גדולה על כל הטווח לבחירות מרובות - אחת לכל שורה. ממש שימושי אם רוצים להוסיף משהו בסוף/תחילת כל שורה וכדומה.

    • alt+shift+⬇ או alt+shift+⬆ - משכפל את האיזור המודגש (או השורה הנוחכית) למעלה או למטה

    • ctrl+enter / ctrl+shift+enter -- יורד (עולה) שורה בלי לשבור את השורה הנכחית


  • המלצה על קורס "מנאנד לטטריס" - איך עובד מחשב מא' עד ת'
    yossizY yossiz

    תמיד תהיתם איך ממעגלים חשמליים זעירים מגיעים למשחק טטריס?
    בדיוק בשבילך קיים קורס חינמי באתר קמפוסIL שיקח אותך ממעגלים חשמליים זעירים עד למשחק טטריס.
    הקורס מושקע מאוד. כחלק מהקורס אתם בונים מחשב מהמסד עד הטפחות (למעט החומרה...). עבור סימלוט המחשב משתמשים בתוכנות ייעודיות שנבנו במיוחד עבור הקורס.
    עברתי בינתיים על חלק א מהקורס ומאוד נהניתי. ממליץ מאוד.

    https://campus.gov.il/course/huji-acd-huji-nand2tetris


  • מעוניין לסייע (ללא תשלום) למפתח WEB
    yossizY yossiz

    @chv אני לא כל כך מסכים לגישה הזאת של "יש לך את זה" "תלך כבר מהתחלה על הכי גבוה שאתה חולם".
    אני מכיר אנשים שהגישה הזאת עובדת אצלם.
    מצד שני מי שלא ניחון בבטחון עצמי "בריא מאוד" כן יכול לקבל המון תועלת מקצת שפשוף בסביבה פחות מחייבת מאשר העולם האמיתי עם דדליינים וכו'.
    כמובן שאם יש הצעה פחות מחייבת ועם כסף אז ברור שצריך לקבל אותו. אבל דברים כאלו לא גדלים באילנות.


  • בקשה | מדריכים בJS
    yossizY yossiz

    @אינטרקום אמר בבקשה | מדריכים בJS:

    נו.. מעולה... איפה אתה גר??

    אני בירושלים. אם זה מתאים לך שלח לי מייל. (אני לא מבטיח לך שום דבר, אבל בטח נוכל להיפגש ולדבר)

  • 1 / 1
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום