<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Evgenii Karagodin</title><generator>teletype.in</generator><description><![CDATA[JavaScript и усиление интеллекта]]></description><image><url>https://teletype.in/files/67/21/672171aa-0dcb-4b3b-bb57-7c67eabcf058.jpeg</url><title>Evgenii Karagodin</title><link>https://blog.ekaragodin.com/</link></image><link>https://blog.ekaragodin.com/?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/ekaragodin?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/ekaragodin?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 22 Apr 2026 12:26:29 GMT</pubDate><lastBuildDate>Wed, 22 Apr 2026 12:26:29 GMT</lastBuildDate><item><guid isPermaLink="true">https://blog.ekaragodin.com/XCt-zxZEvOs</guid><link>https://blog.ekaragodin.com/XCt-zxZEvOs?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin</link><comments>https://blog.ekaragodin.com/XCt-zxZEvOs?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin#comments</comments><dc:creator>ekaragodin</dc:creator><title>Пиши, публикуй</title><pubDate>Sat, 06 Aug 2022 16:47:17 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/45/6b/456bb296-a8ce-4d10-a925-3841576b8860.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/be/c1/bec1c3d3-2379-4810-8c2a-36c0dfcb44b5.jpeg"></img>Давно не писал в блог, но это не значит что я совсем ничего не пишу. Месяц назад начался марафон &quot;Пиши, публикуй&quot; от Агментек в котором я участвую. Суть марафона в том, чтобы два раза в неделю писать посты по предложенным организаторами темам. Темы на следующую неделю выбирают участники в воскресенье, голосуя за две понравившихся из списка предложенных. Но можно выбрать и свою, если тема не зашла. Главное написать и опубликовать пост в среду и субботу. Наказание для тех, кто не успеет вовремя... написать ещё один пост!]]></description><content:encoded><![CDATA[
  <figure id="2yyR" class="m_retina">
    <img src="https://img4.teletype.in/files/be/c1/bec1c3d3-2379-4810-8c2a-36c0dfcb44b5.jpeg" width="1280" />
  </figure>
  <p id="1v0p">Давно не писал в блог, но это не значит что я совсем ничего не пишу. Месяц назад начался марафон &quot;Пиши, публикуй&quot; от <a href="https://augmentek.online/" target="_blank">Агментек</a> в котором я <a href="https://t.me/ekaragodin_channel/86" target="_blank">участвую</a>. Суть марафона в том, чтобы два раза в неделю писать посты по предложенным организаторами темам. Темы на следующую неделю выбирают участники в воскресенье, голосуя за две понравившихся из списка предложенных. Но можно выбрать и свою, если тема не зашла. Главное написать и опубликовать пост в среду и субботу. Наказание для тех, кто не успеет вовремя... написать ещё один пост!</p>
  <p id="gugA">Не сразу решился участвовать, потому что начало марафона совпало у меня с началом отпуска. Начало действительно получилось не простым. Например, пост про заботу о себе писал на телефоне в двенадцать ночи, немного простывший, в Горном Алтае. К счастью, остальные посты писал в более комфортных условиях. Прошла половина марафона, так что самое время подвести итоги.</p>
  <p id="B0PE">Основная задача в марафоне для меня это потренироваться в регулярном <a href="https://blog.ekaragodin.com/lfmOvTJJ3bY" target="_blank">мышлении письмом</a>. Писать более-менее осмысленный пост размером в две-три тысячи символов на произвольную тему. И, что важно, за приемлемое время - полтора-два часа. Получается, но с некоторой натяжкой: пока не получилось сделать процесс написания постов частью ежедневной рутины, почти всегда это усилия в последний момент, чтобы успеть к дедлайну. Выручает четырёхчасовая разница с Москвой. Ну и всегда приходится чем-то жертвовать, чтобы успеть за отведённое время. Не гонюсь за большим объёмом или крутым содержимым, для меня сейчас важнее поддерживать регулярность.</p>
  <p id="L7Kz">Посты публикую в телеграм канале, а не в блоге. Раньше делал наоборот, писал посты в блог, а в канал постил ссылку с аннотацией. Обратную связь можно было оставить в блоге: тут есть реакции и комментарии. Но марафонские посты решил публиковать только в канал. Из-за своего небольшого размера это для них кажется более подходящим местом. Да и подавляющее большинство участников марафона  постят в телеграм, так что для единообразия так тоже удобнее. Реакции и комментарии в телеграме уже давно есть, а отсутствие индексации поисковиками компенсируется тем, что у Teletype индексация сломалась ещё в прошлом году.</p>
  <p id="QFA3">Большой плюс и одновременно минус марафона это количество участников. В общем чате 65 человек. С одной стороны это очень разные люди, с разным опытом и взглядами на жизнь. Действительно много интересных текстов, я постоянно сохраняю себе прочитанные посты. В канале Агментека можно почитать дайджесты с избранными постами участников. Но с другой стороны 65 человек это очень много. Я постарался подписаться на всех участников, в итоге у меня сейчас в папке марафона 64 канала. Читать это всё оказалось для меня нереально. Последние время там вечные 40+ непрочитанных. Я уже не говорю о том, чтобы давать какую-то обратную связь кроме реакций. То что читать придётся много стало понятно сразу, но у меня было ожидание, что со временем люди будут отваливаться и количество каналов уменьшится. Но ожидание не оправдалось: на место ушедших стали добавлять новых участников, которые начинали писать с текущей недели.</p>
  <p id="gS50">Вообще этот ход с постоянным пополнением новыми участниками мне показался довольно странным. Во-первых, это обесценивает моё маленькое достижение продержаться в марафоне. Во-вторых, какой это марафон если посередине в него могут забегать люди? Это скорее поезд с временными попутчиками, который едет два месяца. Это немного меняет отношение и ко всему процессу и к участникам. Как мне кажется не в лучшую сторону.</p>
  <p id="AuMx">Для технической части тоже есть идеи для улучшений. Сейчас участники скидывают ссылку на свой пост в общий чат. Это просто и, наверное, удобно организаторам, что все ссылки в одном месте, но мне как участнику это очень не удобно. В этом же чате сообщения от организаторов и рандомные дискуссии участников. Это затрудняет вовремя читать сообщения оргов и нереально уследить какие посты прочитал, а какие нет если нет времени прочитать их сразу. Механика с самостоятельной подпиской на каналы участников тоже неудобная. Во-первых, подписаться на 60 каналов это так себе удовольствие. Нужно же ещё для них отдельную папку в телеграм сделать, чтобы они постоянно не отвлекали. Короче, это куча телодвижений. Да ещё у многих в каналах посты не только связанные с марафоном. Кажется, что всё это можно было бы сильно упростить, если бы ссылки на посты участники отправляли через какую-нибудь гугл-форму, а бот (или специально обученный человек) постил их в <strong>один</strong> канал созданный организаторами. Так и читать проще в одном месте и не нужно каждому разбираться как настроить комментарии в своём канале.</p>
  <p id="NO9S">О процессе написания постов. Посты я пишу в приложении для заметок. В начале решил поэкспериментировать с <a href="https://anytype.io/" target="_blank">Anytype</a>. И пожалел - приложения (особенно мобильное) довольно сырые и вести там заметки оказалось неудобно. И вообще у Anytype довольно пафосный сайт, который формирует очень высокие ожидания. А на деле это оказывается слабое подобие Notion. Там есть пара концептуальных отличий, но общая сырость продукта и маленький набор фич пока перевешивают. В итоге, когда отпуск закончился, перенёс все написанные посты в <a href="https://obsidian.md/" target="_blank">Obsidian</a> и продолжаю писать в нём. Файл с темой создаю заранее, если есть время, то записываю туда какие-то идеи и мысли. Но основная работа всё равно происходит в последний день. Перед тем как начать писать стараюсь почитать посты других участников, чтобы лучше настроиться. Если пишу не на телефоне, то закидываю текст на проверку в <a href="https://glvrd.ru/" target="_blank">Главред</a> и поправляю совсем дичь. После этого публикую в свой канал. Если вспоминаю мем в тему, то закидываю его следующим сообщением. Когда закидываю ссылку в чат марафона, то стараюсь хоть что-то написать про пост, но на этом чаще всего срезаю.</p>
  <p id="1Hdj">Под влиянием марафона начал понемногу писать в таком же коротком формате на профессиональные темы. Первый такой пост - про <a href="https://t.me/ekaragodin_channel/96" target="_blank">монорепозитории</a>. Тут у меня план такой, что маленькими кусочками писать про большую тему, если постов наберётся достаточно, то собирать из них большой пост для блога.</p>
  <p id="hze3">Если стало интересно, заходите в канал <a href="https://t.me/ekaragodin_channel" target="_blank">https://t.me/ekaragodin_channel</a>, читайте и подписывайтесь. Ниже список постов опубликованных за время марафона (без даты это черновики).</p>
  <figure id="mC9J" class="m_original">
    <img src="https://img2.teletype.in/files/55/47/55473895-736f-4cbe-95c8-d600466e3931.png" width="1816" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.ekaragodin.com/wUA6QD2O0uT</guid><link>https://blog.ekaragodin.com/wUA6QD2O0uT?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin</link><comments>https://blog.ekaragodin.com/wUA6QD2O0uT?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin#comments</comments><dc:creator>ekaragodin</dc:creator><title>Системное предпринимательство в личных проектах</title><pubDate>Wed, 23 Mar 2022 03:06:38 GMT</pubDate><description><![CDATA[Сначала разберёмся, что такое системное предпринимательство. Так как системное предпринимательство - это предпринимательство с системным мышлением в голове, то системное мышление пока вынесем за скобки и попробуем понять в чём суть предпринимательства.]]></description><content:encoded><![CDATA[
  <p id="rLK4">Сначала разберёмся, что такое системное предпринимательство. Так как системное предпринимательство - это предпринимательство с системным мышлением в голове, то системное мышление пока вынесем за скобки и попробуем понять в чём суть предпринимательства.</p>
  <p id="RM0G">Предпринимательство - это принятие решений в условиях неопределённости о каких-то действиях в физическом мире от которых зависит, получите вы в будущем прибыль или убыток. Прибыль или убыток считаем как сумму всех потраченных на совершение действий ресурсов со всеми полученными в результате действий ресурсами (всё что вы считаете ценным: деньги, время, внимание, здоровье и т.д.).</p>
  <p id="WJlz">Таким образом любой человек постоянно принимает предпринимательские решения: купить квартиру подороже, но поближе к центру или подешевле, но на окраине города. При этом полученная или потраченная ценность субъективны. Кому-то важно экономить деньги, чтобы потратить их на что-то другое. Кому-то важнее экономить время, которое он будет тратить, чтобы добраться до работы. Кто-то сейчас работает на работе с повышенной вредностью, зато в будущем рассчитывает пораньше выйти на пенсию. Кто-то открывает пекарню рассчитывая, что доход от продажи продукции этой пекарни в будущем превысит расходы на её открытие сейчас.</p>
  <p id="1z2I">Из определения предпринимательства нельзя выкинуть ничего. Если решения принимаются, но не на какие действия в мире это не влияет, то это не предпринимательство. Например, выбрать ответ на вопрос в кроссворде это не предпринимательское решение. А вот решение потратить своё время на разгадывание кроссворда или на подтягивание на турнике уже вполне предпринимательское. При этом решение <strong>не</strong> делать что-то тоже вполне предпринимательское, так как это значит, что какие-то действия в мире не произойдут. Ресурсы при этом тоже вполне: своё время вы всё равно на что-то тратите (хотя бы на лежание на диване), физические ресурсы со временем приходят в негодность или обесцениваются и т.д. И какую-то ценность от такого решения тоже можно получить - вы можете отдохнуть, вам может прийти в голову какая-то интересная идея и т.д.</p>
  <p id="arZW">Действия, когда отсутствует неопределённость или вообще нет необходимости принимать решения тоже не относятся к предпринимательству. Например, вы в точности исполняете выданный вам алгоритм шаги которого чётко прописаны. Сборка изделия по инструкции, действия рабочего на конвейере, последовательность вопросов у оператора колл центра. А вот решение выйти за рамки алгоритма или сменить один алгоритм на другой может быть предпринимательским. Например, рабочий на конвейере может проявить инициативу если заметил какую-то проблему и остановить конвейер. За это он может в будущем получить премию (вовремя заметил проблему и предотвратил убытки) или штраф (перестраховался, никакой проблемы не было, компания получила убытки из-за остановки конвейера). Человек взвешивает вероятности этих событий и потенциальные прибыли или убытки и на основе этого принимает решение о своих действиях.</p>
  <p id="vO1o">И, наконец, если действия совершённые в результате ваших решений на вас никак не влияют, то это тоже не предпринимательство. Обычно это советы другим о том как им следует поступить. Не стоит бездумно следовать советам даже очень авторитетных для вас людей, если их будущее никак не зависит от того, последуете вы их совету или нет. Все риски от решения вы берёте на себя. Принятие рисков это важная часть предпринимательства. Ирония в том, что люди часто боятся брать на себя какие-то очевидные риски и перекладывают важные решения на других людей и в результате принимают ещё большие риски (но уже не такие очевидные), что эти люди примут такие решения от которых вам в будущем будут одни убытки.</p>
  <p id="WBnn">В итоге приходим к тому, что любой человек в какие-то моменты жизни исполняет роль предпринимателя (хотя первое время это может звучать довольно странно, так как сильно отличается от бытового понимания предпринимательства). Это означает, что мы можем использовать предпринимательские практики не только когда хотим открыть ларёк с шаурмой, но и когда выбираем новую работу или куда пойти учиться и т.д. Конечно, некоторые прикладные предпринимательские практики могут выглядеть избыточными. Например, использование <a href="https://en.wikipedia.org/wiki/Business_Model_Canvas" target="_blank">Business Model Canvas</a> для персональных проектов может потребовать слишком много времени (и, вероятно, больших усилий по адаптации). Но ключевые практики будут полезны в большинстве проектов: выявление возможностей, стратегирование, решение о допустимых максимальных потерях и т.д.</p>
  <p id="S5ZD">Возвращаясь к связке предпринимательства с системным мышлением. Оно даёт объекты внимания для предпринимателя, чтобы не упустить важного: роли и их интересы, понимание что в любом проекте есть целевая система (и её нужно найти!), а сам проект это система обеспечения по созданию целевой системы и т.д.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.ekaragodin.com/TDHcHzH4FZU</guid><link>https://blog.ekaragodin.com/TDHcHzH4FZU?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin</link><comments>https://blog.ekaragodin.com/TDHcHzH4FZU?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin#comments</comments><dc:creator>ekaragodin</dc:creator><title>Стек саморазвития</title><pubDate>Mon, 21 Feb 2022 01:58:21 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/38/29/38296e69-bdeb-440c-bab0-85ebbe83a5e5.png"></media:content><description><![CDATA[В курсе &quot;Образование для образованных&quot; даётся описание интеллект-стека из 17 трансдисциплин. Важно, что это именно дисциплины, а не практики. Среди них, почти в самом низу, есть собранность. Собранность это владение умом и телом. Именно здесь вводится понятие сознания как механизма управления вниманием и дальше осознанность как произвольное управление вниманием. В &quot;Системном саморазвитии&quot; даётся свой стек - это стек саморазвития. Он уже состоит не из трансдисциплин, а из мастерств, ключевым из которых является мастерство собранности. Кроме него в стек саморазвития входят: психопрактическое мастерство, мастерство самолидерства, эмоциональное мастерство, телесное мастерство и мастерство размышлений.]]></description><content:encoded><![CDATA[
  <p id="A3AO">В курсе &quot;Образование для образованных&quot; даётся <a href="https://blog.ekaragodin.com/P7M1sf40TOB" target="_blank">описание интеллект-стека из 17 трансдисциплин</a>. Важно, что это именно дисциплины, а не практики. Среди них, почти в самом низу, есть собранность. Собранность это владение умом и телом. Именно здесь вводится понятие сознания как механизма управления вниманием и дальше осознанность как произвольное управление вниманием. В &quot;Системном саморазвитии&quot; даётся свой стек - это стек саморазвития. Он уже состоит не из трансдисциплин, а из мастерств, ключевым из которых является мастерство собранности. Кроме него в стек саморазвития входят: психопрактическое мастерство, мастерство самолидерства, эмоциональное мастерство, телесное мастерство и мастерство размышлений.</p>
  <p id="73H9">Зачем нужна ещё модель стека саморазвития, если уже есть интеллект-стек? В интеллект-стеке, простите за повторение, уже 17 трансдисциплин и постоянно ведутся дискуссии о том, что их недостаточно и нужно добавить туда что-то ещё. Сначала я подумал, что авторы курса &quot;Системного саморазвития&quot; сделали ход конём - вместо того, чтобы добавлять нужные по их мнению трансдициплины в интеллект-стек, сделали свой стек переняв часть из интеллект-стека. Но поразбиравшись дальше я пришёл к такому выводу: из интеллект-стека взяты несколько трансдисциплин (основной упор сделан на собранность) и на их основе  собран набор из множества прикладных практик.</p>
  <p id="SZif">Границы между этими стеками местами очень размыты и формирование обоих ещё не закончено и в будущем, наверное, многое поменяется. На данный момент я разделяю их так: интеллект-стек про мышление и усиление интеллекта, но не говорит ничего конкретного про то, к чему это мышление нужно прикладывать и зачем. Ну кроме общей рекомендации, что в современном мире нужно бежать со всех ног, чтобы только оставаться на месте.</p>
  <p id="rCAu">Стек саморазвития - про саморазвитие. 🤷‍♂️ Он о том, как соответствовать окружающему миру. Мир постоянно меняется и чтобы ему соответствовать нужно меняться самому. Что делать если в вашу деревню пришёл прогресс? Искать другую деревню, до которой прогресс ещё не добрался или перебираться в город? Для этого нужно разбираться со своими потребностями и неудовлетворённостями, что делать, чтобы найти способ их удовлетворения, как не бросить это на полпути и т.д. Вот для этого и нужны мастерства из стека саморазвития. Сейчас в учебнике стек саморазвития это нижний уровень <a href="https://blog.ekaragodin.com/oB2SKX1okFw" target="_blank">человека-платформы</a>, а интеллект-стек средний. Но разбиение достаточно условное, так как стек саморазвития вовсю пользуется понятиями из трансдисциплин интеллект-стека. Например, понятиями роли и практики из системного мышления, которое находится почти в самом верху интеллект-стека. На мой взгляд стек саморазвития либо где-то сбоку от интеллект-стека, либо даже сверху. Т.е. интеллект-стек выступает базой на основе которой можно собрать (или создать) набор прикладных практик позволяющих достигать поставленную цель максимально эффективно. В общем всё немного запутано, но надеюсь со временем тут наведут порядок.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.ekaragodin.com/Ygnqtb-VUaD</guid><link>https://blog.ekaragodin.com/Ygnqtb-VUaD?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin</link><comments>https://blog.ekaragodin.com/Ygnqtb-VUaD?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin#comments</comments><dc:creator>ekaragodin</dc:creator><title>Практики управления вниманием</title><pubDate>Wed, 16 Feb 2022 02:38:18 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/38/d3/38d30420-71dd-478f-bda3-23359d4e9007.png"></media:content><description><![CDATA[В прошлом посте я обратил внимание на то, что все практики как-то меняют физический мир. В этот раз рассмотрим практики под другим углом - все практики являются практиками управления вниманием. Это не самая очевидная мысль и она не сразу уложилась у меня в голове, поэтому попробую раскрыть её.]]></description><content:encoded><![CDATA[
  <p id="uxnF">В прошлом <a href="https://blog.ekaragodin.com/oB2SKX1okFw" target="_blank">посте</a> я обратил внимание на то, что все практики как-то меняют физический мир. В этот раз рассмотрим практики под другим углом - все практики являются практиками управления вниманием. Это не самая очевидная мысль и она не сразу уложилась у меня в голове, поэтому попробую раскрыть её.</p>
  <p id="Sy4s">Практика состоит из дисциплины и технологии. Дисциплина описывает набор понятий, их связи, возможные операции с ними и т.д. Технология это конкретный инструмент, который организует работу с объектами описанными дисциплиной. Для одной дисциплины может быть много технологий. Во время исполнения практики мы удерживаем своё внимание на объектах этой практики. Для этого и нужно выучить дисциплину, чтобы знать на каких объектах нужно удерживать своё внимание. Таким образом любая практика это практика удержания внимания на важных для неё объектах.</p>
  <p id="by4f">Рассмотрим на конкретном примере практики <a href="https://blog.ekaragodin.com/K1gmreIQd-p" target="_blank">Pomodoro</a>. Дисциплина даёт понятия для этой практики: таймер, рабочий интервал, короткие и длинные перерывы и т.д. Есть разные технологии, которые по разному реализуют практику Помодоро. Например, можно взять кухонный таймер и использовать его. Но тогда вы должны хорошо знать все упомянутые понятия и как ими пользоваться. Это даёт максимальную гибкость, но не сильно помогает удерживать внимание на объектах практики. А можно взять специализированную программу, которая уже &quot;знает&quot;, что между рабочими интервалами должны быть перерывы, а через несколько рабочих интервалов нужно делать большой перерыв. Всё это уже преднастроено, программа сама в нужный момент показывает правильные кнопки. Это уменьшает нагрузку на человека - требуется меньше усилий, чтобы удерживать внимание на объектах практики. Более того, за счёт автоматической статистики, такая программа может помочь удерживать не только фокусное внимание на задаче, но и на более долгих периодах - сколько времени уже было потрачено на задачу за неделю или месяц.</p>
  <p id="EhJj">Получается, что на первых порах освоения любой практики лучше использовать экзокортекс, который поможет удерживать ваше внимание на новых для вас объектах. По мере наработки практики, когда удержание внимания на нужных объектах войдёт в привычку и уже не будет требовать больших усилий можно пробовать менять используемые технологии, переходить к более &quot;профессиональным&quot; инструментам, т.е. тем которые дают больше гибкости в использовании (а значит можно настроить под себя для большей эффективности), но уже не могут так поддерживать ваше внимание как менее гибкие инструменты.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.ekaragodin.com/lfmOvTJJ3bY</guid><link>https://blog.ekaragodin.com/lfmOvTJJ3bY?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin</link><comments>https://blog.ekaragodin.com/lfmOvTJJ3bY?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin#comments</comments><dc:creator>ekaragodin</dc:creator><title>Мышление письмом</title><pubDate>Sat, 29 Jan 2022 15:24:18 GMT</pubDate><description><![CDATA[В пятой главе &quot;Образования для образованных&quot; дано описание практики мышления письмом. Мне кажется это одной из самых главных мыслительных практик, которым учат в ШСМ, поэтому про это и будет пост. Если вы не читали про мышление письмом в учебники или в оригинальном посте в блоге Левенчука, то лучше сначала прочитать ;) ]]></description><content:encoded><![CDATA[
  <p id="tTVb">В пятой главе &quot;Образования для образованных&quot; дано описание практики мышления письмом. Мне кажется это одной из самых главных мыслительных практик, которым учат в ШСМ, поэтому про это и будет пост. Если вы не читали про мышление письмом в учебники или в <a href="https://ailev.livejournal.com/1513051.html" target="_blank">оригинальном посте</a> в блоге Левенчука, то лучше сначала прочитать ;) </p>
  <p id="8a2u">&quot;Не пишешь = не думаешь&quot; очень радикальное заявление с которым сложно согласиться. Для меня оно звучит как &quot;Не используешь лопату, значит не копаешь&quot;. Я бы переформулировал так &quot;Не пишешь = не эффективно думаешь&quot;. При этом с остальным содержанием главы я полностью согласен. Вообще в ней, на мой взгляд, доказывается как раз тезис, что мышление без использования дополнительных инструментов не эффективно. Моя любимая метафора из этой главы: человек использует инструменты, а не голые руки для работы, так же он должен использовать инструменты, а не голый мозг для мышления.</p>
  <p id="5H47">Часто возникает вопрос, что считать мышлением письмом. Не любой текст, который вы пишите является мышлением письмом. На мой взгляд, сложно провести чёткую границу какой текст можно считать продуктом мышления, а какой нет. Прямое копирование и конспектирование точно нет, а дальше всё очень субъективно. Главное требование - нужно писать свои мысли на основе прочитанного/изученного. Но очень сложно начать писать &quot;свои&quot; мысли когда столько лет в школе и вузе приучали писать конспекты.</p>
  <p id="onC3">При этом я не считаю, что от пересказывания и конспектирования совсем нет пользы. Лучше пересказать своими словами какую-то тему, чем вообще ничего не написать. Тезис, что поиском всё можно найти в оригинале для меня не очень состоятелен. Для этого нужно вспомнить, что именно нужно найти или повторно читать книгу. Сейчас такой поток информации, что мало какую книгу будешь перечитывать, чтобы вспомнить какая именно мысль тебя там заинтересовала. А вот перечитать запись в блоге/картотеке уже вполне реально. Тут важно, чтобы это было частью вашей системы ведения заметок - нужно регулярно возвращаться к написанному и связывать это с другими заметками. В случае если вы просто написали заметку с конспектом и никогда больше к ней не возвращались, то тогда можно было её и не писать.</p>
  <p id="U6zp">Как раз сегодня на тренинге по курсу &quot;Системное саморазвитие&quot; услышал такую мысль: &quot;Я написала пост, он мне не понравился, поэтому публиковать не стала и решила над ним ещё поработать&quot;. Это распространённая проблема и я сам таким страдаю - постоянно находить недостатки в своём тексте. Они могут буть реальными (орфографические и пунктуационные ошибки) или воображаемыми (текст кажется слишком очевидным или слишком непонятным, в посте нет какой-то главной мысли или выводов, придумал дурацкие примеры и т.д. этот список можно продолжать бесконечно). Если бы я публиковал только посты которые мне нравятся, то я бы не опубликовал ни одного поста в этом блоге. Желательно иметь какие-то лимиты для написания поста - либо тратить не больше определённого количества времени, либо останавливаться к какой-то дате. В этом смысле хорошо писать посты по курсы который сейчас проходишь - нужно успеть прочитать главу и написать пост к конкретному дню тренинга. Чёткий дедлайн мотивирует не тратить слишком много времени на один пост.</p>
  <p id="18xE">Ещё один важный вопрос это куда писать заметки - в публичный блог или приватную базу заметок. В ОдО это хорошо раскрыто и вывод очевиден - записи должны быть доступны публично. Повторять все доводы не буду отмечу только те, которые кажутся важными для меня. Когда пишешь приватные заметки сложнее себя контролировать и держать фокус на мышлении, а не на конспектировании. Вообще когда пишешь в приватные заметки нет явного момента, что работа над заметкой закончена. Из-за этого можно постоянно откладывать и бесконечно растягивать работу над заметкой. &quot;Сегодня я запишу эту интересную мысль, а завтра напишу свои мысли по этому поводу.&quot; А завтра записываешь другую (не свою) интересную мысль, а мышление опять откладываешь. Так фокус смещается с полезного (мышления письмом) на лёгкое (конспектирование и накопление ссылок). В блоге всегда виден объём не сделанной работы - это список неопубликованных черновиков. Всегда можно посмотреть даты публикаций и понять, что давно ничего не публиковал.</p>
  <p id="Jksf">Время отведённое на написание этого поста вышло, так что выводов не будет.</p>
  <p id="YSg3"><a href="https://blog.ekaragodin.com/P7M1sf40TOB" target="_blank">Предыдущий пост по курсу ОдО.</a></p>
  <p id="dsej"><a href="https://blog.ekaragodin.com/CEAWK6AgaUB" target="_blank">Что такое курс &quot;Образование для образованных&quot; и почему я стал его проходить.</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.ekaragodin.com/oB2SKX1okFw</guid><link>https://blog.ekaragodin.com/oB2SKX1okFw?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin</link><comments>https://blog.ekaragodin.com/oB2SKX1okFw?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin#comments</comments><dc:creator>ekaragodin</dc:creator><title>Человек как платформа</title><pubDate>Fri, 28 Jan 2022 08:33:05 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/75/b8/75b88a02-2dc5-4367-a66e-19b5b0fd19a8.png"></media:content><description><![CDATA[Любая практика меняет что-то в физическом мире. Среди всех практик можно выделить практики, которые используются при мышлении - это мыслительные практики. Мыслительные практики меняют нейронные связи в мозге. Все мыслительные практики вместе составляют мыслительное мастерство. Все остальные практики это прикладное мастерство. Слово мастерство здесь даёт акцент, что вы не просто знаете о существовании какой-либо практики, но можете её самостоятельно успешно применить в ситуации далёкой от учебной. Изучение нового это и есть мышление, поэтому хорошее владение мыслительными практиками помогает в изучении любых других практик.]]></description><content:encoded><![CDATA[
  <p id="TQFE">Любая практика меняет что-то в физическом мире. Среди всех практик можно выделить практики, которые используются при мышлении - это мыслительные практики. Мыслительные практики меняют нейронные связи в мозге. Все мыслительные практики вместе составляют мыслительное мастерство. Все остальные практики это прикладное мастерство. Слово мастерство здесь даёт акцент, что вы не просто знаете о существовании какой-либо практики, но можете её самостоятельно успешно применить в ситуации далёкой от учебной. Изучение нового это и есть мышление, поэтому хорошее владение мыслительными практиками помогает в изучении любых других практик.</p>
  <p id="oEDY">Из всех мыслительных практик можно выделить одну, которая важнее других - это практика собранности. Собранность означает, что вы можете произвольно сфокусироваться на определённой задаче и потратить на неё необходимое количество времени. Например, два часа читать учебник не отвлекаясь на социальные сети. Если с собранностью плохо, то никакое мыслительное мастерство не поможет. Поэтому собранность выделяем в отдельное мастерство собранности.</p>
  <p id="q6uj">Мастерство собранности, мыслительное и прикладное мастерство вместе дают понятие человек-платформа. Здесь платформенная часть это мастерство собранности и мыслительное мастерство обладая которыми человек может подстроиться под нужное окружение доучив необходимые прикладные практики. Поэтому важно прокачивать &quot;нижние&quot; уровни платформы, но не забываем, что деньги платят за &quot;верхний&quot; (за применение прикладных практик). Хорошая платформа позволяет лучше адаптироваться к новым ситуациям в жизни и добавиться большего.</p>
  <p id="85W1">Такое разделение на три уровня мастерства существует только в design time. В run time все эти практики применяются одновременно. Когда вы делаете какую-то задачу на работе вы одновременно: используете собранность, чтобы не отвлекаться на slack, используете какие-то мыслительные дисциплины типа онтологики и системного мышления, чтобы правильно разобраться в требованиях и какую-то прикладную практику (например, написание фронтенда на React) чтобы реализовать требования.</p>
  <p id="w96F">Развивать платформу нужно снизу вверх. Без собранности не сможете освоить сложных прикладных практик (они требует длительного удержания внимания на их изучении). Без мыслительного мастерства вы будете тратить на изучение сложных прикладных практик слишком много времени, так что никакая собранность не поможет так долго удерживать своё внимание на этом. Развитие всех уровней происходит циклически - чем более сложные прикладные практики нужно изучить, тем более высокие уровни собранности и мыслительного мастерства понадобятся.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.ekaragodin.com/P7M1sf40TOB</guid><link>https://blog.ekaragodin.com/P7M1sf40TOB?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin</link><comments>https://blog.ekaragodin.com/P7M1sf40TOB?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin#comments</comments><dc:creator>ekaragodin</dc:creator><title>Интеллект-стек 2021: станьте современным</title><pubDate>Thu, 27 Jan 2022 02:20:56 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/f7/de/f7deb211-4d7b-46a8-a591-27709afbbe64.png"></media:content><description><![CDATA[Первое впечатление от прочтения четвёртой главы про интеллект-стек - как много всего! Только теперь понимаешь, что значит 17 трансдисциплин. Семнадцать. Это не семнадцать советов как быть успешным, не семнадцать статей и, даже, не семнадцать книг. Чтобы на хорошем уровне изучить интеллект-стек нужно по каждой трансдисциплине прочитать несколько книг и потратить немало времени на тренировку мастерства. Это ещё больше убеждает меня в том, что нельзя начинать изучение курсов ШСМ с &quot;Образования для образованных&quot; - объём материала, который предстоит изучить пугает. ;)]]></description><content:encoded><![CDATA[
  <p id="4RDf">Первое впечатление от прочтения четвёртой главы про интеллект-стек - как много всего! Только теперь понимаешь, что значит 17 трансдисциплин. <strong>Семнадцать.</strong> Это не семнадцать советов как быть успешным, не семнадцать статей и, даже, не семнадцать книг. Чтобы на хорошем уровне изучить интеллект-стек нужно по каждой трансдисциплине прочитать несколько книг и потратить немало времени на тренировку мастерства. Это ещё больше убеждает меня в том, что нельзя начинать изучение курсов ШСМ с &quot;Образования для образованных&quot; - объём материала, который предстоит изучить пугает. ;)</p>
  <p id="1mWc">Вообще, акцент на том, что для прохождения всей программы потребуется примерно два года тоже несколько смущает. Теперь понятно, что это не преувеличение, а скорее даже преуменьшение. Два года - это средняя температура по больнице, из опыта за прошлый год понятно, что мне требуется больше времени. У меня время для изучения распределено очень не равномерно - бывают недели, когда я могу заниматься регулярно, бывают недели, когда вообще нет времени позаниматься, но чаще это что-то среднее, когда есть 2-4 дня в неделю. При этом ещё не весь интеллект-стек покрыт курсами, а значит, по мере появления новых курсов будет расти и общая оценка. А ещё существующие курсы постоянно обновляются. А ещё изученные трансдисциплины неплохо бы использовать для изучения новых прикладных практик. Похоже есть чем заняться в ближайшие лет пять. Это довольно грандиозная задача, удерживать внимание на одном занятии в течении нескольких лет и продолжать инвестировать в это своё время. Должны быть веские причины для такой долгосрочной цели. Тут невольно вспоминается первая глава в которой много внимания уделено тому, что не нужно ставить долгосрочных целей.</p>
  <p id="BEpz">Можно относиться к этому как рациональный фланёр Талеба. Постоянно пересматривать свою стратегию прохождения курсов (в ШСМ и не только). Ставить маленькую цель, достигать её и после этого ставить следующую цель. И такими маленькими целями может быть прохождение отдельного курса. Ведь каждый курс ценен сам по себе. Или целью может быть не само прохождение курса, а тренировка какой-то практики на материалах курса. Например, я при прохождении этого курса ОдО сфокусировался на практике мышления письмом в ущерб выполнению заданий в учебнике. В этом я для себя вижу больше пользы в ситуации когда на всё сразу времени не хватает.</p>
  <p id="qqmy">Ещё можно смотреть на это через призму бесконечного развития - всё равно всю жизнь придётся чему-то учиться, так почему бы этим чем-то не быть курсам ШСМ. На масштабе всей жизни осознанно потратить несколько лет на обучение уже не кажется такой уж большой задачей.</p>
  <p id="QRVZ">Один из плюсов курсов в ШСМ это списки рекомендованной литературы в каждом курсе. Понятно, что хороших книг в мире много, но чтобы их найти нужно прочитать в разы больше книг похуже. А тут нам подобрали лучшее и самое свежее из того что есть сейчас в мире. Поэтому пока мои интересы совпадают с тем чему обучают в ШСМ, то можно сэкономить на поиске и выборе книг для чтения и просто брать то, что ещё не читал по той дисциплине которая интересует. Даже в обзоре почти каждой трансдисциплины в четвёртой главе даны ссылки на релевантные книги, а в профильных курсах их будет ещё больше.</p>
  <p id="TpXP"><a href="https://blog.ekaragodin.com/lfmOvTJJ3bY" target="_blank">Следующий пост по курсу ОдО.</a></p>
  <p id="VSLF"><a href="https://blog.ekaragodin.com/0YOyENnxV9x" target="_blank">Предыдущий пост по курсу ОдО.</a> </p>
  <p id="hQsN"><a href="https://blog.ekaragodin.com/CEAWK6AgaUB" target="_blank">Что такое курс &quot;Образование для образованных&quot; и почему я стал его проходить.</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.ekaragodin.com/6tyP1OSdPlf</guid><link>https://blog.ekaragodin.com/6tyP1OSdPlf?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin</link><comments>https://blog.ekaragodin.com/6tyP1OSdPlf?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin#comments</comments><dc:creator>ekaragodin</dc:creator><title>Карта и территория</title><pubDate>Sat, 22 Jan 2022 02:32:09 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/30/b0/30b09e91-0920-473d-b8e7-ffa91134da48.png"></media:content><description><![CDATA[Мне очень нравится метафора &quot;карты и территории&quot;. Она о том, что не нужно путать реальный мир с вашими представлениями о нём. Зачастую люди не видят этой разницы и от этого страдают. Это важно различать, потому что когда вы не можете достигнуть какой-то цели, то чаще всего проблема не в вас и не в мире, а в том что вы не можете построить правильный маршрут для достижения своей цели. Если вы хотели доплыть до Индии, а приплыли в Америку, то проблема в плохой карте.]]></description><content:encoded><![CDATA[
  <p id="gKKD">Мне очень нравится метафора &quot;карты и территории&quot;. Она о том, что не нужно путать реальный мир с вашими представлениями о нём. Зачастую люди не видят этой разницы и от этого страдают. Это важно различать, потому что когда вы не можете достигнуть какой-то цели, то чаще всего проблема не в вас и не в мире, а в том что вы не можете построить правильный маршрут для достижения своей цели. Если вы хотели доплыть до Индии, а приплыли в Америку, то проблема в плохой карте.</p>
  <p id="wrU4">Представьте что вы ходите по городу не открывая взгляда от навигатора в телефоне. От правильности этой карты зависит как точно вы попадаете в нужное место или как часто долбитесь лбом о стену. Мозг получает сигналы от органов чувств и как-то их трактует. Выделяет (или не выделяет) какие-то объекты из фона, придаёт (или не придаёт) им какое-то значение. Услышав гром кто-то подумает про испортившуюся погоду, а кто-то о том, что Зевс разгневался. Вы действуете исходя из своих представлений о реальности.</p>
  <p id="oLnk">Наш мозг постоянно строит карты для разных частей реальности. Либо копирует чужие карты, потому что делать свои сложно. Это происходит на автомате, мы не осознаём этот процесс. Как карты в телефоне имеют производителя, так и карты в нашей голове чаще всего заложены кем-то из вне: от родителей, из телевизора, из интернет, от общения с друзьями и т.д. Хорошо бы уметь отслеживать откуда у нас взялась та или иная карта, не пора ли её обновить или заменить на другую. Например, меня, как и всех, в детстве научили завязывать шнурки. И я никогда не задумывался могут ли быть другие способы завязывать шнурки и пользуюсь ли я самым лучшим. Недавно поискал на YouTube как завязывать шнурки и моя жизнь уже никогда не будет прежней.</p>
  <p id="nDwr">Процесс построения карты это выделение важного и отбрасывание ненужных деталей. Но важное может быть разным. Разные люди могут считать важным разные вещи, поэтому у двух человек могут быть разные карты для одной и той же территории. Из-за этого возникают проблемы в коммуникации - вы не сможете договориться о совместном маршруте если смотрите в разные карты. Важное может быть разным для одного человека в зависимости от ситуации. Один человек может использовать разные карты одной и той же территории для разных задач. Нет смысла искать сокровища по карте грибных мест. Разве что при слове &quot;сокровище&quot; вы представляете полянку с опятами.</p>
  <p id="2JIS">Метафора это способ объяснить что-то на знакомом человеку примере. При этом подобрать удачную метафору так, чтобы объяснить нужное и не увести внимание в сторону очень трудно. Часто бывает так, что внимание полностью перескакивает на метафору и начинают проводить параллели, которые автор метафоры совсем не задумывал. Но метафора &quot;карты и территории&quot;, на мой взгляд, не такая. Если в этом тексте поменять слова карта и территория на модель и физический мир, то смысл не исказится.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.ekaragodin.com/gO4wicS62mP</guid><link>https://blog.ekaragodin.com/gO4wicS62mP?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin</link><comments>https://blog.ekaragodin.com/gO4wicS62mP?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin#comments</comments><dc:creator>ekaragodin</dc:creator><title>Итоги блога 2021</title><pubDate>Wed, 12 Jan 2022 02:41:15 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/e8/f8/e8f89c4a-482a-4c64-aa4a-724825db1e6d.jpeg"></media:content><description><![CDATA[Вести новый блог в сервисе Teletype я начал в июне, а толчком к этому послужило начало прохождения курса &quot;Системное саморазвитие&quot;. Первый пост про это и был - Первая неделя курса &quot;Системное саморазвитие&quot;. Даже ссылку на Teletype я увидел в чате поддержки этого курса, до этого я про Teletype не слышал. Сервис понравился приятным и минималистичным дизайном. Через некоторое время я добавил свой домен blog.ekaragodin.com. На ekaragodin.com всё ещё старый блог на Ghost. Пока не придумал что с ним сделать. В идеале хотелось бы импортировать старые посты в Teletype, но он поддерживает импорт только из ЖЖ и Telegraph, а какого-то api сделать такой импорт самому нет. Пока махнул на это рукой.]]></description><content:encoded><![CDATA[
  <p id="3o2q">Вести новый блог в сервисе Teletype я начал в июне, а толчком к этому послужило начало прохождения курса &quot;Системное саморазвитие&quot;. Первый пост про это и был - <a href="https://blog.ekaragodin.com/GWv4UZW9SLS" target="_blank">Первая неделя курса &quot;Системное саморазвитие&quot;</a>. Даже ссылку на Teletype я увидел в чате поддержки этого курса, до этого я про Teletype не слышал. Сервис понравился приятным и минималистичным дизайном. Через некоторое время я добавил свой домен blog.ekaragodin.com. На ekaragodin.com всё ещё старый блог на Ghost. Пока не придумал что с ним сделать. В идеале хотелось бы импортировать старые посты в Teletype, но он поддерживает импорт только из ЖЖ и Telegraph, а какого-то api сделать такой импорт самому нет. Пока махнул на это рукой.</p>
  <p id="abYQ">За весь 2021 год написал 26 постов. При этом был перерыв на три месяца осенью. Много постов так или иначе связанных с курсами ШСМ.</p>
  <p id="Owok">Каждый пост я шарю в свои аккаунты в Facebook и Twitter и в канал в Telegram. Посты связанные с курсами ШСМ так же публикую в <a href="https://blog.system-school.ru/author/evgenii-karagodin/" target="_blank">блоге ШСМ</a> с обратной ссылкой. Практически все посетители приходят с этих сайтов, а не из поиска (неудивительно учитывая проблемы с индексацией блога в гугле, но об этом в другой раз). Больше половины людей приходит из Facebook, около трети это прямые заходы (я подозреваю что это из rss и telegram) и остаток это переходы из Twitter (это было неожиданностью для меня, думал там вообще никто не читает) и из поиска. Большая часть реакций тоже в Facebook - это в основном лайки и немного комментариев. Под конец года люди начали ставить лайки постам в самом Teletype, не знаю с чем связано. В блоге ШСМ народ активно комментирует.</p>
  <p id="Ymt5">У Teletype есть свой подсчёт просмотра постов (счётчик выводится под каждым постом). Он правда не учитывает просмотры в RSS ридере (там полный текст поста) и превью в мобильном клиенте Telegram. В среднем у всех постов просмотров в районе 10-20, но есть несколько постов с 30 и более просмотров. Топ просмотров по версии Teletype - <a href="https://blog.ekaragodin.com/GWv4UZW9SLS" target="_blank">Первая неделя курса &quot;Системное саморазвитие&quot;</a>, <a href="https://blog.ekaragodin.com/K1gmreIQd-p" target="_blank">Pomodoro-таймер - больше чем кажется</a>, <a href="https://blog.ekaragodin.com/kw_B0p6LWTx" target="_blank">Приложения для ведения заметок</a>. Это примерно бьётся со статистикой просмотров в Google Analytics, хотя там цифры другие, но полагаю у многих, как и у меня, стоят блокировщики рекламы.</p>
  <p id="UDm3">В Facebook у меня 96 френдов, в Twitter - 58 читателей, в Telegram - 18 подписчиков, в Teletype - 2 фолловера. </p>
  <p id="GqOg">Некоторое время публиковал посты с общим названием &quot;Last week I learned&quot;, которые были просто набором несвязанных ссылок, которые показались мне интересными, с моим комментарием. Я создавал черновик в Teletype с таким названием и в течении недели (иногда дольше) дописывал туда новые ссылки и потом разом публиковал. В конце года я от таких постов отказался и стал постить эти ссылки по мере поступления в Telegram канал. Там нет какого-то мышления письмом, скорее просто составление картотеки фактов, которые потом уже можно использовать для мышления письмом.</p>
  <p id="EEeX">Изначально я использовал Teletype для полного цикла написания постов. Когда приходила идея поста, то для начала создавал черновик с таким названием. Потом в этот черновик что-то писал (процесс мог растянуться на недели) и публиковал. Если за несколько недель в черновике так ничего толкового не появлялось, то удалял его. Теперь идеи постов и черновики я пишу в RemNote где и все остальные свои заметки, а когда пост готов, то создаю пост в Teletype и сразу публикую его. Это немного усложняет саму публикацию (нужно править форматирование), зато сам процесс написания для меня более удобный.</p>
  <p id="jjgC">В этом году я планирую пройти ещё несколько курсов ШСМ, так что надеюсь постов будет не меньше чем в прошлом году. Для меня это пока основной мотиватор писать что-то в публичный блог. Так же есть много интересных тем связанных с работой, о которых хотелось бы написать в этом году, пока таких постов было не много.<br /></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.ekaragodin.com/TH2jgliMXOO</guid><link>https://blog.ekaragodin.com/TH2jgliMXOO?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin</link><comments>https://blog.ekaragodin.com/TH2jgliMXOO?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ekaragodin#comments</comments><dc:creator>ekaragodin</dc:creator><title>Абсолютные импорты в JavaScript</title><pubDate>Tue, 11 Jan 2022 02:45:48 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/38/5c/385cdd2f-7558-4f41-b857-a583fcd82c40.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/22/02/220237d8-9a82-4780-82cc-331bc7fc3ff2.png"></img>Так уж сложилось, что в JavaScript импорты относительные. Но в любом более-менее крупном проекте это быстро превращается в ад (relative imports hell).]]></description><content:encoded><![CDATA[
  <p id="EPH1">Так уж сложилось, что в JavaScript импорты относительные. Но в любом более-менее крупном проекте это быстро превращается в ад (relative imports hell).</p>
  <figure id="tBT8" class="m_original">
    <img src="https://img3.teletype.in/files/22/02/220237d8-9a82-4780-82cc-331bc7fc3ff2.png" width="1022" />
  </figure>
  <p id="yXu0">Существует множество способов сделать абсолютные импорты - это зависит от окружения (фронтенд или бекенд), используете ли вы бандлеры, есть ли у вас TypeScript и т.д.</p>
  <p id="3vpx">Самое простое, если вы используете webpack для сборки. У него есть опция <a href="https://webpack.js.org/configuration/resolve/#resolvealias" target="_blank">resolve.alias</a> которая позволяет это сделать. У других бандлеров есть аналогичные опции. Есть бандлеры, которые заботятся о вас чуть больше чем другие. Например, Parcel сразу <a href="https://parceljs.org/features/dependency-resolution/#absolute-specifiers" target="_blank">поддерживает пути</a> с <code>/</code> и <code>~</code>.</p>
  <p id="3mrq">Веселье начнётся когда вы захотите абсолютные пути в require на Node.js. Вот, например, <a href="https://gist.github.com/branneman/8048520" target="_blank">неполный список</a> (последний раз обновлялся в 2018-ом году) возможных вариантов решения: использовать какой-нибудь npm пакет, который хакает require, похакать require самому, создавать вручную симлинки, переопределять переменную окружения NODE_PATH и так далее. У всех этих решений есть недостатки: либо они плохо поддерживается другими инструментами (например, большинство из этих способов не будут нормально работать в IDE, потребуются дополнительные приседания при запуске тестов и т.д.) либо требуют ручной работы. Но в комментариях веселье продолжается до сих пор и там можно найти неплохое решение, которым мы в своём проекте пользовались пару лет - это <a href="https://yarnpkg.com/features/protocols#why-is-the-link-protocol-recommended-over-aliases-for-path-mapping" target="_blank">link протокол в yarn</a>. Выглядеть это будет как-то так:</p>
  <p id="3LLE"><code>{<br />  &quot;dependencies&quot;: {<br />    &quot;@backend&quot;: &quot;link:apps/backend/src&quot;,<br />    &quot;@frontend&quot;: &quot;link:apps/frontend/src&quot;<br />  }<br />}</code></p>
  <p id="oYXV">Смысл в том, что вы прямо в package.json задаёте маппинг в виде обычных зависимостей, а дальше yarn install создаёт ссылки на указанные директории в node_modules. Решение кросс платформенное и работает надёжно. Работает с первой версии yarn. Поддерживается всеми инструментами, потому что для всех это выглядит как импорт обычного пакета из node_modules и не требует никаких дополнительных настроек. К тому же с таким решением вам не нужно настраивать псевдонимы в своём сборщике. То есть это и более универсальное решение. Единственный минус - нужно использовать yarn для управления зависимостями. Если можете, то используйте этот способ - он почти идеален.</p>
  <p id="HUE7">Какой-бы способ вы не выбрали, но если вы пишите на TypeScript вам потребуется ещё сделать настройку и для него. Тут всё просто, нужно настроить <a href="https://www.typescriptlang.org/tsconfig#paths" target="_blank">свойство paths в tsconfig.json</a>. После этого tsc не только перестаёт ругаться на неизвестные модули, но и начинают работать все фишки с автоматическими импортами в IDE. Получается, что маппинг дублируется в двух местах, но с этим уже ничего поделать нельзя. Хотя подождите, веселье ещё не закончилось.</p>
  <p id="pOep">Теперь представим, что мы хотим наш бекенд на Node.js писать на TypeScript и продолжать использовать абсолютные импорты. Если использовать вариант с симлинками, то возникает новая проблема. Так как теперь исходные файлы на ts нужно скомпилировать в js (с помощью tsc или babel), чтобы их смогла использовать Node.js, то они окажутся в какой-то другой папке (например, в dist) и наш маппинг для yarn (или какой там способ вы выбрали) теперь указывает не туда куда надо. В нашем случае мы использовали хак в Dockerfile - вместо папки src подключали папку dist в итоговом образе. Решение простое, но если про него не знать, то можно незабываемо провести время пытаясь понять, как же всё это работает.</p>
  <p id="BOCe">Но можно сделать по другому - если уж всё равно пошли по пути компиляции исходных файлов для Node.js то можно пойти до конца и собирать полноценный бандл с помощью webpack. А для разработки и тестирования использовать <a href="https://www.npmjs.com/package/ts-node" target="_blank">ts-node</a>. И тут нас ждёт неожиданный поворот - решение с симлинками в node_modules теперь не работает. Потому что собрать бандл для Node.js не тоже самое что собрать бандл для браузера. В случае с Node.js в бандл собирается только исходный код приложения без зависимостей из node_modules. Потому что эти модули могут быть бинарными или они могут в рантайме читать что-то из файловой системы рядом с собой и т.д. В этом случае нам придется пойти по пути задания псевдонимов в конфиге webpack. И тут нам поможет пакет <a href="https://www.npmjs.com/package/tsconfig-paths-webpack-plugin" target="_blank">tsconfig-paths-webpack-plugin</a>, который как раз будет читать пути из tsconfig.json и добавлять их как псевдонимы в webpack. Если вам кажется что для такой простой задачи как прочитать json файл вам не нужен дополнительный npm пакет, то не забывайте что TypeScript поддерживает <a href="https://www.typescriptlang.org/tsconfig#extends" target="_blank">наследование конфигов</a>.  А в режиме разработки с ts-node можно использовать пакет <a href="https://www.npmjs.com/package/tsconfig-paths" target="_blank">tsconfig-paths</a>, на основе которого работает вышеупомянутый webpack плагин. В результате мы получим один источник правды для абсолютных импортов - tsconfig.json. Но и ещё больше работы. Потому что теперь, без симлинок в node_modules, у нас отвалился резолвинг модулей в Jest и Cypress! Как же всё было просто с симлинками и маленьким хаком в Dockerfile. Починить Jest не сложно: нужно задать свойство <a href="https://jestjs.io/docs/tutorial-react-native#modulenamemapper" target="_blank">moduleNameMapper</a>. О, вот и ещё одно место куда надо продублировать маппинг.  Но если вы используете ts-jest, то у них есть соответствующий <a href="https://kulshekhar.github.io/ts-jest/docs/getting-started/paths-mapping#jest-config-with-helper" target="_blank">хелпер</a>, а тут ребята уже не стали заморачиваться и предлагают брать paths напрямую из tsconfig.json. С Cypress не совсем понятно почему сломалось ведь они вроде бы <a href="https://github.com/cypress-io/cypress/search?q=tsconfig-paths" target="_blank">тоже используют tsconfig-paths</a> и я даже видел радостные посты людей у которых работали абсолютные импорты в тестах написанных на TypeScript, но в моём случае они так и не заработали. Поэтому я воспользовался пакетом с прекрасным названием <a href="https://www.npmjs.com/package/@cypress/webpack-batteries-included-preprocessor" target="_blank">@cypress/webpack-batteries-included-preprocessor</a>. Но правда и он заработал не с первого раза. Этот препроцессор под капотом так же использует tsconfig-paths-webpack-plugin, но <a href="https://github.com/cypress-io/cypress/blob/74ada1157c1bf1b184e09873edb6868ae7a67f43/npm/webpack-batteries-included-preprocessor/index.js#L54" target="_blank">с дефолтовыми настройками и не даёт их менять</a>. А по умолчанию этот плагин считает, что у вас весь проект на TypeScript, а если нет (как в нашем случае, часть кода всё ещё на js), то нужно поменять опцию <a href="https://github.com/dividab/tsconfig-paths-webpack-plugin#extensions-string-defaultts-tsx" target="_blank">extensions</a>. Поэтому для этого препроцессора пришлось ещё написать свою обёртку до тех пор пока не перепишем весь код на TypeScript.</p>
  <p id="Nurw">И на последок про светлое (но это не точно) будущее. Ребята в веб стандартах тоже не сидят сложа руки и уже с 2018 года разрабатывают стандарт <a href="https://github.com/WICG/import-maps" target="_blank">Import Maps</a>, который позволит управлять процессом резолвинга модулей в браузерах, а это позволит делать абсолютные импорты нативными средствами. В Deno поддержка <a href="https://deno.land/manual@v1.17.2/linking_to_external_code/import_maps" target="_blank">есть из коробки</a>. В Node.js есть <a href="https://github.com/nodejs/modules/issues/477" target="_blank">открытая задача</a>. В самом репозитории Import Maps можно посмотреть <a href="https://github.com/WICG/import-maps#community-polyfills-and-tooling" target="_blank">список инструментов</a>, которые уже поддерживают эту спеку. Осталось дождаться пока он будет всеми принят и поддержан.<br /></p>

]]></content:encoded></item></channel></rss>