
Daniel
22.08.2018
14:59:21
но ты не томи :)
как, по-твоему, можно еще паснуть файлхендлер другому процессу?
номер-то у хендлера уникальный только в рамках одного процесса

Kirill
22.08.2018
15:00:44

Google

Kirill
22.08.2018
15:05:04
просто "без sendmsg" чтобы отправить нужно "всего лишь" заменить пару сотен сяшного кода, которым этот sendmsg обрабатывается

Pawel
22.08.2018
15:05:29

Kirill
22.08.2018
15:06:41
TWIMC 2
история про закрывающийся listen сокет оказалась и сложнее, и проще
unix-сокеты были там у меня для отправки по ним tcp-соединений воркерам.
соответственно - делал я их не через net.Dial, а через unix.Socket, и отправлял через unix.Sendmsg
как паснуть именно хендлер соединения без unix.Sendmsg - я не знаю.
так вот - потом я делал unix-сокету syscall.Close, естественно
мистическим образом иногда (!) хендлер unix-сокета оказывался равен хендлеру listen-сокета.
и listener закрывался, понятное дело.
что с этим делать? у net.UnixConn появился сравнительно недавно метод SyscallConn, возвращающий syscall.RawConn, у которого, в свою очередь, есть Write(), позволяющий получить доступ к file descriptor.
и этот fd можно использовать для вызова unix.Sendmsg, да...
алсо, ? а обязательно ли постоянно юзать новый сокет?

Daniel
22.08.2018
15:07:05

Stanislav
22.08.2018
15:14:05

Kirill
22.08.2018
15:14:10

Dmitry
22.08.2018
15:16:53
проблема шаринга сетевого сокета между процессами видно. насколько я понял

Kirill
22.08.2018
15:17:55

Daniel
22.08.2018
15:18:00

Stanislav
22.08.2018
15:18:01
проблема в том что при отправке из-за каких-то проблем либо при работе с сырыми дескрипторами в го, либо в рантайме, либо даже в ядре (маловероятно) с какой-то вероятностью в fd оказывается совершенно левый номер другого сокета

Kirill
22.08.2018
15:18:03
сама проблема в чем заключается?

Google

Kirill
22.08.2018
15:19:11
как-то вы синхронно ответили дополняющие друг друга вещи. вы из одной конторы, что ли? :D

Stanislav
22.08.2018
15:19:32
я подозреваю потому что закрывали fd, оставляя живым os.File, который в finalizer ещё творит магии с поллером
есть немного

Kirill
22.08.2018
15:22:04
ну — вы, конечно, можете избавиться от finalizer'а :D
ну а вообще — как решили-то?

Stanislav
22.08.2018
15:22:54
так это не поможет избавиться от fd уже зареганного в поллере. можно конечно слинковаться с рантайм-функциями поллера и разрегать его там, но зачем

Kirill
22.08.2018
15:23:58

Stanislav
22.08.2018
15:25:16
это к данилу, у меня только непроверенные предположения из вчерашнего обсуждения

Kirill
22.08.2018
15:26:33
@onokonem

Aleksandr
22.08.2018
17:49:34
а у нас один пакет, генерящий кастомные анмаршалеры json - тот, что мейл.ру?

Daniel
22.08.2018
17:52:32
если закрывать fd, пусть даже взятый из файла - проблема есть
если закрывать conn - проблемы нет

Michael
22.08.2018
18:47:58

Aleksandr
22.08.2018
18:49:42

Michael
22.08.2018
18:54:02

Aleksandr
22.08.2018
18:55:15

Michael
22.08.2018
18:57:59
https://github.com/ugorji/go/tree/master/codec#readme есть кодогенерация
и отакой с того же списка https://github.com/json-iterator/go и бенч марк результаты есть

Aleksandr
22.08.2018
19:03:51

Google

Aleksandr
22.08.2018
19:15:29
@rvasily будет easyjson поддерживать go modules, а точнее работать без требования gopath?

Vasily Romanov
22.08.2018
19:15:44

Aleksandr
22.08.2018
19:16:00
сроки есть?

Vasily Romanov
22.08.2018
19:16:13
не обещаю что в ближайшее время, но к релизу 3-й курса части было бы круто запилить
а, хотя если вопрос про кодогенератор, который требует чтобы всё находилось в гопас - тут не знаю

