ארכיון עבור הקטגוריה Java
נכתב על ידי עמרי בנושא Java, קוד פתוח, תכנות
הפוסט הזה הוא על מיילר, והוא מכוון בעיקר למפתחים, אם כי כולם מוזמנים לקרוא ולהתפעל :).
כששוטטתי בבאגים של Eclipse בזמן שחיפשתי מידע על משהו, נתקלתי בAttachment של קובץ מוזר שסיקרן אותי:
mylar/context/zip.
לא נתקלתי בזה בעבר, ולא ראיתי שום קשר בינו לבין הבאג.
חיפוש קצר בגוגל הביא אותי לדף הזה, שמכיל מאמר על "תכנות מונחה משימות עם מיילר".
חפרתי עוד קצת, ומצאתי גם את המצגת ווידאו הזו, שמתארת איך משתמשים במיילר ומה הוא עושה (40 דקות).
מסתבר שמיילר הוא פרוייקט Eclipse חדש, אחד מני רבים (Eclipse הפכה לחממה של עשרות טכנולוגיות חדשניות), שמתיימר לפתור את הבעיה של עומס מידע בזמן שעובדים עם Eclipse.

באופן הבסיסי ביותר, Mylar הוא רשימת משימות, למשימות מקומיות וכן למשימות/באגים ממערכות באגים כמו bugzilla, trac וJira
מה שיפה זה שמיילר מנהל הקשר (Context) לכל משימה בצורה אוטומטית, שמכיל את כל מה שקשור אל המשימה - איזה קבצים פתחת, איזה אלמנטים בתוך הקבצים מעניינים (במקרה של קוד ג'אווה - איזה פונקציות למשל) וכו'.
ברגע שעוברים לעבוד על משימה, מתחילים מיד מההקשר הקודם של המשימה (ריק בהתחלה), ואחרי שעוברים למשימה אחרת, ההקשר נשמר - מוכן להשלף אוטומטית ברגע שחוזרים לעבוד על אותה משימה.
דמיינו את הסיטואציה הבאה:
אתם עובדים על איזה באג/פיצ'ר לתומכם, ופתאום יש מקרה חירום וצריך לתקן באג חדש ולייצר גרסא חדשה של הdemo מאתמול.
לפני מיילר, מה שזה אומר זה שצריך להתחיל להזכר מה צריך כדי ליצר גרסא חדשה, לפתוח קבצים חדשים, כנראה גם לסגור את כל מה שקשור לבאג שעבדתם עליו.
עכשיו, נניח שהבאג הזה בכלל שייך למישהו אחר בצוות, אז צריך להעביר את העסק עליו ואז להזכר מחדש איפה הייתם ומה עשיתם, לסגור את הקבצים שקשורים לבאג בdemo, לפתוח את הקבצים של הבאג שעבדתם עליו ולהמשיך לעבוד.
כל הסחות הדעת האלו יגרמו לכך שגם תבלו איזה עשר דקות בynet בין המשימות, סתם כדי לנקות את הראש.
עם מיילר, אפשר לעבור בקלות בין ההקשרים, בלי לבזבז זמן ותאי זכרון יקרים.
מיילר מייעל גם עבודה בצוותים: את ההקשרים האלו, שכוללים בעצם ריכוז של ידע על אותו באג, אפשר לצרף לבאג עצמו, ככה שהמפתח הבא יוכל פשוט למשוך את ההקשר מהבאג ולהמשיך מאותו מקום שאתם עצרתם. (כל הקבצים פתוחים, כל הפונציות שרלוונטיות לדעתכם כבר יהיו בהקשר, וכו').
Eclipse הוא כבר מזמן לא כלי לפיתוח Java בלבד, כבר היום הוא תומך בC/C++, PHP, Prolog ועוד, מיילר אמור לתת ערך מוסף לתכנות בלי קשר לשפה, כל עוד אתם עובדים בתוך Eclipse - אם כי אני לא בטוח שהוא באמת מוכן לשפות אחרות עדיין.
יתרון נוסף הוא התמיכה האוטומטית בקבוצות שינויים (Changeset) כשעובדים מול מערכת ניהול גרסאות הקוד (CVS/SVN וכו').
מה שזה אומר זה שמיילר ינהל בצורה אוטומטית את הChangeset שקשור לבאג שאתם עובדים עליו, ואפילו יכלול הודעת Commit אוטומטית כשתעשו Commit!
עם הזמן, רשימת המשימות שלכם תתנפח ותתנפח, ותהפוך לבעיה של עומס מידע בפני עצמה.
הדרך לפתור את זה היא תזמון של המשימה (Schedule) לתאריך מסויים, ואז התמקדות בשבוע העבודה הנוכחי. משימות שזמנן עבר יהיו מסומנות באדום, משימות להיום בכחול ומשימות שנסגרו בירוק. מיילר גם מציג סרגל התקדמות שבועי, שעושה הרגשה חמימה בבטן כשהוא מתקרב ל100% ביום רביעי (אפשר לשחק Unreal ביום חמישי!).
יש עוד, ועדיין לא התחלתי להשתמש במיילר באמת, אבל הוא נראה מבטיח.
יש לינקים עם עוד מידע פה.
25 תגובות »
נכתב על ידי עמרי בנושא Java
שוחררה ג'אווה 6.
משהו מעניין, בדף הJSR של הפרוייקט, רשימת קבוצת המומחים ההתחלתית היא:
Initial Expert Group Membership:
* Google
* HP
* IBM
* Intel
* Doug Lea
דאג לי הוא פרופסור שכתב את ספריות הסנכרון שנכנסה
בג'אווה 5 (java.util.concurrent), די מצחיק לראות את השם שלו שם בין כל חברות הענק.
2 תגובות »
נכתב על ידי עמרי בנושא Java, קוד פתוח, לימודים
אחת השאלות בממ"נ האחרון בקורס ג'אווה היתה לכתוב ישומון של סודוקו.
אז הנה, מי שרוצה לחקור או לשחק עם הקוד מוזמן לקחת מפה. (הJAR כולל את הקוד).
הקוד משוחרר תחת רשיון GPL.
9 תגובות »
נכתב על ידי עמרי בנושא Java, קוד פתוח, תכנות
שחררתי ספריה חדשה למציאת המדינה שאליה שייכת כתובת IP.
הספריה, IP2C - משוחררת תחת רשיון GPL2, ותומכת בJava, PHP ושורת פקודה.
הביצועים מצויינים:
250 חיפושים בשניה בPHP, ו330,000 חיפושים בשניה בג'אווה (זה ממש טוב מדי מכדי להיות אמיתי, אבל אלו התוצאות שלי) זה באמת טוב מכדי להיות אמיתי, כתבתי תוכנית בדיקת ביצועים והתוצאה היא ש100,000 כתובות אי פי אקראיות לחיפוש לוקחות 14.7 שניות, מה שנותן כ7140 חיפושים לשניה בג'אווה.
הספריה עובדת על קובץ בינארי, ככה שלא צריך להתעסק עם בסיס נתונים כדי להשתמש בה.
עדכון:
בשימוש במטמון אופציונלי (העלאת הקובץ לזכרון, מה שצורך כ460K), הגעתי לכ170,000 חיפושים בשניה.
תגובה אחת »
חידה נפוצה בשיעורי הבית של תלמידי קורסים לבינה מלאכותית היא:
בהנתן לוח בגודל NxN, יש לסדר N מלכות כך שאף אחת לא מאיימת על השניה.
כמובן שאני כותב על זה כי קיבלתי את השאלה הזו בשיעורי הבית שלי בקורס מבוא לבינה מלאכותית.
האלגוריתם שפותר את החידה בצורה יעילה הוא אלגוריתם אקראי חמדני:
מכיון שיש N עמודות, וN מלכות, ברור שיש מלכה בכל עמודה.
אז נשים בכל עמודה מלכה, אבל צריך לבחור גם את השורה.
הרעיון הוא להגריל את השורות בהתחלה, ואז בכל סיבוב להזיז מלכה אחת למקום שמקטין הכי הרבה את מספר המלכות המאויימות.
כך בכל סיבוב מספר המלכות המאויימות קטן, עד שמגיעים ל0, או שמגיעים למצב שבו אי אפשר לשפר יותר - כי התחלנו לא טוב, ואז מתחילים מחדש, מגרילים מספרים וחוזר חלילה, עד שהמלכות מסתדרות באורח פלא.
השאלה לא היתה שאלה אלגוריתמית אלא מימושית, האלגוריתם הוסבר בבהירות רבה בשאלה, ורק נשאר לבחור שפה ולממש.
בניגוד למטלה הקודמת, בה בחרתי בפרולוג לפתרון של סודוקו, מה שלמרבה הצער שרף הרבה זמן והביא לתוצאות מפוקפקות, הפעם החלטתי ללכת על שפת הבית - הרי היא ג'אווה.
תוך בערך שעה העסק היה די כתוב, חוץ מזה שהוא לא עבד - לפעמים האלגוריתם נתקע בלולאה אינסופית, ולפעמים פתר את הבעיה בקלות.
בהתחלה הדפסתי את הלוח למסוף הטקסט, אבל מהר מאוד הבנתי שככה לא נגיע רחוק:
מאוד קשה לזהות תבניות שחוזרות על עצמן כשהן מודפסות כטקסט, וגם קשה לראת אם המלכות מאיימות אחת על השניה באלכסון.
החלטתי לעשות את מה שאני עושה טוב, וכתבתי ממשק שמציג סימולציה של האלגוריתם בג'אווה, ובעזרתו מצאתי את הבאגים.
חשבתי לעצמי, אם כבר הגעתי לכאן, נשקיע עוד קצת ונהפוך את זה ליותר שימושי:
הפכתי את הישום לאפלט, מה שמאפשר להריץ אותו גם בדפדפן, והוספתי כמה כפתורים ששולטים על הסימולציה.
התוצאה לפניכם:
נסו לשחק עם זה, בכל פעם שהוא נתקע הרקע הופך לאדום והוא מגריל מחדש.
שימו לב שאפשר לפתור עם זה גם לוחות גדולים מאוד.
עוד דברים שכדאי לשים אליהם לב זה שיש בעיה עם לוחות קטנים (כמה קטנים?), ושכל פעם הוא נותן פתרון אחר כי ההתחלה אקראית.
האפלט כאן, הקוד כלול בפנים.
16 תגובות »
החברה הקודמת בה עבדתי, סטארטפ קטן בשם Content Objects, נסגרה לפני כחודש.
אין פה חדש, סטרטאפים נסגרים, ככה זה, ובכל מקרה אני כבר לא הייתי שם כשזה קרה.
כשעבדתי שם, נזקקנו ליכולת לקבל ארועים על שנויים במערכת הקבצים של חלונות, לינוקס ואולי עוד מערכות הפעלה, מכיוון שלא מצאתי אף פרוייקט שמאפשר את היכולות האלו לישומי ג'אווה, שינסתי את הקומפיילר והתחלתי לכתוב, לא לפני שקיבלתי אישור מהמנכ"ל של החברה להשתמש בפרוייקט, שנקרא JNotify, כניסוי קטן:
החלטנו שהפרוייקט יהיה פרוייקט קוד פתוח, מהסיבות האלו:
- השתמשנו בהרבה קוד פתוח כבסיס למוצר, ורצינו להחזיר קצת.
- בהחלט שקלנו לשחרר את המוצר המלא תחת רשיון קוד פתוח, ורצינו להשתפשף קצת בניהול של פרוייקט קוד פתוח, בלי להסתכן מדי.
- ידענו שאם תתפתח קהילה של משתמשים, נקבל פידבק על בעיות, מה שיגרום לקוד להיות יותר איכותי.
רצה הגורל, והחברה נסגרה, אבל הפרוייקט כמובן, נשאר בSourceForge, מה שאומר שמכל הקוד שפותח בחברה, רק הוא המשיך להיות שימושי.
למעשה, כבר שני משתמשים של הפרוייקט יצרו איתי קשר: סטודנט מארגנטינה, שביקש וקיבל פיצ'ר קטן, ומפתח מגרמניה שדיווח היום על שני באגים, שתיקנתי כבר.
כיף לקבל אימיילים מאנשים שמשתמשים בקוד שלי, גם אם אני בעצמי לא משתמש בו.
5 תגובות »
נכתב על ידי עמרי בנושא Java, פיירפנג.רשת
שיפרתי את הביצועים של הגלגלן (ותודה לסשה), ועכשיו הוא יותר ידידותי למחשבים חלשים.
יש עוד כמה שיפורים בקנה, אני אעדכן.
יהונתן, אני אשמח אם תסיר את החסימה ותגיד לי אם זה עדיין מזחיל לך את המחשב.
אין תגובות »
שדרוג נוסף לגלגלן (מישהו יכול לבוא עם שם יותר טוב מזה?):
מעכשיו, הגלגלן יודע לקרוא קבצי OPML, שהם קבצי לינקים בפורמט XML שנמצאים בשימוש בגרגרן ובעוד אספני רסיסים.
בנוסף, מעכשיו יש חלון מידע (tooltip) בכל אחד מהלינקים (העכבר צריך לצוף פרק זמן מסויים מעל הלינק) שמכיל את השם והתאור של הבלוג (אם יש).
מה שטוב בשיטה החדשה היא שמופעים שם בלוגים שנמצאים בגרגרן שלי, ולכן כולם (רובם) הם בלוגים חיים שאני באמת קורא על בסיס קבוע, כמו כן, בלוגים חדשים שאני אוסיף לגרגרן יופיעו אוטומטית בגלגלן הקישורים.
אני מזכיר שהגלגלן והקוד שלו משוחרר תחת רשיון חופשי (בחרתי ברשיון BSD), וכולם יכולים להשתמש בו בצורה חופשית לגמרי, כולל שינויים לקוד.
עוד מידע, וקישור לקוד, נמצא פה.
קרדיט הולך לפרוייקט NanoXML, על פרסר XML זעיר ועובד.
זה מה שצריך להוסיף לHTML כדי להציג את הגלגלן (בשינויים נדרשים, כמו לשנות את הcodebase לאתר שלכם).
שימו לב, מגבלות אבטחה על ישומוני ג'אווה לא חתומים מונעים מהגלגלן להתחבר לשרת אחר מזה שהוא בא ממנו.
width="150" height="100"
archive="scroller_applet.jar"
codebase="http://firefang.net/blog">
וככה זה נראה:
אין תגובות »
נכתב על ידי עמרי בנושא Java, קוד פתוח
לבקשת לולה, תיקנתי את הישומון לגלילה לינקים כך שיראה את הכתובת של הלינק שנמצא תחת העכבר בשורת המצב של הדפדפן.
בנוסף, תיקנתי עוד כמה דברים קטנים.
אם יש עוד בעיות, אני אשמח לשמוע.
פרטים פה.
8 תגובות »
נכתב על ידי עמרי בנושא Java, קוד פתוח
שחררתי את JNotify 0.7 - ספריית ג'אווה שמאפשרת קבלת ארועים של שינויים במערכת הקבצים על מערכות חלונות ולינוקס (2.6.14 ומעלה).
ממשק התכנות (API) של JNotify הוא מאוד פשוט, ומתועד פה.
אין תגובות »
|