שיחת תבנית:לוח חודשי עברי בחמש שנים

message: מציעה לשנות לשלוש שנים (קודמת, נוכחית, הבאה) במקום חמש. התבנית הזו תופסת הרבה יותר מדי מקום ביותר מדי ערכים. -- ענבל • כ' בטבת ה'תשע"ו • 18:42, 31 בדצמבר 2015 (IST)
replies: text: מציע להשאיר את כמות השנים רק להקטין אותם קצת שיהיה בשורה אחת ● קער א וועלט • שיחה • 15:27 • כ"ה באדר ה'תשפ"א
replies: text: : איך שעכשיו זה מצוין. לא לגעת. בורה בורה - שיחה 16:48, 9 במרץ 2021 (IST)
replies: text: ::, זה לדעתך נראה יפה כשזה בשתי שורות או שאין אפשרות אחרת? ● קער א וועלט • שיחה • 00:52 • כ"ב באייר ה'תשפ"א
replies: text: ::: זה עכשיו שינית או שהמסך שלי יותר קטן כי החלפתי מחשב? נסה 3 ו-2 עם אתה שינית ותייג אותי. בורה בורה - שיחה 01:35, 4 במאי 2021 (IDT)
thread_title: מספר השנים

message: משתמש:E L Yekutiel שים לב ששם הטאב עכשיו מפגר בשנה אחרי התוכן וכותרת הטאב בפועל. הטאב ה'תשפ"ה מראה תשרי ה'תשפ"ו. בורה בורה ⁃ שיחה 04:47, 1 במרץ 2024 (IST)
replies: text: היי @בורה בורה, אכן שמתי לב לזה. מדובר רק כאשר לא נותנים לתבנית פרמטר; אם תסתכל בכל אחד מערכי הימים, למשל ב' בניסן, המצב שם תקין (שם קוראים לתבנית עם פרמטרים והיא מתנהגת נכון).

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

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

text: אני לא יודע לומר בוודאות שזה היה המצב גם לפני כן, כי שמתי לב לזה רק אחרי שהתחלתי לערוך, אבל אני כמעט בטוח שלא נגעתי במשהו ששייך לזה. אפשר לשחזר את העריכות שלי בכל התבניות של הלוחות החודשיים כדי לוודא, אבל בכל מקרה אני רוצה לחפש את המקור להתנהגות הזו. ‏E L Yekutiel‏ - שיחה 07:04, 1 במרץ 2024 (IST)
replies: text: :@בורה בורה מצאתי את הגורם לבאג, וזה אכן היה שם גם לפני העריכות שלי.

text: :אז ככה:

text: :ברירת המחדל אמורה לתת את הלוחות שמתאימים לחודש הנוכחי סביב השנה הנוכחית (כלומר הלוח המרכזי - השלישי מתוך החמישה - צריך להיות מהשנה הנוכחית).

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

text: :ההסבר לכל המוזרויות האלה הוא חוסר עקביות בהתייחסות של חלקים שונים בקוד לחודש אדר א' (החודש הנוכחי). הפונקציה המפרסרת של מדיהויקי שמחזירה את מספר החודש העברי הנוכחי, #זמןמ:xjn, מחזירה עבור אדר א' את התוצאה 13 (בשנה פשוטה החודשים מחזירים את המספרים 1 עד 12, ובשנה מעוברת אין 6, אלא אדר א ואדר ב מחזירים 13 ו-14).

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

text: :ההתנהגות הזו היא דווקא ההתנהגות הרצויה של התבנית לכל מיני צרכים - למשל כדי לבדוק אם השנה מעוברת, יש תבניות אחרות שפשוט בודקות את ההפרש (בימים) בין ראש חודש 6 לראש חודש 7, וקובעות אם זה חודש אחד או חודשיים; ואת "חודש 13" צריך כדי לברר את האורך של חודש אלול (מוצאים את ההפרש בימים בין ראש חודש אלול לראש חודש תשרי שאחריו). אעיר שאת שני הדברים האלה אפשר לעשות גם בדרכים אחרות (לחשב את השארית מחלוקה של מספר השנה ב-19 בשביל לדעת אם השנה מעוברת, וחודש אלול תמיד באורך 29 יום), אבל זה לא מענייננו.

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

