ארכיון

ארכיון לקטגוריה ‘טכנולוגיה’

קצת על קוד פתוח – החזית הטכנולוגית

7 ינואר, 2015 14 תגובות

[הפוסט התפרסם גם בגיקטיים]

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

בפוסט הזה אני אחלוק כאן הדברים שדווקא פחות קשורים לשפת פייתון עצמה, אלא יותר למאקרו: המעבר מפיתוח בסביבת Microsoft, כלומר דוט-נט על Windows, לפיתוח בסביבת open-source: כיום אני מפתח בפייתון וב Clojure על לינוקס.

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

TL;DR

החזית הטכנולוגית נמצאת בסביבת open-source. הנוחות נמצאת בסביבות אחרות, כמו דוט-נט. ויש לזה סיבה.

הכנתם קפה? יפה. נתחיל.

באופן כללי, אחרי יותר משנתיים בסביבת open-source, אני חושב שבסביבה הזו אפשר לראות באופן בולט שני דברים חשובים:

  • מענה אמיתי לבעיות אמיתיות
  • פתרונות חדשניים לבעיות אמיתיות

העולם הישן – פתרונות עקומים לבעיות אמיתיות

הצורך הוא אבי ההמצאה. אבל מהו הצורך? מי מגדיר מהו הצורך?

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

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

נסתכל לרגע על בעיה ידועה: איך אפשר לפתח ל web בצורה מהירה וקלה לתחזוקה?

הפתרון של Microsoft

בואו נצעד אחורה בזמן לתקופה של 2002-2003, כאשר Microsoft הכריזו בקול גדול על דוט-נט (עזבו את 1.0, נלך ישר ל 1.1), ובפרט על ASP.NET עם הפיצ'ר המדהים שנקרא WebForms. על איזה צורך ענה כל הנושא הזה של WebForms ב ASP.NET?

מהנדסי Microsoft חשבו וחשבו, וחשבו עוד קצת, והגיעו למסקנה שמתכנתי web צריכים לאמץ שיטות פיתוח של מתכנתי desktop, כלומר "לצייר" ב Visual Studio אלמנטים ע"י drag-and-drop, והכל בסוף יתרגם ל HTML. אה, והלהיט הגדול: התוצאה הסופית תיקבע על פי הדפדפן עצמו (לפי ה user-agent), כי ככה נוכל לעצב פעם אחת את המסכים שלנו והשרת ייצור HTML (או WML, למי שהתנסה בזה) שמותאם לדפדפן הנוכחי.

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

בקיצור, Microsoft סיפקו פתרון עקום לבעיה אמיתית.

הפתרונות מעולם ה open-source

המודל שמתכנתי web מעדיפים הוא בד"כ מודל פיתוח שנקרא MVC. בסביבת הקוד הפתוח זה מודל שמוכר ועובד היטב כבר שנים:

  • בפייתון יש מספר פרויקטים, והמוכר שבהם נקרא Django, שקיים מ 2005.
  • ברובי יש את Rails, שקיים מ 2005.
  • ב PHP יש את CakePHP שקיים מ 2005.
  • בדוט-נט, בסביבת open-source:
    • פרויקט MonoRail, שהוא תת-פרויקט של Castle. קיים בערך מ 2005-2006. נוהל במשך תקופה ארוכה ע"י חן אגוזי.
    • פרויקט ASP.NET MVC, התחיל בסביבות 2007 ע"י Scott Guthrie, וצבר תאוצה די מהר.

ובינתיים, במשרדי Microsoft, אי שם ברדמונד

מה קרה בינתיים, בתקופה של 2005-2010? בתקופה הזו, Microsoft התעלמו לחלוטין ממודל MVC לפיתוח web, לפחות כלפי חוץ. רק בסביבות 2010 פרויקט ASP.NET MVC "אומץ" ע"י Microsoft והפך להיות חלק מ Visual Studio, בתור תוסף.

רק ב 2012, Microsoft הטמיעו באופן רשמי פרוייקטים מסוג MVC ב Visual Studio.

