<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>KillWolfVlad</title><subtitle>Backend Developer в Byndyusoft</subtitle><author><name>KillWolfVlad</name></author><id>https://teletype.in/atom/killwolfvlad</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/killwolfvlad?offset=0"></link><link rel="alternate" type="text/html" href="https://blog.killwolfvlad.ru/?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=killwolfvlad"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/killwolfvlad?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-07-21T21:41:49.264Z</updated><entry><id>killwolfvlad:UQm3SfiBA7S</id><link rel="alternate" type="text/html" href="https://blog.killwolfvlad.ru/UQm3SfiBA7S?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=killwolfvlad"></link><title>Что такое код на самом деле? И почему он (не) нужен?</title><published>2026-06-11T19:28:24.638Z</published><updated>2026-06-15T16:16:08.018Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/87/f7/87f7214e-416a-4e7b-baa8-f426385467da.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/83/bf/83bf92a6-cbfe-4b68-97f0-aea56ec176c4.png&quot;&gt;Когда я коммитил код в последний рабочий день на этой неделе, я задумался:
«А что из закоммиченного мне не страшно потерять?»</summary><content type="html">
  &lt;figure id=&quot;6in1&quot; class=&quot;m_retina&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/83/bf/83bf92a6-cbfe-4b68-97f0-aea56ec176c4.png&quot; width=&quot;600&quot; /&gt;
    &lt;figcaption&gt;Ты вайбкоддер, Гарри!&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;z7Ei&quot;&gt;Когда я коммитил код в последний рабочий день на этой неделе, я задумался:&lt;br /&gt;«А что из закоммиченного мне не страшно потерять?»&lt;/p&gt;
  &lt;p id=&quot;UQ10&quot;&gt;И понял странную вещь: сам код — не жалко.&lt;br /&gt;Страшно потерять другое: требования к системе и навыки агентов, которые умеют эти требования превращать в работающую систему.&lt;/p&gt;
  &lt;p id=&quot;AsxS&quot;&gt;И отсюда у меня возникло ощущение, что код — это не «истина системы», а лишь одна из возможных закешированных форм представления требований.&lt;/p&gt;
  &lt;p id=&quot;2ehk&quot;&gt;Раньше код был нужен людям, чтобы зафиксировать логику так, чтобы ее можно было исполнять автоматически и относительно дешево менять. Поэтому появились практики вроде чистого кода, чистой архитектуры и паттернов проектирования — потому что человеческому мозгу сложно удерживать в голове системы на сотни тысяч строк без структурирования.&lt;/p&gt;
  &lt;p id=&quot;Ugjt&quot;&gt;По сути, это были способы сделать «представление требований в коде» устойчивым к ограничениям человека.&lt;/p&gt;
  &lt;p id=&quot;RU7O&quot;&gt;Сейчас ситуация начинает меняться.&lt;/p&gt;
  &lt;p id=&quot;L45t&quot;&gt;ИИ все сильнее размывает необходимость вручную поддерживать этот промежуточный артефакт. Если у нас есть:&lt;/p&gt;
  &lt;ul id=&quot;lYqe&quot;&gt;
    &lt;li id=&quot;UWUX&quot;&gt;требования (явные или извлекаемые)&lt;/li&gt;
    &lt;li id=&quot;05pz&quot;&gt;и агенты, которые умеют их понимать и достраивать систему до рабочего состояния&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;ZuHg&quot;&gt;то код перестает быть финальной формой знания. Он становится промежуточным результатом генерации.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;et63&quot;&gt;Можно представить мир, где систему можно регулярно пересобирать заново — под новые требования, новые ограничения и новые решения.&lt;/p&gt;
  &lt;p id=&quot;0Mbd&quot;&gt;Но здесь есть важное «но».&lt;/p&gt;
  &lt;p id=&quot;SVMX&quot;&gt;Генерация системы с нуля — не бесплатна. Ни для ИИ, ни для человека. Это время, деньги, риск ошибок и стоимость проверки.&lt;/p&gt;
  &lt;p id=&quot;tkiL&quot;&gt;И поэтому код остается важным как форма «дешевого кеша» требований и решений. Как зафиксированное состояние системы, которое можно запустить, поддерживать и развивать без постоянной полной регенерации.&lt;/p&gt;
  &lt;p id=&quot;cVQI&quot;&gt;И еще важнее: он остается страховкой.&lt;/p&gt;
  &lt;p id=&quot;uKpA&quot;&gt;Страховкой на случай, если ИИ исчезнет, деградирует или станет недоступен. Тогда единственным способом продолжать разработку снова станет человеческое понимание системы через код — и все то, что мы называем «чистым кодом», архитектурой и паттернами, внезапно снова окажется критически важным.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;UhwM&quot;&gt;Итог: Код — это не цель и не истина системы.&lt;br /&gt;Это кеш требований и решений, который позволяет дешево восстанавливать и развивать систему.&lt;/p&gt;
  &lt;p id=&quot;WeQa&quot;&gt;ИИ может радикально снизить стоимость генерации этого кеша.&lt;br /&gt;Но он не отменяет его необходимость.&lt;/p&gt;
  &lt;p id=&quot;mRTB&quot;&gt;Потому что код остается единственной формой, которая:&lt;/p&gt;
  &lt;ul id=&quot;A8NK&quot;&gt;
    &lt;li id=&quot;IGPi&quot;&gt;воспроизводима без внешнего интеллекта&lt;/li&gt;
    &lt;li id=&quot;aROa&quot;&gt;и позволяет продолжать разработку, если ИИ исчезает или становится недоступен&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;PSN9&quot;&gt;И в этом смысле «чистый код», архитектура и паттерны — это не пережиток прошлого. Это способ сделать систему пригодной для жизни в мире без ИИ.&lt;/p&gt;