text: :אדגיש שוב שלא מדובר כאן בקוד שאני הוספתי - כמוך רק שמתי לב להתנהגות המוזרה הזו, וניסיתי להבין מה הגורם שלה. ‏E L Yekutiel‏ - שיחה 11:13, 1 במרץ 2024 (IST)
replies: text: ::@בורה בורה תרצה שאתקן? יש לי רעיונות. ‏E L Yekutiel‏ - שיחה 10:20, 6 במרץ 2024 (IST)
replies: text: :::כן, ודאי. תודה בורה בורה ⁃ שיחה 14:02, 6 במרץ 2024 (IST)
replies: text: ::::@בורה בורה מעולה, בשמחה!

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

text: ::::האם זה בסדר? האם לפתוח קודם דיון בוק:אד?

text: ::::תודה! ‏E L Yekutiel‏ - שיחה 17:09, 6 במרץ 2024 (IST)
replies: text: :::::היו כבר מספר דיונים על הוספת תבניות עזר וזה תמיד עובר ללא התנגדות... אז לא חייבים עוד דיון. לך על מה שהכי נכון לעשות בורה בורה ⁃ שיחה 18:36, 6 במרץ 2024 (IST)
replies: text: ::::::@בורה בורה .

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

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

text: ::::::תודה רבה! ‏E L Yekutiel‏ - שיחה 09:17, 8 במרץ 2024 (IST)
replies: text: :::::::כן, על זה פתח שם דיון ותייג בו את משתמש:DMY בורה בורה ⁃ שיחה 13:14, 8 במרץ 2024 (IST)
היי, התכוונתי לפתוח דיון בוק:אד כפי שהציע , אבל אז ראיתי את הדיון ש(לא בדיוק) הסתיים כאן, וחשבתי שעדיף לוודא שיש בכלל טעם להגיע לוק:אד.
אתחיל מהשורה התחתונה: התבנית  משתמשת בתבניות כמו  לבדיקות והמרות שונות; חשבתי שאפשר במקום זאת לבצע חישובים ישירים (למשל לבדוק אם שנה נתונה היא מעוברת), או להשתמש בתבניות שמבצעות את החישוב בצורה ישירה יותר (פרטים למטה), משיקולי בהירות הקוד ותחזוקה עתידית.
הניחוש שלי היה שבחרו להשתמש בתבניות הנוכחיות משיקולי ביצועים (ראו את המשפט האחרון בתגובה הקודמת שלי בדיון זה), ורציתי לברר אם האלטרנטיבה שחשבתי להציע אכן נפסלת מהסיבה הזו (או משיקולים אחרים שבטח לא חשבתי עליהם). 
בדיון האחר אליו קישרתי לעיל ראיתי שאכן יש חשש מענייני ביצועים, אבל שם להבנתי דובר בעיקר על  בה לא התכוונתי להשתמש כאן, וגם לא ברור אם הדיון שם הוכרע. בגלל החשש שההצעה שלי בכלל לא רלוונטית, חשבתי להעלות אותה כאן בתיוג המומחים, ובמידה ולא תיפסל על הסף אעביר אותה לאולם הדיונים.
אעיר שהיה בתבנית הנוכחית באג, שתיקנתי (מוזמנים לעיין בכל הדיון לעיל), שלא השפיע על ה"שימוש המבצעי" של הלוח בערכי הימים, אלא רק על תצוגת ברירת המחדל שלו - אבל הבאג הזה נגרם מחוסר תיאום בהתייחסות לאדר א ולאדר ב בין התבניות הידניות ובין הפונקציה #זמןמ, ולכן בכלל עלה לי הרעיון לצמצם את השימוש בחישובים לא ישירים, שעלולים להוות נקודות תורפה מהסוג הזה.
קצת יותר פרטים:
התבנית  מבצעת בדיקות כמו "האם השנה x מעוברת" ו"מה אורך החודש y" בעזרת התבניות מהסדרה ; את תוצאות הבדיקות האלה אפשר לקבל גם ע"י חישובים ישירים כמו  עבור הבדיקה הראשונה, ו- 29+(y mod 2) עבור הבדיקה השנייה במקרה של חודשים שאינם חשוון וכסלו (כבר עכשיו יש חלוקה למקרים בקוד), בעיקר משיקולי בהירות הקוד, וההימנעות מהסתמכות על סדרת תבניות שיש לחדש כל כמה שנים, עם סיכוי להזנת שגיאה וכו'.
בשביל אורכי חשוון וכסלו, התכוונתי להשתמש בתבניות של  (כמובן תוך מתן קרדיט מלא בהערות! כולל העובדה שאת הקוד הבא העתקתי מתוך ), למשל כך עבור חשוון:

