30 יולי, 2017  •  5 דק' קריאה

אני נוסע אליו!  כשטכנולוגיה ושירות נפגשים

אני נוסע אליו!  כשטכנולוגיה ושירות נפגשים

הייתי חייב לפתור את זה. לא יכול להיות שהוא היחיד שלא מצליח.
הרי עשינו את זה ביחד בטלפון, אחרי 3 פעמים שהוא לא הצליח לבד, וגם אז – זה לא עבד.
משהו פה מוזר מדי. החלטתי שאני חייב לנסוע אליו.
אוהד, יחד עם עוד עשרת אלפים איש, בסך הכל רצה לפתוח חשבון חדש ב-Pepper, בשבוע ההשקה שלנו. אבל אוהד הוא היחיד שהתקשר אלינו עם בעיה שלא הצלחנו לפתור.
באמת שניסינו הכל, “תסרוק שוב את התעודה, תזין פרטים ידנית, תמחק את האפליקציה ותתקין שוב”, כלום.
כשהגעתי אליו, לא היה ברור לגמרי אם הוא יותר המום או יותר צוחק כשהופעתי לו בדלת.
וככה התיישבנו יחד והתחלנו את תהליך פתיחת החשבון של Pepper. סורקים תעודת זהות, סורקים רישיון, סורקים את האשראי, מאשרים שכל הפרטים נכונים ויאללה ״המשך״.
די! זה באמת לא עובד. מה כבר יכול להיות? טוב, מתחילים לדבג.
שדה אחרי שדה, משווה את הערך שהוזן מול הערך שמגיע אלינו לשרתים.
הכל זהה חוץ מתאריך הלידה, שמגיע אלינו, null.
חוזר לטופס ורואה שיש תאריך. 14/04/1985. בודק את הפורמט, תקין – “dd/MM/yyyy”.
מאיפה מגיע הnull- הזה? השדה כבר עבר אימות ומכאן זה רק ה-iOS SDK שיהפוך את ה-String הזה ל- Date type.
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = “dd/MM/yyyy”
let date = dateFormatter.date(from: “14/04/1985”)
והתוצאה? null!
בודק יום קדימה, יום אחורה, שנה אחרת, הכל עובר. רק התאריך הזה מחזיר null.
החלטתי לבדוק האם יש עוד תאריכים ש-Apple לא מצליחה לייצר והרצתי את הפעולה על כל התאריכים מ-1900 ועד היום. התוצאה הפתיעה אותי וגם את החבר׳ה מ-Apple שדיווחתי להם על הבאג הזה, 25 תאריכים אקראיים נכשלים בתהליך.
אז מה מיוחד ל-25 התאריכים האלה?
אחרי מחקר קטן, מצאתי שמה ששיבש את התהליך זה המעבר לשעון קיץ, בכל התאריכים האלו זז שעון ישראל שעה קדימה מ-00:00 ל 01:00. כלומר, טכנית, התאריך הזה אינו קיים לפי TimeZone של ישראל.
כאשר הגדרנו תאריך כ-String ללא שעה, המערכת מתייחסת לשעה הראשונה בתאריך הזה – חצות.
בהזזת השעון עברנו מ-13/04/1985, 23:59:59 ישירות ל-14/04/1985, 01:00:00.
לכן בתאריך 14/04/1985, חצות היא שעה שאינה קיימת, שכן היום הזה התחיל מ-01:00 בלילה.
הדרכים לפתרון הבעיה הם שינוי ל-TimeZone אחר או הגדרה של 0 שניות מ-GMT באתחול, למניעת התחשבות בשינויי שעון.
TimeZone.init(secondsFromGMT: 0)
אז לא שינינו לאוהד את תאריך הלידה. הוצאנו גרסה חדשה שתיקנה את הבעיה הזאת.
אוהד הצטרף לאלפי הלקוחות הראשונים שלנו בהצלחה.
וכן, כמו שאתם רואים, כל אחד מקבל יחס אישי. אז אם גם אתם נולדתם ביום שהחלפנו לשעון קיץ ונתקלתם בבעיה בפתיחת חשבון, אני מוכן להגיע לקפה, אבל את התהליך אתם כבר יכולים לעשות לבד מהספה בסלון.
את הפרטים המלאים, הקוד שמוצא את התקלה ואת הפתרון שלנו לבעיה אפשר לקבל ממני במייל.
תפנו, מבטיח לענות.
or.may-paz at pepper.co.il

שתף
    Or May-Paz
    Mobile Developer