הבלוג של ינון פרק

טיפים קצרים וחדשות למתכנתים

איך לחזור לשיגרת לימודים אחרי הפסקה

05/10/2019

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

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

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

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

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

  3. הרגלים נמחקים אפילו יותר מהר מידע.

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

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

  1. להכיר באתגרים. להבין שאותם הדברים שגרמו לנו לרצות ללמוד בהתחלה עדיין רלוונטים וששווה לעשות את המאמץ.

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

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

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

החלפת מודולים HMR

04/10/2019

אחת הפונקציות הכי אהובות ב Webpack במצב פיתוח נקראת HMR או בשמה המלא Hot Module Replacement. הרעיון הוא החלפת רכיבים במערכת תוך כדי שהמערכת פועלת ובלי לטעון מחדש את העמוד.

המשך קריאה

שימוש ב Browser Cache בפרויקט Webpack

03/10/2019

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

המשך קריאה

שימוש ב Scss בפרויקט Webpack

פיתוח פרויקט באמצעות Webpack אומר שאנחנו יכולים להריץ קוד על כל אחד מהקבצים שאנחנו טוענים. באחד הפרקים הקודמים בסידרה למדנו על Babel וראינו איך לתרגם קבצי JavaScript בעזרתו. היום אני רוצה לדבר על Scss ואיך להשתמש ב Webpack כדי לתרגם קבצי Scss לקבצי CSS רגילים.

המשך קריאה

הפלאגין HTML Webpack Plugin

בפוסטים הקודמים בסידרה על וובפאק השתמשתי ב HTML Webpack Plugin כדי ליצור באופן אוטומטי קובץ HTML עבור הפרויקט שלי. לפלאגין זה יש המון אופציות שהופכות אותו ליעיל גם בפרויקטי משחק קטנים וגם בפרויקטים אמיתיים ואני רוצה לעבור על כמה מהן.

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

המשך קריאה

טיפול בקישורים בקבצי ה CSS

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

המשך קריאה

טעינת קבצי CSS מתוך פרויקט Webpack

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

המשך קריאה

הקטר הכחול שיכול

28/09/2019

העברתי לא מזמן קורס בפיתוח ווב לקבוצה של מתכנתי Java מוכשרים ובאחד התרגולים שמתי לב לחלוקה בין התלמידים וביחס שלהם לתרגול-

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

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

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

שימוש בספריות חיצוניות בפרויקט Webpack

בעבודת Front End מודרנית אנחנו אוהבים להשתמש בספריות חיצוניות בפרויקטים שלנו ובשנים האחרונות מתכנתים משתמשים במאגר החבילות npm בתור מקור טוב לקבל משם חבילות חיצוניות וב Webpack כדי לשלב בקלות את החבילות החיצוניות האלה בפרויקט. בואו נראה איך כל זה מתחבר.

המשך קריאה

האי נעימות שבדרך

26/09/2019

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

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

  2. הסקריפט לפעמים נכשל (בלי סיבה נראית לעין).

  3. אנשים לא רגילים להשתמש בסקריפט ושוכחים להפעיל אותו.

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

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

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