Как стать автором
Обновить
1
0.1
Михаил Ильинский @milinsky

Программист

Отправить сообщение

Точки соприкосновения: Java & GC

Уровень сложностиСложный
Время на прочтение24 мин
Количество просмотров4K

Можно писать на Java, вообще не задумываясь, как работает сборка мусора: «ну оно же там само собой происходит как-то». Однако разобраться как следует — не только интересно, но и полезно: например, какой из подходов к GC лучше соответствует конкретно вашему проекту?

На нашей конференции JPoint 2024 был доклад Дмитрия Силина об этом, участникам он понравился, и мы решили сделать для Хабра текстовую версию. Публикуем и текст, и видеозапись.

Читать далее
Всего голосов 22: ↑18 и ↓4+20
Комментарии4

Архитектура event-driven приложений

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров17K


Автор статьи: Артем Михайлов


Введение в концепцию event-driven архитектуры


Event-driven архитектура — это концепция программирования, которая позволяет создавать сложные приложения, используя событийно-ориентированный подход. Основная идея заключается в том, что все действия в приложении основаны на событиях. Это позволяет создавать распределенные системы, которые легко масштабируются и обладают высокой отказоустойчивостью.
Читать дальше →
Всего голосов 13: ↑9 и ↓4+7
Комментарии6

Взаимодействие микросервисов между собой

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров4.7K

Следующий возникающий в голове вопрос, когда разобрался с тем, как работать с данными в данной архитектуре (а может у кого то этот вопрос стоит первым) - как микросервисы будут взаимодействовать между собой?

В данной статье разберемся с синхронным и асинхронным взаимодействием, сложностями и разными подходами.

Читать далее
Всего голосов 8: ↑6 и ↓2+6
Комментарии7

Как работать с Camunda 7

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров3K

Описание проблем при работе с Camunda 7 и их решение.
Обзор на контекст камунды, оптимизация корреляции и истории

Читать далее
Всего голосов 7: ↑5 и ↓2+5
Комментарии10

Полноценный API на Django REST Framework: легкая разработка, автодокументация и быстрый деплой

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров6.2K

Сегодня мы погрузимся в процесс создания собственного API на Django с использованием мощного инструмента — Django REST Framework (DRF). Этот фреймворк предоставляет полный набор инструментов для разработки API: маршрутизация, сериализация данных, обработка запросов и формирование ответов. DRF значительно упрощает взаимодействие с клиентами через HTTP, поддерживая такие методы, как GET, POST, PUT и DELETE.

Однако, в отличие от FastAPI, Django REST Framework не включает встроенный инструмент для автодокументирования API. Мы легко решим эту задачу, воспользовавшись расширением drf‑spectacular, которое генерирует спецификации API в формате OpenAPI 3.0. Это позволит интегрировать интерфейсы, такие как Swagger и Redoc, для удобного тестирования и наглядной визуализации документации.

Читать далее
Всего голосов 10: ↑9 и ↓1+10
Комментарии16

Грепабельность — важная метрика кода

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров9.3K

При работе над поддержкой незнакомой мне кодовой базы я трачу кучу времени на поиск строк при помощи grep. Даже в проектах, полностью написанных мной, мне нужно много искать: имена функций, сообщения об ошибках, имена классов и тому подобное. Если я не могу найти нужное, то я буду как минимум расстроен, а как максимум могу создать опасную ситуацию, если предположу, что какой-то элемент больше не нужен, ведь я не могу найти ссылок на него в кодовой базе. На основании этих ситуаций я выработал правила, которые позволяют повысить греппабельность кода.

Читать далее
Всего голосов 35: ↑32 и ↓3+42
Комментарии31

Flutter Web. Часть 1

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров4.8K

Как работает Flutter Web, и есть ли особенности взаимодействия с платформой? Разбираемся с этим в серии статей. Эта — первая.

Читать дальше
Всего голосов 16: ↑14 и ↓2+16
Комментарии3

Виртуальные потоки Java 21 — чувак, где мой lock?

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров10K

