View on GitHub

andreibulatov.github.io

Записки

Пишу на c#, и для решения большинства задачек использую такие штуки:

Немного подробнее postgres

Весьма выгодно выглядит для старта проекта, есть всё необходимое, чтоб проект прожил первые полгода и что-то стало понятнее.

Из того, что радует

Из того, что не радует

Из того, о чем стоит помнить

Немного подробнее rabbitmq

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

Чуть интереснее - выстраивал на нем pipeline, выглядит неплохо, до момента, когда его нужно менять.

Важные моменты про pipeline

Немного подробнее dotliquid

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

Из недавнего использования через dotliquid генерировал договор в html, а через i7n-pdfhtml конвертировал в pdf, править html куда приятнее

Немного подробнее ironpython

С ним история крутится вокруг того, что питон весьма популярен, и его легко продать, если что-то лень делать самостоятельно, главное, не сильно распространяться на тему того, что это не совсем питон :wink:

Основные идея - динамические сценарии, с контекстом.

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

Был опыт с расширением handlebars, но, это пришлось сделать скорее из-за ограничений внутри команды и работы с ms dynamics crm

Чуть подробнее о polly

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

Совсем немного о docker

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

Любит память, поэтому важно не забывать о волшебной команде docker system prune

Подробнее о socket.io

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

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

В те давние времена использовал библиотеку, устраивала полностью, она устарела, появилась новая, про неё не могу ничего сказать, не пользовался ¯\(ツ)

hangfire

Использую для выполнение заданий по расписанию, удобен, прост, сделает всё сам, чем и прекрасен.

Важно

  1. Переименование классов может сломать исполнение запланированных задачек
  2. Придумав новый job и поставив его исполняться в 12 часов дня, при выкатке приложения в 6 вечера - нужно быть готовым к тому, что job выполнится первый раз в 6 вечера, возможно, это поведение уже изменили