me && it
36 subscribers
58 photos
5 videos
48 links
Тут высказываю свое ИМХО, а так же делюсь интересностями и неинтересностями соответственно 🛰️
Download Telegram
Так, следом за Линусом Торвальдсом остальные ребята из Open Source сообщества продолжают отклонять pull request'ы от русских разработчиков.

Теперь тенденция проросла еще и в Java сообщество. Если быть точнее, то в reactor-core - одно из самых популярных решений, реализующее реактивный подход к разработке ПО и входящее в огромную экосистему Spring Framework.

Русский парень из Яндекса реализовал функционал, который, кстати, очень приглянулся сообществу, но один из maintainer'ов проекта в итоге просто закрыл ПР с вот таким вот сообщением (линк):
Thank you for this contribution. Unfortunately, as a project stewarded by Broadcom, we are unable to accept contributions from Russian sources due to Broadcom export policy at this time. Thanks for your continued use of Spring.


Забавно, что чуть ниже другой пользователь (похоже тоже из России) просто скопировал изменения и создал другой ПР от своего имени (линк)
Возможно оба разраба из одной команды и все же очень хотят, чтобы эти изменения попали в основную ветку проекта, либо второй чел просто подлетел на хайп (вряд ли).

В общем, очень грустно это, особенно учитывая, что это происходит в Open Source сообществе, где, казалось бы, нет места политике (по крайне мере - не должно быть)🤔🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
3😁1
Все руки не доходили рассказать об MDC (Mapping Diagnostic Context) в Java и Spring.

Немного о проблеме, которую можно решить, используя этот инструмент.

Представим, что у нас есть большой (или не очень) RESTful сервис, запросы которого проходят через множество слоев приложения и каждый запрос выполняется асинхронно. 

Как в любом приложении у нас есть множество мест, где происходит логирование различной информации.
И вот представим, что нам частенько нужно будет смотреть логи, которые связанны с одним конкретным запросом (грубо говоря, проследить trace запроса по всему нашему приложению и его слоям). Причем запросов у сервиса огромное количество - фильтрация по времени не подходит.

Как решить эту проблему? Очевидно, что нужно для каждого запроса завести свой request-id.

Можно пойти очень простым путем и прямо в самом контроллере генерировать id и в каждый метод, где происходит какое-либо логирование, прокидывать дополнительным параметром этот request-id.
В таком случае лог везде будет выглядеть как-то так:

log.info("Some log message. Request-ID: {}", requestId);

Везде пропихивать и прописывать этот request-id - очень неудобно.

Для этого существует MDC - контекст (Thread Local-ный), содержащий различные диагностические метки, которыми можно обогащать свой лог.
Достаточно просто настроить logback-appender, который будет из MDC доставать информацию и выводить в консоль.
Тогда добавление request-id будет выглядеть так:

MDC.put("request-id", requestId);
try {
invokeSomeMethod();
} finally {
MDC.clear();
}

В таком случае, при правильно настроенном appender'е, каждый лог будет обогащаться уникальным идентификатором запроса.

Можно пойти дальше и написать свой WebFilter, который будет автоматически генерировать и добавлять в MDC любую полезную информацию, а так же добавить возможность с помощью header'ов самому переопределять id запроса (для отладки, например).
Возможно кто-то не знал, но у Telegram есть полностью изолированное тестовое окружение, в котором можно совершенно спокойно тестировать своих ботов без аффекта на реальных пользователей.

Чтобы получить туда доступ, нужно создать отдельный Telegram-аккаунт в этом окружении (можно использовать тот же номер, что и на основном аккаунте) -> инструкция

После чего, как обычно, написать BotFather'у и получить токен.

Тестовое окружение позволяет эмулировать покупки, проводить end-to-end тестирование и многое другое, что очень хочется проверить, но без костылей.

Референс на полную документацию по тестированию Telegram-ботов -> тык

Референс на крутую статью про это от ребят из beeline -> тык
🔥3
Ozon планирует нанимать индусов, чтобы закрыть кадровый голод в IT-секторе (реф).

