יום שלישי, 20 במרץ 2012

130 Windows 8

  • פה גרים בכיף: אורי, רן וגיא בורשטיין (Developer evangelist) ממיקרוסופט. יש גם Developer advocat (ויש עוד כל מיני שמות שמחלקת ה-HR המציאה בשביל להצדיק את הקיום שלה - הערת המשורר).
  • על הפרק באסיפת הבניין - ווינדוס 8. יש גם Preview.
  • במקום בליל של API (אחד לכל שפה), בווינדוס 8 יש מושג חדש של WinRT - Windows Run Time - דרך אחידה לפנות למשאבי המערכת.
  • ווינדוס 8 רץ על מספר פלטפורמות - PC, טאבלט (אולי גם מובייל בעתיד?), יחד עם זאת אין איחוד מלא של עולם הווב וה-Native
  • WinRT גם מאפשר לכתוב קומפוננטה בכל שפה ולהשתמש באותה קומפוננטה בכל שפה
  • ווינדוס 8 מציג אפשרויות חדשות להתחבר לענן (של מיקרוסופט) אבל לשירותים נוספים (Roaming to the cloud, sky drive וכו').
  • קונספט חדש שנקרא קונטרקטס יודע לתקשר בין אפליקציות.
  • בווינדוס 8 יש ממשק משתמש חדש - מטרו. היה גם יום עיון - לעיונכם.
  • מיקרוסופט מבטיחה לעדכן לעתים הרבה יותר קרובות את הדפדפן. הישארו עמנו.
  • הגרסה הבאה של ווינדוס 8 תצא אחרי שכל הפידבקים יתקבלו מהשוק ויוטמעו במערכת.
  • בעתיד תיפתח החנות של מיקרוסופט למפתחים וצרכנים ישראלים.

הקובץ נמצא כאן האזנה נעימה
תודה ליותם על התמלול והאיפוק ;)

יום חמישי, 15 במרץ 2012

129 Backbone.js

הנושא היום: התפתחויות בעולם ה- JavascriptMVC Frameworks
משתתפים רן תבורי, ישי סמית ועוזי קילון

