<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>itdepends</title><description>Технический блог о data-инжиниринге, backend и trade-offs</description><link>https://itdepends.ru/</link><language>ru-RU</language><atom:link href="https://itdepends.ru/rss.xml" rel="self" type="application/rss+xml"/><item><title>ChatGPT Image 2: первые впечатления от генерации логотипа</title><link>https://itdepends.ru/blog/2026-04-22-chatgpt-image-2-first-look/</link><guid isPermaLink="true">https://itdepends.ru/blog/2026-04-22-chatgpt-image-2-first-look/</guid><description>Источник: пост на Дзене Каждый день выходят то новые модели, то новые фичи. Честно говоря, я уже устал следить за всем этим, но отставать не хочу — потому что потом больно догонять. Итак, сегодняшняя новость: вышла ChatGPT Image 2. !Превью поста на Дзене о ChatGPT Image 2 При открытии ChatGPT снизу…</description><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Источник: &lt;a href=&quot;https://dzen.ru/a/aefbXWSqxVZwQSMQ&quot;&gt;пост на Дзене&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Каждый день выходят то новые модели, то новые фичи. Честно говоря, я уже устал следить за всем этим, но отставать не хочу — потому что потом больно догонять. Итак, сегодняшняя новость: вышла &lt;strong&gt;ChatGPT Image 2&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./dzen-preview.png&quot; alt=&quot;Превью поста на Дзене о ChatGPT Image 2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;При открытии ChatGPT снизу видим новую опцию:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./chatgpt-image-ui.png&quot; alt=&quot;Интерфейс ChatGPT с кнопкой Image 2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Доступна она стала буквально несколько часов назад. Что я хочу сказать — это пушка. Так как у меня идёт мини-эксперимент с сайтом-блогом &lt;a href=&quot;https://itdepends.ru/&quot;&gt;itdepends.ru&lt;/a&gt; и разными нейросетями, то первое, что я попросил сделать ChatGPT Image — создать лого моего сайта.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./logo-before.png&quot; alt=&quot;Старое лого itdepends.ru — «до»&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Это было «до». Вот такой текст я ввёл в окно привычного уже всем чата:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./prompt-text.png&quot; alt=&quot;Промпт для генерации логотипа в ChatGPT&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ну это даже не промпт, и что такое «красивый и запоминающийся» нейросеть, конечно, не знает — в этом и был расчёт проверки.&lt;/p&gt;
&lt;p&gt;Скорость генерации не особо высокая — но и состариться у вас не получится (где-то полторы минуты прождал). В результате мы получили следующее:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./logo-after.png&quot; alt=&quot;Результат генерации логотипа ChatGPT Image 2 — «после»&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Я, конечно, нисколько не дизайнер — но мне понравилось. Я незамедлительно зашёл в kimi-cli с проектом блога и попросил заменить лого. Получилось так себе, так как у меня условие на размер картинки и так далее. Что получилось по итогу вы можете &lt;a href=&quot;https://itdepends.ru/&quot;&gt;чекнуть сами&lt;/a&gt; — я скорее всего уже внёс кое-какие правки.&lt;/p&gt;
&lt;p&gt;Посидев и погенерировав ещё разные картинки с нормальными промптами, могу сказать точно — моделька получилась вполне достойная. Так как у меня нет задач по дизайну и я в нём не особо шарю, то для меня эта модель и Nano Banana на одном уровне. Подождём оценки профессионалов.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; Бесплатный тир есть — можно поиграться.&lt;/p&gt;
&lt;p&gt;Вот кстати промт, который сделает вас &lt;strong&gt;красавчиком&lt;/strong&gt; — прям на документы можно:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Create a professional, high-resolution ID photo with a beauty background. The person should be centered in the frame, well-lit, and presented with balanced, even lighting free of harsh shadows. Maintain the person&apos;s natural appearance while subtly enhancing facial features with soft, well-blended makeup and a clear, natural skin texture. The person should wear neat, business-appropriate clothing, have well-groomed hair, and display a calm, confident facial expression. Ensure the face is sharp, clear, and naturally presented, with an overall polished and professional studio-quality look.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Если кто-то это прочитал — покидайте в комменты, что получилось у вас. Если нельзя фотки прикреплять, то текстом напишите хоть.&lt;/p&gt;
</content:encoded></item><item><title>Как CI/CD три дня молчал в Telegram, а я не замечал</title><link>https://itdepends.ru/blog/2026-04-22-cicd-telegram-debug/</link><guid isPermaLink="true">https://itdepends.ru/blog/2026-04-22-cicd-telegram-debug/</guid><description>Идеальная автоматизация — та, которую ты проверяешь только когда что-то пошло не так. Сегодняшняя история про то, как я настроил пайплайн деплоя блога, добавил отправку уведомлений о новых постах в Telegram-канал, увидел в логах   и подумал: «Ну нет новых постов, значит всё ок».  Прошло три дня..…</description><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Идеальная автоматизация — та, которую ты проверяешь только когда что-то пошло не так.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Сегодняшняя история про то, как я настроил пайплайн деплоя блога, добавил отправку уведомлений о новых постах в Telegram-канал, увидел в логах &lt;code&gt;[notify-telegram] No new blog posts found.&lt;/code&gt; и подумал: &lt;em&gt;«Ну нет новых постов, значит всё ок»&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Прошло три дня.. Два поста опубликованы на сайте. В канале — тишина.&lt;/p&gt;
&lt;h2&gt;Как это работало (в теории)&lt;/h2&gt;
&lt;p&gt;После каждого пуша в &lt;code&gt;main&lt;/code&gt; GitHub Actions делал следующее:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Проверял типы и картинки&lt;/li&gt;
&lt;li&gt;Собирал Docker-образ и пушил в GHCR&lt;/li&gt;
&lt;li&gt;Деплоил на VPS&lt;/li&gt;
&lt;li&gt;Запускал &lt;code&gt;node scripts/notify-telegram.js&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Скрипт нотификации брал &lt;code&gt;git diff --name-only --diff-filter=A HEAD~1 HEAD&lt;/code&gt;, искал &lt;code&gt;.md&lt;/code&gt; файлы в &lt;code&gt;src/content/blog/&lt;/code&gt;, парсил frontmatter и отправлял пост в канал.&lt;/p&gt;
&lt;p&gt;Выглядит логично, правда?&lt;/p&gt;
&lt;h2&gt;Как это работало (на практике)&lt;/h2&gt;
&lt;p&gt;А на практике &lt;code&gt;HEAD~1 HEAD&lt;/code&gt; смотрит &lt;strong&gt;только на последний коммит&lt;/strong&gt;. Если я запушил три коммита — с постом, с фиксом типографики и с обновлением зависимостей — то скрипт проверял diff только между фиксом и обновлением зависимостей. Пост оставался невидимым.&lt;/p&gt;
&lt;p&gt;Ещё веселее: GitHub Actions с &lt;code&gt;fetch-depth: 2&lt;/code&gt; грузил всего два последних коммита. Если в них не было &lt;code&gt;.md&lt;/code&gt; — скрипт благополучно ничего не находил и завершался с кодом 0. CI был зелёным. Всё хорошо. Никаких ошибок.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Самый опасный баг — тот, который не ломается, а просто молча не работает.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Отладка&lt;/h2&gt;
&lt;p&gt;Я обратил внимание только когда логи внезапно стали слишком короткими. Зашёл в Actions, открыл последний ран — &lt;code&gt;notify-telegram&lt;/code&gt; отработал за 2 секунды и вывел:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[notify-telegram] No new blog posts found.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;При этом на сайте уже висели два свежих поста.&lt;/p&gt;
&lt;p&gt;Проблема оказалась в двух местах:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Логика range&lt;/strong&gt;: &lt;code&gt;HEAD~1 HEAD&lt;/code&gt; вместо range от предыдущего пуша до текущего&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shallow clone&lt;/strong&gt;: &lt;code&gt;fetch-depth: 2&lt;/code&gt; не давал истории для нормального diff&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Что починил&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Вместо HEAD~1 HEAD&lt;/strong&gt; — использую &lt;code&gt;GITHUB_EVENT_BEFORE&lt;/code&gt; и &lt;code&gt;GITHUB_SHA&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git diff --name-only --diff-filter=A \
  ${GITHUB_EVENT_BEFORE}..${GITHUB_SHA} \
  -- src/content/blog/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Вместо &lt;code&gt;fetch-depth: 2&lt;/code&gt;&lt;/strong&gt; — поставил &lt;code&gt;fetch-depth: 0&lt;/code&gt; в checkout-шаге. Для небольшого репозитория разницы во времени нет, а diff работает корректно.&lt;/p&gt;
