פרק 10 – "זה מתחיל מבפנים, ומתגלגל החוצה" | לילות כימים

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

עוד יומיים ראש השנה.

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

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

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

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

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

מדורים ובלוגים בדף הבית

בדף הראשי מוצגות רשומות אחרונות מתוך מבחר מדורים ובלוגים.

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

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

 

טופס תשלום

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

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

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

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

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

החלונית שבעזרתה עמית יוצר את טופס התשלום

 

טופס התשלום שנוצר

 

לוח אירועים ומפגשים

אבל לא כל הפיתוחים נועדו לי (שוֹק!). אחד הפיתוחים הגדולים שעמית ביקש היה שלוח האירועים יהיה עברי. כלומר, לא רק שיופיעו בו תאריכים עבריים, אלא שהחלוקה לחודשים תהיה לפי חודשי הלוח העברי.

לוח האירועים - לפני ואחרי

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

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

קודם כול – הייתי בשוֹק. לא היה לי מושג שיש שפת תכנות כלשהי שממירה לתאריכים עבריים, ובטח לא ב-php, שהיא השפה שהאתר הזה בנוי בה (בִרְבוֹת הימים נודע לי ששפת התכנות הזאת פותחה ע"י ישראלים. אז קודם כל – כבוד למגזר. שנית כל – זה מסביר את העניין). ואחרי זה אמרתי לעצמי: אז בכלל זה קלי קלות.
אז זהו, שלא.
כלומר, יש קבוצת פונקציות שממירה בין תאריכים עבריים ללועזיים ולהפך, וזה אחלה. אפילו אחלה בחלה. א-ב-ל, ההמרה היא קצת מאתגרת.
נתחיל מזה שאין דרך להמיר באופן ישיר בין התאריכים הנ"ל. כלומר, זה לא שאני נותנת את התאריך הלועזי ומקבלת את התאריך העברי – הפונקציות הממירות משתמשות בתאריכים יוליאניים. תאריך יוליאני לא כתוב כמו שאנחנו רגילים – יום, חודש, שנה – אלא הוא מספר ארוך שמייצג את מספר הימים מתחילת התקופה היוליאנית… אם כך, כשרוצים להמיר מעברי ללועזי, צריך להמיר מעברי ליוליאני, ומיוליאני ללועזי. יום לימודים ארוך.
ומה קורה עם שנים מעוברות? זה לגמרי צחוקים. כל אחד יודע שבשנה רגילה יש 12 חודשים, ובשנה מעוברת – 13. אז כולם יודעים את זה – חוץ משפת התכנות הזאת. מבחינתה, גם בשנה רגילה יש 13 חודשים, רק שבחודש ה-7 יש 0 ימים (כי החודש השביעי מייצג את אדר ב', שלא קיים בשנה רגילה). לוגיקה מתמטית טהורה. כמה עבודה זה עשה לי – לבדוק כל פעם אם אנחנו בשנה רגילה או מעוברת, ואם בשנה מעוברת – אז לדלג על החודש השביעי. עשיתי את זה יופי בשביל הקישורים של החודש הקודם והחודש הבא – שאף פעם לא יקשרו לחודש 7 בשנה רגילה.

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

ואסיים שוב באיחולי שנה טובה!

נ"ב:
הכותרת מתוך "איך שיר נולד", מילים: יהונתן גפן.

אין תגובות

תגובות בפייסבוק

כתוב תגובה

כתיבת תגובה

האימייל לא יוצג באתר.