שבוע 12 – יום 1: האינטרנט

שבוע 12

הודעות מנהלתיות

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

ההודעה השנייה מעט יותר מעניינת. צורת הלימוד השבוע מניחה שתי נקודות:

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

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

במסגרת החומרים השבוע אעלה (כמעט) כל יום ל־Live כדי לענות על שאלות ולהדגים אותי כותב קוד עבור הפרויקט. תאריך ההגשה, אם כך, הוא ה־25/10.

תאריכי Live

השידורים החיים השבוע יתקיימו בימים ראשון, שני, שלישי וחמישי בשעות 20:00–23:00.
שעות וימי השידור החי עשויים להשתנות.
עדכונים לגבי התזמון והתייעצויות לגבי הפרויקטים יהיה אפשר לעשות בקבוצת טלגרם ייחודית שפתחתי עבור הנושא.

הקדמה

בשבוע שעבר השקענו זמן רב בהכרת עולם ה־frontend לעומק.
הבנו כיצד לבנות דף אינטרנט וליצוק לתוכו תוכן באמצעות HTML, ולאחר מכן למדנו לעצב אותו באמצעות CSS.
למדנו על Responsive Websites ועל צורות עימוד מודרניות ופופולריות כמו flexbox ו־grid.

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

מה החומר של שבוע 12?

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

  1. יצירת wireframe של המוצר
  2. מימוש frontend סטטי
  3. שיעור: איך מורכב URL של אתר אינטרנט
  4. מונחי יסוד ב־1,000 רגל: שרת, IP, HTTP, HTTPS, דומיין, DNS,Client.
  5. העלאת אתר ל־Netlify – מה זה דף סטטי ואיך הוא שונה מדף דינאמי.
  6. מה זה API? מה זה REST API? רישום לספק API, דוגמאות מהעולם האמיתי.
  7. מה זה סריאליזציה? דוגמאות על JSON ועל pickle.
  8. העברת האתר לסביבה דינאמית. דוגמה Flask. חיבור עם האתר הסטטי.
  9. סביבה וירטואלית: מה זה? למה זה טוב? איך מתפעלים?
  10. מה זה מנוע templating? – דוגמה Jinja2
  11. העלאת אתר דינאמי ל־Heroku (הרחבה למי שרוצה: app.json, Procfile. למיטיבי לכת: AWS).
  12. סיום פרויקט.

בחירת פרויקט

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

הנה כמה אפשרויות מעניינות:

  1. אתר המלצות לפי פרמטרים: המשתמש מכניס נתונים לגבי הספר/סרט/סדרה/משחק מחשב שהוא רוצה (התמקדו בנושא אחד), ומקבל רשימה של המלצות. לדוגמה, עבור אתר המלצות לסרטים המשתמש יוכל להכניס שהוא מעוניין רק בסרטי פעולה שאורכם לא עולה על שעה.
  2. אתר מוזיקה – מציאת ה־TOP 50 אמנים שמושמעים כרגע והצגתם בצורה נאה ויזואלית. המשתמש יוכל גם לבחור מדינה ספציפית שעבורה יוחזר ה־TOP 50.
  3. מילון משוכלל – מילון שמאפשר למשתמש לחפש מילה, ומציג מידע מעניין אודותיה, כמו האנגרמות שלה או כמה השדה הסמנטי של המילה חיובי. (אפשר בעברית, אבל כנראה יהיה קל יותר באנגלית – כמות המשאבים שקיימים ברשת בעברית מצומצמים מאוד).

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

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

ולא יכיל:

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

אני נעזרתי ברשימת ה־API־ים הזו כדי לחשוב על רעיונות.


שלב ראשון: Wireframing

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

תוכלו לראות כאן דוגמה ל־wireframe של פיד החדשות של פייסבוק, או כאן דוגמה מוויקיפדיה לעמוד פרופיל גנרי.

אם תעבדו בעתיד עם חברות לעיצוב ממשק (UI) או לחוויית משתמש (UX), סביר שהן ישתמשו במוצרי Wireframing כדי לשלוח לכם את איך שהם מאמינים שהמוצר שלכם צריך להיראות.
מתכנתי ה־frontend יקחו את השרטוטים הללו ומהם יבנו את המוצר.

אם כן, זה הזמן להתחיל!

  1. קחו שעה או שעתיים לחשוב על פרויקט ולבחור אותו. זה כנראה החלק היותר קשה של הפרק הזה :slight_smile:
  2. בחרו כלי Wireframing שאתם אוהבים מהרשימה למטה ושרטטו בכלליות איך יראה אתר הפרויקט שלכם. אל תיסחפו בבקשה: אמורים לצאת לכם לכל היותר 2–3 מסכים.

כלי Wireframing

  1. משוכלל וכבד עם הרבה פיצ’רים – Pencil.
  2. כלי אינטרנטי. נעים ויזואלית, פופולרי מאוד לאחרונה, מצריך קצת להתרגל אליו אבל יחסית נוח – Figma. יש מדריכים ב־YouTube כמו כאן.
  3. כלי ותיק, יחסית אינטואיטיבי. אתם יכולים לבחור ב־freehand כדי לקבל גרסה נוחה יחסית – Invision.
  4. צייר, gimp, photoshop או כל כלי אחר שאתם מרגישים בנוח איתו. גם נייר ועיפרון זה בסדר.
12 לייקים

היי ים,

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

איפה יש קישור לשידור?

השיעור יוקלט, כמובן

לייק 1

היי ים,

בתור פרוייקט, אפשר להקים אתר של שערי המרה?

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

לייק 1

גם אני התחלתי לעבוד על זה, אולי נעזר אחד בשני בהמשך😜

לייק 1

מומלץ -

2 לייקים