המשך ל"תגובה ל"מה זה שרת?" החלק הטכני
-
איך המחשב מבין אותנו, מה זה קוד, ולמה שרת יכול לשדרג לכם את הקו פי כמה
בהמשך למה שכתבתי פה – אני רוצה לנסות להסביר בצורה טכנית, פשוטה ומעשית איך עושים את זה בפועל, במיוחד בשביל אלו שרוצים להתקדם קצת מעבר לשבלונות הרגילות של ימות המשיח.
אני יודע שיהיו כאלה שיגידו:
"נו באמת, מה זה פוסט כזה בסיסי? מה הקשר לפורום הזה בכלל?..."אז קודם כל – אתם צודקים
ואם אתם מהמומחים – תרגישו חופשי לדלג.אבל אם אתם בונים קו שמתבסס על שלוחות פשוטות – תדעו שיש עולם שלם שיכול לשדרג את הקו שלכם לרמות שלא חלמתם.
אשתמש עם הגישה לפיה חוסר דיוק חוסך הרבה הסברים.
הקדמה (שנראית לא קשורה, אבל קריטית):
במחשב הכל נראה פשוט –
אתה לוחץ על כפתור, נפתח חלון. מקליד משהו, המחשב מגיב.
אבל האמת? המחשב לא מבין כלום.הוא בסך הכול מבצע פקודות, שנכתבו לו בשפה מיוחדת, שמבוססת על לוגיקה וחישובים מתמטיים.
כל פעולה שאתה עושה – זה בעצם אתה שולח פקודה, והמחשב מבצע את מה שתוכנת לעשות בתגובה אליה.לדוגמה: כשאני לוחץ עכשיו על כפתור "שלח" בפוסט –
יש מישהו שכתב מראש:"אם המשתמש לוחץ כאן → אז תשמור את ההודעה, תשלח אותה, תעדכן את המסך..."
ומה אם אני רוצה לכתוב את הפקודות בעצמי?
אפשר!
וזה בדיוק כל עולם התכנות –
לכתוב פקודות למחשב ישירות, בלי ממשק גרפי.לדוגמה, הפקודה:
print("שלום עולם!")
אומרת למחשב:
"תדפיס לי את המשפט שלום עולם"איך עושים את זה בפועל?
- פותחים עורך טקסט פשוט (או עורך קוד כמו VS Code)
- כותבים את הפקודה:
print("שלום עולם!")
- שומרים את הקובץ בשם כלשהו, עם סיומת .py (שזה פייתון)
- פותחים את שורת הפקודה (cmd), גוררים את הקובץ פנימה, ולוחצים אנטר
המחשב יקרא את הקובץ, יבין את הפקודה – ויבצע אותה!
(בשורת הפקודה יופיע המילים "שלום עולם"!)אבל... מה אם אני רוצה שהפקודה תתבצע כל 5 דקות?
פה כבר נכנסים לעולם של אוטומציה.
אפשר לכתוב קוד שאומר למחשב:import time while True: print("שלום עולם!") time.sleep(300)
אבל שים לב – אם המחשב שלך כבוי או שאתה סוגר את שורת הפקודה – זה יפסיק לעבוד.
ופה נכנס הפתרון:
שרת! מחשב שלא הולך לישון לעולם
שרת הוא פשוט מחשב, כמו שלך – רק שהוא יושב בענן.
אפשר "לתת לו קוד", והוא יריץ אותו כל הזמן
ולכן, גם כשאתה ישן, לומד, או בשבת – השרת ממשיך להריץ את הפקודות שכתבת.מקודם הסברתי איך מכתיבים למחשב את הקוד במחשב בצורה מקומית - איך איך מכתיבים לשרת?
כותבים את הקוד כמו שראינו קודם.(מכאן אני מסביר לפי איך שאני משתמש, ייתכן שיש דרכים יותר פשוטות...)
- פותחים חשבון ב־GitHub (אפשר להרחיב הרבה על השימושים בגיטהב אבל לא פה המקום)
(GitHub הוא מקום בענן שבו שומרים קבצי קוד – כמו לשמור קבצים על שולחן העבודה, רק בענן.
כדי שהשרת יוכל להריץ את הקוד – גם הקוד עצמו צריך להיות נגיש בענן.)- יוצרים מאגר חדש, קוראים לו בשם, ומכניסים לשם את הקוד...
אפשר לכתוב את הקוד בצורה מקומית בתוך עורך טקסטים פשוט, ואח"כ להעלות לגיטהב - לענן.
ואפשר לכתוב את הקוד ישירות בענן.
יש פה צילומי מסך...
צור מאגר:
לאחר מכן צריך לקרוא שם למאגר...
מדפדפים למטה ולוחצים על Create repository = צור מאגר
עכשיו זה השלב שצריך להעלות את הקוד לענן - יש אפשרות להעלות קובץ מוכן מהמחשב, ויש אפשרות לייצר קובץ חדש בענן... פשוט לכתוב את הקוד שם!
שימו לב לשם הקובץ!
אם זה קוד פייתון – הסיומת חייבת להיות.py
אם זו שפה אחרת – בהתאם.זהו - הקוד נמצא בענן. עכשיו צריך לחבר את השרת - המחשב שייקרא את הפקודות משם!!
- פותחים חשבון בחברת שרתים כלשהיא - ומכיוון שאני משתמש עם railway אני יסביר לפי זה אבל הרעיון הוא אותו דבר ברוב החברות של השרתים.
אגב - ב Railway אפשר להרשם בצורה פשוטה דרך החשבון שנפתח בגיטהב.
- פריסת פרויקט חדש > פריסה מתוך מאגר בגיטהב > המאגר הרצוי
(אם זה הפעם הראשונה צריך ללחוץ על הגדרת אפליקצית גיטהב > כל המאגרים > התקנה ואימות
ואז יוצגו כל המאגרים שיש בגיטהב תבחר במאגר המתאים ו... זהו המאגר נפרס!!
פריסה זה בעצם המונח שמתאר את הסינכרון בין הקוד לשרת -
ובמילים יותר פשוטות - הקוד זה ההוראות - כשפורסים את הקוד - בעצם אומרים לשרת - תקרא את כל ההוראות האלו -
כך יוצא שבסיום הפריסה השרת מתחיל לבצע את הפעולות...בדוגמא לעיל:
אם אמרנו לשרת "תדפיס את המילים "שלום עולם""
השרת ידפיס לנו את המילים האלו...
אפשר לראות את המילים האלו בלוגים - כלומר בתגובות של השרת!כל שינוי שעושים בקוד - צריך לפרוס שוב מחדש את הקוד בשרת... כדי שהשינויים יחולו
ב railway הקוד נפרס אוטומטית בכל פעם שנשמר שינוי בקוד (כמובן אפשר לשנות את זה בהגדרות...).
לוגים – למה זה חשוב?
בשרת יש מושג שנקרא לוג שזה בעצם התגובות שהשרת עונה... גם את זה צריך להגדיר בקוד.
למשל:
אם אני רוצה שהשרת בכל חמש דקות ייצר קובץ חדש בשלוחה X בקו.
אז מגדירים בסוף השרשרת פקודות - עוד פקודה וזה שאם הפעולה הצליחה שידפיס תשובה שהצליח ואם לא - אז שיגיאה - ופרטי השגיאה
זה כמובן עוזר לדעת האם הפעולה הצליחה ואם לא אז מה השגיאה - אחרת בלי לוגים - זה ממש לגשש באפילה.איך מחברים את כל זה עם המערכת של ימות המשיח?
כל חברת שרתים נותנת לינק - כתובת אינטרנט, שדרכה אפשר לתקשר עם השרת - לשלוח אליו נתונים וכו'ב railway זה נמצא פה
אם זה לא מופיע צריך להיכנס להגדרות הפרויקט > צור דומיין.
את הלינק הזה אפשר לחבר לשלוחת API בימות המשיח
אפשר גם להשתמש עם שרת בלי לעשות שלוחה בימות המשיח באמצעות האפשרויות של גישת מפתחיםכלומר - יש אפשרות לשלוח בקשות לשרת עם שלוחה ייעודית - כמו שמתואר פה
ויש אפשרות לנהל דברים באמצעות טוקן (שם משתמש:סיסמא) כמו שמתואר פהההסבר כאן עוסק רק בשימוש בקוד מוכן –
אבל כל פעולה שאתה רוצה שהשרת יבצע – דורשת קוד מותאם משלה.
ולכן צריך להכיר תכנות, או לפחות לדעת איך להתאים קוד בסיסי.מי שלא יודע לכתוב קוד יכול כמובן להשתמש עם "בינות מלאכותיות" לרוב...
הדברים נכתבו כהמשך למה שכתבתי פה
ומי שרוצה לכתוב קוד עם בינה מלאכותית אולי כדאי לו לראות גם את זה
וגם פה יש מידע חשוב למתחילים שכדאי מאוד לעבור עליו...מקווה שהדברים יהיו לתועלת
ומקווה שזה לא היה מידי ארוך...
אם פיספסתי משהו - אשמח לערוך את הפוסט!