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

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

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

חוקר

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

פוסטים

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

  • 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 אמר בשירות ענן ישראלי מומלץ:

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

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

    תכנות

  • קטגוריה פנימית פרטית
    ח חוקר

    @nigun אמר בשוק התכנות החרדי:

    מה רע בפרסום בנושא כללי?

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

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

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

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