<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>4779 - Блог</title>
    <subtitle>Цифровой сад — блог и вики с графом связей</subtitle>
    <link rel="self" type="application/atom+xml" href="https://4779.ru/p/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://4779.ru/p/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-07-06T00:00:00+00:00</updated>
    <id>https://4779.ru/p/atom.xml</id>
    <entry xml:lang="en">
        <title>Конец выборам агента</title>
        <published>2026-07-06T00:00:00+00:00</published>
        <updated>2026-07-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/end-of-independent-agents/"/>
        <id>https://4779.ru/p/end-of-independent-agents/</id>
        
        <content type="html" xml:base="https://4779.ru/p/end-of-independent-agents/">&lt;p&gt;По-последним моим постам можно сделать вывод что я много занимаюсь разработкой в агенте. Да, это так. Размышлял о том, достаточно ли пи-агента, или попробовать opencode.&lt;&#x2F;p&gt;
&lt;p&gt;Кажется, зря я тратил на это время, потому что вижу что нас ждет другое будущее.&lt;&#x2F;p&gt;
&lt;p&gt;Антропики давно уже начали банить Opencode - который родился как клон их Claude Code. Zai выкатили своего агента &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;zcode.z.ai&#x2F;en&#x2F;docs&#x2F;welcome&quot;&gt;zcode&lt;&#x2F;a&gt;. Про Квен-код тоже, давно уже не новость.&lt;&#x2F;p&gt;
&lt;p&gt;К чему это я? Каждый производитель делает своего агента. И затачивает под него свои модели. Каждый раз, после обновления пи-агента я уже устал наблюдать как чейнджлог состоит из всяких приседаний и ужимок  под адаптацию агента под конкретные модели и конкретных провайдеров.&lt;&#x2F;p&gt;
&lt;p&gt;Тращенков поделился заметкой&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#Trashchenkov&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#better-models-worse-tools&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;, как разработчики пи-агента заметили, что Opus адаптирован под инструмент из Claude Code. Я давно уже заметил аналогичное при работе с квен-модельками. Даже сделал qwen-flavor&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#qwen-flavor&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; для пи-агента.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;Trashchenkov&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;t.me&#x2F;gigatrash&#x2F;227&quot;&gt;t.me&#x2F;gigatrash&#x2F;227&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;better-models-worse-tools&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;2&lt;&#x2F;sup&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;lucumr.pocoo.org&#x2F;2026&#x2F;7&#x2F;4&#x2F;better-models-worse-tools&#x2F;&quot;&gt;lucumr.pocoo.org&#x2F;2026&#x2F;7&#x2F;4&#x2F;better-models-worse-tools&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;qwen-flavor&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;3&lt;&#x2F;sup&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitverse.ru&#x2F;e4779&#x2F;pi-etc&#x2F;content&#x2F;main&#x2F;extensions&#x2F;qwen&quot;&gt;gitverse.ru&#x2F;e4779&#x2F;pi-etc&#x2F;content&#x2F;main&#x2F;extensions&#x2F;qwen&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Нового ничего нет. Старый-добрый Embrace, extend, and exterminate&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#3e-wiki&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;3e-wiki&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;4&lt;&#x2F;sup&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ru.wikipedia.org&#x2F;wiki&#x2F;Embrace,_Extend,_and_Extinguish&quot;&gt;wiki&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;a-chto-delat-nam&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#a-chto-delat-nam&quot; aria-label=&quot;Anchor link for: a-chto-delat-nam&quot;&gt;А что делать нам?&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Скиллы, утилиты и mcp. К счастью, все эти три штуки - уже устаканились как стандарт. Они независимы между агентами.&lt;&#x2F;p&gt;
&lt;p&gt;А всякие модель-агностик агенты типа того же pi, cline и прочих - останутся нишевыми, для каких-то небольших моделек.&lt;&#x2F;p&gt;
&lt;p&gt;К будущему с локал-фёрст я очень скептично отношусь. Ибо вижу и по-себе, что работать с контекстом в 1 миллион и глубоко рассуждающей моделью куда приятнее и проще, нежели адаптировать задачу под компактную модель.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Пи-агента достаточно</title>
        <published>2026-06-23T00:00:00+00:00</published>
        <updated>2026-06-23T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/pi-agent-good-enough/"/>
        <id>https://4779.ru/p/pi-agent-good-enough/</id>
        
        <content type="html" xml:base="https://4779.ru/p/pi-agent-good-enough/">&lt;p&gt;Как-то я обустроив свой быт с пи-агентом, написал скиллов для работы с mcp поверх mcporter&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#skills&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; сижу теперь и думаю - а не охота с него и соскакивать.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;skills&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitverse.ru&#x2F;e4779&#x2F;pi-etc&#x2F;content&#x2F;main&#x2F;skills&#x2F;mcpls&quot;&gt;lsp как mcp&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitverse.ru&#x2F;e4779&#x2F;pi-etc&#x2F;content&#x2F;main&#x2F;skills&#x2F;github&quot;&gt;github&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitverse.ru&#x2F;e4779&#x2F;pi-etc&#x2F;content&#x2F;main&#x2F;skills&#x2F;chrome-devtools&quot;&gt;chrome devtools&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Как-то я погрузился в это всё. Написал, опять же, собственный скилл&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#pisub&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; для субагентов. И теперь думаю - а откатиться на “дефолтный” opencode будет для меня скорее деградацией в удобстве.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;pisub&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;2&lt;&#x2F;sup&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitverse.ru&#x2F;e4779&#x2F;pi-etc&#x2F;content&#x2F;main&#x2F;skills&#x2F;pisub&quot;&gt;pisub&lt;&#x2F;a&gt; не отказывайте себе в удовольствии пошариться по этому репозиторию. Там много и других скиллов. Может быть полезно.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Да и opencode, внезапно, куда менее стабильный. Постоянно разламывается в новых версиях. Смотрю на сообщения в чатах от коллег. Да и у меня он однажды просто перестал запускаться.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Хватит пи-агента</title>
        <published>2026-06-19T00:00:00+00:00</published>
        <updated>2026-06-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/enough-pi-agent/"/>
        <id>https://4779.ru/p/enough-pi-agent/</id>
        
        <content type="html" xml:base="https://4779.ru/p/enough-pi-agent/">&lt;p&gt;Я боюсь сложных вещей. Когда я прочитал что Opencode использует React для рендера TUI в консоли - мне стало страшно. Я не считаю себя минималистом, но к простоте стремлюсь.&lt;&#x2F;p&gt;
&lt;p&gt;И когда я читал - всякие там субагенты, инструменты, mcp - мне казалось страшным и сложным. И подвернулся мне, сначала, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;minimal-agent.com&#x2F;&quot;&gt;minimal-agent&lt;&#x2F;a&gt;. А потом я попробовал &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;pi.dev&quot;&gt;pi-agent&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;tldr;&lt;&#x2F;strong&gt; По-мере накопления опыта работы с пи-агентом, я поставил на него расширения, что превращают его в claudecode&#x2F;opencode. Только более багованный (субагенты, например, постоянно теряли git worktree где находились).&lt;&#x2F;p&gt;
&lt;p&gt;Но есть и позитивный опыт. Адаптируясь постепенно, пробуя разные расширения, экспериментируя - получает опыт и чуть более глубокое понимание работы с агентами.&lt;&#x2F;p&gt;
&lt;p&gt;Осталось понять - а это чуть более глубокое понимание работы надо вообще?&lt;&#x2F;p&gt;
&lt;h2 id=&quot;vsio-ne-tak-i-prosto&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#vsio-ne-tak-i-prosto&quot; aria-label=&quot;Anchor link for: vsio-ne-tak-i-prosto&quot;&gt;Всё не так и просто&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Пи-агент подкупил меня простотой. Продаёт он себя офигенно. Марио, создатель пи-агента пишет про то, что &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mariozechner.at&#x2F;posts&#x2F;2025-11-02-what-if-you-dont-need-mcp&#x2F;&quot;&gt;mcp не нужны&lt;&#x2F;a&gt; - достаточно скриптов с утилитами. Субагенты тоже не нужны - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mariozechner.at&#x2F;posts&#x2F;2025-11-30-pi-coding-agent&#x2F;#toc_18&quot;&gt;используйте tmux + pi&lt;&#x2F;a&gt; (на самом деле, так никто не делает).&lt;&#x2F;p&gt;
&lt;p&gt;Немного попользовавшись в обозначенном Марио ключе, я быстро понял что так жить нельзя таки начал агрессивно расширять агента. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitverse.ru&#x2F;e4779&#x2F;pi-etc&quot;&gt;Писать для него скиллы, скрипты&lt;&#x2F;a&gt;. Адаптировать системный промпт под конкретную модель (&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitverse.ru&#x2F;e4779&#x2F;pi-etc&#x2F;content&#x2F;main&#x2F;extensions&#x2F;qwen&quot;&gt;pi-qwen&lt;&#x2F;a&gt;). Идею про то, что пусть агент сам пишет расширения для себя&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#write-himself&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; я прочёл благодаря тому, что читал блоги авторов пи-агента.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;write-himself&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;Кажется, я прочёл об этой идее &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;lucumr.pocoo.org&#x2F;2026&#x2F;1&#x2F;31&#x2F;pi&#x2F;&quot;&gt;тут&lt;&#x2F;a&gt;. Там ещё mcporter упомянут. Тоже его использую с пи-агентом. Но там блог автора в целом достоин ознакомления.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Однако, с этой расширяемостью есть и другая проблема - я устал. Расширение для субагентов постоянно теряет git worktree. Не знаю почему, но разбираться, если честно, лень.&lt;&#x2F;p&gt;
&lt;p&gt;То что у пи-агента минималистичный tui-рендер - да пофиг. &lt;a href=&quot;&#x2F;p&#x2F;app-pocalypse-now&#x2F;&quot;&gt;Мне не нравится идея TUI в целом&lt;&#x2F;a&gt;. Любители юникс-вея - делайте пайпы из команды и сохраняйте их как скрипты, а не скачите по псевдосимвольным интерфейсам при помощи hjkl и команд. Правда это тоже отстой.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;grep-kotoryi-nedostupen&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#grep-kotoryi-nedostupen&quot; aria-label=&quot;Anchor link for: grep-kotoryi-nedostupen&quot;&gt;grep который недоступен&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Пи-агент поставляется с двумя бинарниками - fd и rg. Удобно. Только они недоступны по-умолчанию. Есть пара инструментов - grep и второй для просмотра директорий (каюсь, забыл как называется, а искать название пока пишу заметку лень), и оба они недоступны для моделей по-умолчанию. Почему? Хз. На реддите кто-то писал, что написал расширение для пи, которое их включает.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;rasshirenie-na-kazhdyi-chikh&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#rasshirenie-na-kazhdyi-chikh&quot; aria-label=&quot;Anchor link for: rasshirenie-na-kazhdyi-chikh&quot;&gt;расширение на каждый чих&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;На удивление, Пи-агент не так уж удобен для расширения. Например, если хочешь как-то условно (по-условию) изменить системный промпт - пиши расширение. Не декларативненько. В итоге ты пишешь расширения, которые взаимодействуют с другими расширениями, делаешь форки других расширений чтобы изменить в них что-то (например, чтобы писались логи субагентов). С одной стороны - это своеобразный pi-way. С другой, по-примеру совета запускать субагентов через tmux (я пробовал, это дичь) видно, что это не продуманный концептуализм и минимализм, а ответ на отъ***сь.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;v-zakliuchenie&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#v-zakliuchenie&quot; aria-label=&quot;Anchor link for: v-zakliuchenie&quot;&gt;В заключение&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Играя с пи-агентом я получил опыт что да как в этом мире агентской разработки. Есть возможность пробовать разные подходы к субагентам, разные расширения для задач. И главное - можно избежать шока сложности и новизны, с которым сегодня сталкиваются многие разработчики впервые запускающие агентов.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Знакомлюсь с Rust. Мысли</title>
        <published>2026-05-12T00:00:00+00:00</published>
        <updated>2026-05-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/rust/"/>
        <id>https://4779.ru/p/rust/</id>
        
        <content type="html" xml:base="https://4779.ru/p/rust/">&lt;p&gt;На выходных решил засесть за &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;book&#x2F;&quot;&gt;The Rust Programming Language&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;pochemu&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#pochemu&quot; aria-label=&quot;Anchor link for: pochemu&quot;&gt;Почему?&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Есть у меня одна мулька - хочу заняться мультиплатформенный геймдевом in hard way. Преимущественно под веб. Что-нибудь минималистичное и компилируемое. Думал в пользу Go + Ebiten. Начал nature of code, выполняя упражнения на tinygo. Но в итоге отказался по-причине жирного рантайма под веб.&lt;&#x2F;p&gt;
&lt;p&gt;Думал и о чистом Си + raylib какой… Но все-таки, чистый Си это тумач для меня. Хотя есть книжка Modern С, есть новый стандарт Си… Но энивей, Си у меня оставил послевкусие старого джаваскрипта, как бы смешно это не звучало.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Нет чего-то похожего на менеджер пакетов. Все изголяются по-своему.&lt;&#x2F;li&gt;
&lt;li&gt;Сборка проектов - отдельный прикол.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;После мира победившего коммунизма (всяких там Го, Руби) понимаешь, что инфраструктура языка важна.&lt;&#x2F;p&gt;
&lt;p&gt;И таким образом (минималистичные бинари, современная инфраструктура около) я решил ознакомиться с Раст.&lt;&#x2F;p&gt;
&lt;p&gt;Не хочу графоманить, скрупулёзно собирая примеры в коде что мне понравилось. Но списочком поделиться хочу.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;match-vyrazhenie&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#match-vyrazhenie&quot; aria-label=&quot;Anchor link for: match-vyrazhenie&quot;&gt;match выражение&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Выглядит красиво обработка ответов через него. Как и if let - который можно использовать для работы с только ожидаемым результатом.
Вообще, мне нравится что в дизайне языка заложено обрабатывать все кейсы. Отсутствие null. Это, конечно, требует от разработчика продумывать все варианты при написании кода, нежели продумывать желаемую цепочку, но код в результате будет вести себя корректнее, чем спагеттина в си&#x2F;джаваскрипт - стиле.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;vozvrat-znacheniia-poslednego-vyrazheniia&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#vozvrat-znacheniia-poslednego-vyrazheniia&quot; aria-label=&quot;Anchor link for: vozvrat-znacheniia-poslednego-vyrazheniia&quot;&gt;Возврат значения последнего выражения&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Когда последняя выражении в блоке, не оканчивающееся на &lt;code&gt;;&lt;&#x2F;code&gt; возвращается из тела. Без всяких return.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Популярные открытые модельки, доступные по api от cloud-ru</title>
        <published>2026-05-10T00:00:00+00:00</published>
        <updated>2026-05-10T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/cloud-ru-models/"/>
        <id>https://4779.ru/p/cloud-ru-models/</id>
        
        <content type="html" xml:base="https://4779.ru/p/cloud-ru-models/">&lt;p&gt;Давно не проверял, а оказывается cloud.ru запустили новый сервис - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;cloud.ru&#x2F;products&#x2F;evolution-foundation-models&quot;&gt;Foundation models&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Простыми словами - это популярные модельки (qwen, qwen-coder, glm, minmax) - запущенные у них в облаке.&lt;&#x2F;p&gt;
&lt;p&gt;Ты просто делаешь токен для доступа к ним и пользуешься по openapi-compatible апи.&lt;&#x2F;p&gt;
&lt;p&gt;Раньше у клауд-ру был сервис для поднятия произвольных моделек - но я не сдюжил с настройкой.&lt;&#x2F;p&gt;
&lt;p&gt;В общем, я пользуюсь сейчас сам, ну и вам советую потыкать.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;models-json-dlia-pi-agenta&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#models-json-dlia-pi-agenta&quot; aria-label=&quot;Anchor link for: models-json-dlia-pi-agenta&quot;&gt;models.json для pi-агента&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Файлик для подключения - &lt;a href=&quot;&#x2F;img&#x2F;cloud-ru-models.json&quot;&gt;models.json&lt;&#x2F;a&gt;. apiKey только свой укажите.&lt;&#x2F;p&gt;
&lt;p&gt;Можно сгенерировать свой аналогичный. Для списка моделей я &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;cloud.ru&#x2F;docs&#x2F;foundation-models&#x2F;ug&#x2F;topics&#x2F;api-ref__specs?source-platform=Evolution&quot;&gt;использовал метод &#x2F;models&lt;&#x2F;a&gt; апи.&lt;&#x2F;p&gt;
&lt;p&gt;Для других агентов плюс-минус аналогичный конфиг должен быть.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;rekomenduemye-model-ki&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#rekomenduemye-model-ki&quot; aria-label=&quot;Anchor link for: rekomenduemye-model-ki&quot;&gt;Рекомендуемые модельки&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Мне на почту пришло ещё письмо, где они уведомляют от отключении &lt;em&gt;устаревших&lt;&#x2F;em&gt; моделек, и предлагают им замены:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Qwen3-235B-A22B → Qwen3.5-397B-A17B&lt;&#x2F;li&gt;
&lt;li&gt;Qwen3-Next-80B-A3B → Qwen3.6-35B-A3B&lt;&#x2F;li&gt;
&lt;li&gt;MiniMax-M2 → MiniMax-M2.5
При этом 12 мая отключим модели GLM-4.6 и Qwen3-Coder-480B. Вместо них рекомендуем перейти на GLM-4.7 и Qwen3-Coder-Next — они уже доступны в сервисе.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Руби или Перл</title>
        <published>2026-04-18T00:00:00+00:00</published>
        <updated>2026-04-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/ruby-perl/"/>
        <id>https://4779.ru/p/ruby-perl/</id>
        
        <content type="html" xml:base="https://4779.ru/p/ruby-perl/">&lt;p&gt;Размышляя о том, какой скриптовый язык лучше пройдет через сито “минималистичности”, я задался вопросом - Руби или Перл?&lt;&#x2F;p&gt;
&lt;p&gt;И мой короткий ответ на это:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Перл это если надо написать сценарий &lt;strong&gt;больше&lt;&#x2F;strong&gt; пяти строк.&lt;&#x2F;li&gt;
&lt;li&gt;Руби это окружение для скриптов уровня энтерпрайз.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;perl&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#perl&quot; aria-label=&quot;Anchor link for: perl&quot;&gt;Perl&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Перл находится в пересечении нескольких множеств:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Идёт, например, в составе OpendBSD.
&lt;ul&gt;
&lt;li&gt;OpenBSD тут как показатель взглядов. Некоторые системные утилиты написаны на Перл&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Лучше подходит для скриптов, нежели оболочка.&lt;&#x2F;li&gt;
&lt;li&gt;Достаточное количество батареек в комплекте&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Тем не менее, Перл в таком ключе именно что интегрирован в &lt;em&gt;системное окружение&lt;&#x2F;em&gt;. Нежели предоставляет своё окружение.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ruby&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#ruby&quot; aria-label=&quot;Anchor link for: ruby&quot;&gt;Ruby&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Руби же, предоставляет &lt;em&gt;собственное окружение&lt;&#x2F;em&gt; для скриптов:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Rake как система сборки проекта. Создания конвейера из задач&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#workflow-by-make&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Rspec для тестов&lt;&#x2F;li&gt;
&lt;li&gt;Единое соглашение для организации гемов (lib, spec - вот это всё)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;В общем, джентльменский набор любого современного проекта. Но из коробки.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;workflow-by-make&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;p&#x2F;unix-utils-for-data-science&#x2F;&quot;&gt;Юникс-утилиты для работы с данными&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Из этого у меня родилось видение:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Если устраивает системное окружение и хочешь в нём написать скрипт - Перл&lt;&#x2F;li&gt;
&lt;li&gt;Если пишешь что-то большое и изолированное - бери Руби&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Разочаровался в идее цифровых садов</title>
        <published>2026-04-08T00:00:00+00:00</published>
        <updated>2026-04-08T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/no-digital-garden/"/>
        <id>https://4779.ru/p/no-digital-garden/</id>
        
        <content type="html" xml:base="https://4779.ru/p/no-digital-garden/">&lt;p&gt;Инсайт пришел ко мне внезапно.&lt;&#x2F;p&gt;
&lt;p&gt;Ютуб мне постоянно (интересно даже, почему) любит рекомендовать ролики по ведению бумажных ежедневников, календарей и &lt;em&gt;конспектированию&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;И листая череду превьющек, я ощутил простую мысль:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;А зачем нужны эти конспекты? Даже красивые&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Скажем, мне бывает интересно поделиться с миром какой-либо находкой. Или размышлением. И пойти дальше. Зачем пытаться их склеить в какую-либо целостную вики?&lt;&#x2F;p&gt;
&lt;p&gt;Да и в личных заметках - я не вижу смысла в этой целостности.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Обычно я просто ищу по-тексту в директории со своими заметками&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Ну и протыкать соседние по-дате заметки.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;big-picture&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#big-picture&quot; aria-label=&quot;Anchor link for: big-picture&quot;&gt;Big picture&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;По-идее, вся эта связность нужна, чтобы получился граф, типа с облачками, где можно &lt;em&gt;увидеть&lt;&#x2F;em&gt; неочевидные связи…&lt;&#x2F;p&gt;
&lt;p&gt;Хрень какая-то.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Вообще, куда важнее это просто регулярное журналирование. Сколько раз я себя корил за то, что не сделал ридмишку или не записал как я что-либо делал в прошлом. Отложил момент записи на чуть позже…&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;meme_how_to_build_you.jpg&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Запустить статический сервер одной строкой</title>
        <published>2026-04-05T00:00:00+00:00</published>
        <updated>2026-04-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/static-server-oneliners/"/>
        <id>https://4779.ru/p/static-server-oneliners/</id>
        
        <content type="html" xml:base="https://4779.ru/p/static-server-oneliners/">&lt;p&gt;Я, как фронтендер, пользуюсь &lt;code&gt;npx http-server&lt;&#x2F;code&gt;. Мне его хватает.&lt;&#x2F;p&gt;
&lt;p&gt;Но нашел github gist &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gist.github.com&#x2F;willurd&#x2F;5720255&quot;&gt;Big list of http static server one-liners&lt;&#x2F;a&gt; где куда больше вариантов. И ещё в комментах обсуждение.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Не в движке счастье</title>
        <published>2026-04-04T00:00:00+00:00</published>
        <updated>2026-04-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/blogging/"/>
        <id>https://4779.ru/p/blogging/</id>
        
        <content type="html" xml:base="https://4779.ru/p/blogging/">&lt;figure&gt;
  &lt;a href=&quot;https:&#x2F;&#x2F;rakhim.org&#x2F;honestly-undefined&#x2F;&quot;&gt;
    &lt;img src=&quot;&#x2F;img&#x2F;blogging_vs_blog_setups.jpg&quot;&gt;
  &lt;&#x2F;a&gt;
&lt;&#x2F;figure&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Самодельный генератор статического сайта на юникс-утилитах</title>
        <published>2026-04-04T00:00:00+00:00</published>
        <updated>2026-04-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/diy-ssg-unix-tools/"/>
        <id>https://4779.ru/p/diy-ssg-unix-tools/</id>
        
        <content type="html" xml:base="https://4779.ru/p/diy-ssg-unix-tools/">&lt;h3 id=&quot;polnotsennye-shell-ssg&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#polnotsennye-shell-ssg&quot; aria-label=&quot;Anchor link for: polnotsennye-shell-ssg&quot;&gt;Полноценные shell-ssg&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mkws.sh&#x2F;docs&quot;&gt;mkws&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;romanzolotarev.com&#x2F;ssg&#x2F;&quot;&gt;ssg.sh&lt;&#x2F;a&gt; от Романа Золотарёва&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;Eolien55&#x2F;mksite&#x2F;src&#x2F;branch&#x2F;main&quot;&gt;mksite&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;прямо как Уриель завещал - rc, mk…&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;nuex&#x2F;zodiac&quot;&gt;zodiac&lt;&#x2F;a&gt; - a static website generator powered by sh and awk.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;make&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#make&quot; aria-label=&quot;Anchor link for: make&quot;&gt;Make&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;her.esy.fun&#x2F;posts&#x2F;0018-makefile-as-static-site-builder-follow-up&#x2F;index.html&quot;&gt;Fast Static Site with make&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;her.esy.fun&#x2F;posts&#x2F;0017-static-blog-builder&#x2F;index.html&quot;&gt;Static Blog Builder&lt;&#x2F;a&gt; - Предвестник статьи&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Отличие Hugo и прочих от ssg</title>
        <published>2026-04-04T00:00:00+00:00</published>
        <updated>2026-04-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/ssg-and-hugo-like/"/>
        <id>https://4779.ru/p/ssg-and-hugo-like/</id>
        
        <content type="html" xml:base="https://4779.ru/p/ssg-and-hugo-like/">&lt;p&gt;И все-таки, зуд продолжался в течении дня. Смотрел я на &lt;a href=&quot;&#x2F;posts&#x2F;2026-04-diy-ssg-unix-tools&quot;&gt;простенькие ssg&lt;&#x2F;a&gt; и понял одну вещь.&lt;&#x2F;p&gt;
&lt;p&gt;Перевести маркдаун в html - проще простого. Но ssg типа Hugo, Jekyll и 11ty - это скорее системы публикации или даже что-то типа cms.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;В них есть таксономия - теги и категории, как в Hugo.&lt;&#x2F;li&gt;
&lt;li&gt;Работа с медиа - пожать картиночки.&lt;&#x2F;li&gt;
&lt;li&gt;Можно создавать страницы не просто из маркдаун-файликов, а из любых данных - типа json.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Всякие там хитрые шаблоны и шорткоды (shortcodes) ещё.&lt;&#x2F;p&gt;
&lt;p&gt;В общем, мысль простая - да, за вечер можно написать скрипт, который переведет маркдаун в html, и даже картинки будет нарезать. Но вот уже с таксономией будет сложнее.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Юникс хостинг</title>
        <published>2026-04-02T00:00:00+00:00</published>
        <updated>2026-04-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/unix-hosting/"/>
        <id>https://4779.ru/p/unix-hosting/</id>
        
        <content type="html" xml:base="https://4779.ru/p/unix-hosting/">&lt;p&gt;Во-первых, как такового термина &lt;code&gt;юникс хостинг&lt;&#x2F;code&gt; - нет. Это придуманное название, которое я встретил в заметке:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;oils.pub&#x2F;blog&#x2F;2025&#x2F;02&#x2F;shared-hosting.html&quot;&gt;Comments on Shared Unix Hosting vs. the Cloud&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;По-сути, это что среднее между классическим shared-хостингом&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#shared&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; и shell-хостингом (типа sdf.org). Типа sdf, но платный.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;shared&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;У нас я встречал термин “Виртуальный хостинг”&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;В наших реалиях, я такое встречал (и даже использовал) у своего хостера - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;adman.com&#x2F;hosting&#x2F;&quot;&gt;adman.com&lt;&#x2F;a&gt;. По-сути, в админке ispmanager можно включить cgi-скрипты. Будут работать шелл (bash, sh) -скрипты, на ощуп нашёл интерпретатор perl и python.&lt;&#x2F;p&gt;
