Daniel
при чем тут перелогины?
Wingman
конн же закроется
Daniel
с чего бы?
Wingman
гм :)
Daniel
вообще, чтитайте доки, они рулез
Daniel
https://golang.org/pkg/net/#Conn
Daniel
а что как, по snmp ваши свитчи никак не отконфигурять?
Wingman
да тут в саму парадигму не то чтобы вьехать сложно, а осознать сложно :)
например, куча примеров с select и каким-нибудь chan done и радостные утверждения, что таким образом можем контролировать жизненный цикл горутин. Однако нигде явно не пишут, что если в select один из каналов пуст — весь select превращается в тыкву
Wingman
Wingman
собирать метрики - итак собираю, на гошке поллер 5к свитчей опрашивает и норм
Wingman
но чето сложное - проще консоль парсить, по крайней мере на длинках
Daniel
ну вот dgs-36xx вроде был вполне внятно конфигуряем без телнету
Daniel
Daniel
еще, конечно, вопрос - почему вы это все на go пишете, а не на ansible с expect
Wingman
ну и собсно моя проблема — не проблема, если парсить аутпут прямо там же, где conn.Read - и прерывать чтение, если найдено что-то нужное
Wingman
но вот решил сделать ещё и ssh и абстрагировать чтение в горутину, отдельную от парсинга - и начались проблемы)
Sergey
Ребят, кто знает почему могут не сохраняются emoje в mysql: В табилице исполью utf8mb4, поля той же кодировки, и при ручном добавление эмоджи через sequel pro эмоджи хрянятся нормально, но на сервере, где я получаю json, в одном из полей которого эмоджи(выводил принтом и эмоджи на месте, значит декодируется json нормально), после сохранения в mysql эмоджи выглядит так ???? , нужно делать инсерт каким то особенным способом или что?
Michael
Alexander
*client* encoding возможно стоит latin1 какой-нибудь
Daniel
Daniel
на dgs-то, наверняка, все прочли...
Wingman
Sergey
Alexander
set names utf8mb4 может помочь, да
Sergey
и вся таблица тоже
Alexander
это кодировка на сервере БД. Она может отличаться от кодировки клиента БД
Sergey
Понял, спасибо, буду разбираться)
Alexander
а должна совпадать, тогда перекодирования не будет и данные сохраняться как есть
Sergey
Daniel
кстати, да
🏁Александр
func WaitExit() {
fmt.Println("Нажмите любую клавишу для завершения")
reader := bufio.NewReader(os.Stdin)
_, err := reader.ReadString('\n')
if err != nil {
log.Fatal(err)
}
os.Exit(1)
}
log.Print("Мы умерли, прощаемся")
WaitExit()
Daniel
а?!
🏁Александр
все работает, только почему то "Нажмите любую клавишу для завершения" вылезает до "Мы умерли, прощаемся"
🏁Александр
и сразу после лога мигает курсор, все ок
🏁Александр
Нажмите любую клавишу для завершения
2018/02/23 14:30:18 Мы умерли, прощаемся
(Курсор тут)
Daniel
эти записи идут в разные потоки
Daniel
fmt пишет в os.Stdout
Daniel
а log - в os.Stderr
🏁Александр
хм
🏁Александр
почему лог то в ошибку, странно
Daniel
потому, что канал stderr используется для логов традиционно
Daniel
а stdout - для пайпа может пригодиться
Kirill
потому что 2>/dev/null и нет логов, одни пользовательские сообщения
Kirill
или данные, да
🏁Александр
ясно понятно
🏁Александр
тогда исправил -
func WaitExit(writer io.Writer) {
fmt.Fprintln(writer, "Нажмите любую клавишу для завершения")
reader := bufio.NewReader(os.Stdin)
_, err := reader.ReadString('\n')
if err != nil {
log.Fatal(err)
}
os.Exit(1)
}
🏁Александр
может кому пригодится 🙂
🏁Александр
на винде просто иначе черное окно схлопнется, без ожидания насколько я понимаю
🏁Александр
юзвер никогда не увидит ошибки
Дмитрий
Anonymous
В го можно написать dll под винду?
Pawel
нет
Anonymous
нет
https://github.com/z505/goDLL
Michael
Michael
вероятно
Michael
и способо на гитхабе какой-то кривоватый
Eugene
подскажите плз
https://gist.github.com/anonymous/0a5dc50e32c6b1d3516ed4a2a461b71e
нет ли способа обойтись без промежуточного буффера?
Daniel
два сокета напрямую связать?
Daniel
https://golang.org/pkg/io/#Copy
Daniel
но под капотом там буфер все одно
Eugene
heavycharged
подскажите, вот есть задача которую можно распараллелить. Есть какое-то правило, сколько воркеров создавать, чтобы не было проседаний в производительности? Допустим, на машине 4 ядра.
Daniel
это, собственно, только от задачи зависит
heavycharged
ну если так поразмыслить, то верхний предел все-же должен быть какой-то. например, 100500 воркеров не могут же работать быстрее, чем например 16 (на 4 ядрах)? или такое может быть?
heavycharged
просто в коде часто попадаются задачки которые можно раздать воркерам, и я часто задумываюсь, сколько воркеров создавать-то. может по количеству runtime.NumCPU()?
Заур
в некоторых местах вот такой код замечал
runtime.GOMAXPROCS(runtime.NumCPU() * 2)
Daniel
коллеги
Daniel
если ваша задача ждет ввода-вывода - почему не запускать их тысячами?
Daniel
а если молотит математику - даже и по числу ядер многовато
Sergei
Daniel
ну надо же и системе что-то оставить
🎉
Люди, что юзают для управления зависимостями, dep или gb?
Anonymous
dep в основном