Как стать автором
Обновить
22
Карма
0
Рейтинг
Кирилл Александрович @KReal

Пользователь

Юнит-тесты на внедрение зависимостей Microsoft.Extensions.DependencyInjection

Время прочтения 5 мин
Просмотры 2.3K
Программирование *.NET *ASP *C# *Тестирование веб-сервисов *

C постепенным переходом проектов на .NET Core фреймворки все большую популярность набирает стандартная реализация внедрения зависимостей от Microsoft. При использовании любого фреймворка для внедрения зависимостей рано или поздно разработчики сталкиваются с проблемой забытой или неправильной регистрации зависимостей, что влечет за собой ошибку в рантайме приложения. В этой статье разбираемся как покрыть unit-тестами внедрение зависимостей стандартной библиотеки Microsoft.Extensions.DependencyInjection.

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

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

Время прочтения 11 мин
Просмотры 52K
Блог компании Газпромбанк Управление разработкой *Управление проектами *
✏️ Технотекст 2022
Мне досталась команда, которая болела. Все понимали, что происходит, никому не нравилось, что творится в команде, и традиционно менеджеры такие команды сильно режут. Но здесь были шансы вылечить и без ампутаций.


Источник

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

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

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

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

Фантастические и фэнтезийные циклы, каждая часть которых удостаивалась престижных премий

Время прочтения 5 мин
Просмотры 14K
Читальный зал Научная фантастика

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

Читать далее
Всего голосов 33: ↑30 и ↓3 +27
Комментарии 76

Manticore — альтернатива Эластику на C++ с 21-летней историей

Время прочтения 53 мин
Просмотры 15K
Поисковые технологии *Sphinx *Администрирование баз данных *

5 лет назад мы форкнули Manticore из open source версии некогда популярного open source поискового движка Sphinx 2.3.2. У нас было два пакетика травы, семьдесят пять ампул мескалина, три C++ разработчика, один саппорт-инженер, опытный пользователь, менеджер, мать пятерых детей, помогающая нам на полставки и гора багов, крэшей и технических долгов. И вот, по прошествии 5 лет и сотен новых пользователей мы готовы сказать, что Manticore можно использовать как альтернативу Elasticsearch и для полнотекстового поиска и для аналитики данных.

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

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

Времена в английском языке

Время прочтения 7 мин
Просмотры 37K
Читальный зал Изучение языков

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

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

Читать далее
Всего голосов 51: ↑46 и ↓5 +41
Комментарии 50

17 убойных репозиториев GitHub, которые нужно сохранить

Время прочтения 6 мин
Просмотры 121K
Блог компании OTUS Программирование *GitHub *
Перевод

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

Читать далее
Всего голосов 174: ↑144 и ↓30 +114
Комментарии 44

Привлекательные структуры данных

Время прочтения 7 мин
Просмотры 22K
Программирование *Алгоритмы *

В процессе изучения разных алгоритмов и структур данных приходит понимание, что не все они применимы в прикладных задачах (в отличие от задач про Васю и Петю/Алису и Боба). Но тот факт, что алгоритм/структура данных не является полезной на практике не означает, что идеи в них содержащиеся не привлекают пытливые умы даже из чистого любопытства. Потому речь пойдёт о красивых (субъективно) и, что важно, простых с точки зрения концепции структурах данных. 

Помните: если что-то не компилируется, это псевдокод. 

Привлечься!
Всего голосов 78: ↑78 и ↓0 +78
Комментарии 15

Пошаговая инструкция по настройке и использованию Gitlab CI + Visual Studio для сборки приложения .NET Framework

Время прочтения 14 мин
Просмотры 26K
Блог компании Ростелеком .NET *C# *
Туториал

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


Как только кто-либо из нашей команды вносит изменения в код (читай «мерджит feature-ветку в develop»), наш билд-сервер:


  • Собирает исходный код и установщик приложения
    • проставляет номер сборки, каждый раз увеличивая последнюю цифру. Например, текущая версия нашего ПО 3.3.0.202 – часть 3.3.0 когда-то ввёл разработчик (привет, SemVer), а «202» проставляется в процессе сборки.
    • В процессе анализирует качество кода (с использованием SonarQube) – и отправляет отчёт во внутренний SonarQube,
  • Сразу после сборки запускает автотесты (xUnit) и анализирует покрытие тестами (OpenCover),

Также, в зависимости от ветки, в которую были внесены изменения, могут быть выполнены:


  • отправка сборки (вместе с changelog-ом) в один или несколько телеграм-каналов (иногда удобнее брать сборки оттуда).
  • публикация файлов в систему автообновления ПО.

Под катом о том, как мы научили Gitlab CI делать за нас бОльшую часть этой муторной работы.

Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 8