&lt;p&gt;Да, это лишь приближение к тому, что хотелось бы… Но хоть что-то.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Зачем оно вообще надо? В статье исчерпывающе описано удобство промежуточного между vps и “виртуальным” хостингом. Я не хочу заниматься администрированием машины. Мне достаточно:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Пользовательской оболочки&lt;&#x2F;li&gt;
&lt;li&gt;“Виртуального” apache или nginx сервера&lt;&#x2F;li&gt;
&lt;li&gt;Возможности запускать свои скрипты&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Я не хочу с нуля настраивать сервер, добавлять пользователей (одного - себя), обновлять пакеты и прочее и прочее.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Try - управление проектиками</title>
        <published>2026-04-01T00:00:00+00:00</published>
        <updated>2026-04-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/try/"/>
        <id>https://4779.ru/p/try/</id>
        
        <content type="html" xml:base="https://4779.ru/p/try/">&lt;p&gt;Каким-то чудом, я набрёл на утилитку &lt;strong&gt;try - fresh directories for every vibe&lt;&#x2F;strong&gt; &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;tobi&#x2F;try&#x2F;tree&#x2F;main&quot;&gt;(gh)&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Шутка в том, что я ей не пользовался, но мне показались интересными в ней пара вещей:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Отличная демонстрация того, почему именно руби.
&lt;ul&gt;
&lt;li&gt;на макоси он идёт в системе&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Один файл, без зависимостей
&lt;ul&gt;
&lt;li&gt;утилитки и должны быть такими. Кидаешь их в какой-нибудь &lt;code&gt;~&#x2F;bin&lt;&#x2F;code&gt; и оно &lt;em&gt;просто&lt;&#x2F;em&gt; работает&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Ещё там из интересного - есть и AGENTS.md и функционал покрыт тестами. В общем, всё как надо.&lt;&#x2F;p&gt;
&lt;p&gt;И также случайно набрёл на try-rs &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;tassiovirginio&#x2F;try-rs&quot;&gt;(gh)&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;blazingly fast ⚡&lt;&#x2F;li&gt;
&lt;li&gt;rs - не просто так. Написано на rust 🦀&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;В общем, популярная тема. Я же по-старинке пока что, завожу новые папочки в &lt;code&gt;~&#x2F;dev&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Генератор статических сайтов вдохновленный werc</title>
        <published>2026-03-31T00:00:00+00:00</published>
        <updated>2026-03-31T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/werc-like-ssg/"/>
        <id>https://4779.ru/p/werc-like-ssg/</id>
        
        <content type="html" xml:base="https://4779.ru/p/werc-like-ssg/">&lt;p&gt;Слежу за &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;triapul.cz&#x2F;&quot;&gt;triapul.cz&#x2F;&lt;&#x2F;a&gt; и в подсайтах нашел до боли знакомый дизайн:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;werc_like_ssg_nein_homepage.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Is this werc?&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;nein, this is&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;nein is a static website generator written in ksh, inspired by werc. It has no other dependencies. I didn’t actually read werc code, I just plagiarazed how it looks.&lt;&#x2F;p&gt;
&lt;p&gt;– &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nein.triapul.cz&#x2F;nein&#x2F;&quot;&gt;nein.triapul.cz&#x2F;nein&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Находчиво, забавно. Правда, ожидал что там используется оригинальный werc.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Build Awesome (11ty)</title>
        <published>2026-03-10T00:00:00+00:00</published>
        <updated>2026-03-10T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/11ty-fin/"/>
        <id>https://4779.ru/p/11ty-fin/</id>
        
        <content type="html" xml:base="https://4779.ru/p/11ty-fin/">&lt;p&gt;Штош, 11ty ВСЁ.&lt;&#x2F;p&gt;
&lt;p&gt;Оказывается, к 11ty v4 ребята задумали ребрендинг. Но не просто ребрендинг.&lt;&#x2F;p&gt;
&lt;p&gt;Ключевой разработчик 11ty (и его автор, вроде как) &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.zachleat.com&#x2F;&quot;&gt;Zack Leatherman&lt;&#x2F;a&gt; устроился в Font Awesome.&lt;&#x2F;p&gt;
&lt;p&gt;И теперь ребята хотят сделать Build Awesome Pro как продукт, основанный на 11ty, который теперь Build Awesome.&lt;&#x2F;p&gt;
&lt;p&gt;Как-то упустил это всё, пока не увидел пост у Brennan.day - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;brennan.day&#x2F;the-end-of-eleventy&#x2F;&quot;&gt;The End of Eleventy&lt;&#x2F;a&gt; и &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;brennan.day&#x2F;build-awesomes-kickstarter-is-cancelled&#x2F;&quot;&gt;Build Awesome’s Kickstarter is Cancelled&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Там вышло слегка комично. Ребята решили запустить Kickstarter-кампанию. Рассылка не пошла всем кому надо и ребята решили &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.fontawesome.com&#x2F;pausing-kickstarter&#x2F;&quot;&gt;перезапустить&lt;&#x2F;a&gt; эту кампанию.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Вообще, успокаивают что &lt;del&gt;11ty&lt;&#x2F;del&gt; останется свободным и будет развиваться. Бреннан не верит. Ну да и ладно.&lt;&#x2F;p&gt;
&lt;p&gt;Хочу же заметить, что 11ty реально впечатляющий проект, скажем, done right.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Что не так с Go. Цитаты</title>
        <published>2026-02-28T00:00:00+00:00</published>
        <updated>2026-02-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/golant-rant/"/>
        <id>https://4779.ru/p/golant-rant/</id>
        
        <content type="html" xml:base="https://4779.ru/p/golant-rant/">&lt;p&gt;Антон на &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;t.me&#x2F;c&#x2F;2044993910&#x2F;3740&quot;&gt;стримах&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Вот «On bloat»: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;live&#x2F;wOVPTLLkVps?si=4qKlMaalf6dp9HSZ&amp;amp;t=394&quot;&gt;запись стрима на yt&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Вот критика: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;live&#x2F;hRoUoxkhZKw?si=JHbGP--4cVvmjAKd&amp;amp;t=3337&quot;&gt;запись стрима на yt&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Рассказал про доклад On bloat Роба Пайка и коротенько коснулся критики (&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.habets.se&#x2F;2025&#x2F;02&#x2F;Pike-is-wrong-on-bloat.html&quot;&gt;Pike is wrong on bloat&lt;&#x2F;a&gt;). &lt;em&gt;Пайк ис вронг&lt;&#x2F;em&gt; - лайтовенький разговор про зависимости.&lt;&#x2F;p&gt;
&lt;p&gt;Но листая бложик нашел парочку занимательных постов:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.habets.se&#x2F;2013&#x2F;10&#x2F;Why-Go-is-not-my-favourite-language.html&quot;&gt;Why Go is not my favourite language&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Go, на самом деле, имеет механизм исключений. И предупреждения компилятора&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.habets.se&#x2F;2025&#x2F;07&#x2F;Go-is-still-not-good.html&quot;&gt;Go is still not good&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Two types of nil&lt;&#x2F;li&gt;
&lt;li&gt;проблемы с переносимостью&lt;&#x2F;li&gt;
&lt;li&gt;проблемы с работой c не utf-8&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;А потом нашел золото.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;zoloto&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#zoloto&quot; aria-label=&quot;Anchor link for: zoloto&quot;&gt;Золото&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;В самое сырдечко мне попали несколько статей. Я сохранил себе понравившееся фрагменты, но ознакомления достойны обе статьи.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;i-want-off-mr-golang-s-wild-ride&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#i-want-off-mr-golang-s-wild-ride&quot; aria-label=&quot;Anchor link for: i-want-off-mr-golang-s-wild-ride&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;fasterthanli.me&#x2F;articles&#x2F;i-want-off-mr-golangs-wild-ride&quot;&gt;I want off Mr. Golang’s Wild Ride&lt;&#x2F;a&gt;&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Simple is a lie&lt;&#x2F;p&gt;
&lt;p&gt;Most of Go’s APIs (much like NodeJS’s APIs) are designed for Unix-like operating systems…&lt;br&#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;…( Дальше большой фрагмент с примерами, где показывается что на винде многие вещи (от прав доступа к файлам, до парсинга путей) отличаются в поведении. И местами реализация просто отсутствует.&lt;&#x2F;em&gt;
&lt;em&gt;)…&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;“But these are little things!”&lt;&#x2F;p&gt;
&lt;p&gt;They’re all little things. They add up. Quickly.&lt;&#x2F;p&gt;
&lt;p&gt;And they’re symptomatic of the problems with &lt;em&gt;“the Go way”&lt;&#x2F;em&gt; in general. The &lt;strong&gt;Go way is to half-ass things&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;The Go way is to patch things up until they sorta kinda work, in the name of simplicity&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Parting words
Over and over, Go is a victim of its own mantra - “simplicity”.&lt;&#x2F;p&gt;
&lt;p&gt;It constantly takes power away from its users, reserving it for itself.&lt;&#x2F;p&gt;
&lt;p&gt;It constantly lies about how complicated real-world systems are, and optimize for the 90% case, ignoring correctness.&lt;&#x2F;p&gt;
&lt;p&gt;It is a minefield of subtle gotchas that have very real implications - everything looks simple on the surface, but nothing is.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;fake “simplicity” runs deep in the Go ecosystem. Rust has the opposite problem - things look scary at first, but it’s for a good reason. The problems tackled have inherent complexity, and it takes some effort to model them appropriately.&lt;&#x2F;p&gt;
&lt;p&gt;At this point in time, I deeply regret investing in Go.&lt;&#x2F;p&gt;
&lt;p&gt;Go is a Bell Labs fantasy, and not a very good one at that.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;If folks walk away with only one new thought from this, please let it be that: defaults matter. Go lets you whip something up quickly, but making the result “production-ready” is left as an exercise to the writer. Big companies that have adopted it have developed tons of tooling around it, use all available linters, do code generation, check the disassembly, and regularly pay the engineering cost of just using Go at all.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;lies-we-tell-ourselves-to-keep-using-golang&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#lies-we-tell-ourselves-to-keep-using-golang&quot; aria-label=&quot;Anchor link for: lies-we-tell-ourselves-to-keep-using-golang&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;fasterthanli.me&#x2F;articles&#x2F;lies-we-tell-ourselves-to-keep-using-golang&quot;&gt;Lies we tell ourselves to keep using Golang &lt;&#x2F;a&gt;&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Evidently, the Go team didn’t want to design a language. What they really liked was their async runtime&lt;&#x2F;strong&gt;. And they wanted to be able to implement TCP, and HTTP, and TLS, and HTTP&#x2F;2, and DNS, etc., on top of it. And then web services on top of all of that.&lt;&#x2F;p&gt;
&lt;p&gt;And so they didn’t. &lt;strong&gt;They didn’t design a language. It sorta just “happened”&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Because it needed to be familiar to “Googlers, fresh out of school, who probably learned some Java&#x2F;C&#x2F;C++&#x2F;Python” (Rob Pike, Lang NEXT 2014), it borrowed from all of these.&lt;&#x2F;p&gt;
&lt;p&gt;Just like C, it doesn’t concern itself with error handling at all. Everything is a big furry ball of mutable state, and it’s on you to add ifs and elses to VERY CAREFULLY (and very manually) ensure that you do not propagate invalid data.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;…&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;you are living in the Plan 9 cinematic universe.&lt;&#x2F;p&gt;
&lt;p&gt;The Go toolchain does not use the assembly language everyone else knows about. It does not use the linkers everyone else knows about. It does not let you use the debuggers everyone knows about, the memory checkers everyone knows about, or the calling conventions everyone else has agreed to suffer, in the interest of interoperability.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Go is closer to closed-world languages&lt;&#x2F;strong&gt; than it is to C or C++. Even Node.js, Python and Ruby are not as hostile to FFI.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;…&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Making Go play nice with another language (any other language) is really hard…
Calling Go from anything involves shoving the whole Go runtime (GC included) into whatever you’re running: expect a very large static library and all the operational burden of running Go code as a regular executable.&lt;&#x2F;p&gt;
&lt;p&gt;After spending years doing those FFI dances in both directions, I’ve reached the conclusion that the only good boundary with Go is a network boundary.&lt;&#x2F;p&gt;
&lt;p&gt;Integrating with Go is relatively painless if you can afford to pay the latency cost of doing RPC over TCP&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;…&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;All or nothing (so let’s do nothing)&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;(там большой кусок, который я не вижу смысла перепечатывать целиком. А цитировать куски - потеряет наглядность.&lt;&#x2F;em&gt;
&lt;em&gt;Вкратце, там про то, что где-то язык прощает не-инициализированные значения, а где-то нет и требует их. Это непродуманность языка. И требует кучу повсеместных проверок)&lt;&#x2F;em&gt;
…&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Go as a prototyping&#x2F;starter language
Go is an easy language to pick up (because it’s so small, right?)
…
&lt;strong&gt;All the complexity that doesn’t live in the language now lives in your codebase&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Шелл и реактивность</title>
        <published>2026-02-02T00:00:00+00:00</published>
        <updated>2026-02-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/shell-rx/"/>
        <id>https://4779.ru/p/shell-rx/</id>
        
        <content type="html" xml:base="https://4779.ru/p/shell-rx/">&lt;p&gt;Листая публикацию про scsh &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#scsh-paper&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; наткнулся на пару интересных иллюстраций:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;shell-rx&#x2F;tao_of_scheme_and_unix.png&quot; alt=&quot;&quot; &#x2F;&gt;
&lt;em&gt;…&lt;&#x2F;em&gt;
&lt;img src=&quot;&#x2F;img&#x2F;shell-rx&#x2F;scheme_unix_matrix.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Это мне напомнило другую матрицу, объясняющую что такое observables в rxjs:&lt;&#x2F;p&gt;
&lt;figure&gt;
  &lt;img src=&quot;&#x2F;img&#x2F;shell-rx&#x2F;rxjs.png&quot; &#x2F;&gt;
  &lt;figcaption&gt;
    &lt;p&gt;Узнали? Согласны?&lt;&#x2F;p&gt;
  &lt;&#x2F;figcaption&gt;
