ארכיון

רשומות עם התג ‘Community’

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

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 שיווק אגרסיבי של האסטרטגיה החדשה (גם כלפי פנים), ובכל מקרה זה יקח זמן.

יש לכם זמן?

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

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 (בהתנדבות, תמורת קרדיט) אז נא ליצור איתי קשר.

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

Tapuz Meetup at Sela

מדי פעם אנחנו יוזמים מפגש פורום.

הפורום הוא כמובן פורום תכנות דוט נט בתפוז, המקום הכי פעיל למתכנתי דוט נט בעברית כיום.

ו"אנחנו" זה משתתפי הפורום, או לפחות ה"גרעין הקשה" 🙂

ביום שלישי, ה 24.1.2012, נערך מפגש פורום שכזה. מכללת סלע נתנה את החסות, שזה אומר מקום, נשנושים ופיצות (תכלס, אני שם בשביל הפיצות).

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

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

וכמובן, תודה למרצים: עידו פלטו, שהרצה על Fiddler, וגדי מאיר, שהרצה על Production Debugging. שתי ההרצאות היו מעולות.

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

הנושא שדברתי עליו היה מעבר מקוד פרוצדורלי ל Object Oriented.
לשמחתי האנשים שרדו יפה ולא נרדמו 🙂

ההרצאות הוקלטו והן זמינות ברשת (שוב תודה למכללת סלע!), ההרצאה שלי לקחה 28 דקות.

תוכלו להוריד את דוגמאות הקוד ואת המצגת עצמה, שהמרתי גם ל slide-share:

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

בקיצור, Good Vibes, ואפילו בלי אלכוהול! נקווה שיהיו עוד מפגשים כאלה.

צ'ירס!

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

About MSDN Forums – The Hebrew Version

27 דצמבר, 2011 2 תגובות

אני בודק מדי פעם מה קורה בפורום דוט נט ב MSDN, בגירסתו העברית.

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

אתם מרגישים שעוד רגע מגיע ה"אבל.."?

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

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

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

לפיכך אין לי אלא להוריד את הכובע בפני כל מי שמשתתף, תורם, משקיע (זמן ו/או כסף) כדי שתהיינה "קורות גג" שכאלו.

ועכשיו, אחרי שהקדמתי וכתבתי את ההלל והשבח לאלו שלוקחים חלק במשימה של יצירת קהילת משתמשים בעברית, הנה זה בא:

אבל…

נבדוק לרגע את הפורום של דוט נט בגירסה העברית של MSDN.

נכנסתם? יפה.

הכל בסדר. באמת. ממשק משתמש סביר, יש שאלות, יש תשובות.

התנועה קצת דלילה לפעמים. יש תקופות של יובש קל, שיכולות לקחת גם שבוע.

טוב, לא נורא, קורה.

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

מה זה שאלות יחסית שטחיות? נניח, משהו כמו: מה זה connection string? מתי משתמשים בזה? – זו שאלה שטחית.

מה מפריע לי בזה?

קודם כל, זו רק תיאוריה, אין לי שום הוכחה, אז מי אני שאגיד משהו?

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

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

ולסיום – חידה

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

וגם אם לא מצאתם, בטח למדתם משהו חדש מהסקירה הזו 🙂

קטגוריות:תכנות תגיות:

מפגש מתכנתי דוט נט

6 אוגוסט, 2011 אין תגובות

ב 2 באוגוסט, שזה לפני כמה ימים, היה מפגש מתכנתי דוט נט במכללת סלע. היה ממש כיף.

נתחיל בתודה מתבקשת למכללת סלע, שארחה אותנו בצל קורתה וביד נדיבה: היו פיצות!!

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

בכל מקרה, התחלנו את המפגש בסקרנות הרגילה של "מי את/ה ומה הכינוי שלך בפורום?" היו כאלה שהזדהו, היו כאלה שבחרו להישאר אנונימיים, והיו כאלה שבכלל לא הגיעו ישירות מהפורום אלא מהודעה שפירסמתי בלינקדין ("הפרסום בלינקדין – עובד!")

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

בהתחלה אלעד העביר סשן מעניין על הטכנולוגיות של ה client בעיקר בקונטקסט של web: איפה אנחנו עומדים כיום ולאן מועדות פנינו בהקשר של SilverLight, JavaScript, HTML(5) ועוד. מעבר לחנופה צפויה ושגרתית, באמת היה מעניין. תודה, אלעד!

אחרי שאלעד סיים אני העברתי סשן בנושא Introduction to Unit Testing with NUnit. מעבר למבוא ולדוגמאות שהן סוג של Jump Start למי שרוצה להיכנס לתחום של Unit Testing, ניסיתי להעביר את המסרים הבאים:

  1. קוד שמכוסה ב Unit Testing הוא קוד שיחסית קל לשנות לו את המימוש. הבדיקות מוודאות שהפונקציונליות נשמרת למרות השינויים במימוש.
  2. קוד שהוא לא טסטבילי, כלומר שלא ניתן לכתוב לו Unit Testing – הוא ברוב המקרים קוד שצריך לשפר אותו. כלומר, טסטביליות מובילה אותנו לקוד טוב יותר ו/או ל design טוב יותר.

הנה המצגת שליוותה את הסשן שלי:

אפשר גם להוריד את הקובץ של המצגת ואת הקוד לדוגמאות (שימו לב שצריך רפרנסים ל NUnit, וזה לא חלק מההורדה).

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

קטגוריות:תכנות תגיות:, , ,
Quantcast