Бодрый кодер
رفتن به کانال در Telegram
Меня зовут Лев, я руководитель направления в ПСБ. Это мой личный блог о DevOps, разработке, системном анализе, AI и управлении IT-командами. Делюсь своими мыслями, инсайтами, полезными инструментами и тем, что меня вдохновляет. Автор: @nemirlev
نمایش بیشتر506
مشترکین
اطلاعاتی وجود ندارد24 ساعت
+17 روز
+730 روز
آرشیو پست ها
506
https://gitstory.pankajk.tech/ - Прикольный сервис. Вводишь свой ник на github и он подвит итоги твоего кода на нем. Прям очень красиво.
506
Тут короче новость проскочила - «MinIO прекратил развитие открытой кодовой базы в пользу проприетарного продукта».
Может кто знает альтернативы, со свободной, не вирусной лицензией?
506
Repost from Cybred
🔥 10/10 React4shell
В официальном блоге React только что выкатили пост про CVE-2025-55182, которая позволяет в один запрос получить RCE. Уязвимы версии 19.0.0, 19.1.0, 19.1.1, 19.2.0, а еще фреймворки Next.JS, Vite, Parcel, и Waku.
Just when I thought the day was over… CVE-2025-55182 shows up 🫠Сам баг находится в RSC-рантайме, который принимает данные и небезопасно десериализует их. Запатчиться сейчас почти никто не успел, а уязвимость можно считать одной из самых критичных, которые находили в React за все время.
506
+1
Китайцы выпустили новую нейросеть - LingGuang, она набирает пользователей быстрей чем ChatGPT.
Ее прикол в том что она не просто отвечает, а генерирует мини приложения.
Я проверил, во первых быстро, во вторых выглядят красиво.
Доступна в AppStore, для регистрации нужен китайский номер телефона.
506
+1
Huawei представил новый роутер, с поддержкой WiFi 7.
Дизайн - мое почтение.
Характеристики тоже в порядке - Основной блок оснащается 512 МБ ОЗУ и 128 МБ постоянной памяти и поддерживает скорость до 688 Мбит/с в диапазоне 2,4 ГГц и до 2882 Мбит/с в диапазоне 5 ГГц с общей пиковой в 3570 Мбит/с.
Конечно есть пару портов 2.5 Гбит/с, уже в принципе стандарт. Стоит 183$.
506
Вообщем, сегодня поймал второе откровение.
GitHub CI вырвался вперёд — и не за счёт “мощи”, а именно за счёт удобства.
Когда тебе нужно быстро поднять пайплайн, GitHub ощущается как «дружелюбный сосед»: открыл, выбрал нужные actions, связал пару шагов — и через 5-10 минут у тебя уже всё крутится и билдится. Без боли, без танцев, без «почему оно не нашло runner», или почему тут нужны сертификаты.
В GitLab же каждый новый проект превращается в маленькое приключение. То синтаксис чуть иначе, то раннер что-то не так понял, то половину вечера проводишь в постоянных тестах-конфигурациях, чтобы добиться банального результата.
И да — в корпоративной среде с хорошей культурой можно собрать такую же магию через импорты и готовые шаблоны. Но вот где сила сообщества — там и настоящая скорость. А GitHub здесь просто разрывает.
#devops #ci #github #gitlab #инженерия
506
А я, кажется, влюбился в testcontainers.
Короче… Я же знал, что они существуют. Видел где-то в статьях, слышал на конференциях, даже пару раз пролистывал доку. И каждый раз думал: «Ну да, прикольно, может потом».
И вот этот «потом» наконец случился.
Сейчас я как раз собираю для коллег гошный шаблон микросервиса — чтобы любой мог стартануть без боли, сразу писать бизнес-логику, а не копаться в инфраструктурной рутине. Ну и логично было заодно нормально пройтись по инструментам, которые давно висели в списке «надо потом попробовать».
И тут я такой: ладно, давай посмотрим на эти ваши Testcontainers…
Блин. Кайф.
Типа прям честный кайф.
Ты просто из кода поднимаешь Kafka, Postgres, MinIO — что угодно — и тестируешь как человек. Быстрая проверка CRUD? Пара секунд. Проверка продюсера/консьюмера — ещё пару секунд. И всё. Никакого «а давайте поднимем докер-композ», никакого «подождите, сейчас локально настрою». Стартуют почти как юниты с моками, только результат реальный, живой, как в проде.
И вот это чувство… когда тесты, которые должны страдать минуту, вдруг проходят за 3 секунды — я такой:
где вы были всю мою жизнь?
Теперь жалею, что не внедрил это раньше в команде. Но зато в новый шаблон — войдут по-любому.
Если кто-то до сих пор сомневается: не сомневайтесь. Это как впервые попробовать нормальный автотестовый фреймворк после ручных проверок в Postman — назад уже не хочется.
P.S. Вот так например выглядет поднятие постгри:
pgContainer, err := postgresContainer.Run(ctx,
"postgres:18",
postgresContainer.WithDatabase("testdb"),
postgresContainer.WithUsername("testuser"),
postgresContainer.WithPassword("testpass"),
testcontainers.WithWaitStrategy(
wait.ForLog("database system is ready to accept connections").
WithOccurrence(2).
WithStartupTimeout(30*time.Second),
),
)
#golang #testcontainers #микросервисы #testing #qa #backend #go506
Интервьювер сломал процесс собеса, попросил закрыть глаза и ответить на следующий вопрос :)
#пятничныйюмор
506
Идет жаркая дискуссия (прочитайте комменты к первой статье), о том стоит ли доверять сертификатам Минцифры.
Основная проблема, возможность MITM атаки, автор вполне доступно объяснил как быстро это можно сделать после установки сертом.
Будучи молодым, я бы возбудился на такое, но в текущих условиях наверное без разницы - стоит да стоит. Если условному «товарищу майору», нужно будет посмотреть что я делаю на промтхабе - он всегда может постучаться в дверь. И скорей всего так и будет.
Поэтому в целом можно спать спокойно.
https://habr.com/ru/articles/968218/
506
Repost from Раньше всех. Ну почти.
⚡️Яндекс представил Промптхаб — площадку, где можно найти идеи для использования ИИ, добавлять свои предложения и пройти бесплатные курсы по нейросетям, рассказали в компании.
«Любой человек, даже не знакомый с нейросетями, сможет найти для себя что-то полезное и тут же воспользоваться идеей в чате с Алисой AI. Например, составить план рекламной кампании или попросить обустроить домашний офис — потребуется лишь указать в инструкции собственные параметры. Пользователи и компании могут добавлять на платформу свои промпты», говорится в сообщении.
506
Сегодня понедельник — самое время выдать свой вариант по странам-регионам-городам.
Сначала, конечно, тянет сделать что-то такое:
`
/countries/{id}/regions/{id}/cities/{id}`
Красиво же! Иерархично! Прямо видно структуру данных!
Но это ощущение проходит примерно через пять минут — как только начинаешь думать о реальном использовании.
Во-первых, все эти сущности живут сами по себе: у страны есть ID, у региона есть ID, у города есть ID.
Зачем же закапывать их друг в друга, если каждый можно получить напрямую?
Во-вторых, фильтрация потом превращается в цирк:
если тебе нужны «все города страны с населением больше 100к и без метро», то в лесенке из URL это выглядит максимально странно.
Поэтому финальный, рабочий и жизненный вариант у меня такой:
1. Каноничные ресурсы — плоские
GET /countries
GET /countries/{country_id}
GET /regions
GET /regions/{region_id}
GET /cities
GET /cities/{city_id}
Каждая сущность доступна сама по себе.
Это убирает лишние проверки, упрощает клиентам жизнь и делает API устойчивым.
2. Отношения — через коллекции
(чтобы можно было удобно «провалиться этажом ниже»)
GET /countries/{country_id}/regions
GET /regions/{region_id}/cities
GET /countries/{country_id}/cities
Это удобно для навигации — но не обязательно для CRUD.
3. Фильтры — через query, а не через URL-матрешку
сделать что-то такое:
`/countries/{id}/regions/{id}/cities/{id}`
Красиво же! Иерархично! Прям
Это гибче, чище и не ломается от каждого нового поля.
Если бы это был реальный сервис, я бы ещё добавил сортировки, пагинацию и лёгкое кеширование — справочники всё-таки.
Но в общем — вот так.506
Завтра понедельник, а это повод размяться не много перед рабочей неделей.
Представьте что вам надо сделать контракт, REST. Для трех сущностей - Страна, Регион, Город.
Как бы вы сделали? Свой вариант завтра вечером опубликую.
506
Языку Go сегодня 16 лет. Из наверное самых классных функций последнего время - это новый сборщик Green Tea, который рока в бета.
Причем не верится в такую дату честно говоря. Я помню когда смеялись что языку года 2-3, а требуют опыт 5 лет. Прям себя сильно олдом почувствовал.
#go #golang
506
Докладчики-победители Analyst Days #21
🥇1 место — Аня Гурова
🥈2 место — Аня Казаченко
🥉3 место — Лев Немировский
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
