יום שני, 30 באפריל 2012

134 The Zen of Python

רן שוחח מעל סקייפ עם מיקי טבקה על הזן של פייתון. (תרגום)

תרגום של "הזן של פיתון" לעברית


מיקי טבקה, אפריל 2012

The Zen of Python, by Tim Peters
הזן של פיתון מאת טים פיטרס
Beautiful is better than ugly
יפה עדיף על מכוער
Explicit is better than implicit
מפורש עדיך על מרומז
Simple is better than complex
פשוט עדיף על מסובך
Complex is better than complicated
מסובך עדיך על מתוסבך
Flat is better than nested
שטוח עדיף על מקונן
Sparse is better than dense#
דליל עדיף על צפוף
Readability counts
קריאות נחשבת
Special cases aren't special enough to break the rules
מקרים מיוחדים אינם מספיק מיוחדים כדי לשבור את הכללים
Although practicality beats purity
למרות שמעשיות עדיפה על טוהר
Errors should never pass silently
אסור ששגיאות יעברו בשקט
Unless explicitly silenced
אלא אם הושתקו בפרוש
In the face of ambiguity, refuse the temptation to guess
סרבו לפיתוי לנחש כשאתם עומדים בפני דו משמעות
There should be one-- and preferably only one --obvious way to do it
צריכה להיות דרך אחת, ועדיף רק אחת, לעשות את זה
Although that way may not be obvious at first unless you're Dutch
למרות שיכול להיות שהדרך לא תהיה ברורה בהתחלה - אלא אם אתה הולנדי
Now is better than never
עכשיו עדיף על אף פעם
Although never is often better than *right* now
למרות שאף פעם בדרך כלל עדיף על "ברגע זה"
If the implementation is hard to explain, it's a bad idea
אם קשה להסביר את המימוש, זה רעיון גרוע
If the implementation is easy to explain, it may be a good idea
אם קל להסביר את המימוש, זה אולי רעיון טוב
Namespaces are one honking great idea -- let's do more of those
"מרחבי שמות" הם רעיון נפלא - בואו נעשה עוד



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

להלן רשימת לינקים:

The Zen: http://www.python.org/dev/peps/pep-0020/
http://code.activestate.com/lists/python-list/287109/
http://dl.dropbox.com/u/706094/CommentsIntoCode.pdf 
- Waiting for Mr. Perfect (bit.ly/HW2Znn)

PyCon
=====
* 2200+ people, Santa Clara March 7
* Tutorial, main event, sprints
* Python is going mainstream
- Google, Netflix, SurveyMonkey ...
* Science
- NumPy/SciPy
- Pandas, matplotlib
- sage
- scikit-learn
* PyPy
* Python 3
- Libraries http://py3ksupport.appspot.com/
- Adconion example
* Talks - from very technical to sketching
* Videos at http://pyvideo.org/category/17/pycon-us-2012
- Had a live broadcast
- My recommendations:
- Guido's keynote: http://pyvideo.org/video/956/keynote-guido-van-rossum
- Make Sure Your Program Crashes: http://pyvideo.org/video/647/make-sure-your-programs-crash
- Permission or Forgivness: http://pyvideo.org/video/650/permission-or-forgiveness
- Scalability at YouTube: https://us.pycon.org/2012/schedule/presentation/128/
- Sketching a Better Product: http://pyvideo.org/video/957/sketching-a-better-product
- Pragmatic Unicode or How do I stop the Pain: http://pyvideo.org/video/948/pragmatic-unicode-or-how-do-i-stop-the-pain
- What you need to know about datetime: http://pyvideo.org/video/946/what-you-need-to-know-about-datetimes


Hickey's "Hammock Driven Development" which is excellent -
http://blip.tv/clojure/hammock-driven-development-4475586

יום שבת, 14 באפריל 2012