&lt;&#x2F;figure&gt;
&lt;p&gt;И там (раздел The Tao of Scheme and Unix&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#tao&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;) подаётся интересная мысль и интересная находка для scheme-оболочки:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Большинство попыток встроить системную оболочку в функциональные языки программирования пытаются скрыть разницу между вызовом программы и вызовом объявленной функции. Если пользователь вводит&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;(lpr &quot;notes.txt&quot;)&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;оболочка сначала воспринимает &lt;code&gt;lpr&lt;&#x2F;code&gt; как функцию. Если lpr не найдена среди объявленных функций, оболочка выполняет поиск программы в &lt;code&gt;PATH&lt;&#x2F;code&gt;. Эта прозрачность - &lt;strong&gt;аналогия к вызову функций в традиционных оболочках, таких как ksh&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Это фундаментальная ошибка&lt;&#x2F;strong&gt;…&lt;&#x2F;p&gt;
&lt;p&gt;Эти две вычислительные модели фундаментально разные. Любая попытка их смешать, а не разграничить, приведет к уродливой и неконсистентной семантике.&lt;&#x2F;p&gt;
&lt;p&gt;В мире &lt;em&gt;прилагаемых&lt;&#x2F;em&gt;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#applicate&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; функций, агенты исполняются последовательно, и организованы с помощью функциональной композиции: &lt;code&gt;(g (f x))&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;В мире процессов, агенты исполняются одновременно, и организованы в конвейеры (pipes) потоков данных: &lt;code&gt;f | g&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Есть о чём подумать. И о том, что классические шеллы (ksh, bash и прочие) действительно, смешивают эти вещи для упрощения, так и то, что это, и правда, несочетаемые вещи.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;scsh-paper&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;A Scheme Shell Olin Shivers [Personal Information Architecture Note 3 4&#x2F;1994]&lt;a href=&quot;https:&#x2F;&#x2F;4779.ru&#x2F;p&#x2F;shell-rx&#x2F;.&#x2F;scsh_paper_1994.pdf&quot;&gt;(сохраненная копия)&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;tao&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;2&lt;&#x2F;sup&gt;
&lt;p&gt;признаюсь, меня привлекло tao в оглавлении, решил посмотреть.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;applicate&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;3&lt;&#x2F;sup&gt;
&lt;p&gt;Прикладных? Прикладываемых?&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Юникс-утилиты для работы с данными</title>
        <published>2026-01-15T00:00:00+00:00</published>
        <updated>2026-01-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/unix-utils-for-data-science/"/>
        <id>https://4779.ru/p/unix-utils-for-data-science/</id>
        
        <content type="html" xml:base="https://4779.ru/p/unix-utils-for-data-science/">&lt;p&gt;Снова и снова смотря (зачем?) на табличку &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;harmful.cat-v.org&#x2F;software&#x2F;&quot;&gt;harmful&#x2F;less-harmful&lt;&#x2F;a&gt;, вижу в ней&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;|-----------|--------|
| Perl, Ruby|rc, awk |
|-----------|--------|
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;В целом, окружение юникс имеет достаточно инструментов для работы с данными. Больше того, оно для того и создавалось. AWK на вход ожидает tab-separated строки (ну, типа таблички).&lt;&#x2F;p&gt;
&lt;p&gt;У меня на этот счёт скопилась парочка ссылок. Может кому-нибудь, когда-нибудь…&lt;br &#x2F;&gt;&lt;em&gt;(мне просто жаль их просто так терять, и хочется поделиться ими с миром)&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;using-unix-commands-for-data-science&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#using-unix-commands-for-data-science&quot; aria-label=&quot;Anchor link for: using-unix-commands-for-data-science&quot;&gt;Using Unix Commands for Data Science&lt;&#x2F;a&gt;&lt;&#x2F;h4&gt;
&lt;p&gt;https:&#x2F;&#x2F;matheusrabetti.github.io&#x2F;data%20analysis&#x2F;command-line-datascience&#x2F;&lt;&#x2F;p&gt;
&lt;p&gt;Базово-вводная. От простого к сложному.&lt;&#x2F;p&gt;
&lt;p&gt;И тут есть ссылка на следующую статью. Обозначена она как&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Command line tools vs Hadoop&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h4 id=&quot;command-line-tools-can-be-235x-faster-than-your-hadoop-cluster&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#command-line-tools-can-be-235x-faster-than-your-hadoop-cluster&quot; aria-label=&quot;Anchor link for: command-line-tools-can-be-235x-faster-than-your-hadoop-cluster&quot;&gt;Command-line Tools can be 235x Faster than your Hadoop Cluster&lt;&#x2F;a&gt;&lt;&#x2F;h4&gt;
&lt;p&gt;https:&#x2F;&#x2F;adamdrake.com&#x2F;command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html
На эту статью ссылается и suckless.org. Они её обозначили как&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Use of command-line tools for effective data processing
– &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;suckless.org&#x2F;philosophy&#x2F;&quot;&gt;Philosophy, Related links&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Солидно. Это что-то, да значит.&lt;&#x2F;p&gt;
&lt;p&gt;Листал, классно посмотреть на конвейеры. Глубоко не вникал.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;why-use-make&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#why-use-make&quot; aria-label=&quot;Anchor link for: why-use-make&quot;&gt;Why Use Make&lt;&#x2F;a&gt;&lt;&#x2F;h4&gt;
&lt;p&gt;https:&#x2F;&#x2F;bost.ocks.org&#x2F;mike&#x2F;make&#x2F;&lt;&#x2F;p&gt;
&lt;p&gt;Встретил её в замечательном &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.oilshell.org&#x2F;blog&#x2F;2019&#x2F;01&#x2F;18.html#slogans-to-explain-the-project:~:text=If%20shell,Make&quot;&gt;блоге про osh&#x2F;ysh&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h5 id=&quot;deistvitel-no-zachem&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#deistvitel-no-zachem&quot; aria-label=&quot;Anchor link for: deistvitel-no-zachem&quot;&gt;Действительно, зачем?&lt;&#x2F;a&gt;&lt;&#x2F;h5&gt;
&lt;p&gt;&lt;strong&gt;tldr;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Makefiles are machine-readable documentation that make your workflow reproducible.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Обработка данных - процесс нелинейный. Скачать файл тут, другой там. Распаковать и совершить преобразования.&lt;&#x2F;p&gt;
&lt;p&gt;Можно, конечно, написать скрипт, но зачем, когда есть готовый инструмент, который 50 лет под рукой и позволяет описать и повторять декларативно это всё как зависимости.&lt;&#x2F;p&gt;
&lt;p&gt;Синтаксис сложный, но для базового использования не обязательно знать его глубоко.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Ещё один сайт, вдохновлённый Эдом Тафти</title>
        <published>2026-01-10T00:00:00+00:00</published>
        <updated>2026-01-10T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/tufte-inspired/"/>
        <id>https://4779.ru/p/tufte-inspired/</id>
        
        <content type="html" xml:base="https://4779.ru/p/tufte-inspired/">&lt;p&gt;Наткнулся на ссылочку - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;henry.codes&#x2F;writing&#x2F;a-website-to-destroy-all-websites&#x2F;&quot;&gt;A website to destroy all websites&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Узнаю знакомый стиль. Но классно доработан.&lt;&#x2F;p&gt;
&lt;p&gt;Про Тафти я собирал &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;til.41q.ru&#x2F;notes&#x2F;ed_tufte&#x2F;&quot;&gt;страницу&lt;&#x2F;a&gt; (в архиве).&lt;&#x2F;p&gt;
&lt;p&gt;Вообще, страница классно свёрстана. Да и &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;henry.codes&quot;&gt;сайт&lt;&#x2F;a&gt; в целом.&lt;&#x2F;p&gt;
&lt;p&gt;Для вдохновения.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Кнут, посрамлённый шестистрочником</title>
        <published>2026-01-04T00:00:00+00:00</published>
        <updated>2026-01-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/knuth-mcllroy/"/>
        <id>https://4779.ru/p/knuth-mcllroy/</id>
        
        <content type="html" xml:base="https://4779.ru/p/knuth-mcllroy/">&lt;p&gt;Не первый раз встречаю эту историю. Её преподносят как идею о превосходстве философии Юникс, где заносчивые снобы оказываются посрамлены находчивыми инженерами со скотчем.&lt;&#x2F;p&gt;
&lt;p&gt;На мой взгляд, эта история впечатляет по-другой причине.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;kratkoe-izlozhenie&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#kratkoe-izlozhenie&quot; aria-label=&quot;Anchor link for: kratkoe-izlozhenie&quot;&gt;Краткое изложение&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;img&#x2F;programming_pearls_knuth_mcllroy.pdf&quot;&gt;Оринал (pdf)&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;В июне 1986-го выходит статья про литературное программирование. В ней, автора методологии, Дональда Кнута просят продемонстрировать подход и решить тривиальную задачу:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Написать программу, которая принимает текстовый файл и целое число &lt;em&gt;k&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Программа должна вывести список из &lt;em&gt;k&lt;&#x2F;em&gt; наиболее часто встречающих слов, в порядке убывания.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Дональд демонстрирует своё решение. Он использует собственную систему литературного программирования WEB. Он демонстрирует всё, от парсинга числа, до  разбора строк по-словам, приведение к единому регистру (нижнему) и функцию вывода результата.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Решение занимает семь(!) страниц печатного текста!&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Маккилрой, которого попросили отрецензировать Кнута, обсуждает недостатки системы WEB, слабые алгоритмические места (например, привязку к латинскому алфавиту) и предлагает пойти дальше и дополнять человекочитаемый код ещё и наглядной диаграммой.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;А потом предлагает заменить семь страниц шестью строчками&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;1  tr -cs A-Za-z &amp;#39;
&amp;#39; |
2  tr A-Z a-z |
3  sort |
4  uniq -c |
5  sort -rn |
6  sed ${1}q
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;И рядом также шесть небольших строчек с объяснением каждой команды.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;overreacting_meme_yt_rap.webp&quot; alt=&quot;&quot; &#x2F;&gt;{: .fullwidth}&lt;&#x2F;p&gt;
&lt;p&gt;И после такого, уже как-то пофиг, что Кнут написал свой пример совсем с другой задачей - продемонстрировать литературное программирование. Рецензия Маккилроя получилась вещью в себе с очень наглядной разницей в подходах.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;knut-i-makkilroi-stukaiutsia-iaichkami&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#knut-i-makkilroi-stukaiutsia-iaichkami&quot; aria-label=&quot;Anchor link for: knut-i-makkilroi-stukaiutsia-iaichkami&quot;&gt;Кнут и Маккилрой стукаются яичками&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Из этой заметки делают далеко идущие выводы. Например:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;https:&#x2F;&#x2F;mattrickard.com&#x2F;instinct-and-culture&lt;&#x2F;li&gt;
&lt;li&gt;https:&#x2F;&#x2F;leancrew.com&#x2F;all-this&#x2F;2011&#x2F;12&#x2F;more-shell-less-egg&#x2F;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Тут и философия Юникс (которая имхо, сформировалась сильно опосле смерти самого Юникса), и сильные аналогии (яйцо Фаберже Кнута против стальных яиц Маккилроя).&lt;&#x2F;p&gt;
&lt;p&gt;На мой взгляд, пример Маккилроя это отличный пример того, когда меньше это больше (less is more).&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Короткие наглядные команды лучше подробных многословных инструкций.&lt;&#x2F;p&gt;
&lt;p&gt;Короткое и наглядное - самоочевидное.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;А самоочевидное не требует никаких сложных систем.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Korn shell - posix и светлое будущее, которое не случилось</title>
        <published>2026-01-01T00:00:00+00:00</published>
        <updated>2026-01-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/ksh/"/>
        <id>https://4779.ru/p/ksh/</id>
        
        <content type="html" xml:base="https://4779.ru/p/ksh/">&lt;p&gt;Я не вникал в это раннее, просто по-близости упоминаний считал что Bourne shell и есть тот самый posix.&lt;&#x2F;p&gt;
&lt;p&gt;Оказывается, нет. Точнее, не совсем.&lt;&#x2F;p&gt;
&lt;p&gt;Я со своей фиксацией на Bourne-shell не заметил слона в комнате - Korn shell. А зря. Именно он задал направление развития остальным (bash, z shell), сам став основой для стандарта.&lt;&#x2F;p&gt;
&lt;p&gt;А потом его вообще попытались довести до полноценного высокоуровневого языка.&lt;&#x2F;p&gt;
&lt;p&gt;Погубила его жадность AT&amp;amp;T. 2 тыщи долларов за лицензию.&lt;&#x2F;p&gt;
&lt;p&gt;Я нашел несколько публикаций, достойных ознакомления:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Ksh - An Extensible High Level Language. David G. Korn&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#korn-paper&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; &lt;a href=&quot;&#x2F;ksh_-_An_Extensible_High_Level_Language_--_David_Korn.pdf&quot;&gt;pdf&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;AT&amp;amp;T charged $2,000&#x2F;site for the Korn shell &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.gabornyeki.com&#x2F;2025-12-usenet&#x2F;#at-t-charged-2-000-site-for-the-korn-shell&quot;&gt;(ссылка)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;korn-paper&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;я так понимаю, что эта публикация была подготовлена для &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.usenix.org&#x2F;conference&#x2F;usenix-1994-very-high-level-languages-symposium&#x2F;ksh-extensible-high-level-language&quot;&gt;конференции проходившей в октябре 1994-го года&lt;&#x2F;a&gt;. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.usenix.org&#x2F;legacy&#x2F;publications&#x2F;library&#x2F;proceedings&#x2F;vhll&#x2F;korn.ksh.html&quot;&gt;текст&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Дальше, краткая выжимка из них.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;obolochki-byli-neudobny&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#obolochki-byli-neudobny&quot; aria-label=&quot;Anchor link for: obolochki-byli-neudobny&quot;&gt;Оболочки были неудобны&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;В 80-х оболочкой по-умолчанию был Thompson shell. Ему на смену пришла оболочка Боурна (Bourne shell) в Юникс V7. В неё добавили управляющие инструкции (if, switch, for), но она все ещё была неудобна для интерактивного использования. В ней отсутствовали привычные нам:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;редактирование строк (readline)&lt;&#x2F;li&gt;
&lt;li&gt;автодополнение для команд и имён файлов по tab (tab completion)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;~&lt;&#x2F;code&gt; для ссылки на домашнюю директорию&lt;&#x2F;li&gt;
&lt;li&gt;псевдонимы для команд (aliases)&lt;&#x2F;li&gt;
&lt;li&gt;история команд&lt;&#x2F;li&gt;
&lt;li&gt;управление процессами&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Чтобы проникнуться атмосферой тех времен - можно попробовать dash.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;korn-shell&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#korn-shell&quot; aria-label=&quot;Anchor link for: korn-shell&quot;&gt;Korn shell&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Внутри AT&amp;amp;T Дэвид Корн (David Korn) доработал оболочку Боурна и получился ksh - Korn Shell. Коллеги переходили на него и он стал де-факто стандартом внутри компании.&lt;&#x2F;p&gt;
&lt;p&gt;Однако, он не был свободным. AT&amp;amp;T предлагали оформить на него лицензию - за 2000 долларов (в нынешних долларах, с учётом инфляции, все 6000). Это было очень дорого хоть для частных лиц, хоть для организаций.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;Bash&lt;&#x2F;code&gt; (1989) и &lt;code&gt;pdksh&lt;&#x2F;code&gt; (1989) появились как свободные реализации, &lt;em&gt;похожие&lt;&#x2F;em&gt; на ksh, но не полностью совместимые с ним.&lt;&#x2F;p&gt;
&lt;p&gt;Стандартизация произойдет лишь в 1992-м. Появится стандарт того самого Posix shell - POSIX.2 (IEEE POSIX 1003.2 и ISO&#x2F;IEC 9945-2). По-сути, он будет похож на ksh 88-го года (ksh88).&lt;&#x2F;p&gt;
&lt;p&gt;Работа над ksh была продолжена.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;ksh93&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#ksh93&quot; aria-label=&quot;Anchor link for: ksh93&quot;&gt;ksh93&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;C оглядкой на awk, perl, tcl появился ksh93. Заявленная цель - довести язык оболочки до полноценного высокоуровневого языка.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Встроенная работа с арифметикой (раньше использовалась утилита &lt;code&gt;expr&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Ассоциативные массивы&lt;&#x2F;li&gt;
&lt;li&gt;Дополнительные возможности работы со строками
&lt;ul&gt;
&lt;li&gt;расширенные регулярные выражения (Extended regular expression), как в awk, perl, tcl&lt;&#x2F;li&gt;
&lt;li&gt;новые операторы для работы со строками&lt;&#x2F;li&gt;
&lt;li&gt;операторы можно применять к элементам массива, ассоциативного массива&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;вложенные пространства имён
&lt;ul&gt;
&lt;li&gt;теперь переменная это больше чем просто ячейка для хранения значения. Можно делать геттеры для переменных&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;и прочее и прочее. Можно расширять список встроенных функций собственными, написанными на Си (надо слинковывать и собирать). Можно встраивать &lt;code&gt;ksh93&lt;&#x2F;code&gt; как язык сценария, как tcl или lua. Можно было разрабатывать графические приложения (на motif-виджетах, wksh)&lt;&#x2F;p&gt;
&lt;p&gt;Круто! Но &lt;code&gt;ksh93&lt;&#x2F;code&gt; оставался не под свободной лицензией. Он будет опубличен лишь в марте 2000 года (&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;kornshell.com&#x2F;doc&#x2F;faq.html&quot;&gt;kornshell faq&lt;&#x2F;a&gt;, q10)! И продолжал разрабатываться до 2012-го.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ksh93-segodnia&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#ksh93-segodnia&quot; aria-label=&quot;Anchor link for: ksh93-segodnia&quot;&gt;ksh93 сегодня&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Сейчас ksh93 развивается сообществом - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ksh93&#x2F;ksh&quot;&gt;ksh93&#x2F;ksh (github)&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Из коробки в Макоси есть последняя выпущенная AT&amp;amp;T версия ksh93&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ which ksh
&#x2F;bin&#x2F;ksh
$ ksh --version
  version         sh (AT&amp;amp;T Research) 93u+ 2012-08-01
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Как появились скрытые файлы</title>
        <published>2025-12-15T00:00:00+00:00</published>
        <updated>2025-12-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/dotfiles/"/>
        <id>https://4779.ru/p/dotfiles/</id>
        
        <content type="html" xml:base="https://4779.ru/p/dotfiles/">&lt;p&gt;Байка уровня &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ya.ru&#x2F;search&#x2F;?text=%D0%B4%D0%B8%D0%B0%D0%BC%D0%B5%D1%82%D1%80+%D1%80%D0%B0%D0%BA%D0%B5%D1%82%D1%8B+%D0%B4%D0%B2%D0%B5+%D0%BB%D0%BE%D1%88%D0%B0%D0%B4%D0%B8%D0%BD%D1%8B%D0%B5+%D0%B7%D0%B0%D0%B4%D0%BD%D0%B8%D1%86%D1%8B&quot;&gt;“почему диаметр ракеты не может быть больше двух лошадинных задниц”&lt;&#x2F;a&gt;, только правдивая. Рассказана одним из отцов Юникса - Робом Пайком. Бережно &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;xahlee.info&#x2F;UnixResource_dir&#x2F;writ&#x2F;unix_origin_of_dot_filename.html&quot;&gt;сохранена&lt;&#x2F;a&gt; Xah Lee.&lt;&#x2F;p&gt;
&lt;p&gt;А вспомнил я про неё, читая блог Дэна Кросса (Dan Cross) с его &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;pub.gajendra.net&#x2F;2012&#x2F;09&#x2F;dotfiles&quot;&gt;пропозалом, хранить дотфайлы в $HOME&#x2F;etc&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Вкратце, когда делали иерархичность файловой системы в первых версиях Юникс, добавили сущности &lt;code&gt;.&lt;&#x2F;code&gt; и &lt;code&gt;..&lt;&#x2F;code&gt; для ссылки на текущий каталог и вышестоящий. Так-то они с нами до сих пор.&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;% cd `mktemp -d` &amp;amp;&amp;amp; ls -a
.	..
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Но при выводе каталога они мешались, и в &lt;code&gt;ls&lt;&#x2F;code&gt; просто добавили скрытие &lt;strong&gt;всех&lt;&#x2F;strong&gt; членов каталога, чьё имя начиналось с точки, вместо того, чтобы исключать &lt;strong&gt;конкретно&lt;&#x2F;strong&gt; &lt;code&gt;.&lt;&#x2F;code&gt; и &lt;code&gt;..&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Вот и всё. Легким движением руки у нас появились &lt;em&gt;скрытые&lt;&#x2F;em&gt; файлы и папки. И вот туда уже все полюбили класть всякие конфиги, бэкапы… И теперь домашний каталог пользователя это помойка с мусором, заметённым под точку.&lt;&#x2F;p&gt;
&lt;p&gt;Роб предлагает пару выводов: дескать, думайте о последствиях небольших хаков и, дескать, в Plan9 это “исправили”. Но очевидно, что традиция уже сложилась и с нами навсегда.&lt;&#x2F;p&gt;
&lt;p&gt;Собственно, возвращаясь к пропозалу - ~&#x2F;etc прикольно, но тот же XDG советует пихать всё в .config. И вот у нас уже &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;xkcd.com&#x2F;927&#x2F;&quot;&gt;15 несовместимых стандартов&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Дотфайлы - файлы или каталоги, которые начинаются с точки и &lt;strong&gt;скрыты по-умолчанию&lt;&#x2F;strong&gt;. Типа &lt;code&gt;.profile&lt;&#x2F;code&gt; или &lt;code&gt;.ssh&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Nature Of Code сделанный на Go</title>
        <published>2025-12-13T00:00:00+00:00</published>
        <updated>2025-12-13T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/go-noc/"/>
        <id>https://4779.ru/p/go-noc/</id>
        
        <content type="html" xml:base="https://4779.ru/p/go-noc/">&lt;p&gt;Пройдя Go Tour захотелось немного закрепить свои навыки с Go. Но делать очередную вебню не хотелось, а хотелось чего-то творческого.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;e41q.github.io&#x2F;go__nature_of_code&#x2F;#complete-exercise-and-examples&quot;&gt;Посмотреть в браузере.&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Листая реддит,  снова наткнулся на обзорную статью про creative coding. И там хороша вся серия - хотя бы картинками.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gorillasun.de&#x2F;blog&#x2F;the-importance-of-sketching-with-code&#x2F;&quot;&gt;The Importance of Sketching with Code&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gorillasun.de&#x2F;blog&#x2F;creative-coding-the-new-era&#x2F;&quot;&gt;Creative Coding: The New Era&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gorillasun.de&#x2F;blog&#x2F;getting-started-with-p5js&#x2F;&quot;&gt;Getting started with P5JS&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;P5js - часть проекта &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;processing.org&#x2F;&quot;&gt;Processing.org&lt;&#x2F;a&gt;. Там про обучение программированию, вот это всё. И в рамках это всего выпущена и “книга” - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;natureofcode.com&#x2F;&quot;&gt;NATURE OF CODE&lt;&#x2F;a&gt;. На сайте она полностью доступна с живыми примерами&#x2F;скетчами.&lt;&#x2F;p&gt;
&lt;p&gt;Взяв её за основу я решил попрактиковаться.&lt;&#x2F;p&gt;
&lt;p&gt;Исходники &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;e41q&#x2F;go__nature_of_code&quot;&gt;на гитхабе&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Я не первый кто решил повыполнять упражнения на Go. Есть пример на &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;philyawj&#x2F;nature-of-code-ebiten&quot;&gt;Go + Ebiten&lt;&#x2F;a&gt; (2д движок на Go). Но мне принципиально хотелось без всяких библиотек, максимально просто. Оттуда я взял пару функций.&lt;&#x2F;p&gt;
&lt;p&gt;Такие штуки, мне кажется, принципиально делать на единственной доступной мультиплатформе - для веба. Ведь как сегодня, в 2к25, поделиться чем-то “живым”, что можно запустить, а не опостылевшей гифкой?&lt;&#x2F;p&gt;
&lt;p&gt;Со мной желание сделать максимально просто эти примеры сыграло злую шутку. Хоть Go собирается под wasm, рантайм жирноват, и получается очень большой .wasm-файл. Разработчики языка не ставят перед собой цели чтобы бинарь был максимально компактным. Но есть &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tinygo.org&#x2F;docs&#x2F;guides&#x2F;webassembly&#x2F;wasm&#x2F;&quot;&gt;tinygo&lt;&#x2F;a&gt; для embed и wasm. Но это сторонний проект, не от разработчиков Go. И там не все возможности языка поддерживаются.&lt;&#x2F;p&gt;
&lt;p&gt;И тут я понял, что такое Go.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;sut-go&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#sut-go&quot; aria-label=&quot;Anchor link for: sut-go&quot;&gt;Суть Go&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Мне кажется, что Go стоит не пересечении нескольких идей.&lt;&#x2F;p&gt;
&lt;p&gt;Первая - это потоки вдохновленные Erlang.&lt;&#x2F;p&gt;
&lt;p&gt;Вторая - это сделать прикладной язык типа Руби, Джаваскрипта или Питона, но чтобы он был скорее вдохновлен Си (не сколько синтаксически, а скорее идейно), нежели Перлом, Схемой (Scheme) или просто отвратительным вкусом (я терпеть не могу Питон).&lt;&#x2F;p&gt;
&lt;p&gt;То есть, не надо воспринимать Гошку как Си со сборкой мусора, а скорее как альтернативу для Питона или Джаваскрипта.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Acme Zsh</title>
        <published>2025-11-23T00:00:00+00:00</published>
        <updated>2025-11-23T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/acme-zsh/"/>
        <id>https://4779.ru/p/acme-zsh/</id>
        
        <content type="html" xml:base="https://4779.ru/p/acme-zsh/">&lt;p&gt;Про странные символы при использовании zshell внутри терминала Win.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;acme-zsh&#x2F;broken_Win.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Написано &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.silvela.org&#x2F;post&#x2F;2021-12-11-acme-tricks&#x2F;#zsh-on-acme&quot;&gt;здесь&lt;&#x2F;a&gt;.
Да, &lt;code&gt;unset zle_bracketed_paste&lt;&#x2F;code&gt; помогает. Но не каждый же раз это вводить.&lt;&#x2F;p&gt;
&lt;p&gt;Хочется сделать как-то красиво. Чтобы, устанавливалось лишь когда zsh внутри Acme.
Ещё, лишний перевод строки бы убрать.&lt;&#x2F;p&gt;
&lt;p&gt;Я в дополнение к &lt;code&gt;~&#x2F;.zprofile&lt;&#x2F;code&gt; создал файл в домашнем каталоге &lt;code&gt;.zshrc&lt;&#x2F;code&gt; - он исполняется в каждом экземпляре оболочки.
Там я сделал проверку - что есть &lt;code&gt;WINID&lt;&#x2F;code&gt; - переменная окружения, которую выставляет Acme процессам в окнах.&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;# чтобы zsh не гадил в Win терминал acme штуками типа ^[[?2004h

if [[ -n $winid ]]; then
    # Отключение ZLE для предотвращения проблем с отображением символов
    setopt no_zle
    # Включаем обработку возвратов каретки
    # setopt promptcr
    setopt nopromptsp
fi
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ну и при запуске acme - &lt;code&gt;acmeshell=zsh&lt;&#x2F;code&gt; не забыть.&lt;&#x2F;p&gt;
&lt;p&gt;Вуаля!
&lt;img src=&quot;&#x2F;img&#x2F;acme-zsh&#x2F;fixed_Win.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Tinygo Wasm</title>
        <published>2025-11-23T00:00:00+00:00</published>
        <updated>2025-11-23T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/tinygo-wasm/"/>
        <id>https://4779.ru/p/tinygo-wasm/</id>
        
        <content type="html" xml:base="https://4779.ru/p/tinygo-wasm/">&lt;p&gt;Несколько заметок, как я заводил сборку go кода под wasm.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ustanovka-tinygo-rukami&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#ustanovka-tinygo-rukami&quot; aria-label=&quot;Anchor link for: ustanovka-tinygo-rukami&quot;&gt;Установка tinygo руками&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Можно поставить через &lt;code&gt;brew&lt;&#x2F;code&gt;, но я не ищу лёгкий путей.&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;cd $(mktemp -d)
curl -L -O https:&#x2F;&#x2F;github.com&#x2F;tinygo-org&#x2F;tinygo&#x2F;releases&#x2F;....tar.gz
tar xf tinygo0.39.0.darwin-arm64.tar.gz
sudo mv tinygo &#x2F;usr&#x2F;local
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Добавить tinygo ручка в path.&lt;&#x2F;p&gt;
&lt;p&gt;~&#x2F;.zprofile&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;...
# --tinygo
export PATH=$PATH:&#x2F;usr&#x2F;local&#x2F;tinygo&#x2F;bin
...
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Однако&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;% GOOS=js GOARCH=wasm tinygo build -o wasm.tinygo.wasm .&#x2F;main.go
error: could not find wasm-opt, set the WASMOPT environment variable to override
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Упс, какой wasm-opt?&lt;&#x2F;p&gt;
&lt;p&gt;;tldr&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;curl -L -O https:&#x2F;&#x2F;github.com&#x2F;WebAssembly&#x2F;binaryen&#x2F;releases&#x2F;download&#x2F;version_125&#x2F;binaryen-version_125-arm64-macos.tar.gz
tar xf binaryen-version_125-arm64-macos.tar.gz
sudo mv binaryen-version_125 &#x2F;usr&#x2F;local&#x2F;binaryen
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ну и PATH поправить:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;...
# --tinygo
export PATH=$PATH:&#x2F;usr&#x2F;local&#x2F;tinygo&#x2F;bin
# -- binarien - нужено для tinygo
export PATH=$PATH:&#x2F;usr&#x2F;local&#x2F;binaryen&#x2F;bin
...
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;wasm-exec-js-vziat-iz-tinygo&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#wasm-exec-js-vziat-iz-tinygo&quot; aria-label=&quot;Anchor link for: wasm-exec-js-vziat-iz-tinygo&quot;&gt;wasm_exec.js - взять из tinygo&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;В примерах wasm-а хоть и &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;tinygo-org&#x2F;tinygo&#x2F;blob&#x2F;release&#x2F;src&#x2F;examples&#x2F;wasm&#x2F;README.md&quot;&gt;указано&lt;&#x2F;a&gt; что wasm_exec.js отличается от обычного, гошного. Но я как-то не сразу понял.&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;cp &#x2F;usr&#x2F;local&#x2F;tinygo&#x2F;targets&#x2F;wasm_exec.js .&#x2F;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>n-t-roff</title>
        <published>2025-11-17T00:00:00+00:00</published>
        <updated>2025-11-17T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/n-t-roff/"/>
        <id>https://4779.ru/p/n-t-roff/</id>
        
        <content type="html" xml:base="https://4779.ru/p/n-t-roff/">&lt;p&gt;Одна из важных вех в истории Юникс - когда в него добавили roff.&lt;&#x2F;p&gt;
&lt;p&gt;Со временем он стал troff - для вёрстки документов на бумаге. Nroff - для вёрстки того, чтобы будет распечатано на обычных текстовых (символьных) принтерах.&lt;&#x2F;p&gt;
&lt;p&gt;Groff - реализация troff от GNU. Самый популярный пакет из семейства.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;aligrudi&#x2F;neatroff&quot;&gt;Neatroff&lt;&#x2F;a&gt; - лёгкий, по-сравнению с groff&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;n-t-roff.github.io&#x2F;heirloom&#x2F;doctools.html&quot;&gt;Heirloom&lt;&#x2F;a&gt; - тоже популярный пакет, с troff.&lt;&#x2F;p&gt;
&lt;p&gt;По-большому счёту, сегодня roff-семейство хоть и используется, но популярность значительно уступает TeX.&lt;&#x2F;p&gt;
&lt;p&gt;Популярно подмножество языка roff для написания руководств - mandoc. Я на полштыка интересовался этой темой. &lt;a href=&quot;&#x2F;til_archive&#x2F;posts&#x2F;man-is-deeper-than-i-thought&#x2F;&quot;&gt;Про man&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;pic&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#pic&quot; aria-label=&quot;Anchor link for: pic&quot;&gt;PIC&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Препроцессор для рисования картинок, диаграмм. Графические элементы и команды для их рисования.&lt;&#x2F;p&gt;
&lt;p&gt;Plan9port имеет &lt;a href=&quot;&#x2F;p9port&#x2F;man1&#x2F;pic.html&quot;&gt;svgpic(1)&lt;&#x2F;a&gt; - превращает pic-команды в svg.&lt;&#x2F;p&gt;
&lt;p&gt;Graphviz &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;graphviz.org&#x2F;docs&#x2F;outputs&#x2F;pic&#x2F;&quot;&gt;умеет выводить&lt;&#x2F;a&gt; свои диаграммы в PIC&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pikchr&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#pikchr&quot; aria-label=&quot;Anchor link for: pikchr&quot;&gt;Pikchr&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;вдохновленный PIC процессор, который возвращает SVG вместо troff-команд.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;pikchr.org&#x2F;home&#x2F;doc&#x2F;trunk&#x2F;homepage.md&quot;&gt;Pikchr документация&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Предполагается использовать вместе с markdown.&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;janert.me&#x2F;guides&#x2F;praise-of-pic&#x2F; - ознакомительная статья.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Апп-покалипсис сегодня. Поляризация крайностей</title>
        <published>2025-11-16T00:00:00+00:00</published>
        <updated>2025-11-16T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/app-pocalypse-now/"/>
        <id>https://4779.ru/p/app-pocalypse-now/</id>
        
        <content type="html" xml:base="https://4779.ru/p/app-pocalypse-now/">&lt;p&gt;В чатике токсов openbsd скинули ссылку на отличный &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.divergent-desktop.org&#x2F;blog&#x2F;2020&#x2F;08&#x2F;10&#x2F;principles-overview&#x2F;#p3&quot;&gt;пост&lt;&#x2F;a&gt; в блоге &lt;a href=&quot;&#x2F;p&#x2F;arcan-terminal-less&#x2F;&quot;&gt;Аркана&lt;&#x2F;a&gt; - про принципы, которыми руководствуются в проекте.&lt;&#x2F;p&gt;
&lt;p&gt;Некоторые из этих принципов, имхо, достойны быть переведены на русский.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Так называемые, ‘смартфоны’ в свою ‘догнать и перегнать j2me-телефоны’ эпоху, сделали правильно несколько вещей. Одной из таких вещей &lt;em&gt;было&lt;&#x2F;em&gt; появление ‘приложений’(app); Простые, маленькие инструменты, решающие одну конкретную задачу. В то же время, эти приложения плохо взаимодействовали друг с другом (отсутствие сочетаемости) и, как следствие, было трудно комбинировать их для создания новой функциональности (отсутствие композиционности). В широком смысле, экосистема выродилась в прослойку, провожающую пользователя до приложения конкретного сервиса, нежели что-либо ещё.&lt;&#x2F;p&gt;
&lt;p&gt;На десктопе, пользовательские интерфейсы встречаются, преимущественно, трех типов. Первый из них - это приложение “в себе”: сложные изолированные окружения, которые лучше всего представить как машину внутри машины (другими словами - виртуальная машина). Например, веб-браузер (Electron). Встреча с ними - неизбежна, кроме как вы не совсем крайний аскет.&lt;&#x2F;p&gt;
&lt;p&gt;Второй тип - на другом полюсе спектра сложности, это относительно простые инструменты текстовой обработки основанные на конвейерах и фильтрах, такие как ‘awk’ и ‘grep’. А также чуть более интерактивные терминальные пользовательские интерфейсы (TUIs) - подмножество интерфейсов командной строки (CLIs). Они весьма ограничены своим наследием, выросшим из последовательных строк (serial lines) и терминалов c символьной графикой.&lt;&#x2F;p&gt;
&lt;p&gt;Последний, третий тип - это бескрайнее пространство между предыдущими двумя, многомиллионные строчки UI-библиотек. Они обладают такой же сложностью, как и виртуальные машины, и не менее устаревшим наследием, чем терминалы.&lt;&#x2F;p&gt;
&lt;p&gt;Нет чёткой границы между этими категориями. Браузер полагается на ui-библиотеки для интеграции с операционной системой, чтобы потом переопределить большую их часть в собственном стиле. Терминальные интерфейсы полагаются на виджеты из, буквально, проклятых&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#cursed-meaning&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; абстракций в поиске убежища от взрыва из прошлого - терминальных протоколов.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;cursed-meaning&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;в оригинале игра слов - curs(es)ed. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Curses_%28programming_library%29#&quot;&gt;Curses&lt;&#x2F;a&gt; – название библиотеки для создания текстовых интерфейсов (TUIs) в Unix-подобных системах. Cursed - проклятый.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Plan9port rc profile файл</title>
        <published>2025-11-09T00:00:00+00:00</published>
        <updated>2025-11-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/plan9port-rc-profile-file/"/>
        <id>https://4779.ru/p/plan9port-rc-profile-file/</id>
        
        <content type="html" xml:base="https://4779.ru/p/plan9port-rc-profile-file/">&lt;p&gt;Во-первых, в этом нет сильно большого смысла.&lt;&#x2F;p&gt;
&lt;p&gt;Мне трудно поверить что кому-то придет в голову реально использовать &lt;code&gt;rc&lt;&#x2F;code&gt; как login-shell.&lt;&#x2F;p&gt;
&lt;p&gt;Но, если что, &lt;code&gt;profile&lt;&#x2F;code&gt; файл для &lt;code&gt;rc&lt;&#x2F;code&gt; по-умолчанию ожидается в &lt;code&gt;$home&#x2F;lib&#x2F;profile&lt;&#x2F;code&gt;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#my-profile&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;my-profile&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;https:&#x2F;&#x2F;github.com&#x2F;e41q&#x2F;p9port-utils&#x2F;blob&#x2F;main&#x2F;lib&#x2F;profile&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Чтобы &lt;code&gt;rc&lt;&#x2F;code&gt; при запуске его прочел, надо вызвать &lt;code&gt;rc&lt;&#x2F;code&gt; командой&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;rc -l
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Там ещё есть про &lt;code&gt;-&lt;&#x2F;code&gt;&lt;em&gt;аргумент&lt;&#x2F;em&gt;, но я этого не понял.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;If &lt;code&gt;−l&lt;&#x2F;code&gt; is given or the first character of argument zero is &lt;code&gt;−&lt;&#x2F;code&gt;, rc reads commands from &lt;code&gt;$home&#x2F;lib&#x2F;profile&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Я смог что-то &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;giga.chat&#x2F;link&#x2F;gcsVOKAwSm&quot;&gt;выпытать&lt;&#x2F;a&gt; из гигачата.&lt;&#x2F;p&gt;
&lt;p&gt;Возможно, это имеет смысл при создании шелл-скриптов, и назвать их со знака минус.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;img&#x2F;p9port_man&#x2F;man1&#x2F;rc.html&quot;&gt;rc(1)&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;zachem-eto-mne&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#zachem-eto-mne&quot; aria-label=&quot;Anchor link for: zachem-eto-mne&quot;&gt;Зачем это мне?&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Хочу внутри Acme, когда использую win + rc, чтобы всякие утилиты типа ps, ls и прочие - были из plan9port.&lt;&#x2F;p&gt;
&lt;p&gt;Для этого, в скрипте запуска acme&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;# To use a given shell (not the user&amp;#39;s default) in win, set the SHELL environment variable
SHELL=9rc
# To use a given shell for button 2 execution, set the acmeshell environment variable
acmeshell=9rc
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;А сам скрипт 9rc:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;#!&#x2F;usr&#x2F;bin&#x2F;env rc

exec rc -l $*
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Несколько экземпляров редактора Acme</title>
        <published>2025-11-05T00:00:00+00:00</published>
        <updated>2025-11-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/several-acme-instances/"/>
        <id>https://4779.ru/p/several-acme-instances/</id>
        
        <content type="html" xml:base="https://4779.ru/p/several-acme-instances/">&lt;p&gt;Иногда бывает удобно разделить активность по нескольким окнам редактора&lt;&#x2F;p&gt;
&lt;p&gt;Нашел пару таких вот скриптов&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;https:&#x2F;&#x2F;github.com&#x2F;prodhe&#x2F;acme-setup&#x2F;commit&#x2F;cc29be58db0eff9a176c82ef158b682f45bf5876&lt;&#x2F;li&gt;
&lt;li&gt;https:&#x2F;&#x2F;github.com&#x2F;tw4452852&#x2F;MyConfig&#x2F;blob&#x2F;0009fa3447638c545e6afa419f739212de896d8e&#x2F;.p9p&#x2F;env&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;code&gt;NAMESPACE&lt;&#x2F;code&gt; - каталог, где будет создан сокет Acme. Чтобы работать с другими p9port приложениями.&lt;&#x2F;p&gt;
&lt;p&gt;Посмотреть его значение по-дефолту &lt;code&gt;9 namespace&lt;&#x2F;code&gt;. О нём - &lt;code&gt;9 man 4 intro&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Я особо не парился и добавил в свой скрипт запуска&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;NAMESPACE=`{mktemp -d}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Каждый Acme в своем неймспейсе запускается. Пока мне это не мешает, хотя, я так понимаю, возможны проблемы с plumber.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;e41q&#x2F;p9port-utils&#x2F;blob&#x2F;main&#x2F;bin&#x2F;a&quot;&gt;Мой скрипт для запуска acme&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Руководство по Acme на русском</title>
        <published>2025-11-02T00:00:00+00:00</published>
        <updated>2025-11-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/p9port-ru-man/"/>
        <id>https://4779.ru/p/p9port-ru-man/</id>
        
        <content type="html" xml:base="https://4779.ru/p/p9port-ru-man/">&lt;p&gt;Хотел сделать для себя заметки по-командам Acme, но подумал что можно перевести и руководство на русский язык.&lt;&#x2F;p&gt;
&lt;p&gt;За полдня перёвел несколько абзацев, а до самих команд так и не добрался, бгг.&lt;&#x2F;p&gt;
&lt;p&gt;Но решил выложить что успел сделать на &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;e41q&#x2F;plan9port-ru&quot;&gt;гитхаб&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Ну и закинул на этот сайт &lt;a href=&quot;&#x2F;img&#x2F;p9port_man&#x2F;man1&#x2F;acme.html&quot;&gt;Acme(1)&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Не знаю, надолго ли меня хватит. Но хотя бы эту страницу перевести в ленивом режиме должен.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Как собирается руководство plan9port</title>
        <published>2025-11-02T00:00:00+00:00</published>
        <updated>2025-11-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/plan9port-man/"/>
        <id>https://4779.ru/p/plan9port-man/</id>
        
        <content type="html" xml:base="https://4779.ru/p/plan9port-man/">&lt;p&gt;Задумал перевести часть руководства для Acme, которое идёт в составе plan9port.&lt;&#x2F;p&gt;
&lt;p&gt;Внутри &lt;code&gt;&#x2F;usr&#x2F;local&#x2F;plan9&#x2F;dist&#x2F;&lt;&#x2F;code&gt; выполнить команду&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;9 mk man
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;– Это пересоберет .html файлы внутри &lt;code&gt;&#x2F;usr&#x2F;local&#x2F;plan9&#x2F;man&#x2F;man1&#x2F;&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Скажем, отредактировал &lt;code&gt;&#x2F;usr&#x2F;local&#x2F;plan9&#x2F;man&#x2F;man1&#x2F;acme.1&lt;&#x2F;code&gt;, выполнил &lt;code&gt;9 mk man&lt;&#x2F;code&gt; и&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;ls -l &#x2F;usr&#x2F;local&#x2F;plan9&#x2F;man&#x2F;man1&#x2F;
...
-rw-r--r--  1 e41q  staff  20621  2 ноя 08:43 acme.1
-rw-r--r--@ 1 e41q  staff  32815  2 ноя 08:43 acme.html
...

Упоминание этой команды нашел в `&#x2F;usr&#x2F;local&#x2F;plan9&#x2F;dist&#x2F;mkfile`.

Там же есть и publish, но я не разбирался с публикацией.
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Зачем нужен Plan9?</title>
        <published>2025-10-30T00:00:00+00:00</published>
        <updated>2025-10-30T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/browsing-about-plan9/"/>
        <id>https://4779.ru/p/browsing-about-plan9/</id>
        
        <content type="html" xml:base="https://4779.ru/p/browsing-about-plan9/">&lt;p&gt;Хорошее видео (хотя на этом канале все видео хорошие) про то, зачем сегодня может быть
нужна plan9.&lt;&#x2F;p&gt;
&lt;figure&gt;
  &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=DbVNGA4FA3Y&quot;&gt;
    &lt;img src=&quot;&#x2F;img&#x2F;adventuresin9_what_do_you_do_with_plan9.png&quot; &#x2F;&gt;
  &lt;&#x2F;a&gt;
&lt;&#x2F;figure&gt;
&lt;p&gt;Мысли, которые извлек из ролика:&lt;&#x2F;p&gt;
&lt;div class=&quot;fullwidth&quot;&gt;&lt;div class=&quot;mxgraph&quot; style=&quot;max-width:100%;border:1px solid transparent&quot; data-mxgraph=&#x27;{&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;resize&quot;:true,&quot;dark-mode&quot;:&quot;auto&quot;,&quot;toolbar&quot;:&quot;zoom layers tags lightbox&quot;,&quot;url&quot;:&quot;&#x2F;img&#x2F;&#x2F;pl9_mindmap.drawio&quot;}&#x27;&gt;&lt;&#x2F;div&gt;&lt;&#x2F;div&gt;
&lt;script defer src=&#x2F;js&#x2F;viewer-static.min.js&gt;&lt;&#x2F;script&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Plan 9, полезные ссылки</title>
        <published>2025-10-29T00:00:00+00:00</published>
        <updated>2025-10-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/plan9-links/"/>
        <id>https://4779.ru/p/plan9-links/</id>
        
        <content type="html" xml:base="https://4779.ru/p/plan9-links/">&lt;p&gt;Хотел собрать себе в текстовый файлик, но подумал - что пусть будут опубличены в блоге.&lt;&#x2F;p&gt;
&lt;p&gt;Ютуб канал со множеством видео по plan9 - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;@adventuresin9&#x2F;videos&quot;&gt;adventuresin9&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Как установить 9front на raspberry pi - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;luksamuk.codes&#x2F;posts&#x2F;plan9-setup-rpi.html&quot;&gt;The Alchemist’s Hideout&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;hugeping про установку plan9 на raspberry pi - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;club.hugeping.ru&#x2F;blog&#x2F;wP1LjBxR7yBoAZTJZRQF#wP1LjBxR7yBoAZTJZRQF&quot;&gt;hugeping.ru&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Создать окружение plan9</title>
        <published>2025-10-29T00:00:00+00:00</published>
        <updated>2025-10-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/plan9port-env/"/>
        <id>https://4779.ru/p/plan9port-env/</id>
        
        <content type="html" xml:base="https://4779.ru/p/plan9port-env/">&lt;p&gt;Чтобы запустить что-то из plan9port используется команда &lt;code&gt;9&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Например, запустить &lt;code&gt;rc&lt;&#x2F;code&gt; и чтобы использовать в нем утилиты из plan9&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;9 rc
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;https:&#x2F;&#x2F;9fans.github.io&#x2F;plan9port&#x2F;man&#x2F;man1&#x2F;9.html&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Критика cat-v. Снова</title>
        <published>2025-10-28T00:00:00+00:00</published>
        <updated>2025-10-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/cat-v-rumble/"/>
        <id>https://4779.ru/p/cat-v-rumble/</id>
        
        <content type="html" xml:base="https://4779.ru/p/cat-v-rumble/">&lt;p&gt;Наткнулся на прямо классный обстоятельный пост &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;appetrosyan.github.io&#x2F;posts&#x2F;rants&#x2F;cat-v-harmful&#x2F;&quot;&gt;A case against “Cat-v considered harmful&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;При прочтении возникали замечания по-тексту. Критика на критику, так сказать.
Но в любом случае, Александр написал отличный пост с ценными размышлениями.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pro-harmful-software-v-tselom&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#pro-harmful-software-v-tselom&quot; aria-label=&quot;Anchor link for: pro-harmful-software-v-tselom&quot;&gt;Про Harmful software в целом&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Это записки мёртвого человека. Буквально.&lt;&#x2F;p&gt;
&lt;p&gt;В целом, мне кажется что его стоит воспринимать не как руководство, а как
повод для раздумий или вдохновения. Собственно, рад почитать размышления других людей об этой штуке.&lt;&#x2F;p&gt;
&lt;p&gt;Поехали.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;json-i-prosto-tekst&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#json-i-prosto-tekst&quot; aria-label=&quot;Anchor link for: json-i-prosto-tekst&quot;&gt;JSON и просто текст&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Из дня сегодняшнего - JSON стал, де-факто, предпочитаемым форматом. Современные веб-приложения работают через него. Кто сегодня помнит SOAP? Помнится, было множество выступлений о том, как хороши бинарные форматы (тот же protobuf). Но как-то не пошло дело.&lt;&#x2F;p&gt;
&lt;p&gt;Приложения хранят данные в json. Наглядный пример: более старый Drawio сохраняет диаграммы в xml-формате, а молодой Excalidraw уже в json.&lt;&#x2F;p&gt;
&lt;p&gt;Под простым текстом - имеется в виду даже не csv, а строки разделенные
табами или пробелами. То, как awk позволяет получать $1, $2 и так далее.&lt;&#x2F;p&gt;
&lt;p&gt;Насчет XML - имхо, из 2025-го (а пост Александра был написан в 2024-м) XML видится
несколько иначе, чем раньше. Я бы сказал - безобиднее.&lt;&#x2F;p&gt;
&lt;p&gt;XML в 90-е и начале нулевых виделся чем-то невероятным. Когда один дочерний элемент мог обращаться к другим произвольным элементам в дереве (через Xpath или как-то так) и менять их аттрибуты.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Надо бы поискать всякие штуки, которые больше не поддерживаются в xml. Помню, что их довольно много&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;shelly&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#shelly&quot; aria-label=&quot;Anchor link for: shelly&quot;&gt;Шеллы&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Про dash я как-то писал.&lt;&#x2F;p&gt;
&lt;p&gt;В целом, идея да, шелл должен быть простым. и Posix.&lt;&#x2F;p&gt;
&lt;p&gt;Насчет того, что он не такой удобный в интерактиве - да, это так. Но тут сложно.
Я бы сказал, что harmful-подход подразумевает вообще то, что интерактивный
шелл - не особо нужен.&lt;br &#x2F;&gt;
Сложные сценарии лучше писать в редакторе. Например, Acme.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;gui-toolkits&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#gui-toolkits&quot; aria-label=&quot;Anchor link for: gui-toolkits&quot;&gt;GUI toolkits&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Да, конечно Tk сегодня выглядит совсем бедно. Но говоря честно, в 2025 и GTK с QT значимо побледнели.&lt;&#x2F;p&gt;
&lt;p&gt;Как бы это дико не звучало, но уступают они никем не любимым, но всеми используемым Electron-приложениям.
Ну и &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;skia.org&quot;&gt;Skia&lt;&#x2F;a&gt;. Хром, продукты Jetbrains и, если память не изменяет, Firefox тоже.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;redaktory&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#redaktory&quot; aria-label=&quot;Anchor link for: redaktory&quot;&gt;Редакторы&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Этот пост написан в Acme :)&lt;&#x2F;p&gt;
&lt;h2 id=&quot;protokoly&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#protokoly&quot; aria-label=&quot;Anchor link for: protokoly&quot;&gt;Протоколы&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Насчёт не использовать http. Как я понял, не любовь к http выросла из &lt;em&gt;неудачи&lt;&#x2F;em&gt; plan9.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;First, the Internet was here to stay; and second, Plan 9 had no hope of keeping up with web browsers.
– &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;fqa.9front.org&#x2F;fqa0.html&quot;&gt;Introduction to Plan 9&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Как я понимаю, Plan 9 предполагал что удаленные ресурсы должны монтироваться к системе пользователя. Как современные FUSE штуки.&lt;&#x2F;p&gt;
&lt;p&gt;Вместо http их и предлагается использовать. 9p вместо WebDAV и SMB.&lt;&#x2F;p&gt;
&lt;p&gt;Собственно, c Acme &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;acme.cat-v.org&quot;&gt;предполагается использовать&lt;&#x2F;a&gt; wikifs, nntpfs, upas&#x2F;fs (я хз что такое это последнее).&lt;&#x2F;p&gt;
&lt;p&gt;Но не выстрелило. А обида к http и вебу осталась.&lt;&#x2F;p&gt;
&lt;p&gt;Ну и ещё можно заметить что http достаточно сложный протокол.&lt;&#x2F;p&gt;
&lt;p&gt;Это сегодня базовый http-сервер встроен в ту же Ноду (Nodejs). А раньше этого не было.
Но и сегодня - настройка всех этих реверс-прокси чтобы обеспечить https - боль в одном месте.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;postscript&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#postscript&quot; aria-label=&quot;Anchor link for: postscript&quot;&gt;Postscript&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Ну тут опять, надо понимать контекст.&lt;&#x2F;p&gt;
&lt;p&gt;Postscript разработали в Bell Labs, и этот язык - наследний troff, системной юниксовой утилиты для вёрстки документов.&lt;&#x2F;p&gt;
&lt;p&gt;Потому и советуют его. Пайк, Керниган и проч - плохого не сделают! :)&lt;&#x2F;p&gt;
&lt;p&gt;Ну и да, я малость копал тему - хз как сегодня по-нормальному пользоваться Постскриптом.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>No Licence</title>
        <published>2025-10-28T00:00:00+00:00</published>
        <updated>2025-10-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/no-licence/"/>
        <id>https://4779.ru/p/no-licence/</id>
        
        <content type="html" xml:base="https://4779.ru/p/no-licence/">&lt;p&gt;Я считал - что если код никак не лицензирован (NO LICENCE) - то это значит что он буквально
ничей. Бери и делай что хочешь.&lt;&#x2F;p&gt;
&lt;p&gt;Оказывается, что ровным счётом наоборот, код без лицензии - ПРИВАТНЫЙ.
Его можно смотреть, но нельзя использовать. Такая вот путаница&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#nolicence-rumble&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;nolicence-rumble&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;https:&#x2F;&#x2F;chrismorgan.info&#x2F;blog&#x2F;unlicense&#x2F;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;blockquote&gt;
&lt;p&gt;Если вы нашли программное обеспечение без лицензии, это обычно означает,
что создатели программы не дали вам разрешения на использование, изменение
или распространение программного продукта.
– &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;choosealicense.com&#x2F;no-permission&#x2F;&quot;&gt;choosealicense.com - no licence&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Рекомендуется лицензировать оригинальный код связавшись с автором.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;chto-delat&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#chto-delat&quot; aria-label=&quot;Anchor link for: chto-delat&quot;&gt;Что делать?&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Если хочешь сделать миру приятное - лицензировать всё🤦.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;pokhodiadie-litsenzii&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#pokhodiadie-litsenzii&quot; aria-label=&quot;Anchor link for: pokhodiadie-litsenzii&quot;&gt;Походядие лицензии&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Чтобы не парился случайно нашеший код - Пермиссивные лицензии.&lt;&#x2F;p&gt;
&lt;p&gt;MIT, 2-clause BSD, ISC.&lt;&#x2F;p&gt;
&lt;p&gt;Дальше пойдет занудство и мои находки 🤓&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2-clause-bsd&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#2-clause-bsd&quot; aria-label=&quot;Anchor link for: 2-clause-bsd&quot;&gt;2-clause BSD&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Она же лицензия FreeBSD.&lt;&#x2F;p&gt;
&lt;p&gt;Вообще, БСД-лицензий четыре: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;opensource.org&#x2F;license&#x2F;bsd-1-clause&quot;&gt;1-условная&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;opensource.org&#x2F;license&#x2F;bsd-2-clause&quot;&gt;2-условная&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;opensource.org&#x2F;license&#x2F;bsd-3-clause&quot;&gt;3-х условная&lt;&#x2F;a&gt; и четырёх.&lt;&#x2F;p&gt;
&lt;p&gt;четырехусловная - самая старая. Сегодня её не используют.&lt;&#x2F;p&gt;
&lt;p&gt;Самая популярная - двухусловная. Отличие от 1-условной в том, что её прикладывают и к бинарникам. Отмeчают её практическое сходство с MIT.&lt;&#x2F;p&gt;
&lt;p&gt;Есть ещё пятая, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;opensource.org&#x2F;license&#x2F;0bsd&quot;&gt;ноль-условная&lt;&#x2F;a&gt;. Но пишут, что это производная от ISC.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;isc&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#isc&quot; aria-label=&quot;Anchor link for: isc&quot;&gt;ISC&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Эквивалентна 2-условной BSD. И MIT.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.openbsd.org&#x2F;policy.html#:~:text=The%20ISC%20copyright%20is%20functionally%20equivalent%20to%20a%20two%2Dterm%20BSD%20copyright%20with%20language%20removed%20that%20is%20made%20unnecessary%20by%20the%20Berne%20convention.%20This%20is%20the%20preferred%20license%20for%20new%20code%20incorporated%20into%20OpenBSD.&quot;&gt;Предпочитаема&lt;&#x2F;a&gt; для нового кода в OpenBSD&lt;&#x2F;p&gt;
&lt;p&gt;Мне понравилась тем, что она короче MIT и BSD.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Ещё один репозиторий с Acme-штуками</title>
        <published>2025-10-23T00:00:00+00:00</published>
        <updated>2025-10-23T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/acme-things-repo/"/>
        <id>https://4779.ru/p/acme-things-repo/</id>
        
        <content type="html" xml:base="https://4779.ru/p/acme-things-repo/">&lt;p&gt;Нашел &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ixtenu&#x2F;acmerc&#x2F;tree&#x2F;master&quot;&gt;репу на гитхабе&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Вообще, нашёл я её &lt;a href=&quot;&#x2F;p&#x2F;cad-mouse-for-acme&#x2F;&quot;&gt;в поиске мыши&lt;&#x2F;a&gt; для этого редактора.&lt;&#x2F;p&gt;
&lt;p&gt;Что тут интересного?&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Ещё один &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ixtenu&#x2F;acmerc&#x2F;blob&#x2F;master&#x2F;bin&#x2F;9a&quot;&gt;скрипт&lt;&#x2F;a&gt; для запуска редактора.
&lt;ul&gt;
&lt;li&gt;Надо как-нибудь разобраться в них всех и сделать свой.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;В тулзах снова упоминание ripgrep (rg) и использование аргумента &lt;code&gt;--vimgrep&lt;&#x2F;code&gt;, который выводит адрес (номер строки и номер символа в строке) для вхождения. Из Акме можно ходить по таким вот локаторам.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Мышка с тремя кнопками</title>
        <published>2025-10-23T00:00:00+00:00</published>
        <updated>2025-10-23T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/cad-mouse-for-acme/"/>
        <id>https://4779.ru/p/cad-mouse-for-acme/</id>
        
        <content type="html" xml:base="https://4779.ru/p/cad-mouse-for-acme/">&lt;p&gt;Задумался о &lt;em&gt;полноценной&lt;&#x2F;em&gt; трёхкнопочной мыши, чтобы попробовать поработать с ней в Acme.&lt;&#x2F;p&gt;
&lt;p&gt;Нашел хороший &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ixtenu&#x2F;acmerc&#x2F;blob&#x2F;master&#x2F;hardware.md&quot;&gt;файлик&lt;&#x2F;a&gt;, где подводится итог по современным (на 2025-й год) мышкам.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;vybor-paika&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#vybor-paika&quot; aria-label=&quot;Anchor link for: vybor-paika&quot;&gt;Выбор Пайка&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Lenovo&#x2F;IBM scrollpoint.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;cad-mouse-acme&#x2F;scrollpoint-in-nature.jpeg&quot; alt=&quot;фотография мышки&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;В продаже уже не найти. Только Б&#x2F;у. Проводная. Скролл-сосочек работает не совсем адекватно.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;cad-myshki&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#cad-myshki&quot; aria-label=&quot;Anchor link for: cad-myshki&quot;&gt;CAD-мышки&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Нашел такой термин - &lt;em&gt;Cad mouse&lt;&#x2F;em&gt;. Под ним можно найти:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.contourdesign.eu&#x2F;product&#x2F;unimouse&quot;&gt;Contour Unimouse&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chipgifts.ru&#x2F;katalog&#x2F;aksesuari&#x2F;contour-unimouse&quot;&gt;Нашел&lt;&#x2F;a&gt; в каком-то интернет-магазине. 20к.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;3dconnexion.com&#x2F;us&#x2F;cadmouse&#x2F;&quot;&gt;3dconnexion cadmouse&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Хочу выделить мышки &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.hao1885.com&#x2F;&quot;&gt;Dongguan Xuanshuo Electronics&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;cad-mouse-acme&#x2F;MiFuny-top-scroll.webp&quot; alt=&quot;&quot; &#x2F;&gt;
&lt;img src=&quot;&#x2F;img&#x2F;cad-mouse-acme&#x2F;mifuny-side-scroll.webp&quot; alt=&quot;&quot; &#x2F;&gt;
&lt;img src=&quot;&#x2F;img&#x2F;cad-mouse-acme&#x2F;myfuny-no-scroll.webp&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Я &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;aliexpress.ru&#x2F;store&#x2F;1102108700&quot;&gt;нашел&lt;&#x2F;a&gt; продавца на алике. Вроде как, официальный.
Но умышленно прилагаю картинки - чтобы можно было по-ним выполнить поиск потом. Уверен, что может поменяться ссылка, имя продавца и бренд, под которым эти мышки продаются.&lt;&#x2F;p&gt;
&lt;p&gt;Заказал себе одну из этих мышек. Попробую ей попользоваться.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Как сделать чтобы hugo всегда делал ссылки на картинки - абсолютными?</title>
        <published>2025-10-23T00:00:00+00:00</published>
        <updated>2025-10-23T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/hugo-img-url-absolute/"/>
        <id>https://4779.ru/p/hugo-img-url-absolute/</id>
        
        <content type="html" xml:base="https://4779.ru/p/hugo-img-url-absolute/">&lt;p&gt;В этом блоге, на главной странице показываются превьюшки постов. Посты могут содержать картинки - Page Resource.
Путь до них указывается относительный, внутри папки поста. Соотвественно, на главной эта ссылка становится битая.&lt;&#x2F;p&gt;
&lt;p&gt;Чтобы это починить - я &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;gohugoio&#x2F;hugo&#x2F;blob&#x2F;master&#x2F;tpl&#x2F;tplimpl&#x2F;embedded&#x2F;templates&#x2F;_markup&#x2F;render-image.html&quot;&gt;взял&lt;&#x2F;a&gt;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#embed-hook&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; рендер-хук по-умолчанию и изменил в нём &lt;code&gt;.RelPermalink&lt;&#x2F;code&gt; на &lt;code&gt;.Permalink&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Помогло.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.paulwalk.net&#x2F;2023&#x2F;rendering-images-with-hugo&#x2F;&quot;&gt;Пост&lt;&#x2F;a&gt; человека, столкнувшегося с такой же проблемой.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;embed-hook&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;Нашел его упоминание &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gohugo.io&#x2F;render-hooks&#x2F;images&#x2F;&quot;&gt;в доке&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Программы для визуальных заметок</title>
        <published>2025-10-20T00:00:00+00:00</published>
        <updated>2025-10-20T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/visual-notetaking-apps/"/>
        <id>https://4779.ru/p/visual-notetaking-apps/</id>
        
        <content type="html" xml:base="https://4779.ru/p/visual-notetaking-apps/">&lt;p&gt;&lt;strong&gt;tldr;&lt;&#x2F;strong&gt; Мой личный фаворит - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.drawio.com&#x2F;&quot;&gt;drawio&lt;&#x2F;a&gt;. Из модных-молодёжных конкурентов - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;excalidraw.com&#x2F;&quot;&gt;Excalidraw&lt;&#x2F;a&gt;, но есть нюанс.&lt;&#x2F;p&gt;
&lt;div class=&quot;fullwidth&quot;&gt;&lt;div class=&quot;mxgraph&quot; style=&quot;max-width:100%;border:1px solid transparent&quot; data-mxgraph=&#x27;{&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;resize&quot;:true,&quot;dark-mode&quot;:&quot;auto&quot;,&quot;toolbar&quot;:&quot;zoom layers tags lightbox&quot;,&quot;url&quot;:&quot;&#x2F;img&#x2F;visual_notes_drawio_advantages.drawio&quot;,&quot;page&quot;:1}&#x27;&gt;&lt;&#x2F;div&gt;&lt;&#x2F;div&gt;
&lt;h2 id=&quot;drawio-i-excalidraw&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#drawio-i-excalidraw&quot; aria-label=&quot;Anchor link for: drawio-i-excalidraw&quot;&gt;Drawio и Excalidraw&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Drawio - это standalone-приложение сделанное в вебе и для веба&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Excalidraw - это веб-сервис для диаграм с &lt;em&gt;_возможностью_&lt;&#x2F;em&gt; встраивания&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;drawio&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#drawio&quot; aria-label=&quot;Anchor link for: drawio&quot;&gt;Drawio&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;У Drawio есть десктоп-приложение. Работает без интернета. Конечно, он доступен и онлайн.&lt;&#x2F;p&gt;
&lt;p&gt;Из коробки есть способы встраивания &lt;code&gt;.drawio&lt;&#x2F;code&gt;-диаграм на веб-страницы.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;excalidraw&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#excalidraw&quot; aria-label=&quot;Anchor link for: excalidraw&quot;&gt;Excalidraw&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Excalidraw, это в первую очередь - веб-сервис для совместной работы. Можно оформить подписочку. Эдакий минималистичный Miro с милым шрифтом и начертанием фигур.&lt;&#x2F;p&gt;
&lt;p&gt;Но для selfhost-утех, есть &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.npmjs.com&#x2F;package&#x2F;@excalidraw&#x2F;excalidraw&quot;&gt;npm-пакет&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Этот npm-пакет упаковали, например, в &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;zsviczian&#x2F;obsidian-excalidraw-plugin&#x2F;&quot;&gt;плагин&lt;&#x2F;a&gt; для Obsidian.&lt;&#x2F;p&gt;
&lt;p&gt;Есть &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.excalidraw.com&#x2F;docs&#x2F;@excalidraw&#x2F;excalidraw&#x2F;integration#browser&quot;&gt;пример&lt;&#x2F;a&gt; подключения его также на веб-страничку. Наверное, можно его докрутить до просмотрщиков как у drawio. Но зачем?&lt;&#x2F;p&gt;
&lt;h2 id=&quot;klassicheskie-desktop-prilozheniia&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#klassicheskie-desktop-prilozheniia&quot; aria-label=&quot;Anchor link for: klassicheskie-desktop-prilozheniia&quot;&gt;Классические десктоп-приложения&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Есть классические приложения - типа xmind.&lt;&#x2F;p&gt;
&lt;div class=&quot;fullwidth&quot;&gt;&lt;div class=&quot;mxgraph&quot; style=&quot;max-width:100%;border:1px solid transparent&quot; data-mxgraph=&#x27;{&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;resize&quot;:true,&quot;dark-mode&quot;:&quot;auto&quot;,&quot;toolbar&quot;:&quot;zoom layers tags lightbox&quot;,&quot;url&quot;:&quot;&#x2F;img&#x2F;visual_notes_drawio_advantages.drawio&quot;,&quot;page&quot;:0}&#x27;&gt;&lt;&#x2F;div&gt;&lt;&#x2F;div&gt;
&lt;p&gt;Freemind, Xmind - это чисто про схемы мыслей (ментальные карты, т.н. mindmap). Drawio отлично умеет их рисовать (там есть встроенные).&lt;&#x2F;p&gt;
&lt;p&gt;Rnote - из современных приложений что мне понравился.&lt;&#x2F;p&gt;
&lt;p&gt;Но всё это десктоп-приложения. И опять же, у их файлов нет просмотрищков для веба. Хотя, пока писал эти строки, понял что не искал :sweat:. Но в самих приложениях видел лишь экспорт в пдф и картинки.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;vne-konkursa-treesheets&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#vne-konkursa-treesheets&quot; aria-label=&quot;Anchor link for: vne-konkursa-treesheets&quot;&gt;Вне конкурса - Treesheets&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;div class=&quot;fullwidth&quot;&gt;&lt;div class=&quot;mxgraph&quot; style=&quot;max-width:100%;border:1px solid transparent&quot; data-mxgraph=&#x27;{&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;resize&quot;:true,&quot;dark-mode&quot;:&quot;auto&quot;,&quot;toolbar&quot;:&quot;zoom layers tags lightbox&quot;,&quot;url&quot;:&quot;&#x2F;img&#x2F;visual_notes_drawio_advantages.drawio&quot;,&quot;page&quot;:3}&#x27;&gt;&lt;&#x2F;div&gt;&lt;&#x2F;div&gt;
Выглядит функционально. Но на маке - какой-то ахтунг по удобству. Есть экспорт в html. Есть  прикольная вложенность.
&lt;p&gt;Посмотреть и попробовать - почему бы и нет. Бесплатно же.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;oblachnye-servisy&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#oblachnye-servisy&quot; aria-label=&quot;Anchor link for: oblachnye-servisy&quot;&gt;Облачные сервисы&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;div class=&quot;fullwidth&quot;&gt;&lt;div class=&quot;mxgraph&quot; style=&quot;max-width:100%;border:1px solid transparent&quot; data-mxgraph=&#x27;{&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;resize&quot;:true,&quot;dark-mode&quot;:&quot;auto&quot;,&quot;toolbar&quot;:&quot;zoom layers tags lightbox&quot;,&quot;url&quot;:&quot;&#x2F;img&#x2F;visual_notes_drawio_advantages.drawio&quot;,&quot;page&quot;:2}&#x27;&gt;&lt;&#x2F;div&gt;&lt;&#x2F;div&gt;
nuff said.
&lt;p&gt;Onenote был в составе какого-то офиса. Можно сохранять тетради в файлы. Даже помню, была приложенька под IOS, которая работала с этими файлами.&lt;&#x2F;p&gt;
&lt;p&gt;Но под маком состояние десктопного Onenote - плачевное. Веб - завязан на Onenote.&lt;&#x2F;p&gt;
&lt;p&gt;Да и зачем оно надо при живом Drawio?&lt;&#x2F;p&gt;
&lt;script defer src=&#x2F;js&#x2F;viewer-static.min.js&gt;&lt;&#x2F;script&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Как я веду заметки</title>
        <published>2025-10-20T00:00:00+00:00</published>
        <updated>2025-10-20T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/visual-notetaking/"/>
        <id>https://4779.ru/p/visual-notetaking/</id>
        
        <content type="html" xml:base="https://4779.ru/p/visual-notetaking/">&lt;figure&gt;
  &lt;img src=&quot;&#x2F;img&#x2F;visual-notetaking&#x2F;sketch-your-mind.png&quot;
  alt=&quot;Живя в 21-м веке, мы ограничиваем себя привычками 15-го века&quot; &#x2F;&gt;
  &lt;figcaption&gt;
  &lt;p&gt;рекламка с сайта sketch-your-mind.com&lt;&#x2F;p&gt;
  &lt;&#x2F;figcaption&gt;
&lt;&#x2F;figure&gt;
&lt;p&gt;Я иногда спрашиваю знакомых и не очень знакомых - как они ведут свои заметки. Какими программами пользуются и как.&lt;&#x2F;p&gt;
&lt;p&gt;У меня получился наглядный пример - как из размышлений “на бумагу” получилась диаграммка.&lt;&#x2F;p&gt;
&lt;p&gt;Хочу рассказать как я веду заметки сам. Надеюсь, будет полезно.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;na-bumage&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#na-bumage&quot; aria-label=&quot;Anchor link for: na-bumage&quot;&gt;На бумаге&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;aside class=&quot;marginnote&quot;&gt;&lt;img src=&quot;&#x2F;img&#x2F;visual-notetaking&#x2F;drafts.jpeg&quot;&gt;&lt;&#x2F;aside&gt;
&lt;p&gt;Люблю писать на альбомном листе. В две колонки. Одна, справа, основная. Вторая колонка ситуативно становится либо продолжением первой или заметками на полях.&lt;&#x2F;p&gt;
&lt;p&gt;Скетчноутинг&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#sketchnotes&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; особо не пробовал. Имхо, это все-таки, больше про презентацию, нежели про заметки.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;sketchnotes&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;Ну это когда используешь больше иллюстраций чем текста. Образные аллегории.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Я нахожу очень органичным &lt;em&gt;блочный&lt;&#x2F;em&gt; стиль написания заметок. Тезисы сами собираются в блоки.&lt;&#x2F;p&gt;
&lt;p&gt;Собственно, пример на фото.&lt;&#x2F;p&gt;
&lt;p&gt;Я эти (Текстá? Кусочки текста?) потом люблю переписать руками в drawio. Например, на фото - &lt;a href=&quot;&#x2F;p&#x2F;no-need-containers&#x2F;&quot;&gt;пост про контейнеры&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Редко их просто фоткаю.&lt;&#x2F;p&gt;
&lt;p&gt;Хотя что-то (пока?) остаётся в бумаге.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;v-tsifre&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#v-tsifre&quot; aria-label=&quot;Anchor link for: v-tsifre&quot;&gt;В цифре&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Я когда-то собирал прямо-таки &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;til.41q.ru&#x2F;stat&#x2F;notetaking_apps_table.drawio.svg&quot;&gt;монстр-табличку&lt;&#x2F;a&gt; всех заметочников что я пробовал.&lt;&#x2F;p&gt;
&lt;p&gt;С тех пор я отошёл к диаграммам и вайтбордам. Мне нравится Drawio.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.drawio.com&#x2F;&quot;&gt;Drawio&lt;&#x2F;a&gt; - знаком многим, но чисто утилитарно - для рисования бездушных схем в стиле globohomo. Многие его знают потому, что он встроен в confluence. Но drawio прекрасно работает отдельно. &lt;strong&gt;Есть офлайн десктоп-приложение&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#drawio-app&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Про Drawio и другие приложения я писал &lt;a href=&quot;&#x2F;p&#x2F;visual-notetaking-apps&#x2F;&quot;&gt;отдельный большой пост&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;drawio-app&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;2&lt;&#x2F;sup&gt;
&lt;p&gt;да, это electron-приложение, но главная его ценность - работа офлайн и с файлами на компьютере&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h3 id=&quot;vaitbording&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#vaitbording&quot; aria-label=&quot;Anchor link for: vaitbording&quot;&gt;Вайтбординг&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#white-board&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Drawio отлично подходит для единоличного вайтбординга. Можно накидать на доску скриншотов, подписать комментариями и провести стрелочки.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;visual-notetaking&#x2F;about-werc.png&quot; alt=&quot;&quot; &#x2F;&gt;
&lt;img src=&quot;&#x2F;img&#x2F;visual-notetaking&#x2F;man-deeper-diagram.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Я писал что &lt;code&gt;.drawio&lt;&#x2F;code&gt;-файлы self-contained. Но не раскрыл почему это важно и это хорошо. Все эти ассеты будут лежать в файлике этой доски. Не будут мешаться в системе.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;white-board&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;3&lt;&#x2F;sup&gt;
&lt;p&gt;рисования на доске?&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h3 id=&quot;v-drawio-est-otlichnyi-funktsional-dlia-maindmap&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#v-drawio-est-otlichnyi-funktsional-dlia-maindmap&quot; aria-label=&quot;Anchor link for: v-drawio-est-otlichnyi-funktsional-dlia-maindmap&quot;&gt;В Drawio есть отличный функционал для майндмап&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#mindmap-name&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;В дополнению к вайтбордингу, Drawio имеет классные &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;drawio-app.com&#x2F;mind-maps&#x2F;&quot;&gt;майндмапы&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Майндмапы в Drawio - это просто совокупность нескольких &lt;em&gt;умных&lt;&#x2F;em&gt; фигур. Но их удобно накидывать, перемещать, скреплять связями.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;visual-notetaking&#x2F;digital-garden-mindmap.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;То есть, это не узкоспециализированный редактор этих мысленных карт&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#mindmap-name&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;, а вайтборд, где можно раскидывать деревья идей.&lt;&#x2F;p&gt;
&lt;p&gt;И всегда можно выделить, докинуть картинку, привести листинг кода и прочее и прочее.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;i-drawio-diagrammkami-ochen-liogko-delit-sia&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#i-drawio-diagrammkami-ochen-liogko-delit-sia&quot; aria-label=&quot;Anchor link for: i-drawio-diagrammkami-ochen-liogko-delit-sia&quot;&gt;И Drawio-диаграммками очень лёгко делиться&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Просто указать просмотрщику drawio-диаграм ссылку на файлик.&lt;&#x2F;p&gt;
&lt;p&gt;Например, в упомянутом выше &lt;a href=&quot;&#x2F;p&#x2F;no-need-containers&#x2F;&quot;&gt;посте про контейнеры&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Или, &lt;a href=&quot;&#x2F;til_archive&#x2F;posts&#x2F;from_tiddlywiki_to_doku&#x2F;&quot;&gt;майндмапа почему я отказался от Tiddlywiki (пост в архиве)&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Конечно, есть экспорт в картинки, svg.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;mindmap-name&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;4&lt;&#x2F;sup&gt;
&lt;p&gt;Ментальная карта? Карта мыслей? Не знаю как лучше.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;knizhki&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#knizhki&quot; aria-label=&quot;Anchor link for: knizhki&quot;&gt;Книжки&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;skraibing-ob-iasniat-prosto&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#skraibing-ob-iasniat-prosto&quot; aria-label=&quot;Anchor link for: skraibing-ob-iasniat-prosto&quot;&gt;Скрайбинг. Объяснять просто&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Насыщенно и много. Но имхо, как и книга ниже - они больше про презентацию нежели про заметки.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;vizual-nye-zametki-maika-roudi&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#vizual-nye-zametki-maika-roudi&quot; aria-label=&quot;Anchor link for: vizual-nye-zametki-maika-roudi&quot;&gt;Визуальные заметки Майка Роуди&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Нашел её упоминание в отзывах на другую книгу (Скрайбинг Кутузовой).&lt;&#x2F;p&gt;
&lt;p&gt;Очень лайтовая книга. МиФ издавал её на русском, но для покупки сейчас недоступна. Пидиэфка есть в сети.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sketchnotearmy.com&#x2F;&quot;&gt;sketchnotearmy.com&lt;&#x2F;a&gt; – сайт автора.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;ssylochki-po-teme&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#ssylochki-po-teme&quot; aria-label=&quot;Anchor link for: ssylochki-po-teme&quot;&gt;Ссылочки по-теме&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sketch-your-mind.com&#x2F;&quot;&gt;sketch-your-mind.com&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Контейнеры не нужны</title>
        <published>2025-10-19T00:00:00+00:00</published>
        <updated>2025-10-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/no-need-containers/"/>
        <id>https://4779.ru/p/no-need-containers/</id>
        
        <content type="html" xml:base="https://4779.ru/p/no-need-containers/">&lt;p&gt;Начал с размышлений про шелл-скрипты и как удобно поставлять зависимости для них из &lt;em&gt;не системных&lt;&#x2F;em&gt;. Подумал, что писать скрипты в контейнере - не такая уж дурная идея.&lt;&#x2F;p&gt;
&lt;p&gt;А закончил размышлениями о веб-разработке и тем, что эти контейнеры и не нужны. (красный прямоугольник внизу слева)&lt;&#x2F;p&gt;
&lt;p&gt;Заголовок не сколько для байта, сколько чтобы мне самому запомнить :)&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Контейнеры в 99% случаев случаев когда что-то разрабываешь - избыточны. Лучшее решение -
компиляция в единственный бинарник.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Конечно, контейнер придет на помощь, если надо обернуть в кучу множество ресурсов, скриптов, каких-то файлов.&lt;&#x2F;p&gt;
&lt;p&gt;Но это имхо, это показатель того, что  в разработке что-то пошло не туда.&lt;&#x2F;p&gt;
&lt;div class=&quot;fullwidth&quot;&gt;&lt;div class=&quot;mxgraph&quot; style=&quot;max-width:100%;border:1px solid transparent&quot; data-mxgraph=&#x27;{&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;resize&quot;:true,&quot;dark-mode&quot;:&quot;auto&quot;,&quot;toolbar&quot;:&quot;zoom layers tags lightbox&quot;,&quot;url&quot;:&quot;&#x2F;img&#x2F;no_need_shell_no_need_containers.drawio&quot;}&#x27;&gt;&lt;&#x2F;div&gt;&lt;&#x2F;div&gt;
&lt;script defer src=&#x2F;js&#x2F;viewer-static.min.js&gt;&lt;&#x2F;script&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Arcan фреймворк на замену терминала</title>
        <published>2025-10-18T00:00:00+00:00</published>
        <updated>2025-10-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/arcan-terminal-less/"/>
        <id>https://4779.ru/p/arcan-terminal-less/</id>
        
        <content type="html" xml:base="https://4779.ru/p/arcan-terminal-less/">&lt;p&gt;Arcan&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#arcan_links&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; это, конечно, какой-то звездолёт. Там и оконный сервер и игровой движок и всё-всё-всё и чего только не.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;arcan_links&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arcan-fe.com&#x2F;&quot;&gt;оф сайт&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;letoram&#x2F;arcan&quot;&gt;github&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Но на нём сделали интересную штуку - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;letoram&#x2F;cat9&quot;&gt;Cat9 (gh)&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Про cat9 на сайте Аркана - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arcan-fe.com&#x2F;2022&#x2F;10&#x2F;15&#x2F;whipping-up-a-new-shell-lashcat9&#x2F;&quot;&gt;Whipping up a new Shell – Lash#Cat9&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;И большая серия постов про отказ от эмуляции терминала (&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arcan-fe.com&#x2F;2025&#x2F;01&#x2F;27&#x2F;sunsetting-cursed-terminal-emulation&#x2F;&quot;&gt;финальный пост&lt;&#x2F;a&gt;)&lt;&#x2F;p&gt;
