453 subscribers
69 photos
25 files
83 links
Пишу иногда интересно, а иногда не очень. Предложения, сотрудничество @Javacoding_bot
加入频道
Меня часто спрашивают, в чем главное отличие опытных разрабов от начинающих...
Обсуждения Log4j не утихают, а мы и рады почитать что-нибудь интересное. Вот, например, подробный разбор уязвимости. Автор пошел длинным изощренным путем, но статья как минимум расширяет кругозор (знали, как можно легко поднять LDAP?), и дискуссия в комментариях увлекательная.
Martin Fowler et al., “Refactoring: Improving the Design of Existing Code”
Fowler_et_al_Refactoring_Improving_the_Design_of_Existing_Code337s.pdf
1.9 MB
Все основное, что нужно знать о рефакторинге – здесь.

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

🔸 задумаетесь, а так уж ли верен принцип: «работает – не трогай»;

🔸 поймете, как эффективнее проводить анализ некачественного кода;

🔸 узнаете, как разгрести беды в легаси коде.

Написана, правда, не самым простым языком, придется привыкнуть к стилю, но это того стоит.
Если затянувшаяся новогодняя расслабленность уже грозит превратиться в скуку, самое время почитать что-нибудь интересное. Вот, например, статья о визуализации структур данных в Java – пригодится, если вам нужно конкретизировать свои абстрактные представления и разобраться в структурах данных и алгоритмах.

Материал повторяет содержание доклада с прошлогодней конфы SnowOne, посмотреть его можно здесь.

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

К чему это я? Появилась статья про полезные, но не самые популярные функции Java. Очень рекомендую, наверняка и у вас будет мысль в стиле: «А что, так можно было?», когда, например, будете читать про функции, связанные с Java Concurrency.
Benjamin J Evans, David Flanagan, “Java in a Nutshell”
Java in a Nutshell, 7th Edition.pdf
12.1 MB
Подойдет начинающим и всем, кому под рукой нужен универсальный справочник. Соглашусь с теми, кто считает эту книгу подходящей альтернативой работам Хорстманна – действительно хорошее пособие.

🔺 никакой воды и заумных описаний, все четко и по делу;

🔺 много наглядных примеров;

🔺понятно рассказывается обо всех необходимых инструментальных средствах.

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

📌 Важнее всего отлично разбираться в стеке проекта – от софта до железа, без этого никакие хитрости не помогут.

📌 Проводить fault tree analysis, чтобы обнаружить самые уязвимые места системы, оценить потенциальный ущерб и подумать, как его предотвратить. Подробнее о fault tree analysis рассказывают здесь.

📌 Знать, какие функции включает в себя отказоустойчивость и какими средствами их можно реализовать. В помощь – обзор библиотек отказоустойчивости на JVM.
С момента обнаружения уязвимости Log4Shell прошло уже больше месяца (на всякий случай: здесь и здесь писал о способах устранения), но мы продолжаем открывать новые аспекты проблемы до сих пор. Вот, например, статья о том, как связаны Log4Shell и Security Manager, а еще о том, почему библиотекам, сборкам, идентификациям и функциям нельзя доверять. Пригодится, чтобы понять, какие дополнительные меры безопасности можно внедрить на своих проектах.
Дж. Хайнеман, Г. Поллис, С. Селков, «Алгоритмы. Справочник с примерами на C, C++, Java и Python»
Хайнеман_Д_,_Поллис_Г_,_Селков_С_Алгоритмы_Справочник_с_примерами.pdf
25.1 MB
Продолжаю делиться литературой по алгоритмам. Сегодня у нас очень прикладная книга, которой можно пользоваться прямо во время реализации проектов.

🔹 алгоритмы не просто разобраны, но и распределены по сложности;

🔹 авторы пишут, какие условия необходимы, чтобы добиться максимальной эффективности по каждому алгоритму;

🔹 указано, какие структуры данных лучше подойдут в том или ином случае.

Обратите внимание, что теории здесь почти нет – это именно справочник для практического применения.
Немного мудрости от нейросети ☝️
Всем поклонникам отечественного производства 👨‍💻

Вышел подробный разбор строения российского процессора «Эльбрус-8С». Автор рассматривает внутренности, строение ядра, подсистемы памяти и коммутацию соединений, а еще делает смелый вывод о том, какой фактор послужит ключевым для развития российской микроэлектроники в целом.

Кстати, про вердикт Сбера в отношении Эльбрусов я рассказывал здесь.
Работая на корпорацию, я не раз сталкивался с проблемами, которых можно было бы избежать, если бы команде удавалось поддерживать однотипность кода. Оно и понятно: огромное количество микросервисов, толпа разработчиков – в таких условиях проблемы неизбежны.

Часто правильным решением оказывается смена подхода. Вот, например, здесь пишут о том, как внедрить в backend-разработку Contract-First и какие бонусы это принесет (самый главный – экономия человеко-часов, конечно). Это не панацея, но повышения эффективности с помощью такого подхода добиться можно.
data-structures-into-Java.pdf
1.3 MB
Hilfinger P., Data Structures (into Java)

Книга охватывает все самые важные темы, которые нужно изучить, занимаясь структурами данных. Не все рассмотрены одинаково подробно: про concurrency хотелось бы, конечно, побольше, но уж что есть (кстати, на канале уже были ссылки на статью и даже книгу по теме).

📝 рассматриваются сложность алгоритмов, деревья, хеширование и другие необходимые аспекты;

📝 написано максимально просто, без труднодоступных для понимания фрагментов;

📝 много тщательно подобранных примеров.
Интересно, когда это он успевает ходить в спортзал?...