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

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

מספר השנים[עריכת קוד מקור]

מציעה לשנות לשלוש שנים (קודמת, נוכחית, הבאה) במקום חמש. התבנית הזו תופסת הרבה יותר מדי מקום ביותר מדי ערכים. -- ענבל • כ' בטבת ה'תשע"ו • 18:42, 31 בדצמבר 2015 (IST)[תגובה]

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

חוסר מתאם בין שם הטאב לתוכן[עריכת קוד מקור]

משתמש:E L Yekutiel שים לב ששם הטאב עכשיו מפגר בשנה אחרי התוכן וכותרת הטאב בפועל. הטאב ה'תשפ"ה מראה תשרי ה'תשפ"ו. בורה בורהשיחה 04:47, 1 במרץ 2024 (IST)[תגובה]

היי @בורה בורה, אכן שמתי לב לזה. מדובר רק כאשר לא נותנים לתבנית פרמטר; אם תסתכל בכל אחד מערכי הימים, למשל ב' בניסן, המצב שם תקין (שם קוראים לתבנית עם פרמטרים והיא מתנהגת נכון).
בערכי ברירת המחדל לא נגעתי, כך שאני כמעט בטוח שזה היה המצב גם לפני העריכה שלי - כלומר שיש שם באג, או שפשוט לא טרחו לוודא שההתנהגות תקינה במצב הזה, שכנראה לא נעשה בו שימוש "מבצעי". לא הספקתי אבל אני מתכוון לחפור לגבי זה יותר לעומק כדי למצוא את הגורם ולתקן אותו, בשביל הנראות של התצוגה של דף התבנית עצמו.
לוחות השנה החודשיים עצמם כן תואמים לכותרת שלהם, גם במצב הזה (כלומר השגיאה היא רק בכותרות של הטאבים).
אני לא יודע לומר בוודאות שזה היה המצב גם לפני כן, כי שמתי לב לזה רק אחרי שהתחלתי לערוך, אבל אני כמעט בטוח שלא נגעתי במשהו ששייך לזה. אפשר לשחזר את העריכות שלי בכל התבניות של הלוחות החודשיים כדי לוודא, אבל בכל מקרה אני רוצה לחפש את המקור להתנהגות הזו. ‏E L Yekutiel‏ - שיחה 07:04, 1 במרץ 2024 (IST)[תגובה]
@בורה בורה מצאתי את הגורם לבאג, וזה אכן היה שם גם לפני העריכות שלי.
אז ככה:
ברירת המחדל אמורה לתת את הלוחות שמתאימים לחודש הנוכחי סביב השנה הנוכחית (כלומר הלוח המרכזי - השלישי מתוך החמישה - צריך להיות מהשנה הנוכחית).
שים לב שהטאב המרכזי הוא של תשפה (השנה הבאה - במקום שיהיה של השנה הנוכחית תשפד), והלוח שמוצג בתוך הטאב הזה הוא של תשפו (עוד שנתיים), והלוחות הם בכלל של חודש תשרי (החודש כרגע הוא אדר א), ולקינוח, החיצים לצד הכותרת "תשרי" שמצביעים שמאלה (כדי לקשר אותנו אל החודש הבא) מקשרים לאדר (אחרי תשרי אמור להיות חשון), בעוד החיצים שמצביעים ימינה מקשרים לאלול כצפוי.
ההסבר לכל המוזרויות האלה הוא חוסר עקביות בהתייחסות של חלקים שונים בקוד לחודש אדר א' (החודש הנוכחי). הפונקציה המפרסרת של מדיהויקי שמחזירה את מספר החודש העברי הנוכחי, #זמןמ:xjn, מחזירה עבור אדר א' את התוצאה 13 (בשנה פשוטה החודשים מחזירים את המספרים 1 עד 12, ובשנה מעוברת אין 6, אלא אדר א ואדר ב מחזירים 13 ו-14).
לעומת זאת, אם תסתכל בתוך הקוד של {{המרת תאריך עברי 5784}} (שמקבלת מספר סידורי של חודש עברי ומחזירה את התאריך הלועזי של ראש החודש הזה), תראה שההתייחסות היא אחרת: חודש 6 הוא אדר א', חודש 7 הוא ניסן, וחודש אדר ב' שאמור להיות ביניהם חסר לגמרי (שים לב לקפיצה של חודשיים בין התאריכים של 6 ושל 7). בסוף הרשימה תמצא את חודש 13, שהוא תאריך ראש חודש תשרי של השנה העוקבת.
ההתנהגות הזו היא דווקא ההתנהגות הרצויה של התבנית לכל מיני צרכים - למשל כדי לבדוק אם השנה מעוברת, יש תבניות אחרות שפשוט בודקות את ההפרש (בימים) בין ראש חודש 6 לראש חודש 7, וקובעות אם זה חודש אחד או חודשיים; ואת "חודש 13" צריך כדי לברר את האורך של חודש אלול (מוצאים את ההפרש בימים בין ראש חודש אלול לראש חודש תשרי שאחריו). אעיר שאת שני הדברים האלה אפשר לעשות גם בדרכים אחרות (לחשב את השארית מחלוקה של מספר השנה ב-19 בשביל לדעת אם השנה מעוברת, וחודש אלול תמיד באורך 29 יום), אבל זה לא מענייננו.
הנקודה החשובה היא שלפעמים תבניות מקבלות 13 עבור החודש הנוכחי (אדר א) ומזינות את זה לתבנית האחרונה שהזכרתי, שמחזירה את התאריך של ראש חודש של תשרי של השנה הבאה. זה באג, שכדי לתקן אותו צריך להתייחס בצורה מיוחדת למקרה של אדר א' בהקשר הזה, מה שכרגע לא נעשה בקוד.
תוספת מאוחרת: שמתי לב רק אחרי כתיבת התגובה הזו שאדר ב מחזיר 14 (ערכתי לעיל בהתאם). זה אומר שבעוד כמה ימים (כשיתחיל אדר ב) צפויות לנו בעיות עוד יותר גדולות עם ברירת המחדל של התבנית הזו, כי התבניות של המרת תאריך יקבלו 14, מצב שהוא לא רק שגוי כמו 13 אלא שהן בכלל לא ערוכות להתמודד איתו. הבעיות יהיו רק בתצוגת ברירת המחדל, ולא ישפיעו על ערכי הימים השונים, שקוראים לתבנית הזו עם פרמטר.
אדגיש שוב שלא מדובר כאן בקוד שאני הוספתי - כמוך רק שמתי לב להתנהגות המוזרה הזו, וניסיתי להבין מה הגורם שלה. ‏E L Yekutiel‏ - שיחה 11:13, 1 במרץ 2024 (IST)[תגובה]
@בורה בורה תרצה שאתקן? יש לי רעיונות. ‏E L Yekutiel‏ - שיחה 10:20, 6 במרץ 2024 (IST)[תגובה]
כן, ודאי. תודה בורה בורהשיחה 14:02, 6 במרץ 2024 (IST)[תגובה]
@בורה בורה מעולה, בשמחה!
מה שכן, התנאים החדשים יעמיסו על התבנית הקיימת (לאו דווקא מבחינת ביצועים, יותר מבחינת נראות הקוד, והיכולת להבין ולדבג או לשנות אותו בעתיד), והייתי רוצה ליצור תבניות-עזר שיכילו למשל את הלוגיקה של קביעת החודש הקודם והבא, ואולי גם תבנית לבדיקה אם שנה נתונה היא מעוברת או פשוטה, וכד', ולהשתמש בהן בתבנית הראשית (בדומה למה שנעשה כיום עם תבניות כמו המרת תאריך עברי).
האם זה בסדר? האם לפתוח קודם דיון בוק:אד?
תודה! ‏E L Yekutiel‏ - שיחה 17:09, 6 במרץ 2024 (IST)[תגובה]
היו כבר מספר דיונים על הוספת תבניות עזר וזה תמיד עובר ללא התנגדות... אז לא חייבים עוד דיון. לך על מה שהכי נכון לעשות בורה בורהשיחה 18:36, 6 במרץ 2024 (IST)[תגובה]
@בורה בורה בוצע בוצע.
יש משהו נוסף שחשבתי לעשות. בתבנית {{לוח חודשי עברי}} מתבצעות בדיקות שונות, כמו האם השנה מעוברת, ומה אורכי החודשים. הבדיקות האלה מתבצעות כרגע בצורה קצת מסורבלת. רציתי לפשט את הקוד כך שהחישוב יהיה פשוט יותר, ופחות תלוי בתבניות ידניות כמו {{המרת תאריך עברי 5784}}. התוצאה הסופית לא תשתנה; רק דרך החישוב, והקריאות של הקוד.
על זה אני מניח שכדאי לפתוח דיון בוק:אד, נכון? למקרה שתהיינה התנגדויות, או שיעלו שיקולים שלא חשבתי עליהם (כמו ביצועים או דברים כאלה)?
תודה רבה! ‏E L Yekutiel‏ - שיחה 09:17, 8 במרץ 2024 (IST)[תגובה]
כן, על זה פתח שם דיון ותייג בו את משתמש:DMY בורה בורהשיחה 13:14, 8 במרץ 2024 (IST)[תגובה]