Как показывает опыт Netflix, использование виртуальных потоков, представленных в Java 21, может спровоцировать возникновение неожиданных проблем. В новом переводе от команды Spring АйО мы подробно исследуем уникальные трудности, возникшие у команды Netflix при интеграции виртуальных потоков в Spring Boot на Tomcat. 

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

Читать далее
Всего голосов 20: ↑19 и ↓1+20
Комментарии27

Эволюция оператора switch в Java

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров4K

Наверное, есть только малая часть приложений, код в которых выполняются строго последовательно. Классический Hello World! как раз из таких. В таких случаях говорят, что у выполняющейся программы есть только один поток выполнения - флоу. Однако, подавляющее число приложений меняют свой поток выполнения в зависимости от внешних условий (контекста выполнения, переменных среды, значений пропертей) или внутренних (переменные, значения полей и т.д.). Для таких случаев в Java еще с самой первой версии, как и во остальных языках программирования, есть оператор if-else и его модификации.

Давайте рассмотрим пример кода, в котором в зависимости от того, кем является член семьи, он делает какую-то обязанность по дому:

Читать далее
Всего голосов 5: ↑5 и ↓0+9
Комментарии28

Kotlin Coroutines. От А до Я

Уровень сложностиПростой
Время на прочтение28 мин
Количество просмотров17K

Полный разбор корутинного мира с нуля, который может послужить отличной шпаргалкой на собеседовании!
Разберем разницу между многопоточностью и асинхронностью; раскроем все основные понятия корутин, параллельно ссылаясь на исходники kotlinx.coroutines; посмотрим их применение на практике и в конце напишем свой собственный CoroutineScope.

Let's go
Всего голосов 25: ↑25 и ↓0+29
Комментарии12

Распределенные транзакции для самых маленьких

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров13K

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

Читать далее
Всего голосов 18: ↑14 и ↓4+15
Комментарии10

Глубокое погружение в Sealed классы и интерфейсы

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров6.2K

С появлением sealed классов и интерфейсов Java открыла перед разработчиками новые горизонты в области проектирования устойчивого и предсказуемого кода. 

В новом переводе от команды Spring АйО было рассмотрено, как эти элементы языка позволяют строго контролировать иерархию классов, обеспечивая тем самым безопасность и простоту поддержки кода. Мы рассмотрим ключевые особенности sealed классов и интерфейсов, их влияние на архитектуру приложений и практические примеры их применения.

Читать далее
Всего голосов 16: ↑14 и ↓2+14
Комментарии7

Добавление Swagger UI в ваше приложение Laravel

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.9K

Перевод статьи по Swagger UI

Пакет Swagger UI для Laravel упрощает доступ к файлу Swagger (JSON или YAML OpenAPI v3) вашего проекта через интерфейс Swagger UI прямо в вашем приложении Laravel. Всё, что вам нужно сделать, это поместить файл OpenAPI в директорию resources/swagger/openapi.json (это можно настроить) и перейти по пути /swagger в локальной среде проекта.

Читать далее
Всего голосов 4: ↑3 и ↓1+3
Комментарии2

Отладка PHP сценариев в Docker-контейнере с помощью PhpStorm и Xdebug. Глубокое погружение

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров5.2K

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

Статья посвящена настройке и использованию PhpStorm, Xdebug и Docker для отладки PHP-скриптов в Docker-контейнере. Статья предлагает актуальную информацию (на момент написания) и оформлена в виде подробнейшего пошагового туториала. Информация действительна для ОС Windows. В других ОС возможны варианты.

Цель статьи — не просто создать пошаговой конспект настроек, а объяснить, как всё это взаимодействует. Это поможет избежать затруднений при изменении интерфейса IDE в будущем. Возможно, статья выглядит слишком педантичной. Но гуру всегда смогут прочесть её по диагонали, зато новички в этой теме найдут для себя много полезного.

Читать далее
Всего голосов 7: ↑7 и ↓0+11
Комментарии4

Полезные фичи в Java для новичков: мой список

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров13K

Привет, Хабр!

В Java никогда не бывает скучно, особенно когда речь заходит о вещах, которые делают нашу жизнь проще и код — чище.

