Pull to refresh
3
0
Дмитрий @MaNaXname

Пользователь

Send message

Чем меня не устраивает гексагональная архитектура. Моя имплементация DDD – многоуровневая блочная архитектура

Reading time7 min
Views8.8K


* В данной статье примеры будут на TypeScript


Краткое предисловие


Что такое DDD (Domain Driven Design) вопрос обширный, но если в кратце (как Я это понимаю) — это про перенос бизнес логики, как она есть, в код, без углубления в технические детали. То есть в идеале, человек, который знает за бизнес процессы, может открыть код и понять, что там происходит (так кстати часто бывает в 1С).


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


Для лучшего понимания статьи советую прочитать материалы, касающиеся DDD.

Читать дальше →
Total votes 7: ↑4 and ↓3+1
Comments22

Агрегаты

Reading time16 min
Views16K

Я считаю, что именно агрегаты из Domain-Driven Design лежат в основе поддерживаемых информационных систем. Однако эта концепция малоизвестна за пределами DDD-сообщества и довольно сложна для понимания, поэтому я решил написать очередной пост посвящённый агрегатам. В основном для чтобы структурировать собственное понимание агрегатов и создать "методичку" для своих команд, но и широкой общественности, я надеюсь, этот пост тоже может быть полезен.

Что такое агрегат?
Total votes 15: ↑14 and ↓1+15
Comments4

Статический анализ мультиязычности Angular приложения c помощью ngx-translate-lint

Reading time3 min
Views1.2K

Не так давно мне довелось решить интересную задачу, направленную на снижение риска того, что разработчик забудет о мультиязычности приложения и это станет причиной заведения нежеланных багов в будущем. Изначально я искал решение проблемы на Хабре, но, увы, не нашел. Поэтому решил написать на эту тему статью в блоге ЛАНИТ, которая, надеюсь, поможет кому-то в будущем.

Предлагаю вашему вниманию практическое руководство по внедрению статического анализа мультиязычности Angular приложения с помощью ngx-translate-lint (подразумевается, что для локализации Angular приложения уже используется пакет @ngx-translate/core).

Читать далее
Total votes 20: ↑20 and ↓0+23
Comments4

Выбираем базовые образы для приложений на .NET: минимум уязвимостей, максимум быстродействия

Level of difficultyMedium
Reading time14 min
Views4.8K

Микросервисы и контейнеры для их развертывания сейчас являются стандартом в крупных компаниях. Для разработчиков и DevOps-инженеров это удобный подход: он дает больше возможностей и ускоряет процессы.

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

Меня зовут Саша Рахманный, я разработчик в команде информационной безопасности в Lamoda Tech. В этой статье я сравню разные базовые образы для .NET с точки зрения безопасности их компонентов и быстродействия. 

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

Читать далее
Total votes 33: ↑33 and ↓0+35
Comments6

Интерактивный NPC на Unreal Engine

Reading time5 min
Views7.3K

Всем привет.

Я хочу с вами поделиться результатами эксперимента по созданию интерактивного NPC на Unreal Engine 5.

Speech recognition, Text-to-speech, LLM модели, LipSync, MetaHuman и все это без использования сторонних сервисов.

Видео работы и ссылка на демо версию прилагается.

Если вам интересно увидеть результат и обсудить перспективы интерактивных NPC в игровой индустрии - добро пожаловать под кат.

Читать далее
Total votes 19: ↑19 and ↓0+20
Comments25

Создание собственного ключа Android приложения

Level of difficultyEasy
Reading time3 min
Views1.9K

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

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

Читать далее
Total votes 4: ↑3 and ↓1+3
Comments0

Сравнение MicroK8s c Managed Kubernetes Clusters, K3s и Minikube

Level of difficultyMedium
Reading time6 min
Views5.1K

Microk8s - это легкий, простой в установке дистрибутив Kubernetes, обеспечивающий полнофункциональный кластер на одной виртуальной машине. В последние годы он завоевал популярность благодаря своей простоте и удобству использования, особенно в сравнении с другими подобными вариантами Kubernetes, такими как k3s и minikube. В этой статье мы подробно рассмотрим, что такое Microk8s, чем он отличается от управляемых кластеров Kubernetes и какие преимущества он имеет по сравнению с другими дистрибутивами Kubernetes. Мы также поделимся собственным опытом использования Microk8s в различных проектах, подчеркнув преимущества и пользу, которые он дает. И наконец, мы покажем, как настроить его на вашей виртуальной машине.

Читать далее
Total votes 7: ↑5 and ↓2+6
Comments9

Rust — это не «memory safe C»

Level of difficultyMedium
Reading time27 min
Views49K

