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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
D

davidnead

@davidnead
אודות
פוסטים
382
נושאים
40
קבוצות
0
עוקבים
3
עוקב אחרי
0

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • פרומיסים לוקחים זמן?
    D davidnead

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

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

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

    async function doSomthimg() {
      let a = 0;
      for (let i = 0; i < 100; i++) a++;
      return a;
    }
    
    router.get("/", async (req, res, next) => {
      let result = await doSomthimg();
      res.send(result);
    });
    

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

    לעומת

    function doSomthimg() {
      let a = 0;
      for (let i = 0; i < 100; i++) a++;
      return a;
    }
    
    router.get("/", async (req, res, next) => {
      let result = doSomthimg();
      res.send(result);
    });
    

    (את הasync בשורה 7 בדוגמה האחרונה השארתי בכונה).

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

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


  • מה הקוי אורך-רוחב לחישוב זמני היום?
    D davidnead

    @צדיק-תמים אמר במה הקוי אורך-רוחב לחישוב זמני היום?:

    @davidnead הפרויקט לא מקבל שום נתון מיוזר, אני צריך מראש להכניס רשימה של מיקומים
    כאשר מגיע (X דקות לפני) זמן מסוים במיקום מסוים - אני שולח צינתוק לרשימת צינטוקים בימות המשיח באמצעות הAPI שלהם.

    ראה הקישור בהודעתי הקודמת אחרי העריכה.


  • מה הקוי אורך-רוחב לחישוב זמני היום?
    D davidnead

    @צדיק-תמים אז מה אתה כן רוצה?
    אתה רוצה רשימה מוכנה של מיקומים, לא תלויית API חיצוני, זה אני מבין.
    לא איכפת לך מהיכן לקבל, או שאתה רוצה איזה שיקול הלכתי או אחר בהגדרת הרשימה?
    סתם רשימתמיקומים אפשר למצוא בגוגל פשוט, למשל כאן:
    https://simplemaps.com/data/world-cities
    40 אלף. מספיק?

    שאלה חשובה נוספת, מהיכן מגיעה ה"בקשה" למיקומים? מי היוזר שמבקש עיר שעל פי בקשתו אתה צריך לספק פרטים?
    כי יש סיכוי שהיוזר עצמו יכול לספק בחלק מהמקרים את הנתון הזה. (למשל, הדפדפן, ככל ויש חיישן מיקום ואישור גישה למיקום, או אפילו ללא מיקום - על פי IP - אבל תלוי API חיצוני, ככל שאתה רוצה מיקום נוכחי)


  • משתני סביבה, קובץ ENV, או קובץ JSON
    D davidnead

    @yossiz אמר ביצירת פרויקט nodeJS שיבקש מהמשתמש קונפיג בהרצה הראשונה:

    כבר ענו, אבל מכיון שכבר כתבתי את התשובה שלי אוסיף אותה לערימה...

    @צדיק-תמים
    א) הזכרת בשאלה ששם הקובץ יהיה config.env, זה מעלה בי חשד שאתה מתכנן שזה יהיה בפורמט של קבצי .env. אני מציע להיצמד ל-json כי זה פורמט שנתמך בצורה מובנית ב-JS וקל לכתוב אותו לקובץ.

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

    אם משתמש בקובץ JSON יש לזה מעלה נוספת, אין צורך לתת למשתמש PROMPT, לא להכביד עליו ולא עליך, אתה מניח קובץ קונפיג מוכן ומאפשר לו לשנות שם את ההגדרות, שידרסו את ברירת המחדל שלך (אני מניח שזו לא משימה מורכבת למי שאמור לדעת להריץ NPM משורת פקודה).

    יש לזה יתרון נוסף, אתה יכול לקבל ממני קוד מוכן שעושה את זה 😉


  • vue components, frame for childs components
    D davidnead

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

    אם הוא באמת צריך גמישות רבה למגוון תרחישים (כמו שכנראה אתה הנחת) הפתרון היותר סביר הוא כנראה SLOT. ושוב, הכל מתוך ניחוש מה הצרכים שלו.


  • תאריך עברי ב VEU
    D davidnead

    @chagold אמר בתאריך עברי ב VEU:

    @davidnead אמר בתאריך עברי ב VEU:

    טוב, הכנתי משהו. הוא מבוסס vutify כי זה נוח, יותר יפה, וחוסך לי עבודה. אבל זה לא מסובך להמיר אותו לVUE רגיל, זה רק דורש מעט השקעה בCSS.
    לא השקיע יותר מידי בדינמיות, אירועים שונים וכדומה. אם מישהו מעונין להשתתף ולתרום אשקיע טיפה יותר כדי שיהיה בסיס סביר להעלות לגיט, ונשפר את החבילה יחד.

    הגעתי לצורך הזה אצלי.
    כשיצא לך לשתף בגיטאהב כנ"ל, אשמח. תודה.

    כאמור, זה בvutify, ובינתיים גם הטמעתי את זה יותר בפרוייקט שלי. אם יש שמעוניינים להשתתף ביצירת חבילה מתאימה לשימוש אעלה את זה.


  • הסרת מאזין לאלמנט (mouseenter) - מציאת הhandleEvent
    D davidnead

    @צדיק-תמים אמר בהסרת מאזין לאלמנט (mouseenter) - מציאת הhandleEvent:

    @מוטי-אורן אני לא צריך לעצור את ההתפשטות של האירוע הזה אלא לעצור אירועים אחרים...

    It also does not prevent immediate propagation to other event-handlers. If you want to stop those, see .stopImmediatePropagation()

    ולמעשה גם עם stopImmediatePropagation:

    const element = document.querySelector('[class="V6 CL V2"]')
    element.addEventListener("mouseenter", stopEvents);
    function stopEvents() {
        element.stopImmediatePropagation()
    }
    

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

    הקוד לא עבד לך כי

    1. ניסית לקרוא לelement בלי שהוא קיים בתוך הפונקציה שלך.
    2. stopImmediatePropagation זו פונקציה של הevent ולא של הelementt. ולכן הקוד התקין הוא:
    const element = document.querySelector('[class="V6 CL V2"]')
    element.addEventListener("mouseenter", stopEvents);
    function stopEvents(event) {
        event.stopImmediatePropagation()
    }
    
    

  • לימוד שפה נוספת מעבר לJS - נצרך?
    D davidnead

    @dovid אמר בלימוד שפה נוספת מעבר לJS - נצרך?:

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

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


  • יצירת מערכת רישום ותיעוד
    D davidnead

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


  • תיעוד תוכן צפוי של ארגומנט אובייקט
    D davidnead

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


  • nodejs הגדרת פונקציית השרת כ async
    D davidnead

    זו הדרך שאני משתמש באקספרס, ולמיטב הבנתי זו דרך המלך:

    צורה 1:

    router.get("/", (req, res, next) => {
      getAllUsers()
        .then((users) => {
          res.status(200).json(users);
        })
        .catch((err) => {
          const { code, message } = err;
          res.status(err.status).json({ code, message });
        });
    });
    

    צורה 2:

    router.get("/", async (req, res, next) => {
      try {
        const users = await getAllUsers();
        res.status(200).json(users);
      } catch (err) {
        const { code, message } = err;
        res.status(err.status).json({ code, message });
      }
    });
    

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

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

    יש אפשרות להוסיף פונקציה אחידה לטיפול בשגיאות שתקרא רק במקרה (הלא רצוי) של שגיאה שלא נלכדה במקום אחר, כדי לא להקריס את השרת. בצורה כזו:

    process.on("uncaughtException", (err) => {
      console.error("There was an uncaught error", err);
      //   process.exit(1); //mandatory (as per the Node.js docs)
    });
    

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


  • איזה ספרייה/פריימוורק (מה זה בכלל, בעצם?...) מומלץ ללמוד כיום?
    D davidnead

    @צדיק-תמים אמר באיזה ספרייה/פריימוורק (מה זה בכלל, בעצם?...) מומלץ ללמוד כיום?:

    @davidnead יש התעדכנות בשעת הצורך, ויש שמחייבים שלא לומר מכריחים אותך לעקוב אחרי כל עדכון על ידי חוסר תאימות לאחור...

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


  • איזה ספרייה/פריימוורק (מה זה בכלל, בעצם?...) מומלץ ללמוד כיום?
    D davidnead

    @dovid אמר באיזה ספרייה/פריימוורק (מה זה בכלל, בעצם?...) מומלץ ללמוד כיום?:

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

    נ.ב. אני לא מכיר טוב שום פרימוורק מהנידונים פה.

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

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

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


  • תאריך עברי ב VEU
    D davidnead

    @zvizvi אמר בתאריך עברי ב VEU:

    אני גם צריך כזה. אולי אכין אחד (לא מתחייב על תאריך יעד מוגדר...)

    בדיוק אתמול ראיתי את דף הבית החדש המדהים שלך. ראיתי שיש שם בורר תאריכים עברי, עושה רושם שבנית אותו לבד. אני מבין שזה לא בVUE אז לא עונה על צרכנו, אבל אולי אם תרצה לתרום את הקוד זה יכול לקצר את הדרך.
    משתמש בHEBCAL?


  • תאריך עברי ב VEU
    D davidnead

    @חוקר אמר בתאריך עברי ב VEU:

    @davidnead אמר בתאריך עברי ב VEU:

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

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

    😞 קיויתי לבשורה טובה יותר.

    למעשה, כמעט הרמתי את הכפפה להכין אחד לבד ולעשות ממנו קוד פתוח.
    הסיבה שירדתי מזה כי אני משתמש בVUETIFY בשביל רכיבים מוכנים, ואני לא חושב שזה יכול להתאים לקומפוננט עצמאי בלתי תלוי. ולהתחיל ליצור את כל הרכיבים מאפס - זה כבר יותר מידי עבודה, ומיותרת. יתכן שיש ספריות רכיבים לVUE שהן יותר עצמאיות וניתנות לשילוב בסתם ישום, אני טרם מצאתי אחד לVUE2 כזה עם תמיכה טובה בRTL, וגם אם כן - לא יודע אם אלך לטרוח ללמוד אותו כעת.

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


  • תאריך עברי ב VEU
    D davidnead

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


  • תאריך עברי ב VEU
    D davidnead

    @חוקר אני רואה שחיפשת קומפוננט מוכן של בורר לוח שנה עברי לVUE. אני מניח שלא מצאת. האם בנית בסוף אחד כזה ותרצה לתרום אותו לאחרים?


  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    @www אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

    @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

    שיטס - זה גדול עליו.

    מה הכוונה?

    @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

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

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

    מדוב בקובץ אקסל קיים, מאוד מאוד מורכב. עושה עבודה שלא מביישת שום ספריה בNPM (למעשה יש שם כמה ספריות שעושות עבודה דומה, חלקית לפחות). הוא משתמש בתאים בתור משתנים ובתאים שמכילים נוסחאות מתור פונקציות, קובץ ענק ומושקע מאוד. הקובץ הזה אין עיקרו נתונים אלא הוא סוג של תכנה, מקבל קלט ומחזיר קלט. הוא גם כבד מאוד (130MB). שיטס לא מצליח לפתוח אותו, וזה לא מפתיע. גם ספריות שונות שניסיתי לסוגים מסוימים של פתרונות לא הצליחו להתמודד עם הקובץ הספציפי הזה.
    לכו נראה לי הפתרון הכי הגיוני (בהתאם למציאות הלא הגיונית...) זה להפעיל באיזו צורה את האקסל עצמו, הכיוון של @yossiz נשמע טוב אם יש לו מימושים.


  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    האם זה יכול לעזור לי?
    אם אני מבין נכון מדובר בסוג של תוסף שמאפשר לעבוד עם JS מתוך האקסל כמו סוג של תחליף לVBA ולא להתממשק מבחוץ.


  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    @yossiz אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

    @davidnead אפשר להריץ אקסל ברקע ולשלוט עליו באמצעות כל שפה שתומכת באוטומציה דרך OLE Automation.
    אולי תוכל לעשות את זה מ-JS דרך ספרייה זו: https://www.npmjs.com/package/win32ole
    (הדוגמה ב-README הוא על אקסל)

    נשמע כיוון טוב, אבל נראה שזה מתאים רק לwin32

  • 1 / 1
  • התחברות

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

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