לזה קוראים הצתה מאוחרת.

מענה אמיתי לבעיות אמיתיות

מההתרשמות שלי, הספריות והפריימוורקס שקיימים בסביבת open-source נותנים מענה אמיתי לבעיות אמיתיות.

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

איך Microsoft פותרים את בעיית C10K בדוט-נט? כנראה ע"י מספר שרתי Windows Server עם load-balancer רציני לפניהם. כלומר, הבעיה נופלת על ה load-balancer, והפתרון הזה עולה די הרבה כסף בסופו של דבר. אמנם, כבר בדוט-נט 2.0 הוצג הפיצ'ר שנקרא Asynchronous Pages, וידידו ה"קל" יותר IHttpAsyncHandler שכבר קיים (!) מגירסה 1.1.

אלה פתרונות חלקיים לבעיה. באופן כללי, ASP.NET זו מערכת שנבנתה עם מערכת שיקולים משלה, וכנראה בזמן ה design, לא ייחסו חשיבות גבוהה מדי לכל הנושא של concurrency ושל non-blocking execution. רק בשנת 2012, החל מגירסה 4.5 של דוט-נט, יש סוף-סוף התייחסות סבירה ל async I/O בתבנית של async/await. בלי להכנס לפרטים, אסביר רק שהכוונה ב async I/O היא להעביר למערכת ההפעלה עצמה (ולמעשה לבקר החומרה הרלוונטי) את הביצוע ברקע של משימות I/O, כגון כתיבה/קריאה לדיסק, או שליחה/קבלה של נתונים ממשאבי רשת. בזמן הביצוע ברקע, ה thread ה"נוכחי" מתפנה למשימות אחרות. אפשר לקרוא עוד פה, כאן ופה. זה עדיין פתרון חלקי אם דרוש thread לכל חיבור.

ואיך בסביבת open-source פותרים את בעיית C10K? כאן כבר יש התייחסות ענפה לבעיה, ויש פתרונות טובים וזולים, כבר משנת 2009. שלוש דוגמאות בולטות:

  1. node.js, שתוכנן מראש להיות event-driven, כולל non-blocking I/O, והוא נותן מענה יפה ל concurrency. קיים מ 2009.
  2. הפריימוורק/שרת שנקרא Tornado, שוחרר כ open-source, כתוב בפייתון, משתמש ב Reactor pattern. יש בו שימוש אינטנסיבי ב async I/O. הוא מאוד קל לפיתוח והוא מאוד סקאלבילי (אין לי סטטיסטיקה מדויקת, אבל אתם יודעים, פייסבוק קנו את FriendsFeed, החברה שכתבה את זה…). קיים מ 2009.
  3. הפריימוורק שנקרא Twisted, כתוב בפייתון, open-source. באופן כללי הוא "כבד" יותר מ Tornado. קיים מ 2002.

אלו רק שלוש דוגמאות, אבל היד עוד נטויה. ב open-source יש פתרונות מלאים וזמינים לבעיית C10K.

פתרונות חדשניים לבעיות אמיתיות

בסביבת open-source, יש פרויקט פתוח (!), ואפשר בד"כ לשפר אותו ולהוסיף פיצ'רים שמתבססים על צרכים אמיתיים, שהגיעו "מהשטח". פרוייקטי open-source צומחים מהשטח, וחופש הבחירה שיש לנו, המפתחים, מאפשר לפרויקטים המוצלחים יותר – להמשיך ולהתקיים, ולפחות מוצלחים – להתפוגג לאיטם.

זוהי אבולוציה במיטבה. המוצלח – שורד. הפחות מוצלח – מתפוגג.

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

כדוגמה לפרויקט מוצלח אתן את Kafka. זה פרויקט מדהים, שבא מצורך אמיתי, של distributed message queue עם יכולות מאוד מתקדמות, וכתוב ב Scala. האם חברה כמו Microsoft תספק מוצר חדשני כמו זה בעתיד?