Эта новость последовала вслед за информацией о том, что некоторые компании нанимают выходцев из Африки на IT-вакансии:
Наибольший интерес российские работодатели ранее проявляли к ИТ-специалистам из Зимбабве, Камеруна и Кении. Также они готовы принять в штат жителей некоторых азиатских и европейских государств. В настоящее время этот список стран уже пополнили Индия, Узбекистан и Таджикистан.


Готовимся к резкому снижению стоимости труда русских айтишников?💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Не могу не поделиться этим шедевром:
Media is too big
VIEW IN TELEGRAM
Метал-группа Nanowar of Steel выпустила трек под названием HelloWorld․java

Текст песни полностью состоит из рабочего кода Hello World на Java, и звучит прекрасно

r/#videos
Ну что-же, приехали…

Ждем полной блокировки Google на территории России?🤢
Please open Telegram to view this post
VIEW IN TELEGRAM
Ну, эта новость кажется позитивной.

Мне лично последнее время (2 года+-) из Viber только спам-звонки приходили и мусорная черная реклама.
Имхо, не большая потеря.

Но все равно немного настораживает - WhatsApp-то не хочется терять🧊
Please open Telegram to view this post
VIEW IN TELEGRAM
me && it
Я сегодня криптоканал с прогнозами. А я ведь знал, что он поднимется, но все равно не закупился 😔😔😔 По моим прогнозам он скакнет до 80к, дальше халвинг и он должен упасть обратно до 40к😬😬
Ну, зато мы убедились, что мои прогнозы говно крипта невероятно неустойчива и непредсказуема (это и так было очевидно).

Но вообще интересно, как долго будет продолжаться рост. Когда-нибудь этот пузырь же лопнет, да?🌈
Please open Telegram to view this post
VIEW IN TELEGRAM
Круто когда open-source фреймворки/библиотеки/инструменты развиваются.

Но не круто когда разработчики выпиливают какое-то API и при этом не пишут как/чем его можно заменить.

Так поступили крутые дяди разрабы Flyway (популярный инструмент миграции баз данных) -> тык
Они просто обозначили метод устаревшим, к удалению в 9 версии, но без какой-либо информации о том, чем же можно будет его заменить.

В итоге вместо того, чтобы быстренько заменить метод на что-то другое, приходится идти раскапывать документацию, читать форумы и issues на GitHub, дабы починить проблему (выпиленный метод нельзя просто удалить и радоваться жизни)

PS: не надо мне в комментах писать, что там просят использовать setIgnoreMigrationPatterns - он принимает на вход строку => хуй пойми что туда передавать
👍2
Ко мне иногда обращаются с вопросами типа:
- "Какой pet-проект посоветуешь делать?"
- "Хочу проверить себя в сложной боевой задаче, что посоветуешь запилить?"

И, к сожалению, мне не всегда удается придумать что-то стоящее и интересное (ведь pet-проект это в первую очередь про интерес)

Поэтому обращаюсь к вам, дорогие читатели, какой бы pet-проект вы посоветовали сделать?
Может есть какая-то нерешенная задача, которую хотели бы сами решить, но не доходят руки?
Или есть крутая идея, но нет понимания как подойти к ее решению.

А может даже сами уже что-то реализовали, но интересно было бы посмотреть, как это делает кто-то другой.

В любом случае: Welcome to comments👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Все-таки новости про массовые сокращения IT-шников оказались правдой.

В Т1 (бывший Иннотех, дочка ВТБ) массово сокращают айтишников.

В Positive Technologies аналогично сокращают рабочие места.

Без внимания не остались дочки Сбера (СберМегамаркет, ЕАптека и тд).

VK тоже засветился, но, кажется, там не все так серьезно, как у ребят выше.

Не прикольно как-то, честно говоря, учитывая высказывания западных компаний про ИИ 🤖
😬😬😬😬
Please open Telegram to view this post
VIEW IN TELEGRAM
😍1
Предостережение недели:
Не используйте никакие ORM'ки (особенно ебучий Hibernate) для сложных и долгоживущих проектов/сервисов.


Уж поверьте, лучше писать руками запросы, чем потом тратить кучу дней, копаясь в кишках ORM'ки и пытаясь разобраться в возникших проблемах.