</content></entry><entry><id>killwolfvlad:2P_sEJoXvYz</id><link rel="alternate" type="text/html" href="https://blog.killwolfvlad.ru/2P_sEJoXvYz?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=killwolfvlad"></link><title>Накручиваем голоса за предложения по улучшению GitKraken</title><published>2023-10-24T07:02:32.952Z</published><updated>2023-12-13T14:21:35.128Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/ee/b6/eeb639ae-759c-44c7-b67f-8d51236eb48c.png"></media:thumbnail><category term="code" label="Код 🧑‍💻"></category><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/d8/aa/d8aa5f95-2182-4c69-8c09-20f826183b37.png&quot;&gt;Один наш заказчик переехал с привычного, всеми обожаемого GitHub в бездуховный GitHub Enterprise на своих серверах. А это значит что:</summary><content type="html">
  &lt;figure id=&quot;TeYg&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d8/aa/d8aa5f95-2182-4c69-8c09-20f826183b37.png&quot; width=&quot;823&quot; /&gt;
    &lt;figcaption&gt;&lt;a href=&quot;https://feedback.gitkraken.com&quot; target=&quot;_blank&quot;&gt;https://feedback.gitkraken.com&lt;/a&gt; — Наша сегодняшняя цель для накрутки голосов&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;0wLv&quot;&gt;Один наш заказчик переехал с привычного, всеми обожаемого GitHub в бездуховный GitHub Enterprise на своих серверах. А это значит что:&lt;/p&gt;
  &lt;ul id=&quot;KtPN&quot;&gt;
    &lt;li id=&quot;LQCV&quot;&gt;Хана моей статистике (но это еще как-то можно пережить)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;W8yP&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/54/d2/54d293ac-e621-4f3a-8ad5-ecc9d7ef9268.png&quot; width=&quot;428.4563106796116&quot; /&gt;
    &lt;figcaption&gt;Как программисты переживают из-за своей статистики на GitHub&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;vjCA&quot;&gt;
    &lt;li id=&quot;JAWo&quot;&gt;И из-за какого-то бага GitKraken не показывает иконку организации у remote веток (а вот с этим я мириться не хочу)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;lyR1&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/dd/88/dd8892ff-8715-41b5-851a-0b2286d36b42.png&quot; width=&quot;501&quot; /&gt;
    &lt;figcaption&gt;Вот это пустое пусто между компьютером и «master» на самом деле — отсутсвующая иконка организации, из-за чего работать очень не удобно&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8DYv&quot;&gt;Уже есть &lt;a href=&quot;https://feedback.gitkraken.com/suggestions/313734/visual-cues-for-branches-and-remotes&quot; target=&quot;_blank&quot;&gt;предложение&lt;/a&gt; на исправление этого бага (и еще &lt;a href=&quot;https://feedback.gitkraken.com/suggestions/256835/enable-to-change-icon-of-remote-repository&quot; target=&quot;_blank&quot;&gt;одно&lt;/a&gt;), нужно только за него проголосовать. Я проголосовал. Но одного голоса мало чтобы что-то изменить. Поэтому я решил сделать бота который будет голосовать за меня. Много голосовать. Чтобы разработчики обратили внимание на эту проблему и поправили баг.&lt;/p&gt;
  &lt;p id=&quot;ilgm&quot;&gt;Как устроено голосование? Когда вы заходите на сайт вам насыпают целую охапку кук. По кукам вас идентифицируют и не дают голосовать повторно. Куки можно очистить и таким образом проголосовать где-то 3 раза, потом количество голосов перестает расти. Они ограничивают по IP адресу, но на следующий день можно повторить (или сменить IP адрес).&lt;/p&gt;
  &lt;figure id=&quot;WBOX&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/00/4c/004cfb7c-566f-4d82-8347-c9f9ac185045.png&quot; width=&quot;332&quot; /&gt;
    &lt;figcaption&gt;После стольких лет разработки корпоративных SPA уже забыл как работать с куками 😅&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;c7dq&quot;&gt;При нажатии на кнопку голосования идет отправка ничем не примечательного POST запроса, кроме разве что того, что вместе с куками надо передать CSRF-токен и текущую дату. CSRF-токен находится внутри html странички и его можно спокойно выдрать регуляркой.&lt;/p&gt;
  &lt;figure id=&quot;zrUS&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/49/f6/49f66890-6e7d-412c-b73c-0896439e5f78.png&quot; width=&quot;386&quot; /&gt;
    &lt;figcaption&gt;Как бот смотрит на CSRF-токен&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;c5hj&quot;&gt;Быстренько это все кодируем, заливаем на GitHub, настраиваем cron-джобу в GitHub Actions и радуемся постепенно растущим голосам. Пока настроил запуск джобы раз в час, в ограничение по IP не должно упереться, т.к. у GitHub Actions используются широкий пул IP адресов. Ну и я не смог удержаться чтобы не голосовать и за другие предложения 😉.&lt;/p&gt;
  &lt;p id=&quot;qb1j&quot;&gt;Исходники с деталями реализации: &lt;a href=&quot;https://github.com/KillWolfVlad/gk-upvote&quot; target=&quot;_blank&quot;&gt;https://github.com/KillWolfVlad/gk-upvote&lt;/a&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;k1dA&quot;&gt;&lt;strong&gt;UPD&lt;/strong&gt; от 13.12.2023: Когда количество голосов перевалило за 1.4K, разработчики это заметили и подзакрутили гайки: теперь при попытке постучаться на сайт через GitHub Actions CloudFlare отдает 403. Также они «скрутили» обратно все накрученные голоса.&lt;/p&gt;
  &lt;p id=&quot;fXY6&quot;&gt;Но главное — цель достигнута. Баг с отображением иконки у remote веток они починили. Так что этот проект можно со спокойной душой закрывать и идти дальше — покорять новые вершины 🏔️.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;clfx&quot;&gt;Хотите нанять команду профессионалов или хотите работать в команде профессионалов? Тогда приходите к нам в &lt;a href=&quot;https://byndyusoft.com&quot; target=&quot;_blank&quot;&gt;https://byndyusoft.com&lt;/a&gt;. Будем рады сотрудничеству 🤝&lt;/p&gt;

