Как стать автором
Обновить
38
0.3

Senior Back-End Developer .NET Core C#

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

Под капотом: как работает мгновенный поиск перелетов

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

Всем привет, я работаю в группе компаний Dyninno. Это большой международный холдинг, который предоставляет услуги и продукты в сфере туризма, финансов, развлечений и технологий в 50 странах. Основа и самая весомая часть нашего бизнеса - продажа авиабилетов. Поэтому скорость и максимальное количество наиболее релевантных результатов поиска для клиентов - наша основа основ. И сегодня предлагаю посмотреть на то, как работает наш поиск изнутри. 

Этот материал будет интересен тем, кто имеет дело с масштабируемыми сервисами, написанными на Go и развернутыми в Kubernetes, и тем, кто так или иначе связан с поисковыми системами. Я расскажу об интеграции наших собственных сервисов с Amazon SQS и базами данных - как внутренними, так и сторонними.  

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

Scrum не нужен. Нужно лишь правильно использовать Kanban

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

Почему вы выбрали фреймворк Scrum, а не метод управления проектами Kanban? Не можете ответить? Значит — лично вы Scrum и не выбирали. Кто-то сделал это за вас.

Даже в тех редких случаях, когда люди способны ответить на вышеприведённый вопрос, их мотивы раскрывают глубокие заблуждения относительно Kanban. Выражаются эти заблуждения в упоминании следующих причин выбора Scrum:

Читать далее
Всего голосов 19: ↑15 и ↓4+22
Комментарии14

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

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

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

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

Зачем мне медиатор?
Всего голосов 21: ↑19 и ↓2+21
Комментарии29

Топ-10 докладов на С# конференциях 2019-2022 года

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

Небольшая подборка интересных докладов с конференций для C# и .NET разработчиков за последние несколько лет.

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

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

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

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

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

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

Читать далее
Всего голосов 34: ↑32 и ↓2+31
Комментарии8

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

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

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

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

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

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

18 месяцев.

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

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

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

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

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

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

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

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

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

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

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

Я долго не могла понять, почему это пример 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, который удачно объединил достоинства всех предыдущих методов.
Читать дальше →
Всего голосов 14: ↑12 и ↓2+12
Комментарии2

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

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

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

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

Читать далее
Всего голосов 14: ↑10 и ↓4+6
Комментарии23

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

Время на прочтение11 мин
Количество просмотров61K
Мне досталась команда, которая болела. Все понимали, что происходит, никому не нравилось, что творится в команде, и традиционно менеджеры такие команды сильно режут. Но здесь были шансы вылечить и без ампутаций.


Источник

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

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

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

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

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

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

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

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

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

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

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

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров56K

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

Читать далее
Всего голосов 17: ↑16 и ↓1+16
Комментарии8

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

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.8K
В мире ИТ непрерывно происходят эволюционные изменения, которые ставят во главу угла такие аспекты, как безопасность и надёжность решений.



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

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

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

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

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

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

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

Читать далее
Всего голосов 25: ↑22 и ↓3+24
Комментарии9

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

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

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

Читать далее
Всего голосов 42: ↑41 и ↓1+65
Комментарии25

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

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

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


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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 13: ↑10 и ↓3+9
Комментарии2

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

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

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

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

Читать далее
Всего голосов 24: ↑23 и ↓1+32
Комментарии10

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

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

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

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

Читать далее
Всего голосов 30: ↑14 и ↓16+6
Комментарии14

Информация

В рейтинге
2 106-й
Откуда
Россия
Зарегистрирован
Активность

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

Backend Developer
Senior
C#
.NET Core
SQL