דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. עזרה בnode.js/ express

עזרה בnode.js/ express

מתוזמן נעוץ נעול הועבר תכנות
16 פוסטים 4 כותבים 289 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ב ב.ל

    @yossiz אמר בעזרה בnode.js/ express:

    @ב-ל יש לי ניחוש שפונקציית res.render מגדיר את התשובה כ-text/html מה שגורם לדפדפן להתעלם מהחומר שלפני ה-<head>.
    תבדוק בכלי המפתחים.

    (אגב, יש עדיפות להדביק את הקוד כטקסט ולא כתמונה)

    לא הבנתי

    yossizY מנותק
    yossizY מנותק
    yossiz
    כתב ב נערך לאחרונה על ידי yossiz
    #4

    @ב-ל זה היה רק ניחוש. קודם נבדוק אם צדקתי ואז אני אסביר את דברי אם נשאר משהו לא ברור.
    האם אתה יכול לבדוק בכלי המפתחים את התשובה שקיבלת?
    04033b54-829f-486f-bde2-82a53051c928-image.png
    אני מצפה שתראה בתשובה את התוכן של הקובץ Messilat_yesharim.txt ומיד לאחריה את ה-HTML שמרונדר על ידי res.render.

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    תגובה 1 תגובה אחרונה
    1
    • ב ב.ל

      אני מנסה להזרים קובץ טקסט לתוך תבנית html ללא הצלחה
      בלי תבנית זה כן עובד
      ‏‏לכידה1.PNG
      ‏‏לכידה2.PNG

      dovidD מנותק
      dovidD מנותק
      dovid
      ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #5

      @ב-ל יש בקוד שלך שני שורות,
      בשורה הראשונה אתה יוצר זרם קריאה מקובץ טקסט (יש לך פה סיכון אבטחה קטן פה - המשתמש יכול לקרוא כל קובץ טקסט בכל המחשב שלך עם שימוש בקומבינות של ../ )
      כעת בסוף השורה אתה מעביר את הזרם של הקריאה בשלמותו לתשובה לדפדפן (בלי שום רנדור של תבנית). אני מניח שזה שארית מהמצב ללא רנדור תבנית כי עם רנדור תבנית זה לא הגיוני, אז תדאג למחוק את זה: .pipe(res)
      בשורה השניה אתה משתמש בתבנית ונותן לה אובייקט פרמטרים עם מאפיין namebooks שנלקח מפרמטר מהבקשה, ופרמטר text שבו אתה שם את אובייקט התשובה res, זה לא הגיוני.
      אני מניח שאתה רצית לעשות ככה:

      var fileStream = fs.createReadStream(...);
      res.render('books', {namebooks: req.params.name,  text: fileStream });
      

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

      fs.readFile(..., function (err, data ) {
        res.render('books', {namebooks: req.params.name,  text: data});
      });
      
      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
      yossizY ב 2 תגובות תגובה אחרונה
      2
      • dovidD dovid

        @ב-ל יש בקוד שלך שני שורות,
        בשורה הראשונה אתה יוצר זרם קריאה מקובץ טקסט (יש לך פה סיכון אבטחה קטן פה - המשתמש יכול לקרוא כל קובץ טקסט בכל המחשב שלך עם שימוש בקומבינות של ../ )
        כעת בסוף השורה אתה מעביר את הזרם של הקריאה בשלמותו לתשובה לדפדפן (בלי שום רנדור של תבנית). אני מניח שזה שארית מהמצב ללא רנדור תבנית כי עם רנדור תבנית זה לא הגיוני, אז תדאג למחוק את זה: .pipe(res)
        בשורה השניה אתה משתמש בתבנית ונותן לה אובייקט פרמטרים עם מאפיין namebooks שנלקח מפרמטר מהבקשה, ופרמטר text שבו אתה שם את אובייקט התשובה res, זה לא הגיוני.
        אני מניח שאתה רצית לעשות ככה:

        var fileStream = fs.createReadStream(...);
        res.render('books', {namebooks: req.params.name,  text: fileStream });
        

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

        fs.readFile(..., function (err, data ) {
          res.render('books', {namebooks: req.params.name,  text: data});
        });
        
        yossizY מנותק
        yossizY מנותק
        yossiz
        כתב ב נערך לאחרונה על ידי yossiz
        #6

        @dovid אמר בעזרה בnode.js/ express:

        יש לך פה סיכון אבטחה קטן פה

        תודה שהערת את תשומת לבנו לנושא.
        למדתי עכשיו מהתיעוד ש-path.join כבר עושה נירמוליזציה לנתיב (הורדת . ו-.. מאמצע הנתיב) עכשיו נשאר רק לוודא שהנתיב מתחיל בתיקייה הנכונה.
        מקורות:

        • https://nodejs.org/api/path.html#path_path_join_paths
        • https://nodejs.org/en/knowledge/file-system/security/introduction/#preventing-directory-traversal

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        תגובה 1 תגובה אחרונה
        1
        • dovidD dovid

          @ב-ל יש בקוד שלך שני שורות,
          בשורה הראשונה אתה יוצר זרם קריאה מקובץ טקסט (יש לך פה סיכון אבטחה קטן פה - המשתמש יכול לקרוא כל קובץ טקסט בכל המחשב שלך עם שימוש בקומבינות של ../ )
          כעת בסוף השורה אתה מעביר את הזרם של הקריאה בשלמותו לתשובה לדפדפן (בלי שום רנדור של תבנית). אני מניח שזה שארית מהמצב ללא רנדור תבנית כי עם רנדור תבנית זה לא הגיוני, אז תדאג למחוק את זה: .pipe(res)
          בשורה השניה אתה משתמש בתבנית ונותן לה אובייקט פרמטרים עם מאפיין namebooks שנלקח מפרמטר מהבקשה, ופרמטר text שבו אתה שם את אובייקט התשובה res, זה לא הגיוני.
          אני מניח שאתה רצית לעשות ככה:

          var fileStream = fs.createReadStream(...);
          res.render('books', {namebooks: req.params.name,  text: fileStream });
          

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

          fs.readFile(..., function (err, data ) {
            res.render('books', {namebooks: req.params.name,  text: data});
          });
          
          ב מנותק
          ב מנותק
          ב.ל
          כתב ב נערך לאחרונה על ידי
          #7

          @dovid
          תודה על התשובה המפורטת.
          אכן האפשרות של סטרים לא עובד
          זה מה שמופיע לי
          ‏‏לכידה 4.PNG
          רק readFile עובד

          ליצירת קשר - baruchlamdan@gmail.com

          י 2 תגובות תגובה אחרונה
          0
          • ב ב.ל

            @dovid
            תודה על התשובה המפורטת.
            אכן האפשרות של סטרים לא עובד
            זה מה שמופיע לי
            ‏‏לכידה 4.PNG
            רק readFile עובד

            י מנותק
            י מנותק
            יוסף בן שמעון
            כתב ב נערך לאחרונה על ידי
            #8

            @ב-ל אמר בעזרה בnode.js/ express:

            רק readFile עובד

            כמובן שבקבצים כבדים זה יגרום לדליפת זיכרון

            dovidD תגובה 1 תגובה אחרונה
            1
            • ב ב.ל

              @dovid
              תודה על התשובה המפורטת.
              אכן האפשרות של סטרים לא עובד
              זה מה שמופיע לי
              ‏‏לכידה 4.PNG
              רק readFile עובד

              י מנותק
              י מנותק
              יוסף בן שמעון
              כתב ב נערך לאחרונה על ידי
              #9

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

              תגובה 1 תגובה אחרונה
              3
              • י יוסף בן שמעון

                @ב-ל אמר בעזרה בnode.js/ express:

                רק readFile עובד

                כמובן שבקבצים כבדים זה יגרום לדליפת זיכרון

                dovidD מנותק
                dovidD מנותק
                dovid
                ניהול
                כתב ב נערך לאחרונה על ידי
                #10

                @יוסף-בן-שמעון אמר בעזרה בnode.js/ express:

                כמובן שבקבצים כבדים זה יגרום לדליפת זיכרון

                צריכת זיכרון גבוהה איננה "דליפת זיכרון" - https://www.hamichlol.org.il/דליפת_זיכרון
                אולי בנוד זה תמיד הולך ביחד, כלומר זה גורר את זה (יש לי חשש בלתי מבוסס בכיוון...).

                • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                yossizY תגובה 1 תגובה אחרונה
                3
                • dovidD dovid

                  @יוסף-בן-שמעון אמר בעזרה בnode.js/ express:

                  כמובן שבקבצים כבדים זה יגרום לדליפת זיכרון

                  צריכת זיכרון גבוהה איננה "דליפת זיכרון" - https://www.hamichlol.org.il/דליפת_זיכרון
                  אולי בנוד זה תמיד הולך ביחד, כלומר זה גורר את זה (יש לי חשש בלתי מבוסס בכיוון...).

                  yossizY מנותק
                  yossizY מנותק
                  yossiz
                  כתב ב נערך לאחרונה על ידי
                  #11

                  @dovid אמר בעזרה בnode.js/ express:

                  אולי בנוד זה תמיד הולך ביחד, כלומר זה גורר את זה (יש לי חשש בלתי מבוסס בכיוון...).

                  אני סקפטי...

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  dovidD תגובה 1 תגובה אחרונה
                  0
                  • yossizY yossiz

                    @dovid אמר בעזרה בnode.js/ express:

                    אולי בנוד זה תמיד הולך ביחד, כלומר זה גורר את זה (יש לי חשש בלתי מבוסס בכיוון...).

                    אני סקפטי...

                    dovidD מנותק
                    dovidD מנותק
                    dovid
                    ניהול
                    כתב ב נערך לאחרונה על ידי
                    #12

                    @yossiz יש לך ניסיון עם צריכות זיכרון גבוהות?
                    האוסף זבל מצליח להוריד משתי גיגה למשל חזרה לעשרות מגה?

                    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                    yossizY תגובה 1 תגובה אחרונה
                    0
                    • dovidD dovid

                      @yossiz יש לך ניסיון עם צריכות זיכרון גבוהות?
                      האוסף זבל מצליח להוריד משתי גיגה למשל חזרה לעשרות מגה?

                      yossizY מנותק
                      yossizY מנותק
                      yossiz
                      כתב ב נערך לאחרונה על ידי
                      #13

                      @dovid אמר בעזרה בnode.js/ express:

                      @yossiz יש לך ניסיון עם צריכות זיכרון גבוהות?

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

                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                      תגובה 1 תגובה אחרונה
                      0
                      • dovidD מנותק
                        dovidD מנותק
                        dovid
                        ניהול
                        כתב ב נערך לאחרונה על ידי
                        #14

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

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

                        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                        dovidD תגובה 1 תגובה אחרונה
                        6
                        • dovidD dovid

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

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

                          dovidD מנותק
                          dovidD מנותק
                          dovid
                          ניהול
                          כתב ב נערך לאחרונה על ידי dovid
                          #15

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

                          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                          yossizY תגובה 1 תגובה אחרונה
                          5
                          • dovidD dovid

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

                            yossizY מנותק
                            yossizY מנותק
                            yossiz
                            כתב ב נערך לאחרונה על ידי
                            #16

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

                            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                            תגובה 1 תגובה אחרונה
                            2
                            תגובה
                            • תגובה כנושא
                            התחברו כדי לפרסם תגובה
                            • מהישן לחדש
                            • מהחדש לישן
                            • הכי הרבה הצבעות


                            בא תתחבר לדף היומי!
                            • התחברות

                            • אין לך חשבון עדיין? הרשמה

                            • התחברו או הירשמו כדי לחפש.
                            • פוסט ראשון
                              פוסט אחרון
                            0
                            • דף הבית
                            • קטגוריות
                            • פוסטים אחרונים
                            • משתמשים
                            • חיפוש
                            • חוקי הפורום