Pull to refresh
15
0
Леонид @mal_ls

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

Send message

WireMock – швейцарский нож в арсенале тестировщика. Часть 1

Reading time 15 min
Views 43K

Всем привет! Меня зовут Анатолий Калмыков, и я отвечаю за качество создаваемых решений в «Ростелеком ИТ». Сегодня я расскажу вам про WireMock – это одновременно и утилита, и библиотека на Java для создания HTTP заглушек над веб-сервисами. Он создает HTTP-сервер, к которому мы могли бы подключиться, как к реальному веб-сервису.

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

Читать далее
Total votes 15: ↑14 and ↓1 +13
Comments 7

Что не так с OpenAPI?

Level of difficulty Hard
Reading time 7 min
Views 34K

Как мы боролись с документированием API на наших проектах, и как мы немного сошли с ума

У вас на проекте порядок с документацией на API? Скорее всего нет. И в нашей компании порядка не было.

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

Читать далее
Total votes 66: ↑58 and ↓8 +50
Comments 100

Индексы в PostgreSQL — 1

Reading time 17 min
Views 385K

Предисловие


В этой серии статей речь пойдет об индексах в PostgreSQL.

Любой вопрос можно рассматривать с разных точек зрения. Мы будем говорить о том, что должно интересовать прикладного разработчика, использующего СУБД: какие индексы существуют, почему в PostgreSQL их так много разных, и как их использовать для ускорения запросов. Пожалуй, тему можно было бы раскрыть и меньшим числом слов, но мы втайне надеемся на любознательного разработчика, которому также интересны и подробности внутреннего устройства, тем более, что понимание таких подробностей позволяет не только прислушиваться к чужому мнению, но и делать собственные выводы.

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

В этой части мы поговорим про разделение сфер ответственности между общим механизмом индексирования, относящимся к ядру СУБД, и отдельными методами индексного доступа, которые в PostgreSQL можно добавлять как расширения. В следующей части мы рассмотрим интерфейс метода доступа и такие важные понятия, как классы и семейства операторов. После такого длинного, но необходимого введения мы подробно рассмотрим устройство и применение различных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.
Читать дальше →
Total votes 104: ↑103 and ↓1 +102
Comments 59

10 рекомендаций по VS Code для повышения продуктивности

Level of difficulty Easy
Reading time 7 min
Views 44K
Visual Studio Code остаётся наиболее предпочтительной IDE среди разработчиков. Причём этот редактор всё чаще используют именно начинающие программисты. Источник: survey.stackoverflow.co/2023

А вы знали, что 73% разработчиков по всему миру используют один редактор кода? Так и есть. Результаты проведённого в 2023 году опроса Stack Overflow показали, что VS Code является самой популярной средой разработки.

И мы все знаем почему — он очень крут!

Но в полной ли мере мы задействуем его потенциал? Текущая статья будет посвящена знакомству с некоторыми интересными возможностями VS Code, способными повысить продуктивность работы. К ним, помимо прочих, относятся локальный контроль исходного кода, анимация курсора и быстрое удаление строк. Использование этих возможностей поможет ускорить реализацию проектов разработки.
Читать дальше →
Total votes 103: ↑95 and ↓8 +87
Comments 83

Обзор нововведений в C# 12

Level of difficulty Medium
Reading time 8 min
Views 25K

Уже середина осени, а это значит, что новая версия C# на пороге. Самое время узнать, какие изменения настигнут язык совсем скоро. Хоть количество нововведений в этот раз уступает предыдущим релизам, интересных среди них немало.

Читать далее
Total votes 46: ↑46 and ↓0 +46
Comments 63

Обзор библиотек для Hangfire

Level of difficulty Easy
Reading time 4 min
Views 2K

Hangfire — распределенный и расширяемый планировщик задач для приложений на.NET.

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

Читать далее
Total votes 5: ↑4 and ↓1 +3
Comments 3

Полное руководство по Prometheus в 2019 году

Reading time 11 min
Views 322K


DevOps- и SRE-инженеры уже, наверное, не раз слышали о Prometheus.


Prometheus был создан на SoundCloud в 2012 году и с тех пор стал стандартом для мониторинга систем. У него полностью открытый исходный код, он предоставляет десятки разных экспортеров, с помощью которых можно за считанные минуты настроить мониторинг всей инфраструктуры.


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


