me && it
36 subscribers
58 photos
5 videos
48 links
Тут высказываю свое ИМХО, а так же делюсь интересностями и неинтересностями соответственно 🛰️
Download Telegram
Нашел прекрасную находку для каждого айтишника, который так или иначе катает релизы в продакшен и немного верит в гороскопы.

Пользуйтесь: https://deployhoroscope.ru/
Последнее время начал все чаще замечать, что при использовании Open Source библиотек и различных открытых API приходится сталкиваться с множеством различных багов, неточностей.

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

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

Например, в рамках Leetty мне пришлось распотрошить/переписать ощутимую часть популярной библиотеки для работы с Telegram Bot API, потому что для сложной логики и большого количества компонентов ее возможностей не хватает - упираешься в ограниченность архитектуры либы.

В рамках этого же проекта столкунлся с проблемой в одном из компонентов Spring Framework, о чем писал вот тут.

Каждый раз руки чешутся взять и все это дело переписать💆‍♂️💆‍♂️
Я бы на самом деле с кайфом, время б только найти...
Не, так-то я тоже не гений проги, но все же - хочется рабочий и гибкий код😢
Please open Telegram to view this post
VIEW IN TELEGRAM
Опа, а вот и импортозамещение JDK подъехало.

Интересно, чисто теоретически может ли быть такое, что даже OpenJDK заблочат на территории России🧐

P.S. В комментах ребят из Axiom JDK уже успели облить каловыми массами -> линк
Please open Telegram to view this post
VIEW IN TELEGRAM
I use Arch, btw😡

Хотел бы я тут отметить одного человека, но думаю он и сам поймет.

P.S. Не пропаганда наркотиков, просто смешной мем!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Так, следом за Линусом Торвальдсом остальные ребята из 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: что-то я зачастил с постами, теперь ухожу в закат (но это не точно)