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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. משתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?

משתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?

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

    @צבי-ש כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

    מאות/אלפי קריאות ביום לsqlite

    זה כלום (אבל גם הכלום הזה מיותר, עיין להלן)

    כמו המסד נתונים רק בקובץ שזה קריאה יותר זריזה, ופחות כבדה

    https://www.sqlite.org/fasterthanfs.html
    הם טוענים שהם יותר מהירים ממערכת הקבצים
    אבל בסדר גודל שלך ההבדל הוא אינפיניטסימלי (ובעברית: לא רלוונטי כלל)

    או שבכלל יש דרך 4 שחברי הפורום יוכלו להחכים אותי בה?

    סתם מחשבה שעולה לי, תוכל לעשות פוקנציה שמרעננת את ההגדרות מקובץ ההגדרות או מסד הנתונים, איזה מהם שיהיה, לא משנה, ותעשה URL בשרת שקריאה אליו יפעיל את הפוקנציה

    צבי-שצ מחובר
    צבי-שצ מחובר
    צבי-ש
    כתב ב נערך לאחרונה על ידי צבי-ש
    #3

    @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

    סתם מחשבה שעולה לי, תוכל לעשות פוקנציה שמרעננת את ההגדרות מקובץ ההגדרות או מסד הנתונים, איזה מהם שיהיה, לא משנה, ותעשה URL בשרת שקריאה אליו יפעיל את הפוקנציה

    את זה ניסתי להגדיר בלשוני כאן

    @צבי-ש כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

    3 מסד נתונים/ קובץ, אבל לא לקרוא להם כל פעם, אלא בתחילת הקוד לאתחל את המשתנים, ואם יש שינוי, אני יקריס את הדוקר, ויעלה אותו שוב.
    הפרויקט מריץ flask, ולכן אם אני טוען מראש משהו מלפני שמתחיל האפליקציה של flask עצמה, הוא לא יטען אותו בכל ריצה מחדש אלא רק באיתחול.

    אבל איך אני יכול לרענן את ההגדרות?
    ההגדרות הם במשתנים,אני פשוט יגדיר אותם מחדש?

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

    @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

    הם טוענים שהם יותר מהירים ממערכת הקבצים

    תודה על העדכון, זה ממש משנה לי את הצורת עבודה, לטובה.

    כיף לגלות דברים חדשים.
    חוק ה-50-50-90: בכל פעם שיש סיכוי של 50-50 שמשהו יעבוד, יש סיכוי של 90 אחוז שהוא לא. מקור

    yossizY תגובה 1 תגובה אחרונה
    0
    • צבי-שצ צבי-ש

      @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

      סתם מחשבה שעולה לי, תוכל לעשות פוקנציה שמרעננת את ההגדרות מקובץ ההגדרות או מסד הנתונים, איזה מהם שיהיה, לא משנה, ותעשה URL בשרת שקריאה אליו יפעיל את הפוקנציה

      את זה ניסתי להגדיר בלשוני כאן

      @צבי-ש כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

      3 מסד נתונים/ קובץ, אבל לא לקרוא להם כל פעם, אלא בתחילת הקוד לאתחל את המשתנים, ואם יש שינוי, אני יקריס את הדוקר, ויעלה אותו שוב.
      הפרויקט מריץ flask, ולכן אם אני טוען מראש משהו מלפני שמתחיל האפליקציה של flask עצמה, הוא לא יטען אותו בכל ריצה מחדש אלא רק באיתחול.

      אבל איך אני יכול לרענן את ההגדרות?
      ההגדרות הם במשתנים,אני פשוט יגדיר אותם מחדש?

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

      @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

      הם טוענים שהם יותר מהירים ממערכת הקבצים

      תודה על העדכון, זה ממש משנה לי את הצורת עבודה, לטובה.

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

      @צבי-ש כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

      את זה ניסתי להגדיר בלשוני כאן
      @צבי-ש כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

      3 מסד נתונים/ קובץ, אבל לא לקרוא להם כל פעם, אלא בתחילת הקוד לאתחל את המשתנים, ואם יש שינוי, אני יקריס את הדוקר, ויעלה אותו שוב.
      הפרויקט מריץ flask, ולכן אם אני טוען מראש משהו מלפני שמתחיל האפליקציה של flask עצמה, הוא לא יטען אותו בכל ריצה מחדש אלא רק באיתחול.

      האמת שלא הבנתי בדיוק את כוונתך בשורה זו:

      .
      הפרויקט מריץ flask, ולכן אם אני טוען מראש משהו מלפני שמתחיל האפליקציה של flask עצמה, הוא לא יטען אותו בכל ריצה מחדש אלא רק באיתחול.

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

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

      כן, בדיוק כך

      זה לא יהיה מוגבל רק לתוך הפונקציה ההגדרה של המשתנים?

      אם אתה לא מרענן אותם בכל קריאה לפונקציה שמשתמשת בהם, בהכרח הם לא לוקליים לפוקנציה ההיא, אלא הם ב-scope שהוא רמה אחד למעלה מהפוקנציה שמשתמשת בהם, אז תעשה ב-scope ההוא עוד פונקציה שמעדכנת אותם במקרה הצורך

      גוט שאבעס 🙂

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

      צבי-שצ תגובה 1 תגובה אחרונה
      3
      • yossizY yossiz

        @צבי-ש כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

        את זה ניסתי להגדיר בלשוני כאן
        @צבי-ש כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

        3 מסד נתונים/ קובץ, אבל לא לקרוא להם כל פעם, אלא בתחילת הקוד לאתחל את המשתנים, ואם יש שינוי, אני יקריס את הדוקר, ויעלה אותו שוב.
        הפרויקט מריץ flask, ולכן אם אני טוען מראש משהו מלפני שמתחיל האפליקציה של flask עצמה, הוא לא יטען אותו בכל ריצה מחדש אלא רק באיתחול.

        האמת שלא הבנתי בדיוק את כוונתך בשורה זו:

        .
        הפרויקט מריץ flask, ולכן אם אני טוען מראש משהו מלפני שמתחיל האפליקציה של flask עצמה, הוא לא יטען אותו בכל ריצה מחדש אלא רק באיתחול.

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

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

        כן, בדיוק כך

        זה לא יהיה מוגבל רק לתוך הפונקציה ההגדרה של המשתנים?

        אם אתה לא מרענן אותם בכל קריאה לפונקציה שמשתמשת בהם, בהכרח הם לא לוקליים לפוקנציה ההיא, אלא הם ב-scope שהוא רמה אחד למעלה מהפוקנציה שמשתמשת בהם, אז תעשה ב-scope ההוא עוד פונקציה שמעדכנת אותם במקרה הצורך

        גוט שאבעס 🙂

        צבי-שצ מחובר
        צבי-שצ מחובר
        צבי-ש
        כתב ב נערך לאחרונה על ידי צבי-ש
        #5

        @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

        אם אתה לא מרענן אותם בכל קריאה לפונקציה שמשתמשת בהם, בהכרח הם לא לוקליים לפוקנציה ההיא, אלא הם ב-scope שהוא רמה אחד למעלה מהפוקנציה שמשתמשת בהם, אז תעשה ב-scope ההוא עוד פונקציה שמעדכנת אותם במקרה הצורך

        אבל אם הפונקציה תגדיר אותם מחדש ההגדרה לא יהיה שייך לפונקציה עצמה?
        הוא יצא גם לסקופ?

        @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

        גוט שאבעס

        גוטע וואך

        כיף לגלות דברים חדשים.
        חוק ה-50-50-90: בכל פעם שיש סיכוי של 50-50 שמשהו יעבוד, יש סיכוי של 90 אחוז שהוא לא. מקור

        yossizY תגובה 1 תגובה אחרונה
        0
        • צבי-שצ צבי-ש

          @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

          אם אתה לא מרענן אותם בכל קריאה לפונקציה שמשתמשת בהם, בהכרח הם לא לוקליים לפוקנציה ההיא, אלא הם ב-scope שהוא רמה אחד למעלה מהפוקנציה שמשתמשת בהם, אז תעשה ב-scope ההוא עוד פונקציה שמעדכנת אותם במקרה הצורך

          אבל אם הפונקציה תגדיר אותם מחדש ההגדרה לא יהיה שייך לפונקציה עצמה?
          הוא יצא גם לסקופ?

          @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

          גוט שאבעס

          גוטע וואך

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

          @צבי-ש אביא לך דוגמה:
          קובץ settings.py

          _settings = db.get_settings()
          
          def get(setting):
              return _settings[setting]
          
          def refresh_settings():
              global _settings
              _settings = db.get_settings()
          

          קובץ callback.py

          import settings
          
          def calculate_callback_time(call_time):
              night_hours = settings.get("night_hours")
              return ... # your logic
          

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

          צבי-שצ A 2 תגובות תגובה אחרונה
          3
          • yossizY yossiz

            @צבי-ש אביא לך דוגמה:
            קובץ settings.py

            _settings = db.get_settings()
            
            def get(setting):
                return _settings[setting]
            
            def refresh_settings():
                global _settings
                _settings = db.get_settings()
            

            קובץ callback.py

            import settings
            
            def calculate_callback_time(call_time):
                night_hours = settings.get("night_hours")
                return ... # your logic
            
            צבי-שצ מחובר
            צבי-שצ מחובר
            צבי-ש
            כתב ב נערך לאחרונה על ידי
            #7

            @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

            @צבי-ש אביא לך דוגמה:
            קובץ settings.py

            _settings = db.get_settings()
            
            def get(setting):
                return _settings[setting]
            
            def refresh_settings():
                global _settings
                _settings = db.get_settings()
            

            קובץ callback.py

            import settings
            
            def calculate_callback_time(call_time):
                night_hours = settings.get("night_hours")
                return ... # your logic
            

            תודה רבה.

            כיף לגלות דברים חדשים.
            חוק ה-50-50-90: בכל פעם שיש סיכוי של 50-50 שמשהו יעבוד, יש סיכוי של 90 אחוז שהוא לא. מקור

            תגובה 1 תגובה אחרונה
            0
            • A מנותק
              A מנותק
              aaron
              כתב ב נערך לאחרונה על ידי
              #8

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

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

              aaron.tchumim@gmail.com
              Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

              ווצאפ API - תיעוד שירות API לא רשמי.

              clickoneC תגובה 1 תגובה אחרונה
              2
              • yossizY yossiz

                @צבי-ש אביא לך דוגמה:
                קובץ settings.py

                _settings = db.get_settings()
                
                def get(setting):
                    return _settings[setting]
                
                def refresh_settings():
                    global _settings
                    _settings = db.get_settings()
                

                קובץ callback.py

                import settings
                
                def calculate_callback_time(call_time):
                    night_hours = settings.get("night_hours")
                    return ... # your logic
                
                A מנותק
                A מנותק
                aaron
                כתב ב נערך לאחרונה על ידי
                #9

                @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                @צבי-ש אביא לך דוגמה:
                קובץ settings.py

                _settings = db.get_settings()
                
                def get(setting):
                    return _settings[setting]
                
                def refresh_settings():
                    global _settings
                    _settings = db.get_settings()
                

                קובץ callback.py

                import settings
                
                def calculate_callback_time(call_time):
                    night_hours = settings.get("night_hours")
                    return ... # your logic
                

                https://github.com/dribia/driconfig
                אני משתמש בזה במעל 90% מהפרויקטי פייתון שלי.
                הרווח הגדול הוא שאתה מקבל ולידציה על ההגדרות + type hints

                aaron.tchumim@gmail.com
                Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

                ווצאפ API - תיעוד שירות API לא רשמי.

                תגובה 1 תגובה אחרונה
                1
                • A aaron

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

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

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

                  @aaron כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                  ואחרי עריכה - ריסטארט לאפליקציה.

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

                  אני מאד מתחבר דווקא להצעה של @yossiz לעשות לינק שמרפרש את ההגדרות מהDB (או מכל מקור אחר)

                  אין טסט כמו פרודקשן.

                  המייל שלי urivpn@gmail.com

                  A תגובה 1 תגובה אחרונה
                  3
                  • clickoneC clickone

                    @aaron כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                    ואחרי עריכה - ריסטארט לאפליקציה.

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

                    אני מאד מתחבר דווקא להצעה של @yossiz לעשות לינק שמרפרש את ההגדרות מהDB (או מכל מקור אחר)

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

                    @clickone כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                    (או מכל מקור אחר)

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

                    תשתמש ב gunicorn כדי שיטפל ב graceful shutdown. וLB כדי שישאר סרוויס זמין בזמן הזה, אבל באמת לא חושב שזה חשוב לך עד כדי כך..

                    כמובן שלטעון מהDB זה גם אפשרות, לדעתי צריך לטפל בsignals בכל מקרה, כך שאין סיבה להשתמש בDB ולא בקובץ הגדרות.

                    aaron.tchumim@gmail.com
                    Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

                    ווצאפ API - תיעוד שירות API לא רשמי.

                    A תגובה 1 תגובה אחרונה
                    0
                    • A aaron

                      @clickone כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                      (או מכל מקור אחר)

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

                      תשתמש ב gunicorn כדי שיטפל ב graceful shutdown. וLB כדי שישאר סרוויס זמין בזמן הזה, אבל באמת לא חושב שזה חשוב לך עד כדי כך..

                      כמובן שלטעון מהDB זה גם אפשרות, לדעתי צריך לטפל בsignals בכל מקרה, כך שאין סיבה להשתמש בDB ולא בקובץ הגדרות.

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

                      @aaron כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                      @clickone כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                      (או מכל מקור אחר)

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

                      תשתמש ב gunicorn כדי שיטפל ב graceful shutdown. וLB כדי שישאר סרוויס זמין בזמן הזה, אבל באמת לא חושב שזה חשוב לך עד כדי כך..

                      כמובן שלטעון מהDB זה גם אפשרות, לדעתי צריך לטפל בsignals בכל מקרה, כך שאין סיבה להשתמש בDB ולא בקובץ הגדרות.

                      @צבי-ש כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                      העניין הוא שאני רוצה לערוך שינויים באמצע דרך אתר חיצוני.

                      ככל שזה הסיבה, אז ודאי שלשמור בDB. אתה תחשוף API כדי לעדכן את המידע ובאותו קריאה גם לטעון את המידע החדש.

                      aaron.tchumim@gmail.com
                      Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

                      ווצאפ API - תיעוד שירות API לא רשמי.

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


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

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

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