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

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

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

רפאל

@רפאל
אודות
פוסטים
186
נושאים
3
קבוצות
0
עוקבים
3
עוקב אחרי
0

פוסטים

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

  • שאלה. איך לכתוב ביטוי רג'קס? ואיך למחוק ברג'קס מילים שלמות?
    רפאלר רפאל

    @חגי אם @ענן אכן מעוניין לבחור מילים המכילות נקודה (למעט שאר התווים) דבר שלא היה ברור בתוכן השאלה:

    אני רוצה להסיר מתוכן של משתנה כל מילה שמכילה ספרות

    ניתן לעשות שימוש בביטוי דלהלן:

    \d+(\.\d+)?
    

  • שאלה. איך לכתוב ביטוי רג'קס? ואיך למחוק ברג'קס מילים שלמות?
    רפאלר רפאל

    @צדיק-תמים המטא-תו S\ הפותח יתאים לנקודה המופיעה לפני המספר\ים, והמטא תו הסוגר יתאים לנקודה המופיעה לאחר המספר\ים.

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

    אגב בצורה הזאת, במשפט ש @ענן הביא לדוגמה יווצר רווח כפול מיותר:

    ניתן לבחור את הרווח המופיע בסיום המילה:

    str.replace(/\S*\d+\S*\s?/g, '')
    

  • שאלה. איך לכתוב ביטוי רג'קס? ואיך למחוק ברג'קס מילים שלמות?
    רפאלר רפאל
    str.replace(/\S*\d\S*/g, '')
    

    התווים המשתתפים:

    • הביטוי עצמו עטוף בקו נטוי כדי לציין שמדובר באוביקט מסוג Regex
    • S\ תואם לכל תו אשר אינו Whitespace (לדוגמא שורה חדשה \ טאב \ רווח)
    • * תואם לתו הקודם 0 פעמים או יותר (התו מציין את כמות ההופעות הדרושה של התו הקודם)
    • d\ תואם לתווים 0-9
    • g לאחר סיום הביטוי מגיע תורם של ה"דגלים" כדי להחליט על האופן הרצוי בו יתבצע התהליך, לדוגמא במקרה זה אנו עושים שימוש בg\ כך שהתהליך יתבצע עבור כל המילים, ולא יושלם אחר מציאת ההתאמה הראשונה

    אופן הפעולה של הביטוי:

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


  • תאימות css בעיצוב לאפליקציה
    רפאלר רפאל

    @chagold אכפת לך לשתף את השורה בה זה מוגדר?


  • תאימות css בעיצוב לאפליקציה
    רפאלר רפאל

    תוסיף את התגית הבאה לhead:

    <meta name="viewport" content="width=device-width, initial-scale=1">
    

    מדוע הViewport אינו מוגדר כך כברירת מחדל?

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


  • תמונת דוקר mysql:8.0 זוללת זיכרון
    רפאלר רפאל

    @יוסף-בן-שמעון מאוד כדאי שתציג את הקובץ במלואו


  • TS: הגדרת interface לאובייקט המכיל מופעים של קלאס גנרי
    רפאלר רפאל

    @yossiz אמר בTS: הגדרת interface לאובייקט המכיל מופעים של קלאס גנרי:

    לכן התבלבלתי.

    אתה ממש לא. התעלמתי לגמרי מהירושה. אתה פשוט צודק.


  • TS: הגדרת interface לאובייקט המכיל מופעים של קלאס גנרי
    רפאלר רפאל

    להוסיף על דבריו הנכונים של @yossiz:

    נתונים שתי חתימות:

    perform(instruction: Instruction<UnaryOperands>): void;
    perform(instruction: Instruction<BinaryOperands>): void;
    

    החתימה הנכונה תיקבע לפי זהות הפרמטר הניתן לInstruction (הסוג של T), כיוון שהסוג שמועבר בדוגמה לInstruction הוא מסוג Union פתוח של שני הסוגים (UnaryOperands | BinaryOperands) המהדר אינו יכול לקבוע את זהות החתימה הנכונה משום שבזמן הכתיבה לא ניתן לדעת את הנתון הזה (זהות הסוג הספיציפי בתוך הUnion).

    די ברור מדוע הקוד דלהלן אינו תקין:

    interface A { field1: number; }
    interface B { field2: number; }
    
    function perform(param: A): void;
    function perform(param: B): void;
    function perform(param: A | B): void { }
    
    let param: A | B;
    
    perform(param);
    

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

    No overload matches this call.
    
    Overload 1 of 2, '(param: A): void', gave the following error.
      Argument of type 'A | B' is not assignable to parameter of type 'A'.
        Property 'field1' is missing in type 'B' but required in type 'A'.
    
    Overload 2 of 2, '(param: B): void', gave the following error.
      Argument of type 'A | B' is not assignable to parameter of type 'B'.
        Property 'field2' is missing in type 'A' but required in type 'B'.ts(2769)
    

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


  • TS: הגדרת interface לאובייקט המכיל מופעים של קלאס גנרי
    רפאלר רפאל

    @מוטי-אורן אתה יכול להשתמש בUtility Type דלהלן כדי להפוך את כל השדות החסרים בBase לOptional:

    /**
     *  Construct a type with the properties of TOptional in which all keys not included in TRequired are marked as optional
     */
    type MarkBaseMissingPropertiesAsOptional<TRequired, TOptional extends TRequired> = Partial<Exclude<TOptional, keyof TRequired>> & Pick<TOptional, keyof TRequired>;
    

    שימוש

    MarkBaseMissingPropertiesAsOptional<UnaryOperands, BinaryOperands>
    

    תוצאה

    {
        dst: string;
        src?: string;
    }
    

  • TS: הגדרת interface לאובייקט המכיל מופעים של קלאס גנרי
    רפאלר רפאל

    נאלצתי לנחש חלק מהקוד. השורות דלהלן מתקמפלות כראוי.

    type OptionalExceptFor<T, TRequired extends keyof T> = Partial<T> & Pick<T, TRequired>
    
    interface UnaryOperands { dst: number; }
    interface BinaryOperands extends UnaryOperands { src: number; }
    interface Instruction<T extends UnaryOperands> { operands: T; }
    
    function perform(instruction: Instruction<UnaryOperands>): void
    function perform(instruction: Instruction<BinaryOperands>): void
    function perform(instruction: Instruction<OptionalExceptFor<BinaryOperands, 'dst'>>): void { }
    
    perform({ operands: { dst: 45 } });
    

  • אבטחת מידע
    רפאלר רפאל

    @mekev אמר באבטחת מידע:

    איך הויזואל סטודיו שולח את המידע

    ויזואל סטודיו אינו מתקשר עם מסד הנתונים, התוכנה שלך היא שעושה זאת.
    בחירה בחיבור מאובטח TLS מתאפשרת בעת יצירתו ע"י הגדרת הפרמטר Encrypt לTrue בConnection String.

    var builder = new SqlConnectionStringBuilder
    {
    	DataSource = "ServerName",
    	InitialCatalog = "DatabaseName",
    	UserID = "UserName",
    	Password = "UserPassword",
    	Encrypt = true
    };
    
    var connection = new SqlConnection(builder.ConnectionString);
    

    כמובן שעליך לטפל ברמת המסד ביצירת תעודת אבטחה שתוכר ע"י הלקוח (ע"י יצירת תעודה חתומה ע"י CA כדוגמת Let’s Encrypt או ע"י יצוא התעודה והתקנה אצל הלקוח, לחלופין ניתן לבטל את האימות ע"י הוספת TrustServerCertificate=True לConnection String [לא מומלץ])
    כמו כן יש לאפשר במסד כניסת חיבורים מאובטחים.


  • smoove.io, כל יום ספאם אחר
    רפאלר רפאל

    @by6199 מכתב שפורסם לאחרונה ע"י שורת רבנים וראשי בתי דין עיין ס' ז.

    w2xjacid.jpeg


  • פרומיסים לוקחים זמן?
    רפאלר רפאל

    Microtasks/Macrotasks

    Microtasks/Macrotasks הם משימות הזוכות ליחס שונה בJS, המשימות נכנסות לתור מיוחד וממתינות עד לאחר סיום ההרצה של המשימות בStack, רגע לפני הריצה הבאה של הEvent loop.

    דוגמאות לפעולות מסוג Micro-Macro)Tasks):

    • SetTimeOut
    • SetInterval
    • Promise
    • Mutation Observer API
      ועוד (ניתן לעיין בתרשים למטה)

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

    0_DZVAmBK6HlZTUov1.gif

    נ.ב. לקריאה על ההבדל בין Macrotasks וMicrotasks - ובקצרה: לפעולות מסוג Micro עדיפות גבוהה יותר.


  • תוספים שימושיים לVSC
    רפאלר רפאל

    ההשלמה האוטומטית מבוססת הבינה מלאכותית המובנית בVisual Studio 2022 שהזכיר @dovid תומכת גם בTypeScript/JavaScript (הרשימה המלאה למטה) בנוסף Visual Studio 2022 מציע מעלות ואפשרויות רבות נוספות עבור הפיתוח בTypeScript/JavaScript (כפי שניתן לראות כאן) מה שהופך אותו לIDE מצויין גם עבור שפות אלו.

    עם זאת משתמשי VSC גם יכולים להנות מאותה השלמה אוטומטית באמצעות הורדת התוסף הפופולארי Visual Studio IntelliCode, התוסף ממוקם במקום השמיני ברשימת התוספים הפופולריים ביותר של VSC עם מעל 17 מיליון הורדות.

    השפות הנתמכות ע"י Visual Studio IntelliCode:

    1. Python
    2. TypeScript/JavaScript
    3. Java

    השפות הנתמכות ע"י Visual Studio 2022 AI-based IntelliCode:

    1. C#
    2. C++
    3. TypeScript/JavaScript
    4. XAML
    5. Visual Basic

  • רג'קס - איך לזהות חזרה על אותו תו?
    רפאלר רפאל
    string.replace(/([A-Z])(\1{2})\1+/g,'$1$2')
    

    הסבר בקצרה:

    בחירה

    1. ([א-ת]) הכנס תו בטווח של א-ת לתוך קבוצה $1
    2. ({2}1\) הכנס תווים הזהים לתו מהקבוצה הראשונה לתוך קבוצה $2, אם מופיעים פעמיים נוספות
    3. +1\ בחר את שאר ההופעות של התו מהקבוצה הראשונה

    החלפה

    1. $1$2 החלף את המחרוזת שנבחרה עם הקבוצה הראשונה והשנייה

     
    להלן דוגמא של הביטוי הנ"ל בRegex101

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

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

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