kostyaBro
А кот эксперт по вебсерверверам просто, он всегда их рекомендует. Но рекомендация неплохая
kostyaBro
Вообще лучше оркестратор сервисов
kostyaBro
Ну это мое имхо
kostyaBro
Потом купить 16 малинок и вытыкать втыкать из и смотреть что ниче не ломается
kostyaBro
Вот неплохое например. Фронт не обязательно
kostyaBro
откуда это?
Этой компании уже нет)
kostyaBro
Но писали скада систему и тз отлично подходит под деятельность компании
Eugene
Ребзя, всем привет Появилась потребность в парсинге некоторых данных, вот решил для этой задачи выбрать go В общем то это мое первое знакомство с ним, поэтому прошу сразу сорян, если вопрос "нубский" Написал парсер, который выбирает с базы данных условно 20 URL Затем добавляет их в канал 2 горутины парсят каждый URL и складывают по нем инфу в базу (условно код ответа сервера) Появилась проблема которую не могу понять пока что из любого количества записей всегда обрабатывает на 1 меньше К примеру выбрали 20 обработалось 19 (Вставилось в базу) Может быть я чего то не вижу Ткните пожалуйста носом Для простоты кода - в примере берем 20 записей из базы и проставляем всем код 200 https://go.dev/play/p/YnKBIkRdWTn
Andrey
добавь waitgroup (чтоб наверника) и посмотри, изменится ли чтото
Eugene
добавь waitgroup (чтоб наверника) и посмотри, изменится ли чтото
Спасибо большое, пойду копать в эту сторону
Кіт ✙
Gc много работает?
не, там ж память не выделяется
Кіт ✙
вот, чистенько
Andrey
вот, чистенько
а сколько у тебя рутин вообще? может много времени тратится на переключения контекста между ними. у меня когда-то была такая проблема
Кіт ✙
все изменения ведь касаются только парсера, а парсер не трогает горутины
Кіт ✙
есть ощущение, что по каким-то причинам, какие-то железные штуки перестали отрабатывать так, как делали это раньше может, в кэш влезать перестало
Илья
вот, чистенько
в сравнении с прошлыми бенчами время выполнения стало меньше?
Andrey
есть ощущение, что по каким-то причинам, какие-то железные штуки перестали отрабатывать так, как делали это раньше может, в кэш влезать перестало
надеюсь ты понимаешь, что до железа ты наврятли доберешься в своем коде. Го не тот язык для такого "волшебства"
Кіт ✙
в сравнении с прошлыми бенчами время выполнения стало меньше?
это не совсем те бенчмарки, я меряю перф всего http сервера целиком (кроме tcp сервера)
Кіт ✙
ну так вот, раньше, без изменений в парсере, весь http сервер производил полный цикл обработки запроса за 3600нс (в случае с большым количеством заголовков). Сейчас он делает это за 5600нс
Кіт ✙
по памяти всё чисто - жрёт только аллокация мапы для заголовков ответа, и рантайм
Кіт ✙
а ты какую-то свою магия придумал для буфферов, или что?
ну как. Теперь парсер вместо одного прохода по заголовкам, делает два - в первый мы копируем из входных данных в буфер для блока заголовков, заодно посчитывая количество значений
Кіт ✙
а во втором проходе, мы уже собственно парсим заголовки (просто нарезая буфер кусочками), и беря слайсы строк (для значений) со стэка
Илья
глазком пробежался по коду и увидел много операций с каналами
Кіт ✙
глазком пробежался по коду и увидел много операций с каналами
не, то синхронизационные штуки, на которых держится вся модель сервера. Операции с каналами там занимают относительно мало времени
Кіт ✙
60% здесь это пробуждения
да, то есть, рантайм у меня сейчас фактически сжирает больше, чем сам код. И мне это кажется странным
Илья
ну так возьми графический профайлинг и посмотри
Кіт ✙
можно, конечно, попробовать go:nosplit на некоторые функции
Кіт ✙
не который в иде, а графы
а разве оно сможет другую картину показать?
Илья
по крайней мере будет понятнее
Илья
сделай бенч всей обработки запроса
Кіт ✙
сделай бенч всей обработки запроса
именно парсера? Да, здесь уже поинтереснее картина, не знаю, почему сразу не догадался
anhckie
есть вариант как-то заэвойдить ответ от сервера "You need to enable JavaScript to run this app" при вызове его курлом?
anhckie
а-ля "включить js" для этого запроса, чтоб получить необходимый ответ вместо заглушки
Eugene
Обычно редирект делают Изначально плюют заглушкк в которой должна выполнится JS потом редирект на морду сайта Той же js Если не сработал редирект ЖС то извини
kostyaBro
есть вариант как-то заэвойдить ответ от сервера "You need to enable JavaScript to run this app" при вызове его курлом?
Выполнить js. Если я правильно помню так делает react, ибо react рендерится jsom
anhckie
А что курлишь если не секрет
уже не у компа, домен забыл )) крч эксплорер с циферкой по валюте
anhckie
в целом погуглил, обнаружил это морокой для себя и просто заюзал другой ресурс. но, если кто имел опыт решений такой ситуевины, велком )
kostyaBro
ага, и вытянуть из дома дивак
Тебе рассказать про API?
kostyaBro
вопрос риторический
kostyaBro
не надо ничего из дома вытягивать, особенно курсы валют
anhckie
Тебе рассказать про API?
ресурс не предоставляет открытого api
anhckie
где ава?
вернул, собакен настройки сбил, когда телефон лизал 🥲
Илья
я по нику сразу распознаю только Костю броу
Илья
да
kostyaBro
разрешил еще 18к пользователям смотреть)
kostyaBro
ресурс не предоставляет открытого api
просто есть куча ресурсов с апи валют
kostyaBro
даже самые официальные
anhckie
просто есть куча ресурсов с апи валют
там не все так просто, многие источники отдают не совсем валидные данные, но мне удалось найти альтернативу и ладно на том
kostyaBro
или мосбиржу
kostyaBro
просто гениальная отсылка от нейросети, прям порадовала
Илья
он и не такое может
Илья
попробуй с ним тесты писать
kostyaBro
да скоро буду
kostyaBro
я нормально опробовал уже
kostyaBro
он доку за меня пишет
kostyaBro
но просто 42 прям зашло
kostyaBro
тела req resp для апи protobuf писать было одно удовольствие
kostyaBro
сразу с нужными аннотациями))
kostyaBro
а это в доке было Или пишешь If user with permission for ODO_XXX а он такой do request for ODO_YYY, user will receive 403 error.
kostyaBro
kostyaBro
кароче переучиваемся с Ctrl+с Ctrl+v на Tab Enter Tab Enter
Илья
я на боковую кнопку мыши поставил