SQL HowTo: обход дерева иерархии «по курсору» через двойную рекурсию

Время прочтения 3 мин
Просмотры 5.5K
Блог компании Тензор PostgreSQL *SQL *Алгоритмы *ERP-системы *

В предыдущих статьях "PostgreSQL Antipatterns: навигация по реестру", "PostgreSQL 13: happy pagination WITH TIES" и "SQL HowTo: курсорный пейджинг с неподходящей сортировкой" я уже рассматривал проблемы навигации по данным, представленных в виде плоского реестра.

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

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

UI редактора блок-схем

Время прочтения 1 мин
Просмотры 11K
Веб-дизайн *Разработка веб-сайтов *Интерфейсы *Софт

Придумывать интерфейс интересно. Похоже на головоломку. Вот что получается для Dgrm.net.

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

RustDesk — self-hosted аналог TeamViewer

Время прочтения 2 мин
Просмотры 54K
Системное администрирование *

Представляю вашему вниманию ваш будущий маленький Teamviewer. Полностью открытый, с клиентами на все платформы. Заявлено небольшое потребление серверных ресурсов. Из коробки умеет ходить через наты, как любой уважающий себя AnyDesk. Поскольку ваш сервер, скорее всего ближе к вам географически, то и картинка будет передаваться быстрее, да и зашифрован трафик будет вами же.

Читать далее
Всего голосов 88: ↑87 и ↓1 +86
Комментарии 40

Прокачиваем производительность C# с Федерико Луисом

Время прочтения 19 мин
Просмотры 24K
Блог компании JUG Ru Group Высокая производительность *.NET *C# *Конференции

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


В качестве прототипа статьи был выбран доклад Федерико Луиса, основателя компании Corvalius (они занимаются R&D). Работая над движком базы данных для одного из клиентов, они посвятили около четырёх лет задачам оптимизации. Такое количество времени требуется для того, чтобы применить разного рода техники и достичь хороших показателей оптимизации. Требуется выявить все проблемы и узкие места, проследить поведение софта в соответствии со всеми имеющимися метриками и так далее. Примеры из этой статьи основаны на работе над RavenDB 4.0 (известная NoSQL база для .NET), которую компания Федерико тюнила до уровня наносекунд во всевозможных сложных кейсах.


Все примеры, которые встретятся вам в ходе рассказа (плюс некоторые дополнительные), доступны в специальном репозитории на GitHub.


Осторожно, трафик! В этом посте присутствует огромное количество картинок — слайдов и скриншотов с видео в формате 720p. На слайдах присутствует важный для понимания статьи код.

Читать дальше →
Всего голосов 46: ↑41 и ↓5 +36
Комментарии 0

Квинтовый музыкальный строй

Время прочтения 7 мин
Просмотры 5.1K
Математика *Физика
Из песочницы

Музыкальный строй, основанный на последовательности шагов чистой квинтой, в Европе известен, как пифагорейский строй, а в Китае он получил название музыкальной системы 12 люй. Оба древних музыкальных строя абсолютно идентичны в плане математических пропорций всех образуемых интервалов.

Как известно, двенадцать ступеней древнего китайского строя образованы последовательностью 11 квинтовых шагов. При этом все нечетные ступени, включая первую, считаются мужскими (Ян), а все четные ступени, включая двенадцатую, считаются женскими (Инь). Стартовой ступенью строя в рассматриваемой модели выбрана ступень A первой октавы. В таблице даны результаты расчета частотных значений 12 люй при стандарте частоты ступени Ля = 440 Гц. Частотные значения всех ступеней приведены в границах первой октавы. 

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

Теория категорий для программистов. На пальцах

Время прочтения 7 мин
Просмотры 33K
Блог компании Издательский дом «Питер» Программирование *Проектирование и рефакторинг *Scala *Математика *
Перевод
Здравствуйте, коллеги.



Развивая наш неослабевающий интерес к серьезной, можно сказать, академической литературе, мы добрались и до теории категорий. Эта тема в знаменитом изложении Бартоша Милевского уже фигурировала на Хабре и к настоящему времени может похвастаться такими показателями:



Тем более приятно, что нам удалось обнаружить сравнительно свежий материал (январь 2020), служащий отличным и при этом максимально кратким введением в теорию категорий. Надеемся, что нам удастся заинтересовать вас этой темой
Читать дальше →
Всего голосов 24: ↑22 и ↓2 +20
Комментарии 131

Повышаем надёжность HttpClient’а в .NET Core или как ошибиться в 3 строках кода 4 раза

Время прочтения 13 мин
Просмотры 31K
Блог компании Dodo Engineering Open source *Программирование *.NET *C# *