</content></entry><entry><id>killwolfvlad:6GnJBb0Lgub</id><link rel="alternate" type="text/html" href="https://blog.killwolfvlad.ru/6GnJBb0Lgub?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=killwolfvlad"></link><title>Манифест Программиста</title><published>2023-06-16T13:43:32.321Z</published><updated>2023-07-09T04:49:43.672Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/bb/4f/bb4ff7fb-8f16-4630-81c8-697dac3975fb.png"></media:thumbnail><category term="code" label="Код 🧑‍💻"></category><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/d2/5c/d25c38e8-4036-4486-93ab-c6ddce345b4b.jpeg&quot;&gt;</summary><content type="html">
  &lt;figure id=&quot;tKX1&quot; class=&quot;m_retina&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d2/5c/d25c38e8-4036-4486-93ab-c6ddce345b4b.jpeg&quot; width=&quot;384&quot; /&gt;
    &lt;figcaption&gt;Kandinsky 2.1&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;ul id=&quot;ulTg&quot;&gt;
      &lt;li id=&quot;OHtO&quot;&gt;Пиши код 🧑‍💻&lt;/li&gt;
      &lt;li id=&quot;7q4T&quot;&gt;Автоматизируй свою жизнь ⚙️&lt;/li&gt;
      &lt;li id=&quot;0Got&quot;&gt;Делай системы автономными 🤖&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;

</content></entry></feed>