התבנית   בה התכוונתי להשתמש כאן עושה שימוש ב שאינה "כבדה" מבחינת ביצועים, וב, הכבדה מעט יותר (בתוכה נעשה שימוש גם ב הדומה מבחינת ביצועים למולד תשרי/זמן).
מקום אחרון בו נעשה שימוש בסדרת התבניות הידניות, הוא בקביעת התאריך הלועזי של ראש החודש המתאים. בשביל זה חשבתי להשתמש בגרסה מורחבת מעט של דוגמת הקוד שהבאתי לעיל, שבעצם תיתן גרסה מצומצמת של .
מתייג את , ,  (בנוסף ל-seyegd ולבורה בורה כמובן). אני לא מבין כמוכם בביצועים של המנוע של ויקיפדיה, כך שלא ברור לי שמה שאני מציע כאן אכן נפסל על הסף - ומצד שני אני מודע לכך שאולי כן. אם תאמרו לי שאין טעם בהצעה שלי, אקבל כמובן את דעתכם, ואף אתנדב להכין את התבניות הידניות עבור שנים עתידיות. אחרת, אעלה את ההצעה באולם הדיונים.
אעיר עוד רק שלדעתי יש ערך אפילו בהחלפת בדיקת השנים המעוברות או אורכי החודשים שאינם חשוון וכסלו, גם אם התבנית לא "תנותק" לגמרי ועדיין תסתמך על התבניות הידניות, משיקולי בהירות הקוד ואולי יעילות - כך שהתשובה יכולה להיות גם "כן" רק לחלק מההצעה שלי, ו"לא" ליתר.
יום טוב, שבוע טוב, חודש טוב, רמדאן כרים, ‏E L Yekutiel‏ - שיחה 11:01, 10 במרץ 2024 (IST)

text: קראתי את זה. מתברר שיש מלא תבניות שעושות המרה שונה, אין לי מושג למה. עקרונית אמורה להספיק תבנית אחת, , כדי להמיר לתאריך עברי, ולא צריך תבניות כלל כדי להמיר לכיוון ההפוך, ויקיפדיה עושה זאת בעצמה. כך שאני לא כל כך יודע מה עושות השאר, ומה יש לי לתרום לדיון הזה. יגאל (בקשת עזרה, IKhitron ושיחה) 12:15, 10 במרץ 2024 (IST)
replies: text: :תודה רבה על התגובה @יגאל.

text: :רק לוודא שהבנתי אותך:

text: :#"קראתי את זה": אתה מתכוון ל, שהצעתי לשנות?

text: :#"תבניות שעושות המרה שונה": אתה מתכוון לסדרת התבניות מהסוג  (עם מספרים שונים), שהתבנית הנ"ל עושה בהן שימוש?

text: :הסיבה שיש הרבה כאלה (עם מספרים שונים) היא שאלה look up tables עבור התאריכים הלועזיים של ראשי החודשים העבריים, ואלה שונים משנה לשנה (המספר בשם התבנית מציין את השנה המתאימה). להבנתי השימוש ב-LUT מאפשר לבצע את ההמרה ממש מהר.

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

