@gogolang

Страница 1113 из 1630
Sergey
30.05.2018
11:41:25
ничего не прояснило

мб у вас httpclient синхронный? откуда я знаю

Google
Denis
30.05.2018
11:41:46
Есть такой принт. Суть не меняется
в смысле не меняется? принт появляется после 10ти секунд?

как все sendы отработали?

он должен появится мгновенно и никто никого ждать не должен

а почему 10 секунд работают ваши запросы - надо смотреть _send. может у тебя там time.Sleep( 10 * time.Second) написано

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

Fastumkruk ✅
30.05.2018
11:42:58
в смысле не меняется? принт появляется после 10ти секунд?
Такой принт выход сразу, т.е. он ставит сразу 5 send() на выполнение, меньше чем за секунду.

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

Fastumkruk ✅
30.05.2018
11:43:17
ну, все правильно, а чего говоришь что синхронно-то работает?
Да, ве верно. НО. Все же в логах отправки запросов приходит все поочередно до 10 секунд

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
for i := 0; i < 5; i++ { if key != "NULL" { go send_(users[i].key) } } Запустит функцию send() пять раз, т.е. он должен сразу 5 функций запустить. Что может тормозить функцию и заставлять ее ждать заврешение пердыдщуего вызова функции?
я возможно уже поздно, но go запускает горутины при определенных условиях, не сразу после вызова ключевого слова`go`. чтобы форсирвоать запуск горутин можно сделать переход в другой вызов, либо вызвать специальный метод runtime.GoSched()

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

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 на это поставил

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

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

Андрэ
30.05.2018
12:46:15
последний коммит в мастере был в декабре, когда ты последний раз делал go get -u? или ты был завендорен на версии 2016 года?
Вроде бы простой вопрос, но затрудняюсь сказать. Скорее всего не был завендорен на 2016 как мне кажется. Но вроде именно после dep ensure -update это вылезло. У меня base64 в гет параметре, до этого работало.

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
https://github.com/toby3d/telegram
А есть какие нибудь примеры?

Kirill
30.05.2018
12:53:27
А есть какие нибудь примеры?
https://github.com/toby3d/MyPackBot

Fastumkruk ✅
30.05.2018
12:54:28
Андрэ
30.05.2018
12:54:51
не остается - https://github.com/valyala/fasthttp/blob/master/args.go#L456-L484
Хм, то есть, этот код там давно получается. Тогда странно прям.

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

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
Aliaksandr я вот что давно спросить хотел - вот есть в fhttp кеш .gz, как вы в компании варите этот кеш? или просто при загрузке новых версий файлов .gz от них трёте?
мы не используем fasthttp для отдачи статики. А так да - при обновлении файлов нужно удалить соответствующие *.gz файлы, чтобы они пересоздались снова. Хотя лучше в имени файла хранить его версию и не обновлять уже существующие файлы, чтобы не ломать кэширование ни на сервере, ни у клиентов

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 файл, если его время создания меньше времени модификации оригинального файла?

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 - разрешает делать, что хочешь )

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
ты пробовал гуглить вообще?

Страница 1113 из 1630