
Fastumkruk ✅
30.05.2018
11:41:23

Sergey
30.05.2018
11:41:25
ничего не прояснило
мб у вас httpclient синхронный? откуда я знаю

Fastumkruk ✅
30.05.2018
11:41:44

Google

Denis
30.05.2018
11:41:46
как все sendы отработали?
он должен появится мгновенно и никто никого ждать не должен
а почему 10 секунд работают ваши запросы - надо смотреть _send. может у тебя там time.Sleep( 10 * time.Second) написано

Sergey
30.05.2018
11:42:54
короче, спойлер
в го нет способа без waitgroup дождаться конца рутины
(или мб черз каналы, но сути не меняет)

Fastumkruk ✅
30.05.2018
11:42:58

Denis
30.05.2018
11:43:13
ну, все правильно, а чего говоришь что синхронно-то работает?

Fastumkruk ✅
30.05.2018
11:43:17

Denis
30.05.2018
11:44:21
так покажи нам send_, что там написано? как сказал человек выше, наверняка лочат друг друга

Sergey
30.05.2018
11:44:53
короче, спойлер 2:
замени send_() на println, если не так же долго, значит проблема в send и мы занимается гаданием на кофе

Denis
30.05.2018
11:45:14
так очевидно проблема в send_ :)

Sergey
30.05.2018
11:45:37
ну а чего мы хренью страдаем

Google

Sergey
30.05.2018
11:46:05
— "покажи send()"
— "send написан правильно"
— ...

Fastumkruk ✅
30.05.2018
11:47:21
Да походу понятно, в чем дело. Сервер не может с одного ип одновременно всех авторизовать и отправить запрос и скорее всего не дает авторизовать следущего, пока первый не разлогиниться...
Наверное поэтому он то 2 пользователя авторизирует, то 4.

Denis
30.05.2018
11:48:02
ну, например. многопоточность тут никак тебе не поможет
раз он не дает одновременно авторизоваться

Fastumkruk ✅
30.05.2018
11:48:52

Илья
30.05.2018
11:53:53

Sergey
30.05.2018
12:00:49
GOPROCS=1 случайно не стоит?

Dmitry
30.05.2018
12:08:24

Denis
30.05.2018
12:09:39
и на что ты намекаешь?)

Dmitry
30.05.2018
12:10:22
1.5 секунды выполняется вся программа
в каждой рутине задержка 1 секунда

Denis
30.05.2018
12:10:38
верно, потому что ты ж time.Sleep на это поставил

Илья
30.05.2018
12:22:10

Fastumkruk ✅
30.05.2018
12:28:52
Какой итог на данный момент: Все 5 горутин запускаються меньше чем за секунды, на каждую го рутину создаеться свой WebSocket клиент. Но почему то за раз сервер не может авторизовать сразу 5 человек в секунду, а делает это со скростью 1-2 пользователя в секунду.

Kirill
30.05.2018
12:34:30

Fastumkruk ✅
30.05.2018
12:34:36
Функция send() проста:
Открываем сокет,
Посылаем авторизацию,
Читаем ответ,
Посылаем запрос,
Выводим лог с секундами.
Итог: заняло 10 секунд что бы это все провернуть. Почему не атворизовывает кажого в своей го рутине со скоростью 1 пользователь в секунду. Итого хотя бы 5 выходило.
(ааа ладно)

Андрэ
30.05.2018
12:46:15

Kirill
30.05.2018
12:46:54
есть base64 url compat
можешь не париться и заюзать его)

Google

Андрэ
30.05.2018
12:48:18
Ммм. гляну, попробую. Но вопрос тогда получается остается)

Kirill
30.05.2018
12:50:27
не остается - https://github.com/valyala/fasthttp/blob/master/args.go#L456-L484

Fastumkruk ✅
30.05.2018
12:52:48

Kirill
30.05.2018
12:53:27

Fastumkruk ✅
30.05.2018
12:54:28

Андрэ
30.05.2018
12:54:51

Kirill
30.05.2018
13:00:30
но тут уж я не могу помочь - у меня слишком мало информации о вашем кейсе

Андрэ
30.05.2018
13:02:26
Ну да, если плюсов нет, то не поломается. Может действительно совпадение было, что плюсов не было. Спасибо в общем

Kirill
30.05.2018
13:02:40
Aliaksandr я вот что давно спросить хотел - вот есть в fhttp кеш .gz, как вы в компании варите этот кеш? или просто при загрузке новых версий файлов .gz от них трёте?

Aliaksandr
30.05.2018
13:08:43

Kirill
30.05.2018
13:09:36
кто не видел - https://github.com/golang/go/issues/24301 приехали, коллеги, proposal accepted

Phil
30.05.2018
13:10:03

Kirill
30.05.2018
13:10:05
на тему этого - что же дальше: https://research.swtch.com/vgo-accepted

Андрэ
30.05.2018
13:10:20
На вход у меня просто приходит base64 со знаком +, который превращается в пробел. Просто показалось, что раньше значения QueryArgs не преобразовывались
но в целом понятно, спасиб

Kirill
30.05.2018
13:11:30
А в двух словах поясни
dep мертв, в go изобретают новый package.json, названный go.mod, а это всё в целом называют vgo

Phil
30.05.2018
13:12:18
Понял

Kirill
30.05.2018
13:14:49
но в итоге скачивание может стать пошустрее. чтобы скачать cockroachdb в zip формате, как сможет делать vgo, нужно около 10 секунд, но потребуется около 3-4 минут, чтобы сделать git clone

