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

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

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

אהרן

@אהרן
אודות
פוסטים
956
נושאים
165
קבוצות
0
עוקבים
0
עוקב אחרי
6

פוסטים

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

  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    @אהרן

    @softs
    שמח שהבנת

    chrome developer tools . . .

    F12?
    הדבקת באיזה קובץ בלשונית sources?
    ואיך מריצים את זה? זה לא נראה כמו בתמונה

    ?

    פורסם במקור בפורום CODE613 ב18/09/2015 16:52 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    @softs

    שמח שהבנת
    chrome developer tools . . .

    F12?
    הדבקת באיזה קובץ בלשונית sources?
    ואיך מריצים את זה? זה לא נראה כמו בתמונה

    פורסם במקור בפורום CODE613 ב08/09/2015 21:05 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    @אהרן

    אגב איזה ide זה? נראה ממש מגניב!

    בזכותו הבנתי!!!!
    :mrgreen: :mrgreen:

    פורסם במקור בפורום CODE613 ב08/09/2015 17:43 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

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

    אגב איזה ide זה? נראה ממש מגניב!

    פורסם במקור בפורום CODE613 ב08/09/2015 17:41 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    @דוד ל.ט.

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

    נראה שלא הובנתי
    אנסה לשאול את אותה שאלה על דוגמא סתמית
    אני רואה את זה דומה לדוגמא הלא אפשרית הבאה:

    var aaa =function() { console.log('111') }
    aaa() { console.log('222') }הרי כתבת
    
    searchFromDb('word', function(result)
      {
          if(!result)
              res.status(404).send('Not found');
          else   
              res.send(result);
      });
    

    ש[לכאורה] בדיוק כמו

    var searchFromDb = function('word', function(result)
      {
          if(!result)
              res.status(404).send('Not found');
          else   
              res.send(result);
      });
    

    אז איך אח"כ אתה מריץ אותה עם תוכן אחר בתוך הסקופ????

    פורסם במקור בפורום CODE613 ב08/09/2015 17:16 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    ברור שאני מסתכל על הקוד המקורי
    מאיפה אני מעתיק ועל מה אני שואל ?
    @דוד ל.ט.

    @אהרן

    func() שווה ל'אל תעשה כלום'?
    באותה מידה השורה היתה יכולה להיות ריקה?

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

    res.status(404).send('Not found');
    

    תוכל לראות איך ע"י עיון בקטע קוד הראשון.

    כאילו כתוב

    func = function(arg) { return arg }
    

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

    פורסם במקור בפורום CODE613 ב08/09/2015 17:09 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    משתגע
    אולי אני כ"כ מטומטם
    אבל בטוח שאני מפספס משהו מאוד בסיסי 😢

    if(index < searchVariation.length)
                        getFromDb(index++)
                    else
                        func();
    

    func() שווה ל'אל תעשה כלום'?
    באותה מידה השורה היתה יכולה להיות ריקה?

    func(value)
    

    ואז מה קורה? לאן זה נשלח/חוזר??

    לא אלאה מלומר שוב: תודה!

    פורסם במקור בפורום CODE613 ב08/09/2015 16:12 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    @דוד ל.ט.

    @אהרן
    רבי דוד

    מה עושה
    func(value)
    מריץ את הפונקציה שעכשיו רצה (רקורסיה)?

    לא, אדרבא זה יציאה מרקורסיה. הfunc זה הפרמטר השני, של הפונקציה searchFromDb. זה הcallback לapp.post.

    אני הכרתי את המחלקה של הasync והיא אכן שימושית מאוד אבל לא נדרשת למקרה שלך שהוא מקרה קלאסי של nodejs. וודאי שאין צורך באיוונטים.

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

    פורסם במקור בפורום CODE613 ב08/09/2015 15:31 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    ובכלל איך רקורסיה עוזרת בפונקציה אי סינכרונית?
    הלולאה יכולה להסתיים לפני תשובת הקול-בק הראשונה, ואז להתחיל לענות תשובות שלא לפי הסדר!

    פורסם במקור בפורום CODE613 ב08/09/2015 15:23 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    @דוד ל.ט.

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

    app.post("/", function (req, res) {
      searchFromDb('word', function(result)
      {
          if(!result)
              res.status(404).send('Not found');
          else	  
    	      res.send(result);
      });
    });
    
    
    function searchFromDb(word, func) {
        var searchVariation = { word, word, word};
    	
    		
        var getFromDb = function(index) {
            db.get(searchVariation[index], function (err, value) {
    		    if(err)
                {			
    			    if(index < searchVariation.length)
    			        getFromDb(index++)
    				else
    				    func();
    			}
    			else
    			{
    			   func(value)
    			}
    		}
        }	
    
        getFromDb(0);
    }
    

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

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

    searchFromDb('word', function(result)
    

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

    עוד משהו שאני ממש משתומם
    searchFromDb נמצא פעמיים ובכל פעם עם תוכן שונה בתוך ה-{ }.
    אז בקריאה לפונקציה איזה מהם מתבצע??

    אגב
    mat ממשיך לטעון שמוכרחים להשתמש עם asinc.

    פורסם במקור בפורום CODE613 ב08/09/2015 15:21 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    באמת ההגיון אומר כך
    אבל חיפשתי ולא מצאתי שם קבצי c.

    פורסם במקור בפורום CODE613 ב08/09/2015 14:55 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    @דוד ל.ט.

    אבל מה זה קשור לנושא האשכול?

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

    פורסם במקור בפורום CODE613 ב08/09/2015 13:53 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    כאן יש הכנסה של הפונקציות לפרוטוטייפ
    https://github.com/Level/levelup/blob/master/lib/levelup.js

    כאן יש את העדכון
    https://github.com/level/levelup/commit/187711c96c
    בו החליפו את השימוש ב-codec.js למודול codec.
    מאיפה המודול הזה נקרא? בנוד יש קבצים בינארים שמכילים הרבה, אבל פה לא רואה דבר כזה.

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

    בקיצור, יש עוד המון מה ללמוד..

    פורסם במקור בפורום CODE613 ב07/09/2015 14:52 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    אני מנסה טיפה להבין שם מה קורה
    ורואה שההמרה לבינארי מגיע מכאן

    Codec               = require('level-codec')
    

    אבל אין קובץ כזה
    אז מאיפה זה נלקח?

    פורסם במקור בפורום CODE613 ב07/09/2015 14:35 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    רבי דוד
    מה עושה
    func(value)
    מריץ את הפונקציה שעכשיו רצה (רקורסיה)?

    שוב אלף תודות!!
    כתיבה וחתימה טובה לכולם!

    פורסם במקור בפורום CODE613 ב06/09/2015 22:41 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    @דוד ל.ט.

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

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

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

    פורסם במקור בפורום CODE613 ב06/09/2015 22:40 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    @דוד ל.ט.

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

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

    פורסם במקור בפורום CODE613 ב06/09/2015 22:13 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    @softs

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

    אני ממתין לך בסבלנות
    ואתה בורח אחרי שורה אחת?
    😮
    🙂

    אז עכשיו אנשים "בונים" עלי שאני יענה? מלחיץ קצת כי אני די מרגיש בור בהרבה דברים...
    אני פשוט זוכר את עצמי מנסה להילחם באסינכרוניות ומכלה את כוחותי לריק אז נתתי עצה טובה.
    לגבי השאלה הספציפית לא העמקתי בענין, ומי לנו גדול מדוד ל.ט. שכבר נראה שלן בעומקה של שאלתך והשקיע מזמנו ללמוד את הנושא במיוחד!
    הלוואי על כולנו...
    אגב ל jquery יש אופציה ל AJAX סינכרוני שמשתמש באובייקט הגנרי של JS (http://stackoverflow.com/questions/3481970/how-does-jquerys-synchronous-ajax-request-work)

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

    פורסם במקור בפורום CODE613 ב06/09/2015 21:43 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    @דוד ל.ט.

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

    app.post("/", function (req, res) {
      searchFromDb('word', function(result)
      {
          if(!result)
              res.status(404).send('Not found');
          else	  
    	      res.send(result);
      });
    });
    
    
    function searchFromDb(word, func) {
        var searchVariation = { word, word, word};
    	
    		
        var getFromDb = function(index) {
            db.get(searchVariation[index], function (err, value) {
    		    if(err)
                {			
    			    if(index < searchVariation.length)
    			        getFromDb(index++)
    				else
    				    func();
    			}
    			else
    			{
    			   func(value)
    			}
    		}
        }	
    
        getFromDb(0);
    }
    

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

    עוד לא ישנתי משבת.. אז עוד אתעמק בתשובתך
    בנתיים מה שעולה לי מיד

    1. ה-DB המדובר מקבל רק שאילתות אי סינכרוניות.
    2. בגלל שפונקציה אי סינכרונית בתוך לולאה עלולה לגרום לשגיאות (סבירות גבוהה לפי חבר מאוד מוערך פה) אז השתמשתי במודול שנבנה בשביל זה
      https://github.com/caolan/async#each

    הקוד נראה בנתיים כך

    exports.getNikudEvent = function ( words, ee ) {
    
      var nikudim = [];
      if( typeof words == 'string' ) words = words.split();
      var cnt = -1
    
      async.each(words, function(word, next){
        db.get(word,function (err, value) {
          cnt++
          if (err) {
            console.log('Ooops cnot get nikud for: ', word) ;
          }
          if (value) value = value.split(',');
          nikudim.push(value);
            next();
          });
        }
        ,
        function() {
          ee.emit("sendAjax", nikudim);
        }
      );
    };
    
    app.post('/getajax', function( req , res) {
      var words =    req.body.sendWord;
      var indexElm = req.body.indexElm;
    
        db.getNikudEvent(words, ee);
    
        ee.once("sendAjax", function (nikudim) {
    
    	  	var obj = { nikudim: nikudim, indexElm: indexElm };
    
        	res.send(obj);
        });
    });
    

    אין לי מילים להודות לך!!

    פורסם במקור בפורום CODE613 ב06/09/2015 14:25 (+03:00)


  • איך מתמודדים עם asinc ב-javascript
    א אהרן

    @דוד ל.ט.

    לא הבנתי כל כך.
    מה הבעיה בסגנון הזה:

    app.post("/", function (req, res) {
      getDataFromDB('word', res);
    });
    
    
    function getDataFromDB(word, res) {
        db.get(word, function (err, value) {
        if (err) res.status(404).send('Not found'); 
        res.send(value);
      });
    }
    

    נסיתי ככה ועבד מצוין
    הבעיה היא שאני משתמש בעוד נתונים שבאים ב-req והתווספו עוד ועוד ארגומנטים
    אז כבר היה עדיף להעביר גם את req וגם את res, אבל אז כבר לא נשאר הגיון לחלוקה
    ככה יש קובץ app וקובץ DBmanual
    (זה גם עונה על השאלה השניה שלך)
    פשוט צריך להתרגל, אבל זה דומה
    את המשך הפונקציה אני מכניס לתוך .on
    ובפונקציה שמחפשת את המילה במקום return כותבים event.emit...

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

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

    פורסם במקור בפורום CODE613 ב06/09/2015 12:19 (+03:00)

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

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

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