סדרה: רובי (Ruby) למפתחי ג\’אווה ותיקים

לאחרונה אני עובר ל Stack טכנולוגי של: רובי, ריילס, ו AWS (יש גם עניין של מובייל, אבל שם אני יחסית מעודכן).
כחלק המדרך שאני עובר אני כותב בבלוג על הנושאים הללו. באופן דומה למעבר שעשיתי במעבר לג\’אווהסקריפט – אני מנסה לכתוב את הדברים מנקודת המבט שאני הייתי זקוק לה: מתכנת וותיק, שמכיר (נאמר) ג\’אווה ו Object Oriented היטב – אך \”נוחת\” בעולם לא מוכר של רובי.

רובי וריילס (קשה להפריד בינהם, לפעמים) הם עולם בפני עצמו. קהילה גדולה ומרשימה, סט גדול של כלים וספריות, ורעיונות שחלחלו והשפיעו גם על קהילות אחרות. רובי (עם ריילס) היא שפת התכנות שמשמשת הרבה סאטראט-אפים, שפה שהייתה בשימוש עמוק בחברת Thoughtworks (אני עוקב אחרי כמה מעובדיה), ובעזרת נבנו כמה כלים (Github, Chef) שהושפעו בתכנון ובסגנון שלהם – משפת רובי בה השתמשו.

אני מרגיש פספוס קטן שרק עכשיו, אחרי כ 12 שנים בתעשיה, אני נחשף לראשונה באמת להבנה מהם רובי וריילס. פתאום אני מזהה נקודות השפעה שונות שלהן שראיתי שהכרתי כבר שנים – אך לא זיהיתי את מקור ההשפעה. נכון: ריילס נמצאת בדעיכה, מתוך כך שהמשקל של ה UI עובר לצד הלקוח, וכדי לכתוב REST APIs ברובי מספיק כנראה לקחת את Sinatra ו Active Records (כך אומרים). לא צריך את כל \”המשקל\” של ריילס. ההחלשות של ריילס משפיעה גם על רובי, ופתאום יותר מגניב מ\”לעשות רובי\” זה \”לעשות node.js\” [א].

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

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

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


RVM – כלי לניהול סביבות (וגרסאות רובי)
כאשר אתם מתחילים לכתוב רובי קצת יותר ברצינות – זהו כלי שכדאי להכיר.

מודל תכנות מונחה-העצמים של רובי
בפוסט זה אני מנסה לכסות, עד כמה שניתן, את נושאי ה OO ברובי: הכמסה, הורשה, מודולים, מחלקות יחידניות וכו\’.

ריילס, רובי on ריילס
שפת רובי איננה שפת רובי ללא ה framework הכ\”כ-מפורסם שלה לפיתוח אפליקציות ווב: Ruby on Rails. בפוסט זה נספק סקירת high level על ריילס.

—–

[א] אפילו מאטצ\’ (שם החיבה של Matsumoto Yukihiro – ממציא רובי) עובד (במקביל) על שפה חדשה – Streem.

—–

לינקים מעניינים

Ruby Weekly – דרך טובה להתעדכן על החדש ברובי / ריילס.

סדרה: לינוקס / אובונטו

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

  • היא “נחשבת”
  • היא שונה וקצת יותר נחמדה/מגניבה ממה שאתקל בעבודה (בעיקר הפצת SLES – Suse Linux Enterprise Server ואולי טיפה Red Hat Enterprise Linux).
  • ראיתי שכ”כ הרבה תוכנות זמינות או מתעדות שימוש ב apt-get (של אובונטו/debian) אבל לא ב zypper (של SUSE) או אפילו yum (של Red Hat/Centos/Fedora) – ורציתי לראות למה…
