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

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

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

חוקר

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

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

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

פוסטים

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

  • JS מחרוזת טקסט עברית הפוך עבור מדפסת קופה
    ח חוקר
    תכנות

    @yossiz כתב בJS מחרוזת טקסט עברית הפוך עבור מדפסת קופה:

    @חוקר האם שמת לב לזה:

    @yossiz כתב בJS מחרוזת טקסט עברית הפוך עבור מדפסת קופה:

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

    צדיק אתה
    לא שמתי לב
    f2c7bf31-d2d6-4dc3-bdf6-4b2616a288b5-image.png , אכן כעת זה תקין 🙏 🙏 🙏


  • bootstrap-vue CSS יצירת משבצות
    ח חוקר
    תכנות

    תודה רבה לכל מי שעזר ולכל מי שרצה לעזור
    זה המוצר הסופי
    עשיתי את הdivים גובה לפי אחוזים.

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>תצוגה</title>
        <link
                type="text/css"
                rel="stylesheet"
                href="//unpkg.com/bootstrap@5.1.3/dist/css/bootstrap.min.css"
        />
        <link
                type="text/css"
                rel="stylesheet"
                href="//unpkg.com/bootstrap-vue@2.21.2/dist/bootstrap-vue.css"
        />
    
        <!-- Load polyfills to support older browsers -->
        <script src="https://polyfill.io/v3/polyfill.min.js?features=es2015%2CIntersectionObserver"></script>
    
        <!-- Required scripts -->
        <script src="//unpkg.com/vue@2.1.10/dist/vue.min.js"></script>
        <script src="//unpkg.com/bootstrap-vue@2.21.2/dist/bootstrap-vue.js"></script>
        <style>
            html, body { height: 100%; margin: 0; }
            body {
                background-image: url(image/background.png);
                background-repeat: no-repeat;
                background-size: cover;
                background-attachment: fixed;
                height: 100%;
            }
            .slot {
                background-color: rgba(0,0,255,.2);
                border: 3px solid #00f;
                min-width: 22%;
                height: 30%;
            }
            .card-header {
                background-color:white;
                color: #73496d;
    
            }
            .card-body {
                background-color:#73496d;
                border-radius:  0 0 0.25rem 0.25rem;
                color: white;
            }
            .my-row {
                height: 85%;
            }
    
        </style>
    </head>
    
    
    <body dir="rtl">
    <div id="app" style="height: 100%">
    
        <b-row class="my-row" no-gutters style="" >
            <b-col v-for="(val, key) in slotsA" cols="3" style="height: 30%" class="hidden-md-down">
                <b-card class="text-center mb-4" style="height: 100%">
                    <b-card-header style="font-size: 4em;height: 50%" dir="ltr">{{val !== '' ? val.name : ''}}</b-card-header>
                    <b-card-text style="font-size: 4em;height: 50%"><div style="height: 100%">{{ val !== '' && val.data ? 'חדר מספר ' + val.data : '' }}</div></b-card-text>
                </b-card>
            </b-col>
        </b-row>
        <div  style="font-size: 7em;text-align: center">{{ time }} | {{ heDate }}</div>
    </div>
    <script>
        window.app = new Vue({
            el: '#app',
            data: {
                slotsA: {
                    0: '',
                    1: '',
                    2: '',
                    3: '',
                    4: '',
                    5: '',
                    6: '',
                    7: '',
                    8: '',
                    9: '',
                    10: '',
                    11: '',
                },
                time: '00:00',
                heDate: '',
                ProjectID: window.location.search.substring(1) || 1,
                List: [],
            },
            created() {
            },
            beforeDestroy() {
            },
            computed: {
            },
            mounted() {
                this.getData()
                this.nowClock()
            },
            methods: {
                getData() {
                    fetch('').then(response => response.json()).then(response => {
                        console.log(response)
                        if (response.heDate) {
                            this.heDate = response.heDate
                        }
                        if (JSON.stringify(this.List) !== JSON.stringify(response.List)){
                            this.List = response.List;
                            this.resetSlots()
                            for (let i in response.List) {
                                const element = response.List[i];
                                if (i === 12){
                                    break;
                                }
                                this.slotsA[i] = {'name' : element.name, 'data': element.data}
                            }
                        }
                    }).catch(error => {
                        console.error(error);
                    });
                    let this2 = this;
                    setTimeout(() => { this2.getData()}, 5000)
                },
                nowClock() {
                    // this.timeClock = +' ' + new Date(Date.now()).toLocaleTimeString('en-US')
                    const today = new Date()
                    const h = today.getHours()
                    const m = today.getMinutes()
                    const s = today.getSeconds()
                    // document.getElementById('Date').innerHTML = (('0' + today.getDate()).slice(-2)) + '/' + (('0' + (today.getMonth() + 1)).slice(-2)) + '/' + (today.getFullYear())
                    this.time = `${this.checkTime(h)}:${this.checkTime(m)}:${this.checkTime(s)}`
                    if (!this.stopClock) setTimeout(this.nowClock, 1000)
                },
                checkTime(i) {
                    // eslint-disable-next-line no-param-reassign
                    if (i < 10) { i = `0${i}` } // add zero in front of numbers < 10
                    return i
                },
                resetSlots() {
                    this.slotsA = {
                        0: '',
                        1: '',
                        2: '',
                        3: '',
                        4: '',
                        5: '',
                        6: '',
                        7: '',
                        8: '',
                        9: '',
                        10: '',
                        11: '',
                    }
                },
            }
        });
    </script>
    </body>
    </html>
    

    aa59a95b-cebe-4112-a2b6-6e62da8fe7ea-image.png


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

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

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

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


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

    @davidnead
    האם אתה צריך אתרים מעוצבים ולכל לקוח אתר חדש נפרד לגמרי למטרות שלו? או שיש לך נישה מסויימת שמאחדת את האופי של הלקוחות שלך?
    אני למשל נמצא בנישה שאני מפתח מערכות טלפוניות, אבל לכל לקוח יש לי ממשק נפרד לפי הצרכים שלו, טבלאות שונות, פעולות שונות, API שונה והתממשקות לשירותים חיצוניים שונים, וכמו"כ ההתממשקות עצמה מול המערכת הטלפונית (באמצעות API של ימות המשיח).
    לפני כמה שנים חיפשתי פרימוורק שאוכל לבנות עליו ממשק טוב ומצאתי את YII2 זה בנוי בPHP, ובשונה מוורדפס שניתן לבנות איתו אתר שלם ללא לגעת בקוד, ב YII אתה חייב לגעת בקוד, זה מיועד רק למתכנתים, אבל עושה להם את החיים קלים יותר, יש בו CRUD מצויין, יש גנרטור שניתן ליצור לכל טבלה בד"ב את הקבצים הנדרשים, ולאחר יצירת המודל וכו' אתה יכול לשנות וכתוב מה שבא לך ולהשתמש במחלקות ופונקציות העזר שהפרימוורק מביא.
    בניתי עם זה הרבה ממשקים ומאות טבלאות, ולכל לקוח יש גישה רק לטבלאות שלו, ולכל לקוח אני שם פונקציות והתממשקות לשירותים שונים לפי צרכיו.
    אציין שאני כבר כמה שנים עובד עם זה, והתחלה הכרתי את היכולות הבסיסיות ביותר שלו, ועם הזמן למדתי אותו יותר ויותר לעומק, הוספתי לזה כל מיני פונקציות ושינויים בקבצי הליבה בעצמם, שידרגתי את הגנרטור, הוספתי אפשרות של ייבוא מאקסל שלא הייתה קיימת במקור, ועוד.
    אני לא מכיר את Laravel אבל אני מאמין שזה משהו בסגנון.
    אך במשך הזמן יצא לי פה ושם שהייתי צריך כל מיני אפשרויות בצד קליינט (ב YII מוטמע כבר bootstrap ו jquery) ונמשכתי לעבור לאפליקציות SPA מבודד צד לקוח וצד שרת.
    עד שהגעתי לפרוייקט אחד מורכב מאוד שהייתי צריך הרבה השקעה בצד לקוח ולכן הלכתי על vue, הלכתי על תבנית בתשלום שקניתי כאן ובהשקעה של זמן מה הצלחתי ב"ה להקים ממשק בסיסי ואני מתקדם איתו ומעשיר את הידע בVUE.
    כשהתחלתי לפתח את הממשק בVUE תיכננתי לעשות תבניות מסויימות ולהעשיר את ארגז הכלים שלי שאוכל להתחיל להקים את כל שאר המערכות שלי והממשקים שלי עם VUE בצד לקוח ו nodejs צד שרת.
    אבל למעשה אני רואה שכשמגיע לקוח ומבקש לי שהוא צריך מערכת רישום מסויים שהוא נותן לי טבלת אברכים ושגר להם הודעה והם יבחרו האם להרשם וכדומה, הכי קל לי לעשות זאת עם הכלים הישנים, אני יוצר טבלה חדשה בד"ב, באמצעות הגרנרטור אני יוצר את קבצי ה PHP, מייבא את הטבלה, יוצר משתמש חדש, מוסיף לו הרשאת גישה לטבלה, מוסיף לו לחצן של קישור לטבלה, ושולח לו פרטי גישה וסיימתי. הלקוח מקבל לינק, נכנס עם פרטי הגישה, יש לו כפתור "רישום ל...", הוא נכנס, יש לו טבלה עם אפשרות צפייה ועריכה ומחיקת והוספת שורה, סינון ומיון, יבוא וייצוא לאקסל. ואם הוא צריך לחצן לשליחת המידע לשרת חיצוני או כל תוספת אחרת אני פותח את קובץ הקונטרלר שנוצר ע"י הגנרטור, מוסיף פונקציה, ובמידת הצורך מוסיף view לזה וכו'.
    אני מרגיש שזה הכי הוגן ללקוח, שמבחינתו אין לו הרבה נפק"מ האם הייתי בונה בPHP או בnodejs כאשר מה שדרוש לו הוא סה"כ שיגור הודעה טלפונית עם ממשק צפייה בתוצאות.
    אולי אם יהיה לי יותר זמן אוכל לכתוב פוסט אחר נפרד על הרשמים שלי מPHP מול nodejs שאם שניהם אני עובד כל הזמן.
    מה באתי לומר כאן?
    הייתי בטוח שאחרי שאהיה בקי בטכנולוגיה החדשה אתחיל לפתח הכל שם, באה המציאות והוכיחה לי בפנים שזה לא בדיוק, אלא תמיד אצטרך לחשוב מה טוב וכדאי להשקיע ללקוח הנוכחי.
    ייתכן שזה באמת מהלך טוב להכיר 2 טכנולוגיות חלוקות ולהתרגל להשתמש בכל אחת לצרכים שהיא מתאימה.


  • קבלת תוכן קוקיז מאתר אחר
    ח חוקר
    תכנות

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


  • גמטריה ב php
    ח חוקר
    תכנות

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

    $num = גימטריא::אותיות_למספר('קידוש השם')
    
    
    class גימטריא
    {
        /*
        @ פונקציה סטטית ההופכת אותיות למספר הגימטריא
    
         @ הפרמטר הראשון והחובה הוא כמובן המחרוזת אותה רוצים להמיר
          @ הפרמטר השני אופציונלי ומאפשר להגדיר מפריד שכל התווים עד אליו יחושבו כאלפים
    
        */
        public static function אותיות_למספר ( $str , $alafim = FALSE )
        {
            $gimatriya = 0 ;
    
            if ( ! ($alafim === FALSE) )
            {
                $str = explode ( $alafim , $str );
    
                $gimatriya += self::גימטריא_למספר ( array_shift( $str ) ) * 1000 ;
    
                foreach ( $str as $txt )
                {
                    $gimatriya += self::גימטריא_למספר ( $txt )  ;
                }
            }else{
                $gimatriya += self::גימטריא_למספר ( $str )  ;
            }
    
            return $gimatriya ;
        }
    
    
        /*
        @ פונקציה סטטית ההופכת מספר לגימטריא
    
         @ הפרמטר הראשון והחובה הוא כמובן המספר אותו רוצים להמיר
    
         @ השני קובע כברירת מחדל שלאותיות לא יתווספו גרשיים
           → TRUE יגדיר שכן יהיה גרשיים
    
         @ השלישי קובע כברירת מחדל שהאלפים יחושבו בנפרד ולא יתקבל מחרוזת של תתתתתתתתת…
             כמו כן הוא קובע שהמילה `אלפים` תתווסף למחרוזת
          ←ניתן להגדיר בו 0 כדי לבטל כליל או אחד כדי לקבל את התוצאה כ ה' תשע"ח למשל בלי המילה אלפים
    
         @ הרביעי יקבע האם להציב אותיות מנצפכ בסוף מילה כברירת מחדל או םןץףך אם נגדיר true
        */
    
        public static function מספר_לאותיות ( $num , $gershayim = FALSE , $alafim = 2 , $םןץףך = FALSE )
        {
    
    
            $gimatriya = self::מספר_לגימטריא ( $num , $alafim ) ;
    
            if ($gershayim)
            {
                $gimatriya = explode ( ' ' , $gimatriya ) ;
    
                $i = 0 ;
                foreach ( $gimatriya as $str )
                {
                    if( $str == 'אלפים' ) {$i++; continue ; }
    
                    if( mb_strlen( $str , 'UTF-8' ) == 1 )
                    {
                        $gimatriya [$i] .= "'" ;
                    }else{
                        $gimatriya [$i] = (mb_substr ( $str , 0 , mb_strlen( $str , 'UTF-8' ) - 1 ) . '"' . mb_substr ( $str , mb_strlen( $str , 'UTF-8' )-1 ,1 ))  ;
                    }
                    $i++;
                }
    
                $gimatriya = implode ( ' ' , $gimatriya ) ;
            }
    
            if ( $םןץףך )
            {
                $replace = array ( 'מ' => 'ם' ,'נ' => 'ן' ,'צ' => 'ץ' ,'פ' => 'ף' ,'כ' => 'ך' );
    
                $str = $gimatriya ;
    
                $last_ot = mb_substr ( $str , mb_strlen( $str , 'UTF-8' )-1 ,1 ) ;
    
                $gimatriya = mb_substr ( $str , 0 , mb_strlen( $str , 'UTF-8' ) - 1 ) ;
    
                $gimatriya .= in_array ( $last_ot , array ( 'מ', 'נ', 'צ', 'פ', 'כ' ) ) ? $replace[$last_ot] : $last_ot ;
            }
    
            return $gimatriya ;
        }
    
        /*
        פונקציה סטטית המשווה גימטריא של שתי מחרוזות ומחזירה אמת בהתאמה ושקר באי התאמה
         @ הפרמטר הראשון והשני הם המחרוזות להשואה
          @ הפרמטר השלישי והרביעי יגדירו מפריד אלפים עבור המחרוזות שבפרמטר הראשון והשני
        */
        public static function גימטריא_שווה  ( $str1 , $str2 , $alafim1 =FALSE , $alafim2 =FALSE )
        {
    
            return self::אותיות_למספר ( $str1 , $alafim1 )  == self::אותיות_למספר ( $str2 , $alafim2 ) ? TRUE : FALSE ;
        }
    
    
    //מערך אם גימטריא של כל האותיות
        protected static $OTIYOT = array (
            'א' => 1 ,
            'ב' => 2 ,
            'ג' => 3 ,
            'ד' => 4 ,
            'ה' => 5 ,
            'ו' => 6 ,
            'ז' => 7 ,
            'ח' => 8 ,
            'ט' => 9 ,
            'י' => 10 ,
            'כ' => 20 ,
            'ך' => 20,
            'ל' => 30 ,
            'מ' => 40 ,
            'ם' => 40 ,
            'נ' => 50 ,
            'ן' => 50 ,
            'ס' => 60 ,
            'ע' => 70 ,
            'פ' => 80 ,
            'ף' => 80 ,
            'צ' => 90 ,
            'ץ' => 90 ,
            'ק' => 100 ,
            'ר' => 200 ,
            'ש' => 300 ,
            'ת' => 400
        );
    
    
    //פונקציה פנימית המבצעת את החישוב ממספר לאותיות
        protected static function מספר_לגימטריא ( $num , $alafim = 2 )
        {
            $num = (int)$num ;
    
            $gimatriya = '' ;
    
            switch( $num )
            {
                case 0:
                    break;
    
                case ( $num >= 1000 ) :
    
                    if ( $alafim )
                    {
                        $rest = $num % 1000 ;
                        $gimatriya .= self::מספר_לגימטריא ( ( $num -$rest ) / 1000 ) ;
                        $gimatriya .= $alafim==2? ' אלפים ' : ' ' ;
                    }else{
                        $rest = $num % 400 ;
                        foreach( range( 1, ($num -$rest)  / 400 ) as $i ) { $gimatriya .= 'ת' ; }
                    }
    
                    $gimatriya .= self::מספר_לגימטריא ( $rest , $alafim ) ;
                    break;
    
                case ( $num >= 400 ):
                    $rest = $num % 400 ;
                    foreach( range( 1, ($num -$rest)  / 400 ) as $i ){ $gimatriya .= 'ת' ; }
                    $gimatriya .= self::מספר_לגימטריא ( $rest , $alafim ) ;
                    break;
    
                case ( $num >= 100 ):
                    $rest = $num % 100 ;
                    $gimatriya .= array_search ( $num - $rest , self::$OTIYOT );
                    $gimatriya .= self::מספר_לגימטריא ( $rest , $alafim ) ;
                    break;
    
                case 15:
                    $gimatriya .=  'טו' ;
                    break;
    
                case 16:
                    $gimatriya .= 'טז' ;
                    break;
    
                case ( $num >= 10 ):
                    $rest = $num % 10 ;
                    $gimatriya .= array_search ( $num - $rest , self::$OTIYOT );
                    $gimatriya .= self::מספר_לגימטריא ( $rest , $alafim ) ;
                    break;
    
                case ( $num < 0 ):
                    break;
    
                default:
                    $gimatriya .= array_search ( $num , self::$OTIYOT );
    
            }
    
            return $gimatriya ;
        }
    
    //פונקציה פנימית המבצעת את החישוב מאותיות למספר
        protected static function גימטריא_למספר ( $str )
        {
            $str = preg_replace( "/[^א-ת]/" , '' , $str );
    
            $gimatriya = 0 ;
    
            for( $i = 0 ; $i < mb_strlen( $str , 'UTF-8' ) ; $i++ )
            {
                $gimatriya += self::$OTIYOT [mb_substr ( $str , $i , 1)] ;
            }
            return $gimatriya ;
        }
    
    }//end of class גימטריא
    

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

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

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

    איך נכון להשתמש בזה?
    const Hebcal = require('hebcal');

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

    לכאורה:

    import Hebcal from 'hebcal'
    

    לא הספקתי לעדכן, זה אכן מה שעשיתי ועובד ללא בעיות ב"ה


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

    @יוס
    פקודת ab בשורת הפקודה
    כאן יש לך הסבר
    https://stackoverflow.com/a/12732410


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

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

    אלא יפרסם כאן מודעת דרושים

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


  • התקנה ושימוש עם bootstrap-vue
    ח חוקר
    תכנות

    תנו לי לסכם רגע.
    @dovid המליץ על אנגולר JS
    האחרים תמכו ב VUE
    אם הבנתי נכון הרי שגם @dovid מסכים שזה בעצם עדיף, אלא שבמצב הספיציפי בו אני עומד ההמלצה היא על אנגולר.
    @dovid אני צודק?
    אציין שכבר הסתדרתי כבר עם VUE גם עם ה NPM, וכבר יצרתי בעמצאותו פרוייקט שלום עולם..
    ואכן חן חן ל @davidnead על מראי המקומות של השיעורים שם, הם ממש מעולים!


  • איך מתקינים php על המחשב האישי? (יש ip קבוע)
    ח חוקר
    תכנות

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


  • JS | תזמון, המתנה לזמן מסוים להרצת פעולה - אבל לא settimeout...
    ח חוקר
    תכנות

    אני לא במלונית.. רק אתן מראה מקום..
    https://www.npmjs.com/package/node-schedule
    תתקין את הספריה ואתה יוצר אובייקט שיופעל בשעה הרצויה
    יש תיעוד בשפע..
    בהצלחה והבראה נעימה


  • ישיבה על קברו, בלי סיסמא?
    ח חוקר
    תכנות

    @חוקר אמר בישיבה על קברו, בלי סיסמא?:

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

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


  • איך למצוא את השעה בישראל משרת שנמצא במקום אחר?
    ח חוקר
    תכנות

    @מנצפך אמר באיך למצוא את השעה בישראל משרת שנמצא במקום אחר?:

    @חוקר אתה יכול לכוון את הספרייה moment להשתמש באיזשהו איזור זמן מסויים (אני לא רוצה לשנות את האיזור זמן של השרת עצמו)

    על פי התיעוד:
    עליך להתקין ספריה נוספת של איזורי הזמן
    https://momentjs.com/timezone/docs/#/use-it/node-js/
    ולהגדיר איזור ברירת מחדל
    https://momentjs.com/timezone/docs/#/using-timezones/default-timezone/


  • עזרה | [אולי] דסקטופ
    ח חוקר
    תכנות

    @dovid אמר בעזרה | [אולי] דסקטופ:

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

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


  • nodejs שמירת נתונים לבסיס נתונים לפני אתחול השרת
    ח חוקר
    תכנות

    @יוסף-בן-שמעון אמר בnodejs שמירת נתונים לבסיס נתונים לפני אתחול השרת:

    https://stackoverflow.com/questions/14031763/doing-a-cleanup-action-just-before-node-js-exits

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

    
    [`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `SIGTERM`].forEach((eventType) => {
        process.on(eventType, (eventType) => {
            let data = JSON.stringify(myData.ActiveCalls);
            fs.writeFile(ActiveCallsFile, data, function (err) {
                if (err) {
                    console.log('There has been an error saving your configuration data.');
                    console.log(err.message);
                    // return;
                }
                process.removeAllListeners('exit');
                process.exit();
            });
        });
    })
    

    ולהלן הקוד בתחילת הקובץ עבור האתחול

    
    let ActiveCallsFile = './projects/bs/ActiveCalls.json';
    try {
        let loadData = fs.readFileSync(ActiveCallsFile);
        myData.ActiveCalls = JSON.parse(loadData);
    } catch (err) {
    }
    

  • המשך: בניית תוכנה של ישיבה על קברו לקול הלשון
    ח חוקר
    תכנות

    שים לב שהנתונים בתוך הדף של ישיבה על קברו באים מהשרת שלי, ולכן תצטרך לאפשר גם גישה ל https://torahapi.rishumon.net וגם גישה ל https://rishumon.net


  • ג'אווה... התחביר נכון?
    ח חוקר
    תכנות

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


  • js throw false
    ח חוקר
    תכנות

    @yossiz אמר בjs throw false:

    בעצם @dovid ו @magicode המליצו מאוד על משהו, מה לא טוב בפתרון שלהם?

    הנקודה היא פשוטה הפיתרון שהציעו לי כאן
    https://tchumim.com/post/59303
    היא לטעמי רחוקה ממה שאני צריך.
    כי אני מבצע פעולות רבות לפי הנתונים שהמאזין הקיש
    אני עושה כאן דוגמא בסיסית אבל שמשקפת מאוד חזק את צורת העבודה שלי:

        let name = read(req, res, 'f-הקלט את שמך', 'name', VOICE);
        let status = read(req, res, 't-בחר את הסטטוס האישי, לבחור הקש אחד לאברך הקש שתיים לתתלמיד חיידר הקש שלוש', 'status', MENU + '12');
        if (status === '1'){
            let yeshiva = read(req, res, 't-הקלט את שם הישיבה ולסיום הקש סולמית', 'yeshiva', VOICE);
            database.insertSQL({'name' : name,'yeshiva' : yeshiva}, 'bachurim').then(id => {
                say('t-נרשמת בהצלחה המספר האישי שלך הינו.n-' + id);
            })
        }else if (status === '2'){
            let isuk = read(req, res, 't-אברך כולל הקש אחד, נהנה מיגיע כפיו הקש שתיים', 'isuk', MENU + '12');
            let data = {'name' : name, 'isuk' : isuk};
            if (isuk === '1'){
                data['kolel'] = read(req, res, 't-הקלט את שם הכולל ולסיום סולמית', 'kolel', VOICE);
            }else if (isuk === '2'){
                data['work'] = read(req, res, 't-הקלט את שם מקום העבודה', 'work', VOICE);
    
            }
            database.insertSQL(data, 'avrechim').then(id => {
                say('t-נרשמת בהצלחה המספר האישי שלך הינו.n-' + id);
            })
        }else if (status === '3'){
            //...
        }
    

    בקוד ניתן לראות ראשית למה חשוב לי לכתוב את המשתנים בזה אחר זה לפי הסדא שאני צריך אותם ולא בתוך לולאה.
    ומצד שני ניתן לראות למה חשוב שהפונקציה read תסיים את ריצת המשך הקוד, כי כפי שזה בנוי בימות המשיח בקריאה הראשונה אין לי שום ערך, ואז אני נתן פקודה לימות שייתן לי ערך name ובקריאה השניה כבר יש לי את הname ואז אני צריך את הסטטוס האישי ולאחר מכן נתונים לפי התנאים.
    אם הקוד לא יעצור, השרת ימשיך את הקוד ואז ינסה להכניס לד"ב את הרישום למרות שהפרטים שם הם undefined וזה ייכשל ויגרום לשגיאה או לרישום לא נכון.
    בPHP לעומת זאת זה היה מאוד פשוט, כאשר ה read מקבל ערך שהוא לא קיים והוא דורש מימות המשיח להחזיר את הערך, אז עושים exit() וחסל, השרת סיים לעבוד כעת.
    ב nodejs נתקעתי, כי השרת כן ממשיך.
    אז יש פיתרון, לעשות כך:

            let yeshiva = read(req, res, 't-הקלט את שם הישיבה ולסיום הקש סולמית', 'yeshiva', VOICE);
            if (typeof yeshiva !== 'string'){
                return false;
            }
            database.insertSQL({'name' : name,'yeshiva' : yeshiva}, 'bachurim').then(id => {
                say('t-נרשמת בהצלחה המספר האישי שלך הינו.n-' + id);
            })
    

    (אני יודע שניתן גם לעשות אחרת:

            let yeshiva = read(req, res, 't-הקלט את שם הישיבה ולסיום הקש סולמית', 'yeshiva', VOICE);
            if (typeof yeshiva === 'string'){
                database.insertSQL({'name' : name,'yeshiva' : yeshiva}, 'bachurim').then(id => {
                    say('t-נרשמת בהצלחה המספר האישי שלך הינו.n-' + id);
                })
            }
    

    אבל אז יש יכול להיווצר מידי הרבה הזחות, ולפעמים על כלום כמו בדוגמא כאן:
    https://tchumim.com/post/59315
    ולכן יותר קל לעשות תנאי שעוצר מאשר תנאי להמשיך)
    ולמעשה הפיתרון מסרבל, כי זה מוסיף שורות קוד מיותרות ולא תמיד אני זוכר להשים אותו, והיה לי כבר בעיה במערכת של תרומות שאספתי נתונים ובצעתי חיוב מול שרת API של חברת סליקה, ושכחתי להשים return false והחיוב בוצע מיד לאחר קליטת נתון הCVV לפני מספר התשלומים (בעצם זה ביצע כל פעם ניסון חיוב, רק שהוא נכשל מצד חברת האשראי, אך מספר התשלומים שהינו אופצינאלי כבר לא היה מעכב, וזה בוצע כעיסקא בתשלום אחד).
    ולכן אני כן רוצה משהו שמזכיר את ה exit של PHP.
    וכאן מצאתי פתאום את הפתרון של ה throw false.
    ולכן חשוב לדעת האם באן שהוא אני ימצא את עצמי שזה לא תיקני ולא טוב.


  • הבעיה היא לא הgoto
    ח חוקר
    תכנות

    צורת הדברים כבר נידונה והתבשלה כאן
    https://tchumim.com/post/59303
    ועדיין אין לי פיתרון לשלוחה שאמורה להיות עם תפריטים ותפריטי משנה וכו'.
    אציין שלכן אני עדיין לא עברתי לצורת העבודה של מערך נתונים נדרשים, כי לרוב אני מתחיל עם תפריטים וכו, ורק בשלב כלשהוא יש לי למשל רישום שאני עובד כעת לקבל רשימת נתונים בזה אחר זה.
    ולכן יותר נוח לי לעבוד על ידי שאני דורש נתון נתון ומבצע פקודות לפי הנתון שקיבלתי

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 28
  • 29
  • 5 / 29
  • התחברות

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