יש עוד הרבה פרויקטים מוצלחים וחדשניים. רשימה קצרה: Redis, Couchbase, Storm, Hadoop, Cassandra ועוד ועוד. כל פרויקט מוצדק בפני עצמו, ונותן מענה חדשני לבעיה מסויימת. לרובם קהילה פעילה ומדריכים טובים.

למה כל זה קורה?

מצד אחד, חברה כמו Microsoft היא חברה ענקית, מכובדת, שהרבה פעמים הצליחה לספק תשתיות פיתוח טובות למפתחים.

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

למה זה קורה?

להבנתי, יש כאן שני עניינים שמסבירים את זה:

Microsoft היא חברת תוכנה לשוק ה Enterprise

כל עוד הדרישות היו צנועות, הפתרונות מבית Microsoft היו סבירים. אבל האינטרנט התעצם, ואיתו הצורך בפתרונות סקאלביליים.

Microsoft היא חברה שמפתחת פתרונות לשוק ה Enterprise. תחשבו על זה רגע:

  • כל הסיפור הזה שנקרא MS-SQL-Server הוא ל Enterprise, כיום בתחרות ישירה מול Oracle.
  • כל הסיפור הזה שנקרא Windows Server – לשוק ה Enterprise.
  • הסיפור עם Dynamics – שייך ל Enterprise.
  • וגם SharePoint – שייך ל Enterprise.

ע"פ הערכה מ 2013, כל פריט מהרשימה הזו מכניס ל Microsoft למעלה ממיליארד דולר בשנה.

אז מה המקום של דוט-נט בכל זה? אפשר לטעון שדוט-נט זו סביבת פיתוח לשימושים מגוונים. זה טיעון לא רע. אבל הנה טיעון קצת פחות מלבב: דוט-נט זו מעטפת פיתוח סביב מוצרי ה Enterprise של Microsoft.

אני חוזר: Microsoft היא חברה ששייכת ל Enterprise. ולכן הפתרונות שהיא מספקת הם פתרונות Enterprise:

  • יש עומס? -לא הבעיה שלנו. שימו load-balancer.
  • יש ביקוש לפיצ'ר מסויים? -חכו לגירסה הבאה, שתצא אולי עוד חצי שנה במקרה הטוב.
  • יש באג? חכו ל fix הבא. או גרוע מזה: חכו ל service-pack הבא. או גרוע מזה: זה מה יש.

כלומר:

  • הדרישות לסקאלביליות גבוהה מקבלות פתרון Enterprise מצד Microsoft. או שפשוט תלכו על Azure (בהצלחה!)
  • קצב האבולוציה של המוצרים של Microsoft הוא קצב של Enterprise.

הסטארט-אפים התרבו

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

אזור הנוחות של Microsoft

חברה רווחית כמו Microsoft יכולה להרשות לעצמה לעמוד מן הצד ולראות לאן השוק הולך. למעשה המודל הזה הצליח לה לא רע עד עכשיו:

  • דוט-נט זו העתקה טובה של Java
  • Excel זו העתקה טובה של Lotus 1-2-3
  • ואולי Windows זו גם העתקה של משהו?

הדפוס של Microsoft הוא כזה:

  • הבשלה: להמתין ולראות אם רעיון מסויים הוא רעיון רווחי
  • העתקה: להעתיק את הרעיון, לעיתים גם להשביח אותו
  • ליטוש: לכתוב תיעוד מצוין
  • שיוק ומכירות: לשווק אותו בצורה אגרסיבית

ככה יוצרים אזור נוחות למשתמשים של המוצרים עצמם.
למעשה, ככה גם Microsoft יצרה לעצמה את אזור הנוחות שלה.

כיום, עם שגשוג סביבת ה open-source, המודל הזה לא עובד מספיק טוב עבור מתכנתים. סביבת ה open-source מכתיבה קצב שונה, מהיר הרבה יותר ממה ש Microsoft יכולה לעמוד בו באופן מסורתי. שלב ההבשלה עצמו יכול להימשך שנתיים ומעלה. המשמעות היא שמי שמאמץ את הכלים של Microsoft הוא בסביבות שנתיים אחורה לעומת המוצרים הכי חדשים בשוק. אז שסטארט-אפ יקח על עצמו דווקא את הכלים האלה?!

