Современный backend разнообразен, но всё-таки подчиняется некоторым негласным правилам. Многие из нас, кто разрабатывает серверные приложения, сталкивается с общепринятыми подходами, такими как Clean Architecture, SOLID, Persistence Ignorance, Dependency Injection и прочими. Многие из атрибутов серверной разработки настолько заезжены, что не вызывают никаких вопросов и используются бездумно. О некоторых много говорят, но никогда не используют. Смысл остальных же либо неправильно интерпретирован, либо перевран. Статья рассказывает о том, как построить простую, совершенно типичную, архитектуру backend, которая не только может без какого-либо ущерба следовать заветам известных теоретиков программирования, но и в некоторой степени может их усовершенствовать.
Читать полностью »
Рубрика «dependency injection» - 3
Ортодоксальный Backend
2019-11-05 в 8:01, admin, рубрики: backend, clean architecture, dependency injection, domain-specific language, mvc, ruby, Программирование, Проектирование и рефакторингПодготовка к Spring Professional Certification. Контейнер, IoC, бины
2019-10-06 в 12:10, admin, рубрики: dependency injection, ioc, java, pivotal, spring, spring framework, внедрение зависимостей, сертификацияДоброго времени суток.
Сегодня я решил представить вам перевод цикла статей для подготовки к Spring Professional Certification.
Это перевод только первой статьи, если он зайдет аудитории, я продолжу выпуск переводов.
- Часто в них информация не структурирована, не собрана, или не актуальна
- Молодые разработчики могут не знать английский. Этот цикл можно использовать не только для сертификации, но и для самообучения/повторения материалов.
- Этими материалами можно пользоваться при подготовке к собеседованию, т.к. они выстроены в виде вопросов и ответов.
- Важное, и самое главное преимущество — этот QA сделан из вопросов из официального Study Guide от Pivotal.
- Некоторые вопросы, которые казались мне лишними или которых не было в гиде я осознанно упустил.
- Внедрение зависимостей, контейнер, IoC, бины
- AOP (аспектно-ориентированное программирование)
- JDBC, транзакции, JPA, Spring Data
- Spring Boot
- Spring MVC
- Spring Security
- REST
- Тестирование
Какое главное отличие Dependency Injection от Service Locator?
2019-08-29 в 11:21, admin, рубрики: dependency injection, javascript, patterns, php, service locator, Анализ и проектирование систем, ПрограммированиеХа, какая изящная маскировка Service Locator-а под DI. Даже может показаться, что это DI! :-)
Это первый коммент к моей предыдущей публикации "Dependency Injection, JavaScript и ES6-модули". Спасибо коллеге symbix 'у за этот коммент, т.к. именно он стало причиной погружения в тонкости отличия одного от другого. Под катом мой ответ на вопрос в заголовке.

(КДПВ особого смысла не имеет и предназначена в первую очередь для визуального опознания этой публикации в ряду других)
Dependency Injection, JavaScript и ES6-модули
2019-08-21 в 19:14, admin, рубрики: dependency injection, ES6, import, javascript, modules, Программирование, Разработка веб-сайтовЕщё одна имплементация Dependency Injection в JavaScript — с ES6-модулями, с возможностью использовать один и тот же код в браузере, и в nodejs и не использовать транспиляторы.

Под катом — мой взгляд на DI, его место в современных web-приложениях, принципиальная реализация DI-контейнера, способного создавать объекты и на фронте, и на бэке, а также объяснение, при чём тут Майкл Джексон.
Управление зависимостями в Python: сравнение подходов
2019-07-26 в 15:33, admin, рубрики: dependency injection, python, uncle bob, архитектура приложений, ооп, Совершенный код
Я пишу на питоне лет пять, из них последние три года — развиваю собственный проект. Большую часть этого пути мне помогает в этом моя команда. И с каждым релизом, с каждой новой фичей у нас все больше усилий уходит на то, чтобы проект не превращался в месиво из неподдерживаемого кода; мы боремся с циклическими импортами, взаимными зависимостями, выделяем переиспользуемые модули, перестраиваем структуру.
К сожалению, в Python-сообществе нет универсального понятия «хорошей архитектуры», есть только понятие «питоничности», поэтому архитектуру приходится придумывать самим. Под катом — лонгрид с размышлениями об архитектуре и в первую очередь — об управлении зависимостями применимо к Python.
Читать полностью »
ServiceLoader: встроенный DI-фреймворк, о котором вы, возможно, никогда не слышали
2019-06-24 в 13:58, admin, рубрики: dependency injection, java, modules, services, spring, Блог компании OTUS. Онлайн-образование, ПрограммированиеСалют, друзья. Уже в эту пятницу пройдет первое занятие в новой группе курса «Разработчик Java». Именно этому курсу и будет посвящена текущая публикация.

