Как стать автором
Обновить
6
0

Backend-разработчик

Отправить сообщение

Как подружить DDD и Entity Framework Core?

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров6.7K

Привет, Хабравчане! Меня зовут Валентин, я backend‑разработчик в компании Bimeister.
Уже почти как год вместе с командой разрабатываем новый продукт с применением Domain‑driven design подхода. Как же так получилось?

Так вот, разработка начиналась совершенно с нуля и это была хорошая возможность применить данный подход и попробовать его на практике. В момент начала разработки, перед нашей командой сразу встал вопрос: «А как же хранить аггрегаты, сущности, value‑object'ы в базе данных с использованием EF Core? ». Если вы только начинаете применять DDD и перед вами и вашей командой встала такая же проблема, то эта статья поможет вам приблизиться к ее решению, да пребудет с вами сила Эванса!

Вошли и вышли, приключение на 20 минут
Всего голосов 15: ↑14 и ↓1+13
Комментарии8

Супергерой или миф: как возникло понятие 10х-программист и что за ним стоит

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров14K

Все, кто так или иначе связан с IT-сферой, знакомы с понятием 10х-программист. Так называют самых крутых и эффективных разработчиков. Термин встречается буквально везде: от кликбейтных статей “Как стать программистом за месяц” до книг уважаемых экспертов вроде Стива Макконнелла или Мартина Фаулера. Даже в сериале "Кремниевая долина" в первых же сериях упоминается, что главный герой – как раз один из тех самых 10х-программистов.

Все статьи по теме ссылаются на некие исследования ученых. Я разобрался, как появились 10х-программисты и что на самом деле стоит за этим термином.

Читать далее
Всего голосов 28: ↑21 и ↓7+21
Комментарии34

Разработка .NET Web приложения на Yandex Cloud Functions

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров5.9K

Яндекс Облако предоставляет возможность публикации .NET приложений разными способами, типичным из которых является docker контейнер, развернутый на созданных вычислительных ресурсах, что подразумевают оплату за выделенные процессоры и оперативную память. Более экономный вариант предоставляют serverless сервисы Cloud Functions и Serverless Containers, где оплата идет по фактически потребленным ресурсам, масштабирование осуществляется самим облаком. Контейнеры хороший вариант разработки, но более простым и легковесным является Cloud Functions.

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии7

Как построить надёжную шину данных на Apache Kafka

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров14K

С помощью Apache Kafka мы в Авито гарантируем соблюдение контрактов публикуемых событий. Рассказываем, как мы переработали архитектуру и сделали работу с Kafka удобнее и надёжнее.

Мы можем пережить даже полный отказ дата-центра. Почему — тоже расскажем в этой статье.

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии19

«Чистый» код, ужасная производительность

Время на прочтение16 мин
Количество просмотров66K
Один из самых часто повторяемых советов программистам, особенно начинающим — это рекомендация писать «чистый» код. Она сопровождается длинным списком правил, сообщающих, что нужно делать, чтобы код был «чистым».

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

Если посмотреть на список правил «чистого» кода и вытащить из него правила, которые действительно влияют на структуру кода, то мы получим следующее:

  • Отдавайте предпочтение полиморфизму, а не «if/else» и «switch»
  • Код не должен знать о внутреннем устройстве объектов, с которыми он работает
  • Функции должны быть маленькими
  • Каждая функция должна выполнять одну задачу
  • Принцип «DRY» — Don’t Repeat Yourself («не повторяйся»)

Эти правила достаточно чётко формулируют то, как должен создаваться конкретный фрагмент кода, чтобы быть «чистым». Но я задам такой вопрос: если мы создадим фрагмент кода, соответствующий этим правилам, какова будет его производительность?
Читать дальше →
Всего голосов 192: ↑156 и ↓36+149
Комментарии368

Нужна ли на проекте документация: три признака, что да, ещё три — когда нет

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров4.2K

Подготовка документации — дело затратное. Прежде чем приступать к ней, нужно подумать, действительно ли она нужна, или это делается, потому что «так принято». 

В статье я подробно остановился на ситуациях, когда написать её необходимо. Если в одной из них вы узнаете свой проект, то документация сильно поможет в его реализации.

Читать далее
Всего голосов 27: ↑26 и ↓1+27
Комментарии13

Влияние нейросетей на будущее человека

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров6.6K

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

Читать далее
Всего голосов 13: ↑2 и ↓11-6
Комментарии10

Почему ближняя к нам сторона Луны так отличается от обратной?

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров19K


Луна, безусловно, — самый яркий и самый большой объект, видимый человеческим глазом в ночном небе Земли. По сравнению с Венерой, следующим по яркости объектом, Луна в тридцать раз больше в диаметре, занимает почти в 1000 раз большую площадь поверхности и выглядит примерно в 1 000 000 раз ярче. Более того, Луна не кажется нам однородным диском, и демонстрирует явные различия от места к месту по всей поверхности, даже если смотреть на неё невооружённым глазом с Земли.