Что такое Prometheus?
Зачем он нужен?
Чем он отличается от других систем?


Если вы совсем ничего не знаете о Prometheus или хотите лучше разобраться в нем, в его экосистеме и всех взаимодействиях, эта статья как раз для вас.

Total votes 30: ↑29 and ↓1 +28
Comments 30

Пишем надстройку Excel на Excel-DNA. Часть 2

Level of difficulty Easy
Reading time 6 min
Views 2K

Это продолжение статьи о создании надстройки для Excel с помощью библиотеки Excel-DNA о сборке простой надстройки с пользовательской формулой. Здесь рассмотрим как сделать свою панель с кнопками, взаимодействовать с рабочей книгой, выводить уведомления, а также получить доступ к элементам интерфейса Excel.

Читать далее
Total votes 2: ↑2 and ↓0 +2
Comments 5

Пишем надстройку для Excel на .NET с помощью библиотеки Excel-DNA

Level of difficulty Easy
Reading time 6 min
Views 4.5K

Excel-DNA - библиотека для .NET, с помощью которой можно написать и собрать полностью самодостаточный файл надстройки для Excel с расширением .xll
Этот файл достаточно положить в пользовательскую папку, без прав администратора, и просто включить в настройках Excel.

Такая надстройка будет иметь доступ к COM-модели Excel, C API Excel - позволяет взаимодействовать с интерфейсом программы и рабочими книгами. Сможет реализовать пользовательские формулы и добавить свое меню на интерфейсную ленту Ribbon UI.

В статье я расскажу как написать свою формулу для Excel на C#. Собрать и установить свою первую надстройку.

Читать далее
Total votes 12: ↑12 and ↓0 +12
Comments 13

Версионирование API в ASP.Net Core

Reading time 5 min
Views 16K

Поддерживая существующие уже какое-то время Web API проекты, мы нередко сталкиваемся с проблемой устаревания логики методов контроллеров и необходимостью ее изменения в соответствии с новыми требованиями. Но, как правило, на момент возникновения такой необходимости, уже существует определенное число сервисов, использующих текущую реализацию наших API, и не нуждающихся в ее модернизации. Более того, такие сервисы могут легко «сломаться» при изменении используемых ими API.

Для решения такого рода проблем в ASP.Net Core существует механизм версионирования API – когда контроллеры и их методы могут существовать одновременно в разных версиях. В таком случае, те сервисы, которым достаточно существующего состояния используемых ими API, могут продолжать использовать определенные версии этих API, а для сервисов, которые требуют модернизации логики контроллеров, мы можем создавать новые параллельные версии, и все эти версии могут работать в нашем проекте одновременно.

Читать далее
Total votes 10: ↑9 and ↓1 +8
Comments 13

Кратко об OData

Reading time 18 min
Views 34K

Протокол OData (или Open Data Protocol) не часто встречается на практике. Чаще мы видим собственные решения по поводу проектирования RESTful API и тратим на это много времени. Но за долгое время существования REST, уже были собраны лучшие практики, которые слились в OData. На просторах интернета не много ресурсов для изучения. Давайте исправим это. В этой статье приведены основные варианты использования OData с примерами.

Что внутри?
Total votes 14: ↑14 and ↓0 +14
Comments 48

Создаем простой API-шлюз в ASP.NET Core

Reading time 5 min
Views 27K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Creating a simple API Gateway in ASP.NET Core".


Время чтения: ~10 минут


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


Диаграма архитектуры микросервиса


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


Существует много фреймворков которые могут быть использованы для создания API-шлюза, например, Ocelot в .NET core или Netflix Zuul в Java. Тем не менее, в этой статье я опишу процесс создания простого API-шлюза с нуля в .NET Core.

Читать дальше →
Total votes 10: ↑8 and ↓2 +6
Comments 11

OpenAPI Comparator — детектор изменений, ломающих [большие] API

Level of difficulty Easy
Reading time 5 min
Views 3.5K

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


Но есть одна загвоздка: потребности клиентов меняются, что часто требует развития самого API. Например, добавления параметров для работы с данным ресурсом или удаления других параметров для упрощения всего API.