&lt;p&gt;Ещё добавил возможность ручной отправки через &lt;code&gt;FORCE_POST_FILE&lt;/code&gt;, на случай если нужно запостить что-то без коммита.&lt;/p&gt;
&lt;h2&gt;Что в итоге&lt;/h2&gt;
&lt;p&gt;Сейчас пайплайн видит все новые посты во всём range пуша, а не только в последнем коммите. И отправляет их все, если вдруг кто-то решит запушить несколько постов разом.&lt;/p&gt;
&lt;p&gt;Проверяйте автоматизацию не по цвету галочки, а по результату. Зелёный CI — это хорошо, но зелёный CI с пустым каналом — это просто красиво оформленное молчание.&lt;/p&gt;
</content:encoded></item><item><title>Первый взгляд на Kimi 2.6: уходит ли Claude Code в прошлое?</title><link>https://itdepends.ru/blog/2026-04-21-kimi-first-look/</link><guid isPermaLink="true">https://itdepends.ru/blog/2026-04-21-kimi-first-look/</guid><description>Источник вдохновения: пост на Дзене Подходит к концу подписка на клод (Claude Code) и чет мне надоело работать на VPS. А тут как по заказу подъехал видос от одного из блогеров про kimi 2.6. Рекламировать его не буду - скажу лишь что аквариумы у него получаются зачетные:) (кто понял тот понял). В…</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Источник вдохновения: &lt;a href=&quot;https://dzen.ru/a/aeeQ5w_aQxIda5ri&quot;&gt;пост на Дзене&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Подходит к концу подписка на клод (Claude Code) и чет мне надоело работать на VPS. А тут как по заказу подъехал видос от одного из блогеров про kimi 2.6. Рекламировать его не буду - скажу лишь что аквариумы у него получаются зачетные:) (кто понял тот понял). В общем очень я удивился увиденному и решил сам потрогать этого зверя из поднебесной, за одно сравнив не где то там а на живую с клодом.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./kimi-plan-allegretto.png&quot; alt=&quot;Тарифный план Allegretto за $39&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Первое что нас встречает при выборе платной подписки - это набор тарифов. (их тут больше чем 3)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./kimi-pricing.png&quot; alt=&quot;Полная страница тарифов Kimi&quot; /&gt;&lt;/p&gt;
&lt;p&gt;В том самом видео я посмотрел, что у kimi какие-то нереальные лимиты и в принципе я бы мог приобрести подписку первого уровня, но уже за 39 американских рублей мы получаем много дополнительных фич, которых просто нет в самом дешевом тарифе. Чуть позже если будет не лень, то напису отдельную статью по каждой из них. В общем - как купить рассказывать тут не буду, кому нужно и так обычно сами знают, но если будет большой интерес - то пишите об этом в комменты (и я обязательно расскажу, наверное)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./kimi-payment.png&quot; alt=&quot;Оплата подписки Kimi — $39 в месяц&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Вот так китайские братья сделали меня беднее&lt;/p&gt;
&lt;p&gt;Первое впечатление о kimi вполне положительное. Приятный интерфейс, всё + минус как и в других чатах агентов. Набрали мы не для чата агентов а для написания различного кода. У Кими есть свой аген для кодинга на котором я расскажу наверно в рамках других постов. Но первое что я его просил сделать - это составить для данного агента промт для создания сайта-блога в котором я буду описывать свои приключения с kimi.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./kimi-prompt-start.png&quot; alt=&quot;Начало промпта для агента в Kimi&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Вот так вот я решил сразу озадачить своего нового китайского друга&lt;/p&gt;
&lt;p&gt;После цикла обсуждений и споров у нас родился вполне сносный промт для написания блога, который я в дальнейшем и применил в агенте kimi-cli.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./kimi-prompt-response.png&quot; alt=&quot;Ответ Kimi на промпт про блог itdepends&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Вот так начали - но потом было жарко))&lt;/p&gt;
&lt;p&gt;Первый результаты меня достаточно сильно впечатлили! Так как это просто игрушка поиграться я решил отдать готовый промт на ревью другим нейросетям. На мое удивление все из них сказали что промт достаточно проработанный и в него нужно внести минимальное количество правок. Как происходила имплементация промтов в код и мои приключения читайте в других моих постах.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Но если не терпится уже увидеть результат работы данной нейросети можете посетить &lt;a href=&quot;https://itdepends.ru/&quot;&gt;мой сайт&lt;/a&gt;, созданный kimi&lt;br /&gt;
Там я планирую выкладывать как статьи такого плана, так и примеры кода, &quot;болей&quot;, ошибок и всего того с чем сталкиваюсь в работе постоянно.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;./kimi-prompt-review.png&quot; alt=&quot;Ревью промпта от другой нейросети — 9.6/10&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Вот так другие нейронки реагировали на полученный результат&lt;/p&gt;
&lt;p&gt;Итак мои первые впечатления - сама моделька очень отзывчивая без багов с иероглифами (как у deepseek, qwen). Ну по крайней мере пока не попадались)) Даже в режиме обдумывания отвечает очень быстро (что на самом деле не есть хорошо - расскажу позже. Код пишет на достаточно хорошем уровне - по лимитам вообще нет проблем по сравнению с клодом. Нет необходимость работать на vps. Хм, ну пока так. Плюсы и минусы распишу отдельно как больше поработаю с даннной нейронкой&lt;/p&gt;
</content:encoded></item><item><title>Тестовый пост для валидации схемы</title><link>https://itdepends.ru/blog/test-post/</link><guid isPermaLink="true">https://itdepends.ru/blog/test-post/</guid><description>Это тестовый пост для проверки работы Content Collections и Zod-схемы. Проверка типографики Здесь должен быть нормально отрендеренный Markdown с заголовками, списками и кодом. Списки Первый пункт Второй пункт Третий пункт Код Вот пример inline-кода:  . А вот блок кода:   Цитата Всё зависит от…</description><pubDate>Mon, 21 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Это тестовый пост для проверки работы Content Collections и Zod-схемы.&lt;/p&gt;
&lt;h2&gt;Проверка типографики&lt;/h2&gt;
&lt;p&gt;Здесь должен быть нормально отрендеренный Markdown с заголовками, списками и кодом.&lt;/p&gt;
&lt;h3&gt;Списки&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Первый пункт&lt;/li&gt;
&lt;li&gt;Второй пункт&lt;/li&gt;
&lt;li&gt;Третий пункт&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Код&lt;/h3&gt;
&lt;p&gt;Вот пример inline-кода: &lt;code&gt;const answer = 42&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;А вот блок кода:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def it_depends(context):
    return f&quot;Всё зависит от {context}&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Цитата&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Всё зависит от контекста. — Каждый senior-инженер&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Этот пост используется только для валидации схемы и стилей. В продакшене он будет удалён.&lt;/p&gt;
</content:encoded></item></channel></rss>