Aleksandr
22.08.2018
19:17:19
второе

Vasily Romanov
22.08.2018
19:17:26
надо смотреть, у нас там всё на рефлекии сделано в данный момент
я на будущей неделе постараюсь добраться туда, оценить, сложно-ли будет поддержать работу в модулях без перепиливания самого кодогенератора
но вообще PR рады :)

Denis
22.08.2018
19:52:02
Добрый день всем. Скажите пожалуйста, кто нибудь сталкивался с внедрением WebView в Go?
Есть биндинг под CEF - https://github.com/cztomczak/cef2go, но он походу заброшен и имеет весьма скромный функционал (не хватает биндинга методов в JS)
Можете посоветовать лучшую альтернативу?

Fastumkruk ✅
22.08.2018
20:06:41
Можно как либо скринить страницу из go?

Лемур
22.08.2018
20:08:02

Fastumkruk ✅
22.08.2018
20:08:10

Лемур
22.08.2018
20:08:56
Да
Есть phantomjs для этого.
Есть хедлес хромиум
Есть qt байндинги к хромиуму
Есть селениум
Phantomjs самое простое
Впиливать хромиум внутрь бинарника на го я бы не стал

Fastumkruk ✅
22.08.2018
20:12:52
У меня серв на убунту без гуя. Возможно такое реализовать?

Лемур
22.08.2018
20:13:39

Fastumkruk ✅
22.08.2018
20:14:21

Google

Slava
22.08.2018
20:56:53
фантомжс депрекейтед вроде как
и не обновлялся уже давно

Лемур
22.08.2018
20:58:36
Тем не менее, с задачей сделать скриншот страницы сайта он справлялся всегда отлично.

Admin
ERROR: S client not available

Лемур
22.08.2018
21:01:05
Спасибо за замечание. Не знал.

MVP
22.08.2018
21:06:18

Лемур
22.08.2018
21:06:44

Aleksandr
22.08.2018
21:26:59

Vasily Romanov
23.08.2018
10:56:46

Ivan
23.08.2018
11:26:37
Коллеги, такой вопрос. А есть нативные либы в гошке, которые умеют с berkley db работать? Я только сигошные биндинги нашел.
может кто сталкивался?

Zarif
23.08.2018
11:37:44

Ivan
23.08.2018
11:39:56
Не хочется иметь оверхед на cgo

Olzhas
23.08.2018
11:40:25

Никита
23.08.2018
11:47:28
То что у всех остальных вызовов указано 0 мс - они реально занимают времени меньше миллисекунды? Или как?

Roman
23.08.2018
11:48:54
а что за код?

Никита
23.08.2018
11:49:48
а что за код?
Ну код показать не могу. Это бэк. Как я понимаю cgocall делает драйвер постгреса
Но меня интересует то, реально ли отражается время выполнения остального кода, так как 0 миллисекунд - как то подозрительно, учитывая то, что в тех функциях делаются Select запросы к базе, и хоть какой то процент времени занимать они должны

Google

Harry
23.08.2018
11:53:08

Denys
23.08.2018
11:54:00
Хочу сделать фасад UserAgentParser с методами Os() string, Browser() string, DeviceType() string, как в этом случае назвать интерфейс?
Хочу скрыть работу внешних библиотек в этом фасаде, но проблема с неймингом, ибо по соглашениям, интерфейсы должны оканчиваться на -er, тогда как структуру назвать ?

Maxim
23.08.2018
11:58:27

Denys
23.08.2018
12:07:45
интерфейс эскпортным сделать, а структуру нет?
а если затем понадобиться расшарить фасад?

Maxim
23.08.2018
12:22:27
а если затем понадобиться расшарить фасад?
А в чем проблема его расширить? Делаешь конструктор NewUserAgentParser и возвращаешь из него свой публичный интерфейс. Вся имплементация в приватной структуре. Расширяй сколько душе угодно)

Aleksandr
23.08.2018
12:23:59
type_easyjson показывается во втором уровне.

Kirill
23.08.2018
12:24:39
?

Aleksandr
23.08.2018
12:25:26

Kirill
23.08.2018
12:25:38