133 The Junction

  • יוצאים מחיפה ב-100 קמ"ש: רן ואורי. יוצא מתל-אביב ב-120 קמ"ש: עדן שוחט. כמה זמן ייקח להם להיפגש ב-Junction ?
  • היסטוריה קצרה של עדן: מתכנת, עבד בנינטנדו, ב-Shells, אלגו-טריידינג, Aternity, ובסוף Face.com. מארגן גם את Geekcon. וגם שותף כללי בג'נסיס פרטנרס. בקיצור, סתם אחד.
  • ה-Junction הוא יוזמה של ג'נסיס פרטנרס.
  • הרעיון (של Shared working space) כבר היה קיים בג'נסיס - לאפשר לאנשים להתארח, לעבוד עם אנשים דומים ולפתח רעיונות.
  • האם התרגום העברי הראשון של יצירה של שייקספיר לעברית אכן טוב יותר מהמקור ? לעדן פתרונים.
  • ההשראה באה מ-Dogpatch.
  • מטרת ה-Junction בגדול היא לשפר את רמת החברות השותפות ב-Junction (ובשאיפה גם מחוצה להן) ולכן גם אין סינון מעבר למחויבות של 100%.
  • מה שמקבל היזם: כסא, אינטרנט כמה שיותר מהיר, קפה חופשי ו-72 בתולות. אפשר גם בתולים. הכול הולך. בתמורה היזם נותן כל שעה נשיקה וכל שעתיים חיבוק.
  • יש כאלה שגם ישנים ב-Junction. אני אמנע בשלב זה מאלפי הבדיחות שעולות לי בראש מפאת קוצר היריעה.
  • הריכוז של אנשים עם אותן הבעיות בשלבים שונים שמוכנים ויכולים לעזור האחד לשני תורם מאוד לפיתרון בעיות ולהתפתחות הדדית. Its the sixties all over again.
  • מסתבר שאורי הוא איש טוב. מי היה מאמין.
  • הרבה מאוד אנשים, גם כאלה שלא היו חלק ממחזורים קודמים של ה-Junction, באים ותורמים מזמנם על מנת לעזור למחזור הנוכחי ולייעץ.
  • ג'נסיס יכולה לעשות שימוש (וגם עושה) במשאבים ובקשרים שלה על מנת לעזור ליזמים ב-Junction
  • חברות שיצאו מה-Junction:
  • פעם בשבוע בימי חמישי יש TechTalks בשיתוף עם IL Tech Talks
  • יש גם שיחות סגורות לבני מחזור ובוגרים בלבד.
  • בסוף כל מחזור יש Demo-Day שאליו מוזמנים אנג'לים ומשקיעים מקצועיים על מנת להתרשם ולהשקיע.
  • אחלה רעיון, אחלה מימוש - כן ירבו !

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

יום חמישי, 12 באפריל 2012

Statistics April 2012

מידי פעם שואלים אותנו כמה מאזינים יש לפודקאסט?

התשובה היא מעט מורכבת, אבל אנסה לענות עליה כאן, נכון לחודש זה.

המספר הוא כ 2000-1000 מאזינים.

  • איך מחשבים?
  • האם ניתן להגיע לתוצאה מדוייקת יותר? (בין 1000 ל 2000 יש די הרבה...)
  • איך בכלל מגדירים "מאזין"? האם זה כל אחד שביקר באתר? (אולי הוא רק ביקר ולא האזין) האם זה מי שהוריד לאייטונס? (אולי האייטונס הוריד אוטומטית והוא לא האזין) האם מאזין צריך להיות "קבוע" או שגם מאזין מזדמן זה בסדר?
  • איך בכלל סופרים האזנות כשיש מספר דרכים שונות להאזין לפודקאסט? (דרך האתר, רסס, אייטונס, פעם גם הייתי מעלה ל iCast, חלק מהפרקים הועלו ל SoundCloud)
אז הנה כמה מספרים, גרפים ולאחר מכן מסקנות.

נתחיל בגוגל אנליטיקס. אני מסתכל על Unique Visitors ורואה שבמשך 3 החודשים האחרונים יש משהו כמו 100 יוניקים ביום

Daily Uniques
אבל האמת שבתעשיית המדיה מקובל להסתכל על יוניקים חודשיים, אז אם עושים אגרגציה לפי חודש מתקבל שבחודש ינואר היו 1400 יוניקים, בפברואר היו 2600 יוניקים ובמרץ 1300 יוניקים.

