יום ראשון, 18 בספטמבר 2011

LiftMe - day 1.

בקבוצה שלי אנו עושים מידי פעם שבוע טכנולוגיה. הרעיון הוא להתנתק מהעבודה השוטפת ולחשוב על רעיונות חדשים או טכנולוגיות בהן אנו רוצים להתנסות, ולממש אב טיפוס עובד. מסגרת הזמן היא שבוע, שבסופו נציג את התוצאות.
החלטתי להתנסות בכתיבה בשפת סקאלה. מכיוון שאנו כותבים בג'אווה, זה נראה כיוון מעניין להתנסות, לא יותר מידי רחוק ממה שאנחנו עושים, אבל עדיין תכנות פונקציונלי והתרעננות עם שפה חדשה.
על הפרוייקט שנבצע השבוע אנחנו עובדים בקבוצה של 3 אנשים. במהלך השבוע ניצור אפליקצייה שתעזור לאנשים לתפוס טרמפים עם חברים לעבודה. אני אנסה להסביר את הרעיון באופן כללי. אני עובד בחברה גדולה, ויש הרבה אנשים שמגיעים לעבודה עם רכבם הפרטי\ליסינג. אני מניח, שכשהם יוצאים מהעבודה לא תהיה להם בעיה לקחת מישהו טרמפ אם הוא לא מעכב אותם וזה במילא בדרך. הבעיה של אנשים שצריכים טרמפ (שאני במקרה גם לפעמים אחד מהם) היא שחוץ מלשלוח מייל לכל העובדים בחברה ולשאול אם מישהו יוצא בקרוב לעבר היעד שלי אין לי דרך טובה להשיג את המידע הזה. שליחת מייל כזה היא לא רעיון כל כך טוב, מכיוון שזה מציק, בעיקר עם כל מי שצריך טרמפ יישלח מייל כזה.
המערכת שאנחנו נכתוב, תהיה בעצם קישור בין האנשים. נניח שאני מעוניין לצאת בקרוב הביתה. אני נרשם במערכת (שנקראת liftme) עם מס' הטלפון שלי והיעד אליו אני מעוניין לנסוע. ליד הכניסה לבניין יוצב מסך מגע עליו תופיע רשימה של כל היעדים אליהם ביקשו אנשים טרמפ. כל מי שיעבור ליד הרשימה, יוכל בלחיצת פשוטה על אחד היעדים, להודיע שהוא יוצא לכיוון זה. בינתיים הוא יירד במעלית לחניה (יש אצלנו חניון). לאחר שבחר את היעד יישלח מסרון למי שהזמין את הטרמפ, עם מס' הטלפון של הנהג, הוא יוכל להתקשר אליו ולחכות לו בשער החברה.
זה הרעיון בגדול. אנחנו מתכננים לממש אותו עם scala/lift ומכאן גם משחק המילים של השם.
בהמשך אני אעדכן איך מתקדמת העבודה:
יום א: הכנו את סביבת העבודה שכוללת svn,eclipse,scala,lift וגם קצת maven. בסופו של דבר השתמשנו בעיקר בהוראות כאן. הדבר העיקרי שבילבל אותנו הוא הגרסאות השונות של סקאלה שלא תאימות לאחור. בנוסף חלק מהפעולות ארכו זמן בלתי סביר של כמה עשרות דקות בשל הורדת קבצים מהאינטרנט. נקווה שבהמשך ייתבצע caching ולא נאלץ להמתין. בינתיים החלטנו לעבוד על windows ולא על linux. ההתרשמות הראשונית מהממשק של סקאלה ב eclipse היא שהוא סביר אך לא נעדר באגים.
יום ב: הכנו שלד בסיסי של האפליקציה, מאמין שבעוד יום הוא כבר יהיה יותר סגור. כולל שני דפים עיקריים: בקשת טרמפ, ומסך טרמפים נוכחיים. עשינו קצת unit tests. אני עדיין לא מתחיל לעכל (ולהנות) מסגנון הכתיבה בסקאלה. בינתיים הוא מרגיש מאוד loose. התרשמתי מאוד לטובה מרכיב ה-comet. מה שהשתמשנו בו עד כה היה ממש כמו קסם, מעט קוד וביצוע קליל.
יום ג: סיימנו את השלד הבסיסי. כיף לראות שניתן לבצע דבר כזה, בתחושה שלי, בקצב מהיר ביותר גם ללא היכרות מוקדמת.
יום ד: המשך עבודה על עיצוב המסכים השונים ושפורים נוספים כגון טיפול בשגיאות וולידציה. ביטול של database שמגיע ביחד עם ה embedded jetty באפליקצייה השלד שלנו האיץ משמעותית את זמן עליית השרת, ועוזר ב-debug. ההרגשה שסביבת העבודה מאוד נוחה ל debug, למרות שלא הצלחנו עדיין לראות את כל הלוגים. בסביבת הפיתוח נתקלתי בקשיים לקרוא ולפענח את תאור שגיאות הקומפילציה. מכיוון שאני לא מכיר את השפה יש לי יחסית הרבה שגיאות תחביר, וחוסר היכולת לפענח אותן במהירות מוביל לתסכול. בנוסף, חבר לקבוצה הביא ipad2 עליו נציג את המערכת, אין ספק שזה משדרג את האפליקציה, ובכלל נראה מוצר מגניב.
יום ה: המשכתי את העבודה על העיצוב לבדי, והגענו לסוף השבוע עם אבטיפוס שלם. בהמשף, בנוסף לשיפורים נוספים שייעשו נתמקד בנסיון לבצע פיילוט של האפליקציה בבניין שלנו. נראה את השימוש האמיתי שנתבצע, ואני אוכל להבין האם ה use case עליו חשבתי מראש מעשי וישים.