Привет, меня зовут Юрий, я уже год использую хайповый IoC‑контейнер dishka и хочу немного поделиться опытом эксплуатации. Мой проект — движок для городской ночной поисковой игры «Схватка» (вы могли играть в неё или в один из аналогов — «Энкаунтер» или «Дозоры»). У нас в городе очень маленькое ламповое комьюнити, для которого я и написал этот движок. По причине локальности (игроков — всего 50 человек), я не буду давать ссылки на что‑то, что можно потрогать, и прошу вас не искать. Я никогда не пытался оптимизировать этот код или готовить его к хабр‑эффекту. Однако Читать полностью »
Рубрика «dependency injection»
Год с Dishka: какой он — модный DI-контейнер?
2025-03-25 в 15:19, admin, рубрики: dependency injection, di-контейнер, dishka, ioc-контейнер, pythonСравнение Dagger 2, Dagger Hilt и Koin
2025-03-13 в 7:15, admin, рубрики: android development, dagger 2, dependency injection, hilt, koin, kotlinВ этой статье мне хотелось бы разобрать вопрос, которым часто задаются начинающие и молодые разработчики мобильных приложений под Android. Многие мобильные разработчики слышали о таких широко известных инструментах внедрения зависимостей (DI), как Koin и Dagger. Они решают одну задачу — управление зависимостями, но делают это по-разному. Но в чём же их принципиальная разница, в чём их отличия, их плюсы и минусы, и какой из этих инструментов выбрать при разработке нового проекта (и в зависимости от его сложности и требований)? Обо всём об этом постараюсь кратко изложить далее и дам рекомендации по выбору для новых проектов.
1. Dagger 2Читать полностью »
Найди x: React + MobX + SSR + x = Счастье
2025-02-11 в 11:59, admin, рубрики: dependency injection, di, inversion of control, ioc, mobx, React, server side rendering, ssr, state managementПриветствую всех читателей!
В мире информационных технологий наблюдается устойчивая тенденция перехода от традиционных десктопных приложений к веб-приложениям. Сегодня веб-приложения достигли значительной сложности и представляют собой интересную область разработки. Мне посчастливилось участвовать в создании одного из таких приложений, и я рад поделиться своим опытом и знаниями с вами.
О продукте
FastAPI и Dependency Injection: правда или вымысел?
2024-12-16 в 14:26, admin, рубрики: clean architecture, dependency injection, dependency inversion, dishka, fastapi, python, solid, webВ свое время FastAPI прогремел как гром среди ясного неба - тут тебе и минималистичный API аля-Flask (все устали от Django, диктующего свои правила), и OpenAPI документация из коробки, и удобное тестирование, и хайповая асинхронность. Буквально все, что нужно для свободы творчества, и никаких ограничений! Да еще и Depends завезли! В тот момент это был культурный шок - Dependency Injection в Python? Разве это не что-то из Java?
FastAPI показал, что DI - это паттерн, упрощающий разработку вне зависимости от языка программирования. Теперь DIЧитать полностью »
Продвинутая регистрация multi-сервисов в Angular
2024-11-22 в 11:53, admin, рубрики: angular, dependency injection, di, javascript, TypeScript
Внедрение нескольких сервисов с помощью одного токена — достаточно удобная механика в фреймворке Angular. Однако, можно столкнуться с неприятностью, что во всех местах, где нужно получить данный сервис, придётся как-то выбирать нужный инстанс из массива. Кто-то делает это напрямую, через метод массива find
Читать полностью »
Nexus-IoC — хорошо знакомый незнакомец в мире TypeScript и DI
2024-10-26 в 19:11, admin, рубрики: dependency injection, inversion of control, javascript, TypeScriptПредыстория
В одном из моих проектов мы использовали библиотеку Inversify для внедрения зависимостей (DI). Хотя это мощное и гибкое решение, его избыточная гибкость со временем обернулась против нас: управление зависимостями становилось всё более запутанным по мере роста приложения. С каждым новым модулем или компонентом код усложнялся, а процесс рефакторинга становился всё более болезненным.
Я выделил несколько ключевых требований, которые хотел бы видеть в новом решении:
-
Прозрачность зависимостей: Нужно было ясно понимать, какие зависимости требуются каждому компоненту, без лишней магии в коде.
Яндекс выпускает Yatagan — опенсорс-фреймворк для внедрения зависимостей, позволяющий ускорить сборку
2022-12-14 в 6:59, admin, рубрики: dagger, dagger 2, dependency injection, di, github, kotlin, open source, Блог компании Яндекс, внедрение зависимостей, гитхаб, разработка мобильных приложений, Разработка под android
Меня зовут Фёдор Игнаткевич, я делаю приложение Яндекс и мобильный Яндекс Браузер для Android. Примерно год назад я предложил команде идею фреймворка для внедрения зависимостей, который более чем вдвое ускорил сборку обоих проектов и который мы сегодня выложили на Гитхаб — чтобы разработчики других приложений тоже могли улучшить скорость сборки. Я с нуля реализовал фреймворк, а затем мы вместе с командой интегрировали его в проекты и сейчас активно используем.
Как раз про свой опыт разработки я и хочу рассказать. Давайте попробуем разобраться, какие есть факторы замедления сборки, как Yatagan, совместимый с Dagger по API, с ними справляется и какие ещё задачи могут стоять перед DI-фреймворком — например, в части зависимостей под рантайм-условиями. Кстати, нативная поддержка этих зависимостей в Yatagan избавила нас от ручной обработки состояний A/B-экспериментов в DI.
Статья содержит много технических моментов, которые я открыл для себя по ходу исследований. В конце посмотрим, каким проектам Yatagan может быть полезен в качестве замены, а в каких польза от него будет невелика.
Читать полностью »
Подводные камни Zenject или тайный мир Unity GetComponent
2022-01-15 в 21:03, admin, рубрики: dependency injection, unityВводные данные
Что мы имели на руках:
-
Рабочая ветка develop исправна и работает на устройстве.
-
Ветка тех артистов, на которой они пару месяцев работают над большой фичей с измененными префабами. Она работает в редакторе, но падает на устройстве при создании префаба.
-
Тех артисты добавили несколько скриптов и несколько компонентов, которых не было раньше.
-
На проекте используется Zenject.
Концепция контроллеров компонента в Angular: часть вторая
2021-09-20 в 9:24, admin, рубрики: angular, dependency injection, javascript, ng, TypeScript, ангуляр, Блог компании Tinkoff, компоненты, Разработка веб-сайтовНесколько месяцев назад я написал статью «Как мы делаем базовые компоненты в Taiga UI более гибкими: концепция контроллеров компонента в Angular». Я рассказал о том, как мы добавляем гибкости и избавляемся от дублирования кода с помощью DI. Пришло время продолжить статью.
Сегодня посмотрим на более хитрые трюки с такими директивами-контроллерами и попробуем сделать метаконтроллер, который, в свою очередь, состоит из других контроллеров. Все это будет происходить в рамках безграничных возможностей Dependency Injection в Angular.
Все мы любим Spring. Или не любим. Но по крайней мере знаем. Если вы Java-программист, то вероятно используете этот фреймворк каждый день в своей работе. Spring — это огромная платформа, которая предоставляет большой функционал. Тем не менее во главе угла стоят две вещи — это DI (Dependency Injection) и IoC (Inversion of Control). Концепции, которые были призваны, чтобы сделать наш код более читаемым и поддерживаемым. Но к несчастью, все оказалось не так радужно. Именно это мы сегодня и обсудим.