Pull to refresh
6
2

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

Send message

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

Level of difficultyMedium
Reading time14 min
Views6.6K

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

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

Вошли и вышли, приключение на 20 минут
Total votes 15: ↑14 and ↓1+13
Comments8

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

Level of difficultyEasy
Reading time4 min
Views14K

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

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

Читать далее
Total votes 28: ↑21 and ↓7+21
Comments34

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

Level of difficultyMedium
Reading time4 min
Views5.8K

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

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

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

Level of difficultyMedium
Reading time6 min
Views14K

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

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

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

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

Reading time16 min
Views65K
Один из самых часто повторяемых советов программистам, особенно начинающим — это рекомендация писать «чистый» код. Она сопровождается длинным списком правил, сообщающих, что нужно делать, чтобы код был «чистым».

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

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

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

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

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

Level of difficultyEasy
Reading time3 min
Views4.2K

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

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

Читать далее
Total votes 27: ↑26 and ↓1+27
Comments13

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

Level of difficultyEasy
Reading time3 min
Views6.5K

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

Читать далее
Total votes 13: ↑2 and ↓11-6
Comments10

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

Level of difficultyEasy
Reading time8 min
Views19K


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

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

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

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

Level of difficultyMedium
Reading time10 min
Views7.6K

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

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

Читать далее
Total votes 29: ↑27 and ↓2+38
Comments7

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

Level of difficultyMedium
Reading time18 min
Views21K

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

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

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

Level of difficultyEasy
Reading time4 min
Views26K

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

Читать далее
Total votes 51: ↑35 and ↓16+34
Comments140

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

Reading time5 min
Views41K

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

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

Читать далее
Total votes 124: ↑123 and ↓1+145
Comments77

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

Level of difficultyEasy
Reading time6 min
Views13K

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

Читать далее
Total votes 24: ↑22 and ↓2+23
Comments5

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

Level of difficultyMedium
Reading time8 min
Views3.9K
image

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

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

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

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

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

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

Level of difficultyEasy
Reading time11 min
Views17K

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

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

Читать далее
Total votes 14: ↑11 and ↓3+10
Comments24

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

Reading time6 min
Views7K

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

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

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

Reading time33 min
Views11K


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

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

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

Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments9

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

Level of difficultyEasy
Reading time26 min
Views7.7K

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

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

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

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

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

Читать далее
Total votes 12: ↑9 and ↓3+8
Comments39

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

Reading time5 min
Views45K


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

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

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

Reading time13 min
Views48K

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

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

Следовать за белым кроликом ?
Total votes 104: ↑98 and ↓6+117
Comments140

Information

Rating
1,197-th
Date of birth
Registered
Activity

Specialization

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