<?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>Node.js 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-04-06T23:51:29.982Z</updated><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>