Сегодня я хочу рассказать вам о четырех фичах в Java, которые сам активно использовал в своих проектах и которые, на мой взгляд, заслуживают внимания. Да, это мой личный список, и я не претендую на то, что эти фичи новы или являются последним писком моды. Однако, по моему опыту, они действительно могут упростить жизнь.

И знаете, что самое приятное? Когда коллеги начинают говорить: "А почему я об этом не знал раньше?"

Читать далее
Всего голосов 28: ↑15 и ↓13+6
Комментарии12

Повышаем читаемость Symfony DI

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.8K

Привет! Я разрабатываю приложения на Symfony и хочу поделиться проблемами, с которыми сталкивался при использовании Symfony DI, а также дать несколько советов которые, как мне кажется, будут полезны при разработки больших приложений. Кратко я упоминал о них в этой статье, и здесь хочу развернуть мысль и поговорить подробнее.

Читать далее
Всего голосов 3: ↑3 и ↓0+5
Комментарии5

Нотация моделирования архитектуры С4 — примеры диаграмм и инструменты

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров54K

Если возникает вопрос об описании архитектуры системы, то есть несколько основных решений где и как это сделать. Среди популярных нотаций для визуализации схемы архитектуры можно выбрать C4, разработанную Саймоном Брауном.

В этой статье я хочу показать пример применения нотации C4, который вы сможете использовать как ориентир в своей работе, а также инструменты для её создания. В частности, выделяю Structurizr.

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

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии9

Программисты не должны доверять никому, даже себе

Время на прочтение7 мин
Количество просмотров1.8K
Программисты должны быть параноиками.

  • “Я дважды проверил код”
  • “Код прошел тесты”
  • “Ревьюер одобрил мой код”
“Мой код верен?”

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

  • Универсальность: Даже если ваш код работает правильно один раз, будет ли он работать так во всех случаях, на всех машинах, во всех ситуациях?
  • Ложноположительные результаты: Неудачные тесты указывают на наличие ошибок, но пройденные тесты не обещают их отсутствия.
  • Отсутствие уверенности: Вы могли бы написать формальное доказательство корректности вашего кода, но теперь вы должны задаться вопросом, верно ли это доказательство. Вам нужно будет подтвердить доказательство. Эта цепочка проверки доказательств никогда не закончится.
Глупо добиваться абсолютной уверенности в правильности своего кода. Ошибка может скрываться в зависимостях, которые вы никогда не найдете. Тем не менее, не стоит отчаиваться. Мы все еще можем снизить риск возникновения ошибок, добиваясь глубокого понимания кода и добросовестно работая с ним.
Читать дальше →
Всего голосов 1: ↑1 и ↓0+3
Комментарии6

PHP 8.4: Новые функции поиска в массиве. Пишем с нуля

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.5K

В PHP 8.4 планируется добавить новые функции массива: array_find, array_find_key, array_any и array_all, которые являются вспомогательными функциями для общих шаблонов проверки массива на наличие элементов, соответствующих определенному условию.

В настоящее время существует несколько функций, обрабатывающих массивы с использованием обратного вызова. Однако по-прежнему отсутствуют функции для поиска отдельного элемента, соответствующего условию, и тесно связанные функции проверки наличия элементов, соответствующих условию. Реализовать эти функции в среде пользователей относительно просто, но они часто требуются, что приводит к тому, что колесо изобретается снова и снова. Кроме того, функции такого типа реализованы и в других языках программирования, таких как Rust, JavaScript или C++. Поэтому есть причина включить эти функции в стандартную комплектацию следующей версии PHP. Кроме того, реализация этих функций очень похожа на array_filter и относительно проста в реализации, поэтому затраты на обслуживание должны быть низкими.

Читать далее
Всего голосов 12: ↑11 и ↓1+14
Комментарии2

Микросервисы и монолиты

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров5.7K

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

Читать далее
Всего голосов 21: ↑14 и ↓7+10
Комментарии68
1
23 ...

Информация

В рейтинге
2 827-й
Откуда
Владивосток, Приморский край, Россия
Дата рождения
Зарегистрирован
Активность