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

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

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

יוסף בן שמעון

@יוסף בן שמעון
אודות
פוסטים
982
נושאים
105
שיתופים
0
קבוצות
0
עוקבים
5
עוקב אחרי
0

פוסטים

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

  • האזנה לערוץ בתוך כמה פונקציות במקביל
    י יוסף בן שמעון

    @nigun אמר בהאזנה לערוץ בתוך כמה פונקציות במקביל:

    האם אני עובד נכון או לא?

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

    תכנות

  • האזנה לערוץ בתוך כמה פונקציות במקביל
    י יוסף בן שמעון

    @nigun אני מדבר על משהו כזה

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    var data string
    
    func main() {
    	c := make(chan string)
    
    	go func(c chan string) {
    		time.Sleep(2 * time.Second)
    		data = "foo"
    		close(c)
    
    	}(c)
    
    	go func() {
    		<-c
    		fmt.Println(data)
    
    	}()
    	go func() {
    		<-c
    		fmt.Println(data)
    
    	}()
    
    	time.Sleep(4 * time.Second)
    }
    
    
    תכנות

  • האזנה לערוץ בתוך כמה פונקציות במקביל
    י יוסף בן שמעון

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

    תכנות

  • האזנה לערוץ בתוך כמה פונקציות במקביל
    י יוסף בן שמעון

    @nigun אמר בהאזנה לערוץ בתוך כמה פונקציות במקביל:

    לבניים אני מוותר על סגירת הערוץ, ורק מוחק אותו מהמערך
    השאלה היא מה ההשלכות?

    לפי מה שכתוב פה
    https://stackoverflow.com/questions/8593645/is-it-ok-to-leave-a-channel-open
    אין צורך לסגור את הערוץ, מספיק לנקות את המצביע אליו ואיסוף הזבל ידאג לשאר

    תכנות

  • ASP CORE אנטיטי - איפה ליצור את המופע של הדאטבייס
    י יוסף בן שמעון

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

    תכנות

  • האזנה לערוץ בתוך כמה פונקציות במקביל
    י יוסף בן שמעון

    @nigun טעיתי, בקוד הזה באמת שליחת המידע מתבצעת רק אחרי שכל המאזינים נרשמים, אם נעשה את זה כך:
    https://play.golang.org/p/hjKVDAq2hLT
    לא נראה את המידע השני, אבל זה לא בגלל שאי אפשר להוסיף איברים למערך, אלא בגלל שבזמן שאמור להישלח המידע הקומפיילר עדיין באמצע השינה, וכשהוא מתעורר מהשינה כבר מאוחר כי הפונקציה main כבר מתה.
    ניסיתי לעשות את זה עם שרת HTTP וזה נראה עובד בסדר גמור

    package main
    
    import (
    	"fmt"
    	"net/http"
    )
    
    var (
    	mainChan = make(chan string)
    	channels = []chan string{}
    )
    
    func main() {
    
    	go func() {
    		for {
    			msg := <-mainChan
    			for _, c := range channels {
    				c <- msg
    			}
    		}
    	}()
    
    	http.HandleFunc("/a", sendDataToChannel)
    	http.HandleFunc("/b", someThread)
    	http.ListenAndServe(":8090", nil)
    
    }
    
    func sendDataToChannel(w http.ResponseWriter, r *http.Request) {
    	fmt.Fprintf(w, "")
    	mainChan <- "foo"
    }
    func someThread(w http.ResponseWriter, r *http.Request) {
    	fmt.Fprintf(w, "")
    	go func() {
    		c := addListener()
    		// for {
    		s := <-c
    		fmt.Println(s)
    
    		// }
    	}()
    }
    
    func addListener() chan string {
    	newChan := make(chan string)
    	channels = append(channels, newChan)
    	return newChan
    }
    
    
    תכנות

  • האזנה לערוץ בתוך כמה פונקציות במקביל
    י יוסף בן שמעון

    @nigun הקוד הזה עובד מצוין
    https://play.golang.org/p/YOYhQerLKFd
    כמובן שאחרי המידע הראשון שנשלח לערוץ המאזין נסגר ואי אפשר לשלוח עוד מידע, אבל המידע הראשון מתקבל גם לפונקציות המאוחרות.
    הקוד שהעלת קטוע, אולי תעלה דוגמת קוד שלימה עם בעיה

    תכנות

  • בוטסטראפ לא מכניס את העיצוב לHTML?
    י יוסף בן שמעון

    @MusiCode הכלל אומר לא לשים את הוראות העיצוב עצמם בתוך התגיות, אבל אם לא תשים קלאסים איך תעצב אותם ב CSS?

    תכנות

  • האזנה לערוץ בתוך כמה פונקציות במקביל
    י יוסף בן שמעון

    @nigun הקוד שהבאתי הוא בסיס מופשט להבנת הענין

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    var (
    	// הערוץ הראשי שאליו מוזרם המידע
    	mainChan = make(chan string)
    	// מערך של ערוצי משנה
    	// כל פונקציה שתרצה לקבל מידע מהערוץ הראשי תצטרך ליצור ערוץ משנה ולהוסיף אותו למערך הזה
    	channels = []chan string{}
    )
    
    func main() {
    
    	go func() {
    		// פונקציה היחידה שמקבל את המידע מהערוץ הראשי ומזרימה אותו לערוצי המשנה
    		msg := <-mainChan
    		for _, c := range channels {
    			c <- msg
    		}
    	}()
    
    	go func(c chan string) {
    		time.Sleep(2 * time.Second)
    		c <- "foo"
    	}(mainChan)
    
    	go someThread()
    	go someThread()
    	go someThread()
    	go someThread()
    
    	time.Sleep(4 * time.Second)
    
    }
    
    func someThread() {
    	c := addListener()
    	s := <-c
    	fmt.Println(s)
    }
    func addListener() chan string {
    	// הפונקציה שתפקידה ליצור את ערוצי המשנה ולהוסיף אותם למערך כדי להאזין למידע מהערוץ הראשי
    	newChan := make(chan string)
    	channels = append(channels, newChan)
    	return newChan
    }
    
    

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

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    var (
    	mainChan = make(chan string)
    	channels = []chan string{}
    )
    
    func main() {
    
    	go func() {
    		for { // << לולאה אינסופית שמאזינה לערוץ הראשי
    			msg := <-mainChan
    			for _, c := range channels {
    				c <- msg
    			}
    		}
    	}()
    
    	go func(c chan string) {
    		time.Sleep(1 * time.Second)
    		c <- "foo"
    		time.Sleep(1 * time.Second)
    		c <- "foo" // << שליחת מידע לערוץ הראשי פעם נוספת
    	}(mainChan)
    
    	go someThread()
    	go someThread()
    	go someThread()
    	go someThread()
    
    	time.Sleep(4 * time.Second)
    
    }
    
    func someThread() {
    	c := addListener()
    	for { // << לולאה אינסופית שמאזינה לערוץ המשנה
    		s := <-c
    		fmt.Println(s)
    	}
    }
    func addListener() chan string {
    	newChan := make(chan string)
    	channels = append(channels, newChan)
    	return newChan
    }
    
    

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


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

    תכנות

  • האזנה לערוץ בתוך כמה פונקציות במקביל
    י יוסף בן שמעון

    @nigun יתכן שהמקרה שלך שונה מהמקרה של השואל בסטאק, הוא היה צריך לשלוח כמה פעמים מידע לאותו ערוץ, מהדוגמת קוד שלך נראה שכל המאזינים הם חד פעמיים, אם זה המצב, אתה יכול להסתפק במערך שמחזיק את כל המאזינים, וכשהערוץ הראשי שולח מידע אתה עובר בלולאה על המערך ומעביר את המידע לכלל המאזינים.
    https://play.golang.org/p/-ynOQTKzXMu

    תכנות

  • שגיאה ב API מול וורדפרס
    י יוסף בן שמעון

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

    תכנות

  • שגיאה ב API מול וורדפרס
    י יוסף בן שמעון

    @יוס אמר בשגיאה ב API מול וורדפרס:

    הוספתי גם את זה ועדיין לא נפתר

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

    תכנות

  • אפליקציה פשוטה של יצירה/עדכון/מחיקה
    י יוסף בן שמעון

    בלי ניסיון, תבדוק אם זה מתאים לך
    https://sailsjs.com/
    ואולי תעבור גם על הרשימה פה
    https://www.ubuntupit.com/best-nodejs-cms-platforms/
    אם אחת מהם מתאימה

    תכנות

  • כניסה לעולם התיכנות
    י יוסף בן שמעון

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

    תכנות

  • שרת מייל - open source - פרויקטים רלוונטיים
    י יוסף בן שמעון

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

    תכנות

  • סקריפט bat שיכין לי קבצים לטריוויה
    י יוסף בן שמעון

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

    תכנות

  • סקריפט bat שיכין לי קבצים לטריוויה
    י יוסף בן שמעון

    @smk123 איזו שפה אתה מכיר?

    תכנות

  • סקריפט bat שיכין לי קבצים לטריוויה
    י יוסף בן שמעון

    @smk123 מה מיוחד ב BAT? כתוב את זה בכל שפה שאתה מכיר

    תכנות

  • חיפוש מתוך שדה חופשי
    י יוסף בן שמעון

    @avr416 אמר בחיפוש מתוך שדה חופשי:

    זה לא איזה פונקציה קיימת, וזה חתיכת פרוייקט מורכב.

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

    תכנות

  • חיפוש מתוך שדה חופשי
    י יוסף בן שמעון

    @אבי-203 אולי full text search יעזור

    תכנות
  • 1
  • 2
  • 31
  • 32
  • 33
  • 34
  • 35
  • 49
  • 50
  • 33 / 50
  • התחברות

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

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