────────────────────────────────────────────────────────────────────────────────────────────────────

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

אתחיל מהשורה התחתונה: התבנית {{לוח חודשי עברי}} משתמשת בתבניות כמו {{המרת תאריך עברי 5784}} לבדיקות והמרות שונות; חשבתי שאפשר במקום זאת לבצע חישובים ישירים (למשל לבדוק אם שנה נתונה היא מעוברת), או להשתמש בתבניות שמבצעות את החישוב בצורה ישירה יותר (פרטים למטה), משיקולי בהירות הקוד ותחזוקה עתידית.

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

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

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

קצת יותר פרטים:

התבנית {{לוח חודשי עברי}} מבצעת בדיקות כמו "האם השנה x מעוברת" ו"מה אורך החודש y" בעזרת התבניות מהסדרה {{המרת תאריך עברי 5784}}; את תוצאות הבדיקות האלה אפשר לקבל גם ע"י חישובים ישירים כמו 7(x-8) mod 19 < 7 עבור הבדיקה הראשונה, ו- 29+(y mod 2) עבור הבדיקה השנייה במקרה של חודשים שאינם חשוון וכסלו (כבר עכשיו יש חלוקה למקרים בקוד), בעיקר משיקולי בהירות הקוד, וההימנעות מהסתמכות על סדרת תבניות שיש לחדש כל כמה שנים, עם סיכוי להזנת שגיאה וכו'.

