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

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

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

מוטי מן

@מוטי מן
אודות
פוסטים
239
נושאים
82
קבוצות
0
עוקבים
1
עוקב אחרי
0

פוסטים

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

  • עזרה לקוד אסינכרוני בnodejs
    מוטי מןמ מוטי מן

    @צדיק-תמים קודם כל תודה על העזרה!

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

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

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

    async function callHandler(call) {
     
        const isAir = await getAir(call);
     
        console.log('isAir', isAir.join('\n'));
     
        if (isAir != false) {
            var message = '';
     
            if (isAir.length > 1) {
                const messages = isAir.map(row => `אסימון מסוג ${row.type} בשווי ${row.value}`).join(' וכן את ');
                message = `יש לכם ${isAir.length} אסימונים פעילים ${messages}`;
            } else if (isAir.length === 1) {
                const row = isAir[0];
                message = `יש לכם אסימון אחד פעיל מסוג ${row.type} בשווי ${row.value}`;
            } else {
                console.log('No matching rows found');
            }
            console.log('message', message);
     
     
            const choiceAction = await call.read([{
                type: 'text',
                data: message + `למימוש הקישו 1 להמשך הפעילות הקישו 2`
            }], 'tap', {
                max_digits: 1,
                digits_allowed: [1, 2],
                allow_empty: false,
                sec_wait: 12
            });
     
            console.log('choiceAction', choiceAction);
     
            if (choiceAction == 1) {
                call.id_list_message([{
                    type: 'text',
                    data: `אפשרות זו עדיין לא פעילה`
                }]);
     
            } else if (choiceAction == 2) {
                handlerReceive(call);
            }
        } else {
            handlerReceive(call);
        }
    }
    
    
    async function getAir(call) {
        const user = "079555555";
        //let apiEnterID = call?.ApiEnterID || "";
        //let [apiEnterIDType, apiEnterIDValue] = apiEnterID !== "" ? apiEnterID.split('-') : ["ללא", call.ApiPhone];
        let apiEnterIDValue = '0559777777';
    
        try {
            //const filePath = `${user}/air.ini`;
            //const fileContent = await fs.readFileSync(filePath, 'utf-8');
            const fileContent = `afhnrcl4b4r24k9,0559777777,0559777777,יוסי,12,זהב,1,רגיל,1
            7bun3eqdznlpk86,0559777777,0559777777,יוסי,12,זהב,1,רגיל,1`;
            const dataArray = fileContent.split('\n').filter(Boolean);
    
            const matchingRows = dataArray.filter(row => {
                const columns = row.split(',');
                return columns[2] === apiEnterIDValue;
            });
    
            if (matchingRows.length === 0) {
                console.log('No matching rows found');
                return false;
            }
            console.log('matching rows');
            const resultArray = matchingRows.map(row => {
                const columns = row.split(',');
                return {
                    IdAction: columns[0],
                    phone: columns[1],
                    idphone: columns[2],
                    name: columns[3],
                    typeIndex: columns[4],
                    type: columns[5],
                    valueIndex: columns[6],
                    value: columns[7],
                    sum: columns[8]
                };
            });
    
            return resultArray;
        } catch (error) {
            console.error('Error:', error.message);
            return false;
        }
    }
    

  • עזרה לקוד אסינכרוני בnodejs
    מוטי מןמ מוטי מן

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

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

    זה הפונקציה המלאה

    async function callHandler(call) {
    
        const isAir = await getAir(call);
    
        console.log('isAir', isAir.join('\n'));
    
        if (isAir != false) {
            var message = '';
    
            if (isAir.length > 1) {
                const messages = isAir.map(row => `אסימון מסוג ${row.type} בשווי ${row.value}`).join(' וכן את ');
                message = `יש לכם ${isAir.length} אסימונים פעילים ${messages}`;
            } else if (isAir.length === 1) {
                const row = isAir[0];
                message = `יש לכם אסימון אחד פעיל מסוג ${row.type} בשווי ${row.value}`;
            } else {
                console.log('No matching rows found');
            }
            console.log('message', message);
    
    
            const choiceAction = await call.read([{
                type: 'text',
                data: message + `למימוש הקישו 1 להמשך הפעילות הקישו 2`
            }], 'tap', {
                max_digits: 1,
                digits_allowed: [1, 2],
                allow_empty: false,
                sec_wait: 12
            });
    
            console.log('choiceAction', choiceAction);
    
            if (choiceAction == 1) {
                call.id_list_message([{
                    type: 'text',
                    data: `אפשרות זו עדיין לא פעילה`
                }]);
    
            } else if (choiceAction == 2) {
                handlerReceive(call);
            }
        } else {
            handlerReceive(call);
        }
    }
    

  • עזרה לקוד אסינכרוני בnodejs
    מוטי מןמ מוטי מן

    @צדיק-תמים זהו, שהפלט של console.log('message', message); הוא "יש לכם 3 אסימונים פעילים לחצו על 1 להשמעה חוזרת ו 2 ליציאה",

    זה רץ בתוך פונקציה async


  • עזרה לקוד אסינכרוני בnodejs
    מוטי מןמ מוטי מן

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

    if (isAir != false) {
        var message = '';
    
        if (isAir.length > 1) {
            message = `יש לכם ${isAir.length} אסימונים פעילים לחצו על 1 להשמעה חוזרת ו 2 ליציאה`;
        } else if (isAir.length === 1) {
            message = 'יש לכם אסימון אחד לחצו על 1 להשמעה חוזרת ו 2 ליציאה';
        } else {
            console.log('No matching rows found');
        }
        console.log('message', message);
    
    
        const choiceAction = await call.read([{
            type: 'text',
            data: message
        }], 'tap', {
            max_digits: 1,
            digits_allowed: [1, 2],
            allow_empty: false,
            sec_wait: 8
        });
    
        console.log('choiceAction', choiceAction);
    }
    

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

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


  • לינוקס אבונוטו קבלת נתונים משרת מרוחק באמצעות VPN של Fortinet/הרצת תהליך קבוע
    מוטי מןמ מוטי מן

    @dovid תודה! זה אכן עזר 🙂

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


  • עזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode
    מוטי מןמ מוטי מן

    @צבי-ש כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

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

    מה הסתבכת?

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


  • לינוקס אבונוטו קבלת נתונים משרת מרוחק באמצעות VPN של Fortinet/הרצת תהליך קבוע
    מוטי מןמ מוטי מן

    @צבי-ש אבל אז אני יהיה מוגבל למבנה התיקיות הנוכחי..
    יש דרך לקבל את התיקייה שבה נמצא קובץ הjs?

    עריכה: שאלתי את ג'י פי טי, וזה מה שהוא הביא לי, אנסה בהמשך בעז"ה

    const path = require('path');
    
    // נקבל את נתיב התיקייה שבה נמצא הקובץ הנוכחי
    const currentDirectory = __dirname;
    
    // נקבל את נתיב התיקייה המלא של קובץ ה-JavaScript
    const scriptPath = path.join(currentDirectory, 'index.js');
    
    console.log('Current Directory:', currentDirectory);
    console.log('Script Path:', scriptPath);
    
    

  • לינוקס אבונוטו קבלת נתונים משרת מרוחק באמצעות VPN של Fortinet/הרצת תהליך קבוע
    מוטי מןמ מוטי מן

    @צבי-ש לא, זה ללא "/" בכלל, זה קובץ שממוקם באותה תיקייה של הindex.js

    זה שהשורה שבה זה נופל

    if (await licenseVerification(call.values.idUser, call.ApiDID) === true) {
    

    וזה הפונקציה licenseVerification

    function licenseVerification(idUser, numberDid) {
        const filePath = 'authorized_numbers.ini';
        const fileContent = fs.readFileSync(filePath, 'utf-8');
        const numbersArray = fileContent.split('\n');
    
        if (numbersArray.includes(numberDid)) {
            return true;
        } else {
            return false;
        }
    }
    

  • לינוקס אבונוטו קבלת נתונים משרת מרוחק באמצעות VPN של Fortinet/הרצת תהליך קבוע
    מוטי מןמ מוטי מן

    @dovid תודה, בדיוק הייתי צריך את זה גם

    אבל יש לי בעיה, יש לי שורה בקוד שקוראת את התוכן של קובץ מסויים מהתיקייה בשרת

    const fileContent = fs.readFileSync(filePath, 'utf-8');
    

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

    ברגיל אני מריץ את זה כמשתמש ubuntu, וככה הגדרתי (גם לי זה עשה כמה שגיאות עד שהצלחתי ללמוד איך להפעיל את זה ב"ה 🙂 )

    [Unit]
    Description=node app Service
     
    [Service]
    ExecStart=/home/ubuntu/.nvm/versions/node/v14.17.0/bin/node /var/www/node/index.js
    Restart=always
    
    RestartSec=10
    SyslogIdentifier=short-name-for-logs
    User=ubuntu
     
    [Install]
    WantedBy=multi-user.target
    

  • עזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode
    מוטי מןמ מוטי מן

    @dovid כעת הצלחתי להתקין נוד נוסף ממנהל חבילות אחר, והוא גירסה 14,שכן תומכת בECMA6, וכעת אני מצליח להריץ את הקוד.

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

    הדוקר מותקן ועובד

    ubuntu@moti-16-12:/var/www/node$ docker -v
    Docker version 20.10.21, build 20.10.21-0ubuntu1~18.04.3
    

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


  • התקנת node בינארי באובנטו באמצעות הטרמינל
    מוטי מןמ מוטי מן

    תגובה: עזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode

    @dovid כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

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

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


  • עזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode
    מוטי מןמ מוטי מן

    @dovid כתב בעזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode:

    הקובץ package.json

    מה זה בדיוק הקובץ הזה? הpackage.json של הנוד?


  • עזרה בהפעלה של דוקר על ubuntu עבור פרויקט בnode
    מוטי מןמ מוטי מן

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

    הבנתי שבעזרת דוקר אני יכול לפתור את הבעיה הזו, וכן בעיות רבות נוספות (החלפת שרת בהמשך וכו'), ולכן אני מנסה לעבוד עם דוקר

    התקנתי דוקר על השרת והרצה של docker run hello-world מציגה Hello from Docker!, היינו שדוקר עובד.

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

    כתבתי את הDockerfile הלז

    FROM node:latest
    
    WORKDIR /app
    
    COPY package.json .
    
    RUN npm install
    
    COPY . .
    
    EXPOSE 8080
    
    CMD ["node", "app.js"]
    
    

    והרצתי

    docker build -t my-node-app
    

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

    Sending build context to Docker daemon  2.048kB
    Step 1/7 : FROM node:latest
    latest: Pulling from library/node
    b66b4ecd3ecf: Pull complete
    6c641d36985b: Pull complete
    ddd8544b6e15: Pull complete
    ae58c7c06d64: Pull complete
    5d0523b85d8e: Pull complete
    c3c98e94c35b: Pull complete
    927781e1b0ca: Pull complete
    b715c27f2c58: Pull complete
    Digest: sha256:73a9c498369c6e6f864359979c8f4895f28323c07411605e6c870d696a0143fa
    Status: Downloaded newer image for node:latest
     ---> fc9a8ab9999e
    Step 2/7 : WORKDIR /app
     ---> Running in e3c1cbcc4be8
    Removing intermediate container e3c1cbcc4be8
     ---> de03e0aebd8b
    Step 3/7 : COPY package.json .
    COPY failed: file not found in build context or excluded by .dockerignore: stat package.json: file does not exist
    

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


  • התייעצות קטנה/גדולה על שפת פיתוח לAPI של ימות
    מוטי מןמ מוטי מן

    @nigun הלכתי על הnodejs, הלכתי עם המדריך של רן בר-זיק
    ושמרתי כבר בסימניות את זה
    בינתיים זה הרבה יותר פשוט ממה שזה היה נראה

    תודה


  • התייעצות קטנה/גדולה על שפת פיתוח לAPI של ימות
    מוטי מןמ מוטי מן

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

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

    אני מעולם לא פיתחתי מודול חיצוני עבור ימות המשיח, וראיתי שהרבה עובדים עם PHP או nodejs, ואני יודע בערך להדפיס "Hello World" בשניהם, ולא הרבה יותר מזה,

    השאלה שלי מה יתאים יותר לדבר כזה?

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

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

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


  • עבודה בתכנות ממספר מחשבים
    מוטי מןמ מוטי מן

    תודה לכל המגיבים והממליצים,

    בסוף הלכתי על אחסון בגוגל דרייב, אבל את ההעלאה וההורדה אני מבצע עם תוכנת סנכרון צד ג' FreeFileSync (תרמתי דולר 2 דולר למפתח..), וככה אני משיג שהסינכרון הוא לכונן ספציפי במחשב,

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


  • עבודה בתכנות ממספר מחשבים
    מוטי מןמ מוטי מן

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


  • עבודה בתכנות ממספר מחשבים
    מוטי מןמ מוטי מן

    @pcinfogmach הבעיה בגוגל דרייב היא קודם כל משאבים, שמתי לב שהתוכנה שלהם גונבת משאבים כאילו זה בחינם כמו אוויר, ומעמיס על הram.

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

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

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

    @חוקר כתב על הדרופבוקס, ונראה שהוא מדלג על שני הבעיות בקלילות, אבל במקומם הוא לוקח את הנפח ומשאיר לי רק 2 ג'יגה בחינמי...

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


  • עבודה בתכנות ממספר מחשבים
    מוטי מןמ מוטי מן

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

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

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


  • עבודה בתכנות ממספר מחשבים
    מוטי מןמ מוטי מן

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

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

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

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