TL;DR:
— в Rust намного больше достоинств, чем просто скорость и безопасность
— в Rust по умолчанию CDD (compiler-driven development, разработка через компилирование). Это как TDD, только CDD
— Rust — не сложный язык, особенно если не гнаться за максимальной производительностью

В этой статье я бы хотел рассказать:
— почему взгляд на Rust как на "memory safe C" очень сильно сужает область его возможного применения
— почему я смотрю на Rust как на очень удобный в разработке язык высокого уровня, которому просто случайно повезло оказаться невероятно быстрым
— почему разработка на Rust быстрее, чем многие думают
— почему Rust — это один из лучших языков общего назначения

Читать далее
Total votes 155: ↑149 and ↓6+168
Comments555

Как поднять почтовый сервер mailcow

Level of difficultyEasy
Reading time5 min
Views8.7K

Немного почтового сервера вам в ленту

Хочу поделиться своим опытом поднятия почтового сервера для личных нужд!
Бывает хочется сделать что-то эдакое, вот и получилась эта статья и личная почта.

Читать
Total votes 5: ↑3 and ↓2+3
Comments15

Разработка персонажей для игры «Аллоды Онлайн»

Reading time25 min
Views196K
image

Многие начинающие художники горят желанием рисовать персонажей для игр. Но зачастую энтузиазм быстро гаснет, потому что создание персонажа — это ответственное дело, которым нельзя заниматься в отрыве от работы всей команды. Поэтому мы написали для вас руководство, как создавать игровых персонажей, на примере «Аллодов Онлайн».

Всё, что говорится в правилах, основано на огромном опыте разработки. Тут каждая буква имеет значение, и если вам показалось, что где-то есть ошибка или недосказанность, то лучше семь раз переспросить, чем сделать абы как. Ниже расписаны правила успешной работы в игровой индустрии. Если их не соблюдать, то ваша работа будет или недолгая, или неуспешная, или мучительная и для вас, и для заказчика. А если станете создавать персонажей в полном соответствии с этим руководством, то вас ждёт успех!
Читать дальше →
Total votes 91: ↑88 and ↓3+85
Comments36

Регистрация компании на Кипре

Reading time17 min
Views1.4K

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

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

Репутация Кипра как привлекательной инвестиционной платформы для международной деятельности обусловлена передовым законодательством и развитой инфраструктурой профессиональных услуг. Открытие компании на Кипре предоставляет доступ к единому европейскому рынку.

В данной статье рассмотрены этапы регистрации компаний на Кипре, разъяснены основные аспекты инвестиционной и налоговой политик.

Читать далее
Total votes 4: ↑2 and ↓2+2
Comments1

Кастомные декораторы в Angular приложениях

Reading time5 min
Views3.9K

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

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments27

Другой способ понять, как работает async/await в C#

Level of difficultyMedium
Reading time7 min
Views9K

Про закулисье async/await написано предостаточно. Как правило, авторы декомпилируют IL-код, смотрят на IAsyncStateMachine и объясняют, вот дескать какое преобразование случилось с нашим исходным кодом. Из бесконечно-длинной прошлогодней статьи Стивена Тауба можно узнать мельчайшие детали реализации. Короче, всё давно рассказано. Зачем ещё одна статья?

Я приглашаю читателя пройти со мной обратным путём. Вместо изучения декомпилированного кода мы поставим себя на место дизайнеров языка C# и шаг за шагом превратим async/await в код, который почти идентичен тому, что синтезирует Roslyn.

Читать далее
Total votes 21: ↑21 and ↓0+21
Comments26

Рекомендации при работе с PostgreSQL

Level of difficultyMedium
Reading time10 min
Views26K

Доброго времени суток. Основываясь на своём опыте хочу представить некоторые рекомендации при разработке кодовой базы на SQL.

Данные рекомендации получены горьким опытом, так что надеюсь, они Вам помогут :)

Читать подробнее и больше не косячить
Total votes 51: ↑48 and ↓3+51
Comments53

Надо ли вести игрока за ручку?

Level of difficultyEasy
Reading time13 min
Views7K

В 98 году в школе, где я учился, компьютер был только у директора. Наш учитель биологии, замечательный мужик, который по ночам подрабатывал админом в компьютерном клубе через дорогу, был единственным человеком, который шарил как этот ящик вообще работал. Я там тоже периодически зависал, поэтому в какой-то момент получил доступ к директорскому компу, под видом чистки и настройки. Все попытки заинтересовать меня программированием заканчивались включением SimCity, Caesar или Settlers и парой часов упорных тренировок в мобами. Позже, уже закончив универ, я работал в различных конторах, писал код для проектов не связанных с игростроем, но постоянно мечтал о создании игр. Пробовал заниматься маленькими играми для себя, да только в 2006 году бесплатные движки, такие как Unity и Unreal, ещё не существовали. В итоге получалось в основном писать свои движки с нуля и делать разные демки, которые благополучно забыты.

