452 subscribers
69 photos
25 files
83 links
Пишу иногда интересно, а иногда не очень. Предложения, сотрудничество @Javacoding_bot
加入频道
Класс A не полностью реализует методы интерфейса B. Каким образом он должен быть определен?
Anonymous Quiz
4%
как final-класс
14%
как внутренний для другого класса
71%
как abstract-класс
2%
как private-класс
9%
как интерфейс
Cay Horstmann, “Core Java, Volume I—Fundamentals”
Core Java, Volume I―Fundamentals.pdf
45.4 MB
Первая часть одного из самых знаменитых изданий по Java.

📌 основы современного подхода к программированию;

📌 методики ООП и параллельного программирования;

📌 синтаксис и безопасность.

Если покажется сложноватой, можно попробовать начать с Эванса и Флэнагана, а к Хорстманну вернуться позднее.

Прикрепляю оригинал. Не читайте, пожалуйста, на русском, если не хотите видеть каркас коллекций Java вместо Java Collections Framework и другие переводческие приколы.
Когда PM ищет, кого бы попросить поработать на выходных
В идеальном мире код пишут так, что комментарии излишни, но в реальности, увы, это невозможно. Поэтому нужно заботиться о том, чтобы комментарии мог понять любой разработчик на проекте. Дело не только в орфографии и грамматике, но еще и в формулировках – часто они оказываются туманными и только запутывают ситуацию.

Специально для таких случаев появился плагин Comment Lint. Он анализирует текст комментариев с помощью сервиса Glvrd и показывает, как их можно улучшить. В статье – подробности об использовании и примеры работы с комментариями.
При работе с микросервисами приходится учитывать кучу факторов. Разбираться в межсервисном взаимодействии лично я начал далеко не сразу: сложнее всего было подступиться к аспекту security, так как инфы на этот счет либо мало, либо она очень поверхностная.
Автор статьи столкнулся с похожей проблемой и, исходя из своего опыта, решил описать реализацию security на конкретной задаче. Использует Spring, OAuth2, JWT и Service Account.
Ну и за обложку отдельный плюс.
В какой переменной окружения хранятся несколько корневых каталогов иерархии пакетов в файловой системе компьютера?
Anonymous Quiz
8%
PACKAGEROOT
65%
CLASSPATH
14%
ROOT
7%
CLASSROOT
6%
PACKAGEPATH
Продолжая тему микросервисов: а как дела обстоят с интеграционным тестированием? Чем больше самих микросервисов и взаимосвязей между ними, тем острее необходимость проверять, как вообще работает система и насколько ее поведение соответствует ожиданиям.

В статье описан достаточно легкий способ создания интеграционных тестов для встраивания в CI/CD-процесс. А в комментариях порекомендовали nanocloud, чтобы написание интеграционных тестов можно было встраивать прямо в процесс разработки.
Потому что переработки – верный путь к выгоранию!
Неплохие видеоуроки по Java Hibernate. Подробно освещены настройка конфигов, JPA, мапинг, а также разные запросы.

Кстати, на канале есть и другие материалы по Java (даже детальный разбор code conventions), а еще общая теория по ООП, так что рекомендую взять на заметку.
Переменные в Java делятся на 3 типа:

🔺 локальные переменные;
🔺 переменные экземпляра;
🔺 глобальные переменные.

При этом локальные переменные и переменные экземпляра нельзя объявлять как статические.

Сокрытие статических и нестатических переменных происходит по-разному, и его не следует путать с переопределением метода. Подробный разбор темы – в статье.
Какое из перечисленных выражений преобразует строковую переменную s к нижнему регистру?
Anonymous Quiz
2%
s.tolower();
5%
s.tolowercase ();
6%
s.toLower();
83%
s.toLowerCase();
4%
s.toLowercase();
Смотри не перепутай!☝️
При разработке API обычно мало задумываешься над тем, как дальше управлять жизненным циклом – это вообще происходит во вторую или в третью очередь. А вот когда-нибудь потом заниматься развитием API без предварительного планирования будет сложно.

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

