
Kirill
10.10.2017
12:26:34

Arch
10.10.2017
14:04:22
Люди, кто обладает опытом работы с websocket, объясните пожалуйста, в чем идеологический смысл в го реализовывать для каждого клиента две горутины на чтение и запись через каналы, в чем не кошерность способа применяемого в том же питоне, когда мы в мэп собираем всех клиентов и ожидаем от кого-то из них данные, а потом циклом проходим по всем и пишем им данные. Пока писал, появилась идея, что это связанно с отсутствием конструкции try, catch, я прав?

Daniel
10.10.2017
14:04:49
нет
это свуязано с синхронностью ввода-вывода в go

Google

Igor
10.10.2017
14:08:18
Юзает кто-нибудь neo4j в го?

Arch
10.10.2017
14:10:38

Nikolay
10.10.2017
14:11:58

Daniel
10.10.2017
14:12:20
ввод-вывод в го блокирующий, синхронный
соответственно, писать в разные сокеты надо из разных горутин, иначе первая же заблокировавшаяся запись остановит весь цикл


Pawel
10.10.2017
14:15:06
Люди, кто обладает опытом работы с websocket, объясните пожалуйста, в чем идеологический смысл в го реализовывать для каждого клиента две горутины на чтение и запись через каналы, в чем не кошерность способа применяемого в том же питоне, когда мы в мэп собираем всех клиентов и ожидаем от кого-то из них данные, а потом циклом проходим по всем и пишем им данные. Пока писал, появилась идея, что это связанно с отсутствием конструкции try, catch, я прав?
при работе с вебсокетом у вас вот эту вот мапу пишут и читают одновременно несколько горутин, Поэтому все обращения к ней должны быть либо через каналы, либо залочены мьютексами

Nikolay
10.10.2017
14:17:02

Arch
10.10.2017
14:21:17
Я немного не о том. В питоне ввод-вывод тоже блокирующий. Но там это решается через async. Тут через горутины, по сути такой же async. Суть в самом подходе, тут во всех реализациях, которые я видел для го, для клиента стартуем сразу две горутины, вместо того чтобы при появлении данных на сокете, в цикле создавать горутины на отправку, которые после отправки данных самозавершатся
https://m.habrahabr.ru/company/mailru/blog/331784/
Вот тут, как я понимаю, и идёт речь об отказе запуска двух горутины на клиента

Daniel
10.10.2017
14:25:52
да

Google

Daniel
10.10.2017
14:26:04
но оно перестает быть простым и кросплатформенным
зачем это нужно, если ты не мейлру - вопрос открытый

Arch
10.10.2017
14:27:01
Ну когда нужна производительность

Daniel
10.10.2017
14:27:05
нет
производительность не изменится

Arch
10.10.2017
14:28:34
Ну либо сервер. Обслуживает 10к клиентов, либо 100к, разница есть

Daniel
10.10.2017
14:29:24
опять нет
разницу на 10К и 100К вы не увидите

Евгений
10.10.2017
14:40:40
Там решалась конкретная задача mail.ru: нужно держать большое количество неактивных веб-сокетов, обновления идут в небольшом % из них. Суть решения - не выделять память и горутины на неактивные соединения. Как только нужно что-то отрпвить, создается нормальная горутина со всеми данными и буферами.

Pawel
10.10.2017
14:40:50
Мэп только читают несколько, а пишет только одна, которая апгрейд соединения делает
даже если так - это детали, которые суть картины (конкурентный доступ) не меняют. Но вообще то вебсокет-клиентов > 1, и все они одновременно пишут.
"мы в мэп собираем всех клиентов и ожидаем от кого-то из них данные, а потом циклом проходим по всем и пишем им данные." - вот это вот ни к чему. Правильно - это писать в мапу в каждом обработчике хтттп соединения, устанавливающего вебсокет коннект

Евгений
10.10.2017
14:41:05
Если у вас не такой паттерн: активны 5% из 10М, то вам это не нужно.

Daniel
10.10.2017
14:42:14
и даже если паттерн такой - все, что вы наэкономите, это RAM

Arch
10.10.2017
14:43:14
Ну собственно вопрос был именно про паттерн реализации задачи в го
Спасибо всем откликнувшимся

Евгений
10.10.2017
14:44:35
там вопрос не в получателях: а вообще в актвиных сокетах - т.е. тех, в которых передаются данные
т.е. у вас получается ~100% активных )
Я не ругаю решение, оно отличное. Но оно под специфическую задачу - очень редких уведомлений для большой группы клиентов.\

Arch
10.10.2017
14:46:32

Евгений
10.10.2017
14:47:24
одна на все сокеты?