Monthly Uniques
כלומר, בין 1500 ל 2500 אנשים שונים (או לפחות - דפדפנים שונים), כל חודש ביקרו באתר. יתכן שהם הקשיבו לפרק אחד באותו חודש, אולי שניים, אולי שלושה, ואולי לא בכלל. אבל כ 2000 כל חודש פוקדים את האתר, שזה לא רע.

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

הדרך הטובה ביותר למדוד היא כנראה להסתכל על ה CDN (אנחנו משתמשים בקוטנדו), לראות מה נפח התעבורה שעובר בה ומזה לחשב את מספר ההאזנות. נכון שזה לא נותן מספר מאזינים, כי אם מספר האזנות, אבל זה מה יש.
(האזנות זה כמו page-view ומאזינים זה כמו unique visitors)


CDN Traffic
מהגרף הזה ניתן לראות שהחודש העמוס ביותר עד כה, נובמבר האחרון, הכיל 75G של data שעבר למאזינים. ובממוצע, בכל חודש עוברים כ 42G.
כל קובץ של פודקאסט, נפחו הוא בממוצע 20M.
אז אם מחלקים 40G ב 20M מקבלים 2000. כלומר 2000 הוא מספר ההאזנות החודשיות הממוצע.

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

אם נקח בחשבון גם את הנתונים מגוגל אנליטיקס, שמראים בין 1500 ל 2500 יוניקים חודשיים, זה נראה סביר להניח שיש מיקס טוב של קבועים למול מזדמנים, ולפי כיוון הרוח כעת אני מחליט שיש לנו 1678 מאזינים בממוצע שחלקם קבועים וחלקם מזדמנים.
או, אם תרצו, בין 1000 ל 2000.

עדכון: בדיקה נוספת מראה שמספר המאזינים הרשומים לרסס נכון להיום הוא 608, דרך הסטטיסטיקה של feedburner. אפשר להתייחס למספר זה כאל הגרעין הקשה של המאזינים, אבל לא כולו מכיוון שנכון להיום רסס לא אומר הרבה ממספר סיבות, האחת היא שטוויטר משתלט על הרגלי הקריאה והסיבה השניה היא שלא ברור אם מאזיני iTunes נספרים כראוי.
מספר נוסף רלוונטי אם כן הוא מספר העוקבים של חשבון הטוויטר: 168 עוקבים.

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








יום רביעי, 11 באפריל 2012

132 Sasson

  • יצאנו לדרכים, נחתנו בפונדק של אבירי Linnovate
  • מיטיבים ליבם ביין סביב השולחן העגול: רן "בן דמות היגון" תבורי, אורי "מגינה של דולציניאה" להב, זהר "ידידו של סנשו פנשה" סטולר, צחי "הלב של לה-מנצ'ה" שלידור ויעל "הקמע" תבורי.
  • מנת הבית: Sasson.
  • לינובייט עושים בעיקר אתרי דרופל, עם לקוחות אנטרפרייז גדולים (ישראל היום, ג'ון ברייס, אנדר.מי וכו')
  • השירות של לינובייט הוא end2end.
  • דרופל צועדת עם הזמן, התחילה כמערכת ניהול פורומים פשוטה ומאוד השתנתה וצמחה מאז
  • המתחרים של דרופל היום הם SharePoint, Vignette וכו'.
  • ממשלת ישראל בחרה בדרופל כתשתית לדור הבא של אתר gov.il.
  • ששון הוא ארגז כלים, מעין Base Theme. המקור של השם הוא  בכלל מפרי-קומפיילר של CSS שנקרא Sass
  • ששון  עושה  שימוש בקומפס ותומך ב-HTML5
  • ששון תומך ב-Responsive design: תגובה לרוחב המסך. מגיע בעיקר עקב הדרישות של עולם המובייל. דוגמה אפשר לראות במשחק מטמון של ישראל היום בפסח.
  • RTL עוד יביא את השלום. Just you wait !
  • לינובייט מארחים בדרך כלל בשרת שלהם (מאובטח) או אמאזון (ולפעמים על שרת של חברה נוספת).
  • יש הרבה תוספים והרחבות לדרופל להרבה מאוד שימושים.

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

