תכנות ממוקד משימות – Mylar

הפוסט הזה הוא על מיילר, והוא מכוון בעיקר למפתחים, אם כי כולם מוזמנים לקרוא ולהתפעל :).

כששוטטתי בבאגים של Eclipse בזמן שחיפשתי מידע על משהו, נתקלתי בAttachment של קובץ מוזר שסיקרן אותי:
mylar/context/zip.
לא נתקלתי בזה בעבר, ולא ראיתי שום קשר בינו לבין הבאג.
חיפוש קצר בגוגל הביא אותי לדף הזה, שמכיל מאמר על "תכנות מונחה משימות עם מיילר".
חפרתי עוד קצת, ומצאתי גם את המצגת ווידאו הזו, שמתארת איך משתמשים במיילר ומה הוא עושה (40 דקות).
מסתבר שמיילר הוא פרוייקט Eclipse חדש, אחד מני רבים (Eclipse הפכה לחממה של עשרות טכנולוגיות חדשניות), שמתיימר לפתור את הבעיה של עומס מידע בזמן שעובדים עם Eclipse.
mylar screenshot
באופן הבסיסי ביותר, Mylar הוא רשימת משימות, למשימות מקומיות וכן למשימות/באגים ממערכות באגים כמו bugzilla, trac וJira
מה שיפה זה שמיילר מנהל הקשר (Context) לכל משימה בצורה אוטומטית, שמכיל את כל מה שקשור אל המשימה – איזה קבצים פתחת, איזה אלמנטים בתוך הקבצים מעניינים (במקרה של קוד ג'אווה – איזה פונקציות למשל) וכו'.
ברגע שעוברים לעבוד על משימה, מתחילים מיד מההקשר הקודם של המשימה (ריק בהתחלה), ואחרי שעוברים למשימה אחרת, ההקשר נשמר – מוכן להשלף אוטומטית ברגע שחוזרים לעבוד על אותה משימה.
דמיינו את הסיטואציה הבאה:
אתם עובדים על איזה באג/פיצ'ר לתומכם, ופתאום יש מקרה חירום וצריך לתקן באג חדש ולייצר גרסא חדשה של הdemo מאתמול.
לפני מיילר, מה שזה אומר זה שצריך להתחיל להזכר מה צריך כדי ליצר גרסא חדשה, לפתוח קבצים חדשים, כנראה גם לסגור את כל מה שקשור לבאג שעבדתם עליו.
עכשיו, נניח שהבאג הזה בכלל שייך למישהו אחר בצוות, אז צריך להעביר את העסק עליו ואז להזכר מחדש איפה הייתם ומה עשיתם, לסגור את הקבצים שקשורים לבאג בdemo, לפתוח את הקבצים של הבאג שעבדתם עליו ולהמשיך לעבוד.
כל הסחות הדעת האלו יגרמו לכך שגם תבלו איזה עשר דקות בynet בין המשימות, סתם כדי לנקות את הראש.
עם מיילר, אפשר לעבור בקלות בין ההקשרים, בלי לבזבז זמן ותאי זכרון יקרים.
מיילר מייעל גם עבודה בצוותים: את ההקשרים האלו, שכוללים בעצם ריכוז של ידע על אותו באג, אפשר לצרף לבאג עצמו, ככה שהמפתח הבא יוכל פשוט למשוך את ההקשר מהבאג ולהמשיך מאותו מקום שאתם עצרתם. (כל הקבצים פתוחים, כל הפונציות שרלוונטיות לדעתכם כבר יהיו בהקשר, וכו').
Eclipse הוא כבר מזמן לא כלי לפיתוח Java בלבד, כבר היום הוא תומך בC/C++, PHP, Prolog ועוד, מיילר אמור לתת ערך מוסף לתכנות בלי קשר לשפה, כל עוד אתם עובדים בתוך Eclipse – אם כי אני לא בטוח שהוא באמת מוכן לשפות אחרות עדיין.
יתרון נוסף הוא התמיכה האוטומטית בקבוצות שינויים (Changeset) כשעובדים מול מערכת ניהול גרסאות הקוד (CVS/SVN וכו').
מה שזה אומר זה שמיילר ינהל בצורה אוטומטית את הChangeset שקשור לבאג שאתם עובדים עליו, ואפילו יכלול הודעת Commit אוטומטית כשתעשו Commit!

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

יש לינקים עם עוד מידע פה.

Facebook Comments

25 תגובות בנושא “תכנות ממוקד משימות – Mylar”

  1. שלום עמרי,

    זה בדיוק הזכיר לי שאלה שרציתי לשאול:

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

    כאשר כתבת את FireStats ב- PHP, במה השתמשת? באיזה כלי פיתוח?

  2. לא פיתחתי בדוט-נט, אבל ממה שראיתי, הVisual studio .net הוא שיפור גדול לעומת VC6, אבל ממש ממש לא הכי טוב שיש.
    רוב הIDEים שראיתי לג'אווה לוקחים אותו בסיבוב, במיוחד Eclipse (הם פשוט לא באותה ליגה).

    לגבי FireStats, כתבתי אותו תוך שימוש בvim, שהוא עורך טקסט לא גראפי.
    עכשיו שהתקנתי את מיילר, התקנתי גם את PHPEclipse שהוא תוסף Eclipse שמאפשר עבודה עם PHP, אבל עדיין לא עבדתי איתו מספיק בשביל שתהיה לי דעה מוצקה לגביו.

  3. אה, אוקיי.

    דרך אגב, כדי לנסות ולראות את התגובות שלך בזמן אמת, אני משתמש ב- co.comments.com.

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

    בנוסף, הם עושים Escaping לתווים בעברית, כך שזה מה שקיבלתי בשורת הנושא:
    "
    Re: תכנות ממוקד משימות – Mylar
    "
    (הופיע בשורה אחת כמובן)

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

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

    אבל איך הסתדרת עם עניין עריכת ה- GUI? הרי זה לא מעשי כיום ליצור GUI עם עורך טקסט. האם זה בגלל שה- GUI לא היה משמעותי בפרוייקט הזה?
    ב- VS אתה יוצר GUI באמצעות גרירה והטלה, בדומה לבנייה של תוכנה ב- Visual Basic. גם כתיבת הקוד נעשת בצורה דומה, וכאן אני חושב שתסכים איתי בהמשך למה ששאלתי אותך בדוא"ל פעם, שזה סוג של הפשטה, כי אתה עובר מכתיבה של קוד HTML ומשלימיו לעבודה עם אובייקטים של כמו VB וקוד VB/סי שארפ משלימים.

  4. בתור התחלה, אני בהחלט חושב שזה מעשי לכתוב ממשק משתמש בלי עורכים ויזואליים.
    מפתח שמסתמך על IDE מסויים כדי לכתוב את הממשקים שלו יסבול כשהוא יעבור לIDE אחר.
    יש כמה בעיות עם העורכים הויזואליים:
    1. הם מוציאים קוד מכוער שמכריח אותך להמשיך להשתמש בעורכים הוויזואליים כדי לעשות שינויים, ומאוד קשה להבין מה קורה שם על ידי התבוננות בקוד.
    2. הם מאפשרים למתכנתים מתחילים ליצור ממשקים מתוחכמים, ואז כשמתחילות בעיות אין להם מושג איך להתמודד איתם כי הם יודעים רק לגרור וללחוץ לחיצות כפולות.

  5. עמרי,

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

    אבל האם אתה סבור שאפשר ליצור ממשק GUI (כולל, נניח, AJAX) מורכב ועדיר באמצעות כתיבת קוד ישירה, ללא שום שימוש בכליי WYSIWYG? אני מאוד בספק.

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

  7. אוקיי.

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

  8. אה, עוד משהו:

    אם יש לך דוגמאות לממשקי משתמש גרפיים ציבוריים שכתבת HTML והרחבותיו באמצעות VIM או דומייו, מלבד ה- Firefstats שאותו אני מכיר (והוא אכן מרשים), אשמח אם תאמר לי.

  9. אין כי לא כתבתי עם ממשקי WEB ששווה לדבר עליהם.
    FireStats הוא הפרוייקט Web הראשון שלי.

  10. אה, אוקיי.

    אבל דווקא עבור ממשקים אחרים, אני חושב שהטענה שלי עדיין בעינה:

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

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

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

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

    מה שמוביל אותי לעוד שאלה, ברשותך (רק אם יש לך זמן):

    האם Eclipse עבור JAVA הוא כמו VS עבור VB או סי שארפ, כלומר יש לו עורך GUI גרפי?

  13. אין שום דמיון בין לכתוב ממשק משתמש לבן לכתוב תוכנית באסמבלי.
    ממשק משתמש מודרני בנוי מאלמנטים ברמה מאוד גבוהה (high level), לא מדובר על handleים לחלונות, event loops וכדומה כבר מזמן.
    הדברים האלו קיימים, אבל הם מוסתרים מאחורי ממשק מונחה עצמים נוח.

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

  14. לגבי "ממשק משתמש מודרני בנוי מאלמנטים ברמה…": תאמין או לא, הבנתי את זה באופן אינטואיטיבי לבד. כלומר, זה קצת מה ש- framework אמור לעשות, כמו framework ל- ajax הכתוב ב- JS: למשל, אם אתה יוצר חלון, אתה לא צריך לומר לו איפה בדיוק אתה רוצה את התפריטים, אתה רק מציין רשימה של תפריטים והוא כבר מסדר אותם איפה שצריך בחלון. אני מקווה שאני לא כותב פה שטויות, אבל ברור לי למה אתה מתכוון.
    ומכאן אתה יכול להבין שההשוואה לא הייתה לפיתוח GUI באסמלי, אלא, למשל, כתיבת תוכנית באסמלי במקום ב- C. בכל אופן אני מקבל את דבריך.

    ולגבי Eclipse: תודה על התשובה.

  15. יונתן, אני עם עמרי כאן, אני כותבת הכל אך ורק ב VIM – כולל ממשקים. זו הדרך היחידה בה אתה באמת שולט במה שקורה ואיך – אני לא סומכת על ממשקים מתוחכמים שיעשו בדיוק מה שאני רוצה.
    אם אתה רוצ טפסים וככה בקלות – כנראה שהפתרון הטוב ביותר שעדיין מסתמך על hands-on הוא ROR, אני לא שם.

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

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

    אבל זה באמת לא נושא שאני יכול לשאול עליו יותר מידי כי אין לי ניסיון בזה, סביר להניח שאם הייתי מתכנת בשפה כמו JAVA הייתי מסכים אתכם מייד. בכל אופן ההסבר שהוא נתן בתגובה מס' 15 נראים לי הגיוניים, כך שאני מתחיל להבין למה הכוונה.

    וגם אני משתמש ב- VIM. התוכנה הזו היא אכן יצירת מופת.

  17. אח"י דקר, אני משתמש בEclipse בתור סביבת הפיתוח הראשית שלי אולי חמש שנים כבר, אז התשובה היא שלא, אני לא מתחיל :).
    השימוש המרכזי שאני עושה בEclipse הוא פיתוח ג'אווה.
    מה שכן, אני מתחיל לעבוד עם Eclipse לפיתוח ווב (PHP).

  18. הממ… התכוונתי לסביבת פיתוח PHP
    בשאר הזמן אני מפתחת על לינוקס ב VIM (אם בכלל) ועבור embeded כך שאני לא מחפשת IDE.
    מערכת פיתוח מלאה ל PHP יכולה להיות מאד מעניינת.

  19. יש מערכת פיתוח מלאה של ZEND, אך היא לא חופשית. (אבל את בטח יודעת את זה…).

    מה זה אומר Embeded מבחינתך? איזה מעבד ומערכת הפעלה?

  20. תיקון לשאלה על Embeded:
    צריך להיות:
    מה זה אומר Embeded? איזה מעבד ואיזו מערכת הפעלה?

סגור לתגובות.