Особенно больно, когда по какой-то причине нужно обновиться на новую мажорную версию - прямой путь в многодневный увлекательный (нет) дебаг кишков фреймворка.
Как правило, всегда есть 2-3 места (повезет, если не больше) в коде, где все внезапно развалится.

Поэтому лучше заранее откажитесь от соблазна не писать сикуэльки руками.
Хотя для маленьких проектов можно в целом пренебречь этим советом.

PS: что-то я зачастил с постами, теперь ухожу в закат (но это не точно)
Отмигрировал 29 микросервисов и их зависимотей с Spring Boot 2.7 на Spring Boot 3.2.

Это очень крутой опыт, который больше никогда не захочется повторять.

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

Топ самых хардовых проблем, с которыми я столкнулся:
1) Не адекватное поведение ObjectMapper - внезапно половина полей поменяла свое название из-за особенностей новой версии
2) Проблемы с неблокирующим построением индексов в PostgreSQL и транзакционными блокировками в миграциях Flyway 9
3) Измененное/Поломанное поведение каскадного удаления сущностей при использовании @ElementCollection и @CollectionTable в Hibernate 6
4) Поддержка двух версий Apache HttpClient для legacy-библиотек, которые так и не научились дружить с HttpClient5 - пришлось костылять и одновременно держать обе версии (client4 и client5) и дружить их между собой

Оставлю тут еще несколько основных приседаний, которые придется выполнить при миграции на Spring Boot 3.x (вдруг кто-то планирует обновляться):
1) Apache HttpClient4 -> Apache HttpClient5
2) Hibernate 5 -> Hibernate 6
3) Spring Security 5 -> Spring Security 6
4) javax -> jakarta
5) Spring Framework 5 -> Spring Framework 6

Такая миграция - это реально испытание на прочность, особенно если сервисы очень большие и с кучей зависимостей.
Если вдруг кому-то предстоит этим заняться - желаю удачи!
🔥3
СберТех (дочка Сбер'а) выпустил облачную среду разработки для профессиональных программистов с AI-ассистентом:

Platform V Works::GigaIDE Cloud — профессиональная среда разработки, которая использует вычислительные мощности облака и хранит код на сервере. В ее основе — платформа расширений Visual Studio Code, совместимая с обширной экосистемой плагинов с открытым исходным кодом


Бегом пробовать:
https://platformv.sbertech.ru/products/instrumenty-razrabotchika/works-giga-ide-cloud

💻💻💻💻💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🖕3👨‍💻3🔥2🙏2
Новая ачивка:

Сложил целый кластер ClickHouse одним запросом 💀

Умудрился написать запрос, который нашел баг в движке СУБД, после чего он ушел в бесконечные перезагрузки🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥5🔥2
Круто, теперь и я влетел в полуторачасовой дебаг из-за ChatGPT (при этом его баги я так и не починил)🤢

Решил сделать простую лабораторную работу по разработке Android-приложений при помощи нейросетки, так как мне показалось, что задачка супер простая даже для нее.

Последний раз я писал под Android еще в 8 классе на C#, а тут надо было сделать стильно-модно-молодежно в Android Studio на Kotlin.
Очевидно такого опыта у меня нет (я же все-таки тру бэкендер), поэтому звучало заманчиво потратить 20 минут на что-то, в чем я бы разбирался минимум час (ага, ага)

Короче говоря, код, который выдала нейросетка, умудрился скомпилиться, но не работал от слова совсем. Приложение запустилось, но показывало пустой экран без какого-либо контента. Дальше были мои потуги хотфиксануть то что уже есть, но безуспешно⛹️‍♂️⛹️‍♂️

Я пару раз попросил ИИ-шку починить неработающий код, но, кроме добавления логирования (которое тоже не работало, ха!) и переформулирования уже сгенеренного кода, я ничего не получил, увы.

В итоге: потраченного времени жаль, а код ChatGPT - пятикратно переваренный калл (для написания кода).

PS: может именно ChatGPT просто очень слаб в написании кода, хз
Please open Telegram to view this post
VIEW IN TELEGRAM