קצת רקע: עוזי הצטרף אלינו לשיחה כמשתמש ופעיל ברשימת תפוצה של Backbone.js, שם גם אותר שם על ידי רן. קישור לבלוג של עוזי נמצא כאן. עוזי עובד כיום כמפתח Front-End בחברת Splunk בסן פרנסיסקו לאחר מספר שנות עבודה ב-Dapper אשר נרכשה על ידי Yahoo! ושבה עבד גם בארץ וגם ב-SFDapper פיתחה מערכת המאפשרת לבצע Web Scraping יחסית בקלות גם על ידי חסרי רקע בתכנות. הטכנלוגיה בסופו של דבר משמשת את Yahoo! לצרכי זיהוי סוג האתר עליו אתה נמצא לשם זיהוי טוב יותר והאמת פרסומות לקונטקסט הנכון.
Splunk מספקת מוצר בתחום ביזור המערכות. המוצר נולד כפתרון IT לניתוח לוגים ומספק שירותים תחת ההגדרה - Time Based Database. בשלב מאוחר יותר כשהטכנולוגיה הבשילה המוצר הפך לגנרי יותר ומאפשר כיום התממשקות לא רק לחבילות לוג סטנדרטיות אלא גם לכל פיסת מידע וטרנזקציה המתוייגת על ידי זמן. המוצר מאפשר ביצוע שאילתות נתונים והפקת דוחות בקלות רבה, כמו גם להוסיף Adaptors למקורות מידע נוספים. הטכנולוגיה הבסיסית של המוצר עושה שימוש בין השאר גם ב-Hadoop , כמו גם טבנולוגיות יחודיות שפותחו על ידי splunk אך למרות זאת נותן ביצועי חיפוש יעילים יותר ועל פי בדיקה שנעשתה לאחרונה היו טובים לעיתים אפילו פי 100!
הזכרנו מספר Framework ו-Utilities אשר משמשים מפתחי Java Front-Ends כגון: JQueryPrototype.jsUndescore.jsEmber.jsBackbone.js  וכו'. רשימה מעודכנת של ספריות והשוואה של יכולות MVC שלהן ועוד ניתן לראות ב- Todo MVC demo ב-Github, שם ניתן לראות איך מממשים את אפליקציית ה-demo בכל אחת מהספריות הני"ל.
אבחנה בין Framework ל-ספריה: ה-Framework קורא לקוד שלך ולעומתו בספריה, הקוד שלך עושה שימוש בספריה (כלומר קורא לקוד של הספריה). על פי אבחנה זו, Backbone.js הינה ספריה.
מה זה Backbone.js? – ספריה המספקת שירותי MV (model and view, no control) בשכבה מאוד דקה שמטפלת בעיקר בקישור (routing) של המידע למודל/תצוגה תוך שימוש ב-Patterns פשוטים המאפשרים שיתוף מידע בין Views שונים אשר ממומשים יחסית בקלות.
מכיוון ש-backbone.js קלה מאוד (sizing footprint) היא אטרקטיבית מאוד לשימוש בסביבת מובייל.
בשונה מ- JQuery אשר מסייע ב-DOM Abstraction ופחות מסייע מבחינת ארכיטקטורה, backbone.js נותן שירותים טובים של שליפת מידע ו-dynamic rendering– במיוחד אם עובדים בארכיטקטורת REST מלאה (לכל משאב/שירות יש את ה-URL שלו וכו'). הספרייה עושה שימוש ב- Underscore.js וביכולות ה- Template הטובים שלה וכמו כן משתמשת בשכבת התקשורת xhr מ-jquery לצורך ביצוע הקריאות לשרת וב-delegate (גם הוא מ-jquery) לצורך ניהול ה-events (הרחבנו קצת בנושא).
-          דיברנו על מאפייני אפליקציות התואמים שימוש ב-backbone.js (single page applications כמו gmail אשר אין להן הרבה צורך ל-refresh של ה-page, גם אם מדובר על הרבה קריאות לשרת).
-          דיברנו על מודלים ורכיבים שונים בתוך backbone ועל דוגמאות להגדרת שליפה מהשרת תוך שימוש בהגדרת מודלים, collections, הגדרת view למודל (template, DOM elements, etc.).
-          Routes – מאפשר לבצע מיפוי ושימוש בחלק שמגדיר את ההאפליקציה בשורת ה-Url (מופיע אחרי הגדרת שם הדומיין), מופיע אחרי סימן ה-# וידוע בשם Anchor tag.
-          שוחחנו קצת על הארכיטקטורה של הקשר בין ה-view לבין המודל. ה-view מתפקד כ-observer למודל – תכונה אשר מאפשרת לבצע פעולות בצד ה-client מבלי לטעון את כל הדף מחדש. כמו כן, ה-view יכול לבחור על איזה שדות במודל הוא מאזין, בלי קשר לכך שהוא מבצע/יכול לבצע render לכל השאר.
-          הזכרנו קצת את ההבדל בגישות בין ember.js ל-backbone.js (ember קצת יותר פורמלית בהגדרות ולעומתה ב-backbone הגמישות דורשת למעשה כתיבה של לוגיקה).
יתרונות וחסרונות של backbone.js:
-          Too flexible – מרחב אפשרויות מגוון ולא מובנה אשר בעצם מאפשר בניית פתרונות שונים אחד מהשני (גם עם מדובר על אותה תוצאה) –נובע בעיקר מעצם כך שזוהי ספריה ולא framework.
-          לא תומך באובייקטים מורכבים (backbone relational יכול לעזור כאן בטעינה של נתונים היררכיים מהשרת)
-          יתרון – lightweight.

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

תודה לגל כהן על התמלול.

יום שישי, 9 במרץ 2012

128 Final Class 16 - Simplicity

  • מאושפזים בכפייה: רן מ-invi, איתי מ-Google, ערן מ-Outbrain, גילי מ-IBM (אבל דעותיו אינן מייצגות את החברה), אביב מ-BillGuard. בסוף גם ישי בא (QWallet).
  • והנושאים להיום: פשטות בתוכנה וחדי-קרן. אם כבר פנטזיות אז עד הסוף. סתם, בלי חדי-קרן.
  • הנושא עלה בעקבות פוסט של Avdi בעניין.
  • פשטות היא עניין יחסי ותרבותי, תלוי מאוד למה מתרגלים וגם תלוי מאוד מי אמור לתחזק את הקוד וכמה היכרות יש בין הכותב לקורא.
  • מתכנת אמיתי לא משתמט, הוא משכתב קוד מסובך בלילה (עדיף כשהוא נורא עייף) ובבוקר הכול שוב פשוט.
  • קנט בק חושב שאתם מסבכים את הדברים. הקוד משקף את היכולת של כותבו להתמודד עם הסיבוכיות של הבעיה שאותה הוא פותר.
  • מערכת מורכבת היא כזו שבה ישנן הרבה יחידות קטנות ופשוטות מחוברות יחדיו.
  • 4 כללים לדיזיין פשוט. כן, רק ארבעה. פשוט, לא ? הפרחים לקנת בק.
  • קוד פשוט נשאר כזה לאורך זמן, גם עוד שנה הוא יהיה פשוט (גם ובעיקר למי שכתב אותו …)
  • קוד פשוט, בניגוד לרוב דיירי האח הגדול, יודע להסביר את עצמו מצוין
  • פונקציונאליות פשוטה אפשר להסביר בקצרה.
  • בשביל קוד פשוט אפשר לכתוב טסטים קצרים.
  • אבדי והחבר'ה מדברים על קוד יפה. הם גם מתאהבים בקוד והקוד אוהב אותם. מה שנקרא - Get a (chat) room
  • ישנם כלים המיועדים לנתח את הסיבוכיות של קוד.
  • יישום קפדני של Coding conventions מקל מאוד על ההבנה של קוד.
  • הרבה פחות נעים לחרב בניין יפה - וזה נכון גם לגבי קוד.
  • תמיד קשה לגשר על פערי שפה.
  • האם יש מדדי נחשלות לחברות תוכנה (הי, את זה אני הצעתי !) ? מיילים, מדדי סיבוכיות קוד, כמה קוד מכסים הטסטים, כמות שעות דיבוג, כמות ההערות בקוד, כמות האיתחולים מחדש של שרתים, כמה ישיבות יש בשבוע, כמה זמן לוקח לגלות שהקוד שבור, כמה רועשת סביבת העבודה, האם אתם משתמשים בכלים הכי טובים וכו' וכו'. גם לג'ואל ספולסקי יש מה לומר בעניין.

קצרים
  • שפה חדשה - JuliaLang, טובה בעיקר לחישובים מתימטיים, טובה גם למעבדה וגם לפרודקשיין. ממש האישה המושלמת.
  • אתר מגניב שנותן את כל המידע שהוא יכול להסיק לגבי הטכנולוגיות שאיתן נבנים אתרים ספציפיים: builtwith.com
  • אנדרואיד מרקט זה פסה. מעתה אימרו גוגל פליי (שזה כמובן הרבה יותר טוב)
  • Less - פלטפורמה להקלה על העבודה עם CSS
הקובץ נמצא כאן האזנה נעימה

תודה רבה ליותם אורון על התקצור!

יום שני, 5 במרץ 2012

127 Gogobot

  • בחללית האם - רן ואורי, על כן השיגור - אבי צוראל
  • אבי מפתח אפליקציות מבוססות אינטרנט ב-RoR, עוסק גם בייעוץ לחברת Gogobot (בפועל עובד במשרה מלאה), בזמן האחרון עוסק בעיקר בתחומים של ביצועים והטמעה של תרבות הפיתוח בחברה.
  • גוגובוט ממליצה על אתרים ואטרקציות תיירותיות בהתאם לגרף החברתי של כל משתמש.
  • והרי סקופ: אורי ורן לא עושים צ'ק-אין. תזכרו איפה שמעתם את זה ראשונים.
  • הצוות מבוזר בכל העולם: לונדון, ברזיל, ישראל, סן-פרנסיסקו (את זה ג'ניפר לופז העתיקה מגוגובוט), העבודה א-סינכרונית לגמרי בצ'אט טקסטואלי (מבוסס Campfire). יחד עם זאת, פגישת מתכנתים  יומית ושבועית בסקייפ (בשביל רכילות וזה).
  • בפגישה השבועית מתכננים את השבוע הבא. כמו אלון מזרחי, גם ב-גוגובוט חיים משבת לשבת.
  • השימוש בצ'אט נותן תיעוד של העבודה היומיומית בחינם. וחוץ מזה, לקרוא לחבר שלך שיושב לידך שיבוא יראה משהו זה ממש לא מנומס ועושה מלא רעש.
  • בתוך הצ'אט יש יצור - ה-gbot. אביו הוא Hubot. הוא יודע לעשות deploy לכל שרת, יודע לנקות cache, לנקות את ה-cdn, יודע להריץ טסטים ב-CI, יודע להגיד כמה באגים פתוחים, כמה משימות פתוחות, פאנלים-שמשות-אבק. בקיצור, חלומו של כל מג"ד.
  • ההנהלה משתדלת לא להפריע למתכנתים. במקרים קיצוניים שולחים מייל.
  • אין קשר בין מה שצריך לעשות בשבוע הקרוב לבין מה שיהיה deployed בשבוע הקרוב.
  • CI נעשה באמצעות Capistrano. גם איתו gbot יודע לדבר.
  • בשביל לנטר את השרתים משתמשים ב-Pingdom וב-Pagerduty. הטלפון ירדוף אותך עד הבית. בכל מיני מקרים של רגרסיה בביצועים, יישלחו מיילים/סמסים/טלפונים/גובה מסים עצבני עם מבטא לא ברור, הכול לפי דרגת החומרה. ביצועים מנטרים עם New Relic או ישירות בקוד.
  • אין דד-ליין. אין מיילסטונס. הרעיון הוא פשוט לעשות את מה שאפשר כמה שיותר מהר באיכות הכי טובה שאפשר. הנרי גאנט מתהפך בקברו. אחרי טראומה מספיק גדולה, גם לכם זה יכול לקרות.
  • זובור יש לא רק בצבא. נו, אז הפלת את הפרודקשיין, אז מה - לך תבכה בצד, תנגב את הדמעות ותתקדם הלאה.
  • כמו שאמר אושו - כשהנעל מתאימה, חפש את האישה היחפה אצל הסנדלר החכם ולמד דרכיה (או, במלים אחרות - כששיטת הפיתוח מתאימה לאנשים ול-problem domain, השמיים הם הגבול, ואפילו אפשר ממש ליהנות).
הקובץ נמצא כאן האזנה נעימה

תודה ליותם על התקצור. 

יום חמישי, 1 במרץ 2012

126 Android 2


פרק 126 – שיח עם רועי בן יוסף, מפתח Mobile ואוונגליסט לפיתוח באנדרויד ובקוד פתוח
נושא:  Android – שיחה שניה בנושא

-          קיבלנו מספר טיפים לפיתוח ב-Mobile הקשורים ל:
o       תגובתיות (2-3 שניות) אשר ניתן ליישם על ידי שימוש נכון ב-Multi-Threading  וב-UI Thread
o       טעינת מידע Just In Time או במקרים מסויימים Ahead of time ו/או שימוש חוזר במידע שנטען בעבר ולא אמור להשתנות, מתוך מטרה להמנע מ-Timeout שעלול להיווצר בזמן הניווט של המשתמש
o       כלים למדידת Response Time ולסימולציית פעולות של משתמש
o       שימת לב לניהול צריכת הסוללה וניצול מינימלי של חבילת הגלישה: מתי להשתמש באיכון מיקום ב- GPS או ב-WIFI (Network/Location Management), צמצום צריכת נתונים כשהמסך כבוי (המשתמש במילא לא רואה אותם...) ושימוש ב-BroadcastReceiver, זיהוי Pattern שימוש והתאמת אלגוריתם האפליקציה למצבים שחוזרים על עצמם (לדוגמא: במידה והמיקום חוזר על עצמו לא צריך תמיד לחפש את כל המסעדות בסביבה אלא אחת ל..., או לחלופין, לייצר Service אשר מספק חתימה לפיה ניתן לדעת אם הנתונים השתנו ומתי, וכך לאפשר לאפליקציה להחליט איך לפעול)
-          ניהלנו שיחה קצרה על בדיקות תוכנה באנדרויד והזכרנו את:
o       MonkeyRunner המאפשר לבצע מגוון פעולות UI.
o       הזכרנו את ACRA – ספריה המאפשרת שליחת Logs של UI FlowCrash Report ומידע אפליקטיבי נוסף ממכשירי קצה – ניתן להפיץ את התוכנה בשלב הבטא לצורכי Friendly User Trial בין חברים לפני שמפיצים את התוכנה ללא יכולות אלה לכלל הציבור (כדי להמנע מבעיות חוקיות). ייתרון נוסף של ACRA בשלב הבטא הוא שהיא מונעת את הדיווח לאנדרויד מרקט במקרה של קריסת אפליקציה, כך שלמעשה לא נאבד רייטינג בזמן הבדיקות.
o       הזכרנו את שירות TestFlight מעולם ה-iPhone Development אשר בשלב זה קיים באנרויד מרקט באופן מצומצם יותר וכנראה עדיין לא מספק
o       בנושא בדיקות אוטומטיות הזכרנו את Android Test Project החינמי אשר משתמש ב-JUnit ומאפשר ביצוע Unit Test ו-UI Test (כמובן שדורש ניתוח מערכת מתאים ופיתוח נוסף מראש כחלק מפרדיגמת ה-Test Oriented Programming או Test Driven Development).
-          הזכרנו מספר ספריות פיתוח שימושיות למפתחי אנדרויד:
o       הזכרנו את droid-fu, ספריית utility (ניתנת להורדה כאן) אשר נותנת מגוון כלים שימושיים ל-everyday needs.
o       הזכרנו ספריות לניתוח JSON  כגון Gson של גוגל ולעומתה Jackson אשר מציגה ביצועים טובים יותר וצורכת פחות זכרון (ראה כתבה בנושא כאן)
-          דיברנו על הדרך ל"שחרור" אפליקציות באיטרציות – האם זה אפשרי?
o       To make a long story short –the iteration model does not fit well to application development and it is different than service delivery, however, there are still some considerations that shall be taken
o       יש לקחת בחשבון את זמן ה-Review ולכן קשה מאוד לתכנן delivery בזמן הקצר מ-3-4 ימים וגם כאן תלויים בגורם חיצוני. תחת ההנחות הנ"ל ובייחוד לאור העובדה שמדובר באפליקציה (בשונה משירות Web אשר ניתן לעדכן ללא עירוב המשתמש הסופי), חשיבות התכנון מראש גדלה משמעותית.
o       צריך לקחת בחשבון שלא כל המשתמשים מעדכנים את התוכנה, למרות שהם מקבלים אינדיקציה על עדכון.
o       החל מהחצי שנה האחרונה, ניתן ליצור קשר ישיר עם הלקוחות דרך המרקט – פתח לתקשורת ישירה שבא ניתן לנסות לשכנע אותו להתקין את העדכון
o       החל מרגע העלאת העדכון למרקט, כל מי שהתקין את האפליקציה בעבר ייקבל חיווי על העדכון האחרון ברגע שיתחבר לרשת. חשוב לציין מה היו השינויים שגרמו לעדכון באופן מפורש – יותר מאשר "תיקוני באגים" אשר מעורר אנטגוניזם. בד"כ המשתמשים מעדכנים ברגע שהם מבינים במה מדובר ומקבלים את הרושם שכותב האפליקציה פועל באופן "שקוף" ומגיב מהר למשתמשים.
o       רצוי לא לשנות API. אם אין ברירה ועושים זאת, יש לשקול להפיץ את התוכנה כאפליקציה חדשה.

פינת המודעה הקטנה:
-          הצגת פינת הדרושים והפעם משרות פתוחות בחברת Matomy. דרושים מפתחים אשר אוהבים תוכנה וטכנולוגיה, בעלי יכולת יכולת להבין לעומק ולפתח בטכנולוגיות שונות תוך שימת לב להנדסת תוכנה נכונה ודגש על פיתוח איכותי ושחרור גרסאות ללקוחות קיימים ברזולוציה חודשית.
פרטים בסוף ה-Podcast או כאן או באימייל ל-ran.b@matomy.com

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

תודה רבה לגל על העזרה בתקצור!