All Posts
Краткий курс по экономике разработки программного обеспечения
- May 05, 2021
- Dec 02, 2021
- Ivan Zakrevsky
- Russian
- Software Architecture, Management, Agile, Economics
Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).
Список психологических эффектов
- May 04, 2021
- Nov 16, 2021
- Ivan Zakrevsky
- Russian
- Soft Skills, Management, Communication, Career
Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).
Может ли CQRS-команда возвращать результат?
- Apr 02, 2021
- Nov 14, 2021
- Ivan Zakrevsky
- Russian
- DDD, Microservices, Distributed Systems, CQS, CQRS, Functional Programming, OOP
Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).
О гонке сообщений в условиях конкурирующих подписчиков
- Mar 31, 2021
- Nov 16, 2021
- Ivan Zakrevsky
- Russian
- DDD, Microservices, Distributed Systems, EIP
Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).
Domain Events in DDD
- May 05, 2020
- Nov 14, 2021
- Ivan Zakrevsky
- Russian
- DDD, Model
Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).
Список литературы для самообучения разработчика программного обеспечения
- Oct 11, 2019
- Nov 23, 2021
- Ivan Zakrevsky
- Russian
- Software Architecture, DDD, Clean Architecture, Clean Code, Event-Driven, Microservices, CQRS, Event Sourcing, Extreme Programming, TDD, XP, Refactoring, Programming, Software Construction, Career
Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).
TDD - Разработка через тестирование
- Sep 30, 2019
- Jan 01, 2022
- Ivan Zakrevsky
- Russian
- TDD, Refactoring, Clean Code, Software Architecture, XP, Extreme Programming
Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).
Роль сервисного слоя в CQRS и Event Sourcing на примере использования Redux в Angular
- Sep 16, 2018
- Ivan Zakrevsky
- Russian
- Software Design, Software Architecture, Service Layer, Angular, Redux, Flux, JavaScript, Model, CQRS, Event Sourcing
Нужно ли скрывать посредством Сервисного Слоя обращения к реализациям CQRS и Event Sourcing? Периодически мне попадаются примеры и неуверенная аргументация о том, что лучше - скрывать. Однако, когда вопрос мог коснуться меня лично, я решил во всем разобраться сам.
Про Agile на пальцах. Путь к быстрой разработке.
- Sep 15, 2018
- Nov 15, 2019
- Ivan Zakrevsky
- Russian
- Agile, XP, Scrum, Extreme Programming, Refactoring, Software Architecture
Я уже писал “на тему Agile-разработки шпаргалку”, более чем наполовину состоящую из цитат выдающихся архитекторов. Проблема в том, что она ориентирована на осведомленных людей (как правило, на менеджеров и архитекторов), и малопонятна тем, кто сталкивается с этим впервые. Поэтому я решил написать упрощенную версию своими словами. Вы не сможете использовать фрагменты этой статьи для аргументации перед заказчиком, так как она не содержит цитат праотцов архитекторы, но я надеюсь, что она будет легче для понимания ключевых моментов экономики разработки программного обеспечения.
Про Anemic Domain Model
- Jan 04, 2018
- Jul 29, 2022
- Ivan Zakrevsky
- Russian
- ORM, DataMapper, DB, SQL, Model, DDD, Repository
Время от времени в кругу моих знакомых регулярно поднимается вопрос о том, что Anemic Domain Model - никакой вовсе и не антипаттерн, и в качестве аргументов приводятся ссылки на статью “The Anaemic Domain Model is no Anti-Pattern, it’s a SOLID design” [1]. После очередного упоминания этой статьи я решил об этом написать.
Django Framework и Божественный Объект
- Jan 02, 2018
- Ivan Zakrevsky
- Russian
- Django
Божественные Объекты - распространенное явление для Django приложений, поэтому рассмотрим этот вопрос более детально.
Знакомство с Docker для Django-проекта
- Dec 23, 2017
- Jan 13, 2018
- Ivan Zakrevsky
- Russian
- Docker
При начале работы с Docker стоит обратить внимание на ряд моментов, которые освещены слабо даже в официальной документации, не говоря уже про многочисленные блог-посты.
О проблемах подбора персонала в IT-индустрии
- Dec 15, 2017
- Dec 23, 2017
- Ivan Zakrevsky
- Russian
- HR, Hiring
В разное время мне приходилось как наниматься на работу, так и принимать непосредственное участие в собеседовании кандидатов. Некоторые наблюдаемые мной явления имеют систематический характер проявлений, и я постараюсь их обобщить.
Реализация паттерна Repository в браузерном JavaScript
- Aug 06, 2017
- Nov 16, 2019
- Ivan Zakrevsky
- Russian
- Repository, ORM, JavaScript, Model, DDD
Хорошая архитектура освобождает Вас от привязки к конкретной реализации. Она позволяет Вам отложить момент принятия решения о реализации, и начать конструирование кода еще не имея этого решения. Принципиально важным моментом является то, что Вы обретаете возможность принять решение в момент наибольшей информированности, а также всегда можете легко подменить конкретную реализацию на любую другую. Вот эта обязанность возложена на паттерн Repository.
Implementation of Repository pattern for browser's JavaScript
- Aug 06, 2017
- May 26, 2018
- Ivan Zakrevsky
- English
- Repository, ORM, JavaScript, Model, DDD
Good architecture makes you free from certain implementation. It allows you to postpone the moment of decision on implementation and begin code construction even without the decision. The most important point is that you gain the opportunity to make a decision at the time of the greatest awareness, and you can also easily replace a specific implementation with any other. This responsibility is assigned to the Repository.
О моем опыте использования Django Framework
- Jul 26, 2017
- May 16, 2018
- Ivan Zakrevsky
- Russian
- Django, ORM, Python, Django Model
Django framework для Python позволяет быстро решать огромный спектр задач и легко находить исполнителей. При грамотном подходе, можно использовать все преимущества Django и не стать заложником ее недостатков.
About my experience of using Django Framework
- Jul 26, 2017
- May 16, 2018
- Ivan Zakrevsky
- English
- Django, ORM, Python, Django Model
Django framework by Python allows you to quickly solve a huge range of tasks and easily find developers. With a competent approach, you can use all the advantages of Django and not become a hostage of its shortcomings.
Проектирование Сервисного Слоя и Логики Приложения
- Jul 17, 2017
- Oct 12, 2019
- Ivan Zakrevsky
- Russian
- Software Design, Software Architecture, ORM, Django Model, Service Layer, Redux, Flux, Model, CQRS, Event Sourcing
Эта статья посвящена вопросам управления Логикой Приложения и проектированию Сервисного Слоя (Service Layer), Use Case, CQRS, Event Sourcing, MVC и др.
Design of Service Layer and Application Logic
- Jul 17, 2017
- Oct 12, 2019
- Ivan Zakrevsky
- English
- Software Design, Software Architecture, ORM, Django Model, Service Layer, Redux, Flux, Model, CQRS, Event Sourcing
This article is about organizing Application Logic and designing the Service Layer, Use Case, CQRS, Event Sourcing, MVC, etc.
How to quickly develop high-quality code. Team work.
- Jul 10, 2017
- Jan 18, 2021
- Ivan Zakrevsky
- English
- Agile, XP, Extreme Programming, Refactoring, Software Architecture
Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).
Как добавить новые операторы для Python выражений
- Sep 08, 2016
- Ivan Zakrevsky
- Russian
- DB, SQL, Python
Библиотека sqlbuilder использует перегрузку операторов языка программирования Python для создания критериев выборки, что позволяет транслировать операторы языка программирования в операторы SQL.
К сожалению, Python поддерживает не так много операторов, как PostgreSQL, например, таких операторов как @>
, &>
, -|-
, @-@
и т.д.
Usefull links
- Aug 29, 2016
- Aug 14, 2017
- Ivan Zakrevsky
- English
Here is the list of articles and sites that I find interesting. This page is regularly updated.
Искусство воевать
- Aug 21, 2016
- Ivan Zakrevsky
- Russian
- Programming, Software Construction
Читая книгу «Code Complete» Steve McConnell, я обнаружил интересное сходство с военным искусством.
О проблемах инвалидации кэша. Тегирование кэша.
- May 21, 2016
- Nov 10, 2016
- Ivan Zakrevsky
- Russian
- Cache
О моем опыте решения проблем инвалидации кэша, и о принципах работы библиотеки cache-dependencies.
About problems of cache invalidation. Cache tagging.
- May 21, 2016
- Nov 10, 2016
- Ivan Zakrevsky
- English
- Cache
About my experience of solving problems of cache invalidation and principles of the library cache-dependencies.
Построение Raw-SQL cредствами Storm-ORM
- Dec 08, 2015
- Ivan Zakrevsky
- Russian
- ORM, Storm ORM, DataMapper, DB, SQL, Python
Возникло у меня желание попробовать построить чистый, сырой запрос (Raw-SQL) с помощью storm.expr для одного самописного специфического маппера, сочетающего в себе паттерны Single Table Inheritance и Entity Attribute Value.
О книге "Refactoring" by M.Fowler
- Nov 01, 2015
- Ivan Zakrevsky
- Russian
- Python, Refactoring, Fowler
Хочу ответить на уже ставший популярным вопрос, нужно ли читать «Refactoring: Improving the Design of Existing Code» [1] если уже прочитал «Clean Code: A Handbook of Agile Software Craftsmanship» [4]?
Аргументы-флаги
- Oct 22, 2015
- Ivan Zakrevsky
- Russian
- Python, Programming, Software Construction
В главе “Flag Arguments” известной книги «Clean Code. A Handbook of Agile Software Craftsmanship.», Robert C. Martin советует не использовать аргументов-флагов, справедливо замечая, что это свидетельствует о том, что функция делает более одной операции.
Почему я выбираю Storm ORM для Python
- Oct 10, 2015
- Jul 31, 2017
- Ivan Zakrevsky
- Russian
- ORM, Storm ORM, DataMapper, DB, SQL, Python, Django Model, Model, DDD
В промышленных решениях на Python я чаще стал использовать KISS-style Storm ORM, и здесь я попытаюсь объяснить почему.
Why I prefer Storm ORM for Python
- Oct 10, 2015
- Jul 31, 2017
- Ivan Zakrevsky
- English
- ORM, Storm ORM, DataMapper, DB, SQL, Python, Django Model, Model, DDD
I began using KISS-style Storm ORM for enterprise applications on Python, let me explain why.
Emacs autocomplete and Dependency injection (DI)
- Oct 09, 2015
- Nov 29, 2016
- Ivan Zakrevsky
- Russian
- Emacs, Dependency Injection, Autocomplete, Python
В пассивных классах, которым зависимости внедряет программа, возникают трудности с автокомплитом в emacs с elpy-mode.