Pull to refresh
38
0.4

Senior Back-End Developer .NET Core C#

Send message

Вам нужен медиатор

Level of difficultyMedium
Reading time16 min
Views17K

Этой весной в чатах и сообществах dotnet (не забываем #DropTheDot) обострились анти-медиаторные настроения. Поначалу меня это забавляло, потом удивляло: люди подхватывают лозунги, не пытаясь разобраться в вопросе. Квинтэссенцией обострения стал доклад Андрея Парамонова "MediatR не нужен”, шокирующий своей категоричностью аргументов. В докладе были зерна истины, но они к концу так и не проросли.

Желание прорастить эти зерна и мой крайне положительный опыт использования медиатора в проектах разного размера смотивировали меня написать данную статью. Статья основана на личном опыте и наполнена эмоциями, за это заранее извиняюсь ? Она будет интересна скорее людям, которые уже знакомы с медиатором, встречались с ним в теории или на практике.

Зачем мне медиатор?
Total votes 21: ↑19 and ↓2+21
Comments29

Нагрузочный поединок: Tarantool 2.10 vs Redis 7.0.5

Level of difficultyMedium
Reading time14 min
Views3.6K

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

Тем не менее в них много схожего. И в статье мы хотим рассмотреть: что, если взять Tarantool как замену Redis? Просядет ли производительность из-за всех «дополнительных» фичей в Tarantool? Насколько хорошо или плохо справится дисковая подсистема с нагрузкой?

Мы взяли типичные кейсы работы с Redis и реализовали такие же механики на Tarantool, начиная от простых K-V операций и заканчивая вторичными ключами и производительностью кластерных решений: для Tarantool это Tarantool Cartridge, для Redis — Redis Cluster.

Читать далее
Total votes 34: ↑32 and ↓2+31
Comments8

Сравнение SQL- и NoSQL-баз данных

Level of difficultyEasy
Reading time11 min
Views41K

SQL и NoSQL — две популярные модели баз данных, которые используют для решения различных задач. Чтобы понять, какая из них подойдёт в вашем случае, необходимо разобраться в их различиях, преимуществах и недостатках.

В этой статье я рассмотрю основные характеристики SQL- и NoSQL-баз данных и сравню их, чтобы помочь выбрать лучший вариант для вашего проекта.
Читать дальше →
Total votes 33: ↑25 and ↓8+28
Comments29

Беда “войти в айти” или курсы тестировщика отзывы: Спустя 1.5 года исследования QA-курсов

Level of difficultyEasy
Reading time17 min
Views39K

18 месяцев.

400 развернутых интервью с "входящими в IT".

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

~30 курсов, на первые занятия которых автор ходил или общался с организаторами (7-8 курсов предложили полностью бесплатное обучение).

10 Хабр-статей, включая эту (набравшие более 300'000 просмотров).

В результате:

Получен ответ на главный вопрос жизни, Вселенной и всего такого: "Какой процент студентов QA-курсов после выпуска в действительности начинает работать тестировщиком?"

На основании собранной статистики выявлен список худших QA-курсов в обитаемой части галактики с точки зрения самого объективного параметра. А именно - способности выпускников трудоустроиться.

Составлен гайд “Как способным войти в IT с гарантией трудоустройства” (но он не всем понравится)

Читать далее
Total votes 23: ↑22 and ↓1+22
Comments33

API FIRST — что это поменяло

Level of difficultyEasy
Reading time5 min
Views6.7K

Я долго не могла понять, почему это пример API-driven дизайна. Оказалось, api — это пчёлы

Классический подход к проектированию, существующий с незапамятных времён, — CODE FIRST, в нём разработчики сами устанавливают правила для взаимодействия информационных систем. Подход позволяет быстро получить осязаемый результат в виде запрограммированного куска системы, но есть несколько минусов:

  • Первый — возможность получить обратную связь есть только тогда, когда код готов и пользователь может проверить решение, кликая разные кнопочки в GUI. Это часто приводит к тому, что реализованную часть системы приходится писать заново.
  • Второй, что хуже — CODE FIRST предполагает каскадную модель разработки: нет возможности настроить параллельно несколько потоков работ.
  • Третий недостаток — отсутствие документации и часто слишком детализированное API. Такое API невозможно переиспользовать. 
  • И ещё один, четвёртый, минус — отсутствие адаптации к изменениям. А изменения обычно происходят уже во время разработки.

На замену CODE FIRST пришёл подход DESIGN FIRST. Главными героями здесь становятся дизайнеры. Сначала они отрисовывают все макеты, проектируют кликабельные интерфейсы, и только потом, после ревью пользователей, пишется код системы. Это улучшает UX/UI, команда получает обратную связь до того, как продукт будет готов. Но и тут есть очевидные недостатки:

  • Дефицит бизнес-навыков и аналитического мышления у дизайнеров.
  • Маршруты, положенные в основу архитектуры системы и UI, часто не совпадают с картой бизнес-процессов пользователя. Проще говоря, дизайнер может изобразить любой вариант UI, но возникает вопрос: а можно ли реализовать ту или эту фичу как функционал?
  • Ну и та же проблема, как и с CODE FIRST: нет возможностей для быстрой и эффективной адаптации к изменениям. 

И вот тогда, на стыке CODE FIRST и DESIGN FIRST, появился подход API FIRST, который удачно объединил достоинства всех предыдущих методов.
Читать дальше →
Total votes 14: ↑12 and ↓2+12
Comments2

ИП в РФ на УСН / ПСН / НПД / ОСНО – как платить налоги с иностранных доходов – FAQ 2023 г

Reading time26 min
Views16K

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

В 2022 / 2023 году, возник массовый, довольно новый для налоговиков РФ и налоговиков стран ЕАЭС тренд, при котором физическое лицо в статусе индивидуального предпринимателя осуществляет аналогичную деятельность в РФ и еще где-то, то есть как ИП в РФ (на УСН, ПСН, НПД) и как ИП образованное по законам зарубежного государства, при этом такое физическое лицо, может не иметь статус налогового резидента ни в одном из этих государств, административная и судебная практика по таким кейсам только формируется.

Читать далее
Total votes 14: ↑10 and ↓4+6
Comments23

Что будет, если от разработчиков не отстать: умирающая команда

Reading time11 min
Views60K
Мне досталась команда, которая болела. Все понимали, что происходит, никому не нравилось, что творится в команде, и традиционно менеджеры такие команды сильно режут. Но здесь были шансы вылечить и без ампутаций.


Источник

15 человек, из них — один руководитель проекта, три фронта, два бэка, три аналитика, девопс. Симптомы обычные: процессы всем не нравятся, соседи — козлы, потому что не то и не так делают, а как нужно — не знают, ответственности ни на ком толком нет ни за что.

Вроде бы когда-то это был настроенный конвейер, но теперь его куски — как будто в разных зданиях. Особо не заботятся о том, что было «до» и что будет «после». А если всё падает, то люди поднимают руки: «Я не виноват. Я не знаю, как поднять».

Проект — внутренний банка, он нужен для улучшения работы внутри компании. Традиционных решений в кровавом энерпрайзе — два: нанять новую команду (но вгружать мидла на проект такой сложности — три-четыре месяца) или же оставить проект на поддержке, через два года найти ему замену, а команду тихо похоронить в подвале. Точнее, не так: те, кто плывет по течению и не заботится о карьере, остаются тихо сидеть «на пенсии», то есть в бесконечной поддержке проекта. А самые проактивные тут же перейдут в другие команды или другие компании.

Почему процессы разваливались? На первый взгляд, потому, что была куча ненужных совещаний и встреч с теми, кого разработчики вообще не должны были видеть. Плюс местами странноватые KPI. Как это ни странно, но если психологически давить на разработчика пару лет, то ничем хорошим это не закончится. Руководство подразделения дало мне карт-бланш на исправления, и я начал разбираться, что же случилось.
Читать дальше →
Total votes 171: ↑167 and ↓4+205
Comments74

Парадокс Соломона. Легко давать советы другим, но не себе

Reading time5 min
Views15K

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

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

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

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

Как на самом деле работает Async/Await в C# (Часть 1)

Level of difficultyHard
Reading time12 min
Views53K

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.

Читать далее
Total votes 17: ↑16 and ↓1+16
Comments8

Когда поможет только нагрузочное тестирование

Level of difficultyMedium
Reading time7 min
Views2.7K
В мире ИТ непрерывно происходят эволюционные изменения, которые ставят во главу угла такие аспекты, как безопасность и надёжность решений.



К подобным изменениям, в частности, приводит развитие сервисов, которые должны работать с большим числом пользователей: онлайн-банкинг, маркетплейсы, сервисы покупки билетов и бронирования, бесконтактная оплата через POS-терминалы (вспомните, когда вы последний раз платили на кассе наличными?), оплата метро по Face ID, запрос и получение информации на Госуслугах и т.д.

Качественно создавать и развивать подобные сервисы сложно, к тому же, помимо понятных забот об удобстве, а также безопасности и сохранности личных данных, вас поджидают неочевидные риски, связанные именно с ростом числа пользователей. Именно здесь на помощь приходит нагрузочное тестирование. О нём ниже и поговорим, а также разберём конкретные жизненные примеры.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments0

Как работает веб-браузер (с картинками)

Level of difficultyEasy
Reading time6 min
Views32K

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

Эта статья приоткроет завесу магии, скрывающуюся за кулисами веб-браузеров.

Давайте начнем!

Читать далее
Total votes 25: ↑22 and ↓3+24
Comments9

Где решать задачи по программированию, чтобы пройти путь from zero to hero

Level of difficultyEasy
Reading time4 min
Views110K

Если вам о чём-то говорят фамилии Зив, Хомченко и Рымкевич, иди сюда, дай обниму, бедолага-олимпиадник, то вы наверняка знаете, как важно прорешивать задачи для полноценного, осознанного и глубокого понимания изученного материала. Когда нет или совсем мало реальной практики, задачи дают возможность покрыть практикой все теоретические знания, погрузиться в неожиданные выводы, сложности, баги, препятствия. Более того, даже если практики достаточно, задачи помогают относительно быстро, комплексно и глубоко проработать типичные и нетипичные ситуации, возникающие в разработке (любой другой науке). Это всегда безопасный (никто не взрывает лабораторию и не роняет прод), доступный и удобный способ подробно разобраться в предмете. Определённо, программирования это касается в первую очередь.

Читать далее
Total votes 42: ↑41 and ↓1+65
Comments25

Когда НЕ нужно использовать Apache Kafka?

Level of difficultyMedium
Reading time18 min
Views9.8K
image

Apache Kafka де-факто превратился в стандарт потоковой передачи событий для обработки данных на лету. По мере его широкого распространения в отрасли появляются вопросы: «А когда НЕ нужно использовать Apache Kafka? Какие ограничения у этой платформы? В каких ситуациях он не предлагает необходимые возможности? Как понять, что Kafka — неподходящий инструмент для какой-то задачи?»


В статье, перевод которой мы подготовили, автор Kai Waehner постарается ответить на эти вопросы. В отдельных главах приводится объяснение, когда стоит использовать Kafka, когда — нет, а когда — возможно.

Читать дальше →
Total votes 19: ↑15 and ↓4+15
Comments0

Шрифтовая «не-пара»

Reading time6 min
Views3.3K

Сегодня нет никаких технических, технологических, финансовых, нейро-эстетических обоснований для использования в цифровых продуктах такой конструкции как «шрифтовая пара». Это искусственное ограничение дизайнерской мысли носит исключительно исторических характер и не способствует здоровому развитию специалистов не заставших «типографскую печать».

Читать далее
Total votes 9: ↑5 and ↓4+5
Comments64

Гайд по написанию пользовательских историй и критериев приёмки

Level of difficultyEasy
Reading time6 min
Views25K

Всем привет! Меня зовут Валентина Ляликова. Я ведущий бизнес-аналитик в X5 Tech и преподаватель направления «Пользовательские истории и критерии приёмки» в Школе бизнес-анализа X5 Tech. 

Большой опыт работы на разнообразных проектах помог сформировать мне список правил, которых я придерживаюсь каждый день при написании User Story и Acceptance Criteria (US+AC). В этой статье хочу поделиться ими с вами и показать на примерах ошибочных вариантов написания документа US+AC, почему так важно применять эти правила в работе.

Читать далее
Total votes 13: ↑10 and ↓3+9
Comments2

На что способен хороший отладчик

Reading time13 min
Views7.7K

Порой приходится слышать: «Отладчики бесполезны, гораздо целесообразнее иметь дело с логированием и модульными тестами». Подозреваю, что многие из разделяющих такое мнение думают, будто отладчик только и может, что расставлять точки останова на определённых строках, пошагово просматривать код и проверять значения переменных. Притом, что любой годный отладчик действительно всё это может, на самом деле это только верхушка айсберга. Задумайтесь: мы уже вполне можем наткнуться на код, которому около 40 лет; наверняка же с тех пор что-то изменилось?  

Tl;dr — в этом эпизоде дедовского нытья вы узнаете, что хороший отладчик поддерживает различные виды точек останова, предлагает широкие возможности визуализации данных, имеет среду REPL для выполнения выражений, может показывать зависимости между потоками и контролировать их выполнение, может подхватывать изменения в исходном коде и применять их без перезапуска программы. Также он может проходить код от конца к началу и перематывать состояние программы до любого момента в истории её выполнения. Можно даже записать весь ход управления программы и визуализировать поток управления и историю потока данных.

Читать далее
Total votes 24: ↑23 and ↓1+32
Comments10

Получил ВНЖ Цифрового Кочевника в Испании

Level of difficultyEasy
Reading time2 min
Views12K

я Андрей Поснов, переехал из Москвы в Барселону с женой и собакой: въехал по туристической визе, получил студенческую, а как только появилась digital nomad visa, подался на нее. Я работаю инжиниринг-менеджером в американском стартапе удаленно и веду свой ютуб и телеграм каналы

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

Читать далее
Total votes 30: ↑14 and ↓16+6
Comments14

Как я делал внутренний cookbook по тому, как писать код (и результат можно скачать)

Level of difficultyHard
Reading time16 min
Views16K

Авокадо с зубами подсказывает, что так код легче поддерживать, дописывать и рефакторить. Мы всё теперь пишем только так.

Привет, Хабр! У нас была проблема: каждый писал код как хотел. Было очень тяжело это поддерживать и ревьюить. Мы сначала думали, что достаточно написать стандарт кода. Оказалось, недостаточно, ему ещё надо обучить. Чтобы обучить, мы открыли для ревью эталоны кода, чтобы покрыть ими самую частую логику взаимодействия с компонентами. Тоже не хватило. А заодно я узнал, что мои же «золотые» образцы противоречили моему же стандарту кода (сначала было смешно, а потом пришлось переписывать).

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

Всё это было нужно для того, чтобы мы все в команде понимали, что такое наш стандарт кода, делали одинаковые вещи примерно одинаково, имели набор готовых шаблонов на системные или платформенные обращения и уменьшили объёмы как самого ревью, так и диалогов после.

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

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

На сегодня ни в одной компании в России я не видел целостного подхода в сборке с кукбуком. Какие-то части встречаются, в сборке — нет. Вот я и хочу рассказать, как мы это сделали у себя в банке.

Посвящается всем, кто коллекционирует элегантные решения без привязки к языку, фрэймворку, Фаундлингам и Software Craftsmanʼам.

Погнали.
Читать дальше →
Total votes 19: ↑18 and ↓1+19
Comments4

Сравнение MySQL и PostgreSQL в 2023 году

Level of difficultyEasy
Reading time9 min
Views55K

PostgreSQL и MySQL — это надежные, безопасные и масштабируемые базы данных, которые существуют уже много лет. Каждая из них имеет уникальные сильные и слабые стороны, что делает какую‑либо из них более подходящей для конкретных нужд. В этой статье мы проведем их сравнение, чтобы помочь с принятием обоснованного решения в 2023 году.

Читать далее
Total votes 19: ↑11 and ↓8+6
Comments37

Information

Rating
1,880-th
Location
Россия
Registered
Activity

Specialization

Backend Developer
Senior
C#
.NET Core
SQL