Google

Aliaksandr
30.05.2018
13:17:04

Kirill
30.05.2018
13:19:10
иногда просто выбирать не приходится, и нужно отдавать файлы с конкретными именами, и их периодически обновлять

Aliaksandr
30.05.2018
13:24:19
да. Но лучше все-таки либо добавлять версию файла в его название либо использовать хэш от содержимого файла в качестве его названия, как это рекомендует фейсбук с мозиллой. https://hacks.mozilla.org/2017/01/using-immutable-caching-to-speed-up-the-web/

Kirill
30.05.2018
13:26:02
это я знаю ?
у меня есть кейсы, когда нужно определенные названиия сохранять
хотя было бы удобно иметь подобную опцию в fasthttp.FS
но мой PR в ридми у тебя висит с 15 февраля :)))

Aliaksandr
30.05.2018
13:30:04
типа периодически проверять время модификации файла и пересоздавать gz файл, если его время создания меньше времени модификации оригинального файла?

Kirill
30.05.2018
13:30:44

Admin
ERROR: S client not available

Aliaksandr
30.05.2018
13:32:05
хз. Лучше в форке это сделать и убедиться, что оно будет работать как надо. Потом можно замержить в fasthttp, если доберусь до него
Может, кому-нибудь пригодится, чтобы меньше обновляли статические файлы в вебе:
> It is considered a best practice for websites to use "long caching" for serving images, _javascript_ and CSS. In long cacing if a website has a resource X.js which might change from time to time, rather than referencing X.js and giving the endpoint a short expiration date, they reference X-v1.js with a nearly infinite expiration date. When X.js changes, the website uploads X-v2.js and changes any references to use the new version. This has the benefit that the browser never needs to revalidate resources and that it sees changes instantly
https://www.ietf.org/mail-archive/web/httpbisa/current/msg25463.html


Kirill
30.05.2018
13:35:42
ну - gramework 2.0 по планам будет на новом движке, а для gramework 1.0 иногда хочется и завендорить с патчами, если разрешениие дашь на это %)

Aliaksandr
30.05.2018
13:36:13
конечно - лицензия же BSD - разрешает делать, что хочешь )

Kirill
30.05.2018
13:36:17

Aliaksandr
30.05.2018
13:36:32
одно и то же
я не юрист, но вроде различий почти нет

Kirill
30.05.2018
13:36:56
есть)

Aliaksandr
30.05.2018
13:37:06
какие?

Google

Kirill
30.05.2018
13:41:52
2-clause bsd требует от тебя приведения списка изменеий и соответствующий дисклеймер, а также бинари из 2-clause bsd кода обязаны (RFC 2119 пункт 1) повторять указанный в лицензии копирайт, список условий и соответствующий дисклеймер в документации или в материалах в поставке.
3-clause bsd требует сверху то, что ни имя организации, ни имена контрибьюторов, должны не использоваться (от слова RFC 2119 пункт 2) в маркетинговых целях без письменного на то разрешения
4-clause bsd требует, чтобы абсолютно все рекламные материалы, связанные с фичами или использованием лицензируемого софта должен иметь нотайс - This product includes software developed by the [org name]
Aliaksandr, ты о какой из версий?

Aliaksandr
30.05.2018
13:42:37
юристы любят все запутать

Kirill
30.05.2018
13:43:28
я не юрист, но над греймом потрудилась довольно большая команда юристов
пришлось разбираться

Aliaksandr
30.05.2018
13:43:58
я подразумеваю лицензию, разрешающую делать с кодом все что угодно, в т.ч. распространять бинари без исходников
при желании можно, но не обязательно, упомянуть источник кода
MIT и BSD вроде обязывают упоминать источник кода с оригинальной лицензией

Kirill
30.05.2018
13:47:03
я, кстати, небольшой кусок кода взял из fasthttp, но мне там нужно было заменить используемые типы. по твоей лицензии достаточно было дописать вот это https://github.com/gramework/gramework/blob/dev/adaptor.go#L38-L43
и, естественно, https://github.com/gramework/gramework/blob/dev/third_party_licenses/fasthttp

Maxim
30.05.2018
14:17:34
Вот я читаю по диагонали драму по vgo и не могу понять как он будет работать
С dep всё понимание было экстремально сжатым: всё кладётся в вендор, ненужные куски кода можно оттуда снести, обновление вендора - по требованию. Содержание коммитится вместе с живым кодом, всё рядом. Больше ничего
Имея на руках vgo я не имею ни малейшего представления как это должно работать, что я хочу получить

Kirill
30.05.2018
14:20:12
почти та же история
но уже без toml/lock файлов в том виде, как мы привыкли с dep

Maxim
30.05.2018
14:20:29
Вроде меня уверяют, что создавать версионные ветки не надо, особо больших изменений производить не надо. А что делать-то мне, как разработчику пакета/приложения если я что-то делаю с нуля и хочу версионировать как теперешний goway?
Как работать с зависимостями, если они сохранены через dep? Вдруг мне опасно применять тактику "ну хрен с ним, снесу нынешнюю заморозку и качну новый через vgo"

Kirill
30.05.2018
14:28:52
go.mod сделать надо будет, а там вписать нужные версии зависимостей. это в теории.

Nik
30.05.2018
16:08:26
А как проверить, закрыт канал или нет перед записью в него, не читая из него ничего?

Kirill
30.05.2018
16:09:17
ты пробовал гуглить вообще?

Maxim
30.05.2018
16:11:05