התפכחות ושינוי כיוון

נכון להיום, רוב הפרויקטים המשמעותיים ב open-source מיועדים לריצה על מערכות לינוקס. חלק קטן מהם רץ גם על Windows (למשל Apache httpd). בשנים האחרונות יש מעבר של מתכנתים מסביבת Microsoft לסביבת open-source (כלומר, אני לא היחיד שעשה את המעבר הזה), ומכאן שיש גם מעבר של מתכנתים מ Windows ללינוקס.

כדי לבלום את התנועה הזו, Microsoft פצחה במספר מהלכים של שחרור (איטי) של קוד ל open-source. המהלך הבולט מכולם הוא שהיא הוציאה את ה core של דוט-נט לקוד פתוח (בעיקר ברישוי MIT, אבל לא רק). לא סתם הוציאה ל open-source, אלא ל github, ולא ל CodePlex, האתר הרשמי שבבעלות Microsoft לאחסון פרוייקטים ב open-source.
למה? כי לדבריהם שם נמצאת קהילת המקודדים של ה open-source. סוג של התפכחות?

המהלכים האלה הם בחזקת פעולות הצלה, לא פחות מזה. נותרה עוד מאסה מספיק גדולה של מתכנתי דוט-נט ש Microsoft עוד יכולה לשכנע להישאר. במיוחד בישראל, עם ביקוש של 30% למתכנתי דוט-נט מסך משרות הפיתוח בשנה שחלפה, ע"פ דיאלוג.

אני סקפטי

לגבי פעולות ההצלה האלו, אומר רק שאני סקפטי. כל המעבר ל open-source כאילו נכפה על Microsoft. זו אסטרטגיה כל כך שונה מהמהות של Microsoft שאני לא יודע עד כמה הם יכולים לעשות את השינוי הנדרש:

  • האבולוציה של פרוייקטים בסביבת open-source מתרחשת בקצב מהיר. האם Microsoft תעמוד בו? לא בטוח.
  • כל ה eco-system שמתקיים באופן טבעי כבר שנים בסביבות שהן לא Microsoft, לדוגמה פייתון, רובי, Java וכד' – כבר התפתח מאוד. קשה מאוד להדביק את הפער הזה באופן מלאכותי. דוגמה לכך אפשר לראות מהנסיון של Microsoft ליצור eco-system סביב האפליקציות והחנות של Windows Phone – זה פשוט תהליך שקשה מאוד להאיץ אותו.
  • כל ה tooling מסביב לקוד ולאפליקציה עצמה – הרבה יותר עשיר בלינוקס מאשר ב Windows. אני מתייחס כאן לרכיבים הבאים: מערכת ההפעלה עצמה, ה shell (ויסלחו לי כולם, אבל PowerShell זה צעד חשוב אבל רחוק שנות אור מ bash והכלים שבו), האוטומציה (גם של ה deployment), כלי ה monitoring ועוד.

אני יודע שמוצרי open-source הם לא תמיד הכי קלים לעבודה, ולא תמיד יש תיעוד מספיק טוב, ולעיתים יש להם באגים. רק המוצרים ה"ותיקים" יותר הם באמת מלוטשים. כל השאר זה בחזקת לקפוץ למים קרירים ולהתחיל לארגן את הקוד או את המוצר כך שיעבוד. אומר רק שמתרגלים לזה, וזה לא כל כך נורא.

יש "הייפ" סביב open-source, וזה לא דבר רע. הטיעון ש open-source הוא cool אמנם מתבסס על ה"הייפ" הזה, אבל אם סביבת ה open-source הייתה רק cool, אז היא לא הייתה מצליחה כל כך, ולא הייתה מאיימת על חברות ענק כמו Microsoft.

אז מהי החזית הטכנולוגית?

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

