Posts by Ivan Zakrevsky

Краткий курс по экономике разработки программного обеспечения

Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).

Read more ...


Список психологических эффектов

Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).

Read more ...


Может ли CQRS-команда возвращать результат?

Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).

Read more ...


О гонке сообщений в условиях конкурирующих подписчиков

Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).

Read more ...


Domain Events in DDD

Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).

Read more ...


TDD - Разработка через тестирование

Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).

Read more ...


Роль сервисного слоя в CQRS и Event Sourcing на примере использования Redux в Angular

Нужно ли скрывать посредством Сервисного Слоя обращения к реализациям CQRS и Event Sourcing? Периодически мне попадаются примеры и неуверенная аргументация о том, что лучше - скрывать. Однако, когда вопрос мог коснуться меня лично, я решил во всем разобраться сам.

Read more ...


Про Agile на пальцах. Путь к быстрой разработке.

Я уже писал “на тему Agile-разработки шпаргалку”, более чем наполовину состоящую из цитат выдающихся архитекторов. Проблема в том, что она ориентирована на осведомленных людей (как правило, на менеджеров и архитекторов), и малопонятна тем, кто сталкивается с этим впервые. Поэтому я решил написать упрощенную версию своими словами. Вы не сможете использовать фрагменты этой статьи для аргументации перед заказчиком, так как она не содержит цитат праотцов архитекторы, но я надеюсь, что она будет легче для понимания ключевых моментов экономики разработки программного обеспечения.

Read more ...


Про Anemic Domain Model

Время от времени в кругу моих знакомых регулярно поднимается вопрос о том, что Anemic Domain Model - никакой вовсе и не антипаттерн, и в качестве аргументов приводятся ссылки на статью “The Anaemic Domain Model is no Anti-Pattern, it’s a SOLID design” [1]. После очередного упоминания этой статьи я решил об этом написать.

Read more ...


Django Framework и Божественный Объект

Божественные Объекты - распространенное явление для Django приложений, поэтому рассмотрим этот вопрос более детально.

Read more ...


Знакомство с Docker для Django-проекта

При начале работы с Docker стоит обратить внимание на ряд моментов, которые освещены слабо даже в официальной документации, не говоря уже про многочисленные блог-посты.

Read more ...


О проблемах подбора персонала в IT-индустрии

В разное время мне приходилось как наниматься на работу, так и принимать непосредственное участие в собеседовании кандидатов. Некоторые наблюдаемые мной явления имеют систематический характер проявлений, и я постараюсь их обобщить.

Read more ...


Реализация паттерна Repository в браузерном JavaScript

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

Read more ...


Implementation of Repository pattern for browser's JavaScript

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.

Read more ...


О моем опыте использования Django Framework

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

Read more ...


About my experience of using Django Framework

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.

Read more ...


Проектирование Сервисного Слоя и Логики Приложения

Эта статья посвящена вопросам управления Логикой Приложения и проектированию Сервисного Слоя (Service Layer), Use Case, CQRS, Event Sourcing, MVC и др.

Read more ...


Design of Service Layer and Application Logic

This article is about organizing Application Logic and designing the Service Layer, Use Case, CQRS, Event Sourcing, MVC, etc.

Read more ...


How to quickly develop high-quality code. Team work.

Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).

Read more ...


Как добавить новые операторы для Python выражений

Библиотека sqlbuilder использует перегрузку операторов языка программирования Python для создания критериев выборки, что позволяет транслировать операторы языка программирования в операторы SQL. К сожалению, Python поддерживает не так много операторов, как PostgreSQL, например, таких операторов как @>, &>, -|-, @-@ и т.д.

Read more ...


Usefull links

Here is the list of articles and sites that I find interesting. This page is regularly updated.

Read more ...


Искусство воевать

Читая книгу «Code Complete» Steve McConnell, я обнаружил интересное сходство с военным искусством.

Read more ...


О проблемах инвалидации кэша. Тегирование кэша.

О моем опыте решения проблем инвалидации кэша, и о принципах работы библиотеки cache-dependencies.

Read more ...


About problems of cache invalidation. Cache tagging.

About my experience of solving problems of cache invalidation and principles of the library cache-dependencies.

Read more ...


Построение Raw-SQL cредствами Storm-ORM

Возникло у меня желание попробовать построить чистый, сырой запрос (Raw-SQL) с помощью storm.expr для одного самописного специфического маппера, сочетающего в себе паттерны Single Table Inheritance и Entity Attribute Value.

Read more ...


О книге "Refactoring" by M.Fowler

Хочу ответить на уже ставший популярным вопрос, нужно ли читать «Refactoring: Improving the Design of Existing Code» [1] если уже прочитал «Clean Code: A Handbook of Agile Software Craftsmanship» [4]?

Read more ...


Аргументы-флаги

В главе “Flag Arguments” известной книги «Clean Code. A Handbook of Agile Software Craftsmanship.», Robert C. Martin советует не использовать аргументов-флагов, справедливо замечая, что это свидетельствует о том, что функция делает более одной операции.

Read more ...


Почему я выбираю Storm ORM для Python

В промышленных решениях на Python я чаще стал использовать KISS-style Storm ORM, и здесь я попытаюсь объяснить почему.

Read more ...


Why I prefer Storm ORM for Python

I began using KISS-style Storm ORM for enterprise applications on Python, let me explain why.

Read more ...


Emacs autocomplete and Dependency injection (DI)

В пассивных классах, которым зависимости внедряет программа, возникают трудности с автокомплитом в emacs с elpy-mode.

Read more ...