יום שני, 21 במרץ 2011

095 Final Class 5

בפרק החמישי, לאחר טיפול מכות חשמל בהימוספרה השמאלית, נפגשנו השורדים במתכונת מצומצמת:  רן תבורי, ישי סמית , יונתן ממן, אוּרי לביא.
  • השלמות לחידושים הבאים עלינו לטובה בג'אווה: multi catch and final rethrow.
  • דיון מעניין ב- software craftsmanship - לימודים על חשבון העבודה או על חשבון הזמן הפרטי? העט נופל ב- 17:00? מישהו מקבל גמול השתלמות על הקשבה לפודקאסט הזה?
  • איך ללמוד ולהתפתח? האם אתם מתעדים את תהליך הלימוד ובכלל מתעדים את עצמכם (ויקי פנימי, בלוג, IRC, Yammer).
  • לאחר ההצלחה של EC2, אמזון יוצאים עם מנוע אפליקציות ג'וואי חדש: גבעול השעועית הגמיש (elastic beanstalk).  ה- beanstalk מתאפיין בחופש פעולה גדול יותר של כותב האפליקציה מאשר שימוש ב- (google app engine (GAE. מה הטרייד-אוף בבחירה בכל אחד מסוגי הפלטפורמות.
  • בהמשך למהומות במזרח התיכון, המשך תסיסת ההמונים מול הענק האדום אורקל - פרוייקט ה- CI עתיר הפלאגאינים Hudson התפצל לפרוייקט החופשי Jenkins. (על השם Hudson הספיקה אורקל להגן).
  • מקביליות - אורי סיפר על מפגש חובבי Erlang ותכונות המקביליות של השפה. הדיון מייד נדד לסקלה ולפריימוורק הווב שלה ליפט.
  • node JS - אחרי שכתבנו קליינט בג'אווה (GWP), למה לא לכתוב סרבר ב- JS? אותם קטעי קוד גם בקליינט וגם בסרבר. משתלם לא? שוכנעתם? רק וודאו שאם אתם כותבים בקולבקים אתם עושים את זה נכון.
  • אירועים:

הקובץ נמצא כאן האזנה נעימה



3 תגובות:

yonix אמר/ה...

אחלה פודקאסט!

2 תיקונים קטנים:
1) with נמצא כבר בפייתון 2.6 ולא רק בפייתון 2.7
2) hudson התחיל להיות מפותח ב- sun (לפני הרכישה) ולא ב- amazon או oracle.

yonix אמר/ה...

ועוד משהו - כן, יחד עם השם החדש Jenkins יצאה גם גירסה חדשה שאפשר לשדרג אליה את Hudson

אלון אמר/ה...

חשבתי שראוי להעיר כמה הערות לגבי node.js - בתור מישהו שכבר בנה משהו עם זה (אם אתם לא מכירים את ביטורמה, אז זה הזמן: http://bitorama.com):

הקאץ'-פרייז של node, כפי שמופיע באתר הרשמי, הוא דיי יבש אבל מדוייק: Evented I/O for V8 Javacript. בעצם אפשר לומר ש-"בסך הכל" מדובר בספריות בג'אווה סקריפט לטיפול ב-I/O.
שלושת היתרונות שנחבאים מתחת לתאור:
תחילה, כפי שצויין אצלכם, ג'אווה סקריפט היא evented ביסודה (closures!) ולכן יכולה בקלות לטפל ב-I/O באופן אסינכרוני.
שנית, מי שכתב את השפה (ראיין דאל) החליט ש-I/O סינכרוני ב-node הוא פרסונה-נון-גרטה כבר מהרמה הבסיסית ביותר, ולכן אין ממש מצב שמישהו ישתמש בטעות במתודה סינכרונית (לקריאת קובץ, לדוגמא) שתחסום את כל התהליך.
שלישית, node רוכבת על המאמצים של גוגל לשפר את עולם הדפדפנים דרך כרום ו-V8. מהשוואות שראיתי לפני כמה חודשים (אבל לא ממש עקבתי מאז), הביצועים של ג'אווה סקריפט ב-V8 עקפו את cpython ורובי.

יש גם חסרונות, כמובן. העיקריים אולי:
כפי שצויין אצלכם, כשכן צריך לעשות משהו באופן סנכרוני החיים קצת יותר מסובכים, אבל לא יותר מדי. 30 שורות קוד - כולל שורות ריקות - ויש לך 'מודול' שעושה את זה פשוט ולעניין. זה כה פשוט שבערך כל חודש מישהו מוציא מודול משלו (https://github.com/joyent/node/wiki/modules#async-flow).
בנוסף, המקביליות של node לא עובדת עבור דברים שדורשים זמן עיבוד רציני: צריך לזכור שבעוד פעולות I/O הן אסינכרוניות - כלומר, נזרקות לתהליכון משלהן עד שהן מסיימות - קוד רגיל שרק צריך את המעבד הוא סנכרוני לגמרי; מה שאומר שפעולה חישובית ארוכה במיוחד תחסום את התהליך עד שהיא תסתיים. אפשר להכניס לקוד שבירות מלאכותיות, אבל זה לא בדיוק פתרון אידיאלי.

זהו.

אה, ולרשימה של דברים שבנויים על גבי Erlang אפשר להכניס את ה-DB במצויין שאני משתמש בו בביטורמה: CouchDB.

הוסף רשומת תגובה