@צדיק-תמים אמר בטיפים לכתיבת שרת נוד ב TS:
@יוסף-בן-שמעון למה לא לכתוב בtsconfig
"outDir": "dist"
וכך הקבצים ייווצרו מלכתחילה בתקיה ייעודית?
תלוי בסביבה ובדרישות, לא מתאים בכל מצב, ובכל מקרה, גם את התיקיה הייעודית כדאי להסתיר
@צדיק-תמים אמר בטיפים לכתיבת שרת נוד ב TS:
@יוסף-בן-שמעון למה לא לכתוב בtsconfig
"outDir": "dist"
וכך הקבצים ייווצרו מלכתחילה בתקיה ייעודית?
תלוי בסביבה ובדרישות, לא מתאים בכל מצב, ובכל מקרה, גם את התיקיה הייעודית כדאי להסתיר
@dovid אכן, עכשיו אני מבין שנכנסתי לסוגיא בראש של נוד, אם אתה עושה close אתה הורג את המאגר, צחוק הגורל שדוטנט השפה הכי עילית שרק עושים פווו ויש לך אפליקציה, דוקא הם לא טרחו להסתיר ממך את המימוש של סגירת חיבור והחזרתו למאגר, ואילו בנוד ובגו שלכאורה הרבה יותר "ברזליות", המימוש הזה מוסתר מעיני המפתח
@dovid חושבני שלא זו הכוונה, כשאתה פותח מאגר חיבורים מנוהל, אתה לא אמור לסגור אותו אחרי כל שאילתה, המאגר מנהל את יצירת החיבור וסגירתו.
אם הוא יסגור כל פעם את המאגר זה יצור עומס מיותר לחלוטין
לפי ההוראות בגיטהאב, וכך גם בלינק שהוא הביא מסטאק, צריך להגדיר משתנה גלובלי שמקבל את הערך מ sql.Open וזה מחזיק את המאגר המנוהל, מכאן ואילך הוא צריך לבקש מהמאגר חיבור פנוי ולתשאל אותו על ידי db.QueryRow וזהו
@nigun אם אני מבין נכון כתוב שם שזו ברירת המחדל של הדריבר והאו מנהל את המאגר, אתה רק מקצה משתנה גלובלי שמקבל את הערך מ sql.Open
וזה מחזיק את המאגר
@אביי אמר בקוד לקריאת ערכים מהרגיסטרי (בתשלום):
@יוסף-בן-שמעון אמר בקוד לקריאת ערכים מהרגיסטרי (בתשלום):
ג. אחרי הסוגריים המסולסלות שסוגרות את ה IF, אתה מוסיף:
איך אני עושה שזה יפנה לקובץ EXE אחר? (שהוא יקפיץ טופס)
אתה רוצה פקודה שתריץ איזה קובץ מהמחשב שלך, בעצם כבר השתמשת בפקודה כזו לפני כן, כדי להריץ את הקובץ אקסס כתבת
System.Diagnostics.Process.Start("C:\access-file.mdb");
אז אתה צריך לכתוב אותה שוב, ורק להחליף את הנתיב של הקובץ לנתיב של הקובץ שאתה רוצה להריץ
@nigun ההמלצה היא ליצור מאגר חיבורים ולהשתמש בו, חפש משהו כמו pool connection
@מנצפך אמר בתוך כמה זמן מקבלים אישור לתוסף CHROME:
מה הכוונה הרשאות לאתרים? כלומר, בלי הרשאות לאתרים אני בעצם לא יכול לעשות מניפולציה בשום דף?
אכן, אתה יכול רק לעבוד עם דף פופאפ אבל לא תוכן להזריק תוכן לדפים ולא לגשת לבקשות שנשלחות מהדפים
@מנצפך באשר לזמן הפרסום, עכשיו זה לוקח להם המון זמן, כנראה מצבת העובדים שלהם מוגבלת, בדרך כלל זה לוקח כמה שעות.
אם התוסף מצריך הרשאות לאתרים, הם מחמירים יותר וצריכים להבין למה אתה צריך הרשאות, בפרט אם אתה לוקח הרשאות מלאות לכל האתרים.
@מנצפך פורסם לא רשום זה אומר שזה מאושר, כנס לדף של התוסף בחנות ותבדוק אם זה מופיע שם
https://chrome.google.com/webstore/detail/<extension-id>
@yossiz מה כוונתך קובץ הוסטס, אפשר להגדיר טווח דומיינים בהוסטס?
@nigun אליבא דאמת שימוש בערוצים במקרה הזה סתם מכביד על הקוד, קח מוטציה קלילה יותר של זה, במקום ערוצים שמתי קולבקים
package main
import (
"fmt"
"time"
)
var usersCallback = make(map[string]func(data string))
func main() {
go helloUser("A")
go helloUser("B")
time.Sleep(500)
sendDataToUser("A", "Hi")
sendDataToUser("B", "By")
time.Sleep(500)
disconnectUser("A")
sendDataToUser("A", "Hi")
time.Sleep(5000)
}
func helloUser(name string) {
usersCallback[name] = func(msg string) {
fmt.Println(msg)
}
}
func disconnectUser(name string) {
delete(usersCallback, name)
}
func sendDataToUser(name, data string) {
callback, hasUser := usersCallback[name]
if hasUser {
callback(data)
}
}
@nigun לכאורה אתה צודק, אם זה המצב אז הקוד כבר מרגיש לי מידי מסטיקי, אולי תשקול לעבוד עם קולבקים פרימיטייבים? או לחילופין לממש את הרעיון של סגירת ערוץ שתשלח הודעה לכולם, ואת הערך שאתה רוצה להעביר תעביר עם איזה משתנה גלובלי?
@nigun אמר בהאזנה לערוץ בתוך כמה פונקציות במקביל:
לבניים אני מוותר על סגירת הערוץ, ורק מוחק אותו מהמערך
השאלה היא מה ההשלכות?
לפי מה שכתוב פה
https://stackoverflow.com/questions/8593645/is-it-ok-to-leave-a-channel-open
אין צורך לסגור את הערוץ, מספיק לנקות את המצביע אליו ואיסוף הזבל ידאג לשאר
@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/-ynOQTKzXMu
@יוס אני לא בטוח שהבנתי אותך, יש את הדומיין שהדפדפן טוען, זה שכתוב בדפדפן ככתובת האתר, זה האתר הראשי, נקרא לו דומיין X
כעת הדפדפן שפתח את האתר של דומיין X, שולח בקשת AJAX לדומיין Y
זו המציאות?
@smk123 תתחיל, גש למערכת קבצים, תקרא את רשימת הקבצים שבתיקית המקור ותטען אותם למערך, ואז תחלק את המערך לפרוסות של מערכים קטנים של 4 קבצים, תעבור בלולאה על המערך הראשי ותעתיק את הקבצים שבתתי המערכים לתיקיות משנה, ותקרא להם בשמות שאתה רוצה. עד כאן בסדר?
@smk123 איזו שפה אתה מכיר?
@smk123 מה מיוחד ב BAT? כתוב את זה בכל שפה שאתה מכיר
@ב-ל אולי תוסיף את הבלוגים של medium שפתוחים
לדוגמא
https://medium.com/@aayushwadhwa31
אולי תשלח פניה לנטפרי שיתנו לך את הרשימה של הפתוחים אם הם יסכימו