איך אתם מדבגים את הקוד שלכם?
-
@MusiCode אמר באיך אתם מדבגים את הקוד שלכם?:
איזו סיבה יש להשאר ב-PHP?
א. רנדור תצוגה - שילוב בין HTML לקוד, יש בזה הרבה פעמים חיסכון גדול בעבודה. בפלטפורמות אחרות מסובך מאוד לייצר תצוגה בצד שרת (אם אי כיום הצורך בזה פוחת אבל זה עדיין נורא נח ומהיר לפיתוח).
ב. יציבות - אתה לא תלוי בפעילות של יישום, ואתה לא צריך להפעיל אף יישום. אתה משנה את הקוד וצופה בתוצאות. אם יש שגיאה בגלל לקוח אחד היא לא מפילה את היישום.
ג. בגרות - php היא שפה בוגרת מאוד, יש לה דרך וכלים לכל מטרה. בnode יש הרבה דברים שכשאתה רוצה לעשות אתה מרגיש הראשון שעושה את זה. וגם מה שלא לעיתים קרובות כרוך בהרבה עבודה.
ד. שליטה - php היא שפה מאוד עקבית ומאוד צפויה. אתה יכול לחשבן עם מחשבון כמה זיכרון תצטרך בכך וכך תעבורה, ואין לך פתאום מקרי ניפוח זיכרון או מעבד מסתוריים שמצריכים חקירת שב"כ יסודית.טוב, עם כל זאת אני ממש נגד PHP ואני הראשון שאומר לעזוב אותה (ומי ששם לב רואה שכל מה שכתבתי זה חסרונות של node ).
אבל זה בדיוק מה שזה מראה: לכל דבר יש מעלות וחסרונות, וphp לצערינו עדיין רלוונטית. -
@yossiz אמר באיך אתם מדבגים את הקוד שלכם?:
אני לא משתמש ב-PHP אבל אף פעם לא שמעתי על debugger ל-PHP
@MusiCode אמר באיך אתם מדבגים את הקוד שלכם?:
שמפתח (לרוע מזלו) בPHP,
ששם אין חיה כזו - דיבאגר.למעשה חיפוש גוגל פשוט מגלה שכן יש דיבאגר(ים) ל-PHP...
-
@dovid אמר באיך אתם מדבגים את הקוד שלכם?:
@MusiCode אמר באיך אתם מדבגים את הקוד שלכם?:
איזו סיבה יש להשאר ב-PHP?
א. רנדור תצוגה [...]
תודה רבה.
את זה חיפשתי, להשכלה כללית שלי.א. רנדור תצוגה - שילוב בין HTML לקוד, יש בזה הרבה פעמים חיסכון גדול בעבודה. בפלטפורמות אחרות מסובך מאוד לייצר תצוגה בצד שרת (אם אי כיום הצורך בזה פוחת אבל זה עדיין נורא נח ומהיר לפיתוח).
דווקא בנוד זה קל ופשוט - כמו PHP.
באקספרס זה אמור להיות ממש כמו PHP.ב. יציבות - אתה לא תלוי בפעילות של יישום, ואתה לא צריך להפעיל אף יישום. אתה משנה את הקוד וצופה בתוצאות. אם יש שגיאה בגלל לקוח אחד היא לא מפילה את היישום.
זה נכון. חד משמעית.
גם בנוד, לקוח בד"כ לא מפיל את השרת, אלא התהליך הראשי ממשיך לרוץ,
ורק התהליך (כאילו. הרי זה רק תהליך אחד. אולי צריך לומר הסטאק שלו?) של הלקוח עוצר.
אבל העניין של שינוי הקוד - נכון,
וזה חיסרון של ממש בנוד.
בכל פעם שעושים שינוי בקוד צריך לאפס את היישום.
ומה אם הוא באמצע משהו?
הכל נדפק.ג. בגרות - php היא שפה בוגרת מאוד, יש לה דרך וכלים לכל מטרה. בnode יש הרבה דברים שכשאתה רוצה לעשות אתה מרגיש הראשון שעושה את זה. וגם מה שלא לעיתים קרובות כרוך בהרבה עבודה.
נכון אולי לתקופה שאתה למדת את נוד.
אני לא מרגיש את זה - להיפך,
מרגיש שכמעט כל רעיון שיש לי בראש, מישהו יישם כבר בנוד.
ב-PHP המון דברים כתבתי לבד, כי לא מצאתי מישהו שעשה את זה.מאז שאני בנוד, אני משתמש בפי-כמה בספריות שמישהו אחר כתב.
ד. שליטה - php היא שפה מאוד עקבית ומאוד צפויה. אתה יכול לחשבן עם מחשבון כמה זיכרון תצטרך בכך וכך תעבורה, ואין לך פתאום מקרי ניפוח זיכרון או מעבד מסתוריים שמצריכים חקירת שב"כ יסודית.
נכון, ואין מה להוסיף,
מתסכל מאוד.@שואף , קח את המידע פה לתביעה המשפטית....
-
@MusiCode
א. אני מציע שתשתף אותנו איך מרנדרים תצוגה בנוד (מצידי עם ארבע עשרה ספריות), שזה ממש "קל ופשוט כמו PHP".
ב. בנוד כל שגיאה שלא בתוך try מפילה הכל. שגיאות מפורשות או צפויות ניתנות ללכידה גלובלית, אבל אחרות גובות מחיר לא נעים שהדרך היחידה להימנע ממנו זה להיות יותר חכם ולצפות הכל (לא תמיד זה אפשרי להיות כזה חכם).
החיסרון של הפעלת האפליקציה מחדש בכל שינוי לא כתבתי והוא איננו חיסרון אמיתי בעיני.
ג. נצטרך לדבר על דוגמאות כדי ליישב את הסתירה החריפה, אבל יש צדק בדבריך שאפשר כיום לטעון להיפך. -
@שואף יש מנועי תצוגה בנוד, יותר מידי הרבה (עם תמיכה מובנית בexpress יש את כל אלו). וזה לא מרגיש כמו php.
אבל לך אני אומר, שזה שיקול של ימי הביניים. זה כמו לחפש רכב שיש בו אופציה לחיבור סוסים. היום 99% מהתצוגה צריכה להיות סטטית והקשר עם השרת צריך להיעשות עם JS.
-
@dovid אמר באיך אתם מדבגים את הקוד שלכם?:
@MusiCode
א. אני מציע שתשתף אותנו איך מרנדרים תצוגה בנוד (מצידי עם ארבע עשרה ספריות), שזה ממש "קל ופשוט כמו PHP".https://internet-israel.com/מדריכים/express/שימוש-בטמפלייטים-של-html-ב-express-js/
"וזה לא מרגיש כמו PHP" -
על טעם וריח...ב. בנוד כל שגיאה שלא בתוך try מפילה הכל. שגיאות מפורשות או צפויות ניתנות ללכידה גלובלית, אבל אחרות גובות מחיר לא נעים שהדרך היחידה להימנע ממנו זה להיות יותר חכם ולצפות הכל (לא תמיד זה אפשרי להיות כזה חכם).
קאשע פאר אמעשה - אקספרס על שגיאה לא מפילה לי את האפליקציה.
רק הלקוח הספיציפי נופל.
תתווכח, רק אל תגרום לאפליקציות להתחיל ליפול...אולי יש איזה try שם בפנים.
-
@שואף אמר באיך אתם מדבגים את הקוד שלכם?:
@dovid אמר באיך אתם מדבגים את הקוד שלכם?:
לחפש רכב שיש בו אופציה לחיבור סוסים
אהבתי...
אבל אני שונא JS בכל נימי נשמתי. אתה לא חושב שPHP הרבה הרבה יותר נוח להכין נתונים דינמיים, מאשר הסרבול של JAVASCRIPT? לטעמי אין בכלל מה להשוותאתה יכול להכין נתונים דינמיים בנוד, אף אחד לא אמר לך לא.
רק אמרו, שהיום האופנה (או מה?) היא לעשות דפים סטטים.אתה לא עושה ajax בדפים שלך?
-
@MusiCode
אל תביא לי לינק, זה מזלזל מאוד מאוד באינטלגנציה שלי.
תגיד במה אתה משתמש שיהיה ויכוח נורמלי ואני אסביר את ההבדלים של ה"מרגיש".
אם אתה משתמש בejs (אני מניח מאוד שלא, אחרת לא היית מכנה את ההבדלים "טעם וריח"), תספר לנו על חוויותיך, וגם למשל על מקרים קצת מורכבים כמו קוד מרובה שורות שמה, אולי אני יעבור גם אני לכתוב בזה.בקשר לשגיאה, אכן באקספרס אתה צודק.
-
א. למי שלא זוכר אני מאוד משתדל לא לכתוב דברים חדשים בPHP מהסיבות שנאמרו לעיל (ועוד כמה חסרונות שלא נכנס אליהם כרגע), אלא כותב בGO, אא"כ אני צריך לכתוב איזה סקריפט קטן שיש לו כבר ספריה מוכנה וכדו'
ב. אני בעיקר רציתי לשאול, מה הדיבגרים (בכל שפה שהיא) עושים יותר מבדיקת שגיאות תחביר?
(שבGO במילא הקוד לא מתקמפל אם התחביר לא נכון ב100%, אמנם זה קצת חופר לפעמים שאפילו אם הכרזתי על משתנה בלי להשתמש בו זה לא מתקמפל)
וזה נראה שהתשובה היא שבעורך טקסט אפשר לעשות נקודות breakpoint ולראות מה היה קורה אם הייתי כותב שם פרינט
וכן אפשר לראות מאיזה משתנה הגיע הערך בלייב (לפחות בנוד)
האם יש עוד פיצרים? -
@מנצפך אמר באיך אתם מדבגים את הקוד שלכם?:
@dovid אמר באיך אתם מדבגים את הקוד שלכם?:
ב. בנוד כל שגיאה שלא בתוך try מפילה הכל.
אגב,
אני חושב שtry ל- promise, לא עוזר. ובכל מקרה יפיל את האפליקציה...וודאי לא נכון ככלל
-
טיפ חשוב שקראתי פעם (נראה לי בהקדמה של a mind for numbers|)
לפתרון בעיות לא רק בתכנות
זה פשוט לא להתקע על הבעיה מידי הרבה זמן
אלא לעבור לנושא אחר או בכלל לעזוב את המחשב והפסיק לחשוב על דברים מסובכים
לטענת הכותב המוח מנסה לפתור בעיות בצורה שונה בתת מודע וזה פותר את הבעיה הרבה פעמים בצורה יותר טובה מאשר חשיבה ישירה על הבעיה -
אגב, היתה לי בעיה עם הדיבוג המובנה של vscode שלאחרונה מצאתי את הפתרון, (חיפוש גוגל פשוט...)
אני אכתוב את הבעיה והפתרון למזכרת, אולי מישהו ייעזר מזה
הבעיה: יש ספריות logging פופולאריות כמו winston ו-morgan שהפלט שלהם לא היה מופיע בקונסול הדיבוג,
ההסבר: הספריות שולחים את הפלט (בברירת מחדל) ל-process.stdout
במקוםconsole.log
(למה? נ"ל כיconsole.log
זה לאstream
והם נבנו בצורה שאפשר לחבר להםstream
). הקונסול של הדיבוג מקבל (בברירת מחדל) רק את הפלט שלconsole.*
הפתרון: לערוך את הקובץlaunch.json
של מרחב העבודה (workspace) ולהוסיף לו:"outputCapture": "std"
שזה אומר ללכוד את הפלט של stdout/stderr