Всё о разработке | Леонид Ченский
542 subscribers
71 photos
6 videos
2 files
62 links
Рассказываю об актуальных проблемах, с которыми сталкивался в своей работе. Делюсь полезными материалами, курсами, статьями и просто своими мыслями.

GitHub: https://github.com/moguchev
Linkedin: https://www.linkedin.com/in/leonid-chenskii-b034a9229
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Ставь 🔥, если так было и ❤️, если не закомо)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥176🤣3💯2
Минута новостей. Теперь можно получить сертификат IT-шника.
Попробую пройти на этой неделе 😅
😁8🤡3🔥1🤣1🆒11
Обработка ошибок в 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👎11
🔥 На этой неделе было жарко — и не только из-за погоды.

Мне досталась задача с категорией «что это вообще такое?» — реализовать аутентификацию в БД через 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👍203🆒31
А какого «кабанчика» выберешь ты на выходных?)
😁206🤣4👍3
Ozon Tech Community Platform Meetup

20 июня | 19:00 | Москва и онлайн

Команда платформы Ozon раскроет в красках с чем сталкивается и какие решения внедрили!

Регистрация — занимайте себе место заранее.
🔥42🆒211
В Go 1.25 подъедет синтаксический сахар для WaitGroup. Это, конечно, здорово, однако такое уже давно реализовано в библиотеке github.com/sourcegraph/conc. Могли бы добавить больше конструкций...

В своих проектах охотно использую conc, а вы?
🔥10💔3👍2🆒21
В продолжение к предыдущему посту...

в Go 1.25
- появится новый пакет synctest для удобного тестирования concurrency кода (реально долгожданная вещь)
- json/v2 - "быстрее, выше, сильнее"
- GOMAXPROCS теперь корректно работает в контейнерах
- Новый эксперементальный сборщик мусора Green Tea (обещает работать лучше при аллокации маленьких объектов в большом количестве)

Больше деталий можно найти в гайде тут
👍83
В этом году Ozon снова делает большую инженерную конференцию E-CODE. На этот раз я член программного комитета секции Backend и объявляю сбор заявок📲

Если вы — миддл+ и глубоко копаете в Go, C# или Java, нам есть о чём поговорить.

🔍 Что мы ищем:
— Хардкорные доклады (пару настоящих мясных штук)
— Практические и универсальные темы, понятные всем из бэкенда

👂 Что особенно хочется услышать в этом году:

👩‍💻 Go
— Внутрянка Go, сети оптимизации и новые фичи языка, которые принесли пользу
— Архитектура больших приложений
— Как писать масштабируемый Go-код
— Нативные решения (не коробки)
— Работа с БД: что используете, как, зачем, полехные лайфхаки и workaround

👩‍💻 C#
— Архитектура, паттерны, практики — с оглядкой на реальный опыт
— И тоже — глубже, чем поверхностная обёртка SDK

👩‍💻 Java
— Без Spring'а, пожалуйста (ничего личного)
— Теория языковых фич
— Сборщики мусора и внутренняя кухня JVM

👩‍💻 Универсальное (для всех языков):
— Алгебраические типы данных
— Отказоустойчивость: гарантии доставки и обработки
— Архитектурные подходы, применимые в любой стеке

Если вы давно хотели рассказать что-то сложное, важное, нетиповое — самое время.

🔗 Подать доклад можно по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
18🔥7👍42
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 мест, поэтому оставляйте заявку, чтобы не упустить возможность. Бронирование бесплатное и не обвязывает к покупке.

➡️ Заполнить анкету предзаписи
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥64333👍2
ПРИГЛАШАЮ НА E-CODE

Осталось чуть более месяца до конференции E-Code от Ozon Tech.

Я приглашаю вас на секцию Backend, которая состоится 13 сентября.

Отобрали лучшие доклады для вас: доклады будут как на тему Go, C#, Java , так и на общие темы.


Также будет много других секций на любой вкус😉

Успейте зарегистрироваться и до встречи!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🆒5👍4
Пожалуй лучшее объяснение, почему я оставляю вещи на стуле😅
😁23👍5💯2
Как фреймворк для построения REST API на Go вы используете
чаще всего?
Anonymous Poll
20%
Gin
11%
Echo
4%
Gorilla
27%
gRPC-gateway
39%
Просто посмотреть 🙂
2🗿222
Чтобы было честно:) Какой из этих фреймворков используете чаще всего для построения 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, …)
🗿32
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 лет, чтобы выйти на уровень эксперта…

Но давайте честно: а можно ли быстрее?

Ведь далеко не все рабочие задачи реально качают скилл. Можно годами решать однотипные тикеты и оставаться на том же уровне.

По-настоящему мы растём, когда сами ищем новое, пробуем, экспериментируем, ошибаемся и исправляемся. Не ждём «особой задачи», которая вдруг нас вытащит на новый уровень, а сами становимся источником своего роста.

Потому что правда проста: ни ваш руководитель, ни компания, ни коллеги, ни даже ментор не заинтересованы в вашем развитии так, как вы сами.
За ваши навыки отвечаете только ВЫ.

За последние три года я провёл десятки собеседований с инженерами и заметил одну закономерность: лучшие офферы получают не те, кто много лет просидел на одном месте, а те, у кого разнообразный опыт и работа с разными технологиями и они не останавливаются в развитии своих скилов.

А когда и что нового вы в последний раз изучили в своей сфере?
👍103💯3🔥1
🚀 PostgreSQL в микросервисах на Go

📆 25 августа в 19:00 по МСК пройдет бесплатный открытый урок по микросервисам, как в BigTech от Леонида Ченского (Team Lead в Ozon и ех-декан Route256)

На открытом уроке:
- изучишь основы эксплуатации: пуллеры, репликация, patroni, шардирование
- узнаешь почему микросервисам нужна своя база данных: паттерн Database per Service
- поймешь подходы к SQL-запросам: sql/database, pgx, билдеры запросов, ORM, кодогенерация
- изучишь миграцию схем с goose и best practices, которые помогут не сломать прод

Зарегистрировать на бесплатный открытый урок можно по ссылке

Кто я | Навигация | Спасибо
👍5🔥52🆒1
PostgreSQL в микросервисах на Go

Наконец-то дошли руки. Выкладываю запись c открытого урока:

📺 YouTube
📺 Rutube

И материалы:

👩‍💻 GitHub

Поделитесь в комментариях, что вам интересно в данной теме? О чем бы вы хотели узнать поподробнее? С какими трудностями и болями сталкиваетесь при работе с БД?
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3🔥22🆒1