Многие из java-разработчиков для внедрения зависимостей используют Spring. Некоторые, возможно, пробовали Google Guice или даже OSGi Services. Но многие не знают, что в Java уже есть встроенный DI. Думаете это появилось в Java 11 или 12? Нет, он доступен с Java 6.Читать полностью »
Спокойствие спокойствию рознь
2019-06-22 в 16:43, admin, рубрики: dependency injection, framework, ioc контейнеры, iOS, library, open source, swift, разработка под iOS
Три года назад, я написал статью о DI библиотеке для языка Swift. С того момента библиотека сильно измененилась и стала лучшей в своем роде достойным конкурентом Swinject, превосходящяя его по многим показателям. Статья посвящена возможностям библиотеки, но и имеет теоретические рассуждения.И так кому интересны темы DI, DIP, IoC или кто делает выбор между Swinject и Swinject прошу подкат:Читать полностью »
Введение в Spring, или что делать, если по всему проекту @Autowired и @Component, а вы не понимаете, что это
2019-06-12 в 11:15, admin, рубрики: dependency injection, inversion of control, java, spring framework, spring ioc, внедрение зависимостей, инверсия управленияПриветствую тебя!
Эта статья будет полезна тем, кто уже начал изучать Java и даже успел добиться некоторых успехов в понимании Java Core, и вот услышал слово Spring. И, возможно, даже не один раз: знание Spring Framework, как минимум, фигурирует в описаниях множества вакансий для джавистов. Эта статья поможет вам взобраться на самую первую ступеньку: понять общую идею столь популярного фреймворка.
Начнем издалека. Существует такое понятие как Inversion of Control, по-русски – Инверсия управления, сокращенно – IoC. IoC — один из принципов, приближающий наш код к слабосвязанности. IoC — это делегирование части наших обязанностей внешнему компоненту.
Существуют разные реализации IoC подхода, нас интересует одна из них — Dependency Injection, внедрение зависимостей. Что это такое, название говорит само за себя, так что раскрыть ее я постараюсь на примере. Мы пишем приложение, автоматизирующее работу сети магазинов. Есть классы Shop (магазин) и Seller (продавец). У класса Seller имеется поле типа Shop — магазин, в котором работает продавец. Вот мы и столкнулись с зависимостью: Seller зависит от Shop. Теперь задумаемся, как в объект Seller попадет объект Shop? Есть варианты:
- Внедрить его через конструктор и сразу, при создании продавца, указывать магазин, в котором он работает:
public class Seller {
private Shop shop;
public Seller(Shop shop) {
this.shop = shop;
}
}
- Создать сеттер и с помощью его вызова устанавливать продавцу магазин:
public class Seller {
private Shop shop;
public void setShop(Shop shop) {
this.shop = shop;
}
}
Перечисленные два способа — это реализация Dependency Injection. И, наконец, мы подобрались к спрингу: он предоставляет еще один способ внедрять зависимости.Читать полностью »
Жизнь до рантайма. Доклад Яндекса
2019-06-02 в 10:06, admin, рубрики: AST, dependency injection, javascript, runtime, webpack, Блог компании Яндекс, графы, интерфейсы, Промышленное программирование, системы сборки, технический долгВ большом проекте может возникнуть задача идентификации изменений для конечного пользователя по отличиям в коде фронтенда приложения. Разработчик из Яндекс.Маркета Никита Сидоров рассказал, как мы решали эту проблему при помощи библиотеки Diffector, о построении и анализе графа модулей в Node.js-приложениях и о поиске дефектов в коде до его запуска.
— Сегодня я постараюсь быть с вами максимально откровенным. Читать полностью »
Make it True — Разработка логической игры на Unity
2019-05-26 в 19:32, admin, рубрики: .net, C#, dependency injection, Gamedev, indie, indie gamedev, longread, unity, zenject, логические игры, мобильные игры, разработка игр
Хочу поделиться процессом разработки простой мобильной игры силами двух разработчиков и художника. Данная статья в большей мере состоит описания технической реализации.
Осторожно, много текста!
Статья не являются руководством или уроком, хотя надеюсь что читатели смогут вынести что то полезное из нее. Рассчитано на разработчиков знакомых с Unity имеющих некоторый опыт в программировании.
Читать полностью »