ותודה רבה ליותם אורון על התמלול הצבעוני.

131 uijet

פרק 131 – שיחה עם יונתן דניב –Freelancer המפתח בעיקר  Client Sideויוצר ספריית uijet
נושא:  UIJet

-         UI Jet – זהו פרוייקט המממש ספריית ג'אווהסקריפט אשר הקוד שלה מורץ בתוך הדפדפן. הפרוייקט נולד מהצורך לבנות ממשקי משתמש ואפליקציות תוך שימוש במגוון רכיבי UI(קומפוננטות) - לדוגמא: רשימות, טבלאות וכו', מתוך מטרה להריץ את האפליקציות הנ"ל על גבי טאבלטים, טלויזיות ומכשירי מובייל. דרישה נוספת היא היכולת לביצוע תחזוקה קלה גם לחסרי נסיון ב-Javascript.
-         תוך כדי חיפוש פתרון הזדמן ליונתן לשמוע הרצאה מעניינת של ניקולאס זאקס (מומחה JS ו-performance מיאהו!) בנושא ארכיטקטורה של אפליקציות Client (ScalableJavascript Application Architecture), הרצאה אשר נתנה השראה למימוש הספריה ושימוש בספריות באחרות.
-         קצרים על ארכיטקטורת אפליקציות קליינט (מתוך ההרצאה):
o       ברובד התחתון של הארכיטקטורה נמצאות ספריות כמו jquery או Prototype אשר עוטפות את ממשק הדפדפן ל-DOM.
o       רובד מעליהן נמצאת האפליקציה שאנו מפתחים.
o       מעל האפליקציה יש שכבה נוספת (לפי NZ) הנקראת Sandbox אשר תפקידה לנהל את הקומפוננטות של האפליקציה מבלי להכיר את השכבות הנמוכות שמתחתיה (מתחת לאפליקציה).
o       – כל קומפוננטה העומדת בפני עצמה ומדברת ישירות מול ה- widgetSandbox. ה-Sandbox מקבל הוראות מהאפליקציה לגבי הפעלת/הפסקת פעולת ה-Widgets ו/או העברת פרמרטים אליהם.
-         מימושים שונים בראיית הארכיטקטורה הנ"ל:
-         XJS ו-Dojo –מיישמים את כל ה-stuck הנ"ל.
-         jQuery – יישום רק של ספריה ומנגנון לבניית Plugins.
-         UIjet זהו ה-sandbox עצמו אשר מגיע יחד עם מספר widgets וכולל:
o       Javascript
o       שימוש ב-css בסיסי – במידה ורוצים לתמוך במגוון רחב של devices יש לשים לב לשילוב עם Javascript שכן לא כל המכשירים תומכים בכל תכונות ה-CSS.
o       הגדרת קבצים ו-dependencies– הנ"ל ייטענו באופן דינמי בזמן הרצת האפליקציה, הקומפוננטות ייטענו ויאותחלו.
o       אופציונלית ניתן להשתמש באופטימייזר של requirejs כדי לצמצם את גודל ה-build. ניתן לבצע חלוקה נוחה של האפליקציה לספריות.
o       צריך להגדיר ספריה לניהול ההודעות ( pub/sub העובד באופן אסינכרוני)
o       ניתן להוסיף client side router (בחירת ספריה ומימוש Interface) – להגדרת ה-routing בין ה-URL ל-State של הדף
o       ניתן להשתמש ב-Template Engine על ידי מימוש Interface של ה-template.

-         ספריות נוספות שהוזכרו-
o       bonzo-js – ספריה מינימליסטית המממשת ממשק ל-DOM
o       ender-js – מנוע הבונה מספריות נתונות ומיפוי תלויות של מה משתמשים מתוכן ומה לא, ספריה חדשה הכוללת רק את הרכיבים הרלבנטיים.

-         לינקים:
o       https://bitbucket.org/ydaniv
 https://github.com/ydaniv                  -

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

ותודה רבה לגל כהן על התמלול!