Google

Евгений
10.10.2017
14:47:30
и один общий буфер?

Arch
10.10.2017
14:47:38
Кстати вот ещё вопрос, в догонку, если я не буду читать то, что шлют мне клиенты, чем это мне грозит?

Daniel
10.10.2017
14:47:55
буфер переполнится, сокет закроется

Arch
10.10.2017
14:48:39
одна на все сокеты?
Не, там две горутины на клиента, была мысль сделать по одной, только на write

Daniel
10.10.2017
14:48:51
еще раз - чтобы что?

Евгений
10.10.2017
14:49:05
имхо вы усложните все сильнее, чем выиграете

Arch
10.10.2017
14:50:04
Спасибо всем откликнувшимся, в общих чертах стало понятнее

Maxim
10.10.2017
18:10:02
Добрый вечер!
В последнее время на web-сервере подозрительная активность
Идут GET запросы:
/.git/HEAD
/tasktracker.jsp
/dfshealth.jsp
/jobtracker.jsp
/flumemaster.jsp
/browseDirectory.jsp
/status.jsp
/master.jsp
Мой проект кто-то пытается взломать?

Nikolay
10.10.2017
18:10:59
у меня такое начинается сразу после аренды VPS у любого провайдера через пару дней

Aleksandr
10.10.2017
18:11:24

Nikolay
10.10.2017
18:11:36
IP в освновном китайские

AxiS
10.10.2017
18:13:11

Анатолий
10.10.2017
18:13:33
бурят брутят

Maxim
10.10.2017
18:13:35
Просто таких запросов в последнее время становится все больше

Mike
10.10.2017
18:13:53

Илья
10.10.2017
18:13:57
зарули jsp в blackhole

Google

AxiS
10.10.2017
18:14:22

Mike
10.10.2017
18:15:07
Или всех кто джсп просит бань

AxiS
10.10.2017
18:16:04

Nikolay
10.10.2017
18:16:31

Maxim
10.10.2017
18:16:53
А что еще?

Nikolay
10.10.2017
18:16:54
по идее должен быть уже какой-то модуль для бана вот сканнеров
А что еще?
ну пробивают phpMyAdmin, дырки в CMS: Joomla, WordPress; уязвимость shellshock к примеру
самое распространённое дырявое ПО в двух словах

AxiS
10.10.2017
18:19:21

Nikolay
10.10.2017
18:20:15
возвращай zip-бомбу)
кстати идея))) если как-то узнать ПО сканера, то можно поискать дыры в нём и поэкспериментировать с овтетами, может получиться довольно забавно)

AxiS
10.10.2017
18:20:22
https://habrahabr.ru/post/332580/

Maxim
10.10.2017
18:22:37
Всем спасибо за направления в нужные русла))) пошел читать

Nikolay
10.10.2017
18:24:19

AxiS
10.10.2017
18:25:15
Смотря что чекают
может контент на странице

Nikolay
10.10.2017
18:27:08

Constantine
10.10.2017
18:27:26
может тупо формы сабмитят

Google

Konstantin
10.10.2017
18:32:32
парни никто opencv3 не юзает на go?

AxiS
10.10.2017
18:38:01

Мерлин
10.10.2017
19:27:25
GopherCon 2017: Alan Shreve - grpc: From Tutorial to Production https://youtu.be/7FZ6ZyzGex0 #golang
http://gocv.io/ is making OpenCV 3 easier for #golang devs, e.g. face detection in 60 lines of Go.
By… https://twitter.com/i/web/status/917554768402354177

Konstantin
10.10.2017
21:14:13

Kirill
11.10.2017
04:21:48

Valentin
11.10.2017
07:14:12
там чота сложное чтоль?

Daniel
11.10.2017
07:14:40
элементарное, но почему-то ни у кого нет

Maxim
11.10.2017
07:17:27
gramework - это самый поппулярный фрейм на go?
смотрю на его репозиторий и понимаю, что уж совсем нет)))
У этого чувака звездочек будет по-больше
https://github.com/qiangxue

Никита
11.10.2017
07:19:18
самый популярный фреймворк на goodlang

Valentin
11.10.2017
07:20:09
этот китаец же контрибьютор в yii
я вообще в первый раз слышу про gramework

Alexander
11.10.2017
07:20:48
еще до токого как go появился

Maxim
11.10.2017
07:21:03
уже год не пилит

Valentin
11.10.2017
07:21:11
yii так себе, так что я бы не стал даже смотреть его го-поделку

Andrew
11.10.2017
07:21:42

Никита
11.10.2017
07:21:50

Daniel
11.10.2017
07:21:52