נכון להיום, החזית הטכנולוגית קיימת וזמינה בסביבת open-source, הרבה יותר ממה שקיים בסביבת דוט-נט.

ברור לי שחברות תוכנה ענקיות כמו גוגל, פייסבוק, אמאזון וכד', נמצאות בחזית הטכנולוגית של ימינו, ומחזיקות כלים ייחודיים משלהן ולא חושפות אותן כ open-source. זה הגיוני, כי זה הביזנס שלהן. יחד עם זאת, לעיתים החברות האלו משחררות כלים מסויימים החוצה ל open-source כדי "להחזיר משהו בחזרה" לקהילה עצמה, ואגב כך גם לזכות במוניטין. נכון לשנת 2014, גוגל שחררה מעל 900 פרוייקטים. גם אם רק חלק קטן מהם הוא רלוונטי וחדשני, זה נחמד.

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

חברת Microsoft מנסה לשנות משהו במהות שלה ולהכניס דריסת רגל בעולם ה open-source. ההתפכחות של Microsoft, או ההכרה שלה (סוף סוף) בעולם ה open-source נראית לי מגושמת. להבנתי, מדובר בשתי "תרבויות" שונות כל כך, שהמאמצים של Microsoft הם בחזקת "מעט מדי, מאוחר מדי".

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

יש לכם זמן?

קטגוריות:טכנולוגיה, תכנות תגיות:, ,

Dot Next

19 ינואר, 2013 4 תגובות

החלטתי לעשות שינוי מרענן בקריירה שלי ועברתי לתכנת בפייתון, בסביבת לינוקס.

תשאלו למה?

או, טוב ששאלתם. אז ככה:

1. תמיד טוב לעשות שינויים מדי פעם. לומדים מהשינוי ומתפתחים ממנו.

2. אני אוהב לעבוד בסטארטאפים. ומה לעשות, הנטיה ה"טבעית" של רוב הסטארטאפים היא לבחור בטכנולוגיות שהן יותר לכיוון ה open-source. כך שבתחומים שאני מכיר, ה stack הטכנולוגי הוא יותר לכיוון לינוקס עם שפה מודרנית יחסית כמו רובי, פייתון, סקאלה וכד' (מי יתנני Haskell או Erlang!) או מודרניות פחות כמו Java. מה שמאפיין את השפות האלו זה קהילת open-source פעילה, מה שנקרא אקו-סיסטם חי ובועט.

3. אני מרגיש שמיקרוסופט, איך לומר בעדינות, לא פונה לתחום של סטארטאפים במוצרי הפיתוח שלה. יהיו מי שיטענו ש"מה פתאום, תראה איך שפת C# מתפתחת, איך Visual Studio מתפתח" וכו'. לא קונה את זה. העתיד של דוט נט בכלל לא מספיק ברור. התחושה האישית שלי היא שמיקרוסופט מעוניינים שנשתמש ב Windows וב Office. אלה המוצרים שמיקרוסופט מתבססת עליהם, ושם יש הרבה מאוד כסף. כל שאר המוצרים, וכלי הפיתוח ביניהם, תפקידם ליצור אקו-סיסטם סביב Windows ו Office. מתכנתים לא מעניינים את מיקרוסופט כמו שמשתמשי Windows מעניינים אותם.

4. מיקרוסופט משנים את דעתם לעיתים קרובות מדי. כל כמה שנים יש למיקרוסופט איזה מלך חדש להמליך עלינו, המפתחים, ושאנחנו נקבל אותו בזרועות פתוחות ובהערצה. בכלל, יש למיקרוסופט מערכת שיווק מדהימה, לא פחות. אז פעם זה היה COM. ואח"כ דוט נט 1.1 ואחרי שהתייצבו קצת הדברים המליכו את דוט נט 2.0. ואחרי שכולם הקיאו מ WebForms, למשל, אז סוף סוף ניאותו שם ליצור סביבת MVC נורמלית ל Web. ועל מפתחי UI לדסקטופ בכלל אין מה לדבר: אלה כל שנתיים צריכים לבלוע צעצוע חדש שמיקרוסופט החליטו לשווק. אה, והענן של מיקרוסופט, Azure, עזבו. לא מצחיק.

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