Невооружённым глазом эти различия могут выглядеть просто как яркие и тёмные пятна: так называемый «человек на Луне» — самое простое, что можно разглядеть. Но если вы посмотрите в телескоп, то увидите не только тёмные пятна, выделяющиеся на фоне более ярких участков, но и горные хребты, кратеры с высокими стенами и лучами, расходящимися от них, и теневой рельеф вдоль границы ночного дня, лунного терминатора.

Хотя эти особенности могут быть вам знакомы, все они содержат подсказки о древней истории Луны и могут помочь нам понять, почему «лицо» Луны, которое мы видим, не сообщает нам полной картины о нашем спутнике.
Читать дальше →
Всего голосов 58: ↑53 и ↓5+67
Комментарии27

Как добиться эталонного качества передачи голоса через интернет

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров7.7K

Голосовая связь с нами давно: первые телефоны изобрели ещё в конце 19-го века, а мобильные — в середине 20-го. В начале 2000-х начал набирать популярность ещё один способ связи — интернет-звонки. Идея по сути та же — общаться на расстоянии, только ещё проще и дешевле. Плюс онлайн-звонки дают много дополнительных функций: от возможности видеть собеседников по видеосвязи до формата, когда вы вместе смотрите кино, находясь в разных точках планеты. Технологии идут вперёд, и тем не менее мы снова и снова переспрашиваем: «Слышно меня?».

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

Читать далее
Всего голосов 29: ↑27 и ↓2+38
Комментарии7

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

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров22K

Известная шутка программистов гласит, что если решение вашей проблемы включает в себя парсинг текста при помощи регулярного выражения, то теперь у вас есть две проблемы. Некоторые программисты, прочитав шутку, решают попробовать иной подход. Возможно, регулярные выражения не так уж нужны. Возможно, задачу можно решить простым split строки или чем-то подобным. Однако другие могут задуматься немного глубже и задаться вопросом: «А если я сделаю нечто настолько дерзкое, что в результате получу три проблемы?» Мой пост написан в таком духе!

В нём используется код на Python, однако его легко можно адаптировать под любой язык с поддержкой функций высшего порядка.
Читать дальше →
Всего голосов 55: ↑53 и ↓2+65
Комментарии70

Какой ты нафиг программист?

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров26K

Скажу честно, изучая программирование, я влюбился в Python. Тогда у него ещё не было такой ошеломляющей популярности, и после курса С/С++/Java было ощущение, что меня вынули из чана с кипящей смолой, облили пантенолом и дали попить вкусной минералки. Я уже был неплохим инженером, но меня, как любого адекватного человека, манили деньги в разработке — и я учился, учился, учился… Пока учился, написал кучу скриптов для рабочих серверов, научился сам работать с SQL-запросами в биллинге, делал выборки для аналитиков, не мучая службу АСУ. Я даже ушёл в не очень кровавый энтерпрайз посмотреть на разработку, погрузился, но отступил в связанное с основным профилем тестирование. Потому что однажды честно сказал себе: «Какой ты нафиг программист?» Скажу и некоторым остальным ;-)

Читать далее
Всего голосов 51: ↑35 и ↓16+34
Комментарии140

Остановись, мгновенье. Медленное программирование — тренд для уставших разработчиков

Время на прочтение5 мин
Количество просмотров41K

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

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

Читать далее
Всего голосов 124: ↑123 и ↓1+145
Комментарии77

System.String не то, чем кажется. Представление строк в памяти .NET

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров13K

Тип System.String - один из самых используемых при разработке. В этой статье я хотел бы поговорить о нюансах его реализации. Вы узнаете о том, как строки хранятся в памяти и почему в каждой строке есть 4 пустых байта.

Читать далее
Всего голосов 24: ↑22 и ↓2+23
Комментарии5

Как мы управляем распределенными транзакциями в сервисах #CloudMTS. Без саг

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров3.9K
image

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

Меня зовут Илья Казначеев (Color), я техлид в команде #CloudMTS.

Представьте, что у вас есть распределенный процесс. Он состоит из сотни шагов: часть из них выполняется последовательно, часть — параллельно. Каждый шаг подразумевает один или несколько вызовов отдельных сервисов. Управление состоянием в такой системе — задача сложная. Как сделать так, чтобы изменение состояния происходило детерминированно: чтобы транзакция либо выполнилась, либо нет, чтобы процесс либо завершился полностью, либо откатился полностью. Как понять, что произошла ошибка, а главное – что нужно сделать, чтобы процесс пошел дальше или перезапустился.

Такую задачу мы решали для одного из наших сервисов Containerum Kubernetes Service, и в этой статье я расскажу, как мы научились управлять распределенными транзакциями, включающими 200–300 шагов и дюжину сервисов.

Сразу скажу, что в статье речь пойдет не о распределенных транзакциях баз данных, а о транзакциях уровня бизнес-логики приложения.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии23

Пришло время пересмотреть структуру проектов на .NET

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров17K

C релизом .net 6 у нас появился новый упрощенный подход для быстрого создания сервисов  Minimal APIs. Эта статья появилась потому, что с новым подходом появились новые вопросы, связанные с организацией кода внутри проекта.

