This media is not supported in your browser
VIEW IN TELEGRAM
Ставь 🔥 , если так было и ❤️, если не закомо)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤6🤣3💯2
Обработка ошибок в Go остаётся прежней — и это прекрасно.
Недавняя статья от команды Go напомнила:
остаётся основным способом обработки ошибок. Несмотря на десятки предложений, язык не уходит в магию, а сохраняет простоту и читаемость. И слава богу!
От себя добавлю: мне близка такая идеология. Ещё в C++ я впервые почувствовал радость, когда увидел
— вместо try/catch можно было просто передавать ошибку по ссылке:
P.S. Подробно о работе с ошибками рассказываю в бесплатном уроке на своем курсе Go!
Недавняя статья от команды Go напомнила:
if err != nil
остаётся основным способом обработки ошибок. Несмотря на десятки предложений, язык не уходит в магию, а сохраняет простоту и читаемость. И слава богу!
От себя добавлю: мне близка такая идеология. Ещё в C++ я впервые почувствовал радость, когда увидел
boost::error_code
— вместо try/catch можно было просто передавать ошибку по ссылке:
boost::system::error_code ec;
do_something(ec);
if (ec) {
// обработка ошибки
}
Никаких исключений, никакой ловли в неожиданных местах — всё явно и под контролем. Go взял эту идею и довёл до максимальной чистоты. Удобно, прозрачно, по делу.P.S. Подробно о работе с ошибками рассказываю в бесплатном уроке на своем курсе Go!
👍9🔥6🆒3👎1 1
🔥 На этой неделе было жарко — и не только из-за погоды.
Мне досталась задача с категорией «что это вообще такое?» — реализовать аутентификацию в БД через JWT. Да-да, не в backend-приложении, а прямо в базу данных.
⠀
На первый взгляд — странная идея. На второй — всё ещё странная. Но раз надо, значит, разберёмся.
Первая остановка — знакомство с CQL и SASL. Сначала всё выглядело как очередная боль с патчами в движок БД. Но потом пришлагениальная здравая мысль: «А может, не будем трогать исходники БД, а обойдёмся встроенным механизмом
⠀
Почему бы и нет. Чтобы быстро проверить гипотезу, накидал мини-сервер на Python, который выступает в роли PAM-скрипта. Почему Python? Потому что
не надо компилировать,
править и деплоить, когда нужно ковыряться в auth flow прямо на тачке, скорость важнее всего.
На бумаге всё работало. В реальности — нет.
Документация уверяла, что всё ок. Но мы же с вами знаем: лучшая документация — это исходный код.
⠀
Погружаюсь в C++ код БД — и, неожиданно, кайфую.
Там тебе и
Увы, выяснилось, что в моей версии БД нужного функционала просто нет — поддержка
Собираем образ с нужной версией. Через ONE HOUR LATER я вспоминаю, почему не скучаю по C++: сборка проекта — это медитация, но против воли.
⠀
Обновил базу. Начинается весёлый блок под названием «танцы с бубном вокруг
Теперь самое интересное: пробуем отправить JWT. И… ничего! Ошибка! Даже не ошибка — тишина. В логах — пусто. Скрипт даже не вызвался.
⠀
Значит, где-то на пути client → DB → saslauthd → pam → мой скрипт
что-то сломалось. Подозрение на длину токена.
Лезу в код БД — там всё ок, длина пароля кодируется 2 байтами, ограничений на буфер жестких нет, можно пихать токены хоть длиной 65536. Лезу глубже — в исходники saslauthd (да-да, снова та самая документация).
И вот он, убийца надежды:
Ладно, значит, пишем свой
Снова Python, снова быстрая проверка. И... ура! Всё работает!
Теперь можно коннектиться к БД с JWT в 2025 году. Без хаков, без патчей. Просто красиво.
Осталось дело за малым: переписать всё на Go, для скорости, стабильности идушевного спокойствия перформанса. Но это уже не сегодня…
Итого, за неделю удалось потрогать Python и Go, вспомнить C и С++, поперекладывать байтики и доказать работоспособность идеи.
А у вас как неделя прошла? Были задачки на стыке "невозможно" и "ну попробуем"?
Мне досталась задача с категорией «что это вообще такое?» — реализовать аутентификацию в БД через JWT. Да-да, не в backend-приложении, а прямо в базу данных.
⠀
На первый взгляд — странная идея. На второй — всё ещё странная. Но раз надо, значит, разберёмся.
Первая остановка — знакомство с CQL и SASL. Сначала всё выглядело как очередная боль с патчами в движок БД. Но потом пришла
saslauthd
+ pam
?»⠀
Почему бы и нет. Чтобы быстро проверить гипотезу, накидал мини-сервер на Python, который выступает в роли PAM-скрипта. Почему Python? Потому что
не надо компилировать,
править и деплоить, когда нужно ковыряться в auth flow прямо на тачке, скорость важнее всего.
На бумаге всё работало. В реальности — нет.
Документация уверяла, что всё ок. Но мы же с вами знаем: лучшая документация — это исходный код.
⠀
Погружаюсь в C++ код БД — и, неожиданно, кайфую.
Там тебе и
coroutines
, и lambda
, и futures
, и promises
, и iterators
. Весь код на C++23 как он есть. После Go, где всё прямолинейно, минималистично и «пресно», это было как попасть в пряничный домик. Уровень сахара подскочил до предельного уровня, частота пульса подскочила. Еще пару дней придется отходить…Увы, выяснилось, что в моей версии БД нужного функционала просто нет — поддержка
saslauthd
появилась позже.Собираем образ с нужной версией. Через ONE HOUR LATER я вспоминаю, почему не скучаю по C++: сборка проекта — это медитация, но против воли.
⠀
Обновил базу. Начинается весёлый блок под названием «танцы с бубном вокруг
saslauthd
и pam
». Попытка номер ∞, и наконец — успех. Скрипт принимает тестовый admin/admin — можно жить!Теперь самое интересное: пробуем отправить JWT. И… ничего! Ошибка! Даже не ошибка — тишина. В логах — пусто. Скрипт даже не вызвался.
⠀
Значит, где-то на пути client → DB → saslauthd → pam → мой скрипт
что-то сломалось. Подозрение на длину токена.
Лезу в код БД — там всё ок, длина пароля кодируется 2 байтами, ограничений на буфер жестких нет, можно пихать токены хоть длиной 65536. Лезу глубже — в исходники saslauthd (да-да, снова та самая документация).
И вот он, убийца надежды:
#define MAX_BUF_LEN 256
🙃 Да, кто ж в 2000-х думал, что кто-то будет пихать в пароль пару килобайт JSONа. Протокол может, а реализация — нет.Ладно, значит, пишем свой
saslauthd
.Снова Python, снова быстрая проверка. И... ура! Всё работает!
Теперь можно коннектиться к БД с JWT в 2025 году. Без хаков, без патчей. Просто красиво.
Осталось дело за малым: переписать всё на Go, для скорости, стабильности и
Итого, за неделю удалось потрогать Python и Go, вспомнить C и С++, поперекладывать байтики и доказать работоспособность идеи.
А у вас как неделя прошла? Были задачки на стыке "невозможно" и "ну попробуем"?
2👍20❤3🆒3 1
Ozon Tech Community Platform Meetup
20 июня | 19:00 | Москва и онлайн
Команда платформы Ozon раскроет в красках с чем сталкивается и какие решения внедрили!
Регистрация — занимайте себе место заранее.
20 июня | 19:00 | Москва и онлайн
Команда платформы Ozon раскроет в красках с чем сталкивается и какие решения внедрили!
Регистрация — занимайте себе место заранее.
🔥4❤2🆒2⚡1 1
В Go 1.25 подъедет синтаксический сахар для WaitGroup. Это, конечно, здорово, однако такое уже давно реализовано в библиотеке github.com/sourcegraph/conc. Могли бы добавить больше конструкций...
В своих проектах охотно использую conc, а вы?
В своих проектах охотно использую conc, а вы?
🔥10💔3👍2🆒2 1
В продолжение к предыдущему посту...
в Go 1.25
- появится новый пакет
- json/v2 - "быстрее, выше, сильнее"
-
- Новый эксперементальный сборщик мусора
Больше деталий можно найти в гайде тут
в Go 1.25
- появится новый пакет
synctest
для удобного тестирования concurrency кода (реально долгожданная вещь)- json/v2 - "быстрее, выше, сильнее"
-
GOMAXPROCS
теперь корректно работает в контейнерах- Новый эксперементальный сборщик мусора
Green Tea
(обещает работать лучше при аллокации маленьких объектов в большом количестве) Больше деталий можно найти в гайде тут
antonz.org
JSON evolution in Go: from v1 to v2
Reviewing the key changes in json/v2.
👍8❤3
В этом году Ozon снова делает большую инженерную конференцию E-CODE. На этот раз я член программного комитета секции Backend и объявляю сбор заявок📲
Если вы — миддл+ и глубоко копаете в Go, C# или Java, нам есть о чём поговорить.
🔍 Что мы ищем:
— Хардкорные доклады (пару настоящих мясных штук)
— Практические и универсальные темы, понятные всем из бэкенда
👂 Что особенно хочется услышать в этом году:
👩💻 Go
— Внутрянка Go, сети оптимизации и новые фичи языка, которые принесли пользу
— Архитектура больших приложений
— Как писать масштабируемый Go-код
— Нативные решения (не коробки)
— Работа с БД: что используете, как, зачем, полехные лайфхаки и workaround
👩💻 C#
— Архитектура, паттерны, практики — с оглядкой на реальный опыт
— И тоже — глубже, чем поверхностная обёртка SDK
👩💻 Java
— Без Spring'а, пожалуйста (ничего личного)
— Теория языковых фич
— Сборщики мусора и внутренняя кухня JVM
👩💻 Универсальное (для всех языков):
— Алгебраические типы данных
— Отказоустойчивость: гарантии доставки и обработки
— Архитектурные подходы, применимые в любой стеке
Если вы давно хотели рассказать что-то сложное, важное, нетиповое — самое время.
🔗 Подать доклад можно по ссылке
Если вы — миддл+ и глубоко копаете в Go, C# или Java, нам есть о чём поговорить.
— Хардкорные доклады (пару настоящих мясных штук)
— Практические и универсальные темы, понятные всем из бэкенда
— Внутрянка Go, сети оптимизации и новые фичи языка, которые принесли пользу
— Архитектура больших приложений
— Как писать масштабируемый Go-код
— Нативные решения (не коробки)
— Работа с БД: что используете, как, зачем, полехные лайфхаки и workaround
— Архитектура, паттерны, практики — с оглядкой на реальный опыт
— И тоже — глубже, чем поверхностная обёртка SDK
— Без Spring'а, пожалуйста (ничего личного)
— Теория языковых фич
— Сборщики мусора и внутренняя кухня JVM
— Алгебраические типы данных
— Отказоустойчивость: гарантии доставки и обработки
— Архитектурные подходы, применимые в любой стеке
Если вы давно хотели рассказать что-то сложное, важное, нетиповое — самое время.
Please open Telegram to view this post
VIEW IN TELEGRAM
E-CODE 2025 — IT-конференция от Ozon Tech // 13 и 14 сентября // Москва и онлайн
Инфраструктура и DevOps, С# и Go, iOS и Android, машинное обучение, тестирование, менеджмент, приглашенные гости.
1❤8🔥7👍4 2
BACKEND-МИТАП В МОСКВЕ
Сентябрь обещает быть жарким по митапам и конференциям😅
Приглашаю вас на мощный митап для backend-разработчиков!
Я буду одним из спикеров и поделюсь полезными инсайтами. Ждём всех, кто хочет прокачать свои навыки, обменяться опытом и завести крутые знакомства в IT.
📆 Когда: 20 сентября
📍 Где: Москва, Лофт-пространство «Весна»
Спартаковский переулок 2с1, подъезд №7
5 минут от м. Красносельская
7 минут от м. Бауманская
📋Программа
15:00 – 15:30 – Общий сбор
15:30 – 15:50 – Нетворкинг - разделимся на группы, пообщаемся и заведем новые знакомства
15:50 – 16:30 – Игорь Панасюк (Senior в Яндекс)
«Особенности и ловушки модели памяти в Go: тайны синхронизации»
16:30 – 17:10 – Леонид Ченский (TeamLead в OzonTech)
«Пишем микросервисы на Go как в BigTech, с нуля»
17:10 – 17:30 – Перерыв на фуршет
17:30 – 18:10 – Александр Алексеев (CTO в BigTech)
«Зачем и как изучать алгоритмы»
18:10 – 18:50 – Владимир Балун (ex-TeamLead в Яндекс)
«Как пройти System Design интервью: взгляд со стороны интервьювера и кандидата»
18:50 – 19:00 – Завершение контентной части, фотосесия
19:00 – 20:00 – Фуршет и нетворкинг на площадке
20:00 - Afterparty: по желанию едем в бар неподалеку и продолжаем общение в неформальной обстановке
🎁 Подарки за лучшие вопросы:
— книги по backend разработке от спикеров
— сертификаты на бесплатное обучение на любом из курсов школы
— бесплатные mock-собеседования в it-interview.io
— скидки на обучение в нашей школе
❗️Билеты еще не в продаже, но уже доступна предзапись. В зале до 200 мест, поэтому оставляйте заявку, чтобы не упустить возможность. Бронирование бесплатное и не обвязывает к покупке.
➡️ Заполнить анкету предзаписи
Сентябрь обещает быть жарким по митапам и конференциям
Приглашаю вас на мощный митап для backend-разработчиков!
Я буду одним из спикеров и поделюсь полезными инсайтами. Ждём всех, кто хочет прокачать свои навыки, обменяться опытом и завести крутые знакомства в IT.
Спартаковский переулок 2с1, подъезд №7
5 минут от м. Красносельская
7 минут от м. Бауманская
📋Программа
15:00 – 15:30 – Общий сбор
15:30 – 15:50 – Нетворкинг - разделимся на группы, пообщаемся и заведем новые знакомства
15:50 – 16:30 – Игорь Панасюк (Senior в Яндекс)
«Особенности и ловушки модели памяти в Go: тайны синхронизации»
16:30 – 17:10 – Леонид Ченский (TeamLead в OzonTech)
«Пишем микросервисы на Go как в BigTech, с нуля»
17:10 – 17:30 – Перерыв на фуршет
17:30 – 18:10 – Александр Алексеев (CTO в BigTech)
«Зачем и как изучать алгоритмы»
18:10 – 18:50 – Владимир Балун (ex-TeamLead в Яндекс)
«Как пройти System Design интервью: взгляд со стороны интервьювера и кандидата»
18:50 – 19:00 – Завершение контентной части, фотосесия
19:00 – 20:00 – Фуршет и нетворкинг на площадке
20:00 - Afterparty: по желанию едем в бар неподалеку и продолжаем общение в неформальной обстановке
— книги по backend разработке от спикеров
— сертификаты на бесплатное обучение на любом из курсов школы
— бесплатные mock-собеседования в it-interview.io
— скидки на обучение в нашей школе
❗️Билеты еще не в продаже, но уже доступна предзапись. В зале до 200 мест, поэтому оставляйте заявку, чтобы не упустить возможность. Бронирование бесплатное и не обвязывает к покупке.
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥6 4❤3 3 3👍2
ПРИГЛАШАЮ НА E-CODE
Осталось чуть более месяца до конференции E-Code от Ozon Tech.
Я приглашаю вас на секцию Backend, которая состоится 13 сентября.
Отобрали лучшие доклады для вас: доклады будут как на тему Go, C#, Java , так и на общие темы.
Также будет много других секций на любой вкус😉
Успейте зарегистрироваться и до встречи!
Осталось чуть более месяца до конференции E-Code от Ozon Tech.
Я приглашаю вас на секцию Backend, которая состоится 13 сентября.
Отобрали лучшие доклады для вас: доклады будут как на тему Go, C#, Java , так и на общие темы.
Также будет много других секций на любой вкус
Успейте зарегистрироваться и до встречи!
Please open Telegram to view this post
VIEW IN TELEGRAM
E-CODE 2025 — IT-конференция от Ozon Tech // 13 и 14 сентября // Москва и онлайн
Инфраструктура и DevOps, С# и Go, iOS и Android, машинное обучение, тестирование, менеджмент, приглашенные гости.
🔥7🆒5👍4
Как фреймворк для построения REST API на Go вы используете
чаще всего?
чаще всего?
Anonymous Poll
20%
Gin
11%
Echo
4%
Gorilla
27%
gRPC-gateway
39%
Просто посмотреть 🙂
❤2🗿2 2 2
Чтобы было честно:) Какой из этих фреймворков используете чаще всего для построения REST API на Go?
Anonymous Poll
12%
Gin
8%
Echo
5%
Gorilla
20%
gRPC-gateway
8%
Fiber
17%
Chi
3%
fasthttp
15%
Ванильный net/http
12%
Кодогенерация (oapi-gen, go-swagger, …)
🗿3❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Первый месяц на позиции TeamLead выглядит именно так😅
3😁18🤣6💯4🔥1
Говорят, чтобы стать профессионалом в любой сфере, нужно 10 000 часов практики.
Если тратить на развитие по 40 часов в неделю — это 250 недель, то есть примерно 5 лет непрерывной работы (именно поэтому в вакансиях для уровня senior требуют опыт работы от 5 лет). Надо 5 лет, чтобы выйти на уровень эксперта…
Но давайте честно: а можно ли быстрее?
Ведь далеко не все рабочие задачи реально качают скилл. Можно годами решать однотипные тикеты и оставаться на том же уровне.
По-настоящему мы растём, когда сами ищем новое, пробуем, экспериментируем, ошибаемся и исправляемся. Не ждём «особой задачи», которая вдруг нас вытащит на новый уровень, а сами становимся источником своего роста.
Потому что правда проста: ни ваш руководитель, ни компания, ни коллеги, ни даже ментор не заинтересованы в вашем развитии так, как вы сами.
За ваши навыки отвечаете только ВЫ.
За последние три года я провёл десятки собеседований с инженерами и заметил одну закономерность: лучшие офферы получают не те, кто много лет просидел на одном месте, а те, у кого разнообразный опыт и работа с разными технологиями и они не останавливаются в развитии своих скилов.
А когда и что нового вы в последний раз изучили в своей сфере?
Если тратить на развитие по 40 часов в неделю — это 250 недель, то есть примерно 5 лет непрерывной работы (именно поэтому в вакансиях для уровня senior требуют опыт работы от 5 лет). Надо 5 лет, чтобы выйти на уровень эксперта…
Но давайте честно: а можно ли быстрее?
Ведь далеко не все рабочие задачи реально качают скилл. Можно годами решать однотипные тикеты и оставаться на том же уровне.
По-настоящему мы растём, когда сами ищем новое, пробуем, экспериментируем, ошибаемся и исправляемся. Не ждём «особой задачи», которая вдруг нас вытащит на новый уровень, а сами становимся источником своего роста.
Потому что правда проста: ни ваш руководитель, ни компания, ни коллеги, ни даже ментор не заинтересованы в вашем развитии так, как вы сами.
За ваши навыки отвечаете только ВЫ.
За последние три года я провёл десятки собеседований с инженерами и заметил одну закономерность: лучшие офферы получают не те, кто много лет просидел на одном месте, а те, у кого разнообразный опыт и работа с разными технологиями и они не останавливаются в развитии своих скилов.
А когда и что нового вы в последний раз изучили в своей сфере?
👍10❤3💯3🔥1
Forwarded from Владимир Балун
🚀 PostgreSQL в микросервисах на Go
📆 25 августа в 19:00 по МСК пройдет бесплатный открытый урок по микросервисам, как в BigTech от Леонида Ченского (Team Lead в Ozon и ех-декан Route256)
На открытом уроке:
- изучишь основы эксплуатации: пуллеры, репликация, patroni, шардирование
- узнаешь почему микросервисам нужна своя база данных: паттерн Database per Service
- поймешь подходы к SQL-запросам: sql/database, pgx, билдеры запросов, ORM, кодогенерация
- изучишь миграцию схем с goose и best practices, которые помогут не сломать прод
Зарегистрировать на бесплатный открытый урок можно по ссылке
Кто я | Навигация | Спасибо
📆 25 августа в 19:00 по МСК пройдет бесплатный открытый урок по микросервисам, как в BigTech от Леонида Ченского (Team Lead в Ozon и ех-декан Route256)
На открытом уроке:
- изучишь основы эксплуатации: пуллеры, репликация, patroni, шардирование
- узнаешь почему микросервисам нужна своя база данных: паттерн Database per Service
- поймешь подходы к SQL-запросам: sql/database, pgx, билдеры запросов, ORM, кодогенерация
- изучишь миграцию схем с goose и best practices, которые помогут не сломать прод
Зарегистрировать на бесплатный открытый урок можно по ссылке
Кто я | Навигация | Спасибо
👍5🔥5❤2🆒1