&lt;p&gt;Надо бы попробовать погонять. Да и в сами посты погрузиться сильнее.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>unicode иконка для rss-потоков</title>
        <published>2025-10-18T00:00:00+00:00</published>
        <updated>2025-10-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/feed-unicode-icon/"/>
        <id>https://4779.ru/p/feed-unicode-icon/</id>
        
        <content type="html" xml:base="https://4779.ru/p/feed-unicode-icon/">&lt;p&gt;Пока верстал сайт задумался, а может есть какая-нибудь унифицированная юникод-иконка для rss?&lt;&#x2F;p&gt;
&lt;p&gt;Оказывается нет, но &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jameshfisher.com&#x2F;2017&#x2F;09&#x2F;28&#x2F;where-is-unicode-feed-icon&#x2F;&quot;&gt;запрос&lt;&#x2F;a&gt; есть давно на это.&lt;&#x2F;p&gt;
&lt;p&gt;Есть &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.unicode.org&#x2F;L2&#x2F;L2022&#x2F;22283-universal-feed-symbol.pdf&quot;&gt;пропозал&lt;&#x2F;a&gt; от октября 2022-го, но я не нашел движений по-нему.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Командная строка как IDE</title>
        <published>2025-10-18T00:00:00+00:00</published>
        <updated>2025-10-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/unix-as-ide/"/>
        <id>https://4779.ru/p/unix-as-ide/</id>
        
        <content type="html" xml:base="https://4779.ru/p/unix-as-ide/">&lt;p&gt;https:&#x2F;&#x2F;blog.sanctum.geek.nz&#x2F;series&#x2F;unix-as-ide&#x2F;&lt;&#x2F;p&gt;
