Fastumkruk
Да походу понятно, в чем дело. Сервер не может с одного ип одновременно всех авторизовать и отправить запрос и скорее всего не дает авторизовать следущего, пока первый не разлогиниться...
Fastumkruk
Наверное поэтому он то 2 пользователя авторизирует, то 4.
Denis
ну, например. многопоточность тут никак тебе не поможет
Denis
раз он не дает одновременно авторизоваться
Илья
Cat
GOPROCS=1 случайно не стоит?
Dmitry
Denis
и на что ты намекаешь?)
Dmitry
1.5 секунды выполняется вся программа
Dmitry
в каждой рутине задержка 1 секунда
Denis
верно, потому что ты ж time.Sleep на это поставил
Илья
Fastumkruk
Какой итог на данный момент: Все 5 горутин запускаються меньше чем за секунды, на каждую го рутину создаеться свой WebSocket клиент. Но почему то за раз сервер не может авторизовать сразу 5 человек в секунду, а делает это со скростью 1-2 пользователя в секунду.
Kirill
Fastumkruk
Функция send() проста:
Открываем сокет,
Посылаем авторизацию,
Читаем ответ,
Посылаем запрос,
Выводим лог с секундами.
Итог: заняло 10 секунд что бы это все провернуть. Почему не атворизовывает кажого в своей го рутине со скоростью 1 пользователь в секунду. Итого хотя бы 5 выходило.
(ааа ладно)
Kirill
есть base64 url compat
Kirill
можешь не париться и заюзать его)
Andrey
Ммм. гляну, попробую. Но вопрос тогда получается остается)
Kirill
не остается - https://github.com/valyala/fasthttp/blob/master/args.go#L456-L484
Fastumkruk
Fastumkruk
Andrey
Kirill
Kirill
но тут уж я не могу помочь - у меня слишком мало информации о вашем кейсе
Andrey
Ну да, если плюсов нет, то не поломается. Может действительно совпадение было, что плюсов не было. Спасибо в общем
Kirill
Aliaksandr я вот что давно спросить хотел - вот есть в fhttp кеш .gz, как вы в компании варите этот кеш? или просто при загрузке новых версий файлов .gz от них трёте?
Kirill
Aliaksandr
Kirill
кто не видел - https://github.com/golang/go/issues/24301 приехали, коллеги, proposal accepted
🏳️ Phil
Kirill
на тему этого - что же дальше: https://research.swtch.com/vgo-accepted
Andrey
На вход у меня просто приходит base64 со знаком +, который превращается в пробел. Просто показалось, что раньше значения QueryArgs не преобразовывались
Andrey
но в целом понятно, спасиб
Kirill
А в двух словах поясни
dep мертв, в go изобретают новый package.json, названный go.mod, а это всё в целом называют vgo
🏳️ Phil
Понял
Kirill
но в итоге скачивание может стать пошустрее. чтобы скачать cockroachdb в zip формате, как сможет делать vgo, нужно около 10 секунд, но потребуется около 3-4 минут, чтобы сделать git clone
Kirill
Kirill
иногда просто выбирать не приходится, и нужно отдавать файлы с конкретными именами, и их периодически обновлять
Aliaksandr
да. Но лучше все-таки либо добавлять версию файла в его название либо использовать хэш от содержимого файла в качестве его названия, как это рекомендует фейсбук с мозиллой. https://hacks.mozilla.org/2017/01/using-immutable-caching-to-speed-up-the-web/
Kirill
это я знаю 🙃
у меня есть кейсы, когда нужно определенные названиия сохранять
Kirill
хотя было бы удобно иметь подобную опцию в fasthttp.FS
Kirill
но мой PR в ридми у тебя висит с 15 февраля :)))
Aliaksandr
типа периодически проверять время модификации файла и пересоздавать gz файл, если его время создания меньше времени модификации оригинального файла?
Kirill
Aliaksandr
хз. Лучше в форке это сделать и убедиться, что оно будет работать как надо. Потом можно замержить в fasthttp, если доберусь до него
Aliaksandr
Может, кому-нибудь пригодится, чтобы меньше обновляли статические файлы в вебе:
> 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
ну - gramework 2.0 по планам будет на новом движке, а для gramework 1.0 иногда хочется и завендорить с патчами, если разрешениие дашь на это %)
Aliaksandr
конечно - лицензия же BSD - разрешает делать, что хочешь )
Kirill
Kirill
Aliaksandr
одно и то же
Aliaksandr
я не юрист, но вроде различий почти нет
Kirill
есть)
Aliaksandr
какие?
Kirill
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]
Kirill
Aliaksandr, ты о какой из версий?
Aliaksandr
юристы любят все запутать
Kirill
я не юрист, но над греймом потрудилась довольно большая команда юристов
Kirill
пришлось разбираться
Aliaksandr
я подразумеваю лицензию, разрешающую делать с кодом все что угодно, в т.ч. распространять бинари без исходников
Aliaksandr
при желании можно, но не обязательно, упомянуть источник кода
Aliaksandr
MIT и BSD вроде обязывают упоминать источник кода с оригинальной лицензией
Kirill
я, кстати, небольшой кусок кода взял из fasthttp, но мне там нужно было заменить используемые типы. по твоей лицензии достаточно было дописать вот это https://github.com/gramework/gramework/blob/dev/adaptor.go#L38-L43
Kirill
и, естественно, https://github.com/gramework/gramework/blob/dev/third_party_licenses/fasthttp
Kirill
Maxim
Вот я читаю по диагонали драму по vgo и не могу понять как он будет работать
Maxim
С dep всё понимание было экстремально сжатым: всё кладётся в вендор, ненужные куски кода можно оттуда снести, обновление вендора - по требованию. Содержание коммитится вместе с живым кодом, всё рядом. Больше ничего
Maxim
Имея на руках vgo я не имею ни малейшего представления как это должно работать, что я хочу получить
Kirill
почти та же история
Kirill
но уже без toml/lock файлов в том виде, как мы привыкли с dep
Maxim
Вроде меня уверяют, что создавать версионные ветки не надо, особо больших изменений производить не надо. А что делать-то мне, как разработчику пакета/приложения если я что-то делаю с нуля и хочу версионировать как теперешний goway?
Maxim
Как работать с зависимостями, если они сохранены через dep? Вдруг мне опасно применять тактику "ну хрен с ним, снесу нынешнюю заморозку и качну новый через vgo"
Kirill
go.mod сделать надо будет, а там вписать нужные версии зависимостей. это в теории.
Nik
А как проверить, закрыт канал или нет перед записью в него, не читая из него ничего?
Kirill
ты пробовал гуглить вообще?
Maxim