בשביל אורכי חשוון וכסלו, התכוונתי להשתמש בתבניות של seyegd (כמובן תוך מתן קרדיט מלא בהערות! כולל העובדה שאת הקוד הבא העתקתי מתוך {{סימן הקביעות}}), למשל כך עבור חשוון:

{{#בחר:
 {{#חשב:
  ({{המרה ללועזי/ראש השנה|
    {{#חשב:{{{2}}}+1}}
   }}-{{המרה ללועזי/ראש השנה|
            {{{2}}}
 }})mod 10}}
|3|4=29|5=30}}

התבנית {{המרה ללועזי/ראש השנה}} בה התכוונתי להשתמש כאן עושה שימוש ב{{מולד תשרי/זמן}} שאינה "כבדה" מבחינת ביצועים, וב{{המרה ללועזי/הדחיות}}, הכבדה מעט יותר (בתוכה נעשה שימוש גם ב{{מולד תשרי}} הדומה מבחינת ביצועים למולד תשרי/זמן).

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

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

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

יום טוב, שבוע טוב, חודש טוב, רמדאן כרים, ‏E L Yekutiel‏ - שיחה 11:01, 10 במרץ 2024 (IST)[תגובה]

קראתי את זה. מתברר שיש מלא תבניות שעושות המרה שונה, אין לי מושג למה. עקרונית אמורה להספיק תבנית אחת, {{לועזי לעברי}}, כדי להמיר לתאריך עברי, ולא צריך תבניות כלל כדי להמיר לכיוון ההפוך, ויקיפדיה עושה זאת בעצמה. כך שאני לא כל כך יודע מה עושות השאר, ומה יש לי לתרום לדיון הזה. יגאל (בקשת עזרה, IKhitron ושיחה) 12:15, 10 במרץ 2024 (IST)[תגובה]
תודה רבה על התגובה @יגאל.
רק לוודא שהבנתי אותך:
  1. "קראתי את זה": אתה מתכוון ל{{לוח חודשי עברי}}, שהצעתי לשנות?
  2. "תבניות שעושות המרה שונה": אתה מתכוון לסדרת התבניות מהסוג {{המרת תאריך עברי 5784}} (עם מספרים שונים), שהתבנית הנ"ל עושה בהן שימוש?
הסיבה שיש הרבה כאלה (עם מספרים שונים) היא שאלה look up tables עבור התאריכים הלועזיים של ראשי החודשים העבריים, ואלה שונים משנה לשנה (המספר בשם התבנית מציין את השנה המתאימה). להבנתי השימוש ב-LUT מאפשר לבצע את ההמרה ממש מהר.
מצד שני החיסרון הוא בריבוי תבניות (צריך ליצור עוד כאלה כל כמה שנים, ולמעשה הן מה שמגביל את טווח השנים עבורו ניתן להציג לוח שנה); סירבול הקוד שמשתמש בהן, יחסית לאלטרנטיבות; והפוטנציאל לבאגים, שנוצר מהוספת חוליה בשרשרת.
מהסיבות האלה הצעתי להחליף אותן, ולהבנתי לזה כיוונת גם אתה כשהזכרת תבניות המרה חלופיות. אבל אני חושש בגלל עניין הביצועים, ולכן תייגתי בין השאר אותך. בדיון האחר היתה לך דעה נחרצת נגד תבנית שביצעה חישוב תאריכים כבד מדי; אבל אני לא בטוח ששם דנתם באותם דברים עליהם אני מדבר כאן. ‏E L Yekutiel‏ - שיחה 15:52, 10 במרץ 2024 (IST)[תגובה]
1. הכוונה לתיוג. 2. כן, למשל.
האמת, אני עדיין לא מבין למה אי אפשר לקבל את תאריך הפסח בשנה מסוימת באמצעות המרת התאריך של היום הזה. יגאל (בקשת עזרה, IKhitron ושיחה) 16:13, 10 במרץ 2024 (IST)[תגובה]
אני לא מכיר המרת תאריכים ישירה... אשתמש בדוגמה שלך כדי להראות על מה חשבתי. למשל, כדי לקבל את התאריך הלועזי של פסח הקרוב, הייתי עושה משהו כזה:
{{#זמןמ:Y-m-d|
 @{{#חשב:({{המרה ללועזי/ראש השנה|5785}}-
 2092242-177+14)*86400}}
}}
מה שנותן את התוצאה 2024-04-23. (לא אלאה פה במשמעות "מספרי הקסם", אם זה רלוונטי אשמח לפרט).
יגאל, יש מנגנון ישיר יותר שמקבל תאריך עברי וממיר אותו ללועזי? (אני לא בטוח אם לכך התכוונת כשכתבת שויקיפדיה עושה זאת בעצמה).
תודה רבה! ‏E L Yekutiel‏ - שיחה 19:56, 10 במרץ 2024 (IST)[תגובה]
כן, @E L Yekutiel. למשל:
{{עברי ללועזי|ט"ו בניסן ה'תשפ"ד}} -> 23 באפריל 2024
{{לועזי לעברי|23 באפריל 2024}} ->ט"ו בניסן ה'תשפ"ד
{{עברי ללועזי|ט"ו באדר ה'תשפ"ד}} -> שגיאת לואה: Date not found.
נחש למה הדוגמה האחרונה לא עובדת. אחרי שתענה אמחק אותה, כי היא נותנת שגיאת תסריט. (בוצע.) יגאל (בקשת עזרה, IKhitron ושיחה) 13:12, 11 במרץ 2024 (IST)[תגובה]
@IKhitron "אדר" סתם לא קיים השנה; בדיוק עברנו מאדר א' לאדר ב'.
אם כך, מעולה - אני מבין שלך אין התנגדות שנשתמש בתבנית הזו במקום בתבניות הידניות? מבחינתי כל פתרון שעובד יהיה מוצלח, ונראה שהפתרון שהצעת בהחלט יעשה את העבודה.
כמו כן, ראיתי שהתבנית הזו משתמשת ב-invoke, שאני לא מכיר כ"כ אבל להבנתי קוראת לפונקציה שכתובה ביחידה (מה שמסביר "שגיאת לואה"). כלומר התבנית הזו תהיה מוצלחת גם מבחינת ביצועים, נכון?
ושאלה אחרונה: כרגע משתמשים בתבניות הידניות גם כדי לבדוק אם שנה היא מעוברת, אבל זה חישוב פשוט שמספיק #חשב קצר בשבילו. בשביל חישובים עד כדי כך פשוטים, האם יש צורך ב{{עברי ללועזי}}? או שבה רצוי להשתמש רק כשבאמת צריך לבצע המרה, וחישובים פשוטים יותר פשוט נבצע ישירות?
כמובן שאלך עם התשובה שלך לוק:אד, ולא לעריכה מיידית של התבנית. אני פשוט רוצה להבין טוב את שיקולי הביצועים ואת האפשרויות הקיימות (ולכן ממש טוב שדיברנו).
שוב תודה רבה! ‏E L Yekutiel‏ - שיחה 13:55, 11 במרץ 2024 (IST)[תגובה]
נכון. אמחק עוד שנייה.
אתה לא צריך לשאול או לבקש את רשותי לגבי העניין באיזו תבנית להשתמש, זאת לא ההחלטה שלי בכלל. לגבי הביצועים - אין לי תשובה חד משמעית, זה תלוי במה בדיוק נעשה. אבל בלי ספק עבודה בלואה חוסכת בעומק קריאת תבניות במקרים רבים, כתבתי אותה אחרי שהקוד הראשוני שכתבתי, עם תבניות, גרם ל-34 קריאות של תבניות לעומק. יגאל (בקשת עזרה, IKhitron ושיחה) 14:03, 11 במרץ 2024 (IST)[תגובה]
וואו... בהחלט עדיף לחסוך.
תודה רבה @יגאל! אני בכל זאת שמח שהתייעצתי איתך.
משהו אחד ששמתי לב אליו עכשיו: התבנית שבסופו של דבר משתמשת בתאריך שמומר ללועזי היא {{פירוט לוח חודשי עברי}}, והיא מצפה לקבל את התאריך הלועזי בפורמט Y-m-d (כלומר לא שם החודש, אלא מספרו), כי היא מזינה אותו ל#זמן, שנותן שגיאה עבור תאריך עם מילה: {{#זמן:xjF|23 באפריל 2024}} נותן שגיאה: זמן שגוי, בעוד {{#זמן:xjF|2024-4-23}} נותן ניסן כנדרש. (אמחק את השגיאה אחרי שתראה אותה). (בוצע.)
אברר בדלפק הייעוץ לגבי הנקודה הזו, וכשיימצא פתרון, אפנה לאולם הדיונים עם ההצעה לעריכת התבנית {{לוח חודשי עברי}}.
שוב המון תודה על כל העזרה! ‏E L Yekutiel‏ - שיחה 15:15, 11 במרץ 2024 (IST)[תגובה]
אולי מה שאתה צריך זה {{זמןמ|xjF|23 באפריל 2024}}. יגאל (בקשת עזרה, IKhitron ושיחה) 15:22, 11 במרץ 2024 (IST)[תגובה]
תודה @יגאל! זה בהחלט עובד, אבל השימוש ב#זמן נמצא בתבנית הפנימית {{פירוט לוח חודשי עברי}}. פחדתי שאם אגע גם בה ואשנה את פורמט הקלט שלה, אשבור תבניות אחרות שאולי משתמשות בה.
ניסיתי לראות אם מישהו משתמש בה (ישירות, בלי התבנית העוטפת שלה), בעזרת החיפוש הזה (חיפשתי הצבה שלה בדפים שאינם דפי שיחה, בכל המרחבים), ונראה שאף אחד לא משתמש בה פרט לתבנית העוטפת שאני מעוניין לשנות, כך שכנראה בטוח לעשות את השינוי הזה.
עדיין, מרגיש לי נועז לשנות את פורמט הקלט של התבנית הפנימית... אכלול את זה בהצעה באולם הדיונים, נראה מה הקהילה תאמר, נקווה לטוב.
אלף תודות, ‏E L Yekutiel‏ - שיחה 15:45, 11 במרץ 2024 (IST)[תגובה]
אתה יכול לעטוף את הפרמטר שאתה מעביר לשם, במקום לשנות שם. יגאל (בקשת עזרה, IKhitron ושיחה) 15:46, 11 במרץ 2024 (IST)[תגובה]
🤦‍♂️
תודה... ‏E L Yekutiel‏ - שיחה 15:54, 11 במרץ 2024 (IST)[תגובה]