&lt;p&gt;Кто бы мог подумать, что оболочки и системных утилит unix будет достаточно для разработки?&lt;&#x2F;p&gt;
&lt;p&gt;Очень лайтовая серия постов о том, как ходить по директориям, искать по-файлам. Использовать vim и автоматизировать команды через make.&lt;&#x2F;p&gt;
&lt;p&gt;Я не думаю, что это сподвигнет адептов И-Дэ-Ешек на переход в терминал, но для ознакомления - норм.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Harmful Meme</title>
        <published>2025-10-17T00:00:00+00:00</published>
        <updated>2025-10-17T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/harmful-meme/"/>
        <id>https://4779.ru/p/harmful-meme/</id>
        
        <content type="html" xml:base="https://4779.ru/p/harmful-meme/">&lt;figure&gt;
  &lt;img src=&quot;&#x2F;img&#x2F;harmful_meme.jpeg&quot; &#x2F;&gt;
&lt;&#x2F;figure&gt;
&lt;p&gt;Не могу найти, откуда взята табличка (Harmful, Not Harmful) в этот мем. Напоминает табличку с &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;harmful.cat-v.org&#x2F;software&#x2F;&quot;&gt;harmful.cat-v&lt;&#x2F;a&gt;, но это не она.&lt;&#x2F;p&gt;
&lt;p&gt;Напишите на почту, если знаете откуда. Поиск по-картинке не помог&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Как добавить картинку в пост из assets в Hugo</title>
        <published>2025-10-17T00:00:00+00:00</published>
        <updated>2025-10-17T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/hugo-use-image-asset-in-post/"/>
        <id>https://4779.ru/p/hugo-use-image-asset-in-post/</id>
        
        <content type="html" xml:base="https://4779.ru/p/hugo-use-image-asset-in-post/">&lt;p&gt;Захотелось использовать картинку несколько раз внутри постов.&lt;&#x2F;p&gt;
&lt;p&gt;В Hugo есть ассеты страницы (которые лежат в одной директории со страницей), а есть глобальные - которые надо класть в папку assets&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#about_sidenote&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;about_sidenote&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;есть ещё директория static - но всё что там указано - перекладывается в корень при сборке и никак не управлять элементами оттуда.&lt;br&#x2F;&gt;А картинками хочется управлять&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Но извлечь оттуда &lt;em&gt;ассет&lt;&#x2F;em&gt; - не так просто. Его нужно извлечь &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gohugo.io&#x2F;content-management&#x2F;image-processing&#x2F;#global-resource&quot;&gt;с помощью&lt;&#x2F;a&gt; &lt;code&gt;resources.Get&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;resources.Get&lt;&#x2F;code&gt; надо вызвать внутри &lt;code&gt;{{ .. }}&lt;&#x2F;code&gt; - а вызывать шаблонизатор внутри текста поста - нельзя.&lt;&#x2F;p&gt;
&lt;p&gt;Единственные элементы, которые можно вызвать через &lt;code&gt;{{ .. }}&lt;&#x2F;code&gt; - шорткоды (shortcodes).&lt;&#x2F;p&gt;
&lt;p&gt;И надо или написать свой шорткод, или взять готовый… Или использовать встроенный&lt;&#x2F;p&gt;
&lt;h3 id=&quot;vziat-gotovyi&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#vziat-gotovyi&quot; aria-label=&quot;Anchor link for: vziat-gotovyi&quot;&gt;Взять готовый&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;В репозитории документации hugo есть отличный &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;gohugoio&#x2F;hugo&#x2F;blob&#x2F;master&#x2F;docs&#x2F;layouts&#x2F;_shortcodes&#x2F;img.html&quot;&gt;шорткод&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;можно прокинуть привычные аттрибуты для img
&lt;ul&gt;
&lt;li&gt;alt, class&lt;&#x2F;li&gt;
&lt;li&gt;можно изменить ширину и высоту картинки&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Можно просто скопировать этот файл к себе в &lt;code&gt;layouts&#x2F;_shortcodes&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;vstroennyi-shortkod-dlia-dobavleniia-obshchikh-resursov&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#vstroennyi-shortkod-dlia-dobavleniia-obshchikh-resursov&quot; aria-label=&quot;Anchor link for: vstroennyi-shortkod-dlia-dobavleniia-obshchikh-resursov&quot;&gt;Встроенный шорткод для добавления общих ресурсов&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gohugo.io&#x2F;shortcodes&#x2F;figure&#x2F;&quot;&gt;Figure shortcode&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Удивлен, что про него никто не писал. Есть из коробки, позволяет добавить, также, кучу аттрибутов. И ещё картинку в ссылочку обернёт.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Вообще, удивительно, что такую простую штуку, как добавить ассет из глобальных ресурсов так трудно сделать и что она не работает по-дефолту. Хотя, вроде как, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gohugo.io&#x2F;render-hooks&#x2F;images&#x2F;#embedded&quot;&gt;должна&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Не надо сходить с ума с инлайновыми стилями</title>
        <published>2025-10-17T00:00:00+00:00</published>
        <updated>2025-10-17T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/inline-freak-out/"/>
        <id>https://4779.ru/p/inline-freak-out/</id>
        
        <summary type="html">&lt;p&gt;Поиграл, подумал, порисовал диаграммки - решил что пусть стили останутся там где и были - в .css-файле.&lt;&#x2F;p&gt;
&lt;p&gt;Выводов не будет.&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Просто используй инлайн-стили</title>
        <published>2025-10-17T00:00:00+00:00</published>
        <updated>2025-10-17T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/just-use-inline/"/>
        <id>https://4779.ru/p/just-use-inline/</id>
        
        <content type="html" xml:base="https://4779.ru/p/just-use-inline/">&lt;p&gt;&lt;em&gt;Пока верстаю этот сайт пришла мысль&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Предыдущая тема для сайта, til, использовала Tailwind. Tailwind крутой, жаль что нельзя приложить желаемые классы к тэгам, которые генерирует goldmark, и приходится использовать &lt;code&gt;@apply&lt;&#x2F;code&gt; - в файлике стилей.&lt;&#x2F;p&gt;
&lt;p&gt;Однако, почему бы не использовать инлайн-стили?&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div style=&amp;quot;display: flex&amp;quot;&amp;gt;
...
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Из преимуществ - стили всегда рядом. Не будет сюрпризов из того, что стили где-то переиначиваются.&lt;&#x2F;p&gt;
&lt;p&gt;Недостатков несколько:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Если использовать аттрибут &lt;code&gt;style&lt;&#x2F;code&gt; - на изменение dom браузер будет пересчитывать все стили. Это плохо для производительности
&lt;ul&gt;
&lt;li&gt;Но у меня простейший сайт, без изменений dom - пофиг&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;inline-стили будут много раз повторяться.
&lt;ul&gt;
&lt;li&gt;Но у меня легчайшие странички и очень мало стилей. Оверхед незначительнейший по-сравнению с любой взрослой страницей.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Увы, красивых декларативных стилей с псевдоклассами так не сделать. Например:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;
&amp;lt;ul style=&amp;quot;
  list-style: none;
  display: flex;
  padding: 0;
  margin-top: 0.5rem;
&amp;quot;&amp;gt;
{{- range $i, $tag := . }}
  &amp;lt;li style=&amp;quot;
  margin-top: 0;
  margin-left: {{- if eq $i 0 }}0{{- else }}0.5rem{{- end }};&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;{{ .RelPermalink }}&amp;quot;&amp;gt;#{{ .LinkTitle }}&amp;lt;&#x2F;a&amp;gt;&amp;lt;&#x2F;li&amp;gt;
{{- end }}

&amp;lt;&#x2F;ul&amp;gt;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Императивно! Harmless! Я это в &lt;a href=&quot;&#x2F;posts&#x2F;2025-10-harmful-meme&#x2F;&quot;&gt;меме&lt;&#x2F;a&gt; увидел.&lt;&#x2F;p&gt;
&lt;p&gt;Так что, разрешу-ка я себе делать так, как я хочу.&lt;&#x2F;p&gt;
&lt;p&gt;Разрешаю и вам.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Termless Meme</title>
        <published>2025-10-17T00:00:00+00:00</published>
        <updated>2025-10-17T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/terminal-less-meme/"/>
        <id>https://4779.ru/p/terminal-less-meme/</id>
        
        <content type="html" xml:base="https://4779.ru/p/terminal-less-meme/">&lt;figure&gt;
  &lt;img src=&quot;&#x2F;img&#x2F;bell_curve_prog_tools.jpeg&quot; &#x2F;&gt;
&lt;&#x2F;figure&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Акме всё</title>
        <published>2025-10-16T00:00:00+00:00</published>
        <updated>2025-10-16T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/acme-over/"/>
        <id>https://4779.ru/p/acme-over/</id>
        
        <content type="html" xml:base="https://4779.ru/p/acme-over/">&lt;p&gt;Наверное, не буду больше тратить время на Acme.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;acme-gluboko-arkhaichen&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#acme-gluboko-arkhaichen&quot; aria-label=&quot;Anchor link for: acme-gluboko-arkhaichen&quot;&gt;Acme глубоко архаичен&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Мне это навеяло воспоминания об Emacs. Та же упёртость, больше похожая на упоротость.&lt;&#x2F;p&gt;