Читать дальше →
Total votes 4: ↑2 and ↓2 0
Comments 4

Борьба с дубликатами: делаем POST идемпотентным

Reading time 8 min
Views 19K

Представим, что у вас клиент-серверное приложение, REST API на бекенде и какая-нибудь форма на фронте. И вот наступает момент, когда в баг-трекере появляется запись "создалось N дубликатов <вставьте ваше слово>". Начинаете выяснять, оказывается что на клиенте кнопка сохранения не меняла статус на disabled в процессе сохранения, а у клиента ускоренный метаболизм, и он успел много раз по ней нажать, пока интерфейс не сообщил заветное "ок".

Разбираемся, как сделать POST идемпотентным.

Читать далее
Total votes 9: ↑6 and ↓3 +3
Comments 15

Зачем нужен MediatR?

Reading time 7 min
Views 54K

Недавно я натолкнулся в нашем коде на использование пакета MediatR. Это заинтересовало меня. Почему я должен использовать MediatR? Какие преимущества он мне предоставляет? Здесь я собираюсь рассмотреть эти вопросы.

Читать далее
Total votes 7: ↑5 and ↓2 +3
Comments 34

Документирование ASP .Net Core Web API с помощью OpenAPI/Swagger. Библиотека Swashbuckle

Reading time 12 min
Views 18K

Привет, я backend-разработчик IT-компании SimbirSoft Дмитрий. В этой статье расскажу, зачем нужно документировать Web API, какие существуют подходы и покажу, как создать документацию для ASP.NET Core Web API с использованием OpenAPI/Swagger.

Материал будет полезен начинающим backend-разработчикам, которые знакомятся с Web API, а также специалистам уровня Middle, интересующимся актуальными стандартами для оформления документации.

Читать далее
Total votes 11: ↑10 and ↓1 +9
Comments 8

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

Reading time 13 min
Views 37K

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


Читать дальше →
Total votes 44: ↑43 and ↓1 +42
Comments 36

RabbitMQ в ASP.NET Core. Быстрый старт

Reading time 7 min
Views 51K

RabbitMQ – это брокер сообщений, служба, отвечающая за обмен сообщениями между разными программными сервисами.

RabbitMQ держит сообщения в очереди (Queue), которая является именованным буфером, хранящим адресованные ему сообщения.

Программа, посылающая сообщения в очередь RabbitMQ, называется поставщиком (Producer).

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

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

Читать далее
Total votes 13: ↑7 and ↓6 +1
Comments 21

CQRS. Факты и заблуждения

Reading time 10 min
Views 184K

CQRS — это стиль архитектуры, в котором операции чтения отделены от операций записи. Подход сформулировал Грег Янг на основе принципа CQS, предложенного Бертраном Мейером. Чаще всего (но не всегда) CQRS реализуется в ограниченных контекстах (bounded context) приложений, проектируемых на основе DDD. Одна из естественных причин развития CQRS — не симметричное распределение нагрузки и сложности бизнес-логики на read и write — подсистемы Большинство бизнес-правил и сложных проверок находится во write — подсистеме. При этом читают данные зачастую в разы чаще, чем изменяют.

Не смотря на простоту концепции, детали реализации CQRS могут значительно отличаться. И это именно тот случай, когда дьявол кроется в деталях.
Читать дальше →
Total votes 31: ↑30 and ↓1 +29
Comments 108

Новые функции внедрения зависимостей в .Net 6

Reading time 12 min
Views 10K

Продолжаем делиться полезными материалами в backend-разработке. Осваивая новые инструменты, специалисты SimbirSoft часто читают материалы зарубежных авторов, чтобы быть в курсе актуальных тенденций. В этот раз наш выбор пал на серию материалов британского разработчика Эндрю Лока про новые возможности .NET 6. С разрешения автора мы перевели статью, в которой он разбирает функции внедрения зависимостей в .NET 6. Материал будет полезен тем, кто хочет познакомиться с нововведениями в .Net 6 при переходе на эту технологию.

Читать далее
Total votes 17: ↑15 and ↓2 +13
Comments 4

Information

Rating
Does not participate
Location
Россия
Registered
Activity