איך לומדים לבנות תוכנה
-
@שלום-עולם-0 אין לך על מה לבקש סליחה, בשביל זה אנחנו כאן
אתן לך דוגמה למשהו שעשיתי לא מזמן, יש אצלנו עמדה של קול הלשון עם תוכנה חמודה של @מנצפך לישיבה על קברו וטעינת רב-קו, הבעיות שהיו לי, א. שפעמים רבות התוכנה הזו נופלת וצריך להפעיל מחדש את המחשב בשביל להפעיל אותה (ובשביל להפעיל מחדש את המחשב צריך ללכת להביא את המפתח של העמדה וכו'). ב. לאחרונה הקול הלשון לא היה נותן לתוכנה של הישיבה על קברו לעלות בעליית המחשב, מה שהצריך להעלות את התוכנה ורק אז את הקול הלשון. ג. הרבה פעמים הדף של ישיבה על קברו היה קופא על השאלות של היום הקודם או סתם נתקע מה שהצריך כיבוי והפעלה של התוכנה.
מה שעשיתי, כתבתי סקריפט פייתון ש...
א. בודק האם היישום של הישיבה על קברו פועל, במידה ולא מפעיל אותו.
ב. במידה והיישום פועל יותר משעה סוגר אותו ומפעיל אותו מחדש.
ג. הוספתי בדיקה באמצעות קריאה למערכת של ימות המשיח שבמידה ו.. המחשב יופעל מחדש, וכך אני יכול להפעיל את המחשב מחדש באמצעות שיחת טלפון פשוטה.קימפלתי את הסקריפט לexe באמצעות pyinstaller והגדרתי שיופעל בכל 10 דק' ושלום על ישראל...
למעשה, זה סקריפט סופר פשוט, לא נצרכתי להרבה ידע בשבילו, לא היה הרבה איפה להסתבך, את הספריות המתאימות מאתרים בחיפוש גוגל "הפעלה מחדש למחשב פייתון" (כמובן שעדיף לכתוב באנגלית או לחילופין לתרגם בגוגל טרנסלייט..) וזה אגב פלוס גדול לפייתון (וגם לjs אבל עכשיו אנחנו בפוסט העידוד לפייתון) שבגלל שהוא מאוד פופולרי יש שפע של מדריכים, הסברים וספריות שזמינים בכל חור..
אני מצרף את הקוד פייתון של זה בבחינת טוב מראה עיניים.. תראה כמה הקוד קריא ופשוט מצד אחד, אבל עוצמתי מבחינת היכולות שלו...
import psutil import subprocess import datetime import requests # Check if the process is already running for process in psutil.process_iter(): if process.name() == "RavKav.exe": # Check if the process has been running for more than an hour if (datetime.datetime.now() - datetime.datetime.fromtimestamp(process.create_time())).total_seconds() > 3600: print("רב קו פועל כבר יותר משעה ברצף. עוצר...") process.kill() # start it. print("מפעיל מחדש...") subprocess.Popen("c:\\intel\RavKav.exe noravkav") break else: print("רב קו כבר פועל. הכל בסדר.") break else: # If the process is not running, start it print("רב קו אינו פועל. מפעיל...") subprocess.Popen("c:\\intel\RavKav.exe noravkav") # ------------------------------- url = 'https://www.call2all.co.il/ym/api/RunTzintuk?token=0799999063:054863&phones=tzl:21' response = requests.get(url) if 'billingPerCall' in response.text: urlresetlist = 'https://www.call2all.co.il/ym/api/TzintukimListManagement?action=resetList&token=079999063:0543&TzintukimList=21' resetlist = requests.get(url) # Restart the computer subprocess.call(['shutdown', '-r', '-t', '0']) else: # Print a message to the log print('Requested text not found in the response.')
-
@משתמש-תמים כתב באיך לומדים לבנות תוכנה:
אם אתה לא רוצה לדפוק לעצמך את המחשב
אגב, אני אוהב להשתמש בגלל זה ב Windows Sandbox (זמין בגרסאות הפרו החל מwin10 גרסה 1809 אולי?) זה מעלה מחשב וירטואלי ממש בקלות תוך כמה שניות שבסגירה הוא מתאפס, ניתן להעתיק ממנו ואליו קבצים כמו שמעתיקים בRDP (העתק הדבק).
הוא חמוד שאם אני יפעיל פקודה שמכבה את המחשב, הוא פשוט ייסגר והוא ממש אחד על אחד. (אני יש לי בשולחן העבודה כבר תיקיה עם מתקין של כרום, ותעודות של נטפרי עם סקריפט להגדרה מהירה)
-
@אביי כתב באיך לומדים לבנות תוכנה:
urlresetlist = 'https://www.call2all.co.il/ym/api/TzintukimListManagement?action=resetList&token=079999063:0543&TzintukimList=21'
הדרכה מצויינת (הלוואי שמישהו היה כותב לי את זה בהתחלה...)
נ.ב. מקווה שלא הכנסת שם משתמש וסיסמא אמיתיים... -
@NH-LOCAL כתב באיך לומדים לבנות תוכנה:
@יעקב-מ-פינס אני הייתי ממליץ דוקא על שפת באטש ושורת הפקודה. מבחינת ניידות אין נוחה ממנה והיא פשוטה מאוד לשימוש.
ובהתאם להצעת החברים כאן, שהעיקר זה ללמוד את הרעיון שמאחורי התכנות בשלב הראשון - ולאו דוקא תכנות שימושי, שורת הפקודה בהחלט מתאימה לזה - ניתן ללמוד ממנה היטב איך עובד תכנות.רק לשם הפרוטוקול אני מתנגד להצעה זו
אני יכול להביא נימוקים אם מישהו דוקא רוצה -
@NH-LOCAL חיכיתי שתשאל
אלך לפי סדר דבריך:מבחינת ניידות אין נוחה ממנה
יש לי טענה הפוכה, שורת הפקודה שונה לגמרי בין ווינדוס ללינוקס, משא"כ שפות תכנות בד"כ זהות בכל הפלטפורמות, אפשר לשאת איתך פייתון על דיסק און קי
והיא פשוטה מאוד לשימוש
תסביר לי אם ככה למה יותר קל לי לכתוב 500 שורות JS מ-10 שורות CMD?
שורת הפקודה בהחלט מתאימה לזה - ניתן ללמוד ממנה היטב איך עובד תכנות
ממש ממש לא. שפות שורת הפקודה נועדו בעיקר כדי לשרשר פקודות בצורה נוחה
זה לא אמור להיות שפת "תכנות" אלא שפת "תפירה"... דהיינו צורה שימושית לתפור ביחד פקודותגם את החלקים של תכנות שיש שם באיזשהו צורה (פונקציות, משתנים, לולאות, מערכים, בקרת זרימה וכו) זה בצורה שונה מאוד והרבה יותר מסורבל משפות תכנות. מי שלומד לולאה בבאש, זה לא יעזור לו כמעט כלום בלולאות בשפות תכנות נורמליות
כדי לכתוב עם שפת shell (איזה שיהיה, bash, batch, powershell) צריך ללמוד מושגים שלא נצרכים כלל עבור תכנות. למשל: מה זה משתני סביבה, קוד יציאה של פקודה, קלט ופלט ושרשורם ב-pipe, שכל זה לא קשור בשום צורה לתכנות טהור
מצד שני יש הרבה מושגים בתכנות שכמעט ולא נפגשים בהם או שלא נפגשים בהם כלל בשורת הפקודה, או שעובדים בצורה שונה מאוד ממה שמקובל (סוגי משתנים שונים, מבני נתונים, קלאסים וכל הנושא של OOP, ועוד)
ניתן ליצור ממנה דברים ממשיים שמטפלים בקבצים (ולא רק מדפיסים "hello world") כבר בשלב ממש ראשוני
כן, אבל הוא לא מסוגל לשום דבר מעבר לזה כמעט, אתה יכול לתפור ביחד פקודות, אבל איפה שאין פקודה מתאימה וצריך להסתדר לבד לכתוב לוגיקה מסויימת, אתה נשאר עם שפה מסכנה מסורבלת ומכוערת
ויש הרבה דברים שפשוט בלתי אפשריים בשורת פקודה גם אם תעבוד קשה מאוד. ליצור ממשק גמיש ומותאם אישית ועוד הרבה דברים בלי שיעור. תעשה שרת אינטרנט בשורת הפקודה.
מי שרוצה לכתוב תוכנה אמיתית יתקשה מאוד להסתדר עם שורת הפקודה -
@NH-LOCAL כל עוד אתה לא מכיר שפת תכנות טוב חוץ מBTACH, אז ביחס למה אתה אומר שהיא טובה?
יוסי כתב דברים קשים על השפה הזו, אבל זה כשמגיעים להשוואה. כשלעצמה זה השפה הכי טובה....
אגב, בקשר לניידות למשל יש עוד שפות שאתה לא מכיר, למשל windows script.
ויש כל שפה שיש לה מקפל נח לEXE. -
@yossiz אין ספק שאתה צודק. CMD לא נוחה במיוחד לתוכנות גדולות ומורכבות.
אבל...
הנושא פה הוא תכנות ראשוני ובסיסי, לא בניית תוכנות מורכבות.
תסביר לי אם ככה למה יותר קל לי לכתוב 500 שורות JS מ-10 שורות CMD?
לי דוקא הרבה יותר קל הפוך...
יש לי טענה הפוכה, שורת הפקודה שונה לגמרי בין ווינדוס ללינוקס, משא"כ שפות תכנות בד"כ זהות בכל הפלטפורמות, אפשר לשאת איתך פייתון על דיסק און קי
שוב: זה רלוונטי למי שיוצר תוכנה של ממש, שם הניידות משחקת תפקיד. אבל בשביל ליצור דברים קטנים, בהתחשב בעובדה שרובינו משתמשים בווינדוס, ההתאמה לכל מערכת לא ממש משנה
@dovid אני בהחלט מכיר שפות נוספות, ולא באתי להשוות בין CMD לפייתון או JS למשל. בסוף - בסך הכל באתי לתת המלצה בהתאם לנושא שעליו נסוב השרשור:
איך לומדים לבנות תוכנה
-
@NH-LOCAL
אם תקרא את הפוסט לעומק תראה ששאלתי הייתה מה צריך בשביל לבנות את הכלים מסביב @dovid ענה לי ובצדק שלא צריך לדעת מה הם הכלים אלא קודם צריך ללמוד שפה ולקחתי את המלצתו ללמוד html+css+javascript (היה קשה לכתוב את זה בלי ההשלמות של vs code) ולענ"ד התקדמתי ממש מהר וכבר יש לי תוצאות בשטח שכל הזמן משתפרות
וגם ההבנה של איך התכנות עובד מגיעה יחד עם זה (למשל היום נפלה במוחי ההבנה שכל עמוד בתוכנה בעצם הוא קוד נפרד - אני צודק?)
אני רוצה להודות ל @dovid שלא הביא אותי ליאוש ולא אמר לי שבשביל ללמוד לבנות תוכנה צריך. וצריך. וצריך. וצריך. אלא אמר לי שלא צריך כלום אולי רק vscode ופשוט לתפוס שפה אחת ללמוד אותה לעומק להבין איך היא עובדת ואז משם הדרך קלה להמשיך הלאה לרמה יותר גבוהה וגם לבניית תוכנה ש(אולי)תביא כסף -
@יעקב-מ-פינס כתב באיך לומדים לבנות תוכנה:
שכל עמוד בתוכנה בעצם הוא קוד נפרד
יותר נכון "כל עמוד אינטרנט" הוא עולם נפרד.
המונח תוכנה לא מתאימה, כי אפשר לבנות תוכנה אחת עם מאה מסכים.
המונח "קוד נפרד" לא מספיק חד, כוונתך היא שבשביל שהדף יפעל צריך את מלא הקוד והגדרות העיצוב למרות שזה זהה בכל האתר.יש מושג של SPA, שעוד תקופה תכיר, הוא קצת מטשטש את הגדרת "עמוד אינטרנט", כי שמה יש עמוד שמשנה מראה ואפילו כתובות בלי שזה קוד נפרד.
אבל ההגדרה נשארת בתוקף תמיד, אם מתייחסים לעמוד אינטרנט כדף שמגיע פעם ראשונה בעקבות ניווט או בעקבות לחיצה על הלחצן ריענון.