&lt;p&gt;Acme и сообщество его поддерживающее не заинтересовано ни в развитии ни
в улучшении, а просто в сохранении того что есть. Собственно, это причина существования plan9port.&lt;&#x2F;p&gt;
&lt;p&gt;Из-за этого, многое добавлено не будет. Бог с ней с подсветкой синтаксиса,
хотя бы палитру дали настроить - это всё-равно, делает каждый первый форк.
Шрифты-то дали возможность выбрать!&lt;&#x2F;p&gt;
&lt;p&gt;Или те же стрелочки вверх и вниз. Их поведение тоже изменили в Anvil&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#anvil&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;anvil&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;https:&#x2F;&#x2F;anvil-editor.net&#x2F; Я код не смотрел, видел что Go используется. Могу предположить что это форк “официального” порта Acme на Go с изменениями, которые давно напрашивались.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Или, любой удаляемый текст (хоть через Backspace, хоть через Escape)
кладётся в буфер обмена. Зачем?&lt;&#x2F;p&gt;
&lt;p&gt;Ну и свой ##бнутый прикол, который надо было бы выкинуть на помойку,типа ##нутых клавишных аккордов в Имаксе - трёхкнопочная мышь.
В целом, акцент на использовании мыши я понимаю - но:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Позиционировать нужно точно. Кинуть курсор, а потом захватить слово до конца зажав &lt;kbd&gt;Shift&lt;&#x2F;kbd&gt; + &lt;kbd&gt;Option&lt;&#x2F;kbd&gt; + &lt;kbd&gt;←&lt;&#x2F;kbd&gt; - не получится&lt;&#x2F;li&gt;
&lt;li&gt;Можно имитировать нажатия по второй и третьей кнопки мыши при помощи Option и Command на Маке. Так даже удобнее и с обычной мышью работать. Но! Аккорды с этими кнопками делать - совсем неудобно.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;graficheskii-lish-na-polovinu&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#graficheskii-lish-na-polovinu&quot; aria-label=&quot;Anchor link for: graficheskii-lish-na-polovinu&quot;&gt;Графический лишь на половину&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Та же беда, как и с Emacs - скролл построчный и не инерционный.
Горизонтального скролла нет вообще. То есть, графическое приложение ведет себя как обычное в терминале.&lt;&#x2F;p&gt;
&lt;p&gt;И если в Имакс это можно простить - по-буферу можно передвигаться курсором, то тут нет.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;v-zakliuchenie&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#v-zakliuchenie&quot; aria-label=&quot;Anchor link for: v-zakliuchenie&quot;&gt;В заключение&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Проведя некоторое время (две-три недели) в ежедневном использовании Acme хочу сказать то же, что в своё время &lt;a href=&quot;&#x2F;til_archive&#x2F;posts&#x2F;emacs&#x2F;&quot;&gt;говорил&lt;&#x2F;a&gt; про Emacs:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Современному пользователю, живущему в графическом окружении, Имакс не даёт никаких преимуществ. Зато имеет кучу наследственных “особенностей”. Эти особенности - не забытое кун-фу древних мастеров, не горшочек с золотом на другом конце кривой обучения. Это всё переизобретение того что уже есть.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Преимущество у Акме есть одно - классно выделить текст и послать его в другой выделенный фрагмент текста, который представляет собой напечатанную команду.&lt;&#x2F;p&gt;
&lt;p&gt;А себе я посоветую почитать про zle (zsh line editor).&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Vscode Superior</title>
        <published>2025-10-16T00:00:00+00:00</published>
        <updated>2025-10-16T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/vscode-superior/"/>
        <id>https://4779.ru/p/vscode-superior/</id>
        
        <content type="html" xml:base="https://4779.ru/p/vscode-superior/">&lt;blockquote&gt;
&lt;p&gt;Чтобы сделать человеку хорошо - сделайте ему плохо, а потом верните как было&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;em&gt;… здесь было много нытья о том, какой плохой Acme
и как хорошо всё сделано в Вскоде и Идее…&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;… как мне не хватает управления курсором
стрелочками (вверх и вниз)…&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;… Как приятно скроллить открытые окна в vscode
и как скроллится в Acme построчно…&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Но истерику остановило несколько находок.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;mouse-vs-keyboard&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#mouse-vs-keyboard&quot; aria-label=&quot;Anchor link for: mouse-vs-keyboard&quot;&gt;Mouse vs. Keyboard&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;9p.io&#x2F;wiki&#x2F;plan9&#x2F;mouse_vs._keyboard&#x2F;index.html&quot;&gt;Mouse vs. Keyboard 9p.io&#x2F;wiki&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Мышка, хоть и ощущается менее удобной чем всё делать с клавиатуры - получается быстрее.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;guide-to-using-acme-effectively&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#guide-to-using-acme-effectively&quot; aria-label=&quot;Anchor link for: guide-to-using-acme-effectively&quot;&gt;Guide to using Acme effectively?&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;groups.google.com&#x2F;g&#x2F;comp.os.plan9&#x2F;c&#x2F;SifK1WHKNNM&quot;&gt;comp.os.plan9 (groups.google)&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Arguing about mouse vs keyboard misses the point.
I’m very happy with acme’s use of the mouse, but
&lt;strong&gt;acme’s power comes from the rest of its design.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;– Russ Cox&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;и лёгкая ирония:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;perhaps i should have taken piano&lt;&#x2F;p&gt;
&lt;p&gt;Erik Quanstrom&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Акме, в целом, не про эргономичность, а про достаточность и интеграцию с окружением.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Wily - редактор, вдохновленный Acme</title>
        <published>2025-10-16T00:00:00+00:00</published>
        <updated>2025-10-16T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/wily-acme-clone/"/>
        <id>https://4779.ru/p/wily-acme-clone/</id>
        
        <content type="html" xml:base="https://4779.ru/p/wily-acme-clone/">&lt;p&gt;Когда погружался в тему Acme, находил упоминания Wily, но бегло не находил упоминаний.&lt;&#x2F;p&gt;
&lt;p&gt;Так вот, http:&#x2F;&#x2F;www.cs.yorku.ca&#x2F;~oz&#x2F;wily&#x2F;intro.html.&lt;&#x2F;p&gt;
&lt;p&gt;Примечательный FAQ:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;There aren’t enough control keys&#x2F;function keys&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;– go away&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;:)&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Шрифты для редактора Акме</title>
        <published>2025-10-15T00:00:00+00:00</published>
        <updated>2025-10-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/acme-editor-fonts/"/>
        <id>https://4779.ru/p/acme-editor-fonts/</id>
        
        <content type="html" xml:base="https://4779.ru/p/acme-editor-fonts/">&lt;p&gt;Не первый раз встречаю такую фразу&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Many users typically use a proportional-width main font and a fixed-width alternate font.&lt;&#x2F;p&gt;