הערה: אם אין לכם מושג מה אמרתי, אבל אתם מרגישים שזה יכול להיות חשוב עבורכם – סדרת הפוסטים הזו היא בשבילכם.
אובונטו (ומשפחתו) נחשבים קצת יותר חזקים בצד ה Desktop – אבל אותי מעניין דווקא צד השרת ושימוש ב shell / command line בלבד. סדרה זו לא תקדם את מי שרוצה להשתמש בממשק גרפי בלינוקס, אלא אם מעניין אתכם מהם ה internals שמאחורי הממשק הגרפי.
למרות שההפצה “הכי מומלצת” ללמידת צד-השרת של לינוקס היא כנראה CentOS (סוג של red hat חינמי) – רוב מה שאכתוב בסדרת פוסטים זו תהיה רלוונטית כנראה גם למשתמשי CentOS/RHEL/SLES/Fedora וגם למשתמשים שולחניים (בעיקר Mint/Ubuntu) שרוצים להכנס לעומק ולהבין מה יש מאחורי ה”פנים היפות” של הממשק הגרפי.
—-
הפוסטים בסדרה:
פוסט בו נעשה הכרות מהירה עם אובונטו ונקבל כמה כלי הישרדות בסיסיים-ביותר לסביבה זו.
אם אתם רוצים להיות מסוגלים להתקין כל אפליקציה על (כמעט) על הפצה – זהו הפוסט בשבילכם.
בפוסט קצר זה נראה כמה כלים שימושים לעבודה עם קבצים בלינוקס: ה PATH, וכלים כמו tr ו sed (בקטנה)
אנו ממשיכים עוד קצת עם הטיול שלנו במערכת הקבצים, וקובעים מטרה: לוגים. אבל גם נהנים מהדרך עם: tail, redirects, find, קבצים מיוחדים ועוד כמה טריקים קטנים…
—-
קישורים:
אובונטו Server הופך לשחקן משמעותי: ?Is Ubuntu becoming a big name in enterprise Linux servers

סדרה: אבני הבניין של האינטרנט

פיתוח לאינטרנט נחשב לפני כעשור לנישה: אם “בוני אתרים” ואם “מפתחי אתרים דינמיים”.

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

בשנים האחרונות יש חזרה רבתי לפיתוח UI ב HTML, CSS וג’אווהסקריפט. מפתחים ממהרים ללמוד טכנולוגיות כגון ג’אווהסקריפט, MVC צד-לקוח, ספריות לפיתוח UI / מובייל, REST ועוד. טכנולוגיות שהתחדשו בשנים האחרונות.

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

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

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

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

ה URL הוא אולי ברור מאליו כאשר מקלידים בדפדפן כתובת של אתר אהוב, אך כאשר מפתחים קוד שקורא או מרכיב URLs – ישנם כמה חוקים ועקרונות שחשוב להכיר!

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

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

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

רינדור בצד הדפדפן – המשך לפוסט הקודם בסדרה המסביר כיצד מנוע הרינדור וה DOM עובדים כאשר רץ קוד ג’אווהסקריפט.
פוסט זה כולל תובנות רבות לגבי Performance.

סביבת הריצה של ג’אווהסקריפט – מבט לתוך מנועי הג’אווהסקריפט והבנה כיצד הם עובדים. מהו ה Event Loops וכיצד interval של 100ms יכול לחזור בשנייה רק פעמיים?!
הבנת סביבת הריצה של ג’אווהסקריפט יכולה למנוע מכם כמה חוסרי-הבנה עם הדפדפן ולסייע לכתוב אפליקציות רספונסיביות יותר

The Single Origin Policy הידוע בקיצור SOP הוא מנגנון אבטחה חשוב המגן על אפליקציות הווב שלנו. מצד שני – הוא מגביל ומקשה על תקשורת Cross-Domain.
מה המשמעות של SOP? כיצד מתמודדים עם המגבלות שלו?
הכל בפוסט SOP ותקשורת Cross-Domain

TBF – על HTTP מתקדם, caches ו cookiez

בהצלחה!

סדרה: MVC בצד-הלקוח ובכלל

