<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Личный сайт Ивана Белашкина</title><link>https://tookser.github.io/posts/</link><description>Recent content in Posts on Личный сайт Ивана Белашкина</description><generator>Hugo -- gohugo.io</generator><language>ru-ru</language><lastBuildDate>Thu, 09 Jul 2026 06:12:17 +0300</lastBuildDate><atom:link href="https://tookser.github.io/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Материалы по изучению SQL</title><link>https://tookser.github.io/posts/sql_research/</link><pubDate>Thu, 09 Jul 2026 06:12:17 +0300</pubDate><guid>https://tookser.github.io/posts/sql_research/</guid><description>Интерактивный тренажёр по SQL от Озеровой Галины на Степике. Хорошая подача, интерактивно (и мало теории), значительную часть курса на повторение.
https://www.practicewindowfunctions.com - на английском, вполне нормально, но чувствуется рука нейросети🤖🤖🤖. Например, там есть туториал по оконным функциям.
Также LLM оказывается полезной, например, может указать на пробелы в знаниях. Лучше описывать свою ситуацию подробнее (что уже знаешь, что хочешь знать, сколько времени можешь выделить), и указывать в промте, что нужно спросить обратную связь (стандартные рекомендации для таких целей).</description><content>&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://stepik.org/course/63054/">Интерактивный тренажёр по SQL&lt;/a> от Озеровой Галины на Степике. Хорошая подача, интерактивно (и мало теории), значительную часть курса на повторение.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.practicewindowfunctions.com">https://www.practicewindowfunctions.com&lt;/a> - на английском, вполне нормально, но чувствуется рука нейросети🤖🤖🤖. Например, там есть &lt;a href="https://www.practicewindowfunctions.com/learn/beginner_series.html">туториал по оконным функциям&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Также &lt;strong>LLM&lt;/strong> оказывается полезной, например, может указать на пробелы в знаниях. Лучше описывать свою ситуацию подробнее (что уже знаешь, что хочешь знать, сколько времени можешь выделить), и указывать в промте, что нужно спросить обратную связь (стандартные рекомендации для таких целей).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Советовали также книгу &amp;laquo;Освой SQL самостоятельно за 10 минут&amp;raquo; Бена Форты, у неё есть русскоязычное издание 2021 года. Пока не смотрел, но выглядит адекватно (кроме названия :).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Из прямо интересного-игрового знаю &lt;a href="https://mystery.knightlab.com">https://mystery.knightlab.com&lt;/a> - детектив, где нужно найти убийцу с помощью запросов к базе данных. Это не родоначальник жанра игр по SQL - первая, которую нахожу, это &lt;a href="https://sql-island.informatik.uni-kl.de">https://sql-island.informatik.uni-kl.de&lt;/a> (через меню вверху слева можно поменять язык на английский).&lt;/p>
&lt;/li>
&lt;/ul></content></item><item><title>Основная проблема цитат из LLM</title><link>https://tookser.github.io/posts/llm_citing/</link><pubDate>Sat, 10 Jan 2026 16:12:07 +0300</pubDate><guid>https://tookser.github.io/posts/llm_citing/</guid><description>Несколько причин, по которым обычно не стоит отвечать на вопрос в чате копипастой из LLM.
Почему нельзя Ненужность. Сейчас у большинства людей есть доступ к LLM. Если человек задаёт вопрос &amp;ndash; обычно он ознакомился с некоторой информацией на тему, в том числе из нейросетей. Стиль речи. Стиль речи LLM, её особенности форматирования, речевых конструкций (&amp;ldquo;это не X, это &amp;ndash; Y&amp;rdquo;, &amp;ldquo;Ты попал прямо в точку!&amp;quot;) сильно отличаются от ответа, который дал бы человек.</description><content>&lt;p>Несколько причин, по которым обычно &lt;em>не стоит&lt;/em> отвечать на вопрос в чате копипастой из LLM.&lt;/p>
&lt;h2 id="почему-нельзя">Почему нельзя&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Ненужность.&lt;/strong> Сейчас у большинства людей есть доступ к LLM. Если человек задаёт вопрос &amp;ndash; обычно он ознакомился с некоторой информацией на тему, в том числе из нейросетей.&lt;/li>
&lt;li>&lt;strong>Стиль речи.&lt;/strong> Стиль речи LLM, её особенности форматирования, речевых конструкций (&amp;ldquo;это не X, это &amp;ndash; Y&amp;rdquo;, &amp;ldquo;Ты попал прямо в точку!&amp;quot;) сильно отличаются от ответа, который дал бы человек. Это мешает чтению. Особенно этим грешат отдельные модели (gpt-4o, Gemini&amp;hellip;).&lt;/li>
&lt;li>&lt;strong>Неточность ответа LLM.&lt;/strong> Нейросети часто дают неполный или недостаточно точный ответ.&lt;/li>
&lt;li>&lt;strong>Неизвестный &amp;ldquo;эпистемический статус&amp;rdquo;.&lt;/strong> Когда человек отвечает &amp;ldquo;из головы&amp;rdquo; &amp;ndash; он действует на основе своего опыта/знаний/интуиции. Если же человек отвечает с помощью LLM &amp;ndash; часто он некомпетентен, и хочет просто &amp;ldquo;закрыть вопрос&amp;rdquo;. См. также пункт 3.&lt;/li>
&lt;/ol>
&lt;h2 id="когда-всё-же-можно">Когда всё же можно&lt;/h2>
&lt;p>Оговорки (когда ответ от LLM на заданный в чате вопрос будет приемлем/полезен):&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Если доступа к LLM нет.&lt;/strong> В некоторых случаях доступа к LLM-ответу у задающего вопрос нет, и ответ из LLM, проверенный на адекватность/корректность отвечающим пользователем &amp;ndash; будет полезнее, чем ничего.&lt;/li>
&lt;li>&lt;strong>Обсуждение.&lt;/strong> Если вопрос сложный, и ответа не предвидится, а ответ от LLM может оказаться правильным &amp;ndash; ответ от LLM допустим как &amp;ldquo;отправная точка&amp;rdquo;.&lt;/li>
&lt;li>&lt;strong>Лёгкая проверка.&lt;/strong> Дополнение пункта 2. Если ответ может оказаться неверным, но можно легко проверить (простой программный код, название/автор книги, историческая дата).&lt;/li>
&lt;/ol>
&lt;h3 id="как-улучшить-ответ-от-llm">Как улучшить ответ от LLM&lt;/h3>
&lt;p>В любом случае ответ от LLM станет лучше, если:&lt;/p>
&lt;ol>
&lt;li>Он &lt;strong>промаркирован&lt;/strong> как ответ от LLM. (&amp;ldquo;спросил у Perplexity&amp;rdquo;, &amp;ldquo;запустил ChatGPT Deep research&amp;rdquo;, etc.).&lt;/li>
&lt;li>Он &lt;strong>компактный&lt;/strong>. (используется ссылка на чат/кодблок/спойлер).&lt;/li>
&lt;li>Помечен &lt;strong>&amp;ldquo;эпистемический статус&amp;rdquo;&lt;/strong> ответа (&amp;ldquo;вот этот код точно сработает&amp;rdquo;, &amp;ldquo;в отношении X именно так, ещё есть Y но оно здесь не упомянуто&amp;rdquo;, &amp;ldquo;вроде примерно так&amp;rdquo;, etc.).&lt;/li>
&lt;li>Исправлен стиль ответа.&lt;/li>
&lt;/ol></content></item><item><title>Инструкция: как мигрировать БД из PasswordSafe в KeePassXC</title><link>https://tookser.github.io/posts/passwordsafe_to_keepassxc_migration/</link><pubDate>Wed, 12 Nov 2025 22:13:08 +0300</pubDate><guid>https://tookser.github.io/posts/passwordsafe_to_keepassxc_migration/</guid><description>Что и зачем KeePassXC - опенсорсный парольный менеджер, он хранит пароли. Он гораздо функциональнее и удобнее, чем PasswordSafe.
Чтобы перейти из одного в другой, сохранив пароли - нужна миграция БД из PasswordSafe в KeePassXC.
Ориентировался на эту инструкцию, но упростил из-за апдейтов программы.
Подготовка Создаём RAM-диск: sudo mkdir /mnt/NAME sudo mount -o size=10M -t tmpfs tmpfs /mnt/NAME (он должен исчезнуть после перезагрузки).
Устанавливаем KeePass2x. (он понадобится для промежуточного этапа переноса).</description><content>&lt;h2 id="что-и-зачем">Что и зачем&lt;/h2>
&lt;p>&lt;code>KeePassXC&lt;/code> - опенсорсный парольный менеджер, он хранит пароли. Он гораздо функциональнее и удобнее, чем &lt;code>PasswordSafe&lt;/code>.&lt;/p>
&lt;p>Чтобы перейти из одного в другой, сохранив пароли - нужна миграция БД из &lt;code>PasswordSafe&lt;/code> в &lt;code>KeePassXC&lt;/code>.&lt;/p>
&lt;p>Ориентировался на &lt;a href="https://infosec.press/ktneely/migrating-passwordsafe-to-keepassxc">эту инструкцию&lt;/a>, но упростил из-за апдейтов программы.&lt;/p>
&lt;h2 id="подготовка">Подготовка&lt;/h2>
&lt;ul>
&lt;li>Создаём RAM-диск:&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-sh" data-lang="sh">sudo mkdir /mnt/NAME
sudo mount -o size&lt;span style="color:#f92672">=&lt;/span>10M -t tmpfs tmpfs /mnt/NAME
&lt;/code>&lt;/pre>&lt;/div>&lt;p>(он должен исчезнуть после перезагрузки).&lt;/p>
&lt;ul>
&lt;li>Устанавливаем &lt;a href="https://keepass.info/help/v2/setup.html">KeePass2x&lt;/a>. (он понадобится для промежуточного этапа переноса).&lt;/li>
&lt;li>Устанавливаем &lt;a href="https://keepassxc.org/">KeePassXC&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h2 id="шаги">&lt;strong>Шаги:&lt;/strong>&lt;/h2>
&lt;ol>
&lt;li>Экспортируем из PasswordSafe в формате .xml &lt;em>RAM-диск&lt;/em>. (в примере &lt;code>/mnt/NAME&lt;/code>) Сохраняем все поля.&lt;/li>
&lt;li>В KeePass2x, создаём шифрованную БД (не рекомендую использовать тот же пароль, что был в PS), уже на обычном диске. Файл должен получить расширение &lt;code>.kdbx&lt;/code>.&lt;/li>
&lt;li>(Опционально) Рекомендуется удалить sample entries, чтобы не отвлекали (2 демонстрационных &lt;code>entry&lt;/code>, которые есть в новой базе).&lt;/li>
&lt;li>В KeePass2x, импортируем с диска в оперативной памяти (формат импорта - PasswordSafe XML).&lt;/li>
&lt;li>Уже в KeePassXC открываем БД, созданную ранее.&lt;/li>
&lt;li>Удаляем файлы &lt;em>RAM-диск&lt;/em> (&lt;code>/mnt/NAME&lt;/code>).&lt;/li>
&lt;/ol>
&lt;p>(Для проверки можно посмотреть &lt;code>Database -&amp;gt; Database Reports...&lt;/code> и посмотреть на Number of Entries, оно будет тем же, что и в PasswordSafe.)&lt;/p></content></item><item><title>TOTP, HOTP</title><link>https://tookser.github.io/posts/otp/</link><pubDate>Fri, 27 Jun 2025 10:57:51 +0300</pubDate><guid>https://tookser.github.io/posts/otp/</guid><description>Что такое TOTP TOTP - для двухфакторной авторизации. Вместо кода на мобильный телефон (считается небезопасным).
Схема работы: У клиента и сервера - есть общий секрет. У клиента и сервера - синхронизированы часы. Когда нужно авторизоваться, сервер вычисляет HASH(T+SECRET). T - это количество интервалов времени (например 30-секундных) с unix epoch. Клиент тоже считает HASH(T+SECRET). Клиент и сервер берут определённым общеизвестным способом первые цифры от хэша. Клиент передаёт серверу токен, сервер делает сравнение.</description><content>&lt;h2 id="что-такое-totp">Что такое TOTP&lt;/h2>
&lt;p>TOTP - для двухфакторной авторизации. Вместо кода на мобильный телефон (считается небезопасным).&lt;/p>
&lt;h3 id="схема-работы">Схема работы:&lt;/h3>
&lt;ol>
&lt;li>У клиента и сервера - есть общий секрет.&lt;/li>
&lt;li>У клиента и сервера - синхронизированы часы.&lt;/li>
&lt;li>Когда нужно авторизоваться, сервер вычисляет &lt;strong>HASH(T+SECRET)&lt;/strong>. T - это количество интервалов времени (например 30-секундных) с &lt;a href="https://en.wikipedia.org/wiki/Unix_time">unix epoch&lt;/a>.&lt;/li>
&lt;li>Клиент тоже считает &lt;strong>HASH(T+SECRET)&lt;/strong>.&lt;/li>
&lt;li>Клиент и сервер берут определённым общеизвестным способом первые цифры от хэша.&lt;/li>
&lt;li>Клиент передаёт серверу токен, сервер делает сравнение.&lt;/li>
&lt;/ol>
&lt;h3 id="возможные-уязвимостипроблемы">Возможные уязвимости/проблемы:&lt;/h3>
&lt;ol>
&lt;li>Может утечь общий секрет, как со стороны клиента, так и со стороны сервера. С кодами на мобильный телефон &lt;em>именно этого&lt;/em> не может произойти, к слову.&lt;/li>
&lt;li>Можно перехватить одноразовый ключ.&lt;/li>
&lt;li>Может произойти рассинхрон времени: тогда нельзя будет авторизоваться.&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/Time-based_one-time_password">wiki&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://ru.wikipedia.org/wiki/TOTP">ru-wiki&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="опенсорсные-приложения-для-android-для-totp">Опенсорсные приложения для Android для TOTP.&lt;/h2>
&lt;p>Из лучших, рекомендуют&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://getaegis.app">Aegis&lt;/a> (посмотрел, выглядит нормально, есть какая-то защита).&lt;/li>
&lt;li>&lt;a href="https://github.com/helloworld1/FreeOTPPlus">freeOTP+&lt;/a> (пока не смотрел, форк freeOTP).&lt;/li>
&lt;/ul>
&lt;p>ещё смотрел&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://gitlab.com/ATechnoHazard/secur">secur&lt;/a> - заброшенный, как плюс разве что простота интерфейса.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.reddit.com/r/privacytoolsIO/comments/do46ic/security_of_totp_apps_on_android/">reddit&lt;/a> что-то про Aegis и andOTP&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="зачем">Зачем&lt;/h2>
&lt;p>Гитхаб требует начать использовать двухфакторку от отдельных аккаунтов.&lt;/p>
&lt;h2 id="что-такое-hotp">Что такое HOTP&lt;/h2>
&lt;p>(2025-07-12)&lt;/p>
&lt;p>Эта схема стала предшественником &lt;strong>TOTP&lt;/strong>.&lt;/p>
&lt;h3 id="схема-работы-1">Схема работы:&lt;/h3>
&lt;ol>
&lt;li>У клиента и сервера - общий секрет &lt;strong>SECRET&lt;/strong>.&lt;/li>
&lt;li>У клиента и сервера - общий счётчик &lt;strong>I&lt;/strong>.&lt;/li>
&lt;li>Когда нужно авторизоваться, сервер вычисляет &lt;strong>HASH(SECRET, I)&lt;/strong>. &lt;strong>HASH&lt;/strong> - описывается что SHA1, хотя и считается уязвимым к коллизиям.&lt;/li>
&lt;li>Клиент вычисляет &lt;strong>HASH(SECRET, I)&lt;/strong>.&lt;/li>
&lt;li>Клиент и сервер выделяют общеизвестным способом цифры (6-8 цифр) из полученного хэша.&lt;/li>
&lt;li>Клиент посылает цифры на сервер.&lt;/li>
&lt;li>Происходит сравнение, если совпало - успех.&lt;/li>
&lt;li>При &lt;strong>успешной авторизации&lt;/strong> - происходит инкремент счётчика сервера.&lt;/li>
&lt;li>В любом случае - происходит инкремент счётчика клиента.&lt;/li>
&lt;/ol>
&lt;h3 id="рассинхронизация">Рассинхронизация&lt;/h3>
&lt;p>Допустима ситуация, когда у клиента счётчик больше, чем у сервера. (Т.к. условия инкремента счётчика отличаются). Тогда сервер вычисляет несколько кодов &amp;ldquo;вперёд&amp;rdquo; (например, для I+1, I+2, &amp;hellip; I+5), и если хоть один из них совпадает - авторизация также проходит успешно. Происходит &lt;em>ресинхронизация&lt;/em>, см. ниже детали.&lt;/p>
&lt;h3 id="ресинхронизация">Ресинхронизация&lt;/h3>
&lt;p>(похожее название).&lt;/p>
&lt;p>Если &lt;em>рассинхронизация&lt;/em> происходит, то при &lt;em>ресинхронизации&lt;/em> (процессе установления счётчиков в одинаковое число) может быть также запрошено согласно стандарту ещё несколько кодов от клиента (чтобы атакующий не мог положиться на &amp;ldquo;достаточно чтобы мой рандомный код совпал с одним из 6 кодов, а не только с 1&amp;rdquo;).&lt;/p>
&lt;p>После успеха счётчик сервера устанавливается равный счётчику клиента.&lt;/p>
&lt;h3 id="возможные-вектора-атаки">Возможные вектора атаки&lt;/h3>
&lt;p>(to be continued)&lt;/p>
&lt;h3 id="ссылки">Ссылки&lt;/h3>
&lt;ul>
&lt;li>(для деталей и уточнений) &lt;a href="https://datatracker.ietf.org/doc/html/rfc4226">RFC 4226&lt;/a>&lt;/li>
&lt;li>(менее полезное в случае непонимания) &lt;a href="https://ru.wikipedia.org/wiki/HOTP">ру-вики&lt;/a>, &lt;a href="https://en.wikipedia.org/wiki/HOTP">en-wiki&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="см-также">См. также&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/Transaction_authentication_number">TAN&lt;/a> - тоже OTP (One Time Password), для банковских сервисов.&lt;/li>
&lt;/ul></content></item><item><title>Мой третий хакатон (отчёт по хакатону ogon.ai - MCP)</title><link>https://tookser.github.io/posts/hackathon2/</link><pubDate>Mon, 16 Jun 2025 23:13:12 +0300</pubDate><guid>https://tookser.github.io/posts/hackathon2/</guid><description>Сначала будет отчёт по хакатону, с описанием &amp;ldquo;как это было и чувствовалось&amp;rdquo;. Во второй части — про инструменты которые я впервые потыкал.
Отчёт Изначально прочитал об идее этого онлайн-хакатон, и сразу подумал &amp;ldquo;круто, как раз про mcp, можно будет потыкать!&amp;rdquo;. И когда понял, что собирается команда, решил присоединиться.
Хакатон - это стартап в миниатюре.
Мы начали &amp;ldquo;хакатонить&amp;rdquo; в четверг, хотя можно было раньше, а закончили в понедельник, вечером, в 22:59.</description><content>&lt;p>Сначала будет отчёт по хакатону, с описанием &amp;ldquo;как это было и чувствовалось&amp;rdquo;. Во второй части — про инструменты которые я впервые потыкал.&lt;/p>
&lt;h2 id="отчёт">Отчёт&lt;/h2>
&lt;p>Изначально прочитал об идее этого онлайн-хакатон, и сразу подумал &amp;ldquo;круто, как раз про mcp, можно будет потыкать!&amp;rdquo;. И когда понял, что собирается команда, решил присоединиться.&lt;/p>
&lt;blockquote>
&lt;p>Хакатон - это стартап в миниатюре.&lt;/p>
&lt;/blockquote>
&lt;p>Мы начали &amp;ldquo;хакатонить&amp;rdquo; в четверг, хотя можно было раньше, а закончили в понедельник, вечером, в 22:59.&lt;/p>
&lt;p>У нас был продакт, 3 бэкендера (включая меня) и 1 фронтэндер. Мне очень понравилось, что на этом хакатоне у нас был продакт, с опытом хакатона в роли продакта, и что идея была вполне годная. Мне понравилось взаимодействие в команде.&lt;/p>
&lt;p>Организация работ выглядела как 2 созвона-&amp;ldquo;синка&amp;rdquo; в день, утром и вечером, со списком задач на &amp;ldquo;до следующего созвона&amp;rdquo;. По некоторым штукам нужно было контактировать с другими программистами. Учёт фич и багов, а также взаимодействия с организатором хакатона — взял на себя продакт.&lt;/p>
&lt;p>Вообще с самого начала думал, что идея будет хорошей, и реализация достаточно простой. Оказалось что так и есть, и приложение стало нам всерьёз нравиться. Да, есть что допиливать (во всех местах, наверное). Но&amp;hellip;&lt;/p>
&lt;blockquote>
&lt;p>Добавление кардинально новой функциональности — это маленький pivot&lt;/p>
&lt;/blockquote>
&lt;p>У нас было два таких момента:&lt;/p>
&lt;ol>
&lt;li>Когда мы решили делать бекенд на &lt;code>n8n&lt;/code> (это было довольно хорошее решение; архитектура выглядит довольно симпатичной — мне кажется, поломки были бы неприятнее, если бы бек был на питоне).&lt;/li>
&lt;li>Когда мы решили добавить на фронт и бек ещё одну функциональность, которая является, возможно, ключевой фичей.&lt;/li>
&lt;/ol>
&lt;h3 id="по-дням">По дням&lt;/h3>
&lt;p>День первый — собрались, долго обсудили, я разработал MCP-сервер.
День второй, третий, четвёртый — у меня преимущественно n8n, также тестирование. В 3-4 день много сделал. Забавно, что засев за n8n пайплайн, довольно много переработал.
День пятый — доделали и подготовили к презентации.&lt;/p>
&lt;hr>
&lt;h3 id="что-хорошо">Что хорошо:&lt;/h3>
&lt;ul>
&lt;li>я использовал в принципе многие свои навыки (в тч и те, которые слабые). Кажется, только фронтендом непосредственно не занимался&lt;/li>
&lt;li>я тестировал продукт, он получился прикольный (да, есть что доделать)&lt;/li>
&lt;li>я предлагал и обсуждал фичи&lt;/li>
&lt;li>я работал с бекендом на n8n (1 из 2 воркфлоу)&lt;/li>
&lt;li>я работал с бекендом на Python (MCP-сервер)&lt;/li>
&lt;li>я формулировал требования, если были нечёткие&lt;/li>
&lt;li>я собрал простенький пайплайн для сборки фронтенда, и &lt;code>docker-compose.yml&lt;/code> для запуска моего MCP-сервера.&lt;/li>
&lt;/ul>
&lt;h3 id="что-можно-было-бы-улучшить-с-моей-стороны">Что можно было бы улучшить с моей стороны:&lt;/h3>
&lt;ul>
&lt;li>не пропускать тестирование ключевых фич. Канбан доска с приоритетами, по идее, решает это, но в таких штуках есть обычно много зависимостей которые апдейтятся постоянно.&lt;/li>
&lt;li>иногда впадал в &amp;ldquo;клинч объяснения&amp;rdquo; в устной и &amp;ldquo;письменно-устной&amp;rdquo; (быстрый текст в чате). У меня часто бывают нечёткие формулировки, оговорки в терминологии, это мешает формулировать и мешает другим быстро меня понять. Стоит позаниматься своей речью, когда будут на это ресурсы.&lt;/li>
&lt;li>не затупливать над стереотипными проблемами. Кажется, это вообще что-то очень человеческое — когда одна и та же проблема, с вариациями, повторяется, но время на её исправление тратится почти столько же.&lt;/li>
&lt;/ul>
&lt;h3 id="команда">Команда:&lt;/h3>
&lt;ul>
&lt;li>всё офигенно!&lt;/li>
&lt;li>(мне оч понравилось, правда! спасибо отдельное продакту за организацию, это даже не выглядело хаосом (ну почти))&lt;/li>
&lt;li>возможно, была бы полезна какая-то доска/страница/сообщение с задачами и закреп с важными ссылками в тг-чате (в самом начале мы посидели над миро-доской, но вроде это было разово).&lt;/li>
&lt;/ul>
&lt;h3 id="орги">Орги:&lt;/h3>
&lt;ul>
&lt;li>понятные тексты/правила/требования. Впрочем, ещё не дождался объявления победителей)&lt;/li>
&lt;li>на вопросы по ходу дела отвечали&lt;/li>
&lt;li>консультацию с техническим специалистом дали, было содержательно
&lt;ul>
&lt;li>был момент, когда возникла как бы сама собой (но было подведено предыдущим диалогом) довольно очевидная, но хорошая идея&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>каких-то ресурсов дополнительно выделено не было&lt;/li>
&lt;/ul>
&lt;h2 id="новые-для-меня-инструменты">Новые (для меня) инструменты&lt;/h2>
&lt;h3 id="n8nio">n8n.io&lt;/h3>
&lt;p>&lt;code>n8n&lt;/code> - low-code инструмент.&lt;/p>
&lt;ul>
&lt;li>Плюсы: довольно простой, есть много разных нод, включая ИИ-шные.&lt;/li>
&lt;li>Эстетичный, логичный интерфейс.&lt;/li>
&lt;li>Опенсорс (важный плюс), хотя есть и премиум версии.&lt;/li>
&lt;li>Есть сообщество, да и документация&lt;/li>
&lt;li>Минусы:
&lt;ul>
&lt;li>селф-хостед версия
&lt;ul>
&lt;li>не содержит общих воркфлоу, в отличие от облачной. Можно редактировать что угодно из-под админского аккаунта, можно всем вместе сидеть из-под одного аккаунта.&lt;/li>
&lt;li>не содержит (кажется) отладки по ходу дела, в отличие от облачной.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>местами очень неприятные баги (ладно, не самые неприятные, но неприятные):
&lt;ul>
&lt;li>один раз я хотел обновить выходной формат ноды. Это была иишная нода, у неё была &lt;a href="https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/#related-resources">доп. нода Structured Output&lt;/a>, чтобы она проверяла формат. Я изменил JSON-схему в ноде, но почему-то вывод выводился то в старом формате, то в новом. По просмотру промта стало понятно, что схема подтягивается старая. Понадобилось, кажется, заново создать Structured Output ноду.&lt;/li>
&lt;li>не удавалось завершить по ошибке запущенный, очень долгий воркфлоу. Нода LLM-ки работала при всех возможных попытках её остановить, выдавала ошибки из-за превышений rate limit. При отключении от основной ноды (агента), она переставала, но при обратном подключении начинала снова. Лечилось аналогично — созданием новой ноды xD&lt;/li>
&lt;li>мелочь, но: есть нода LLM summary, у неё есть режим пересказа по чанкам (старая идея: т.к. текст может быть очень большим, то мы сначала перескажем чанки с пересечением, а потом перескажем все эти пересказы). Если текст полностью влезает в 1 чанк — запроса будет всё равно 2, и это вроде не исправить&amp;hellip; Пришлось избавиться от этой ноды.&lt;/li>
&lt;li>в облачной версии мало ресурсов (сообщают что 300 МБ) и нет поддержки axios/asyncio по умолчанию. На 1ГБ сервере селф-хостед версия грузила почти на 100% RAM и процессор.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="cursor">Cursor&lt;/h3>
&lt;p>&lt;code>Cursor&lt;/code> - AI-powered редактор кода.&lt;/p>
&lt;ul>
&lt;li>Плюсы: ИИ, опенсорс (кроме ИИ-моделей)&lt;/li>
&lt;li>Минусы для меня: VS Code (что непривычно), модели не локальные. Стоит денег))&lt;/li>
&lt;/ul>
&lt;h3 id="mcp-протокол">MCP-протокол&lt;/h3>
&lt;p>MCP — протокол, позволяющий LLM-модели взаимодействовать с внешними инструментами, когда это нужно.&lt;/p>
&lt;ul>
&lt;li>Плюсы:
&lt;ul>
&lt;li>минимальный MCP пишется очень быстро. Я тыкал курсор и MCP некоторое время, а потом стал натыкаться на видео типа &amp;ldquo;Я написал MCP-сервер за 20 минут&amp;rdquo;. so-so&lt;/li>
&lt;li>выполняет мечту &amp;ldquo;дать LLM все инструменты а она уже сама&amp;rdquo;.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Особенности:
&lt;ul>
&lt;li>учитывается как промт LLM-агента, так и промт MCP-сервера (описание предоставляемого им API, по сути). В той библиотеке которую использовал я - докстринг функции-MCP-tool являлся её описанием для бека.
&lt;ul>
&lt;li>при некоторых проблемах&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>есть 3 способа коммуникации, только 2 из них сетевые.&lt;/li>
&lt;li>немного сбивающая терминология — в целом, речь обычно идёт об MCP-клиентах и MCP-серверах, при этом MCP-клиентом могут называть как и программу, использующую сервера (Cursor, Copilot, кастомный LLM-агент&amp;hellip;), так и непосредственно подключение к MCP-серверу.&lt;/li>
&lt;li>ГОВОРЯТ, есть особенности с безопасностью (классической).&lt;/li>
&lt;li>очевидно, есть особенности с безопасностью (которая AI Safety, промт-инъекции): если не контролировать доступ к MCP-server никак, то могут возникнуть проблемы. Есть MCP-сервера для баз данных, например, которые делают к ним запросы.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="system-prompt-generator-чатбот-у-chatgpt">System Prompt Generator (чатбот у ChatGPT)&lt;/h2>
&lt;p>Полезная утилита, позволяющая написать хороший промт (по сути ТЗ) для языковой модели. Выглядит как странный текст, переполненный псевдоMarkdown форматированием и капсом, но работает же. Под конец сам уловил паттерн написания такого и теперь могу писать в таком же стиле.&lt;/p>
&lt;p>&lt;code>Особенность&lt;/code>: Несколько раз замечал, что чатботы работают лучше, когда в самом начале посылается полное ТЗ на желаемый код, а не происходят попытки дополнить во многих сообщениях. С этим чатботом тоже так.&lt;/p></content></item><item><title>Энциклопедии и Интернет-архивы</title><link>https://tookser.github.io/posts/archives/</link><pubDate>Mon, 12 May 2025 21:05:32 +0300</pubDate><guid>https://tookser.github.io/posts/archives/</guid><description>Энциклопедии&amp;hellip; wikipedia.org tvtropes.org - энциклопедия тропов, сюжетных ходов, мотивов, типажей, а также отслеживание всего этого по фильмам/книгам/другим медиа. Наполняется по принципу Википедии. www.krugosvet.ru - очень древняя онлайновая энциклопедия (каждая статья имеет одного автора) широкого профиля. kiwix.org - программа для пользования оффлайн-википедией. В тч по отдельным отраслям знаний (математика и тд), базы периодически обновляются. zealdocs.org - оффлайновая штука с программистской документацией. Простая, удобная, нужна не очень часто. plato.stanford.edu - Стэнфордская энциклопедия по философии (СТЭ).</description><content>&lt;h3 id="энциклопедии">Энциклопедии&amp;hellip;&lt;/h3>
&lt;ol>
&lt;li>&lt;a href="">wikipedia.org&lt;/a>&lt;/li>
&lt;li>&lt;a href="">tvtropes.org&lt;/a> - энциклопедия тропов, сюжетных ходов, мотивов, типажей, а также отслеживание всего этого по фильмам/книгам/другим медиа. Наполняется по принципу Википедии.&lt;/li>
&lt;li>&lt;a href="">www.krugosvet.ru&lt;/a> - очень древняя онлайновая энциклопедия (каждая статья имеет одного автора) широкого профиля.&lt;/li>
&lt;li>&lt;a href="">kiwix.org&lt;/a> - программа для пользования оффлайн-википедией. В тч по отдельным отраслям знаний (математика и тд), базы периодически обновляются.&lt;/li>
&lt;li>&lt;a href="">zealdocs.org&lt;/a> - оффлайновая штука с программистской документацией. Простая, удобная, нужна не очень часто.&lt;/li>
&lt;li>&lt;a href="">plato.stanford.edu&lt;/a> - Стэнфордская энциклопедия по философии (СТЭ). Оч много статей, про всё интересное что можно представить и нельзя представить. Статьи авторские, периодически обновляются.&lt;/li>
&lt;li>&lt;a href="">www.scholarpedia.org&lt;/a> - обнаружил сейчас. scholarpedia, что-то не очень живое (последняя статья вроде 2024 года), но тематики интересные. Статьи вроде авторские, курируются.&lt;/li>
&lt;/ol>
&lt;h3 id="и-архивы">&amp;hellip;и архивы&lt;/h3>
&lt;ol>
&lt;li>&lt;a href="">web.archive.org&lt;/a> - самый известный интернет-архив.&lt;/li>
&lt;li>&lt;a href="">archive.today&lt;/a>, ранее &lt;a href="">archive.is&lt;/a> - архив интернета. Архивирует, помимо всего, условно-закрытые страницы (например, платные, доступные только авторизованным и т.д.), т.е. можно смотреть всякое через &lt;code>archive.is/адрес страницы&lt;/code>.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;p>&lt;em>to be continued&amp;hellip;&lt;/em>&lt;/p></content></item><item><title>Автозапуск обсидиана, горячие клавиши для обсидиана, нахождение обсидиана в трее.</title><link>https://tookser.github.io/posts/obsidian_1/</link><pubDate>Mon, 14 Apr 2025 19:25:55 +0300</pubDate><guid>https://tookser.github.io/posts/obsidian_1/</guid><description>Мой конфиг Obsidian tray плагина (позволяет убирать Обсидиан в значок на панели задач). Ubuntu 22.04 LTS.
1-я галочка (автозапуск) почему-то не работает, поэтому сделал автозапуск через добавление .desktop файла в ~/.config/autostart , а галочку снял от греха подальше.
winkey в горячей клавише не получилось внедрить — пользуюсь ctrl+shift+o по умолчанию.
Сейчас работает так: при закрытии убирается в трей, по горячей клавише/клике на значок возвращает. Можно свернуть окно — тогда не убирает в трей, удобно, если хочется подвигать мышкой.</description><content>&lt;p>Мой конфиг &lt;a href="https://github.com/dragonwocky/obsidian-tray">Obsidian tray&lt;/a> плагина (позволяет убирать Обсидиан в значок на панели задач). Ubuntu 22.04 LTS.&lt;/p>
&lt;p>&lt;img src="https://tookser.github.io/obsidian_tray_config.jpg" alt="Фото конфигурации">&lt;/p>
&lt;p>1-я галочка (автозапуск) почему-то не работает, поэтому сделал автозапуск через добавление .desktop файла в
&lt;code>~/.config/autostart&lt;/code> , а галочку снял от греха подальше.&lt;/p>
&lt;p>&lt;code>winkey&lt;/code> в горячей клавише не получилось внедрить — пользуюсь &lt;code>ctrl+shift+o&lt;/code> по умолчанию.&lt;/p>
&lt;p>Сейчас работает &lt;strong>так&lt;/strong>: при закрытии убирается в трей, по горячей клавише/клике на значок возвращает. Можно свернуть окно — тогда не убирает в трей, удобно, если хочется подвигать мышкой.&lt;/p>
&lt;p>Daily note — не пользуюсь просто.&lt;/p>
&lt;p>то же, но файлом &lt;code>data.json&lt;/code> (&lt;code>trayIconImage&lt;/code> тоже можно поменять):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-json" data-lang="json">{
&lt;span style="color:#f92672">&amp;#34;launchOnStartup&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">false&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;hideOnLaunch&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;runInBackground&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;hideTaskbarIcon&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">false&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;createTrayIcon&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;trayIconImage&amp;#34;&lt;/span>: &lt;span style="color:#960050;background-color:#1e0010">...&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;trayIconTooltip&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Obs&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;toggleWindowFocusHotkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;CmdOrCtrl+Shift+o&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;quickNoteDateFormat&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;YYYY-MM-DD&amp;#34;&lt;/span>,
&lt;span style="color:#f92672">&amp;#34;quickNoteHotkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>
}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>В целом Obsidian полезный, и эта настройка позволяет чаще и проще его тыкать.&lt;/p></content></item><item><title>MCP - протокол для взаимодействия LLM с сервисами</title><link>https://tookser.github.io/posts/ml_2/</link><pubDate>Wed, 26 Mar 2025 21:35:11 +0300</pubDate><guid>https://tookser.github.io/posts/ml_2/</guid><description>За два дня дважды в разных местах попалось упоминание MCP (Model Context Protocol) (открытая технология Anthropic).
Что это:
https://modelcontextprotocol.io/introduction ссылка на введение в протокол. Может смущать наличие и host, и client, и server: как я понял почитав сайт, основная единица это server, который отвечает на запросы, которые client делает (по указке hostа). https://mcp.so/ тут много примеров MCP. https://habr.com/ru/articles/893482/ - статья про MCP (краткая обзорная часть и примеры кода). См.</description><content>&lt;p>За два дня дважды в разных местах попалось упоминание MCP (Model Context Protocol) (открытая технология Anthropic).&lt;/p>
&lt;p>Что это:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://modelcontextprotocol.io/introduction">https://modelcontextprotocol.io/introduction&lt;/a> ссылка на введение в протокол. Может смущать наличие и host, и client, и server: как я понял почитав сайт, основная единица это server, который отвечает на запросы, которые client делает (по указке hostа).&lt;/li>
&lt;li>&lt;a href="https://mcp.so/">https://mcp.so/&lt;/a> тут много примеров MCP.&lt;/li>
&lt;li>&lt;a href="https://habr.com/ru/articles/893482/">https://habr.com/ru/articles/893482/&lt;/a> - статья про MCP (краткая обзорная часть и примеры кода).&lt;/li>
&lt;/ul>
&lt;p>См. также &lt;a href="https://en.wikipedia.org/wiki/Language_Server_Protocol">LSP&lt;/a> :-) (который во многом похожее делает).&lt;/p>
&lt;p>(С точки зрения AI Safety&amp;hellip; пф-пф-пф. Ну, клиент может обрубать некорректные запросы от хоста. Можно сделать сервер-gateway, который будет ограничивать права в зависимости от).&lt;/p></content></item><item><title>Агентная модель на основе LLM Voyager, действующая в майнкрафте</title><link>https://tookser.github.io/posts/voyager/</link><pubDate>Mon, 07 Oct 2024 12:00:00 +0300</pubDate><guid>https://tookser.github.io/posts/voyager/</guid><description>Under construction.
Сегодня (2024-02-01) просмотрел статью про агент Voyager (код). Идея относительно простая, но захотелось разобраться в деталях.
Модель Voyager на основе LLM GPT-3.5 и GPT-4. Исследует уровень в майнкрафте, с целью &amp;ldquo;как можно больше всего пооткрывать побыстрее&amp;rdquo; (территории и создающиеся предметы).
Есть три модуля.
Планировщик (Automatic Curriculum) Итеративный промтер (Iterative Prompting Mechanism) &amp;ldquo;Словарь&amp;rdquo; навыков (Skill Library) Планировщик - на основе полученных от GPT-V описаний вида сцены (например, лес) и персонажа (json описывающий его инвентарь) генерирует Reasoning (рассуждение какое-то, приводящее к&amp;hellip;) и Task.</description><content>&lt;p>Under construction.&lt;/p>
&lt;p>Сегодня (2024-02-01) просмотрел &lt;a href="https://voyager.minedojo.org">статью про агент Voyager&lt;/a> (&lt;a href="https://github.com/MineDojo/Voyager">код&lt;/a>). Идея относительно простая, но захотелось разобраться в деталях.&lt;/p>
&lt;p>Модель Voyager на основе LLM GPT-3.5 и GPT-4. Исследует уровень в майнкрафте, с целью &amp;ldquo;как можно больше всего пооткрывать побыстрее&amp;rdquo; (территории и создающиеся предметы).&lt;/p>
&lt;p>Есть три модуля.&lt;/p>
&lt;ol>
&lt;li>Планировщик (Automatic Curriculum)&lt;/li>
&lt;li>Итеративный промтер (Iterative Prompting Mechanism)&lt;/li>
&lt;li>&amp;ldquo;Словарь&amp;rdquo; навыков (Skill Library)&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>Планировщик - на основе полученных от GPT-V описаний вида сцены (например, лес) и персонажа (json описывающий его инвентарь) генерирует Reasoning (рассуждение какое-то, приводящее к&amp;hellip;) и Task.
&lt;ul>
&lt;li>Task - задача, что нужно сделать. Далее это передаётся словарю навыков.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Словарь навыков как-то формируется.
&lt;ul>
&lt;li>Потом по запросу из него выбирается один из навыков, который является программой, и запускается.&lt;/li>
&lt;li>Комбинирование и появление навыков наименее понимаю. Используется feedback от среды, опять же в текстовом виде.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Итеративный промтер как-то генерирует новые промты.
&lt;ul>
&lt;li>Видимо, к предыдущему: мы видим ошибки от кода выполняемого, соответственно понимаем что пришло к успеху и что нет.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Картиночки в статье красивые, есть код :)&lt;/p>
&lt;h4 id="см-также">См. также:&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://github.com/yoheinakajima/babyagi">BabyAGI&lt;/a>&lt;/li>
&lt;li>ChaosGPT - что-то вроде BabyAGI, только с изначально деструктивными промтами (не одобряю, но задумка на текущем уровне - как высечь море, что-то такое).&lt;/li>
&lt;/ul></content></item><item><title>Промт-инъекция, видео Карпатого и пара быстрых моделей</title><link>https://tookser.github.io/posts/neural1/</link><pubDate>Sun, 10 Mar 2024 20:36:38 +0300</pubDate><guid>https://tookser.github.io/posts/neural1/</guid><description>Начал проходить курс &amp;ldquo;AI Safety fundamentals&amp;rdquo;, и там есть видео Андрея Карпатого про LLM. Больше половины инфы оттуда я знал, но:
идея про то, что языковые модели как класс программ ведут себя аналогично операционным системам (LLM OS). Подробности по ссылке (видео на английском). там очень классное описание возможных атак на LLM (промт-инъекций и не только), со ссылками на статьи. Понятно, что это всё прикрывается достаточно быстро. Jailbroken: How Does LLM Safety Training Fail?</description><content>&lt;p>Начал проходить курс &amp;ldquo;AI Safety fundamentals&amp;rdquo;, и там есть &lt;a href="https://www.youtube.com/watch?v=zjkBMFhNj_g">видео Андрея Карпатого про LLM&lt;/a>. Больше половины инфы оттуда я знал, но:&lt;/p>
&lt;ul>
&lt;li>идея про то, что языковые модели как класс программ ведут себя аналогично операционным системам (&lt;em>LLM OS&lt;/em>). Подробности по &lt;a href="https://www.youtube.com/watch?v=zjkBMFhNj_g&amp;amp;t=2535s">ссылке&lt;/a> (видео на английском).&lt;/li>
&lt;li>там очень классное описание возможных атак на LLM (промт-инъекций и не только), со ссылками на статьи. Понятно, что это всё прикрывается достаточно быстро.
&lt;ul>
&lt;li>&lt;a href="https://arxiv.org/abs/2307.02483">Jailbroken: How Does LLM Safety Training Fail?&lt;/a>
&lt;ul>
&lt;li>оттуда, например - про base64 кодирование как метод обхода. LLM умеют читать base64, но не защищены.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>ещё пара статей про отдельные виды атак &lt;a href="https://www.youtube.com/watch?v=zjkBMFhNj_g&amp;amp;t=2743s">(ссылка с таймкодом на последнюю часть видео про это)&lt;/a>, в том числе на мультимодальные модели.&lt;/li>
&lt;li>&lt;a href="https://arxiv.org/abs/2307.15043">Universal and Transferable Adversarial Attacks on Aligned Language Models&lt;/a> - про универсальный, выглядящий набором мусора промт-суффикс. Это надо смотреть.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="пара-ныне-недоступных-быстрых-моделей">Пара (ныне недоступных) быстрых моделей&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.ixbt.com/news/2024/02/20/nikomu-neizvestnyj-startap-groq-predstavil-vidimo-luchshij-processor-dlja-vyvoda-nejrosetevyh-modelej.html">Groq (ixbt)&lt;/a> - ASIC (специализированная микросхема) для быстрого инференса LLM. Потыкать можно &lt;a href="https://groq.com">тут,&lt;/a> (там Llama, Mistral, есть платное АПИ), это впечатляет скоростью. В какой-то момент без прокси перестало быть доступным.&lt;/li>
&lt;li>&lt;a href="https://fastsdxl.ai">https://fastsdxl.ai&lt;/a> - это быстрая генерация картинок, со скоростью ввода. Скорость достигнута в т.ч. благодаря использованию маленькой модели SD XL Lightning. Сейчас недоступна, &lt;strong>обещают вернуться.&lt;/strong>&lt;/li>
&lt;/ul></content></item><item><title>Pycharm</title><link>https://tookser.github.io/posts/pycharm/</link><pubDate>Tue, 22 Aug 2023 00:03:20 +0300</pubDate><guid>https://tookser.github.io/posts/pycharm/</guid><description>Ошибка Invalid Python Interpreter selected for the project. Понадобилось использовать Pycharm (Professional Edition).
Сначала создал проект в одной папке потом перенёс в другую. Удалил (в линуксе это требуется) подпапку с виртуальной средой venv/, создал заново. Результат - среда разработки &amp;ldquo;не подхватывается&amp;rdquo;, вылезают сообщения об ошибке с упоминанием старого пути. Решение - закрыть Pycharm PE и стереть подпапку .idea/, создаваемую pycharm-ом. При повторном открытии всё сразу подхватывается. Подозреваю, это не единственная проблема которую можно так решить.</description><content>&lt;p>Ошибка &lt;code>Invalid Python Interpreter selected for the project&lt;/code>.
Понадобилось использовать Pycharm (Professional Edition).&lt;/p>
&lt;ul>
&lt;li>Сначала создал проект в одной папке&lt;/li>
&lt;li>потом перенёс в другую.&lt;/li>
&lt;li>Удалил (в линуксе это требуется) подпапку с виртуальной средой &lt;code>venv/&lt;/code>, создал заново.&lt;/li>
&lt;li>Результат - среда разработки &amp;ldquo;не подхватывается&amp;rdquo;, вылезают сообщения об ошибке с упоминанием старого пути.&lt;/li>
&lt;/ul>
&lt;p>Решение - закрыть Pycharm PE и стереть подпапку &lt;code>.idea/&lt;/code>, создаваемую pycharm-ом. При повторном открытии всё сразу подхватывается. Подозреваю, это не единственная проблема которую можно так решить.&lt;/p></content></item><item><title>Горячие клавиши</title><link>https://tookser.github.io/posts/hotkey/</link><pubDate>Fri, 05 May 2023 15:43:18 +0300</pubDate><guid>https://tookser.github.io/posts/hotkey/</guid><description>XFCE В линуксе (убунту) есть пакет с командой wmctrl. https://superuser.com/a/142957 тут описано, что он позволяет активировать окно по его названию. Т.е. можно сделать скриптик на bash, который по хоткею будет запускаться и либо активировать окно с обсидианом, либо — запускать его, если не был запущен
bash -c &amp;#34;wmctrl -a &amp;#39;PARTOFTITLE&amp;#39; || /full/path/to/program&amp;#34; В xfce нужно создать сочетание для горячих клавиш (Settings-&amp;gt;Keyboard-&amp;gt;Application Shortcuts). Вместо 'PARTOFTITLE' подставить часть заголовка окна программы, вместо '/full/path/to/program' подставить полный путь к программе.</description><content>&lt;h3 id="xfce">XFCE&lt;/h3>
&lt;p>В линуксе (убунту) есть пакет с командой wmctrl. &lt;a href="https://superuser.com/a/142957">https://superuser.com/a/142957&lt;/a> тут описано, что он позволяет активировать окно по его названию. Т.е. можно сделать скриптик на bash, который по хоткею будет запускаться и либо активировать окно с обсидианом, либо — запускать его, если не был запущен&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-bash" data-lang="bash">bash -c &lt;span style="color:#e6db74">&amp;#34;wmctrl -a &amp;#39;PARTOFTITLE&amp;#39; || /full/path/to/program&amp;#34;&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>В xfce нужно создать сочетание для горячих клавиш (Settings-&amp;gt;Keyboard-&amp;gt;Application Shortcuts). Вместо &lt;code>'PARTOFTITLE'&lt;/code> подставить часть заголовка окна программы, вместо &lt;code>'/full/path/to/program'&lt;/code> подставить полный путь к программе.&lt;/p>
&lt;h3 id="принцип-работы">Принцип работы&lt;/h3>
&lt;p>Происходящее работает так:&lt;/p>
&lt;p>Происходит попытка активации окна, если она успешна - вторая командна не выполняется. Если не успешна - выполняется вторая команда. &lt;code>||&lt;/code> это ленивый оператор OR, который выполняет вторую команду, только если первая завершилась ошибкой (код завершения != &lt;code>0&lt;/code>). Есть ещё &lt;code>&amp;amp;&amp;amp;&lt;/code> - ленивый оператор AND.&lt;/p>
&lt;h3 id="kde">KDE&lt;/h3>
&lt;p>На КДЕ такое. -x, и на всякий случай класс (-R) - уникальнее. На xfce через классы не смог сделать.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">&lt;code class="language-bash" data-lang="bash">wmctrl -x -R firefox &lt;span style="color:#f92672">||&lt;/span> snap run firefox
&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>xprop WM_CLASS&lt;/code> и клик по окну - для узнавания класса.&lt;/p></content></item><item><title>Интересные штуки</title><link>https://tookser.github.io/posts/interesting_things5/</link><pubDate>Sat, 18 Mar 2023 05:47:23 +0300</pubDate><guid>https://tookser.github.io/posts/interesting_things5/</guid><description>https://habr.com/ru/post/721314/ очень красивая штука. Тут показывать надо :) Вероятностный язык программирования на основе Марковских цепей для создания генераторов лабиринтов/ландшафта/3д моделей. Напоминает https://tixy.land (128 символов чтобы записать динамический паттерн), вообще pattern generation классная штука, интересно, пытался ли кто-то скрестить её с ML. https://ru.wikipedia.org/wiki/Квартет_Энскомба - один из статистических парадоксов, показывающий, что даже много статпоказателей не описывают набор данных хорошо. https://users.livejournal.com/alaric-/598174.html про книгу &amp;ldquo;Мышление разведчика&amp;rdquo; (Scout Mindset). Оттуда вопросы про убеждения, которые должны тестировать на предвзятость.</description><content>&lt;ul>
&lt;li>&lt;a href="https://habr.com/ru/post/721314/">https://habr.com/ru/post/721314/&lt;/a> очень красивая штука. Тут показывать надо :) Вероятностный язык программирования на основе Марковских цепей для создания генераторов лабиринтов/ландшафта/3д моделей.
&lt;ul>
&lt;li>Напоминает &lt;a href="https://tixy.land">https://tixy.land&lt;/a> (128 символов чтобы записать динамический паттерн), вообще pattern generation классная штука, интересно, пытался ли кто-то скрестить её с ML.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="https://ru.wikipedia.org/wiki/">https://ru.wikipedia.org/wiki/&lt;/a>Квартет_Энскомба - один из статистических парадоксов, показывающий, что даже много статпоказателей не описывают набор данных &lt;em>хорошо&lt;/em>.&lt;/li>
&lt;li>&lt;a href="https://users.livejournal.com/alaric-/598174.html">https://users.livejournal.com/alaric-/598174.html&lt;/a> про книгу &amp;ldquo;Мышление разведчика&amp;rdquo; (Scout Mindset). Оттуда вопросы про убеждения, которые должны тестировать на предвзятость. Не все однозначно корректные, но приведу тут.
&lt;blockquote>
&lt;ol>
&lt;li>Тест на двойные стандарты. Если от одной из сторон вы требуете соответствия более высоким критериям, чем от другой, это серьёзный повод задуматься.&lt;/li>
&lt;li>Тест постороннего. Может помочь при принятии сложных решений, особенно в ситуациях, где может быть актуальна ошибка невозвратных потерь. Как бы поступил другой человек на моём месте?&lt;/li>
&lt;li>Тест на конформизм. Если вы узнали о какой-то идее от другого человека, и вы сейчас считаете, что это правильная идея, как бы вы отреагировали, если бы узнали, что тот человек уже передумал и теперь не разделяет эту идею? Как бы вы отреагировали, если бы узнали, что все ваши знакомые не разделяют эту идею?&lt;/li>
&lt;li>Тест избирательного скептицизма. Проиллюстрирован в примере выше.&lt;/li>
&lt;li>Тест на искажение статус-кво. Тоже актуален при принятии сложных решений. Если вы стоите перед выбором что-то сильно поменять или оставить как есть, и вам кажется, что сейчас и так неплохо, представьте, будто изменения уже случились. Задумались ли бы вы в принципе о возвращении к текущему состоянию?&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;/li>
&lt;li>&lt;a href="https://streetartcities.com/cities/moscow">https://streetartcities.com/cities/moscow&lt;/a> карта стритарта.&lt;/li>
&lt;/ul></content></item><item><title>Машинное обучение, ссылки (1)</title><link>https://tookser.github.io/posts/ml_1/</link><pubDate>Sat, 18 Mar 2023 03:21:05 +0300</pubDate><guid>https://tookser.github.io/posts/ml_1/</guid><description>Немного книг, ссылок и сервисов про ML.
Николенко, Введение в глубокое обучение. Написано местами многословно, но увлекательно, с другой стороны - сложные вещи требуют дополнительного гуглинга. Тензорфлоу там используется согласно сети старый, поэтому на него внимательно не смотрел. https://www.deeplearningbook.org/ (англ.) от Goodfellow с соавторами. Пока не смотрел, возможно также, не скачивается в удобном виде. Лекции и семинары Евгения Соколова (ВШЭ). Классика (15 часов) и глубокое обучение (72*1.5 часа), рекомендовались как хорошие видео с понятными объяснениями.</description><content>&lt;p>Немного книг, ссылок и сервисов про ML.&lt;/p>
&lt;ol>
&lt;li>Николенко, Введение в глубокое обучение. Написано местами многословно, но увлекательно, с другой стороны - сложные вещи требуют дополнительного гуглинга. Тензорфлоу там используется согласно сети старый, поэтому на него внимательно не смотрел.&lt;/li>
&lt;li>&lt;a href="https://www.deeplearningbook.org/">https://www.deeplearningbook.org/&lt;/a> (англ.) от Goodfellow с соавторами. Пока не смотрел, возможно также, не скачивается в удобном виде.&lt;/li>
&lt;li>Лекции и семинары Евгения Соколова (ВШЭ). &lt;a href="https://www.youtube.com/playlist?list=PLEqoHzpnmTfChItexxg2ZfxCsm-8QPsdS">Классика (15 часов)&lt;/a> и &lt;a href="https://www.youtube.com/playlist?list=PLEwK9wdS5g0qa3PIhR6HBDJD_QnrfP8Ei">глубокое обучение (72*1.5 часа)&lt;/a>, рекомендовались как хорошие видео с понятными объяснениями.&lt;/li>
&lt;/ol>
&lt;p>Мелочи.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://zhang-yang.medium.com/how-pytorch-tensors-backward-accumulates-gradient-8d1bf675579b">Статья на медиуме&lt;/a> про autograd в pytorch. См. также немного &lt;a href="https://stackoverflow.com/questions/62067400/understanding-accumulated-gradients-in-pytorch">на SO&lt;/a>.&lt;/li>
&lt;li>&lt;a href="https://open-assistant.io/ru">https://open-assistant.io/ru&lt;/a>, было бы здорово к этому движу присоединиться.&lt;/li>
&lt;li>Боты по типу ChatGPT, но в ТГ:
&lt;ul>
&lt;li>&lt;a href="https://t.me/talkgptbot">https://t.me/talkgptbot&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://t.me/gpt3_unlim_chatbot">https://t.me/gpt3_unlim_chatbot&lt;/a> (не unlim в бесплатной версии)&lt;/li>
&lt;li>&lt;a href="https://t.me/chatGPTwrapperbot">https://t.me/chatGPTwrapperbot&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://t.me/chatgpt_karfly_bot">https://t.me/chatgpt_karfly_bot&lt;/a>&lt;/li>
&lt;li>особняком стоит &lt;a href="https://t.me/VoiceLogBot">https://t.me/VoiceLogBot&lt;/a> - у этого есть конкретное назначение (быть чем-то вроде коуча-дневника, задающим наводящие вопросы на подумать), плюс он принимает голосовые и кружочки (не проверял качество), &lt;del>и безлимитный&lt;/del> небезлимитный(. Чувствую, эта область (psy-боты в ТГ) ещё минимум год будет развиваться.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="https://huggingface.co/spaces/huggingface/diffuse-the-rest">https://huggingface.co/spaces/huggingface/diffuse-the-rest&lt;/a> inpainting (дорисовывание картинки/скетча), требует также текстовый промт. Иногда выдаёт неинтересное совсем, иногда результат далёк от наброска.&lt;/li>
&lt;/ul></content></item><item><title>Про учёбу и учение, мать его</title><link>https://tookser.github.io/posts/interesting_things4_la_study/</link><pubDate>Sat, 01 Oct 2022 18:38:04 +0300</pubDate><guid>https://tookser.github.io/posts/interesting_things4_la_study/</guid><description>Учение&amp;hellip; Во-первых, Amazon выложил сейчас некоторые свои курсы в открытый доступ. (с) телеграм-канал CodeCamp У Amazon аттракцион невиданной щедрости — компания открыла бесплатный доступ к 120 курсам Amazon Web Services. Чтобы забрать их, заходим сюда (https://www.amazon.com/s?i=courses&amp;amp;rh=p_27%3AAWS+Training+%26+Certification), выбираем понравившийся курс и «приобретаем» его — нас перенесёт на окно авторизации, где создаём аккаунт через почту. После регистрации нас перенаправит назад, снова пытаемся забрать курс и получаем ошибку, жмём «change your country/region».</description><content>&lt;h3 id="учение">Учение&amp;hellip;&lt;/h3>
&lt;ul>
&lt;li>Во-первых, Amazon выложил сейчас некоторые свои курсы в открытый доступ. (с) телеграм-канал CodeCamp&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>У Amazon аттракцион невиданной щедрости — компания открыла бесплатный доступ к 120 курсам Amazon Web Services.
Чтобы забрать их, заходим сюда (&lt;a href="https://www.amazon.com/s?i=courses&amp;amp;rh=p_27%3AAWS+Training+%26+Certification)">https://www.amazon.com/s?i=courses&amp;amp;rh=p_27%3AAWS+Training+%26+Certification)&lt;/a>, выбираем понравившийся курс и «приобретаем» его — нас перенесёт на окно авторизации, где создаём аккаунт через почту. После регистрации нас перенаправит назад, снова пытаемся забрать курс и получаем ошибку, жмём «change your country/region». Нам понадобится рандомный адрес и номер телефона США, можно сгенерировать тут (&lt;a href="https://www.bestrandoms.com/random-address">https://www.bestrandoms.com/random-address&lt;/a>) (телефон вводим исключительно цифрами).
Готово, 120 бесплатных курсов ваши. Халява действует до 9 декабря, а изучить все купленные курсы можно будет до 28 апреля 2023 года.&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/Help:Using_Wikipedia_for_mathematics_self-study">Гайд, как изучать математику по англовики&lt;/a>. Спойлер: только по ней не надо, это дополнительный источник материалов. &lt;a href="https://tookser.github.io/posts/interesting_things3_math">См. также про Пойя&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h3 id="и-развлечение">&amp;hellip;и развлечение&lt;/h3>
&lt;p>&lt;a href="http://lki.ru/text.php?id=1189">Невыпущенная игра-генеративный детектив P.H.A.S.E of Resurgence&lt;/a>, в которой предполагалось сделать детектив с каждый раз генерирующимся сюжетом и свободой выбора не только у игрока, но и у NPC. Рассказ очень прикольный. Ещё был проект онлайн игры WELL. Из статьи:&lt;/p>
&lt;blockquote>
&lt;p>Существуют игры, в которых персонажи ведут себя убедительно и выглядят на первый взгляд как живые противники со своими потребностями и непредсказуемым поведением, — это ближайшие аналоги концепции P.H.A.S.E of Resurgence. Игровые серии с естественным ИИ, формирующим игровой процесс, я припомню всего две, и обе, что характерно, связаны с космосом.
Во-первых, &lt;strong>«Космические рейнджеры»&lt;/strong>, в которых население мира вместе с игроком сражается с захватчиками (и попутно обделывает свои разной чистоты делишки). Но там общение и обмен информацией были чисто номинальными — жизнь вселенной больше напоминала изящно задуманную и удачно воплощенную модель экосистемы.
Во-вторых, пошаговая стратегия &lt;strong>Galactic Civilization&lt;/strong>, в которой разработчики собирали свою модель ИИ для каждой космической расы. На сложных уровнях тягаться с хитрыми врагами было бесполезно — они не ловились на простые приемы, могли раскусить задумку игрока, а то и просто объединиться против слишком нахального завоевателя, не делая, впрочем, разницы между цифровым и живым игроком. С иезуитством этого ИИ не мог сравниться никакой &lt;strong>Master of Orion&lt;/strong>.
Кто-то может вспомнить &lt;strong>The Sims&lt;/strong> или древних &lt;strong>Creatures&lt;/strong> — но поведение норнов и симов не мотивировано, они не соперничают с игроком и друг с другом, а просто оживляют собой игру-песочницу.&lt;/p>
&lt;/blockquote>
&lt;p>Ещё мне очень советовали почитать &amp;ldquo;Мать учения&amp;rdquo; - согласно отчёту, она помимо интересности меняет ценности в сторону более ориентированных на получение знаний.&lt;/p></content></item><item><title>pip3 install pdoc</title><link>https://tookser.github.io/posts/pdoc_not_pdoc3/</link><pubDate>Wed, 21 Sep 2022 22:58:05 +0300</pubDate><guid>https://tookser.github.io/posts/pdoc_not_pdoc3/</guid><description>Есть система автогенерации документации для python (по докстрингам), pdoc. У неё есть большое преимущество - простота. Есть поиск, подтягивание исходного кода, документирование переменных, форматирование документации, но в целом запускается очень легко.
Корректный способ её установить это
pip3 install pdoc
. Кажется, что pdoc3 будет лучше, типа это форк и по звёздам на гитхабе уступает мало&amp;hellip; Но, помимо этических проблем (не очень дружественный форк как минимум) есть и техническая - при обычном запуске pdoc3 в полученной документации отсутствует поиск, а в pdoc он получается.</description><content>&lt;p>Есть система автогенерации документации для python (по докстрингам), &lt;a href="https://github.com/mitmproxy/pdoc">pdoc&lt;/a>. У неё есть большое преимущество - простота. Есть поиск, подтягивание исходного кода, документирование переменных, форматирование документации, но в целом запускается очень легко.&lt;/p>
&lt;p>Корректный способ её установить это&lt;/p>
&lt;p>&lt;code>pip3 install pdoc&lt;/code>&lt;/p>
&lt;p>. Кажется, что &lt;del>pdoc3&lt;/del> будет лучше, типа это форк и по звёздам на гитхабе уступает мало&amp;hellip; Но, &lt;a href="https://github.com/pdoc3/pdoc/issues/64">помимо этических проблем&lt;/a> (не очень дружественный форк как минимум) есть и техническая - при обычном запуске &lt;del>pdoc3&lt;/del> в полученной документации отсутствует поиск, а в &lt;strong>pdoc&lt;/strong> он получается. Кроме того, дизайн лучше у &lt;strong>pdoc&lt;/strong> (readthedocs тема или что-то вроде).&lt;/p>
&lt;p>Так запускается pdoc:&lt;/p>
&lt;p>&lt;code>pdoc -o doc_dir/ package_or_module1 package_or_module2 ...&lt;/code>&lt;/p>
&lt;p>после чего в папке &lt;code>doc_dir&lt;/code> создаётся документация, начать можно с &lt;code>index.html&lt;/code>.&lt;/p></content></item><item><title>Свет в окне</title><link>https://tookser.github.io/posts/semantic_highlighting/</link><pubDate>Sat, 06 Aug 2022 01:03:32 +0300</pubDate><guid>https://tookser.github.io/posts/semantic_highlighting/</guid><description>Semantic highlighting (семантическая подсветка) - что это такое?
При обычной подсветке кода разными цветами обозначаются ключевые слова, имена переменных, литералы. При этом все переменные, например, подсвечиваются одним цветом. Для того, чтобы проще их различать, можно было бы раскрасить их в разные цвета. Это, по идее, должно давать некоторый бонус к внимательности - можно проще искать взглядом ту или иную переменную, если видишь одно её вхождение.
Программные реализации: Sublime https://www.sublimetext.com/docs/color_schemes.html#hashed_syntax_highlighting - в Sublime Text 3 эта возможность &amp;ldquo;из коробки&amp;rdquo;, без плагинов, достаточно лишь задать цвета в цветовой схеме.</description><content>&lt;p>&lt;strong>Semantic highlighting&lt;/strong> (семантическая подсветка) - что это такое?&lt;/p>
&lt;p>При обычной подсветке кода разными цветами обозначаются ключевые слова, имена переменных, литералы. При этом все переменные, например, подсвечиваются одним цветом. Для того, чтобы проще их различать, можно было бы раскрасить их в разные цвета. Это, по идее, должно давать некоторый бонус к внимательности - можно проще искать взглядом ту или иную переменную, если видишь одно её вхождение.&lt;/p>
&lt;p>&lt;img src="https://tookser.github.io/semantic.png" alt="Пример семантической подсветки © Evan Brooks">&lt;/p>
&lt;h2 id="программные-реализации">Программные реализации:&lt;/h2>
&lt;h3 id="sublime">Sublime&lt;/h3>
&lt;p>&lt;a href="https://www.sublimetext.com/docs/color_schemes.html#hashed_syntax_highlighting">https://www.sublimetext.com/docs/color_schemes.html#hashed_syntax_highlighting&lt;/a> - в &lt;strong>Sublime Text 3&lt;/strong> эта возможность &amp;ldquo;из коробки&amp;rdquo;, без плагинов, достаточно лишь задать цвета в цветовой схеме.&lt;/p>
&lt;p>Для тёмной темы на hackernews рекомендуют цветовую схему &lt;strong>Monnokay&lt;/strong> (sic!, не Monokai), &lt;a href="https://github.com/cixtor/monnokay">https://github.com/cixtor/monnokay&lt;/a> . Ставится вручную, правда. Скорее всего, можно настроить и лучше, в принципе можно задавать градиент произвольным списком цветов, а в Monnokay только 2.&lt;/p>
&lt;h3 id="не-sublime">Не Sublime&lt;/h3>
&lt;p>В &lt;strong>Atom&lt;/strong> и &lt;strong>emacs&lt;/strong> тоже есть.&lt;/p>
&lt;p>Пошло всё вроде как изначально от KDevelop, и потом - &lt;a href="https://medium.com/@evnbr/coding-in-color-3a6db2743a1e">статьи Evan Brooks&lt;/a>.&lt;/p>
&lt;p>В &lt;strong>Visual Studio Code&lt;/strong> есть что-то с таким названием, но я посмотрел доки - эффекта разноцветных переменных там не декларируется. &lt;a href="https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide">https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide&lt;/a>&lt;/p>
&lt;p>&lt;strong>DrRacket&lt;/strong> - он для языка Racket (вроде лиспа), но для схожих целей рисует стрелочки между одинаковыми переменными при наведении.&lt;/p>
&lt;h3 id="неактуальное">Неактуальное&lt;/h3>
&lt;p>Плагин для Sublime Colorcoder (последнее обновление в 2014) - у меня не работает, в причинах не разбирался.&lt;/p>
&lt;h3 id="мысли-на-тему">Мысли на тему&lt;/h3>
&lt;p>Довольно случайно и out of serendipity наткнулся на эту красивую идею. Кажется, отсюда может получиться некоторое количество задачек на хеширование для алгоритмических контестов. Возможно, часть из них будет осмысленна.&lt;/p>
&lt;p>Я бы поостерёгся делать переменные с близкими названиями почти одноцветными - часто их полезно различать. Кроме того, помимо цвета букв идентификатора может быть ещё и цвет фона - и тут появляются вопросы контрастности, но зато сразу увеличивается вероятность различия раскраски идентификатора. Наконец, можно просто красить в разные цвета и хранить это в дополнительном файле, что позволит поддерживать &amp;ldquo;разноцветность&amp;rdquo; и &amp;ldquo;устойчивость цвета во времени&amp;rdquo; (это есть и так, но без условия поддержания разноцветности; можно ещё добавить относительно переименований посредством среды разработки, хотя это не особо нужно, кажется), и это нужно будет хранить во внешнем файле каком-то. Что-то вроде &lt;code>.semantic_colors&lt;/code>. И не редактировать файлы ничем другим, кроме выбранного редактора.&lt;/p>
&lt;p>По ощущениям, чуть-чуть связано с literate programming.&lt;/p></content></item><item><title>GURPS и прочее</title><link>https://tookser.github.io/posts/hello_gurps/</link><pubDate>Sun, 24 Jul 2022 18:55:51 +0300</pubDate><guid>https://tookser.github.io/posts/hello_gurps/</guid><description>Этот пост скорее несерьёзный.
Ролевые игры - это что-то вроде театра, только часть режиссирующих функций перекладывается на актёров (&amp;ldquo;игроков&amp;rdquo;). Игроки сами могут выбирать своё поведение (в рамках правил). При этом есть и режиссёры (&amp;ldquo;мастера&amp;rdquo;), которые определяют ещё до начала игры сюжет, правила взаимодействий и организовывают всё это. На масштабные ролевые игры могут собираться тысячи людей, в костюмах отыгрываемого мира, с обмундированием, и это им ещё где-то нужно жить и что-то есть.</description><content>&lt;p>Этот пост скорее несерьёзный.&lt;/p>
&lt;p>&lt;strong>Ролевые игры&lt;/strong> - это что-то вроде театра, только часть режиссирующих функций перекладывается на актёров (&amp;ldquo;игроков&amp;rdquo;). Игроки сами могут выбирать своё поведение (в рамках правил). При этом есть и режиссёры (&amp;ldquo;мастера&amp;rdquo;), которые определяют ещё до начала игры сюжет, правила взаимодействий и организовывают всё это. На масштабные ролевые игры могут собираться тысячи людей, в костюмах отыгрываемого мира, с обмундированием, и это им ещё где-то нужно жить и что-то есть.&lt;/p>
&lt;p>С таким размахом ролевые игры обычно не делают. Часто ролевые игры являются &lt;strong>словесными&lt;/strong> - игроки словами (устно или на форуме) описывают действия своих персонажей, обычно в рамках какой-то механики. Механика же обычно берётся готовая - такие системы как D&amp;amp;D, GURPS и другие описывают, что и по каким правилам делается (обычно интересуются сражениями и заклинаниями, но порой подробно прописывают и социальные механики, и какие-то экзотические вроде хакинга). Ещё эти системы описывают миры, в которых происходит действо.&lt;/p>
&lt;p>Сейчас речь пойдёт о &lt;a href="https://ru.wikipedia.org/wiki/GURPS">&lt;strong>GURPS&lt;/strong>&lt;/a>. В этой системе результаты действий определяются бросками трёх обычных кубиков, и в зависимости от модификаторов успешность действия смещается в ту или иную сторону. Но речь совсем не об этом.&lt;/p>
&lt;p>В GURPS персонажи игроков могут иметь специализацию (воин, маг, вор&amp;hellip; а как вам &lt;em>специалист по истории древнего мира&lt;/em>?). И пусть персонаж хорошо знает историю древнего мира. Наверняка он будет знать историю и других эпох, но хуже, хотя и лучше среднего человека. Возникает вопрос про существование чего-то такого же в реальности. Это я и хотел бы тут в дальнейшем поисследовать.&lt;/p>
&lt;p>Несколько ссылок:&lt;/p>
&lt;ul>
&lt;li>Про N-Back - &lt;a href="https://www.gwern.net/DNB-FAQ">Gwern-1&lt;/a>, &lt;a href="https://www.gwern.net/DNB-meta-analysis">Gwern-2&lt;/a>. Это две статьи про упражнение N-back и рассуждения со ссылками на литературу про его эффективность в развитии fluid intelligence (~интеллект в целом). Здесь &amp;ldquo;перенос&amp;rdquo; предполагается с эффективности в данном упражнении на все задачи.&lt;/li>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/N-back">https://en.wikipedia.org/wiki/N-back&lt;/a> - англовики про N-back.&lt;/li>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/Transfer_of_learning">https://en.wikipedia.org/wiki/Transfer_of_learning&lt;/a> - англовики про Transer of learning.&lt;/li>
&lt;/ul>
&lt;p>После написания почему-то захотелось найти партию для ролевой игры на каких-нибудь выходных.&lt;/p></content></item><item><title>Как решать задачи и делать запросы</title><link>https://tookser.github.io/posts/interesting_things3_math/</link><pubDate>Thu, 21 Apr 2022 23:21:25 +0300</pubDate><guid>https://tookser.github.io/posts/interesting_things3_math/</guid><description>Как думать математику Книга &amp;ldquo;Как решать задачу&amp;rdquo; Джорджа Полиа (Дьёрдя Пойа) когда-то очень понравилась мне тем, что была близка к каркасу самоучителя математики. Да, есть математические книги, по которым удобно учиться самому, но это не все книги, мягко говоря. А вот эта книга была бы максимально удобна в качестве методического ассистента по освоению менее дружелюбной математической литературы.
Серьёзной математики в этой книге мало/почти нет, но у него же есть, например, &amp;ldquo;Математика и правдоподобные рассуждения&amp;rdquo; в двух томах, где уже есть задачи после каждой главы.</description><content>&lt;h2 id="как-думать-математику">Как думать математику&lt;/h2>
&lt;p>Книга &amp;ldquo;Как решать задачу&amp;rdquo; Джорджа Полиа (Дьёрдя Пойа) когда-то очень понравилась мне тем, что была близка к каркасу самоучителя математики. Да, есть математические книги, по которым удобно учиться самому, но это не все книги, мягко говоря. А вот эта книга была бы максимально удобна в качестве методического ассистента по освоению менее дружелюбной математической литературы.&lt;/p>
&lt;p>&lt;img src="https://tookser.github.io/poia.jpg" alt="Обложка русского издания книги &amp;ldquo;Как решать задачу&amp;rdquo;">&lt;/p>
&lt;p>Серьёзной математики в этой книге мало/почти нет, но у него же есть, например, &amp;ldquo;Математика и правдоподобные рассуждения&amp;rdquo; в двух томах, где уже есть задачи после каждой главы. Не как на мехмате, но ближе. Сам Пойа работал как математик в разных областях, от матанализа до комбинаторики, и, кажется, &lt;a href="https://neerc.ifmo.ru/wiki/index.php?title=%D0%9B%D0%B5%D0%BC%D0%BC%D0%B0_%D0%91%D1%91%D1%80%D0%BD%D1%81%D0%B0%D0%B9%D0%B4%D0%B0_%D0%B8_%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9F%D0%BE%D0%B9%D0%B0">теорема Пойа&lt;/a> из комбинаторики (рекомендую!) тоже его.&lt;/p>
&lt;p>Есть &lt;a href="https://www.mccme.ru/free-books/olymp/KanKov.pdf">другая книга&lt;/a>, Канель-Белов, Ковальджи - &amp;ldquo;Как решают нестандартные задачи&amp;rdquo;, - но она как раз ориентирована на школьные мат. олимпиады, хотя методические советы там тоже есть.&lt;/p>
&lt;p>&lt;img src="https://tookser.github.io/sova.jpg" alt="Обложка книги &amp;ldquo;Как решать нестандартные задачи&amp;rdquo;">&lt;/p>
&lt;p>А вот Барбару Оакли, &amp;ldquo;Думай как математик&amp;rdquo; не рекомендую для заявленной цели. Она скорее про менее специфичный процесс учёбы. Курс &amp;ldquo;Learning How To Learn&amp;rdquo; тоже.&lt;/p>
&lt;h2 id="что-я-бы-сказал-себе-олимпиаднику">Что я бы сказал себе-олимпиаднику&lt;/h2>
&lt;p>Если бы я отправился в прошлое, и захотел бы сказать что-то полезное себе-как-матолимпиаднику, я, наверное,&lt;/p>
&lt;ul>
&lt;li>Сдвинул бы соотношение &amp;ldquo;я объясняю / мне объясняют&amp;rdquo; вправо;&lt;/li>
&lt;li>
&lt;ul>
&lt;li>хотя бы просто больше ходил на кружки.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Постарался бы сделать занятия математикой эстетичными для себя.&lt;/li>
&lt;li>
&lt;ul>
&lt;li>хотя бы иногда смотрел красивые околонаучные видео.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>Кажется, это дало бы много эффекта или хоть какой-то.&lt;/p>
&lt;p>Что про сам процесс решения задач на олимпиаде — мне кажется, как раз он был вполне оптимален; совет &amp;ldquo;не зацикливайся на одной задаче, пробуй по очереди по кругу&amp;rdquo; хотелось бы дать, но его я соблюдал. Разве что попросил бы себя не уходить за 10 минут до конца от усталости, что иногда случалось — но вряд ли эта просьба что-то улучшила.&lt;/p>
&lt;h2 id="ссылки-и-книги-по-алгоритмам">Ссылки и книги по алгоритмам&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0">Вики-конспекты&lt;/a> университета ИТМО — собрание материалов по математике и CS. Вроде бы конспекты там делятся на проверяемые и непроверяемые, и первые должны быть лучшего качества. Попадался на неясную логику или перевод из англоязычного источника в паре мест.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://e-maxx.ru/">https://e-maxx.ru/&lt;/a> — наиболее популярный источник информации по алгоритмам.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>К сожалению, многие доказательства в алгоритмах кажутся написанными достаточно невнятно в обоих источниках, да и много где ещё. Можно, конечно, избегать доказательств. Но скучновато.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://t.me/avvablog/1229">https://t.me/avvablog/1229&lt;/a> — пост про то, как делать SQL-запросы к StackOverFlow и StackExchange (с) &lt;a href="https://t.me/avvablog">Авва&lt;/a>. Кратко, он сводится к ссылке на &lt;a href="https://data.stackexchange.com/mathoverflow/query/1378063">https://data.stackexchange.com/mathoverflow/query/1378063&lt;/a>, это топ самых забукмаркленных вопросов на mathoverflow. Можно поменять один сайт на другой просто выбором из выпадающего меню. Например, можно поискать по русскому стэковерфлоу (оттуда нашёл список русской литературы по Java, например).&lt;/li>
&lt;/ul></content></item><item><title>ModernCV и мытарства</title><link>https://tookser.github.io/posts/moderncv/</link><pubDate>Fri, 15 Apr 2022 14:51:22 +0300</pubDate><guid>https://tookser.github.io/posts/moderncv/</guid><description>Для справки, LaTeX - система вёрстки, обычно для научных статей, Docker - система для контейнеризации (нечто вроде виртуальной машины).
Немного предыстории. ModernCV - шаблон для LaTeX, позволяющий писать красивенькие резюме в pdf. Требует небольшого знания LaTeX-а. В документации можно посмотреть, как выглядит.
Этот шаблон почему-то упорно не хотел нормально собираться на моей системе, и в итоге нашлось более хорошее решение.
Вот ссылка на docker-образ образ докера с texlive. В нём это резюме собирается следующим образом (рассказываю вариант под Linux с установленным Docker).</description><content>&lt;p>Для справки, &lt;strong>LaTeX&lt;/strong> - система вёрстки, обычно для научных статей, &lt;strong>Docker&lt;/strong> - система для контейнеризации (нечто вроде виртуальной машины).&lt;/p>
&lt;p>Немного предыстории. &lt;strong>&lt;a href="https://github.com/moderncv/moderncv">ModernCV&lt;/a>&lt;/strong> - шаблон для LaTeX, позволяющий писать красивенькие резюме в pdf. Требует небольшого знания LaTeX-а. В &lt;a href="https://github.com/moderncv/moderncv/raw/master/manual/moderncv_userguide.pdf">документации&lt;/a> можно посмотреть, как выглядит.&lt;/p>
&lt;p>Этот шаблон почему-то упорно не хотел нормально собираться на моей системе, и в итоге нашлось более хорошее решение.&lt;/p>
&lt;p>Вот &lt;a href="https://github.com/moderncv/debian-texlive-docker/pkgs/container/debian-texlive-docker">ссылка на docker-образ&lt;/a> образ докера с texlive. В нём это резюме собирается следующим образом (рассказываю вариант под Linux с установленным Docker).&lt;/p>
&lt;p>Сначала&lt;/p>
&lt;p>&lt;code>docker pull ghcr.io/moderncv/debian-texlive-docker:main&lt;/code> - скачивание docker-образа.&lt;/p>
&lt;p>Потом создаём контейнер&lt;/p>
&lt;p>&lt;code>docker run -it -v &amp;quot;/путь/к/папке/с/резюме:/mnt&amp;quot; --name ИмяОбраза ghcr.io/moderncv/debian-texlive-docker:main /bin/bash&lt;/code>&lt;/p>
&lt;p>Это создаёт docker-контейнер по скачанному docker-образу И запускает его. &lt;em>ИмяОбраза&lt;/em> и &lt;em>/путь/к/папке/с/резюме&lt;/em> (на вашем диске) нужно заполнить самим. &lt;code>-it&lt;/code> позволяет работать в терминале внутри контейнера, &lt;code>-v&lt;/code> монтирует папку к пути &lt;code>/mnt&lt;/code> &lt;em>внутри&lt;/em> докер-контейнера (то есть с папкой &lt;code>/mnt&lt;/code> исходной системы ничего не происходит).&lt;/p>
&lt;p>Теперь нужно выполнить команду&lt;/p>
&lt;p>&lt;code>docker start ИмяКонтейнера&lt;/code>&lt;/p>
&lt;p>и&lt;/p>
&lt;p>&lt;code>docker exec -it ИмяКонтейнера /bin/bash&lt;/code>&lt;/p>
&lt;p>. Вы окажетесь в терминале, откуда уже можно собрать резюме с помощью TexLive, зайдя в директорию &lt;code>/mount&lt;/code>. Возможно, понадобится что-то догрузить из пакетов - &lt;code>apt install ...&lt;/code> (без &lt;code>sudo&lt;/code> почему-то в этом образе работает) вполне помогало, если вообще понадобилось.&lt;/p>
&lt;p>В конце можно остановить контейнер с помощью&lt;/p>
&lt;p>&lt;code>docker stop ИмяКонтейнера&lt;/code>&lt;/p>
&lt;p>.&lt;/p>
&lt;p>При повторных использованиях всё так же, начиная с команды&lt;/p>
&lt;p>&lt;code>docker start ИмяКонтейнера&lt;/code>&lt;/p>
&lt;p>.&lt;/p>
&lt;p>Два момента:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>блокируется доступ&lt;/strong> на запись к файлам в монтируемой папке, что неудобно.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>судя по всему, можно автоматизировать.&lt;/p>
&lt;/li>
&lt;/ul></content></item><item><title>Полином Жегалкина</title><link>https://tookser.github.io/posts/jegalkin/</link><pubDate>Fri, 15 Apr 2022 11:18:53 +0300</pubDate><guid>https://tookser.github.io/posts/jegalkin/</guid><description>Многие, наверное, знают о полиномах Жегалкина, это известный способ задания функции алгебры логики. Выглядят они примерно так:
G(x,y,z) = xy ⊕ yz ⊕ x
Разумеется, длина каждой конъюнкции может быть произвольной, как и их количество. Порядок их не имеет значение, и конъюнкции не должны повторяться (от повторов можно избавляться, уничтожая &amp;ldquo;дубли&amp;rdquo; парами). Также возможна конъюнкция длины 0, обозначаемая &amp;ldquo;1&amp;rdquo;.
У полиномов Жегалкина есть одно замечательное и простое свойство: каждая функция представима ровно одним полиномом Жегалкина.</description><content>&lt;p>Многие, наверное, знают о полиномах Жегалкина, это известный способ задания функции алгебры логики. Выглядят они примерно так:&lt;/p>
&lt;p>&lt;strong>G(x,y,z) = xy ⊕ yz ⊕ x&lt;/strong>&lt;/p>
&lt;p>Разумеется, длина каждой &lt;a href="https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%8A%D1%8E%D0%BD%D0%BA%D1%86%D0%B8%D1%8F">конъюнкции&lt;/a> может быть произвольной, как и их количество. Порядок их не имеет значение, и конъюнкции не должны повторяться (от повторов можно избавляться, уничтожая &amp;ldquo;дубли&amp;rdquo; парами). Также возможна конъюнкция длины &lt;strong>0&lt;/strong>, обозначаемая &amp;ldquo;&lt;strong>1&lt;/strong>&amp;rdquo;.&lt;/p>
&lt;p>У полиномов Жегалкина есть одно замечательное и простое свойство: каждая функция представима ровно одним полиномом Жегалкина.&lt;/p>
&lt;p>Доказывается это так. Сначала заметим, что сумма (сложение по модулю 2) произвольных двух полиномов Жегалкина равна &lt;strong>0&lt;/strong> тогда и только тогда, когда они совпадают (иначе бы нашлось бы два разных значения, и он где-то равнялся бы &lt;strong>1&lt;/strong>). Теперь возьмём два разных полинома Жегалкина (&amp;ldquo;разных&amp;rdquo; здесь - разных по записи), и сложим их попарно. У нас получится некоторый новый полином Жегалкина.&lt;/p>
&lt;p>Теперь посмотрим, чему он равен: &lt;strong>0&lt;/strong> он не может равняться, т.к. полиномы разные, значит, в нём есть конъюнкции. Тогда возьмём какую-то конъюнкцию минимальной длины, и сделаем все её переменные единицами, а остальные - нулями. На этих переменных полином будет отличаться от значения на &amp;ldquo;всех нулях&amp;rdquo;, и тогда у нас найдётся значение &lt;strong>1&lt;/strong> среди этих двух, либо же полином &amp;ldquo;разности&amp;rdquo; изначально равнялся &lt;strong>1&lt;/strong>.&lt;/p>
&lt;p>Мы доказали, что все полиномы Жегалкина дают разные функции. Осталось заметить только, что, так как конъюнкций &lt;strong>n&lt;/strong> переменных существует &lt;strong>2^n&lt;/strong>, полиномов будет &lt;strong>2^(2^n)&lt;/strong>, что совпадает с числом булевых функций от &lt;strong>n&lt;/strong> переменных.&lt;/p>
&lt;p>Наверное, самое красивое среди булевой логики первого курса. Нет, ещё &lt;a href="https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D1%82%D0%B5%D1%80%D0%B8%D0%B9_%D0%9F%D0%BE%D1%81%D1%82%D0%B0">теорема Поста&lt;/a> о 5 предполных классах. И автоматы с задержкой.&lt;/p></content></item><item><title>Об Obsidian для тех, кому надоели лонгриды на эту тему</title><link>https://tookser.github.io/posts/obsidian/</link><pubDate>Wed, 02 Feb 2022 12:27:20 +0300</pubDate><guid>https://tookser.github.io/posts/obsidian/</guid><description>obsidian.md - сайт, с которого можно взять эту программу. Бесплатная, но не open-source. Есть опенсорсные аналоги, Foam и Memo (и то и другое основывается на VS Code).
Что она даёт:
Возможность почти жонглировать сотнями заметок с кусочками информации - от технических заметок до запомнившихся fun-fact&amp;rsquo;ов. Ссылки, хештеги, полнотекстовый поиск, папочная структура. Отсутствие привязки к программе - всё в markdown, простых текстовых файлах. Граф знаний - самая красивая, но малополезная штука.</description><content>&lt;p>&lt;a href="https://obsidian.md">obsidian.md&lt;/a> - сайт, с которого можно взять эту программу. Бесплатная, но не open-source. Есть опенсорсные аналоги, &lt;a href="https://foambubble.github.io/foam/">Foam&lt;/a> и &lt;a href="https://marketplace.visualstudio.com/items?itemName=svsool.markdown-memo">Memo&lt;/a> (и то и другое основывается на VS Code).&lt;/p>
&lt;p>Что она даёт:&lt;/p>
&lt;ul>
&lt;li>Возможность почти жонглировать сотнями заметок с кусочками информации - от технических заметок до запомнившихся fun-fact&amp;rsquo;ов.&lt;/li>
&lt;li>Ссылки, хештеги, полнотекстовый поиск, папочная структура.&lt;/li>
&lt;li>Отсутствие привязки к программе - всё в markdown, простых текстовых файлах.&lt;/li>
&lt;li>Граф знаний - самая красивая, но малополезная штука.&lt;/li>
&lt;li>Хорошее копирование - при копировании в страницы Obsidian из веб-страниц или телеграма копируется сразу вместе со ссылками, но можно копировать и как просто текст.&lt;/li>
&lt;li>Также есть приличное количество плагинов даже &amp;ldquo;из коробки&amp;rdquo;, таких как диктофон, плагины для синхронизации/публикации/создания презентаций, случайная заметка (для расслабленного хождения по хранилищу).&lt;/li>
&lt;li>Есть режим для vim.&lt;/li>
&lt;/ul>
&lt;p>Для начала рекомендую частично познакомиться со справочным хранилищем и некоторыми горячими клавишами (мне почти всегда хватает одних &lt;code>Ctrl+E&lt;/code>, &lt;code>Ctrl+клик по ссылке&lt;/code>, &lt;code>Ctrl+O&lt;/code> и &lt;code>Ctrl+Shift+F&lt;/code>).&lt;/p>
&lt;p>Поддерживайте связность, хотя бы в большей части заметок. Заводите хештеги, заводите страницы-оглавления по темам, делайте перекрёстные ссылки.&lt;/p>
&lt;p>Пользуйтесь разметкой. Из неочевидного - если выделить текст тремя апострофами, и написать название языка в первой строке - он будет распознаваться как код на этом языке.&lt;/p>
&lt;p>Не бойтесь менять структуру, дополнять списки, разбивать их на подсписки, вводить новые хештеги и так далее. Здесь важно слово &amp;ldquo;постепенность&amp;rdquo;.&lt;/p>
&lt;p>Obsidian возможно использовать как планировщик - по крайней мере, GTD-шный инбокс в нём приятно держать одной заметкой, если много работаешь на этом компьютере.&lt;/p>
&lt;p>Иногда можно менять тему оформления. Также, если хотите, можно выключить автообновление, чтобы точно ничего не произошло с приложением.&lt;/p>
&lt;p>Пока что, на примерно 500 объектов (кроме заметок, ещё есть вложения и папки, но их мало) желание вести не иссякло, и пользу иногда приносит.&lt;/p></content></item><item><title>Интересные вещи и где они обитают-2</title><link>https://tookser.github.io/posts/interesting_things2/</link><pubDate>Wed, 02 Feb 2022 11:36:14 +0300</pubDate><guid>https://tookser.github.io/posts/interesting_things2/</guid><description>Некоторое время назад наткнулся на сайт https://agnessa.pp.ru. Сама создательница называет его &amp;ldquo;сад знаний&amp;rdquo;, и это хорошее название. Что-то про IT, emacs, но не только, подборки книг оттуда воодушевляют, есть и про кулинарию. Построен по типу вики, с выведенным на главную перечнем обновлений. Это открытая часть личной базы знаний.
Оттуда, свежее - небольшая подборка для чтения.
Ещё один сайт похожего типа, хотя вроде бы более линейный по структуре - https://qejep.github.io/.
Там, например, можно найти карту мира в терминале - просто введите в консоли telnet mapscii.</description><content>&lt;p>Некоторое время назад наткнулся на сайт &lt;a href="https://agnessa.pp.ru">https://agnessa.pp.ru&lt;/a>. Сама создательница называет его &amp;ldquo;сад знаний&amp;rdquo;, и это хорошее название. Что-то про IT, emacs, но не только, подборки книг оттуда воодушевляют, есть и про кулинарию. Построен по типу вики, с выведенным на главную перечнем обновлений. Это открытая часть личной базы знаний.&lt;/p>
&lt;p>Оттуда, свежее - &lt;a href="https://qejep.github.io/readinglist.html">небольшая подборка для чтения&lt;/a>.&lt;/p>
&lt;p>Ещё один сайт похожего типа, хотя вроде бы более линейный по структуре - &lt;a href="https://qejep.github.io/">https://qejep.github.io/&lt;/a>.&lt;/p>
&lt;p>Там, например, можно найти карту мира в терминале - просто введите в консоли &lt;code>telnet mapscii.me&lt;/code>. Клавиши &lt;code>a&lt;/code> и &lt;code>z&lt;/code> - увеличение, стрелки - передвижение.&lt;/p>
&lt;p>Пост вышел немного &amp;ldquo;мета-&amp;rdquo;, т.к. половина - ссылки на другие личные сайты. Не страшно.&lt;/p></content></item><item><title>Парадокс Гетье о знании</title><link>https://tookser.github.io/posts/knowledge/</link><pubDate>Wed, 02 Feb 2022 10:43:25 +0300</pubDate><guid>https://tookser.github.io/posts/knowledge/</guid><description>Люблю почему-то этот логический парадокс. Да и другие парадоксы, желающие познакомиться с ними могут начать отсюда (это категория Википедии, содержащая все описанные в ней парадоксы).
Давно писал.
В философии считалось, что человек знает о чём-то (а не просто &amp;ldquo;считает&amp;rdquo;), когда
а) это истинно
б) человек убеждён в этом
в) у человека есть основания так полагать.
Иными словами, знание = обоснованное верное убеждение.
Однако в 1963 году вышла краткая статья Эдмунда Л.</description><content>&lt;p>Люблю почему-то этот логический парадокс. Да и другие парадоксы, желающие познакомиться с ними могут начать &lt;a href="https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D0%B0%D1%80%D0%B0%D0%B4%D0%BE%D0%BA%D1%81%D1%8B">отсюда&lt;/a> (это категория Википедии, содержащая все описанные в ней парадоксы).&lt;/p>
&lt;p>Давно писал.&lt;/p>
&lt;p>В философии считалось, что человек знает о чём-то (а не просто &amp;ldquo;считает&amp;rdquo;), когда&lt;br>
а) это истинно&lt;br>
б) человек убеждён в этом&lt;br>
в) у человека есть основания так полагать.&lt;br>
Иными словами, знание = обоснованное верное убеждение.&lt;/p>
&lt;p>Однако в 1963 году вышла краткая статья Эдмунда Л. Гетье III (Is Justified True Belief Knowledge? Edmund L. Gettier &lt;a href="http://www.ditext.com/gettier/gettier.html">http://www.ditext.com/gettier/gettier.html&lt;/a>), показывающая некоторую уязвимость такого определения &lt;em>знания&lt;/em>. Вот один рассмотренный пример:&lt;br>
Смит и Джон подали заявление о приёме на работу в одно и то же место. Джон знает, что у Смита в левом кармане лежит монетка в 10 центов (он заглянул к нему в карман), и что, по уверениям владельца компании, Смит будет принят на работу. Таким образом, Джон знает, что &amp;ldquo;на работу будет принят человек, у которого в левом кармане лежит десятицентовая монета&amp;rdquo; (А). Теперь пусть окажется, что на самом деле Джона примут на работу, и что у него тоже лежит десятицентовая монета в левом кармане (о чём он не знал).&lt;br>
Все три условия выполняются: утверждение (А) истинно, Джон убеждён в нём и у него были на это основания (личный опыт лазанья по карманам и разговор с владельцем компании), однако теперь уже куда сложнее уверенно сказать, что Джон знал (А).&lt;/p>
&lt;p>Проведённые позднее эксперименты с аналогичными утверждениями показали, что на Востоке чаще считают, что Джон знал (А), а на Западе - чаще отрицают это. (Weinberg J., Nichols S., Stich S. Normativity and Epistemic Intuitions // Philosophical Topics. 2001. Vol. 29. No. 1, 2.)&lt;/p>
&lt;p>Изначально узнал об этом из книги &amp;ldquo;Убили бы вы толстяка&amp;rdquo;, но биологический момент про содержащийся в сыре дофамин (а не триптофан, как на самом деле) меня немного разочаровал. Книгу не советую, но про что-то лучшее (на русском языке) об этике/экспериментальной философии не слышал пока.&lt;/p>
&lt;p>Это мой старый, слегка видоизменённый пост из ВК.&lt;/p></content></item><item><title>Проблема с загрузкой css-stylesheet на хостинге github pages</title><link>https://tookser.github.io/posts/css/</link><pubDate>Tue, 16 Nov 2021 22:24:00 +0300</pubDate><guid>https://tookser.github.io/posts/css/</guid><description>Заметил, что на моём сайте не работают стили, хотя они есть, и показалось, что они хотят грузиться через http, хотя у меня https на сайте. Посмотрел - похоже, так и есть, и изменил в hugo схему в адресе сайта на https. Посмотрим, что получится. UPD: да, всё работает корректно. Включения по http в https-странице блокируются современными браузерами.</description><content>&lt;p>Заметил, что на моём сайте не работают стили, хотя они есть, и &lt;em>показалось&lt;/em>, что они хотят грузиться через http, хотя у меня https на сайте. Посмотрел - похоже, так и есть, и изменил в hugo схему в адресе сайта на https. Посмотрим, что получится. UPD: да, всё работает корректно. Включения по http в https-странице блокируются современными браузерами.&lt;/p></content></item><item><title>Интересные вещи и где они обитают</title><link>https://tookser.github.io/posts/interesting_things/</link><pubDate>Tue, 16 Nov 2021 05:38:12 +0300</pubDate><guid>https://tookser.github.io/posts/interesting_things/</guid><description>Немного интересного. Во-первых, конечно, язык Python. Мы любим его не за скорость (хотя при некоторых условиях он и по этому параметру хорош). Как минимум - это хороший язык для начинающих, кроме того, на нём приятно писать небольшие проекты для себя. Его синтаксис иногда меня восхищает, в том числе своей похожестью на математическую нотацию. Язык Python можно ускорять разными способами.
Алгоритм большинства голосов Бойера-Мура позволяет быстро (за один проход по массиву), без траты памяти найти, какой элемент в массиве встречается чаще всего.</description><content>&lt;p>Немного интересного. Во-первых, конечно, язык &lt;a href="http://www.python.org">Python&lt;/a>. Мы любим его не за скорость (хотя при некоторых условиях он и по этому параметру хорош). Как минимум - это хороший язык для начинающих, кроме того, на нём приятно писать небольшие проекты для себя. Его синтаксис иногда меня восхищает, в том числе своей похожестью на математическую нотацию. Язык Python можно &lt;a href="https://www.pypy.org/">ускорять&lt;/a> &lt;a href="https://cython.org/">разными&lt;/a> &lt;a href="https://numba.pydata.org/">способами&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B8%D0%BD%D1%81%D1%82%D0%B2%D0%B0_%D0%B3%D0%BE%D0%BB%D0%BE%D1%81%D0%BE%D0%B2_%D0%91%D0%BE%D0%B9%D0%B5%D1%80%D0%B0_%E2%80%94_%D0%9C%D1%83%D1%80%D0%B0">Алгоритм большинства голосов Бойера-Мура&lt;/a> позволяет быстро (за один проход по массиву), без траты памяти найти, какой элемент в массиве встречается чаще всего. Требуется, правда, чтобы он составлял простое большинство (допустим, при размере массива в 10 элементов он должен встречаться как минимум 6 раз).&lt;/p>
&lt;p>Наверное, все уже знаю про &lt;a href="https://rudalle.ru/">ruDALL-E&lt;/a> - штуку, позволяющую генерировать по текстовому запросу изображения. Есть и менее известные штуки из области ML. Так, мне кажется достаточно хорошим направлением развития few-show recommendations services. Т.е. рекомендационные сервисы, но позволяющие почти не раскрывать о себе информации сервису, кроме &amp;ldquo;мне нравится этот фильм, и этот, и этот жанр, а этот не нравится&amp;rdquo;. Из такого был хороший movix.ai, но он ушёл в оффлайн. Нашёл нечто подобное, уже не только для фильмов - &lt;a href="https://tastedive.com/games/like/To-The-Moon">tastedive&lt;/a> (по ссылке - рекомендации похожего на одну из моих любимых игр, &lt;strong>To The Moon&lt;/strong>).&lt;/p>
&lt;p>Ещё есть простенькая &lt;a href="https://www.music-map.com/">сеть музыки&lt;/a>, позволяющая побродить по близким группам. Там много всяких штук на проекте &lt;a href="https://www.gnod.com/">GNOD&lt;/a>, включая рекомендовалку музыки по трём любимым группам. Какой-нибудь &lt;a href="https://ru.wikipedia.org/wiki/%D0%9B%D0%B0%D0%BD%D1%8C%D0%B5,_%D0%94%D0%B6%D0%B0%D1%80%D0%BE%D0%BD">Ланье&lt;/a> мог бы сказать, что подобная примитивность системы (по сравнению с монструозной рекомендательной штукой вроде livelib-а) наоборот действует освобождающе на человека :)&lt;/p></content></item><item><title>Приветствие</title><link>https://tookser.github.io/posts/my-first-post/</link><pubDate>Tue, 16 Nov 2021 05:22:47 +0300</pubDate><guid>https://tookser.github.io/posts/my-first-post/</guid><description>Это мой личный сайт. Здесь написано обо мне и о тех штуках, которые кажутся мне интересными и полезными. Возможно, буду добавлять информацию, уже имею в голове пару тем, которые мне нравятся.</description><content>&lt;p>Это мой личный сайт. Здесь написано обо мне и о тех штуках, которые кажутся мне интересными и полезными. Возможно, буду добавлять информацию, уже имею в голове пару тем, которые мне нравятся.&lt;/p></content></item></channel></rss>