שני קטעי קוד שממחישים היטב את ההבדל בין בדיקות יחידה לבדיקות מערכת
הקוד הבא לשתי בדיקות אוטומטיות מתוך קוד אתר זה ממחיש טוב יותר מכל פוסט את ההבדל בין בדיקות יחידה לבדיקות מערכת.
טיפים קצרים וחדשות למתכנתים
הקוד הבא לשתי בדיקות אוטומטיות מתוך קוד אתר זה ממחיש טוב יותר מכל פוסט את ההבדל בין בדיקות יחידה לבדיקות מערכת.
לכבוד השנה החדשה אני עובד על שדרוג גירסת ריילס ל-5 החדישה, וכמו בכל חווית שדרוג יש עבודה. לשמחתי בדיקות היחידה הקיימות ממש עזרו לזהות ולפתור תקלות והפכו את החוויה לקלה בהרבה. הנה הפרטים וגם כמה טיפים.
זו כבר הפעם הרביעית השנה שהניוזלטר החודשי שלנו (נשלח כל ראשון לחודש) נשלח באותו היום של פרסום פוסט חדש (מתפרסם כל יום שני וחמישי). בואו ניקח את החבר awk לסיבוב וננסה למצוא את הפעמים הקודמות והבאות שדבר כזה קורה.
יש שני מדדים ליכולת שלנו בתור מתכנתים: הראשון הוא הידע, כלומר איזה שפות תכנות אנו מכירים וכמה שנות נסיון יש בכל שפה. זה מה שמופיע בקורות חיים ומה שמבקשים במודעות דרושים.
השני חשוב בהרבה וזו הטכניקה. טכניקה היא היכולת שלנו לכתוב קוד שיחזיק מעמד לאורך זמן, המדד שבודק כמה אנו שמים לב לפרטים וכמה קל יהיה לנו ללמוד טכנולוגיות חדשות. קשה לאמוד טכניקה של מתכנתים אחרים (או של עצמנו) ובאופן כללי הרבה יותר קשה לשפר טכניקה מאשר ללמוד שפת תכנות חדשה.
דרך אחת שעובדת לשפר טכניקה היא לתת למישהו מנוסה יותר לקרוא את הקוד שלנו. דרך משוב חוזר על הקוד אנו לומדים לשים לב לדברים שלא ראינו קודם ולשפר אותם. בהיעדר חבר מנוסה או ראש צוות, אפשר להיעזר גם בתוכנות אוטומטיות. רובוקופ היא תוכנה כזו לקוד רובי ואלה חמישה דברים שהיא לימדה אותי על כתיבת קוד.
השוואה בין שפות תכנות דומות היא דרך טובה להבין טוב יותר את ההבדלים וגם את נקודות ההשקה וההשפעה ההדדית בין השפות.
לפינה הפעם בחרתי לכתוב תוכנית הממיינת קבצים לתיקיות לפי שמם, כך שכל הקבצים שמתחילים באותה אות יישמרו יחד בתיקיה. אותה התוכנית, 3 שפות, ובסוף נחשוב מה יצא הכי נעים לעין.
למרות מורכבות התכנים, אתרים הם לא יותר מאשר טקסטים שנשלחים בין מחשבים בפורמט HTML. כותביהם אומנם תכננו שנגיע אליהם דרך דפדפן אינטרנט, אבל בתור משתמשים לפעמים אנו רוצים לקבל רק חלק מהתוכן או להציגו באופן שונה. טכניקה שנקראת Web Scraping עוסקת בדיוק בנושא זה.
לא רבים מכם שמתם לב שבשבועות האחרונות מספרי הפרקים בפוסטים התחילו ב-2 במקום ב-1. מנגנון העלאת הפוסטים באתר הוא אוטומטי: אני כותב קבצי Markdown והמחשב מתרגם אותם לרשומות ב DB ולאחר מכן ל HTML. לכן המקום הראשון ללכת אליו הוא קוד התרגום. נראה אם תצליחו אתם למצוא את הטעות.
בשבועות האחרונים עבדתי על המרת קוד צד הלקוח של אתר ToCode למבנה של Single Page Application באמצעות הטכנולוגיות React ו Redux. קוד צד השרת היה ונשאר Ruby on Rails. התוצאה היא שיפור ניכר בזמני הטעינה וזמני התגובה של כל האתר וקוד משמעותית יותר נקי וקל לתחזוקה. פוסט זה מסכם את כל הלקחים, הבחירות והטעויות שעשיתי במהלך השכתוב וכמובן טיפים עבור מי ששוקל לבצע שדרוג כזה.
את הסקריפט הבא לקח לי מעט מאוד זמן לכתוב, ואולי זה מה שמחזיר אותי שוב ושוב לרובי. הסיפור הוא כזה: יש לנו אוסף תמונות גדול וצריך לסדר בתיקיות לפי חודשים, כך שכל התמונות מכל חודש יישמרו יחד. הבעיה שתאריך יצירת הקובץ לא רלוונטי כאן אלא רק תאריך התמונה (מוטמע בקובץ כחלק מפורמט jpeg).
מי יותר מהירה: רובי, פרל או פייתון? התשובה תלויה כמובן במה אתם רוצים לעשות עם השפה ובכל זאת בשביל לקבל אינדיקציה כתבתי תוכנית עם מורכבות חישובית מסוימת בשלושת השפות ומדדתי.