Daniel
при чем тут перелогины?
Wingman
конн же закроется
Daniel
с чего бы?
Wingman
гм :)
Daniel
вообще, чтитайте доки, они рулез
Daniel
https://golang.org/pkg/net/#Conn
Daniel
а что как, по snmp ваши свитчи никак не отконфигурять?
Wingman
да тут в саму парадигму не то чтобы вьехать сложно, а осознать сложно :) например, куча примеров с select и каким-нибудь chan done и радостные утверждения, что таким образом можем контролировать жизненный цикл горутин. Однако нигде явно не пишут, что если в select один из каналов пуст — весь select превращается в тыкву
Wingman
а что как, по snmp ваши свитчи никак не отконфигурять?
смотря что и смотря в каких свитчах
Wingman
собирать метрики - итак собираю, на гошке поллер 5к свитчей опрашивает и норм
Wingman
но чето сложное - проще консоль парсить, по крайней мере на длинках
Daniel
ну вот dgs-36xx вроде был вполне внятно конфигуряем без телнету
Wingman
ну вот dgs-36xx вроде был вполне внятно конфигуряем без телнету
у нас зоопарк из кучи моделей с дико разнящимися oid не только от модели к модели, но и от прошивки к прошивке - cli намного универсальнее выходит
Daniel
еще, конечно, вопрос - почему вы это все на go пишете, а не на ansible с expect
Wingman
еще, конечно, вопрос - почему вы это все на go пишете, а не на ansible с expect
пушто хочу демон для многих целей, а не только единоразовое "нечто", запускаемое руками/кроном
Wingman
ну и собсно моя проблема — не проблема, если парсить аутпут прямо там же, где conn.Read - и прерывать чтение, если найдено что-то нужное
Wingman
но вот решил сделать ещё и ssh и абстрагировать чтение в горутину, отдельную от парсинга - и начались проблемы)
Sergey
Ребят, кто знает почему могут не сохраняются emoje в mysql: В табилице исполью utf8mb4, поля той же кодировки, и при ручном добавление эмоджи через sequel pro эмоджи хрянятся нормально, но на сервере, где я получаю json, в одном из полей которого эмоджи(выводил принтом и эмоджи на месте, значит декодируется json нормально), после сохранения в mysql эмоджи выглядит так ???? , нужно делать инсерт каким то особенным способом или что?
Alexander
*client* encoding возможно стоит latin1 какой-нибудь
Daniel
на dgs-то, наверняка, все прочли...
Sergey
*client* encoding возможно стоит latin1 какой-нибудь
Но ведь я распечатал уже декодированый json и там есть emoje , или я что то не понимаю
Alexander
Но ведь я распечатал уже декодированый json и там есть emoje , или я что то не понимаю
Да, на сервере данные в порядке. Они, возможно, портятся при передаче от твоей программы в базу данных, потому что mysql client ожидает данные не в той кодировке
Alexander
set names utf8mb4 может помочь, да
Sergey
set names utf8mb4 может помочь, да
Как раз он ожидает данные в той кодировке, поле в mysql само по себе utf8mb4
Sergey
и вся таблица тоже
Alexander
это кодировка на сервере БД. Она может отличаться от кодировки клиента БД
Sergey
Понял, спасибо, буду разбираться)
Alexander
а должна совпадать, тогда перекодирования не будет и данные сохраняться как есть
Wingman
обычно на каждый коннект запускают две горутины
Похоже это - то, что мне нужно, сейчас поосознаю. Проблема не в "нечтении доков" ; мозгам сложно переключиться и пытаюсь писать "в однопоточном стиле"
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
https://github.com/z505/goDLL
имелось ввиду go plugin
Michael
вероятно
Michael
и способо на гитхабе какой-то кривоватый
Eugene
подскажите плз https://gist.github.com/anonymous/0a5dc50e32c6b1d3516ed4a2a461b71e нет ли способа обойтись без промежуточного буффера?
Daniel
два сокета напрямую связать?
Daniel
https://golang.org/pkg/io/#Copy
Daniel
но под капотом там буфер все одно
Eugene
https://golang.org/pkg/io/#Copy
спасибо, започитаю
Pawel
https://github.com/z505/goDLL
это наркоманская дрочьба в присядку, а не способ содания dll.
heavycharged
подскажите, вот есть задача которую можно распараллелить. Есть какое-то правило, сколько воркеров создавать, чтобы не было проседаний в производительности? Допустим, на машине 4 ядра.
Daniel
это, собственно, только от задачи зависит
heavycharged
ну если так поразмыслить, то верхний предел все-же должен быть какой-то. например, 100500 воркеров не могут же работать быстрее, чем например 16 (на 4 ядрах)? или такое может быть?
heavycharged
просто в коде часто попадаются задачки которые можно раздать воркерам, и я часто задумываюсь, сколько воркеров создавать-то. может по количеству runtime.NumCPU()?
Заур
в некоторых местах вот такой код замечал runtime.GOMAXPROCS(runtime.NumCPU() * 2)
Daniel
коллеги
Daniel
если ваша задача ждет ввода-вывода - почему не запускать их тысячами?
Daniel
а если молотит математику - даже и по числу ядер многовато
Daniel
ну надо же и системе что-то оставить
🎉
Люди, что юзают для управления зависимостями, dep или gb?
Anonymous
dep в основном