text: :מהסיבות האלה הצעתי להחליף אותן, ולהבנתי לזה כיוונת גם אתה כשהזכרת תבניות המרה חלופיות. אבל אני חושש בגלל עניין הביצועים, ולכן תייגתי בין השאר אותך. בדיון האחר היתה לך דעה נחרצת נגד תבנית שביצעה חישוב תאריכים כבד מדי; אבל אני לא בטוח ששם דנתם באותם דברים עליהם אני מדבר כאן. ‏E L Yekutiel‏ - שיחה 15:52, 10 במרץ 2024 (IST)
replies: text: :: 1. הכוונה לתיוג. 2. כן, למשל.האמת, אני עדיין לא מבין למה אי אפשר לקבל את תאריך הפסח בשנה מסוימת באמצעות המרת התאריך של היום הזה. יגאל (בקשת עזרה, IKhitron ושיחה) 16:13, 10 במרץ 2024 (IST)
replies: text: ::: אני לא מכיר המרת תאריכים ישירה... אשתמש בדוגמה שלך כדי להראות על מה חשבתי. למשל, כדי לקבל את התאריך הלועזי של פסח הקרוב, הייתי עושה משהו כזה:

מה שנותן את התוצאה . (לא אלאה פה במשמעות "מספרי הקסם", אם זה רלוונטי אשמח לפרט).יגאל, יש מנגנון ישיר יותר שמקבל תאריך עברי וממיר אותו ללועזי? (אני לא בטוח אם לכך התכוונת כשכתבת שויקיפדיה עושה זאת בעצמה).תודה רבה! ‏E L Yekutiel‏ - שיחה 19:56, 10 במרץ 2024 (IST)
replies: text: :::: כן, @E L Yekutiel. למשל: ->  ->  -> נחש למה הדוגמה האחרונה לא עובדת. אחרי שתענה אמחק אותה, כי היא נותנת שגיאת תסריט. (בוצע.) יגאל (בקשת עזרה, IKhitron ושיחה) 13:12, 11 במרץ 2024 (IST)
replies: text: :::::@IKhitron "אדר" סתם לא קיים השנה; בדיוק עברנו מאדר א' לאדר ב'.

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

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

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

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

text: :::::שוב תודה רבה! ‏E L Yekutiel‏ - שיחה 13:55, 11 במרץ 2024 (IST)
replies: text: :::::: נכון. אמחק עוד שנייה.אתה לא צריך לשאול או לבקש את רשותי לגבי העניין באיזו תבנית להשתמש, זאת לא ההחלטה שלי בכלל. לגבי הביצועים - אין לי תשובה חד משמעית, זה תלוי במה בדיוק נעשה. אבל בלי ספק עבודה בלואה חוסכת בעומק קריאת תבניות במקרים רבים, כתבתי אותה אחרי שהקוד הראשוני שכתבתי, עם תבניות, גרם ל-34 קריאות של תבניות לעומק. יגאל (בקשת עזרה, IKhitron ושיחה) 14:03, 11 במרץ 2024 (IST)
replies: text: :::::::וואו... בהחלט עדיף לחסוך.

text: :::::::תודה רבה @יגאל! אני בכל זאת שמח שהתייעצתי איתך.

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

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

text: :::::::שוב המון תודה על כל העזרה! ‏E L Yekutiel‏ - שיחה 15:15, 11 במרץ 2024 (IST)
replies: text: :::::::: אולי מה שאתה צריך זה . יגאל (בקשת עזרה, IKhitron ושיחה) 15:22, 11 במרץ 2024 (IST)
replies: text: :::::::::תודה @יגאל! זה בהחלט עובד, אבל השימוש ב#זמן נמצא בתבנית הפנימית . פחדתי שאם אגע גם בה ואשנה את פורמט הקלט שלה, אשבור תבניות אחרות שאולי משתמשות בה.

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

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

text: :::::::::אלף תודות, ‏E L Yekutiel‏ - שיחה 15:45, 11 במרץ 2024 (IST)
replies: text: :::::::::: אתה יכול לעטוף את הפרמטר שאתה מעביר לשם, במקום לשנות שם. יגאל (בקשת עזרה, IKhitron ושיחה) 15:46, 11 במרץ 2024 (IST)
replies: text: :::::::::::🤦‍♂️

text: :::::::::::תודה... ‏E L Yekutiel‏ - שיחה 15:54, 11 במרץ 2024 (IST)
thread_title:  חוסר מתאם בין שם הטאב לתוכן