&lt;p&gt;– &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matheuristic&#x2F;plan9port-config?tab=readme-ov-file#acme-fonts&quot;&gt;matheuristic&#x2F;plan9port-config (gh)&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;А встречал я рассуждения про шрифты &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chai.guru&#x2F;pub&#x2F;plan9&#x2F;mirrors&#x2F;tao-of-acme.html&quot;&gt;тут (on Fonts)&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;My font of choice is DejaVu Serif; it’s widely available and leaves a small amount of space between braces, parentheses, quote marks, etc., which makes working with code easier&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Дежа вю, уже хоть появилось название явное.&lt;&#x2F;p&gt;
&lt;p&gt;Смотрю, какие шрифты у меня вообще есть&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;% fontsrv &amp;amp;
[1] 40725
% 9p ls font | head 
AcademyEngravedLetPlain
AlBayan
AlBayan-Bold
AlNile
AlNile-Bold
AlTarikh
AmericanTypewriter
AmericanTypewriter-Bold
AmericanTypewriter-Condensed
AmericanTypewriter-CondensedBold
...
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Их много. Но Дежа Вю не нашел(&lt;&#x2F;p&gt;
&lt;p&gt;Загуглил &lt;code&gt;9p font proportional&lt;&#x2F;code&gt; и нашел https:&#x2F;&#x2F;pmikkelsen.com&#x2F;plan9&#x2F;fonts (на него ссылкается ещё matheuristic&#x2F;plan9port-config &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matheuristic&#x2F;plan9port-config&#x2F;blob&#x2F;main&#x2F;fontscripts&#x2F;README.md&quot;&gt;тут&lt;&#x2F;a&gt;)&lt;&#x2F;p&gt;
&lt;p&gt;Скачал, распаковал.&lt;&#x2F;p&gt;
&lt;p&gt;Думал, что надо как-то примонтировать &lt;code&gt;fontsrv&lt;&#x2F;code&gt;, типа&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ mkdir -p &#x2F;tmp&#x2F;font
$ fontsrv -m &#x2F;tmp&#x2F;font &amp;amp;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;А потом скопировать туда распакованный djv, но нет - так не работало.&lt;&#x2F;p&gt;
&lt;p&gt;Зато сработало просто указать путь до распакованных djv&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;cd `mktemp -d`
curl https:&#x2F;&#x2F;files.pmikkelsen.com&#x2F;djv.tar --output djv.tar
tar xf djv.tar -C djv
acme -f djv&#x2F;font
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;получилось очень мыльно.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;acme_djv.png&quot; alt=&quot;&quot; &#x2F;&gt;{: .fullwidth}&lt;&#x2F;p&gt;
&lt;p&gt;Поэтому, пока обойдусь теми, что доступны через fontsrv&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;acme -f &#x2F;mnt&#x2F;font&#x2F;PTMono-Regular&#x2F;13a&#x2F;font &amp;amp;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Найти директорию</title>
        <published>2025-10-15T00:00:00+00:00</published>
        <updated>2025-10-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/find-directory-in-subtree/"/>
        <id>https://4779.ru/p/find-directory-in-subtree/</id>
        
        <content type="html" xml:base="https://4779.ru/p/find-directory-in-subtree/">&lt;p&gt;Забыл, в каком именно проекте у меня лежит директория с нужным компонентом. Помню, что называлась она &lt;code&gt;Limits&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Команда для поиска&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;find . -type d -name Limits 2&amp;gt;&#x2F;dev&#x2F;null
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.&lt;&#x2F;code&gt;: Ищем в текущей директории&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;-type d&lt;&#x2F;code&gt;: Указывает, что ищется директория.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;-name Limits&lt;&#x2F;code&gt;: Поиск по имени “Limits”.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;2&amp;gt;&#x2F;dev&#x2F;null&lt;&#x2F;code&gt;: Подавляет сообщения об ошибках доступа к защищенным каталогам.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Здоровые новости</title>
        <published>2025-10-15T00:00:00+00:00</published>
        <updated>2025-10-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/healthy-news/"/>
        <id>https://4779.ru/p/healthy-news/</id>
        
        <content type="html" xml:base="https://4779.ru/p/healthy-news/">&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;t.me&#x2F;my_waifu_was_alien_robot&#x2F;2464&quot;&gt;Rust, опеннет, и Ричард Столлман&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;И следующим постом идёт про &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;t.me&#x2F;my_waifu_was_alien_robot&#x2F;2466&quot;&gt;HN Best Comments&lt;&#x2F;a&gt;
Перекликается с ним &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;t.me&#x2F;my_waifu_was_alien_robot&#x2F;2470&quot;&gt;пост&lt;&#x2F;a&gt; про то, что лучше читать рассылки проектов&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#use_gmane&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;, чем новостные сайты.&lt;&#x2F;p&gt;
&lt;p&gt;Заинтересовало упоминание NNTP и &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gwene.org&#x2F;&quot;&gt;https:&#x2F;&#x2F;gwene.org&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Gwene is an RSS (and Atom, etc) to Usenet News (i. e., NNTP) gateway.&lt;&#x2F;p&gt;
&lt;p&gt;If you wish to read various feeds, but don’t want to use one of those new-fangled web browser thingies (they’ll never take off), you can just point your Usenet news reader towards news.gwene.org and read all the kitteh blogs from the comfort of something I don’t quite know how to end this run-on sentence.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Про usenet я слышал, но не пользовался. Надо бы глянуть какие утилиты есть для работы с ним.&lt;&#x2F;p&gt;
&lt;p&gt;Для чтения rss - я находил удобным под макось и айось Reeder. Нормальное клиентское приложения для чтения с синхронизацией прочитанного через айклауд.&lt;&#x2F;p&gt;
&lt;p&gt;Но он чисто под ай-девайсы. Мультиплатформенное и selfhosted находил &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;miniflux.app&#x2F;&quot;&gt;Miniflux&lt;&#x2F;a&gt;. Селфхост веб-сервис.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;use_gmane&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;А для чтения рассылок можно использовать https:&#x2F;&#x2F;gmane.io&#x2F;. Он позволяет читать рассылки через nntp (usenet).&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Крутые темы для Hugo</title>
        <published>2025-10-14T00:00:00+00:00</published>
        <updated>2025-10-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/cool-hugo-themes/"/>
        <id>https://4779.ru/p/cool-hugo-themes/</id>
        
        <content type="html" xml:base="https://4779.ru/p/cool-hugo-themes/">&lt;p&gt;Вообще, с темами для Хуго пара проблем&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Сложные и настраиваемые (типа blofish) замучаешься настраивать&lt;&#x2F;li&gt;
&lt;li&gt;“Простые и минималистичные” зачастую не простые и не минималистичные.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Я видел пару блогов на &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;hugo-sid&#x2F;hugo-blog-awesome&quot;&gt;hugo-blog-awesome&lt;&#x2F;a&gt; и на доработанном &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;yihui&#x2F;hugo-xmin&quot;&gt;xmin&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Мне ещё понравилась &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;adityatelange&#x2F;hugo-PaperMod&quot;&gt;Hugo Papermod&lt;&#x2F;a&gt; (форк ещё более простой темы &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;nanxiaobei&#x2F;hugo-paper&quot;&gt;Paper&lt;&#x2F;a&gt;)&lt;&#x2F;p&gt;
&lt;p&gt;Хотя имхо, если ты заинтересовался генераторами статических сайтов, разобрался как его завести - то и тему сам сверстать сможешь.&lt;&#x2F;p&gt;
&lt;p&gt;Искать темы лучше на &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;search?q=hugo+theme&amp;amp;type=repositories&amp;amp;s=stars&amp;amp;o=desc&quot;&gt;гитхабе&lt;&#x2F;a&gt;. Имхо, важна не сколько сортировка по-звёздочкам, сколько возможность посмотреть, когда последние коммиты были.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;sozdat-temu-s-nulia&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#sozdat-temu-s-nulia&quot; aria-label=&quot;Anchor link for: sozdat-temu-s-nulia&quot;&gt;Создать тему с нуля&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;hugo new theme [name]
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gohugo.io&#x2F;commands&#x2F;hugo_new_theme&#x2F;&quot;&gt;hugo new theme&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Hugo Tufte</title>
        <published>2025-10-14T00:00:00+00:00</published>
        <updated>2025-10-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/hugo-tufte/"/>
        <id>https://4779.ru/p/hugo-tufte/</id>
        
        <content type="html" xml:base="https://4779.ru/p/hugo-tufte/">&lt;p&gt;Прикипел я к стилю Эда Тафти.&lt;&#x2F;p&gt;
&lt;p&gt;И нашел пару тем (три, но две заброшены в пользу третьей), которые вдохновлены
Тафти и tufte.css&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;shawnohare&#x2F;hugo-tufte&quot;&gt;shawnohare&#x2F;hugo-tufte (gh)&lt;&#x2F;a&gt; заброшена.&lt;&#x2F;li&gt;
&lt;li&gt;Форк первой&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;slashformotion&#x2F;hugo-tufte&quot;&gt;slashformotion&#x2F;hugo-tufte (gh)&lt;&#x2F;a&gt; заброшена.&lt;&#x2F;li&gt;
&lt;li&gt;Третий форк &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;loikein&#x2F;hugo-tufte&quot;&gt;loikein&#x2F;hugo-tufte&lt;&#x2F;a&gt; относительно живой.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Но имхо, вот чем мне нравится этот стиль Тафти (просто и аккуратно) сделано как-то сложно.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Scss (зачем?)&lt;&#x2F;li&gt;
&lt;li&gt;Для заметок сбоку (margin notes) используются уродские шорткоды
&lt;ul&gt;
&lt;li&gt;Шорткоды - в принципе уродская тема. Это очень сильно ощущается после
опыта работы с Markdeep.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Я находил размышления, что эти заметки сбоку - это footnotes. И надо поправить вёрстку этих футноутов в goldmark, а не использовать шорткоды. Может и займусь этим когда-нибудь&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Новый блог. Снова</title>
        <published>2025-10-14T00:00:00+00:00</published>
        <updated>2025-10-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/new/"/>
        <id>https://4779.ru/p/new/</id>
        
        <content type="html" xml:base="https://4779.ru/p/new/">&lt;p&gt;В последнее время я занялся активным блоговедением, написаний публикаций и в
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;t.me&#x2F;o_thinkr&quot;&gt;тг-канал&lt;&#x2F;a&gt;, и написанием заметок сюда.&lt;&#x2F;p&gt;
&lt;p&gt;И в процессе понял - что вести что-то вроде &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;til.41q.ru&#x2F;posts&#x2F;horticulture&#x2F;&quot;&gt;цифрового сада&lt;&#x2F;a&gt; и блога - избыточно.&lt;&#x2F;p&gt;
&lt;p&gt;У меня были блоги. Много. После знакомства с &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;til.41q.ru&#x2F;posts&#x2F;tiddlywiki&#x2F;&quot;&gt;тидливики&lt;&#x2F;a&gt; - мне захотелось сделать что-то типа персональной вики и вырастить цифровой сад.&lt;&#x2F;p&gt;
&lt;p&gt;С тидливики не особо получилось. Одностраничная тидливики была недоступной для поисковиков. Экспорт тидлей в отдельные страницы - был тем ещё пердолингом с ссылками между ними (имена тидлей на кириллице urlencode-ились) и получалось страшно.&lt;&#x2F;p&gt;
&lt;p&gt;Пробовал разные шаблоны для садов. Для jekyll, например. Потом нашел тему Til для hugo - она, вроде как, имела всё что я хотел:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Отдельную директорию для заметок и отдельную директорию для постов.&lt;&#x2F;li&gt;
&lt;li&gt;Отдельную секцию для обратных ссылок (backlinks)&lt;&#x2F;li&gt;
&lt;li&gt;Граф связей между страницами.&lt;&#x2F;li&gt;
&lt;li&gt;Заметки на полях (sidenotes или margin notes по Тафти) - удобно и просто красиво&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Напоминало Obsidian. И даже работало.&lt;&#x2F;p&gt;
&lt;p&gt;Однако, пока я этим занимался понял несколько вещей.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;organizatsiia-kontenta&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#organizatsiia-kontenta&quot; aria-label=&quot;Anchor link for: organizatsiia-kontenta&quot;&gt;Организация контента.&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Гоняешь туда-сюда. объединяешь и разъединяешь страницы. Например, была большая
страница с описанием консольных утилит. Потом я её разбил на отдельные, маленькие,
по-утилитам. Не уверен что стало лучше.&lt;&#x2F;p&gt;
&lt;p&gt;И это не нравится тем же поисковым системам. Они 404 по-старым страницам считают ошибкой. Наверное, им надо настраивать редиректы - но я не хочу загрязнять конфиг веб-сервера редиректами на каждый чих.&lt;&#x2F;p&gt;
&lt;p&gt;Когда я писал заметки по книге “Программное окружение Юникс” - заметок было много, они никак кроме того, что вдохновлены одной книгой не были. Начал разбивать их на отдельные страницы - надо для каждой темы какую-то вводную написать. Это утомляет и как мне кажется, никому не надо. Ни мне, ни будущему читателю.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;poka-pishesh-ustaiosh&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#poka-pishesh-ustaiosh&quot; aria-label=&quot;Anchor link for: poka-pishesh-ustaiosh&quot;&gt;Пока пишешь - устаёшь&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Прелесть блога, если вести его регулярно и относиться к нему как к журналу в том, что хронологически соседние заметки связаны. Не надо промасливать вводными и выводами сами заметки.&lt;&#x2F;p&gt;
&lt;p&gt;Hugo, из коробки, предоставляет теги и категории. Имхо - этого будет достаточно. Не надо упарываться с обратными ссылками, графами и прочим.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;malen-kie-kommitmenty-i-postepennye-uluchsheniia&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#malen-kie-kommitmenty-i-postepennye-uluchsheniia&quot; aria-label=&quot;Anchor link for: malen-kie-kommitmenty-i-postepennye-uluchsheniia&quot;&gt;Маленькие коммитменты и постепенные улучшения.&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Лучшее - враг хорошего. И я чувствую, что вместо того, чтобы упарываться в попытках писать целостно, покрывать “тему” - лучше множество “сырых” заметок. А для навигации положиться на хронологическую ленту и теги.&lt;&#x2F;p&gt;
&lt;p&gt;Тему я тоже взял базовую дефолтную. Постепенно её докручу, как делал это много раз уже.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;razreshit-samomu-sebe-grafomanit&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#razreshit-samomu-sebe-grafomanit&quot; aria-label=&quot;Anchor link for: razreshit-samomu-sebe-grafomanit&quot;&gt;Разрешить самому себе графоманить&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Иногда у меня срабатывает тормоз и я говорю себе, что надо писать меньше. Хотя бы публично.&lt;&#x2F;p&gt;
&lt;p&gt;Хотя, общаясь с другими людьми из темы по bsd-системам, например, я вижу что круг людей куда уже чем кажется, и достигает буквально десятка человек на русском языке.&lt;&#x2F;p&gt;
&lt;p&gt;И тут уместно не стесняться графоманства и по 10 раз вытачивать абзацы, а кричать изо всех сил.&lt;&#x2F;p&gt;
&lt;p&gt;Если бумага всё стерпит, то жесткие диски серверов - подавно.&lt;&#x2F;p&gt;
&lt;p&gt;Из этого, наверное, можно вывести правило - &lt;strong&gt;Вместо переписывания старых постов, пиши новые&lt;&#x2F;strong&gt;. Ссылайся на старые, опровергай, дискутируй сам с собой.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Medium is the message&lt;&#x2F;strong&gt;. Не важно как написано и даже о чём. Важен сам сигнал.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Dash. Трушный шелл в Макоси</title>
        <published>2025-10-12T00:00:00+00:00</published>
        <updated>2025-10-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/macos-sh/"/>
        <id>https://4779.ru/p/macos-sh/</id>
        
        <content type="html" xml:base="https://4779.ru/p/macos-sh/">&lt;p&gt;В макоси дефолтный шелл - &lt;code&gt;zsh&lt;&#x2F;code&gt;. Он удобный, гибкий и настраиваемый.
Но его интерпретация команд отличается от posix.&lt;&#x2F;p&gt;
&lt;p&gt;Зато, в Каталине и последующих версиях появился &lt;code&gt;&#x2F;bin&#x2F;dash&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;dash&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#dash&quot; aria-label=&quot;Anchor link for: dash&quot;&gt;Dash&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Debian Almquist Shell - порт Almquist SHell&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#ash&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; под линукс.&lt;&#x2F;p&gt;
&lt;p&gt;После bash и zsh - ощущается по-спартански.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Не ведет историю команд&lt;&#x2F;li&gt;
&lt;li&gt;Не имеет автодополнения&lt;&#x2F;li&gt;
&lt;li&gt;Не понимает передвижений курсора стрелочками&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Сделано это умышленно. Как &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Almquist_shell#History&quot;&gt;говорит&lt;&#x2F;a&gt; английская вики:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;ash did not provide line editing or command history mechanisms, because Almquist felt
that such functionality should be moved into the terminal driver.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Вполне себе в духе Юникс. Делать одну вещь и делать хорошо (быть командным интерпретатором).&lt;&#x2F;p&gt;
&lt;p&gt;Команды для оболочки можно готовить в эмуляторе терминала (например,
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.4779.ru&#x2F;external-command-editing.html#iterm&quot;&gt;iterm&lt;&#x2F;a&gt;) или в
редакторе (&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.4779.ru&#x2F;acme-editor.html&quot;&gt;acme&lt;&#x2F;a&gt;, vim).&lt;&#x2F;p&gt;
&lt;p&gt;А если использовать dash для скриптов - то тем более не нужно.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;ash&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;Almquist shell написан Кеннетом Алмквистом (Kenneth Almquist) как ре-имплементация Bourne shell по-причине
лицензионных войн между AT&amp;amp;T и университетом Беркли. (&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.in-ulm.de&#x2F;~mascheck&#x2F;various&#x2F;ash&#x2F;#origina&quot;&gt;about ash&lt;&#x2F;a&gt;).
Шелл по-умолчанию в netBSD.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;scriptingosx.com&#x2F;2020&#x2F;06&#x2F;about-bash-zsh-sh-and-dash-in-macos-catalina-and-beyond&#x2F;&quot;&gt;About bash, zsh, sh, and dash in macOS Catalina and beyond&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Точка (.) в Шелл</title>
        <published>2025-10-11T00:00:00+00:00</published>
        <updated>2025-10-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/shell-dot/"/>
        <id>https://4779.ru/p/shell-dot/</id>
        
        <content type="html" xml:base="https://4779.ru/p/shell-dot/">&lt;blockquote&gt;
&lt;p&gt;В оболочке есть команда . (точка), которая исполняет команды
в файле в текущей оболочке, а не в подоболочке.
Изначально это было придумано для того, чтобы пользователю было
удобно перезапускать свой .profile и не приходилось бы для этого
выходить из системы и заново входить в нее, теперь же эта
команда применяется и в других целях:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ cat &#x2F;usr&#x2F;you&#x2F;bin&#x2F;games
PATH=$PATH:&#x2F;usr&#x2F;games Добавить &#x2F;usr&#x2F;games в PATH
$ echo $PATH
:&#x2F;usr&#x2F;you&#x2F;bin:&#x2F;bin:&#x2F;usr&#x2F;bin
$ . games
$ echo $PATH
:&#x2F;usr&#x2F;you&#x2F;bin:&#x2F;bin:&#x2F;usr&#x2F;bin:&#x2F;usr&#x2F;games
$
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;— 3.6. Переменные оболочки &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.4779.ru&#x2F;unix-prenv-book.html&quot;&gt;Программное окружение Unix (Керниган, Пайк)&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Попробовал я создать простенький файл в текущей директории с командой echo.&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ echo &amp;#39;echo hi&amp;#39; &amp;gt;ech
$ ls
ech
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;И исполнить его&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ . ech
dash: 33: .: ech: not found
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Чзх?&lt;&#x2F;p&gt;
&lt;p&gt;Я использовал dash. Вроде как, самый трушный из доступных сегодня шеллов.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;tldr;&lt;&#x2F;strong&gt; интерпретация команд через точку работает где как.
Я нашел доступное объяснение (загуглил) в [руководстве z&#x2F;os].&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;If there are slashes in the file name, . (dot) looks for the named file.
If there are no slashes . (dot) searches for file in the directories specified
in the PATH variable.&lt;&#x2F;p&gt;
&lt;p&gt;— &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.ibm.com&#x2F;docs&#x2F;en&#x2F;zos&#x2F;3.2.0?topic=descriptions-dot-run-shell-file-in-current-environment&quot;&gt;руководство z&#x2F;os (ibm.com)&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;То есть, &lt;strong&gt;если путь до файла, который нужно исполнить не содержит косых черт - то оболочка ищет его в PATH. Если содержит косые черты (в моём случае &lt;code&gt;.&#x2F;ech&lt;&#x2F;code&gt;) то будет исполнен этот файл.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Нашел &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;pubs.opengroup.org&#x2F;onlinepubs&#x2F;9799919799&#x2F;utilities&#x2F;V3_chap02.html#dot&quot;&gt;описание&lt;&#x2F;a&gt; этого поведения в posix-стандарте&lt;&#x2F;p&gt;
&lt;p&gt;А в руководстве dash об этом ни слова&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;pre&gt;&lt;code&gt;Builtins
...
    . file
           The commands in the specified file are read and executed by the
           shell.
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;— man 1 dash&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Попробовал экспериментально:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;dash - работает, как описано в цитате с сайта ibm.&lt;&#x2F;li&gt;
&lt;li&gt;zsh - работает также&lt;&#x2F;li&gt;
&lt;li&gt;bash - сначала ищет файл в текущей директории&lt;&#x2F;li&gt;
&lt;li&gt;sh (bash в режиме совместимости sh) - как и bash, сначала ищет файл в текущей директории&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Посмотрел ещё раз внимательно на пример из книги - а тут файл games находится в PATH, так что всё ожидаемо.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Dot_(command)&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Где размещать скрипты?</title>
        <published>2025-10-07T00:00:00+00:00</published>
        <updated>2025-10-07T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/where-put-scripts/"/>
        <id>https://4779.ru/p/where-put-scripts/</id>
        
        <content type="html" xml:base="https://4779.ru/p/where-put-scripts/">&lt;p&gt;В &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.4779.ru&#x2F;unix-prenv-book.html&quot;&gt;Программном окружении Unix&lt;&#x2F;a&gt; скрипты предлагается создавать в домашнем каталоге пользователя… &lt;code&gt;&#x2F;usr&#x2F;you&#x2F;bin&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Где расположить их в современных системах?&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;tldr;&lt;&#x2F;strong&gt; $HOME&#x2F;bin - нормальное место.&lt;&#x2F;p&gt;
&lt;p&gt;В линуксах &lt;code&gt;&#x2F;home&#x2F;you&#x2F;bin&lt;&#x2F;code&gt;, на макоси - &lt;code&gt;&#x2F;Users&#x2F;you&#x2F;bin&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;kakie-est-varianty&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#kakie-est-varianty&quot; aria-label=&quot;Anchor link for: kakie-est-varianty&quot;&gt;Какие есть варианты?&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Я нашел два. Собственно, ~&#x2F;bin и ~&#x2F;.config&#x2F;bin.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;config&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#config&quot; aria-label=&quot;Anchor link for: config&quot;&gt;.config&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Придумана в рамках &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;specifications.freedesktop.org&#x2F;basedir-spec&#x2F;latest&#x2F;&quot;&gt;XDG Base Directory Specification&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;User-specific executable files may be stored in $HOME&#x2F;.local&#x2F;bin.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;У меня, в домашней директории есть .local. Но создал его не я. Этот каталог используют python и ruby для хранения файлов. Я прочел интересную мысль на этот счёт&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Mentioning this for completeness: I’ve started seeing python’s pip using $HOME&#x2F;.local&#x2F;bin (as well as ~&#x2F;.local&#x2F;etc and …&#x2F;share and …&#x2F;man) when doing user leve installs. I think this is a neat idea, but as an addition to storing your personal scripts in $HOME&#x2F;bin . This lets the installation tools manage ~&#x2F;.local&#x2F;bin, and you manually manage ~&#x2F;bin. Similar to the difference between &#x2F;bin and &#x2F;use&#x2F;local&#x2F;bin. And remember to put both in $PATH variable.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;unix.stackexchange.com&#x2F;questions&#x2F;787489&#x2F;where-to-put-my-own-shell-scripts-and-configuration-files#comment1509694_787489&quot;&gt;stackoverflow&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Действительно, пусть .local используют приложения. А я собственные скрипты буду хранить в явно созданной директории без точек в названии.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;developer.apple.com&#x2F;library&#x2F;archive&#x2F;documentation&#x2F;FileManagement&#x2F;Conceptual&#x2F;FileSystemProgrammingGuide&#x2F;FileSystemOverview&#x2F;FileSystemOverview.html#&#x2F;&#x2F;apple_ref&#x2F;doc&#x2F;uid&#x2F;TP40010672-CH2-SW14&quot;&gt;Документ&lt;&#x2F;a&gt;, подробно описывающий назначение директорий в Макоси.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Сохранить страницу man в текстовый файлик</title>
        <published>2025-10-03T00:00:00+00:00</published>
        <updated>2025-10-03T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/man-to-text-file/"/>
        <id>https://4779.ru/p/man-to-text-file/</id>
        
        <content type="html" xml:base="https://4779.ru/p/man-to-text-file/">&lt;p&gt;Так делать не надо:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;sh&quot;&gt;man &amp;gt; filename.txt
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Надо вот так:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;sh&quot;&gt;man | col -b &amp;gt; filename.txt
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Если просто направить вывод &lt;code&gt;man&lt;&#x2F;code&gt; в файл не пропуская через &lt;code&gt;col&lt;&#x2F;code&gt; - текстовый файл будет содержать кучу управляющих Backspace символов&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#backspace_symbol&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;backspace_symbol&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;(10) в восьмеричной системе, 010 - в 16-ричной, \b в си-нотации, &lt;code&gt;U+0008&lt;&#x2F;code&gt; в юникоде.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;pre&gt;&lt;code data-lang=&quot;none&quot;&gt;e41q@41qmpro tmp.hakHTjagVr % hexdump -C man.txt | head -n 40
00000000  54 4e 46 54 50 28 31 29  20 20 20 20 20 20 20 20  |TNFTP(1)        |
00000010  20 20 20 20 20 20 20 20  20 20 20 20 47 65 6e 65  |            Gene|
00000020  72 61 6c 20 43 6f 6d 6d  61 6e 64 73 20 4d 61 6e  |ral Commands Man|
00000030  75 61 6c 20 20 20 20 20  20 20 20 20 20 20 20 20  |ual             |
00000040  20 20 20 20 20 20 54 4e  46 54 50 28 31 29 0a 0a  |      TNFTP(1)..|
00000050  4e 08 4e 41 08 41 4d 08  4d 45 08 45 0a 20 20 20  |N.NA.AM.ME.E.   |
00000060  20 20 74 08 74 6e 08 6e  66 08 66 74 08 74 70 08  |  t.tn.nf.ft.tp.|
00000070  70 20 e2 80 93 20 49 6e  74 65 72 6e 65 74 20 66  |p ... Internet f|
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;08&lt;&#x2F;code&gt; - это оно. В правой колонке выглядит как точки N&lt;b&gt;.&lt;&#x2F;b&gt;NA&lt;b&gt;.&lt;&#x2F;b&gt;AM&lt;b&gt;.&lt;&#x2F;b&gt;ME&lt;b&gt;.&lt;&#x2F;b&gt;E - это оно.&lt;&#x2F;p&gt;
&lt;p&gt;Их не будет видно при выводе в терминале (терминал их обратывает при выводе), но будет видно в редакторе.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;man_with_backspaces.png&quot; alt=&quot;man с символами возврата&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Надо отфильтровать их через &lt;code&gt;col&lt;&#x2F;code&gt;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#col_man&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;col_man&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;2&lt;&#x2F;sup&gt;
&lt;p&gt;“col – filter reverse line feeds from input” – &lt;code&gt;man col&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;man_ok.png&quot; alt=&quot;всё ок&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Hugo всё ещё лучше</title>
        <published>2025-10-02T00:00:00+00:00</published>
        <updated>2025-10-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/ssg-still-better/"/>
        <id>https://4779.ru/p/ssg-still-better/</id>
        
        <content type="html" xml:base="https://4779.ru/p/ssg-still-better/">&lt;p&gt;&lt;a href=&quot;&#x2F;p&#x2F;markdeep&#x2F;&quot;&gt;Markdeep&lt;&#x2F;a&gt; мне понравился. Мне казалось, что отлично подойдет для написания веб-страничек.&lt;&#x2F;p&gt;
&lt;p&gt;Но пока я читаю Программное окружение Unix и &lt;del&gt;делаю&lt;&#x2F;del&gt; &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#unix_prenv&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; заметки на специальную страничку для этой книги - понял что получается не совсем то, что я хотел.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;unix_prenv&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;Если эта страница опубликована, то значит что я уже разбил большую страницу на отдельные заметки - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.4779.ru&#x2F;unix-prenv-book.html&quot;&gt;Программное окружение Unix (Книга)&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Страница в итоге становится слишком большой. Со временем, уверен, таких страниц станет много. Управлять этими страницами со-временем будет менее удобно.&lt;&#x2F;p&gt;
&lt;p&gt;И, все-таки, блог… Многие вещи раскрываются именно в повестовательной манере, нежели как кладбище фрагментов и ответов на простые вопросы.&lt;&#x2F;p&gt;
&lt;p&gt;И тема, которую я нашел - &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;themes.gohugo.io&#x2F;themes&#x2F;hugo-theme-til&#x2F;&quot;&gt;TIL&lt;&#x2F;a&gt; отлично подходит именно для того, что я хочу:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;есть как классические посты, так и отдельный раздел для заметок&lt;&#x2F;li&gt;
&lt;li&gt;всё это связывается обратными ссылками&lt;&#x2F;li&gt;
&lt;li&gt;и ещё мне нравятся Sidenotes сбоку&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Поэтому, вернусь-ка я пока к hugo и til.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Как создать пустой файл?</title>
        <published>2025-10-01T00:00:00+00:00</published>
        <updated>2025-10-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/create-empty-file-from-shell/"/>
        <id>https://4779.ru/p/create-empty-file-from-shell/</id>
        
        <content type="html" xml:base="https://4779.ru/p/create-empty-file-from-shell/">&lt;p&gt;По-классике &lt;code&gt;touch filename&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;shell&quot;&gt;touch filename.
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Однако, такое использование не целевое&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#touch&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; для этой программы.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;touch&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;Задача этой утилитки - просто изменить время редактирования файла на текущее. Чтобы, например, спровоцировать make-задачи&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;В &lt;a href=&quot;https:&#x2F;&#x2F;4779.ru&#x2F;p&#x2F;create-empty-file-from-shell&#x2F;wiki.4779.ru&#x2F;unix-prenv-book.html&quot;&gt;Программном окружении Unix&lt;&#x2F;a&gt; увидел такой вот простой пример создания пустого файла:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;shell&quot;&gt;$ &amp;gt;filename
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Но есть нюанс.&lt;&#x2F;p&gt;
&lt;p&gt;Приведенный выше способ нормально работает в &lt;code&gt;sh&lt;&#x2F;code&gt;, и &lt;code&gt;dash&lt;&#x2F;code&gt;. А вот в &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.4779.ru&#x2F;zsh.html&quot;&gt;zsh&lt;&#x2F;a&gt; -
каретка переводится на новую строку и ждет ввода. Потыкавшись, я понял - что терминал переходит в режим ожидания ввода, а потом всё введенное сохраняет в файл.&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;shell&quot;&gt;% &amp;gt;junk
asdf
qwer^D
% cat junk
asdf
qwer
%
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;pochemu&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#pochemu&quot; aria-label=&quot;Anchor link for: pochemu&quot;&gt;Почему?&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Об этом есть целый &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;zsh.sourceforge.io&#x2F;Doc&#x2F;Release&#x2F;Redirection.html#Redirections-with-no-command&quot;&gt;пункт&lt;&#x2F;a&gt;
в рукодстве Зиша.&lt;&#x2F;p&gt;
&lt;p&gt;Кратко:
Если есть оператор перенаправления, но нет команды, оболочка берет её из &lt;code&gt;NULLCMD&lt;&#x2F;code&gt;.
Если там нет ничего, то Зиш использует &lt;code&gt;cat&lt;&#x2F;code&gt;. А cat вызванный без аргументов, будет передавать дальше вывод с &lt;code&gt;stdin&lt;&#x2F;code&gt;, т.е. ввод пользователя в терминал.&lt;&#x2F;p&gt;
&lt;p&gt;Поэтому, для Зиш надо указывать перенаправление ввода из &lt;strong&gt;ничего&lt;&#x2F;strong&gt;. И в Зише есть свой оператор для &lt;strong&gt;ничего&lt;&#x2F;strong&gt; - &lt;code&gt;:&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;С ним команда должна быть такой:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;sh&quot;&gt;% : &amp;gt;filename
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Markdeep</title>
        <published>2025-09-25T00:00:00+00:00</published>
        <updated>2025-09-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/markdeep/"/>
        <id>https://4779.ru/p/markdeep/</id>
        
        <content type="html" xml:base="https://4779.ru/p/markdeep/">&lt;a href=&quot;https:&#x2F;&#x2F;wiki.4779.ru&#x2F;i-need-host-website.html&quot; target=&quot;_blank&quot;&gt;
    &lt;img src=&quot;&#x2F;img&#x2F;website-host-mental-gymnastic.jpeg&quot; &#x2F;&gt;
&lt;&#x2F;a&gt;
&lt;p&gt;Всего две строчки - в начале строка и в конце. Закинул на хостинг - сайт готов. Стили - по-вкусу.&lt;&#x2F;p&gt;
&lt;p&gt;Достаточно почти для всего - для публикации заметок, статей, документации.&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;casual-effects.com&#x2F;markdeep&#x2F;&lt;&#x2F;p&gt;
&lt;p&gt;Как это работало раньше?&lt;&#x2F;p&gt;
&lt;h2 id=&quot;klassicheskii-veb-sait-lamp-wordpress&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#klassicheskii-veb-sait-lamp-wordpress&quot; aria-label=&quot;Anchor link for: klassicheskii-veb-sait-lamp-wordpress&quot;&gt;Классический веб-сайт (Lamp + wordpress)&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;pre&gt;
&lt;code class=&quot;fullwidth&quot; style=&quot;width: 100%&quot;&gt;

+--------------------------------------------------------------------------------+
| +---------------------------------+ -------------------------------+           |
| |                              CMS|                                v           |
| |    Ассеты                       |                     +--------------------+ |
| |        +----------+             |                     |                    | |
| |        |Text      |             |                     |                    | |
| |        |....      |             |                     |        Сайт        | |
| |        |...       |             |                     |                    | |
| |        |.         |             |                     |                    | |
| |        +----------+             |                     +--------------------+ |
| |      +-----+ +-------+          |                                |           |
| |      | ... | |       |          |                 Админка        |           |
| |      +-----+ | .jpg  |          | &lt;------------------------------+           |
| |              |       |          |                                            |
| |              +-------+          |                                            |
| +---------------------------------+                                        Lamp|
+--------------------------------------------------------------------------------+
                                         ^                                        
                                         |                                        
 +-------------------------------------------------------------------------------+
 |                                    Сервер                                     |
 +-------------------------------------------------------------------------------+

&lt;&#x2F;code&gt;
&lt;&#x2F;pre&gt;
&lt;p&gt;Заходишь на сайт, попадаешь в админку. И там загружаешь файлы, редактируешь тексты и шаблоны.&lt;&#x2F;p&gt;
&lt;p&gt;Самый большой недостаток - сервер требует &lt;strong&gt;обслуживания&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Настройка сервера - отдельный вид искусства.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Всякие права на директории.&lt;&#x2F;li&gt;
&lt;li&gt;Это мы запускаем под тем пользователем, для этого создадим нового
Следить за обновлениями&lt;&#x2F;li&gt;
&lt;li&gt;как “движка”&lt;&#x2F;li&gt;
&lt;li&gt;так и системы (если сервер свой)
Бэкапы&#x2F;восстановление&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Для сайта, на котором хочется опубликовать просто тексты и картинки - это кажется избыточным.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;generator-staticheskikh-saitov-static-site-generator-ssg&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#generator-staticheskikh-saitov-static-site-generator-ssg&quot; aria-label=&quot;Anchor link for: generator-staticheskikh-saitov-static-site-generator-ssg&quot;&gt;Генератор статических сайтов (Static Site Generator, SSG)&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;pre&gt;
&lt;code class=&quot;fullwidth&quot; style=&quot;width: 100%&quot;&gt;

                                  +---------------------------------------------------------------------------------+                                          
                                  |                              Локальная разработка                               |                                          
                                  |                         +-----------------------------------------------------+ |                                          
                                  |                         |       +---------+            +--------------------+ | |                                          
                                  |                         |       |         |            |                    | | |                                          
                                  |  +------------------+   |       |  .html  |  +-----+   |                    | | |                                          
                                  |  |SSG               |   |       |         |  |.css |   |        Сайт        | | |                                          
 +------------------------+       |  |(  hugo,          |   |       +---------+  +-----+   |                    | | |                                          
 |Ассеты                  |    +--+-&gt;|   11ty,          |--&gt;|    +----------+              |                    | | |                                          
 |                        |    |  |  | jekyll)          |   |    |          |  +--------+  +--------------------+ | |                                          
 |        +----------+    |    |  |  |                  |   |    |  .webp   |  |feed.xml|                         | |                                          
 |        |Text      |    |    |  |  +------------------+   |    |          |  +--------+                         | |                                          
 |        |....      |    |    |  |                         |    +----------+                            localhost| |                                          
 | +----+ |...       |    |    |  |                         +-----------------------------------------------------+ |                                          
 | |... | |.         |    |----+  |                                                    |                            |                                          
 | +----+ +----------+    |    |  |         +-------------------------------+          |                            |                                          
 |   +-------+ +-------+  |    |  |         |      Текстовый редактор       |          |                            |                                          
 |   |       | | {{ }} |  |    |  |         |         (vscode, vim)         |&lt;---------+                            |                                          
 |   | .jpg  | +-------+  |    |  |         |                               |                                       |                                          
 |   |       |            |    |  |         +-------------------------------+                                       |                                          
 |   +-------+            |    |  |                         |                                                       |                                          
 +------------------------+    |  +-------------------------+-------------------------------------------------------+                                          
              ^                |                            |                                                                                                  
              +----------------+----------------------------+                                                                                                  
                               |       +-----------------------------------------------------------------------------+                                         
                               |       |                    Сборка + Публикация (Build + Deploy)                     |                                         
                               |       |                                             +-------------------------------+------------------------------------+    
                               |       |  +-----------------------------------+      |                               |                                    |    
                               |       |  |SSG                                |      |                               |                                    |    
                               |       |  |(  hugo,                           |      |     +---------+               |           +--------------------+   |    
                               |       |  |   11ty,                           |      |     |         |               |           |                    |   |    
                               |       |  | jekyll)                           |      |     |  .html  |  +-----+      |           |                    |   |    
                               +------&gt;|  |                                   |      |     |         |  |.css |      |           |        Сайт        |   |    
                                       |  +-----------------------------------+      |     +---------+  +-----+      |           |                    |   |    
                                       |                                             |  +----------+                 |           |                    |   |    
                                       |                                             |  |          |  +--------+     |           +--------------------+   |    
                                       |                                             |  |  .webp   |  |feed.xml|     |                                    |    
                                       |                                             |  |          |  +--------+     |                                    |    
                                       |                                             |  +----------+                 |                                    |    
                                       |                                             |                               |                                    |    
                                       +---------------------------------------------+-------------------------------+                      Linux + Apache|    
                                                                                     |                                                       Linux + Nginx|    
                                                                                     +--------------------------------------------------------------------+    
                                                                                                                        ^                                      
                                                                                                                        |                                      
                                                                                                                        |                                      
                                                                                                   +-----------------------------------------+                 
                                                                                                   |                 Сервер                  |                 
                                                                                                   +-----------------------------------------+                 

&lt;&#x2F;code&gt;
&lt;&#x2F;pre&gt;
&lt;p&gt;Для статически сгенерированного веб-сайта достаточно самого простого веб-сервера. Не нужны базы данных, интерпретаторы скриптов (php).&lt;&#x2F;p&gt;
&lt;p&gt;Но если задуматься, то &lt;strong&gt;обслуживание&lt;&#x2F;strong&gt; никуда не делось. Его перенесли. И удвоили.
Теперь вместо обслуживания сервера, обслуживать предстоит:&lt;&#x2F;p&gt;
&lt;p&gt;Локальное окружение&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Jekyll, 11ty - требуют интерпретаторов установленных руби и жс соответственно.&lt;&#x2F;li&gt;
&lt;li&gt;Зависимости для сайта или тем.
Конвейер сборки&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Да, эти процессы куда ближе программистам - программисты не любят администрировать. Вообще, никто не любит администрировать сервера.
И скорее всего, у фронтенда на компьютере уже установлен nvm, а у рубиста bundle. Да и настраивать конвейр не обязательно.
Можно собирать локально и загружать на хостинг ручками.
Но для меня это не выглядит упрощением. Лишь компромиссом.&lt;&#x2F;p&gt;
&lt;p&gt;There is no solutions, only tradeoffs.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;markdeep&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#markdeep&quot; aria-label=&quot;Anchor link for: markdeep&quot;&gt;Markdeep&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;А если отказаться от сборки и просто подсказать браузеру, как надо обрабатывать текст
при помощи javascript? Не нужно ничего нигде настраивать. Не нужно ставить никаких
зависимостей. Не нужен ни пайтон, ни руби, ни нода.&lt;&#x2F;p&gt;
&lt;pre&gt;
&lt;code class=&quot;fullwidth&quot; style=&quot;width: 100%&quot;&gt;

                                  +-------------------------------------+  
                                  |        Локальная разработка         |  
                                  |   +------------------------------+  |  
                                  |   |                              |  |  
                                  |   |                              |  |  
                                  |   | +--------------------+       |  |  
                                  |   | |                    |       |  |  
 +------------------------+       |   | |                    |       |  |  
 |Ассеты                  |    +--+--&gt;| |        Сайт        |       |  |  
 |                        |    |  |   | |                    |       |  |  
 |        +----------+    |    |  |   | |                    |       |  |  
 |        |Text      |    |    |  |   | +--------------------+       |  |  
 |        |....      |    |    |  |   |                     localhost|  |  
 | +----+ |...       |    |    |  |   +------------------------------+  |  
 | |... | |.         |    |----+  |                   |                 |  
 | +----+ +----------+    |    |  |                   |                 |  
 |   +-------+ +-------+  |    |  |                   v                 |  
 |   |       | | {{ }} |  |    |  |   +------------------------------+  |  
 |   | .jpg  | +-------+  |    |  |   |      Текстовый редактор      |  |  
 |   |       |            |    |  |   |        (vscode, vim)         |  |  
 |   +-------+            |    |  |   |                              |  |  
 +------------------------+    |  |   +------------------------------+  |  
              ^                |  |                   |                 |  
              |                |  +-------------------+-----------------+  
              +----------------+----------------------+                    
                               |                                           
                               |                                           
                               |                                           
                               |       +-------------------------+         
                               |       |                         |         
                               |       |                         |         
                               |       |  +--------------------+ |         
                               +------&gt;|  |                    | |         
                                       |  |                    | |         
                                       |  |        Сайт        | |         
                                       |  |                    | |         
                                       |  |                    | |         
                                       |  +--------------------+ |         
                                       |                         |         
                                       |           Linux + Apache|         
                                       |            Linux + Nginx|         
                                       +-------------------------+         
                                                    ^                      
                                                    |                      
                                                    |                      
                               +-----------------------------------------+ 
                               |                 Сервер                  | 
                               +-----------------------------------------+ 

&lt;&#x2F;code&gt;
&lt;&#x2F;pre&gt;
&lt;p&gt;Даже если у бедняги выключен javascript - страница всё-равно остаётся доступной. Это просто читабельный маркдаун текст!&lt;&#x2F;p&gt;
&lt;p&gt;Конечно, движок или SSG - даёт определенные удобства:
Автоматически создают страницы для тегов. По-умному это называется таксономией.
Можно генерировать страницы не из текста, а из произвольных данных - ответов API, json&#x2F;yaml-файлов и т.д.
куда больше возможностей по кастомизации вёрстки. Компонентны, виджеты…&lt;&#x2F;p&gt;
&lt;p&gt;Подумайте, надо ли оно вам. Или можно обойтись Markdeep.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Man глубже чем я думал</title>
        <published>2025-09-18T00:00:00+00:00</published>
        <updated>2025-09-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/man-is-deeper-than-i-thought/"/>
        <id>https://4779.ru/p/man-is-deeper-than-i-thought/</id>
        
        <content type="html" xml:base="https://4779.ru/p/man-is-deeper-than-i-thought/">&lt;p&gt;Почему-то я думал, что руководства по системным утилитам это простые текстовые файлики, которые лежат где-то в системе. &lt;code&gt;man&lt;&#x2F;code&gt; просто открывает эти файлы и показывает их пользователю.&lt;&#x2F;p&gt;
&lt;p&gt;А они, оказывается, создаются на лету.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;man-1&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#man-1&quot; aria-label=&quot;Anchor link for: man-1&quot;&gt;MAN(1)&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code&gt;NAME
     man, apropos, whatis – display online manual documentation pages
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;div class=&quot;fullwidth&quot;&gt;&lt;div class=&quot;mxgraph&quot; style=&quot;max-width:100%;border:1px solid transparent&quot; data-mxgraph=&#x27;{&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;resize&quot;:true,&quot;dark-mode&quot;:&quot;auto&quot;,&quot;toolbar&quot;:&quot;zoom layers tags lightbox&quot;,&quot;url&quot;:&quot;&#x2F;img&#x2F;man-util.drawio&quot;}&#x27;&gt;&lt;&#x2F;div&gt;&lt;&#x2F;div&gt;
&lt;h2 id=&quot;man-eto-shell-skript&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#man-eto-shell-skript&quot; aria-label=&quot;Anchor link for: man-eto-shell-skript&quot;&gt;man - это шелл скрипт&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;pre&gt;&lt;code data-lang=&quot;sh&quot;&gt;% which man
&#x2F;usr&#x2F;bin&#x2F;man
% file &#x2F;usr&#x2F;bin&#x2F;man
&#x2F;usr&#x2F;bin&#x2F;man: POSIX shell script text executable, ASCII text
% head -n 7 &#x2F;usr&#x2F;bin&#x2F;man
#! &#x2F;bin&#x2F;sh
#
# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
#
#  Copyright (c) 2010 Gordon Tetlow
#  All rights reserved.
#
%
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;который использует (&#x2F;usr&#x2F;bin&#x2F;man:479) утилиты&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;sh&quot;&gt;...
local _toolpath
for tool in EQN NROFF PIC TBL TROFF REFER VGRIND; do
  eval &amp;quot;_toolpath=\${${tool}}&amp;quot;
...
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;nroff-troff-troff&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#nroff-troff-troff&quot; aria-label=&quot;Anchor link for: nroff-troff-troff&quot;&gt;NROFF TROFF TROFF&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;nroff and the related troff were both developed from the original roff. While nroff was intended to produce output on terminals and line printers, troff was intended to produce output on typesetting systems. Both used the same underlying markup and a single source file could normally be used by nroff or troff without change.
[https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Nroff](wiki: nroff)&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;preprotsessory&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#preprotsessory&quot; aria-label=&quot;Anchor link for: preprotsessory&quot;&gt;Препроцессоры&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;EQN NROFF PIC TBL TROFF REFER VGRIND&lt;&#x2F;code&gt; - системные утилиты&lt;&#x2F;p&gt;
&lt;h2 id=&quot;format-failov&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#format-failov&quot; aria-label=&quot;Anchor link for: format-failov&quot;&gt;Формат файлов&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;mdoc – semantic markup language for formatting manual pages
— man mdoc&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre&gt;&lt;code&gt;% cat &#x2F;usr&#x2F;share&#x2F;man&#x2F;man1&#x2F;passwd.1
.\&amp;quot; Copyright (c) 1990, 1993
.\&amp;quot;	The Regents of the University of California.  All rights reserved.
...
.\&amp;quot; SUCH DAMAGE.
.\&amp;quot;
.\&amp;quot;	@(#)passwd.1	8.1 (Berkeley) 6&#x2F;6&#x2F;93
.\&amp;quot;
.Dd August 18, 2008
.Dt PASSWD 1
.Os &amp;quot;macOS&amp;quot;
.Sh NAME
.Nm passwd
.Nd modify a user&amp;#39;s password
.Sh SYNOPSIS
.Nm passwd
.Op Fl i Ar infosystem Op Fl l Ar location
.Op Fl u Ar authname
...
.Xr passwd 5 ,
.Xr pwd_mkdb 8 ,
.Xr vipw 8
.Rs
.%A Robert Morris
.%A Ken Thompson
.%T &amp;quot;UNIX password security&amp;quot;
.Re
.Sh HISTORY
A
.Nm passwd
command appeared in
.At v6 .
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;script defer src=&#x2F;js&#x2F;viewer-static.min.js&gt;&lt;&#x2F;script&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Worse is better (Чем хуже, тем лучше)</title>
        <published>2025-09-14T00:00:00+00:00</published>
        <updated>2025-09-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/is-worse-is-better/"/>
        <id>https://4779.ru/p/is-worse-is-better/</id>
        
        <content type="html" xml:base="https://4779.ru/p/is-worse-is-better/">&lt;p&gt;Оригинальное эссе называлось «Победа хуже-лучше» («The Rise of Worse is Better»)&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#rise_of_worse_is_better&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Оно шло как приложение к The UNIX-HATERS Handbook. Упомянуто как часть философии Юникс на вики(en)&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#unix_phil_wiki_en&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;, на русской есть статья о нём&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#worse_is_better_wiki_ru&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Однако, сам автор позже сам же его раскритиковал. А в последующих эссе развил мысль в другом направлении &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#dreamsongs_com_worse_is_better&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;chem-khuzhe-tem-luchshe-khuzhe&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#chem-khuzhe-tem-luchshe-khuzhe&quot; aria-label=&quot;Anchor link for: chem-khuzhe-tem-luchshe-khuzhe&quot;&gt;«Чем хуже - тем лучше» - хуже&lt;&#x2F;a&gt;&lt;&#x2F;h1&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dreamsongs.com&#x2F;Files&#x2F;worse-is-worse.pdf&quot;&gt;Критика оригинальной статьи&lt;&#x2F;a&gt; («Чем хуже - тем лучше») от самого же автора (под псевдонимом).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;img&#x2F;Worse_is_Better_is_Worse_-_Nickieben_Bourbaki_(Richard_P._Gabriel)_(%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%D0%93%D0%B8%D0%B3%D0%B0%D1%87%D0%B0%D1%82%D0%B0).pdf&quot;&gt;Перевёл на-русский гигачатом&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Кратко:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Всё эссе родилось из размышлений почему Лисп-машины и Лисп проиграл в рыночной конкуренции Си и Юникс. От работника компании, которая занималась разработкой на Лисп. То есть, в целом, это рефлексия из обиды.&lt;&#x2F;li&gt;
&lt;li&gt;Не было никакой школы “правильных вещей”. Не было никакой борьбы ЭмАйТи и Нью-Джерси. Оно и родилось из этого эссе.
&lt;ul&gt;
&lt;li&gt;Что такое вообще “Сделать правильно”? Это что-то из мира недостижимых идеалов. Это нельзя назвать подходом к разработке.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Если и думать про борьбу двух подходов, то Юникс и был той самой “правильной вещью” для своего времени.&lt;&#x2F;li&gt;
&lt;li&gt;Существенно на то, почему у Юникс «получилось» повляло распространение машин, где он работал.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;В дальнейших заметках Ричард говорит о том, что важен, говоря современными терминами, time to market. Важно сделать не идеально, а сделать «главное». Продукт (в том числе и программный) должен выйти на рынок как можно быстрее и заполнить всю возможную нишу быстрее конкурентов.&lt;&#x2F;p&gt;
&lt;p&gt;Принципиально же ориентировать на простоту в дизайне, в ущерб всему - не стоит.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;rise_of_worse_is_better&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;Почитать его можно много где. &lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;doc.cat-v.org&#x2F;programming&#x2F;worse_is_better&quot;&gt;doc.cat-v&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dreamsongs.com&#x2F;RiseOfWorseIsBetter.html&quot;&gt;на сайте самого автора&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;dreamsongs_com_worse_is_better&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;4&lt;&#x2F;sup&gt;
&lt;p&gt;История вокруг этого эссе &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dreamsongs.com&#x2F;WorseIsBetter.html&quot;&gt;есть на сайте автора&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;worse_is_better_wiki_ru&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;3&lt;&#x2F;sup&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;4779.ru&#x2F;p&#x2F;is-worse-is-better&#x2F;%22https:&#x2F;&#x2F;ru.wikipedia.org&#x2F;wiki&#x2F;%D0%A7%D0%B5%D0%BC_%D1%85%D1%83%D0%B6%D0%B5,_%D1%82%D0%B5%D0%BC_%D0%BB%D1%83%D1%87%D1%88%D0%B5%22&quot;&gt;Чем хуже, тем лучше (ру википедия)&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;unix_phil_wiki_en&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;2&lt;&#x2F;sup&gt;
&lt;p&gt;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Unix_philosophy&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Шринкфляция в it</title>
        <published>2025-06-05T00:00:00+00:00</published>
        <updated>2025-06-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/software-shrinkflation/"/>
        <id>https://4779.ru/p/software-shrinkflation/</id>
        
        <content type="html" xml:base="https://4779.ru/p/software-shrinkflation/">&lt;p&gt;Всё чаще встречаю упоминание эншиттификации&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#visil-Enshittification-post&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;. Мне не нравится этот термин. Я думаю, что его используют разработчики-и-около исходя из, своего, инженерного видения мира. А в энщиттификации нет ничего нового. Просто отрасль долго варилась на инвестиционные деньги и теперь их надо отрабатывать. И совпало это с эпохой шринкфляции.&lt;&#x2F;p&gt;
&lt;p&gt;Навязывание платных подписок путём ухудшения бесплатного пользовательского опыта, а затем ещё ухудшение пользовательского опыта платных подписчиков - это айтишный эквивалент шринкфляции. Девятка яиц, изогнутых бутылочек (объем меньше, а выглядит таке) или двух конфеток в одной упаковке под один большой шоколадный батончик.&lt;&#x2F;p&gt;
&lt;p&gt;Технологические компании - это коммерческие организации. А цель любой коммерческой деятельности - извлечение прибыли. Было время посева - говорили о этике. Пришло время соответствовать ожидаемым мультипликаторам&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#multiples&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; - вот вам и энщиттификация.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;multiples&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;2&lt;&#x2F;sup&gt;
&lt;p&gt;Скажем, P&#x2F;E, которые у айтишных компаний просто космические по-сравнению с не-айтишными. Не просто так. Подразумеваются, что компании будут зарабывать за счёт стрижки приобретённых пользователей. Вот и пришло это время.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;chto-s-etim-delat&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#chto-s-etim-delat&quot; aria-label=&quot;Anchor link for: chto-s-etim-delat&quot;&gt;Что с этим делать?&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Терпеть. И платить.&lt;&#x2F;p&gt;
&lt;p&gt;Смирение. Умерить свои потребности. Разумный минимализм.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;visil-Enshittification-post&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;visil.gw.lt&#x2F;enshhittifikacziya-texnologij.html&quot;&gt;Энщиттификация технологий (visilii’s blog)&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Hugo и тема til</title>
        <published>2025-05-26T00:00:00+00:00</published>
        <updated>2025-05-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/hugo-with-til-theme/"/>
        <id>https://4779.ru/p/hugo-with-til-theme/</id>
        
        <content type="html" xml:base="https://4779.ru/p/hugo-with-til-theme/">&lt;h2 id=&quot;hugo&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#hugo&quot; aria-label=&quot;Anchor link for: hugo&quot;&gt;Hugo&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Размышляя о избыточности и комплексности решений (я об этом думаю всю последнюю неделю после знакомства с cat-v) я пришел к идее, что все-таки, генератор статического сайта должен поставляться единым бинарником. Как &lt;strong&gt;Hugo&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Почему?&lt;&#x2F;p&gt;
&lt;p&gt;Jekyll требует установленный ruby. Но ruby не идёт сам по-себе.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Разные проекты требуют разную версию ruby. Для гибкого управления версиями - &lt;strong&gt;rbenv&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Зависимости (тот же Jekyll)? Менеджер пакетов - &lt;strong&gt;bundle&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Ну и для запуска нужно помнить все эти &lt;code&gt;bundle exec jekyll serve&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;И это не проблема Jekyll или ruby. Для джаваскрипта всё те же nvm, и npm. Раньше ещё было чудище - yarn&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#yarn&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;yarn&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;Оно здесь и сейчас. Просто npm перенял .lock-файлы и Yarn встречается всё реже&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Или всякие pyenv для питона.&lt;&#x2F;p&gt;
&lt;p&gt;Интерпретируемые языки сегодня - тянут с собой слишком много.&lt;&#x2F;p&gt;
&lt;p&gt;Я смотрел на Hugo и раньше. Но меня смущало&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Идея тем (themes) для сайта.&lt;&#x2F;li&gt;
&lt;li&gt;Отсутствие подходящей для меня темы&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Однако, сравнив свой опыт с шаблонами проекта (starterkits) в Jekyll и 11ty (&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.11ty.dev&#x2F;docs&#x2F;starter&#x2F;&quot;&gt;11ty Starter Projects&lt;&#x2F;a&gt;) - я поменял своё отношение о темах.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;shablony&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#shablony&quot; aria-label=&quot;Anchor link for: shablony&quot;&gt;Шаблоны&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Шаблоны проекта - наглядны. Просто делаешь форк шаблона и редактируешь на свой вкус.&lt;&#x2F;p&gt;
&lt;p&gt;Однако, после того, как сделал свой форк шаблона, мержить к себе новые изменения из него - боль. Отправлять что-то в родительский репозиторий - тоже. Потому что либо вычищать свои изменения, либо делать новый форк, копировать туда что хотел предложить на исправление и отправлять.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;til&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#til&quot; aria-label=&quot;Anchor link for: til&quot;&gt;Til&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Второе что меня останавливало - отсутствие подходящей темы. Мне не нужен блог, а почти все темы для Hugo - построены вокруг блогов.&lt;&#x2F;p&gt;
&lt;p&gt;И тут я нашел &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;themes.gohugo.io&#x2F;themes&#x2F;hugo-theme-til&#x2F;&quot;&gt;Today I Learned&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Есть посты, а есть заметки&lt;&#x2F;li&gt;
&lt;li&gt;Обратные ссылки&lt;&#x2F;li&gt;
&lt;li&gt;Граф связей между страницами сайта&lt;&#x2F;li&gt;
&lt;li&gt;side-блоки. Очень хотелось бы их иметь&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Это прямо то, что мне и хотелось.&lt;&#x2F;p&gt;
&lt;p&gt;В общем, пока буду обживать эту тему. И переносить свои старые заметки.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Симультанность</title>
        <published>2025-05-26T00:00:00+00:00</published>
        <updated>2025-05-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/simultaneity/"/>
        <id>https://4779.ru/p/simultaneity/</id>
        
        <content type="html" xml:base="https://4779.ru/p/simultaneity/">&lt;p&gt;Впервые услышал про него в документалке Зворыкин-Муромец (11-я минута &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.1tv.ru&#x2F;doc&#x2F;pro-zhizn-zamechatelnyh-lyudey&#x2F;zvorykin-muromets?t=677&quot;&gt;с таймкодом&lt;&#x2F;a&gt;)&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;…Мальчик сразу обратил внимание на то свойство телефона, которое потом будет свойством телевизора, и которое назовут &lt;strong&gt;симультанностью&lt;&#x2F;strong&gt;, то есть сиюминутностью восприятия. Вот говоришь ты по телефону или смотришь телевизор, и это с тобой происходит только сию минуту, сейчас. А пропустил звонок или пропустил передачу и не услышал, не увидел. Тогда это свойство воспринималось как очень угрожающее. Вдруг кто-то тебе позвонит и что-то скажет. Из своего окна Володя видел, как через базарную площадь к ним шёл слуга его деда. Он шёл, чтобы предупредить его мать о намерении её отца ей позвонить. Приходил и почтительно докладывал: “Будьте готовы ответить телефону”.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Кроме этой документалки я нигде не встречал этого термина. Поиск выдаёт “одновременность” в контексте театра, музыки, но в контексте связи я такого никогда, кроме этой документалки, не слышал.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Приватность</title>
        <published>2025-04-24T00:00:00+00:00</published>
        <updated>2025-04-24T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/privacy/"/>
        <id>https://4779.ru/p/privacy/</id>
        
        <content type="html" xml:base="https://4779.ru/p/privacy/">&lt;p&gt;слежка сбор данных iphone android свободные прошивки&lt;&#x2F;p&gt;
&lt;p&gt;Apple проводила маркетинговую кампанию, где сообщала что её устройства более приватные, чем устройства на android.&lt;&#x2F;p&gt;
&lt;p&gt;Популярны сообщества де-гуглификации устройств и своей жизни. Люди целенаправленно отказываются от сервисов гугл и прошивают смартфоны на свободные прошивки.
&lt;img src=&quot;&#x2F;img&#x2F;internet_privacy_larper_vs_average_privacy_enjoyer.jpeg&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Моё мнение - о реальной приватности можно говорить только храня чувствительные данные офлайн, используя сетевой экран (файрвол) с белым списком адресов (а не как обычно - с черным списком). И конечно, не сообщая вообще никуда свои персональные данные или по-которым вас можно как-то идентифицировать. Сегодня, такой цифровой аскетизм трудно себе представить (как же без доставки до двери, без приложения заказа такси, навигатора до работы), а немножко беременной быть нельзя.&lt;&#x2F;p&gt;
&lt;p&gt;Собственно, утечки баз данных яндекса и сдэка показали, что стоит бояться не сбора телеметрии и рекламных меток.&lt;&#x2F;p&gt;
&lt;p&gt;Дальше я хотел бы обсудить всякие решения, ориентированные на приватность.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;svobodnye-proshivki-bez-guglov&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#svobodnye-proshivki-bez-guglov&quot; aria-label=&quot;Anchor link for: svobodnye-proshivki-bez-guglov&quot;&gt;Свободные прошивки без гуглов&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Само по-себе отсутствие сервисов от гугла в прошивке не улучшит приватность устройства. Да и как оно может его улучшить? Приложения носят сдк поставщиков телеметрии с собой.&lt;&#x2F;p&gt;
&lt;p&gt;Да, свободная прошивка + исключительно свободное ПО не будет посылать телеметрии. Но это особый путь, можно сказать - образ жизни. Столлман вот не пользуется мобильным телефоном принципиально. Но он такой один.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Emacs</title>
        <published>2024-11-27T00:00:00+00:00</published>
        <updated>2024-11-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://4779.ru/p/emacs/"/>
        <id>https://4779.ru/p/emacs/</id>
        
        <content type="html" xml:base="https://4779.ru/p/emacs/">&lt;h2 id=&quot;emacs-ili-vi&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#emacs-ili-vi&quot; aria-label=&quot;Anchor link for: emacs-ili-vi&quot;&gt;Emacs или Vi&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Есть классический vi, а vim это vi improved. Имхо, расширять консольные (а Имакс все-таки, консольный) текстовые редакторы до состояния интегрированной среды - это слишком.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;trolleybus.jpg&quot; alt=&quot;мем про троллейбус из буханки хлеба и пары спиц&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Если выбирать из этих двух (Имакс или Ви), то вопрос в манере работы - манере юниксовой или манере работы с интегрированной средой.&lt;&#x2F;p&gt;
&lt;p&gt;Если работаешь в юниксовой манере: используешь оболочку (Bourne Shell, Zsh, Korn shell), а там man, less, more, tail - то знание горячих клавиш и команд vi пригодится. Плюс, множество утилит используют те же хоткеи (hjkl). Для Имакса же надо заучить собственные горячие клавиши. Либо ставить evil-mode.&lt;&#x2F;p&gt;
&lt;p&gt;Имакс - это не про текстовый редактор, а про редактор, плюс:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;tramp для работы с удаленными машинами (на удаленных машинах должен быть гнушный bash)&lt;&#x2F;li&gt;
&lt;li&gt;dired, для работы с файлами&lt;&#x2F;li&gt;
&lt;li&gt;читать мануалы через info&lt;&#x2F;li&gt;
&lt;li&gt;org-mode чтобы вести заметки, дневник, календарь&lt;&#x2F;li&gt;
&lt;li&gt;читать почту&lt;&#x2F;li&gt;
&lt;li&gt;magit - для работать с гитом&lt;&#x2F;li&gt;
&lt;li&gt;а что требует командной оболочки - запускать через eshell&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Полный Имакс!&lt;&#x2F;p&gt;
&lt;p&gt;Это &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;andreyor.st&#x2F;posts&#x2F;2023-06-12-the-key-point-of-emacs&#x2F;&quot;&gt;мысль&lt;&#x2F;a&gt; не моя, если что.&lt;&#x2F;p&gt;
&lt;p&gt;Но, имхо, Имакс плох и как редактор и как платформа.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;emacs-kak-redaktor-teksta&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#emacs-kak-redaktor-teksta&quot; aria-label=&quot;Anchor link for: emacs-kak-redaktor-teksta&quot;&gt;Emacs как редактор текста&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Например, вставить новую строку над курсором - из коробки нет горячей клавиши.&lt;&#x2F;p&gt;
&lt;p&gt;Вообще, горячие клавиши Имакса ну ооочень своеобразны. Точнее, они мнемоничны (f - forward, p - previous), но не эргономичны. И не пригодятся нигде, кроме Имакса.&lt;&#x2F;p&gt;
&lt;p&gt;Да, можно написать свою функцию для перемещения курсора на строку выше и вставки новой строки там. И повесить её на любую клавишу.&lt;&#x2F;p&gt;
&lt;p&gt;Да, можно врубить CUA-mode, и получить &lt;em&gt;простые&lt;&#x2F;em&gt; Ctrl-C, Ctrl-V.&lt;&#x2F;p&gt;
&lt;p&gt;Можно, вообще, поставить дополнительный evil-mode в Имакс чтобы &lt;em&gt;получить лучший Вим, чем сам Вим&lt;&#x2F;em&gt;. Можно поставить пакет для ленивого (fuzzy) поиска нужных команд. Но это всё пердолинг. О нём &lt;a href=&quot;#хакинг&quot; class=&quot;internal-link&quot;&gt;ниже&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;emacs-kak-platforma&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#emacs-kak-platforma&quot; aria-label=&quot;Anchor link for: emacs-kak-platforma&quot;&gt;Emacs как платформа&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Как у платформы, у Имакса есть значимые недостатки:&lt;&#x2F;p&gt;
&lt;h4 id=&quot;imaks-odnopotochnyi&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#imaks-odnopotochnyi&quot; aria-label=&quot;Anchor link for: imaks-odnopotochnyi&quot;&gt;Имакс однопоточный&lt;&#x2F;a&gt;&lt;&#x2F;h4&gt;
&lt;p&gt;Зависла исполняемая команда - завис весь редактор, со всеми буфферами.&lt;&#x2F;p&gt;
&lt;p&gt;Пример из жизни. У меня при подключении к удаленной машине через Трамп завис весь Имакс. В итоге, убив Имакс я потерял где какие буфферы были открыты в каких фреймах&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#about_frames&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;about_frames&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;Какие фреймы? А в терминологии Имакса фреймы - это окна. А во фреймах окна, которые вкладки. А вот сами вкладки - это уже те самые буфферы.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h4 id=&quot;dazhe-v-graficheskom-rezhime-eto-vse-eshchio-konsol-noe-prilozhenie&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#dazhe-v-graficheskom-rezhime-eto-vse-eshchio-konsol-noe-prilozhenie&quot; aria-label=&quot;Anchor link for: dazhe-v-graficheskom-rezhime-eto-vse-eshchio-konsol-noe-prilozhenie&quot;&gt;Даже в графическом режиме, это все ещё консольное приложение&lt;&#x2F;a&gt;&lt;&#x2F;h4&gt;
&lt;p&gt;Компоновка интерфейса в консоли и в окне одинаковая. Единственное отличие - в терминале есть псевдографические элементы, а в графическом режиме это полноценные графические (кнопки, полосы прокрутки, вот это всё).&lt;&#x2F;p&gt;
&lt;p&gt;Беды с прокруткой содержимого:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;полоса горизонтальной прокрутки по-умолчанию выключена, если строка длиннее окна - показывается значок стрелочки вправо&lt;&#x2F;li&gt;
&lt;li&gt;кратная строке (по-умолчанию, можно сделать, опять же, &lt;em&gt;нормальной&lt;&#x2F;em&gt;, попиксельной)&lt;&#x2F;li&gt;
&lt;li&gt;не инерционная (особая боль на маке) и включить это никак нельзя. Народ &lt;em&gt;хакает&lt;&#x2F;em&gt; это на лиспе.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Да, всё чинится, а проблемы в устаревших дефолтах. Но это надо &lt;em&gt;“чинить”&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;imaks-ustarel&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#imaks-ustarel&quot; aria-label=&quot;Anchor link for: imaks-ustarel&quot;&gt;Имакс устарел&lt;&#x2F;a&gt;&lt;&#x2F;h4&gt;
&lt;p&gt;“Чинить” - не просто так в кавычках, а потому что Имакс не сломан. Имакс устарел. А менять устаревшие дефолты не будет, потому что это сломает кучу написанного поверх кода.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;imgs.xkcd.com&#x2F;comics&#x2F;workflow.png&quot; alt=&quot;xkcd - EVERY CHANGE BREAKS SOMEONES WORKFLOW.&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Современному пользователю, живущему в графическом окружении, Имакс не даёт никаких преимуществ. Зато имеет кучу наследственных “особенностей”. Эти особенности - не забытое кун-фу древних мастеров, не горшочек с золотом на другом конце кривой обучения. Это всё переизобретение того что уже есть.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;dired&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#dired&quot; aria-label=&quot;Anchor link for: dired&quot;&gt;Dired&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Основная идея Диреда в том, что директория выглядит как вывод команды ls -l в текстовом редакторе и ты можешь ходить по-ней как по-тексту. В этом вообще фича Имакса как платформы.&lt;&#x2F;p&gt;
&lt;p&gt;Но чем это принципиально лучше какого-нибудь терминального файлового менеджера (ranger, lf, nnn) я не понял.&lt;&#x2F;p&gt;
&lt;p&gt;Особенностью преподносится возможность отредактировать этот текстовый буфер (поменять права, создать новые папки, удалить старые, переименовать существующие), сохранить будто-то бы это текстовый файл - и Dired сам всё сделает. Я эту возможность не оценил, поскольку я в принципе не припомню, чтобы у меня возникала такая потребность в массовом изменении файлов. А поменять что-то у отдельный файлов или директорий проще через привычные chown, mv, rm и проч.&lt;&#x2F;p&gt;
&lt;p&gt;А &lt;em&gt;лазить&lt;&#x2F;em&gt; по директориям через Диред - точно не удобнее. Особенно, когда понимаешь, что правильно - раскрывать директории в списке, а не &lt;em&gt;посещать&lt;&#x2F;em&gt; их - потому что на каждое &lt;em&gt;посещение&lt;&#x2F;em&gt; - открывается новый Диред буфер.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;dired-tramp&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#dired-tramp&quot; aria-label=&quot;Anchor link for: dired-tramp&quot;&gt;Dired + Tramp&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;в Имакс можно смотреть директории на других машинах, например, через ssh. Открыл директорию, в ней открыл файл, отредактировал и сохранил. Есть возможность запустить там же команду. Красиво, элегантно. Но я столкнулся с проблемой.&lt;&#x2F;p&gt;
&lt;p&gt;Или было медленное соединение, или на удаленной машине терминал выдавал Трампу что-то неожиданное для него - и в итоге зависал весь Имакс на минуту, чтобы потом показать неинформативный текст о том, что не удалось подключиться.&lt;&#x2F;p&gt;
&lt;p&gt;К тому же, очевидно, что этот функционал не уникален. Есть псевдографический гнушный mc (Midnight Commander). В нем можно ходить другие машины, копировать туда-обратно файлы и даже редактировать во встроенном редакторе.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;org-mode&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#org-mode&quot; aria-label=&quot;Anchor link for: org-mode&quot;&gt;Org-mode&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Написал отдельно, в [[Ведение заметок|сравнении]] заметочников.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;shell-i-terminal-imaksa&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#shell-i-terminal-imaksa&quot; aria-label=&quot;Anchor link for: shell-i-terminal-imaksa&quot;&gt;Shell и терминал Имакса&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Внутри Имакса есть свой эмулятор терминала. Можно пользоваться системной оболочкой изнутри Имакса. Можно бегать курсором по выводу предыдущей команды. Классно. Но это базовый функционал любого эмулятора терминала. Это можно сделать и в терминале через мультиплексор (tmux).&lt;&#x2F;p&gt;
&lt;h3 id=&quot;info&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#info&quot; aria-label=&quot;Anchor link for: info&quot;&gt;Info&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Для чтения документации приложений от Гну может использоваться утилита Info, которая представляет собой упрощенный Имакс. И в Имакс можно читать документацию к самому Имакс и к другим приложениям - это одно и то же. В теории, конечно, здорово иметь под рукой локальную копию документации и удобные средства её просмотра. Но я давно предпочитаю просто вбить в поисковик то что ищу и читать документацию через браузер. Гораздо удобнее и привычнее.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;magit&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#magit&quot; aria-label=&quot;Anchor link for: magit&quot;&gt;Magit&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Не дошел до его использования. Но имхо - лучшая реализации работы с гитом - в идее. Искренне сомневаюсь, что Маджит удобнее (а не привычнее имаксерам).&lt;&#x2F;p&gt;
&lt;h3 id=&quot;chtenie-pochty-vsiakie-rss-klienty-i-proch-i-proch&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#chtenie-pochty-vsiakie-rss-klienty-i-proch-i-proch&quot; aria-label=&quot;Anchor link for: chtenie-pochty-vsiakie-rss-klienty-i-proch-i-proch&quot;&gt;Чтение почты, всякие rss-клиенты, и проч и проч&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Это даже как-то не серьезно обсуждать. Почта, к слову, открывается как текст, а не как html. Должно быть забавно.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;khaking&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#khaking&quot; aria-label=&quot;Anchor link for: khaking&quot;&gt;Хакинг&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Да, можно назначить горячие клавиши из Вима (evil-mode). Есть и другие раскладки горячих клавиш (&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;xahlee&#x2F;xah-fly-keys&quot;&gt;xah-fly-keys&lt;&#x2F;a&gt;). Но evil-mode работает только при редактировании текста. В Диреде, например, горячие клавиши останутся прежними. Надо перебивать.&lt;&#x2F;p&gt;
&lt;p&gt;Впрочем, есть уже готовые сборочки.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;sborochki-imaksa&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#sborochki-imaksa&quot; aria-label=&quot;Anchor link for: sborochki-imaksa&quot;&gt;Сборочки Имакса&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Спорт здоровому не нужен, а больному противопоказан.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Речь о Doomemacs или Spacemacs. Преднастроенные конфиги, чтобы:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;привести Имакс к современному виду (темная тема, шрифты, эмодзи)&lt;&#x2F;li&gt;
&lt;li&gt;донести мастхэв-пакеты&lt;&#x2F;li&gt;
&lt;li&gt;перебить дефолты на &lt;em&gt;адекватные&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Но они вместе с этим всё усложняют. Теперь надо искать не как сделать что-то в Имаксе, а как сделать что-то в Думимаксе. Ответов в сети, очевидно, на порядок меньше или нет вообще.&lt;&#x2F;p&gt;
&lt;p&gt;Рекомендации от опытных имаксеров сводятся к тому, чтобы:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;попользоваться ванильным имаксом&lt;&#x2F;li&gt;
&lt;li&gt;познакомиться с имаксовым лиспом&lt;&#x2F;li&gt;
&lt;li&gt;и уже потом, ставить пакеты по-отдельности, собирая свою сборочку&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Итого - сборочки только усложняют вход для новичка, а у опытного имаксера есть уже свои дотфайлы.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
