<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ладыгин Сергей</title><link>https://updev.ru/</link><description>Recent content on Ладыгин Сергей</description><generator>Hugo</generator><language>ru-ru</language><lastBuildDate>Wed, 03 Jun 2026 12:58:15 +0300</lastBuildDate><atom:link href="https://updev.ru/index.xml" rel="self" type="application/rss+xml"/><item><title>Хабр: Эксперимент с локальной Qwen на Go-сервисе</title><link>https://updev.ru/articles/habr-qwen-go-service/</link><pubDate>Wed, 03 Jun 2026 12:58:15 +0300</pubDate><guid>https://updev.ru/articles/habr-qwen-go-service/</guid><description>&lt;p&gt;&lt;img src="cover.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Опубликовал на Хабре эксперимент с локальной Qwen: взял небольшую backend-задачу на Go с регистрацией, JWT, PostgreSQL, Docker Compose и тестами, а затем проверил, насколько локальная модель справится с реализацией через агента.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://habr.com/ru/articles/1043090/"&gt;Читать на Хабр&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Хабр: Трейдинг в TUI: пишем легковесный клиент на Go через Finam Trade API</title><link>https://updev.ru/articles/habr-finam-terminal/</link><pubDate>Wed, 08 Apr 2026 22:05:00 +0300</pubDate><guid>https://updev.ru/articles/habr-finam-terminal/</guid><description>&lt;p&gt;&lt;img src="cover.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Написал свою первую статью на Хабре — про Finam Terminal, TUI-клиент для торговли прямо в консоли. Рассказал, зачем он вообще появился, как устроен изнутри и каково это — строить что-то поверх публичного API брокера.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://habr.com/ru/companies/finam_broker/articles/1020970/"&gt;Читать на Хабр&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Observability и LGTM Stack</title><link>https://updev.ru/articles/observability-lgtm/</link><pubDate>Tue, 10 Sep 2024 21:24:00 +0300</pubDate><guid>https://updev.ru/articles/observability-lgtm/</guid><description>&lt;p&gt;&lt;img src="cover.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="../observability-go"&gt;В первой части&lt;/a&gt; мы научились отправлять данные из Go приложения в формате OpenTelemetry, теперь необходимо их сохранять
для визуализации и анализа. Для этого есть множество готовых инструментов, рассмотрим LGTM Stack.&lt;/p&gt;
&lt;p&gt;LGTM — это популярный стек для мониторинга и наблюдаемости, включающий в себя Loki, Grafana, Tempo и Mimir.
Этот набор инструментов обеспечивает полный цикл сбора и визуализации метрик, логов и трассировок.&lt;/p&gt;
&lt;h2 id="что-такое-lgtm-stack"&gt;Что такое LGTM Stack?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Loki&lt;/strong&gt; — система для агрегирования и анализа логов.&lt;/p&gt;</description></item><item><title>Observability в Go приложении</title><link>https://updev.ru/articles/observability-go/</link><pubDate>Sat, 17 Aug 2024 20:05:00 +0300</pubDate><guid>https://updev.ru/articles/observability-go/</guid><description>&lt;p&gt;&lt;img src="cover.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;В современном мире микро-сервисной архитектуры и распределённых систем понятие наблюдаемости (observability)
стало ключевым фактором успешной эксплуатации и поддержания работоспособности приложений.
Наблюдаемость позволяет вам получить глубокое понимание состояния ваших систем через метрики, логи и трассировки.&lt;/p&gt;
&lt;h2 id="теория"&gt;Теория&lt;/h2&gt;
&lt;p&gt;Что такое наблюдаемость? Наблюдаемость — это способность системы обеспечивать прозрачность своего внутреннего состояния на основе внешних данных,
таких как логи, метрики и трассировки.&lt;/p&gt;
&lt;p&gt;Основные составляющие наблюдаемости:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Метрики: Количественные данные, измеряющие производительность системы (например, количество запросов в секунду, использование памяти).&lt;/li&gt;
&lt;li&gt;Логи: Записи событий, происходящих в системе (например, ошибки, информационные сообщения).&lt;/li&gt;
&lt;li&gt;Трассировки: Данные о пути выполнения запросов через различные компоненты системы.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;OpenTelemetry: Единое решение для observability&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Strapi - Подключение S3 хранилища для файлов</title><link>https://updev.ru/articles/strapi-s3/</link><pubDate>Mon, 06 May 2024 20:00:00 +0300</pubDate><guid>https://updev.ru/articles/strapi-s3/</guid><description>&lt;p&gt;&lt;img src="cover.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Для хранения загружаемых файлов будем использовать S3 хранилище - Yandex Object Storage.
В нем можно дешево хранить файлы и быстро раздавать их через cdn.&lt;/p&gt;
&lt;p&gt;Инструкция по &lt;a href="https://yandex.cloud/ru/docs/storage/operations/buckets/create"&gt;созданию бакета&lt;/a&gt;
и настройке &lt;a href="https://yandex.cloud/ru/docs/storage/operations/buckets/bucket-availability"&gt;публичного доступа&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Устанавливаем в strapi плагин для работы с S3 хранилищем.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;npm install @strapi/provider-upload-aws-s3 --save
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Добавить конфигурацию для подключения к S3 Yandex cloud&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;module.exports = ({ env }) =&amp;gt; ({
 upload: {
 config: {
 provider: &amp;#39;aws-s3&amp;#39;,
 providerOptions: {
 credentials: {
 accessKeyId: env(&amp;#39;YC_ACCESS_KEY_ID&amp;#39;),
 secretAccessKey: env(&amp;#39;YC_ACCESS_SECRET&amp;#39;),
 },
 region: &amp;#39;ru-central1&amp;#39;,
 endpoint: &amp;#39;https://storage.yandexcloud.net&amp;#39;,
 params: {
 Bucket: env(&amp;#39;YC_BUCKET&amp;#39;),
 },
 },
 },
 },
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для отображения в галерее превью картинок необходимо добавить домен в доверенный.&lt;/p&gt;</description></item><item><title>Strapi - запуск в Docker Swarm</title><link>https://updev.ru/articles/strapi-docker-swarm/</link><pubDate>Sat, 04 May 2024 20:30:00 +0300</pubDate><guid>https://updev.ru/articles/strapi-docker-swarm/</guid><description>&lt;p&gt;&lt;img src="cover.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;После того как мы создали первую версию нашего приложения, создали Dockerfile, проверили работоспособность приложения в контейнере,
встает вопрос как это выложить на prod, и самое главное как его обновлять далее.&lt;/p&gt;
&lt;p&gt;Можно пойти в Kubernetes, но если у вас не большое количество сервисов и нет отдельного отдела для обслуживания Kubernetes,
то следуют выбрать что-то попроще.&lt;/p&gt;
&lt;p&gt;Экосистема Docker предлагает нам воспользоваться режимом &lt;a href="https://docs.docker.com/engine/swarm/"&gt;swarm mode&lt;/a&gt;.
В этом режиме, можно объединять несколько серверов в один кластер и запускать в нем приложения точно так же, как на одном сервере.&lt;/p&gt;</description></item><item><title>Strapi - установка и настройка</title><link>https://updev.ru/articles/strapi-install/</link><pubDate>Thu, 25 Apr 2024 19:30:00 +0300</pubDate><guid>https://updev.ru/articles/strapi-install/</guid><description>&lt;p&gt;&lt;img src="cover.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://strapi.io/"&gt;Strapi&lt;/a&gt; - популярная open-source headless CMS.
Написана на JavaScript/TypeScript, максимально настраивается под ваши задачи.&lt;/p&gt;
&lt;p&gt;Данная CMS создана для разработчиков, она делает множество рутинной работы, позволяя сосредоточится на бизнес логике.
Подходит для широкого спектра задач - блоги, порталы, каталоги, сервисы, магазины и многое другое.&lt;/p&gt;
&lt;h2 id="создание-проекта"&gt;Создание проекта&lt;/h2&gt;
&lt;p&gt;Исчерпывающая инструкция на &lt;a href="https://docs.strapi.io/dev-docs/installation/cli"&gt;официальном сайте&lt;/a&gt;,
тут я приведу краткий набор команд и действия. Демо приложение будет находиться в папке strapi.&lt;/p&gt;
&lt;p&gt;Перед установкой у вас должно быть:&lt;/p&gt;</description></item><item><title>Dkron PHP Client</title><link>https://updev.ru/projects/dkron-php-client/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://updev.ru/projects/dkron-php-client/</guid><description>&lt;p&gt;Клиент на PHP для API &lt;a href="https://dkron.io"&gt;Dkron&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Бибилиотека использует последнюю версию API, работает на актуальных версиях PHP и 100% кода покрыто unit тестами.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dkron.io/api/"&gt;Документация API Dkron&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="пример-подключения-библиотеки-в-проект"&gt;Пример подключения библиотеки в проект&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;composer require updevru/dkron-php-client
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="пример-использования"&gt;Пример использования&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;use&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Http\Client\Curl\Client&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;use&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Nyholm\Psr7\Factory\Psr17Factory&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;use&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Updevru\Dkron\ApiClient&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;use&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Updevru\Dkron\Endpoint\EndpointCollection&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$client &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Updevru\Dkron\ApiClient&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Updevru\Dkron\Endpoint\EndpointCollection&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;url&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;http://localhost&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;login&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;password&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Http\Client\Curl\Client&lt;/span&gt;(),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Nyholm\Psr7\Factory\Psr17Factory&lt;/span&gt;(),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Nyholm\Psr7\Factory\Psr17Factory&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$api &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;\Updevru\Dkron\Api&lt;/span&gt;($client, &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;\Updevru\Dkron\Serializer\JMSSerializer&lt;/span&gt;());
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$jobs &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $api&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;jobs&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;getJobs&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$newJob &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;\Updevru\Dkron\Dto\JobDto&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$newJob&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;setName&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;test_job&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$newJob&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;setSchedule&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;*/2 * * * * *&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$newJob&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;setConcurrency&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;\Updevru\Dkron\Dto\JobDto&lt;/span&gt;&lt;span style="color:#f92672"&gt;::&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;CONCURRENCY_FORBID&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$newJob&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;setExecutor&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;shell&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$newJob&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;setExecutorConfig&lt;/span&gt;([&lt;span style="color:#e6db74"&gt;&amp;#39;command&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;echo Hello&amp;#39;&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$api&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;jobs&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;createOrUpdateJob&lt;/span&gt;($newJob);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$api&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;jobs&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;toggleJob&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;test_job&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$api&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;jobs&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;deleteJob&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;test_job&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Более подробная информация на &lt;a href="https://github.com/updevru/dkron-php-client"&gt;Github&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Go Micro Kit</title><link>https://updev.ru/projects/go-micro-kit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://updev.ru/projects/go-micro-kit/</guid><description>&lt;p&gt;Набор преднастроенных бибилотек и ишаблон для быстрого создания микро-сервисов на go.&lt;/p&gt;
&lt;p&gt;Набор инструментов создан для Schema-First подхода, когда описываются сервисы в формает protocol buffers формате и далее генерируется код этих сервисов.&lt;/p&gt;
&lt;h2 id="возможности"&gt;Возможности&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;API Gateway&lt;/li&gt;
&lt;li&gt;Удобная конфигурация&lt;/li&gt;
&lt;li&gt;Выполнение задач по расписанию (cron)&lt;/li&gt;
&lt;li&gt;Автоматическая регистрация сервиса в системах service discovery&lt;/li&gt;
&lt;li&gt;Трассировка, метрики и логи в формет OpenTelemetry&lt;/li&gt;
&lt;li&gt;Подключение к базе данных&lt;/li&gt;
&lt;li&gt;Готовый шаблон для создания микросервиса&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Бибилотека доступна на &lt;a href="https://github.com/updevru/go-micro-kit"&gt;Github&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Шаблон доступен на &lt;a href="https://github.com/updevru/go-micro-kit-example"&gt;Github&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>PolkovnikBot</title><link>https://updev.ru/projects/polkovnik-bot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://updev.ru/projects/polkovnik-bot/</guid><description>&lt;p&gt;Бот-помощник по организации работы команды и увеличения ее эффективности.
Помогает не пропускать важные события (встречи, дни рождения), контролирует списание врмение в задачах (если кто то забыл - напоминает),
уведомляет о важных событиях (новые pull request, релизы, сборки и прочее).&lt;/p&gt;
&lt;p&gt;Проект призван забрать на себя часть рутины, которую можно автоматизировать.&lt;/p&gt;
&lt;h2 id="возможности"&gt;Возможности&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Напоминание о списании времени по задачам&lt;/li&gt;
&lt;li&gt;Уведомление об отпусках&lt;/li&gt;
&lt;li&gt;Отправка сообщений в командный чат по расписанию&lt;/li&gt;
&lt;li&gt;Интеграция с такс трекерами - Jira&lt;/li&gt;
&lt;li&gt;Интеграция с чатами - Telegram, Webex&lt;/li&gt;
&lt;li&gt;Управление через web интерфейс&lt;/li&gt;
&lt;li&gt;API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Более подробная информация на &lt;a href="https://github.com/updevru/polkovnik-bot"&gt;Github&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Мое резюме</title><link>https://updev.ru/resume/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://updev.ru/resume/</guid><description>&lt;p&gt;Меня зовут Ладыгин Сергей, я профессионально занимаюсь разработкой более 15 лет. Муж и отец 3 детей.
Увлекаюсь спортом - велосипед, плавание, баскетбол, волейбол, настольный тенис.&lt;/p&gt;
&lt;h2 id="компетенции"&gt;Компетенции&lt;/h2&gt;
&lt;h3 id="1-программирование"&gt;1. Программирование&lt;/h3&gt;
&lt;p&gt;Мои основные языки программирование - &lt;strong&gt;PHP&lt;/strong&gt; и &lt;strong&gt;JavaScript&lt;/strong&gt;. В них я лучше всего разбираюсь и дольше всего с ними работаю.
В этом стэке много работал с фреймворками &lt;strong&gt;Symfony&lt;/strong&gt; и Laravel.&lt;/p&gt;
&lt;p&gt;Последнее время в основном программирую на &lt;strong&gt;TypeScript&lt;/strong&gt;, &lt;strong&gt;Go&lt;/strong&gt; и &lt;strong&gt;Node&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Знаю базы данных &lt;strong&gt;PostgreSQL&lt;/strong&gt;, &lt;strong&gt;MySQL&lt;/strong&gt; и &lt;strong&gt;MongoDB&lt;/strong&gt; на хорошем уровне (оптимизация, хранимые процедуры, условные индексы и прочее).&lt;/p&gt;</description></item></channel></rss>