@צדיק-תמים כשהצהרה על משתנה קבוע היא ברירת המחדל שלך, אתה מוגן מפני שינויים שאינם רצויים (אתה מוכרח לאפשר זאת בצורה מפורשת).
רפאל
-
הגדרת משתנה כקבוע (const) גם כאשר לא מתוכנן להשתמש בו לאורך זמן - יש עניין? (JS) -
הגדרת משתנה כקבוע (const) גם כאשר לא מתוכנן להשתמש בו לאורך זמן - יש עניין? (JS)@צדיק-תמים מומלץ תמיד להצהיר על משתנה קבוע היכן שאפשר, כך שתהיה אינדיקציה ברורה במקרים שהדבר אינו מתאפשר.
-
C# שימוש נכון בTasksלטובת המתכנתים היקרים הכותבים בשפת C#, אני מצרף Async Guidance, עם דוגמאות קצרות ופשוטות המדגימות את השימוש הנכון בTasks (עשה ולא תעשה).
המדריך נכתב כקוד פתוח בהשתתפות אנשים רבים, ומצאתי אותו מאוד שימושי. -
חשיבת מפתחים לטווח רחוק..@nigun אמר בחשיבת מפתחים לטווח רחוק..:
בכל אופן לא נראה שזה נובע מכך שלא חשבו קדימה, אלא פשוט מתכנת שלא ידע מה המגבלות של signed Int
המגבלות הקדימו את גילוי הבעיה, לא יצרו אותה, כך שגם אם האיש היה משתמש עם Unsigned Int, הייתי שולח אותו לדרכו.
אם כי בהתחשב בקצב הפיתוח ותחלופת המוצרים של Microsoft, יתכן שלמתכנתים שם באמת אין סיבה לתכנן יותר מדי... -
סגירת יישום לכל המשתמשים במחשב נוכחי (c#)var current = Process.GetCurrentProcess(); Process.GetProcessesByName(current.ProcessName) .Where(p => p.Id != current.Id) .ToList() .ForEach(p => p.Kill()); current.Kill();
הסבר בקצרה:
- קבלת התהליך הנוכחי.
- קבלת כל התהליכים הפעילים החולקים את שמם עם התהליך הנוכחי (מלבד התהליך הנוכחי עצמו - אנו זקוקים לשמר אותו בחיים בשלב זה).
- סגירת כל התהליכים שבתוצאה.
- סגירת התהליך הנוכחי.
מומלץ להעדיף את השימוש בProcess.CloseMainWindow (המבקש מהתהליך בצורה מנומסת לסיים [Graceful exit]) על פני השימוש בProcess.Kill (המסיים את התהליך מייד, מה שעלול לגרום לתופעות שאינן רצויות) אם כי לא תמיד השימוש בו אפשרי, אולם תמיד ניתן להשתמש בProcess.Kill כFallback במקרה של כישלון:
if (!p.CloseMainWindow()) p.Kill();
קרדיט: Exit all instances of my app
** דוטנט מציעה מספר מחלקות טיימר (כדוגמת system.timers וsystem.threading.timer)
-
חשיבת מפתחים לטווח רחוק..@katz אמר בחשיבת מפתחים לטווח רחוק..:
הערך של השנה החדשה עומד על 2,201,010,001
למי שתהה: שני הספרות הראשונות מייצגות את השנה (השאר בפורמט: חודש, יום, שעה ודקה).
Date(year: 22, month: 01, day: 01, hour: 00, minute: 01)
אגב שימוש בUnsigned Int היה מאפשר עשרים שנה נוספות.
-
קוד SQL טהור לחיפוש חופשי בעמודה@ארכיטקט עיין בהמשך המקור שציינת:
E. F. Codd used the term "relation" in its mathematical sense of a finitary relation, a set of tuples on some set of n sets S1, S2, .... ,Sn.[4] Thus, an n-ary relation is interpreted, under the Closed-World Assumption, as the extension of some n-adic predicate: all and only those n-tuples whose values, substituted for corresponding free variables in the predicate, yield propositions that hold true, appear in the relation.
In mathematics, a finitary relation over sets X1, ..., Xn is a subset of the Cartesian product X1 × ⋯ × Xn; that is, it is a set of n-tuples (x1, ..., xn) consisting of elements xi in Xi.[1][2][3] Typically, the relation describes a possible connection between the elements of an n-tuple. For example, the relation "x is divisible by y and z" consists of the set of 3-tuples such that when substituted to x, y and z, respectively, make the sentence true.
במילים אחרות:
In a relational database, the table is a relation because it stores the relation between data in its column-row format. The columns are the table's attributes, and the rows represent the data records. A single row is known as a tuple
(Definition of Database Relation) -
קוד SQL טהור לחיפוש חופשי בעמודה@ארכיטקט אמר בקוד SQL טהור לחיפוש חופשי בעמודה:
(לכן הוא נקרא "יחסי"),
לא בדיוק.
@ארכיטקט אמר בקוד SQL טהור לחיפוש חופשי בעמודה:
מה עושה כאן שאילתה רקורסיבית????
לא זכיתי להבין מדוע אתה מכנה CTE "שאילתה רקורסיבית".
-
פונקציית setTimeout@ארכיטקט timer לא בדיוק מתאים כאן.
@yossiz הבנת השימוש בAPI של Promise (כמו כן שימוש נכון במילות המפתח async-await) אינה משימה פעוטה, הקוד שצורף בשאלה לא כלל שימוש בשני המנגנונים, ולעניות דעתי (וזו הייתה כוונתי בתגובה הקודמת) אין הבדל גדול ברמות הקושי.
אני ער לעובדה שהשימוש בPromises יותר נפוץ (ונתמך בתחביר), אולם יש לזכור שמדובר במנגנון חדש יחסית שעד לפני כמה שנים השימוש בו דרש יבוא של ספרייות חיצוניות, ממש כמו השימוש בRxJs כיום.
אגב הקונספט של Observable\Observer מועמד בשנים האחרונות לשילוב בתוך השפה. -
פונקציית setTimeout -
regex עם ביטוי לא מחייב@ש-ב-ח תביט טוב בתמונה השנייה.
-
regex עם ביטוי לא מחייב@ש-ב-ח תבדוק.
-
regex עם ביטוי לא מחייב@dovid לקחתי בחשבון שיתכן שהוא מעוניין לתפוס את קבוצת המספרים השנייה בנפרד, ושימוש בNon-capturing Group לא יפריע למשימה.
-
regex עם ביטוי לא מחייב@ש-ב-ח אתה מרוויח שהקו התחתון וקבוצת המספרים שבאה אחריו מאוגדים לאיבר אחד, בניגוד לשימוש כפול בOptional item בו ערך שיסתיים בקו תחתון יתאים גם ללא ספרות הבאות אחריו.
-
regex עם ביטוי לא מחייב@ש-ב-ח הדבר מכונה Optional Item
בנוסף ניתן לחסוך את השימוש החוזר באופרטור ע"י שימוש בNon-capturing Group__collection_(\d+)(?:_(\d+))?
-
חיפוש בהיסטוריית פרויקט - גיטהאב@chagold ישנם מספר פקודות שיחזירו לך את היסטורית השינויים המלאה עבור קובץ ספציפי כדוגמת
- git diff path/to/file
- git blame path/to/file
- git log --follow -p -- path/to/file
כלים ויזואלים:
- gitk path/to/file
- tig path/to/file (לא מותקן)
לחלופין אם אתה משתמש בvscode יש תוסף מדהים בשם GitLens המאפשר בן השאר ניווט בהיסטוריה של הCommits:
בנוסף התוסף יצביע על הCommit האחרון (בנוסף לבעלים של הCommit ותאריך השינוי) שהשפיע על השורה הנוכחית בקוד:
בנוסף להכל, מומלץ ללמוד על הפקודה git bisect שנועדה בדיוק עבור בעיות כמו שלך.
-
ריענון מסך באנגולר לאחר שינוי@yyy השאלה שלך איננה ברורה, בהנחה וכפי שטענת שאתה יודע למחוק איבר ממערך (ולמרות זאת כתבת את השאלה), בנוסף להנחה שמחיקת האיבר מהמערך מתבצעת בקומפוננטת האב, אני חושד שההתנהגות המתוארת בשאלה היא תוצאה של הגדרת הChangeDetectionStrategy לOnPush אם כי בהתחשב בתיאור הלא ממצה של הבעיה, אין זה אלא ניחוש בעלמא.
אני ממליץ לך לשתף קוד מינימלי שמשחזר את הבעיה באמצעות Stackblitz וכדו'. -
כת מיסיונרית נכשלה שוב בניסיון המי יודע כמה להעביר אותי על דתי@ארכיטקט
מוטלת עליך המשימה המורכבת להסביר את העובדה שישנם יותר אנשים שמשתמשים באותן מילות גנאי (ולפעמים אף מסלימים צפונה) דווקא כלפי אנגולר.
היתכן שרק אנחנו היחידים (יחסית) זכינו להתקרב ולהבחין באור? יתכן מאד שכן.אך מצד שני ניתן להסביר את הרתיעה שלי ושלך בעובדה שהתרגלנו למשהו אחר, אולם המשהו האחר הזה לאו בהכרח טוב יותר אבסולוטית.
התרגלנו לנוכחותה של סביבה דעתנית שמנהלת את החיים:
סביבה שמכתיבה (ולפעמים בצורה דיקטטורית ואכזרית) דרך ברורה,
עוזרת לנו להימנע מטעויות מיותרות,
מעירה לנו (ובאופן עדין במיוחד) כשאנחנו סוטים מהחזון של מהנדסיה.
אולם עלינו לזכור את כל התינוקות שנשבו שהשארנו מאחור, שמעולם לא ראו בדבר יתרון, אדרבה, חוסר הפשטות של הפיתוח והבריונות של C# וAngular הבריחה אותם, ולמקום רחוק מאוד.לסיכום:
אני נאלץ להודות שהזדהיתי עם כל מילה שכתבת (לפני מספר ימים מישהו פה העלה פוטס שעסק בVue, סקירה קצרה על הFramework עם דוגמא קטנה, גרמה לי לזעזוע לא קל, ולמעשה נשגב מבינתי כיצד Angular הגדולה סיימה על אותו מדף יחד עם Vue (עבדתי תקופה קצרה בחברה שפיתחה בReact עם Redux, לא סבלתי שם יותר מדי, כך שמאוד ייתכן שאם הייתי מתחיל עם React הייתי נשאר שם רח"ל).
כשאני מסתכל על המוצרים של Microsoft כדוגמת C# .NET, Visual Studio אני משתאה כל פעם מחדש על כך שאנשים לא עוזבים את הכל ובאים אל האור. את השאלה הזו ניסיתי ליישב בפוסט הנוכחי.