За несколько недель до 14 февраля системе Dodo IS немного поплохело под нагрузкой. Одной из причин стало то, что в backend’ах мобильного приложения и сайта не совсем корректно работали политики поверх HttpClient’а (Retry, Circuit Breaker, Timeout). В этой статье я хочу поделиться с вами потенциальными проблемами, которые могут возникнуть при неправильном использовании таких политик.


Читать дальше →
Всего голосов 44: ↑43 и ↓1 +42
Комментарии 34

За двумя зайцами погонишься — чеклист для HighLoad системы гуглить будешь

Время прочтения 11 мин
Просмотры 11K
Высокая производительность *Программирование *Анализ и проектирование систем *IT-инфраструктура *
Из песочницы

Эта статья будет полезна, если вы начинаете проект, который может перерасти в HL (HighLoad) или у вас уже есть проект, который имеет высокую нагрузку. Каждый пункт этого чек-листа поможет избежать определенных проблем, возникающих в процессе эксплуатации таких систем. И хотя некоторые пункты могут показаться довольно очевидными, а иные даже лишними, я рекомендую ознакомиться со всем списком, т.к. судя по статьям на хабре, периодически с некоторыми из этих проблем встречаются компании, которые уже обрели некоторую популярность. Дополняя систему каким то компонентом довольно просто забыть о таких вещах, как KeepAlive между двумя сервисами, а процессы изменения и дополнения в IT происходят постоянно.

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

Ознакомиться с чек-листом
Всего голосов 42: ↑42 и ↓0 +42
Комментарии 12

Я десять лет страдал от ужасных архитектур в C# приложениях — и вот нашел, как их исправить

Время прочтения 10 мин
Просмотры 41K
Тестирование IT-систем *Программирование *.NET *ASP *C# *


Я второй десяток лет участвую в разработке приложений для бизнеса на .NET и каждый раз вижу одни и те же проблемы — быдлокод и беспорядок. Месиво из сервисов, UoW, DTO-шек, классов-хелперов. В иных местах и прямой доступ в базу данных руками, логика в статических классах, километровые портянки конфигурации IoC.


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


Однако, эволюция — беспощадная штука: моя последняя система показалась мне более-менее близкой к идеалу. Сложность не сильно росла, скорость разработки не падала довольно долго, в систему худо-бедно въезжают новые сотрудники. Эти результаты я взял за основу, улучшил и теперь анонсирую вам свою новую разработку: Reinforced.Tecture.

Читать дальше →
Всего голосов 85: ↑60 и ↓25 +35
Комментарии 107

Фрактальная шизофрения

Время прочтения 21 мин
Просмотры 50K
Ненормальное программирование *JavaScript *TypeScript *


Нет, я не болен. По крайней мере так говорит голос в моей голове. Я наркоман. Вот уже более 15 лет я сижу на игле. Употребляю много, жёстко, до обморочного состояния. Докатился до того, что в последнее время не стесняюсь ни друзей, ни жены, ни детей… Двоих детей! Не люблю бадяженый, люблю чистый, без примесей. За годы перепробовал многое, но в последнее время остановился в поисках. Забавно осознавать, что от одного и того же получаешь одновременно и боль, и радость. Мне бы в лечебку, я даже хочу, я даже знаю в какую. Знаете такие, где продолжаешь употреблять, но под присмотром?

Читать дальше →
Всего голосов 94: ↑86 и ↓8 +78
Комментарии 63

System.Threading.Channels — высокопроизводительный производитель-потребитель и асинхронность без аллокаций и стэк дайва

Время прочтения 18 мин
Просмотры 27K
Высокая производительность *.NET *C# *Параллельное программирование *
И снова здравствуй. Какое-то время назад я писал о другом малоизвестном инструменте для любителей высокой производительности — System.IO.Pipelines. По своей сути, рассматриваемый System.Threading.Channels (в дальнейшем «каналы») построен по похожим принципам, что и Пайплайны, решает ту же задачу — Производитель-Потребитель. Однако имеет в разы более простое апи, которое изящно вольется в любого рода enterprise-код. При этом использует асинхронность без аллокаций и без stack-dive даже в асинхронном случае! (Не всегда, но часто).


Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 7
По данным исследования ВШЭ, взрослые профессионалы мало учатся. У этого три основные причины: нет денег, нет времени и нет привычки учиться. Выходом становится микролернинг, когда учиться можно бесплатно (или очень недорого), быстро и в удобном формате, чтобы закрепить полезную привычку. На примере Microsoft Learn разберем, как работает этот формат обучения и какие навыки можно прокачать за два-три часа.
Подробности – под катом
Всего голосов 26: ↑26 и ↓0 +26
Комментарии 6

Информация

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