Это — немного вольный перевод статьи "Maybe it's time to rethink our project structure with .NET 6" от Tim Deschryver про подход к созданию сервисов с помощью Minimal APIs, который может помочь нам сделать архитектуру приложения более чистой, простой и легкой в поддержке и развитии.

Читать далее
Всего голосов 14: ↑11 и ↓3+10
Комментарии24

Практическое DDD. Часть 2: Архитектурные темы 1 — Агрегат и ограниченный контекст в микросервисе

Время на прочтение6 мин
Количество просмотров7.1K

В этом посте я расскажу о том, как мы используем DDD в Augury и наши уникальные бизнес-требования для создания руководства по архитектуре микросервисов, сосредоточившись на трех общих паттернах. Мы используем это руководство и определения, чтобы решить, когда создавать новый микросервис и как распределить нашу доменную логику по этим сервисам.

Читать далее
Всего голосов 11: ↑6 и ↓5+2
Комментарии2

«Мы все стремимся к сложности, а потом с ней боремся»: интервью с Венкатом Субраманиамом

Время на прочтение33 мин
Количество просмотров11K


«Сколько зрителей придёт на ваш доклад по Java? Зависит от того, выступает ли в то же время в соседнем зале Венкат».

Это шутка с изрядной долей правды: в Java-мире Венкат Субраманиам — один из самых известных спикеров, действительно способный на конференциях оттянуть зрителей из других залов. Он неустанно перемещается по всей планете и недавно поставил впечатляющий рекорд, к своему 50-летию выступив за один год перед 50 разными Java User Groups.

Каково это, когда твоя Java-карьера — не «сидеть в офисе», а «постоянно перемещаться»? И что Венкат думает об актуальных Java-вопросах? В октябре он доберётся до Петербурга, и в преддверии этого мы (phillennium, olegchir) взяли у него подробное интервью, где начали с «жизни в самолёте» и советов для начинающих спикеров, а затем перешли к технологиям.

Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии9

Коммерческое QA-образование умерло. Возвращаемся к профессиональному (и призываем нейроменторов)

Уровень сложностиПростой
Время на прочтение26 мин
Количество просмотров7.7K

В 2001 году Джордж Акерлоф получил Нобелевскую премию по экономике за анализ рынков с несимметричной информацией. Его научная работа с запоминающимся названием «Рынок „лимонов“» доказывает, что если покупатели не владеют информацией о качестве товара в той же мере, что и продавцы, то плохие товары вытесняют хорошие вплоть до полного исчезновения рынка.

Бум коммерческого Edtech в России подходит к концу. Он дал положительные результаты — он дал возможность многим начать профессию в тестировании. Но дал и отрицательные.

Во‑первых, он утвердил в головах, что тестирование — это настолько легко, что «каждый может стать».

Во‑вторых, превратил образовательный рынок в рынок «лимонов». Не разбирающиеся в смысле будущей профессии студенты выбирали курсы, где «побольше тулов» и где пожирнее скидки. Теперь от результатов работы этих «лимонов» морщатся HR, пытаясь сделать так, чтобы позже не морщилась команда.

Если с репутацией тестирования уже решительно ничего не сделать, то в плане подхода к IT‑образованию вообще и QA‑образованию в частности можно попробовать спрогнозировать дальнейшее развитие событий. И предсказать его возвращение к истокам.

Читать далее
Всего голосов 12: ↑9 и ↓3+8
Комментарии39

Лучшие практики CI/CD с Kubernetes и GitLab (обзор и видео доклада)

Время на прочтение5 мин
Количество просмотров45K


7 ноября на конференции HighLoad++ 2017, в секции «DevOps и эксплуатация» прозвучал доклад «Лучшие практики CI/CD с Kubernetes и GitLab». В нём мы делимся практическим опытом решения проблем, возникающих при построении эффективного процесса CI/CD на базе указанных Open Source-решений.

По традиции рады представить видео с докладом (около часа, гораздо информативнее статьи) и основную выжимку в текстовом виде.
Всего голосов 21: ↑21 и ↓0+21
Комментарии8

Как снимали первую Матрицу и в чём её феномен

Время на прочтение13 мин
Количество просмотров48K

В 1999 году на экраны кинотеатров вышло небывалое количество фильмов, ставших по-настоящему культовыми: «Зелёная миля», «Бойцовский клуб», «Красота по-американски», «Мумия», «Сонная лощина» и другие («Звёздные войны: Призрачная угроза» в этот список не включён осознанно, потому что ничего культового в нём нет). 

Но для очень многих именно выход на экраны «Матрицы» стал самым знаковым событием и даже изменил представление о реальности, без шуток. Парадокс в том, что по сути ничего революционного в этих идеях не было. Появление мессии — главная тема христианства (и не только), сомнение в реальности — это суть картезианства ещё 17 века, да и фильм «Вспомнить всё» иллюстрирует подобную мысль. Тем не менее «Матрица» — это настоящий феномен. Давайте посмотрим, как её создавали и порассуждаем, в чём же её парадокс.

Следовать за белым кроликом ?
Всего голосов 104: ↑98 и ↓6+117
Комментарии140

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer
Middle
.NET
ASP.NET Web API
C#
Docker
SQL
Git
Linux
Nginx
CI/CD