אז… זהו, בינתיים. נקסט. אני אוהב סטארטאפים? סטארטאפים אוהבים פייתון? יאללה פייתון!

אז איך זה פייתון, תשאלו?

אה, טוב ששאלתם. זה אחרת לגמרי. לגמרי.

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

שפה קלה מאוד להבנה ולקידוד.

יש לה יתרונות וחסרונות, מן הסתם, אבל העניינים שונים לגמרי ממה שהתרגלתי עד היום:

  • התרגלתי לשפה סטטית, ופייתון דינמית.
  • התרגלתי לקומפילציה, ופייתון היא סקריפט עם interpreter.
  • התרגלתי לרפרנס בין פרוייקטים, ובפייתון אין את זה – יש import, וזה משהו אחר לגמרי.
  • התרגלתי ל multi-threading, ובפייתון זה סרט אחר לגמרי.
  • התרגלתי ל Dependency Injection ב class constructor, ובפייתון עושים DI אחרת, או בכלל SRP אחרת, ואני עדיין לומד את זה..

וזה מעניין, מאתגר, וכיף.

ולסיום:

מתוך xkcd, אלא מה

אתם מוזמנים! 🙂

קטגוריות:טכנולוגיה, תכנות תגיות:, , ,

Shalom Olam

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

למיזם קראתי, מן הסתם, shalom-olam, על שם התוכנה הנפוצה ביותר בעולם, עם הטוויסט המתבקש לעברית.

כל הסיפור הוא למעשה Web Ring, מודל של שיתוף תעבורה שקיים כבר משנות התשעים. אפשר לקרוא עוד על מה זה Web Ring בויקיפדיה, כמובן.
הרעיון הכללי הוא שכל בלוג הוא חוליה בשרשרת מעגלית (להלן ring) שמצביע על החוליה שלפניו והחוליה שאחריו.
מדי פעם משנים את סדר החוליות, וזאת כדי ליצור חלוקה "הוגנת" יותר של התעבורה.

מימוש

כדי לממש את העניין, לקחתי על עצמי לפתח את זה בסביבה פחות שגרתית. כלומר, עדיין דוט נט, אבל לא ASP.NET, אלא פריימוורק אחר שנקרא Nancy, שזה porting, פחות או יותר, של פריימוורק ידוע שנקרא סינטרה, שמגיע מעולם הרובי.
למה Nancy? כי זה מעניין ללמוד משהו אחר, ואפילו חשוב לצאת מהמקום הנוח והמוכר ולהתמודד עם משהו אחר. להכיר את היתרונות, החסרונות, הנחות העבודה, האילוצים. זה פותח את הראש 🙂

בצד הלקוח המימוש הוא עם jsonp, ול Nancy יש תמיכה מובנית לזה, כמה נחמד!

הנה צילומסך של ההטמעה של הטבעת בבלוג של ליאור בר-און:

הטמעה עם jsonp

אלא שלא הכל הולך חלק. מסתבר שיש בלוגרים שעובדים בסביבה שבה אי אפשר להטמיע תגית script או תגית iframe. לדוגמה, אתר wordpress.com לא מאפשר את זה.
כדי לפתור את העניין, אפשר להעביר את הבלוג לאתר כמו blogger.com שדווקא כן מאפשר הכנסת תגיות שכאלה. היה מי שהרים את הכפפה.
בשלב שני, החלטתי להרחיב את הפונקציונליות ולאפשר לינקים "חכמים" שיגיעו לאפליקציה של הטבעת ומשם תתבצע הפניה (Redirect) לחוליה הבאה או הקודמת. בצורה הזו, אמנם אין את המידע לגבי הבלוג הבא/הקודם (כלומר מי בדיוק הוא הבלוג הבא/הקודם), אבל לפחות יש השתתפות בטבעת.

הנה צילומסך של ההטמעה באתר טכנו{ב}לוגיה:

הטמעה עם redirects

אחסון

כדי לעבוד עם Nancy, צריך אחסון שהוא Full Trust. אין הרבה כאלה בעולם ה cheap hosting. בחרתי ב discountasp.net. יש לי נסיון טוב איתם מהעבר, ואפילו מצאתי קופון שהביא להנחה משמעותית. Yay!

מה למדתי

  • למדתי לעבוד עם Nancy, וזה פריימוורק מצוין לתקשורת של HTTP. אמנם יש לו חריקות פה ושם, אבל בסה"כ מצוין. בהזדמנות זו, אני ממליץ בחום למי שבוחר לעשות אינטגרציה ב HTTP – לעבוד עם פריימוורק יעודי ל HTTP, ולא לעבוד עם WCF מעל HTTP. פתאום מגלים את השליטה ואת הגמישות בכל הפרטים הקטנים של HTTP. (לא שזה בלתי אפשרי, אבל נראה אתכם עושים Redirect ב WCF…)
  • על הדרך, למדתי להשתמש ב Git כדי להכניס שינוי ב Nancy.
  • על הדרך, הכרתי פרוייקט שנקרא Cassette (יעני, קלטת), שעוסק ב Asset bundling, וזה פרויקט מעניין בפני עצמו.
  • למדתי ששווה לנסות דברים חדשים. זה אמנם לא שיעור חדש, אבל נעים להיזכר.

לינקים

ולסיום – אם מישהו/י רוצה לעצב את האתר shalom-olam (בהתנדבות, תמורת קרדיט) אז נא ליצור איתי קשר.

קטגוריות:טכנולוגיה, תכנות תגיות:, , ,

BitTorrent is only a Protocol

6 פברואר, 2012 אין תגובות

פירסמו היום ב Ynet כתבה שעוסקת במספר ספקיות אינטרנט בישראל, ובכותרת כתבו כך: שלוש ספקיות האינטרנט הגדולות מאטות את הגלישה למי שמשתמש בשירותי שיתוף קבצים.

ספציפית, הכוונה היא להאטה של מהירות הגלישה למי שמשתמש בפרוטוקול שנקרא ביטורנט כדי להוריד קבצים.

קצת מעצבן, לא?! העניין הוא שקשה לבדוק ועוד יותר קשה להוכיח שזו אכן ההתנהגות של הספקיות. ולראיה, בכתבה מצוטט עו"ד קלינגר: "זה בעייתי שתובע יאמר לבית המשפט כי הוא מוריד קבצים לא חוקיים ונפגע בגלל זה. אולי אם יימצא, לשם הדוגמה, אמן שמפיץ מוזיקה שלו בביטורנט, בחינם, והוא יטען שפוגעים בו – אז יכולה להתגבש תביעה".

אז בבקשה, עו"ד קלינגר, אמנם לא אמן שעונה לקריטריון המדויק, אבל אולי בכל זאת: מדי פעם האתר StackExchange, שהוא האתר הגלובלי שתחתיו רצים אתרים כמו stackoverflow, serverfault, superuser, מוציא את המפלצת שנקראת:

Stack Exchange Data Dump

שזה, באופן כללי, הרבה מאוד נתונים שכוללים את מגוון השאלות והתשובות באתרים הנ"ל.

זה חינם, כל עוד שומרים על תנאי הרשיון. וזה שוקל כמה ג'יגות. וזה מופץ (גם) באמצעות BitTorrent. לדוגמה, הקובץ של דצמבר 2011 שוקל כמעט 5 ג'יגה.

הנה, עו"ד קלינגר, יש לך נקודת התחלה.

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

בכל מקרה, מה שרציתי לכתוב זה שביטורנט זה רק פרוטוקול.
כמו ש SMTP זה פרוטוקול לשליחת מיילים.
כמו ש POP3 זה פרוטוקול לקבלת מיילים.

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

אבל חבר'ה, ביטורנט זה רק פרוטוקול. עזבו אותו במנוחה 🙂

Quantcast