Vadim
🏁Александр
да
Alexander
От рук зависит. Можно написать одинаково плохо
🏁Александр
hello world будет быстрее на go таки 🙂
aadz
а говорили, что Go намного хуже PHP, если плохо писать. На PHP работает, хоть и плохо, а на Go часто даже скомпилировать нельзя :(
ketamine ranch
aadz
это он и есть :)
aadz
А вопрос, что быстрей - не звучит, как троллинг? :)
Alexander
Кстати да, не написали скорость чего важна: программы или программиста
Alexander
Или скорость превращения кода в не поддерживаемое ̶г̶о̶в̶н̶о̶ легаси
Pavel
Ребята, может кто подсказать, очень часто возникают ошибки в кастомном HttpClient с такой конфигурацией:
client := &http.Client{
Transport: &nethttp.Transport{
&http.Transport{
DialContext: (&net.Dialer{
Timeout: 3 * time.Second,
KeepAlive: 10 * time.Second,
DualStack: true,
}).DialContext,
MaxIdleConns: 100,
IdleConnTimeout: 20 * time.Second,
TLSHandshakeTimeout: 1 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
},
},
}
Такой клиент создаётся на каждый запрос к серверу и посылает запрос на другой сервер. Локально не репродюсится, значит дело в нагрузке. Кто-то сталкивался с такой проблемой ?
Ошибка dial tcp: i/o timeout
У тебя тайм-аут три секунды 😅
ceiling cat
У тебя тайм-аут три секунды 😅
Не влияет ровным счётом. Бекенды работают как надо, и руками всегда отвечают вовремя. Но проблема именно в кастомном HttpClient.
Pavel
Roman
𝗠𝗮𝗿𝘂𝗳
как можно группировать роуты без сторонних фреймворков
𝗠𝗮𝗿𝘂𝗳
net/http
Pavel
Pavel
Pavel
Хватает ли пропускной способности для отправки запросов и получения ответов?
ceiling cat
А через клиент по умолчанию ошибки есть? 😅 Какой объём запросов в секунду исходящий?
Я же говорю, раньше мы использовали обычный http.Get, который вызывал DefaultClient.Do, который как бы был синглтоном для своего пакета (насколько я понял).
Сейчас ошибок меньше, но они всё равно присутствуют. Наш графкуель сервер обращается к трём бекендам, это просто невозможно, чтобы у всех трёх был этот таймаут на dial. это подтверждает то, что раньше с http.Get всё работало стабильно.
Нагрузка вообще слабая, около 10-20 запросов в секунду.
Pavel
Последняя от версия го?
ceiling cat
Pavel
ceiling cat
Pavel
Не создавайте.
Pavel
Звучит так, что у вас с сетью не очень что-то и от большого количества установления подключений что-то тупит.
Pavel
Создайте клиент один раз и дайте ему кешировать подключения к этим трём бекам.
ceiling cat
Не создавайте.
А есть какой-то аргумент, почему нельзя создавать каждый раз клиента? Мы, к сожалению, не смогли продебажить этот момент, вот и мечемся от одного "решения" к другому.
ceiling cat
Pavel
Pavel
Keep Alive все дела.
Pavel
ceiling cat
Keep Alive все дела.
🤔 Спасибо, попробуем покопать в этом направлении.
Ещё у нас в одном методе делается resp, err := client.Do
И в этом же методе return resp.Body.
То есть, коллер не закрывает resp.Body, его закрывает другая функция, куда возвращается resp.Body.
Pavel
Это нормально закрывать боди в другом месте. Главное не забыть его закрывать.
ceiling cat
Могут из-за утечки быть таймауты ?
Pavel
Через defer например.
Pavel
Pavel
Но это нагрузка на сетевой стек, да.
Pavel
Ну вы всегда можете сделать netstat на хосте и посмотреть — может больше информации даст.
ceiling cat
Artem
𝗠𝗮𝗿𝘂𝗳
ага
🏁Александр
посоветуйте mock для sql
🏁Александр
что-то библиотек опять наплодили
Alexey
У всех github мозги ебет?
Egor
У меня окич
Anton
Не знаю, гитхаб ли это, но у меня пакет с gopkg.in не устанавливается =(
Ilia
gopkg прилег
Ilia
Точнее не может до гитхаба достучаться
Alexey
Говорят, что гитхаб начал выкатывать новый интерфейс, мб дело в этом.
Anonymous
Aleksandr
Anonymous
Привет всем. Может кто подсказать по пакету "go-dkim". Сгенерировал 2 ключа private/public.pem 1024 бит rsa, делаю подпись письма, на базе private.pem, вроде как в примере на github. На выходе, в почтовике пусто, такое впечатление что он даже ничего не делает.
Сам ключ пропускаю через:
private, _ := ioutil.ReadFile("private.pem")
block, _ := pem.Decode(private)
ну и в options.PrivateKey добавляю block.Bytes
🏳️ Phil
Смотрите. Есть xml:
<root>
<block>
<items>
<item>1</item>
<item>2</item>
</items>
</block>
<block>
....
Можно для стандартного декодера сделать структуру, чтобы он пропускал вот этот сраный 'items'?
ceiling cat
Привет всем. Может кто подсказать по пакету "go-dkim". Сгенерировал 2 ключа private/public.pem 1024 бит rsa, делаю подпись письма, на базе private.pem, вроде как в примере на github. На выходе, в почтовике пусто, такое впечатление что он даже ничего не делает.
Сам ключ пропускаю через:
private, _ := ioutil.ReadFile("private.pem")
block, _ := pem.Decode(private)
ну и в options.PrivateKey добавляю block.Bytes
обрабатывай ошибки, посмотри, может, что-то не так.
Daniel
Коллеги админы, я тут анонс хакатона разрешил
Pawel
🏳️ Phil
Roman
https://azul3d.org/doc/faq.html#what-about-the-garbage-collector
однако я до сих пор сомневаюсь что рендерить в Go это хорошая идея… скриптинг игры как они это описывают - да, могу себе представить, а вот рендеринг..
Анастасия
Всем привет! Админы, привет! Разрешите мне запостить одну вакансию?
Daniel
можно, если с вилкой
Kirill
Напоминаю: вилка — это от и до)
Анастасия
Хорошо)
Вилка: 130 000 -180 000 на руки
Территориально: #Москва м.Курская
В компании есть две команды разработки на Go: одна занимается видео, другая - разработкой бизнес-логики. Вакансия открыта во второй команде.
Про возможности:
- участие в принятии архитектурных решений платформы
- минимум бюрократии (уважаем трудовой кодекс, но сотрудник не должен страдать)
- удобный рабочий график (к планеркам можно подключаться по скайпу, приезжать в офис не в часы пик, брать дни на удаленке и т.д)
Про задачи:
- Разрабатывать новый и поддерживать существующий микросервисный функционал серверной части,
- Проектировать и реализовывать API для клиентских устройств и партнерских систем,
- Разрабатывать инструменты управления и мониторинга платформы, сбора и анализа статистики,
- Анализировать и оптимизировать производительность web-сервисов платформы,
- Писать модульные, функциональные и интеграционные тесты.
Мы ищем человека с
- опытом коммерческой backend-разработки на Go или Python.
- пониманиeм принципов конкурентного программирования,
- уверенным знанием сетевых протоколов и HTTP транспорта,
- пониманием принципов построения высоконагруженных систем.
Будет здорово, если у вас уже есть навыки работы на nix-системах и вы легко разбираетесь в чужом коде.
Почему пишу про python? Потому что готовы рассматривать Python разработчиков, которые хоть немного потрогали Go и хотят в него уйти.
Artem
А почему именно с питона на го? А не с рубинов на рельсах ?
Roman
Subbotin
p0rsche
не проверяй.
Roman
Andrei 🦉
руби со своим синтаксисом вообще живет в параллельной реальности
Andrei 🦉
а к го ближе всего си, просто потому что его разрабатывали матерые сишники
Roman
Subbotin