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

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

איך לשלוח הודעת ווטסאפ מ Python

21/06/2020

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

המשך קריאה

איפה מוצאים זמן?

20/06/2020

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

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

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

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

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

ואם אתם רוצים עזרה ביצירת הסביבה שבה יהיה לכם קל יותר ללמוד - תשמחו לשמוע שזה בדיוק מה שאנחנו עושים ב Developer Bootcamps כאן באתר. מסלול הלימוד ב Bootcamp מיועד למתכנתים עסוקים מהתעשיה, מבוסס על השקעה של שעה ביום בממוצע ויוצר עבורכם סביבת עבודה שבה ללמוד ולהתקדם יהיה הדבר הקל שתרצו לעשות. למידע על הקורסים הבאים שיפתחו בקרו אותנו בדפי הקורסים:

קורס Python במסלול Developer Bootcamp

קוד React במסלול Developer Bootcamp

סמנו ביומנים: מחזור שני של הבוטקמפ למתכנתים של טוקוד ייפתח ביולי

19/06/2020

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

היום פתחתי את ההרשמה למחזור השני של בוטקמפ המפתחים של ToCode לקורסי React ו Python. זה מה שהולך לקרות בהם:

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

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

  3. אתם תראו את העבודה של חבריכם לקבוצה במפגשי ה Live ותלמדו מהם ומהמנטור Best Practices לפיתוח.

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

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

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

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

לפרטים נוספים - קורס פייתון במסלול בוטקמפ למתכנתים: https://tocode.ravpage.co.il/python.

קורס React במסלול בוטקמפ למתכנתים: https://tocode.ravpage.co.il/react.

מחסומי תרבות

18/06/2020

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

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

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

כמה חומרי לימוד מעניינים הפסדתם כי אתם לא מכירים Linux? או Windows? או להריץ משורת הפקודה? או איך עובדת הצפנה? או מה זה תכנות פונקציונאלי?

אחת הדרכים לקבל פרספקטיבה על מה שאנחנו מפסידים היא לקפוץ ל Hacker News ולבדוק - כמה מבין 30 המאמרים בעמוד הראשון הם דברים שאני יכול להתחבר אליהם ולהבין אותם? ועבור אלה שלא, מה חסר לי בשביל שאהיה מסוגל לקרוא ולהבין?

סרביסים של אחרים

17/06/2020

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

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

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

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

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

שלום עולם ב Python עם טוויסט

16/06/2020

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

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

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

הנה התוכנית ב-4 שורות.

from gtts import gTTS

google_voice = gTTS(text="Hello world", lang='en')
google_voice.save('sound.mp3')

לפני שנעבור על הקוד שורה אחרי שורה קחו שתי דקות להקשיב לו. הכנסו לקישור: https://repl.it/@ynonp/AjarFatalCallbacks#main.py

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

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

המשך קריאה

לבנות לעצמך את הסביבה

15/06/2020

מאיזושהי סיבה אחד הדברים שהכי מטרידים מתכנתים זו סביבת העבודה -

״באיזה IDE צריך לכתוב?״

״איך מתקינים את המערכת?״

״איך מקמפלים?״

״איך מריצים את הבדיקות?״

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

במקום לחפש איך "צריך" לעבוד, מומלץ יותר להסתכל על זה כמו שופינג ולחפש איזה סוגי פיתרונות אני אוהב. האם נוח לי לעבוד ב Windows או Linux? או אולי בכלל Docker? האם Visual Studio Code גורם לי להרגיש בבית או שאני מעדיף IDE יותר ספציפי. וטיפ טוב נוסף הוא לא להרגיש רע לנסות כל מיני דברים ולהחליף. פעם אחת ליצור פרויקט עם create-react-app, ואחרי זה לנסות ליצור פרויקט מאפס עם webpack ואולי פעם שלישית לבחור טמפלייט ממקום אחר.

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

דוגמת ריפקטורינג של טפסים ב React

14/06/2020

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

המשך קריאה

מתי לקחת שיעור פרטי

13/06/2020

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

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

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

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

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

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

מסלול Full Stack הטוב בארץ

12/06/2020

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

היום אני שמח להעלות לאוויר את קורס Front End החדש כאן ב ToCode, אחרי עדכון מקיף של הקורס לעולם פיתוח Front End בשנת 2020. קורס זה מסיים סידרה של קורסים שעבדתי עליה ונותן לנו כאן בטוקוד את מסלול Full Stack הטוב בארץ למתכנתים.

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

  1. קורס Front End למתכנתים - הקורס הראשון במסלול ילמד אתכם כל מה שצריך לדעת על עולם פיתוח Web בצד הלקוח: תלמדו איך עולם האינטרנט עובד, איך מתחילים לכתוב אתרים עם HTML, איך לעצב אותם עם CSS (כן כולל flexbox, grid וכל שאר החידושים) וכמובן JavaScript לעומק כולל פיתוח מונחה עצמים ותקשורת Ajax ו Web Sockets.

  2. קורס Node.JS ו MongoDB ישלים לכם את ה Stack עם תכני Back End. בקורס תלמדו Node.JS מההתחלה, פיתוח מערכות צד שרת עם Express, חיבור לבסיס נתונים (מונגו וגם SQL), ניהול משתמשים ואבטחה ובניית API.

  3. אחרי שלמדתם לכתוב קוד JavaScript גם בצד השרת וגם בצד הלקוח, אתם תמשיכו לצלילה לתוך השפה כדי ללמוד יכולות מתקדמות ומאחורי הקלעים בקורס JavaScript ES6/7/8. בכל שיעור בקורס זה בחרתי לפרק ולחקור נושא אחר מתוך היכולות של JavaScript. הקורס ייתן לכם הבנה מלאה וטובה של השפה וישים אתכם במקום להתקדם ללמוד פריימוורק.

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

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

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

מקווה שתהנו מהמסלול, ינון