🔹 на чем основана;
🔹 дубли;
🔹 null;
🔹 синхронизированность;
🔹 потокобезопасность;
🔹 тип итератора.

Помогает уложить в голове систему, ну или просто в случаях, когда нужно быстро определиться с выбором. В конце еще и типы итераторов подробно описаны (прикрепляю на картинке).
Какие данные будут значением аргумента с индексом [1] метода main() при запуске программы MyProgramme.java инструкцией: java MyProgramme Some additional argues.
Anonymous Quiz
8%
java MyProgramme
8%
java
30%
MyProgramme
20%
Some
35%
additional
Недавно спрашивали, какие ресурсы я могу посоветовать по SQL, так что вот вам парочка неплохих:

📝 SQL Academy (на русском): есть теоретическая справка и большая база задач, приближенных к реальным рабочим ситуациям. Подойдет как как начинающим, так и опытным разрабам.

📝 SQL-Tutorial и SQL-Ex (на русском): онлайн-учебник, где есть теория и разбор задач с типичными ошибками, и коллекция задач по базам данных.

📝 HackerRank (на английском): нет теоретической справки, зато задачи делятся по сложности и темам, можно зарабатывать баллы и соревноваться с другими пользователями. Новичкам может быть сложновато, так что рассчитывайте свои силы.
И уж тем более, когда меня спрашивают про код, который я писал три месяца назад.
Для микросервисных приложений: Platform V Functions и DataSpace SDK

🔸 Platform V Functions – FaaS-решение для создания безопасных Serverless-приложений на Java, Python, Golang, NodeJS. С его помощью можно загружать исходный код сервиса в виде функции в OpenShift/k8s, не создавая при этом docker-образов и не тратя время на настройку окружения.

🔸 DataSpace SDK представляет собой инструмент взаимодействия с DataSpace по протоколу JSON-RPC. Про фичи, которые пригодятся Java-разработчикам, можно подробно прочитать в статье.
IntelliJ IDEA + удаленный Podman

Полгода назад в одном проекте столкнулся с использованием в качестве системы контейнеризации Podman. Ничего особенного в этом нет, тем более, что разработчики podman, понимая распространенность docker, позаботились о том, чтобы в консоли мы чувствовали себя как дома, добавив алиасы для команд docker.

Изюминка заключалась в том, что разработка ведется не на той же машине, где podman. Я заглянул в IntelliJ IDEA, чтобы разобраться, как подключиться к удаленной машине. Для удаленной работы с docker есть этот плагин, а в нем несколько вариантов. Обойдя ограничения по безопасности, я столкнулся с тем, что система сетует, что мы работаем не с docker. Как результат – ничего толкового не получилось.

Но вот теперь, вернувшись к этому проекту, я снова повторил попытку подключиться из idea к удаленному podman – работает. Я всегда стараюсь использовать инструменты с длительным временем поддержки, чтобы оказавшись в ситуации, когда функционала не хватает или обнаруживается ошибка, быть уверенным, что через некоторое время функционал появится, а ошибка будет исправлена. Для меня это важно. Ставлю в уме еще один плюсик разработчикам этих инструментов. Кстати, и свою работу я тоже стараюсь делать сопровождаемой, документированной и понятной.

Вот мои шаги, чтобы тема заработала:

🔺 на хосте с podman: podman system service --time=0 tcp:0.0.0.0:2979
🔺 в IntelliJ IDEA: идем в настройки ->Build, Execution, Deployment -> Docker.
🔺 добавляем docker-конфигурацию с очевидным названием podman,
🔺 и заполняем в TCP socket поле Engine API URL: tcp://localhost:12979
🔺 для проверки применяем, в этот раз у меня сразу высветилось Connection successful.

Ссылка на help плагина с более детальной информацией.