תבנית העיצוב (Design Pattern) המורכבת Model-View-Controller (בקיצור: MVC) היא בסיס היסטורי לכתיבת אפליקציות UI ב”צורה נכונה”, אבן יסוד של ארכיטקטורות UI.
אך אליה וקוץ בה:  כששני אנשים מדברים על MVC בסבירות גבוהה הם לא מדברים בדיוק על אותו הדבר. ישנן וריאציות שונות ופרשנויות שונות לתבנית-עיצוב זו, הנובעות בעיקר מצרכים של טכנולוגיות UI שונות: Command Line או Desktop application, טרמינל או אפליקציות ווב.בסדרה זו נדון ב MVC אך לא מהצד התאורטי-הכללתי, כי אם מהצד המעשי ובעזרת דוגמאות. בגלל הפריחה של ספריות MVC ל javaScript (בערך 15 שאני מודע אליהן) וההתעסקות השוטפת שלי לאחרונה עם פיתוח ב javaScript – החלטתי להקדיש את הסדרה ל MVC צד-לקוח בג’אווהסקריפט. זו זווית אחת שלא תכסה את הנושא התאורטי בשלמותו – אך לעתים עדיפה דוגמה אחת או שתיים שמבינים מאשר הכללה שאין אנו “חשים”.

ספרייה: Backbone.js

הצצה מהירה על Backbone.js (ספריית MVC לצד-הלקוח)
סקירה כללית על ספריות Client-Side MVC, וריאציות שונות (MVP, MVVM), וכיצד שימוש בספרייה לדוגמה, Backbone.js, נראה.

אוספים (Collections) ב Backbone.js
לאחר הצצה מאוד בסיסית על קוד Backbone הגיע הזמן לתת תמונה קצת יותר מציאותית. זאת נעשה בעזרת סקירה של אחד המרכיבים המרכזיים ב Backbone: אוספים.

Backbone.js – ספגטי או רביולי?
שימוש בספרייה כמו Backbone.js לא בהכרח יבטיח לנו קוד מסודר וקל-לתחזוקה. בעצם, אולי Backbone.js היא דוגמה לספרייה שנותנת חופש רב מהרגיל, לטוב ולרע.
הנה דוגמה להתמודדות “מהעולם האמיתי” עם דילמות שנובעות משימוש ב Backbone.js.

AMD ו Require.js

AMD ו Require.js
תבנית העיצוב AMD איננה קשורה ישירות ל MVC – אך היא משרתת אותה מטרה ומסתדרת איתה מצויין.
פוסט זה סוקר את AMD ומספק מבוא ל Require.js – המימוש הנפוץ ביותר של תבנית-עיצוב זו.

Require JS – צלילה לעומק (אין תמונה)

סדרה: מבוא מואץ ל JavaScript ו jQuery – עבור מפתחי C# / Java מנוסים

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

בסדרת פוסטים זו ריכזתי מבוא מואץ ל JavaScript ו jQuery שלא אמור לשעמם מפתחים מנוסים.

מבוא ראשוני לג’אווהסקריפט – למה זו שפה (מאוד) חשובה, ובמה היא שונה מג’אווה.
בחינה של מבנים שונים בג’אווהסקריפט ומשמעותם. הנושא שלי, באופן אישי, היה הכי משמעותי בלמידת ג’אווהסקריפט כשפה.
מחלקות ובנאים
בג’אווהסקריפט יש אובייקטים, אך אין מחלקות. חסרות לכם המחלקות (Classes)? אתם בחברה טובה. המשיכו וקראו…

jQuery – מי, מה, מו?

להבין את JavaScript’s this. המילה השמורה this בג’אווהסקריפט נשמעת דבר פשוט, אך היא מבלבלת למדי – עבור מי שהגיע מעולם ה Java (או #C או ++C או Pascal או …)

סקירה של יכולת מתקדמת של jQuery (מה שידוע כ Deferred Object), המסייעת לכתוב קוד אסינכרוני מסודר גם כאשר כמות הקוד היא גדולה.
בהצלחה!