Anonymous
u can use true/false
Anonymous
if channel closed == true
if channel != closed == false
jeff
I know the "select" can check a channel whether closed or not.
Anonymous
yes using select
Anonymous
dude im junior i can try
Anonymous
but i dont think it will be useful in prod
Anonymous
but i can try
jeff
no, no such safe way to close a channel
jeff
especially, if there are many senders and one receiver.
Anonymous
firstly
select {
case <- chl:
return true
default:
}
return false
}
Anonymous
smt like that
Anonymous
btw u need to create a function and check it every time
jeff
Anonymous
oh
Anonymous
thats all what i can do
Anonymous
jeff
It's fine. thank you.
Anonymous
np
Рик
A ti molodec, umeesh v english
Anonymous
да тут ничего такого не было
Anonymous
читаю про архитектуру и вообще не понимаю как это делать 🧐
Black
good golang coder inbox me
i want my golang spped update its scan 3,5 or more secend pause then again run i need its fix it
if any one can inbox me
Alexander
Питонисту лучше нормальную книгу взять имхо в связи со спецификой некой упрощенности
Abbos
Собрал свои 2 docker контейнера с помощью docker-compose, по какому адресу стучаться к одному из контейнеров?
Sardor
Abbos
да, это я понял, а к какому адресу стучатся снаружи? вроде нашел что мой контейнер под адресом 172.19.0.3, но подключиться с помощью postman'a не могу
Abbos
App
Нужен человек для разработки backend небольшого проекта на go. В проекте будем работать с rest api, S2S, аутентификацией и MySQL.
Оплата договорная. В дальнейшем потребуется оплачиваемая поддержка проекта. Предложения и подробности в личные сообщения, спасибо.
Abbos
Maks
Maks
Стучись на локалхост по внешнему порту
Maks
При этом внутри приложения нужно общаться по внутреннему
Abbos
Странная фигня, при запуске контейнеров без compose, пришлось обращаться не к localhost а к другому ip адерсу, а тут с локахостом работает🗿🗿
Abbos
В любом случае, заработало, спасибо за помощь!
Maks
Докер нетворк:
Внутри докер композа, все контейнеры обычно находятся внутри одной подсети, если не сказано иного в области нетворкс. Между собой эти контейнеры могу общаться по адресу еквивалентному имени сервиса. И внутреннему порту. Из хост системы эти контейнеры доступны по внешнему порту.
Maks
Типо у тебя может бы ь дважды развернут один и тот же сервис но на разных портах внешних
Abbos
да я это читал, вчера когда я только создал 2 докер контейнера и запустил их через docker run + создал отдельный network пришлось подключаться через 172.xx.0.xx:port
Black
Only pause poblem any one can fix it? Inbox me
Emil
А на ctr+C деферы не успевают среагировать? Хочу сохранить мапу юзеров в файл только при выходе...
Anonymous
как инкапсуляция реализуется в го?
Mark
А на ctr+C деферы не успевают среагировать? Хочу сохранить мапу юзеров в файл только при выходе...
Нет, нужно обрабатывать сигнал
https://medium.com/nuances-of-programming/%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D1%81%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D0%BE%D0%B2-%D0%B2-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D1%85-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%D1%85-%D1%81%D0%B5%D0%BC%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B0-unix-%D0%BD%D0%B0-golang-cb2c42b80ba5
Emil
🅞leksiy
как инкапсуляция реализуется в го?
Сделай подпакет в котором публичные методы и свойства пишешь с большой буквы, а приватные с маленькой и импортируй его в основное приложение
Anonymous
то есть типо
Anonymous
incap.go
Anonymous
и там создавать структуры?
🅞leksiy
В том же пакете будут все свойства доступны
🅞leksiy
Нужен подкаталог
🅞leksiy
Ну отдельный пакет
🅞leksiy
Или да, интерфейсы
Anonymous
о, я понял
Anonymous
спасибо
Anonymous
запарно как-то
Anonymous
если честно
🅞leksiy
Тогда просто не парься
Anonymous
нет
Anonymous
так не пойдет
🅞leksiy
Тогда парься
🅞leksiy
)
Anonymous
в точку
Anonymous
так точно сэр
App
Нужен человек для разработки backend небольшого проекта на go. В проекте будем работать с rest api, S2S, аутентификацией и MySQL.
Оплата договорная. В дальнейшем потребуется оплачиваемая поддержка проекта. Предложения и подробности в личные сообщения, спасибо.
Игорь
Ребят можете помочь, делаю базовую авторизацию с обратным прокси для сервиса и что-то создается очень много файликов и они никак не закрываются и в итоге получаю ошибку:
too many open files
делаю так:
func basicAuth(client *ldap.LDAPClient, remote *url.URL, store *sessions.CookieStore) http.HandlerFunc {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
session, _ := store.Get(r, "auth_session")
var ok_auth bool = false
var user map[string]string
var err error = nil
username, password, ok := r.BasicAuth()
if ok {
if session.Values["flag"] == "!success!" {
ok_auth, user, err = true, nil, nil
} else {
ok_auth, user, err = client.Authenticate(username, password)
log.Printf("%T,%T,%T,", ok_auth, user, err)
if err != nil {
log.Printf("Error authenticating user %s: %+v", username, err)
w.Header().Set("WWW-Authenticate", Basic realm="restricted")
w.WriteHeader(401)
w.Write([]byte("Unauthorised.\n"))
clearSession(w)
return
}
if !ok {
log.Printf("Authenticating failed for user %s", username)
w.Header().Set("WWW-Authenticate", Basic realm="restricted")
w.WriteHeader(401)
w.Write([]byte("Unauthorised.\n"))
clearSession(w)
return
}
log.Printf("%T", ok_auth)
log.Printf("User: %+v", user)
}
if ok_auth {
session.Values["flag"] = "!success!"
err := session.Save(r, w)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
proxy := httputil.NewSingleHostReverseProxy(remote)
proxy.Transport = &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
DialContext: (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
DualStack: true,
}).DialContext,
MaxIdleConns: 100,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
}
http.DefaultClient.Timeout= 10*time.Second
fmt.Println(r.URL.Host)
proxy.ServeHTTP(w, r)
return
}
}
w.Header().Set("WWW-Authenticate", Basic realm="restricted", charset="UTF-8")
http.Error(w, "Unauthorized", http.StatusUnauthorized)
})
}
Игорь
var store = sessions.NewCookieStore([]byte(configuration.SessionKey))
mux := http.NewServeMux()
mux.HandleFunc("/", basicAuth(client, remote, store))
local, err := url.Parse(configuration.ListenServer)
if err != nil {
log.Println(err)
return
}
srv := &http.Server{
Addr: local.Host,
Handler: mux,
IdleTimeout: time.Minute,
ReadTimeout: 10 * time.Second,
WriteTimeout: 30 * time.Second,
}
log.Printf("starting server on %s", srv.Addr)
if local.Scheme == "https" {
err = srv.ListenAndServeTLS(configuration.PathToCertPem, configuration.PathToCertKey)
defer srv.Close()
} else if local.Scheme == "http" {
err = srv.ListenAndServe()
defer srv.Close()
} else {
log.Println("Неправильно введен server hostname")
}
cryptoHan
Всем привет , есть те кто с "selenium " умеет работать ?
Вал
cryptoHan
Alexander
есть еще chromedp
whois
Товарищи, посоветуйте библиотеку хорошую для кэшировани часто используемых данных(немного данных) в памяти приложения
Alexander
map?
Alexander
+ sync.Mutex если надо
Alexander
или sync.Map, если хочется с interface{} возиться
🅞leksiy
Есть еще потокобезопасная либа которая быстрее map
🅞leksiy
Обычного, не sync Map
Alexander
это что же за либа? хотя явно придется возиться с пустыми интерфейсами
🅞leksiy
🅞leksiy
.(type)