Главная » Архив меток: Проектирование и рефакторинг

Архив меток: Проектирование и рефакторинг

[Перевод] Зависимые типы — будущее языков программирования

Всем привет! В конце поста помещаем три ссылки от автора, позволяющие познакомиться с зависимой типизацией в Idris, F# и JavaScriptИногда создается впечатление, словно языки программирования почти не изменились с 60-х годов. Несмотря на диковинность и некоторую отвлеченность рассматриваемой сегодня темы — надеемся, что она сможет разнообразить вам выходные. Навскидку: это и интегрированные отладчики, и модульные тесты, и статические анализаторы, и ...

Читать далее »

[Перевод] Невызванная функция замедляет программу в 5 раз

Замедляем Windows, часть 3: завершение процессов пер. Автор занимается оптимизацией производительности Chrome в компании Google — прим. Завершение процессов происходило медленно, сериализованно и блокировало системную очередь ввода, что приводило к многократным подвисаниям курсора мыши при сборке Chrome. Летом 2017 года я боролся с проблемой производительности Windows. Я рассказывал об этом в статье «24-ядерный процессор, а я не могу сдвинуть курсор». ...

Читать далее »

Как правильно работать с исключениями в DDD

На нем был затронут вопрос работы с исключениями, который вызвал жаркий спор, но не получил развернутой дискуссии, поскольку не являлся основной темой. В рамках недавно прошедшей конференции DotNext 2018 состоялся BoF по Domain Driven Design. Также, изучая множество ресурсов, начиная от вопросов на stackoverflow и заканчивая платными курсами по архитектуре, можно наблюдать, что в IT-сообществе сложилось неоднозначное отношение к исключениям ...

Читать далее »

Игровые фичи с помощью ECS: добавляем в шутер аптечки

Мы уже рассказали про ECS, какие есть фреймворки для Unity и почему написали свой (со списком можно ознакомиться в конце статьи). От ковров перейдем к серьезным вещам. Отмечу, что применяем эту архитектуру мы только для симуляции мира на сервере и системы предсказания на клиенте. А сейчас остановимся на конкретных примерах, как используем ECS в нашем новом мобильном PvP-шутере и как ...

Читать далее »

[Из песочницы] Как выруливать с legacy code, когда проект нужно было на вчера

Привет. Меня зовут Иван Мельничук, я Head of Development Department в украинской IT-компании. В публикации хочу поделиться личными профессиональными подходами относительно решения вопроса legacy code в условиях стремительного развития проекта и рассказать о приемах, к которым прибегает наша команда в случаях “когда фичи нужно сдавать “на вчера”. Разбираемся с проектом Для того, чтобы передать насколько аккуратной, продуманной и кропотливой, должна ...

Читать далее »

Ускорение SQLAlchemy для архитектурных космонавтов

Видео в конце поста. Хабр, это доклад инженера-программиста Алексея Старкова на конференции Moscow Python Conf++ 2018 в Москве. Всем привет! Меня зовут Алексей Старков — это я, в свои лучшие годы, работаю на заводе.Теперь я работаю в Qrator Labs. В основном, всю свою жизнь, я занимался C и C++ — люблю Александреску, «Банду Четырех», принципы SOLID — вот это всё. ...

Читать далее »

Поваренная книга разработчика: DDD-рецепты (3-я часть, Архитектура приложения)

В рамках предыдущих статей мы выделили область применения подхода и рассмотрели основные методологические принципы Domain Driven Design. В данной статье я хотел бы обозначить основные современные подходы к построению архитектуры корпоративных систем: Supple, Screaming, Clean и дать им свою четкую интерпретацию в виде полноценного готового решения. В итоге, напишем готовый микросервис. В дальнейшем рассмотрим каждый шаблон проектирования подробно: обозначим область ...

Читать далее »

[Перевод] Оптимальное расположение шардов в петабайтном кластере Elasticsearch: линейное программирование

В самом сердце информационно-поисковых систем Meltwater и Fairhair.ai работает набор кластеров Elasticsearch с миллиардами статей из СМИ и социальных медиа. Индексные шарды в кластерах сильно отличаются по структуре доступа, рабочей нагрузке и размеру, что поднимает некоторые очень интересные проблемы. Это решение уменьшает вероятность, что один узел станет узким местом в системе. В этой статье мы расскажем, как применили линейное программирование ...

Читать далее »

Общая игровая логика на клиенте и сервере

На Pixonic DevGAMM Talks выступал еще наш DTO Антон Григорьев. Мы в компании уже говорили, что работаем над новым PvP-шутером и Антон поделился некоторыми нюансами архитектуры этого проекта. Он рассказал, как построить разработку, чтобы изменения в игровой логике клиента появлялись на сервере автоматически (и наоборот), и можно ли не писать код, но при этом минимизировать трафик. Ниже — запись и ...

Читать далее »

Cucumber в облаке: использование BDD-сценариев для нагрузочного тестирования продукта

Еще одна расшифровка доклада с Pixonic DevGAMM Talks. Антон Косякин — Technical Product Manager и работает над ALICE Platform (такая Jira для отелей). Он рассказывал, как они интегрировали воедино существующие в проекте инструменты для тестирования, зачем нужны нагрузочные тесты, какие инструменты предлагает комьюнити и как запустить эти инструменты в облаке. Ниже — выступление и текст доклада. Мы делаем продукт под ...

Читать далее »