Свою карьеру в игровой индустрии мне довелось начать в компании EA в качестве программиста игрового движка, того самого Unity, но заниматься приходилось в основном низкоуровневыми оптимизациями. Так я быстро понял, что мне нравится игровой дизайн больше, чем программирование (мне по-прежнему нравятся оба направления, поэтому в какой-то момент я и перешел в AI). И хотя программистам особо не доверяли ни создание уровней ни дизайн игр, зато в рабочее время можно было спокойно изучать как функционирует и то и другое, да еще и денег за это платили. Причем изучать не только со стороны редактора, но и изнутри. Стать профессиональным игровым дизайнером у меня не вышло, но разбирать как этот самый дизайн в играх был сделан нравится и сейчас.

Над открытыми мирами не довелось работать, ну кроме, разве что, Cuisine Royale, которая, как бы, не совсем честный открытый мир, но задачи анализа технических решений в других играх и движках, чтение соответствующих лекций и статей помогают понимать какие решения были приняты дизайнерами при разработке, и главное зачем это было сделано. При погружении в новую игру, эти решения еще не так очевидны, но когда набегаешь под сотню часов в Witcher 3 или Zelda, эти паттерны становятся видны и легко ловятся взглядом. Хочу заметить, что ни та ни другая игра не ставят исследование в качестве основной цели. Квесты в Witcher рассказывают уникальные истории, а Зельда, как бы это не показалось странным, акцентируется на боевке и системе крафта. И что еще заметно, в этих играх не обязательно сильно исследовать окружающий мир. Дизайн уровней и компоновка golden path построены так, что игры ведут игрока за ручку, и он все равно оказывается возле важных областей или сюжетных квестов. А когда появилась возможность покопаться в движке и уровнях Metro: Exodus, то конечнo, с интересом начал разбираться с доступными материалами.

Опять будет много текста и картинок

А ручки - вот они!
Total votes 26: ↑25 and ↓1+28
Comments18

Краткий обзор поведенческих паттернов в Rust

Level of difficultyEasy
Reading time6 min
Views4.4K

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

Зачем нужны поведенческие паттерны? Вопрос риторический, но ответ на него кроется в самой сути разработки. Поведенческие паттерны предоставляют нам для решения часто встречающихся проблем взаимодействия между объектами и классами.

Паттерны можно реализовать на любом ЯПе и сегодня рассмотрим, как их реализовать в Rust.

Читать далее
Total votes 16: ↑11 and ↓5+8
Comments18

Директор директив. Расширяем функционал angular-компонентов красиво. Директива-контекст

Level of difficultyMedium
Reading time8 min
Views3.5K

Игнорируете кастомные директивы в Angular? Зря-зря, многое упускаете.

Позвольте мне показать в нескольких статьях, как с помощью директив можно расширить функционал ваших компонентов, да так, что никакой DX не пострадает (а только улучшится) (по моему мнению). Представляю вам набор паттернов, которыми пользуюсь я.

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments3

Обзор библиотеки FluentValidation. Часть 1. Первые шаги

Level of difficultyMedium
Reading time5 min
Views4.4K

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

Читать далее
Total votes 11: ↑5 and ↓6+4
Comments14

Туда<->Сюда, почтовый сервер на Ubuntе (Exim4+Dovecot+Postfixadmin)

Level of difficultyMedium
Reading time17 min
Views6.9K

Приветствую всех читателей. В данной публикации или инструкции хочу максимально подробно разложить "со своей колокольни разумеется" вопрос установки (MTA MDA) сервера.

Наши ресурсы:

Платформу для выполнения задачи взял из маленького одноплатного компьютера Odroid C1+ на базе Ubuntu 20 версии, купленный домен на хостинге в нашем случае medianet.pp.ua, статический ip адрес от интернет провайдера.

Постановка задачи:

Установка операционной системы Linux Ubuntu не ниже 18.04 LTS или что‑то Debian подобное.

Читать далее
Total votes 9: ↑6 and ↓3+3
Comments5

Необычный RxJS

Level of difficultyMedium
Reading time5 min
Views6K

Всем привет! А вы знали, что RxJS содержит в себе более 100 операторов? Но если ваш проект использует эту библиотеку - скорее всего вы с трудом насчитаете у себя больше пары десятков. Интересная ситуация, да? Не знаю почему так получается, но сегодня я хочу поделиться реальными примерами использования “редких” операторов. Приступаем!

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments4

Information

Rating
4,761-st
Location
Biała, Tarnow, Польша
Date of birth
Registered
Activity