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

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

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

חוקר

@חוקר
הפסקת מעקב מעקב

הפורום כעת לקריאה בלבד, לקריאה נוספת.

אודות
פוסטים
1.3k
נושאים
201
שיתופים
0
קבוצות
0
עוקבים
5
עוקב אחרי
0

פוסטים

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

  • יש אפשרות שימוש בפרמטרים בייבוא קומפוננט?
    ח חוקר
    תכנות

    @chagold
    ב require אני יודע שיש אפשרות להעביר פרמטרים, ב import עוד לא יצא לי לבדוק.
    אבל מה שחשבתי לגבי ההתמודדות שלך (ואולי בהמשך גם שלי..) האם ניתן במחשב הפיתוח לנסות ליצור תיקיית פרוייקט נוספת ולעשות לינק אסימבולי לתיקיית node_modules ולתיקיות שבתוך src, ולנסות לבודד את כל הקבצים שנוגעים לכל פרוייקט בנפרד לתוך תיקיה אחת מרוכזת שרק לתיקיה זו לא לעשות לינק אלא לכל פרוייקט יהיה בנפרד, וב vue-cli אתה פותח פרוייקט נפרד לכל פרוייקט, ואם אני צודק, זה יצור לך קבצי HTML ו JS נפרדים לכל פרוייקט והרי זה יכול להיות התחלה של פיתרון שיהיה לך לכל פרוייקט רק את הקומפוננטות שלו, ואת הליבה יהיה לך משותף לכולם.
    הייתי מנסה את זה אולי, אבל זה יהיה קצת עבודת נמלים בפעם הראשונה לבודד את הקבצים וההגדרות הפרטיות לכל פרוייקט לתיקיה אחת.
    זה הראוטינג, התפריטים העליונים, הלוגינים התצוגות ועוד.
    אבל ייתכן שכן ניתן יחסית בקלות לעשות בכל המקומות הנ"ל יבוא מתוך תיקיית ההגדרות, כיון שיחסית לתיקיית src הם יהיו קבועים בכל הפרוייקטים אותו דבר, וא"כ לא תצטרך תנאים לפני הייבוא.
    לא בטוח שזה ייפתור את הבעיה שלך שאתה צריך לפני זה נתונים מהשרת, אבל זה כן ייתן לך שמה שבטוח לפי דומיין/לינק אתה יכול ודאי להפריד מראש, ואולי לעשות HTML קונטרולר ראשי בכניסה הראשית לאתר ששולח כל משתמש לפי תשובת השרת, ללינק המיועד לפרוייקט המבוקש.


  • JWT
    ח חוקר
    תכנות

    אני משתמש בJWT לאימות משתמשים באתר שלי
    בקצרה זה עובד שיש לי secret קבוע המורכב מסטרינג של תווים וסימנים וכו' ארוך שאני יצרתי, וכל פעם שאני יוצר טוקן זה מקבל את ה secret ותוקף ונתונים אופציונאלים כגון פרטי ID של המשתמש וכו' וזה לוקח את ה secret ובאיזה שהיא דרך מצפין את המידע והתוקף.
    בעת הזדהות הוא מפרק את הטוקן מול קוד ההצפנה שנוצר מה secret שלי, ואם זה תואם הטוקן מפוענח ונעשית בדיקה שהתוקף בסדר וזה תקין
    הטוקנים לא נשמרים כלל בבסיס נתונים אלא תמיד בהשוואת הטוקן מול secret יש את המידע האם הטוקן טוב או לא, ולכן אין אפשרות למחוק טוקן, (אלא א"כ ע"י התערבות חיצונית של רשימת טוקנים חסומים וכדומה)
    עד כאן פחות או יותר מה שהבנתי
    משהו אחד לא כ"כ ברור לי, לו יכולתי לזייף טוקן, דהיינו ליצור מחרוזת שהפיענוח שלה תתאים לsecret הנמצא בשרת הנתקף, יהיה לי גישה כאילו יש בידי טוקן שנוצר באמת ע"י השרת? דהיינו לאפוקי מעוגיות שבדר"כ יש בשרת טבלה של העוגיות והתוקף והשרת בודק בטבלה האם יש לו עוגיה כזו ולא פג תוקף, ואם לא יצרתי מעולם את העוגיה זה אף פעם לא יעבוד, ב JWT אם אני מבין נכון באמת לא צריך בכלל ליצור את הטוקן, אלא הוא פתוח מתחילה ועד סוף שבמידה ויש טוקן שתואם לsecret זה יתן להמשיך הלאה
    תיאורטי אם אני יריץ תוכנה שתעבור עם לולאה ותנסה לפרוץ את השרת ע"י שליחה של מיליארדי מחרוזות של צירופי אותיות וכו' שיגיע בסוף לטוקן אמיתי זה יהיה אמור להיפרץ למרות שמעולם לא יצרתי כזה טוקן.
    הבנתי נכון?


  • ראוטר vue, ניתוב למרות הסתרת פרמטרים
    ח חוקר
    תכנות

    @chagold
    מה אתה קורה דינאמית?
    אני למשל את קובץ src/navigation/horizontal/index.js של התפריטים עשיתי כך:

    
    // eslint-disable-next-line import/no-cycle
    import kkkkkDashboard from './kkkkkDashboard'
    // eslint-disable-next-line import/no-cycle
    import kkkkkClient from './kkkkkClient'
    
    // eslint-disable-next-line import/no-mutable-exports
    let nav
    
    const { host } = window.location
    const parts = host.split('.')
    const domainLength = 3 // route1.example.com => domain length = 3
    if ((parts.length === (domainLength - 1) && host !== 'kkkkk.client') || parts[0] === 'www') {
      nav = kkkkkDashboard
    } else if (parts[0] === 'client' || host === 'kkkkk.client') {
      nav = kkkkkClient
    } else {
      nav = kkkkkDashboard
    }
    console.log(nav)
    
    // Array of sections
    export default [...nav]
    
    

    ובכל קובץ שמתי את התפריטים הרלוונטים

    export default [
      {
        title: 'דף הבית',
        icon: 'HomeIcon',
        route: 'main',
        action: 'user',
        resource: 'ACL',
      },
      {
        title: 'אודות',
        icon: '',
        route: 'about',
        action: 'user',
        resource: 'ACL',
      },
      {
        title: 'תנאי שימוש',
        icon: '',
        route: 'terms',
        action: 'user',
        resource: 'ACL',
      },
      {
        title: 'יצירת קשר',
        icon: '',
        route: 'contact_us',
        action: 'user',
        resource: 'ACL',
      },
    ]
    

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


  • גישה ל$store לקבלת ערך עבור ייבוא קומפוננט
    ח חוקר
    תכנות

    @חוקר
    אני רואה כעת שגם בגלגול בגוגל נראה שזה הכיוון של התוצאות
    א"כ נראה שאני בכיוון טוב
    https://github.com/apal21/Vue.js-VueRouter-multiple-subdomains


  • גישה ל$store לקבלת ערך עבור ייבוא קומפוננט
    ח חוקר
    תכנות

    מה שאני בדקתי כעת זה כזה דבר

    
    Vue.use(VueRouter)
    
    const component = () => import('@/views/dashboard/ecommerce/Ecommerce.vue')
    const component2 = import('@/views/dashboard/analytics/Analytics.vue')
    const router = new VueRouter({
      mode: 'history',
      base: process.env.BASE_URL,
      scrollBehavior() {
        return { x: 0, y: 0 }
      },
      routes: [
        { path: '/', redirect: { name: 'dashboard' } },
        {
          path: '/dashboard',
          name: 'dashboard',
          component: document.URL === 'http://localhost:8080/dashboard' || document.URL === 'http://mysite/dashboard' ? component2 : component,
          meta: {
            resource: 'ACL',
            action: 'official',
            title: 'ממשק הניהול',
          },
        },
        {
          path: '/list',
          name: 'list',
          // eslint-disable-next-line import/extensions
          component,
          meta: {
            resource: 'ACL',
            action: 'official',
            title: 'רשימה',
          },
        },
        {
          path: '*',
          redirect: 'error-404',
        },
      ],
    })
    

    לי היה מעניין אם אני יוכל לשלב 2 אתרים על פרוייקט אחד.
    חשבתי מראש שאני יוכל לטעון את הכל מראש, דהיינו בקובץ rout/index.js אני יכול לטעון מראש את כל הניתובים = כל הקומפוננטות, ורק את התפריטים לעשות דינאמיים, והם יהיו תלויים בכתובת הדומיין, אבל הציק לי הרעיון של טעינת כמה אתרים באתר אחד שזה יגרום לכל משתמש תעבורה מיותרת.
    ומכיוון שבנסיונות של @chagold היה נראה שלא ניתן לייבא מראש import עם נתיב דינאמי הנלקח ממשתנה, הבנתי שיהיה עלי לטעון תמיד את כל האתרים לכל לקוח שפותח את אחד האתרים, מה שכמובן מיותר ומסורבל.
    לכן ניסיתי כעת לבדוק מה קורה עם גם את הייבוא של הקומפוננטות עצמן אנסה לבצע עם תנאים, אבדוק האם הם נטענים כבר בטעינת הראשונית של הדף או לא.
    ומה שיצא לי זה כך:
    אם זה היה נטען בצורה כזו:

    const component2 = import('@/views/dashboard/analytics/Analytics.vue')
    

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

    const component = () => import('@/views/dashboard/ecommerce/Ecommerce.vue')
    

    כל זמן שלא הפעלתי ניתוב (בדוגמא שלי, כל זמן שלא עברתי אל http://localhost:8080/dashboard), התוכן עוד לא ירד לאתר בכלל, ורק בעת המעבר לניתוב המבוקש זה נטען באמצעות http://mysite/js/chunk-2d332689b.92d2c0b9.js שמוריד את תוכן לדף.
    41501367-2215-4a5a-b924-2c9cc19cc9d6-image.png

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


  • גישה ל$store לקבלת ערך עבור ייבוא קומפוננט
    ח חוקר
    תכנות

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


  • גישה ל$store לקבלת ערך עבור ייבוא קומפוננט
    ח חוקר
    תכנות

    @chagold אמר בגישה ל$store לקבלת ערך עבור ייבוא קומפוננט:

    @חוקר אמר בגישה ל$store לקבלת ערך עבור ייבוא קומפוננט:

    אבל אולי תשקול לעשות בפונקציית הראוטינג await עד שהמידע מוכן ונטען לתוך משתנה רגיל ב store ואז יהיה לך גישה לזה בכל קומפוננטה ללא המתנה.

    @חוקר אם תוכל להדגים לי איך עשית בstore.
    תודה רבה.

    אני עדיין לא כ"כ הצלחתי להתרכז מה בדיוק היה שאלתך ואם מה שאני עשיתי יפתור לך את בעיותך
    לי היו בעיות שבקומפוננטות השונות הייתי צריך את פרטי המשתמש המאוחסנים ב store והייתי צריך לעשות למגוון פעולות await וכו' ולדעת שיש לי את המידע לפעולות הבאות ועוד
    מה שעשיתי הוא כך בקובץ src/router/index.js שיניתי

    
    router.beforeEach(async (to, _, next) => {
      const isLoggedIn = isUserLoggedIn()
      if (isLoggedIn) {
        await store.dispatch('app/getUserinfo').catch(error => {
          // eslint-disable-next-line no-console
          console.error(error)
        })
      }
      if (!canNavigate(to)) {
        // Redirect to login if not logged in
        if (!isLoggedIn) return next({ name: 'auth-login' })
    
        // If logged in => not authorized
        return next({ name: 'misc-not-authorized' })
      }
    
      // Redirect if logged in
      if (to.meta.redirectIfLoggedIn && isLoggedIn) {
        const userData = getUserData()
        next(getHomeRouteForLoggedInUser(userData ? userData.role : null))
      }
    
      return next()
    })
    

    בקובץ src/store/app/index.js הוספתי ב actions

        getUserInfo(state) {
          if (state.state.userData2) {
            return state.state.userData2
          }
          state.state.userData2 = new Promise((resolve, reject) => {
            const url = '/dashboard/api/user/info'
            useJwt.axiosIns.get(url).then(response => {
              const { userData } = response.data
              localStorage.setItem('userData', JSON.stringify(userData))
              state.state.userData = response.data.userDataUser
              // eslint-disable-next-line radix,no-nested-ternary
              state.state.selectedProject = response.data.userDataUser.length > 1 && localStorage.getItem('selectedProject') ? response.data.userDataUser.find(l => l.id === parseInt(localStorage.getItem('selectedProject'))) : (response.data.userDataUser.length > 1 ? null : response.data.userDataUser[0])
              // console.log(state.state.selectedProject)
              this.dispatch('app/getProjectInfo').then(() => {
                resolve(state)
              }).catch(error => {
                reject(error)
              })
            }).catch(error => {
              reject(error)
            })
          })
          return state.state.userData2
        },
    

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

    computed: {
        sortOptions() {
          // Create an options list from our fields
          return this.fields
            .filter(f => f.sortable !== false)
            .map(f => ({ text: f.label, value: f.key }))
        },
        getSelectedProject: () => store.state.app.selectedProject,
      },
      watch: {
        getSelectedProject(val) {
          this.selectedProject = val
          this.updateSelectedDate()
        },
      },
    

    מקווה שהועלתי משהו


  • התקנתי Visual Studio 2022 כאן המקום למי שיודע דברים חשובים על IDE בכלל - דברים ששינו לי את החיים
    ח חוקר
    תכנות

    @רפאל אמר בהתקנתי Visual Studio 2022 כאן המקום למי שיודע דברים חשובים על IDE בכלל - דברים ששינו לי את החיים:

    יש את הMX (עכבר הדגל של Logitech), מאוד נהנה ממנו.

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


  • התקנת PHP ב- nginx
    ח חוקר
    תכנות

    @ass אמר בהתקנת PHP ב- nginx:

    @חוקר
    8.0.12

    אז תנסה לשנות את השורה הנ"ל ל

    server unix:/var/run/php/php8.0.12-fpm.sock;
    

  • תבניות של API
    ח חוקר
    תכנות

    @davidnead אמר בתבניות של API:

    זה מה שהתכוונתי לשאול. כלומר זו גרסת PHP. לא מענין.

    אבל יש להם כמובן גרסת צד לקוח מבוסס vue + bootstrap נקי עם התממשקות לAPI לכל הפעולות, כאשר צד שרת אתה בונה במה שתרצה (אצלי זה nodejs)


  • fetch שא"א לקבל ממנו את הנתונים
    ח חוקר
    תכנות

    @chagold אמר בfetch שא"א לקבל ממנו את הנתונים:

    הבקשה חוזרת עם סטטוס 200, אבל אני לא מצליח לגשת לנתונים.
    בקוד דלהלן יש שגיאה שא"א לקבל את הנתונים בJSON. מצ"ב תמונה (השגיאה האדומה שם למעלה בצד ימין).

    fetch('http://admin.co.il:200/index.php?p=login&user='+user.username_or_email+'&password='+user.password)
         .then(user => {
            context.commit('loginUserSuccess', user);
    	console.log(user);
         })
         .then(response => response.json())
         .then(resText => console.log(resText) )
         .catch(error => {
    	context.commit('loginUserFailure', error);
         });
    

    אתה לא מחזיר כלום מהשלב הראשון הלאה
    תנסה כך

    fetch('http://admin.co.il:200/index.php?p=login&user='+user.username_or_email+'&password='+user.password)
         .then(user => {
            context.commit('loginUserSuccess', user);
    	console.log(user);
            return user;
         })
         .then(response => response.json())
         .then(resText => console.log(resText) )
         .catch(error => {
    	context.commit('loginUserFailure', error);
         });
    

  • בירור | עבודה בתחום התכנות
    ח חוקר
    תכנות

    @יוס אמר בבירור | עבודה בתחום התכנות:

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

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


  • התממשקות ל API של ניהול קופה והדפסת הקבלה על נייר תרמי
    ח חוקר
    תכנות

    @avi-rz אמר בהתממשקות ל API של ניהול קופה והדפסת הקבלה על נייר תרמי:

    @חוקר אמר בהתממשקות ל API של ניהול קופה והדפסת הקבלה על נייר תרמי:

    אך אם כן השאלה היא איך ניתן להוציא חשבוניות/קבלות מאושרות לצרכי מס

    לא צריך לזה תוכנה מאושרת ממס הכנסה.

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


  • צד קליינט וצד שרת
    ח חוקר
    תכנות

    @chagold
    למה שלא תפצל בשרת ע"י פרוקסי או מה?
    איזה שרת זה? nginx או אפאצ'י?
    בnginx ניתן בקלות לפי הurl להגדיר תיקיית שורש אחרת או פרוקסי לשרת אחר או לפורט אחר


  • תאריך עברי ב VEU
    ח חוקר
    תכנות

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

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

    ספריה של המרת תאריך לועזי לעברי

    https://www.findbestopensource.com/product/hebcal-hebcal-js

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

    const Hebcal = require('hebcal');
    

    כמו בנוד, או שיש צורה ע"י import?


  • VUE ניטור שינויים במשתנה המאוכלס ב store
    ח חוקר
    תכנות

    יש לי דשבורד בVUE יש בו תפריט עליון המורכב מקומפוננטה המכיל רכיבי תפריט עליון
    אחד הרכיבים הוא תפריט נפתח שבו במשתמש יכול לבחור את הפרוייקט המבוקש לניהול.
    בקומפוננטה ההיא מוגדר שברגע שהוא בחר פרוויקט זה נשמר לי ב localStorage וב store (ע"י commit).
    בתצוגה עצמה אני מציג למשתמש את פרטי הפרוייקט המבוקש והאופציות הרלוונטיות.
    מזהה הפרוייקט המבוקש נלקח מתוך ה store, וזה נשלח לשרת לבקש את פרטי הפרוייקט המבוקש בעת טעינת הדף.
    הנתונים שם מתרעננים כל 5 שניות מול השרת, ולכן אם הוא שינה פרוייקט מבוקש לניהול, אזי בריענון הבא כבר יוצג לו הפרוייקט המבוקש כעת.
    אני רוצה דרך לנטר בקומפוננטה של ניהול הפרוייקט שברגע שהוא מזהה שינוי בפרוייקט המבוקש (נכון לעכשיו הוי אומר שינוי בנתון מאוחסן ב store) תרוץ הפונקציה של שאיבת הנתונים וממילא התצוגה תתעדכן בפרטים של הפרוייקט הנבחר כעת.
    אציין, בקומפוננטה של הניהול יש input של תאריך שיש בו

    @change="setSelectedDate"
    

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

    אציין שאני כבר עם ידע לא רע ב VUE.


  • תאריך עברי ב VEU
    ח חוקר
    תכנות

    אני מחפש ספריה של המרת תאריך לועזי לעברי המתאימה ל VUE
    או/ובמקביל בורר תאריכים עברי, או בורר משולב עברי ולועזי.
    מצאתי את זה https://www.npmjs.com/package/jewish-dates-core
    אבל לא הבנתי את כוונת הכותב האם זה מתאים גם ל VUE או רק לריאקט.
    תודה


  • References ב-PHP
    ח חוקר
    תכנות

    להלן הסט המלא בשיטה זו:

        getDescendantProp : function (obj, desc, returnByUndefined = false) {
            if (!desc){return obj;}
            let arr = desc.split('.');
            while (arr.length && obj !== undefined) {
                obj = obj[arr.shift()];
            }
            return obj;
        },
    
         setDescendantProp : function (obj, desc, value) {
             if (!desc){return obj = value;}
             let arr = desc.split('.');
             while (arr.length > 1) {
                 let shift = arr.shift();
                 if (typeof obj[shift] === 'undefined'){obj[shift] = {}}
                  obj = obj[shift];
                 if (typeof obj[arr[0]] === 'undefined' && arr.length > 1){obj[arr[0]] = {}}
             }
             return obj[arr[0]] = value;
        },
    
        addDescendantProp : function (obj, desc, value) {
             if (!desc){return obj = value;}
             let arr = desc.split('.');
             while (arr.length > 1) {
                 let shift = arr.shift();
                 if (typeof obj[shift] === 'undefined'){obj[shift] = {}}
                  obj = obj[shift];
                 if (typeof obj[arr[0]] === 'undefined' && arr.length > 1){obj[arr[0]] = {}}
             }
             if (!obj[arr[0]]){
                 obj[arr[0]] = 0;
             }
             return obj[arr[0]] += value;
        },
    
        addPlusDescendantProp : function (obj, desc) {
             if (!desc){ if (!obj) {obj = 0} else {obj++} return obj}
             let arr = desc.split('.');
             while (arr.length > 1) {
                 let shift = arr.shift();
                 if (typeof obj[shift] === 'undefined'){obj[shift] = {}}
                  obj = obj[shift];
                 if (typeof obj[arr[0]] === 'undefined' && arr.length > 1){obj[arr[0]] = {}}
             }
             if (!obj[arr[0]]){
                 obj[arr[0]] = 0;
             }
            obj[arr[0]] = parseInt(obj[arr[0]]);
             return obj[arr[0]]++;
        },
    
        addPropertyDescendantProp : function (obj, desc, key, value) {
             if (!desc){return obj = value;}
             let arr = desc.split('.');
             while (arr.length > 1) {
                 let shift = arr.shift();
                 if (typeof obj[shift] === 'undefined'){obj[shift] = {}}
                  obj = obj[shift];
                 if (typeof obj[arr[0]] === 'undefined' && arr.length > 1){obj[arr[0]] = {}}
             }
             if (!obj[arr[0]]){
                 obj[arr[0]] = {};
             }
            obj[arr[0]][key] = value;
             return obj[arr[0]];
        },
    
         delDescendantProp : function (obj, desc) {
             if (!desc){return obj = value;}
             let arr = desc.split('.');
             while (arr.length > 1) {
                 obj = obj[arr.shift()];
                 if (typeof obj[arr[0]] === 'undefined' && arr.length > 1){obj[arr[0]] = {}}
             }
             return delete obj[arr[0]];
        },
    
    

    דוגמאות שימוש:

    //הוספת סכום למשתנה שאינו בטוח קיים
    __.addDescendantProp(myData.IncomingCallMinutes, ApiDID + '.' + moment().format('YYYYMMDD'),  duration);
    
    //הוספת ++ למשתנה שלא בטוח שהוא קיים
    let countIp = __.addPlusDescendantProp(myData.ipBlocked, clientIp + '.' + 'count');
                                            
    //הוספת איבר והצבת ערך לאיבר, על משתנה שלא בטוח שהוא קיים
    __.addPropertyDescendantProp(id_data['Butza']['Mishnaiot'], seder_key +'.' + masecet_key +'.' + perek_key, i, [perek_obj['r' + i], __.getDescendantProp(myData.QuestionsAndAnswersMishnaiot, ProjectID + '.' + seder_key + '.' + masecet_key + '.' + perek_key + '.' + i + '.QValid') === parseInt(perek_obj['r' + i])])
    
    //מחיקת איבר פנימי                                        
    __.delDescendantProp(myData.QuestionsById, ProjectID + '.' + SelectedTrivia['id'] );

  • API לקבל את שם הבנק ושם הסניף
    ח חוקר
    תכנות

    @katz אמר בAPI לקבל את שם הבנק ושם הסניף:

    @חוקר
    כאן יש API של כל הבנקים

    https://data.gov.il/api/3/action/datastore_search?resource_id=1c5bc716-8210-4ec7-85be-92e6271955c2&

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


  • שירות ענן ישראלי מומלץ
    ח חוקר
    תכנות

    @dovid אמר בשירות ענן ישראלי מומלץ:

    @חוקר ראית מה הכסף הזה יכול לקנות...

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

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

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