<?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>Renat Grishin</title><generator>teletype.in</generator><description><![CDATA[Мастерская фронтенда]]></description><image><url>https://img1.teletype.in/files/0c/a3/0ca33f23-fe46-40e1-8c03-0156428279e1.png</url><title>Renat Grishin</title><link>https://blog.grre.ru/</link></image><link>https://blog.grre.ru/?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/grreru?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/grreru?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Fri, 17 Apr 2026 10:18:08 GMT</pubDate><lastBuildDate>Fri, 17 Apr 2026 10:18:08 GMT</lastBuildDate><item><guid isPermaLink="true">https://blog.grre.ru/antigravity</guid><link>https://blog.grre.ru/antigravity?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru</link><comments>https://blog.grre.ru/antigravity?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru#comments</comments><dc:creator>grreru</dc:creator><title>Google Antigravity – Получить доступ в России</title><pubDate>Tue, 20 Jan 2026 16:52:36 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/c8/9a/c89a9ece-a29b-4e50-86e8-db1bda4aac7a.png"></media:content><category>AI</category><description><![CDATA[<img src="https://img2.teletype.in/files/91/d9/91d961c7-d089-419c-991f-86877aa6e3cb.png"></img>Если вы хотите использовать AI Google Antigravity, но при авторизации выходит ошибка:]]></description><content:encoded><![CDATA[
  <figure id="Ru9A" class="m_column">
    <img src="https://img2.teletype.in/files/91/d9/91d961c7-d089-419c-991f-86877aa6e3cb.png" width="1486" />
  </figure>
  <p id="2fko">Если вы хотите использовать AI Google Antigravity, но при авторизации выходит ошибка:</p>
  <blockquote id="sdZu"><strong>Sorry, this account is ineligible to use Antigravity</strong><br />Your current account is not eligible for Antigravity, because it is not currently available in your location.</blockquote>
  <figure id="3CLY" class="m_original">
    <img src="https://img1.teletype.in/files/06/43/064310d4-8f1b-4484-8219-dadfaf48212c.png" width="537" />
    <figcaption>Перевод: Antigravity недоступна в вашей стране, так как Google контора пидарасов.</figcaption>
  </figure>
  <h2 id="tiLi">Решение очень простое</h2>
  <ol id="Oavo">
    <li id="f6UT">Переходим в настройки своего аккаунта: <a href="https://www.youtube.com/redirect?event=comments&redir_token=QUFFLUhqbTZyeGd2WkU4WEkwbXE0NHlNNHlHWGdCUk5rd3xBQ3Jtc0tsS2ZfdG1fQUxseFJZZW9vQmZfejRfVEw1OThZV3MxTEUzUUdNeGlja1lLZHUzSWVqWGEwU3FqUURZU2tTa1FoV2F4VFZidzVBLXJqN3lVNkxNNVAtejcxZHhxM1hfZzVDSE1EZXhBT2xfVzFlaUhabw&q=http%3A%2F%2Fpolicies.google.com%2Fcountry-association-form" target="_blank">policies.google.com/country-association-form</a></li>
    <li id="tPtu">Выбираем страну (например Венгрия)</li>
    <li id="CcMl">Выбираем причину смены региона</li>
    <li id="hj2H">Нажимаем<strong> Отправить</strong></li>
  </ol>
  <figure id="azZ3" class="m_column">
    <img src="https://img4.teletype.in/files/bc/2d/bc2da605-bdd8-4bc0-a339-1d5d9f65f288.png" width="816" />
  </figure>
  <p id="lVkC">Осталось подождать когда вам сменят регион, у меня уведомление на почту пришло примерно через 3 часа.</p>
  <p id="Qgkv">Когда поменяется регион, вы сможете использовать ИИ Google Antigravity.</p>
  <h3 id="aJEH">📱 Мои каналы</h3>
  <p id="BhF5"><a href="http://t.me/grreru" target="_blank">Telegram</a></p>
  <p id="wBiV"><a href="https://www.youtube.com/@GrReRu" target="_blank">YouTube</a></p>
  <p id="IJ5g"><a href="https://vk.ru/grreru" target="_blank">VK</a></p>
  <p id="25EU">Автор: Ренат Гришин <em>(Renat Grishin)</em></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.grre.ru/TwnbRqMB77K</guid><link>https://blog.grre.ru/TwnbRqMB77K?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru</link><comments>https://blog.grre.ru/TwnbRqMB77K?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru#comments</comments><dc:creator>grreru</dc:creator><title>VS Code не устанавливаются расширения</title><pubDate>Tue, 25 Nov 2025 20:46:52 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/8b/26/8b26218c-e545-4014-9856-06b205569c8f.png"></media:content><category>IT</category><description><![CDATA[<img src="https://img2.teletype.in/files/10/0d/100d77b4-147a-4e11-a503-46a4d45584c2.png"></img>В последнее время на VS Code не загружаются плагины с библиотеки. Как выяснилось не у меня одного такая проблема.]]></description><content:encoded><![CDATA[
  <figure id="jSJ9" class="m_column">
    <img src="https://img2.teletype.in/files/10/0d/100d77b4-147a-4e11-a503-46a4d45584c2.png" width="1210" />
  </figure>
  <p id="Hd5H">В последнее время на VS Code не загружаются плагины с библиотеки. Как выяснилось не у меня одного такая проблема.</p>
  <p id="tALd">Теперь плагины приходится скачивать отдельным VSIX файлом и закидывать его в  VS Code.</p>
  <h3 id="asDZ">📱 Мои каналы</h3>
  <p id="jSeH"><a href="http://t.me/grreru" target="_blank">Telegram<br /></a><a href="https://www.youtube.com/@GrReRu" target="_blank">YouTube<br /></a><a href="https://vk.ru/grreru" target="_blank">VK</a></p>
  <h2 id="O4gc">Решение 1</h2>
  <p id="i8iX">Скачать плагины в формате VSIX можно через этот сервис: <a href="https://cypherpunksamurai.github.io/vsix-downloader-webui/" target="_blank">https://cypherpunksamurai.github.io/vsix-downloader-webui/<br /></a>(На официальном сайте отрубили скачку VSIX)</p>
  <ul id="LKbq">
    <li id="9xYR">Ищем на сайте нужный плагин и скачиваем его</li>
    <li id="646L">Открываем VS Code</li>
    <li id="HvZn">Заходим в раздел плагины</li>
    <li id="YVvp">Закидываем в список плагинов, наш скаченный VSIX плагин</li>
  </ul>
  <figure id="YP4r" class="m_column">
    <iframe src="https://www.youtube.com/embed/2ZG9SfnkkzA?autoplay=0&loop=0&mute=0"></iframe>
  </figure>
  <figure id="v704" class="m_column">
    <iframe src="https://vk.com/video_ext.php?oid=-226334094&id=456239021&autoplay=0"></iframe>
  </figure>
  <h2 id="7Xor">Решение 2</h2>
  <p id="PrKD">Переходим на маркет расширений VSCode: <a href="https://marketplace.visualstudio.com/vscode" target="_blank">https://marketplace.visualstudio.com/vscode</a></p>
  <p id="UjF0">Ищем нужный нам плагин, и копируем url ссылку на него.</p>
  <figure id="UHWf" class="m_column">
    <img src="https://img1.teletype.in/files/c1/59/c159e8ae-3ad2-4f23-ad67-47e952d1f4c4.png" width="1744" />
    <figcaption>По карточке кликаем правой кнопкой мыши -&gt; Скопировать адрес ссылки. Либо переходим на страиницу плагина и копируем url с адресной строки.</figcaption>
  </figure>
  <p id="7JiV">Переходим на сайт: <a href="https://vsix.2i.gs/" target="_blank">https://vsix.2i.gs/</a></p>
  <p id="OHAR">В поле «<strong>URL или ID расширения</strong>» вставляем ссылку на наш плагин с маркета.</p>
  <p id="eUNh">Кликаем на любое место и у нас автоматически заполняется поле «<strong>Версия</strong>»</p>
  <figure id="wjln" class="m_column">
    <img src="https://img1.teletype.in/files/03/87/0387ab7d-e73c-4ecf-aa29-1a0fc70cab84.png" width="1544" />
  </figure>
  <p id="Tyn8">Нажимаем «<strong>Скачать</strong>»</p>
  <p id="1dxp">Открываем <strong>VSCode</strong> и переходим во кладку <strong>Extensions</strong>. Открываем папку со скаченными плагином, и переносим файл во вкладку <strong>Extensions</strong> скаченный <strong>плагин</strong>.</p>
  <figure id="KFPM" class="m_column">
    <img src="https://img2.teletype.in/files/19/7a/197a3500-4c8e-4381-9355-d1a767ee611d.png" width="1572" />
  </figure>
  <p id="KzkS">П.с. За этот метод спасибо <a href="https://teletype.in/@vechnoidushii" target="_blank">Михаилу Ахметшину</a>.</p>
  <h3 id="aJEH">📱 Мои каналы</h3>
  <p id="BhF5"><a href="http://t.me/grreru" target="_blank">Telegram</a></p>
  <p id="wBiV"><a href="https://www.youtube.com/@GrReRu" target="_blank">YouTube</a></p>
  <p id="IJ5g"><a href="https://vk.ru/grreru" target="_blank">VK</a></p>
  <p id="25EU">Автор: Ренат Гришин <em>(Renat Grishin)</em></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.grre.ru/BcGZ5A3-pM4</guid><link>https://blog.grre.ru/BcGZ5A3-pM4?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru</link><comments>https://blog.grre.ru/BcGZ5A3-pM4?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru#comments</comments><dc:creator>grreru</dc:creator><title>Как отключить зум на сайте</title><pubDate>Tue, 11 Nov 2025 17:38:34 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/96/07/96073356-dd6b-4831-8b9c-ff7074f18d3c.png"></media:content><category>Frontend</category><description><![CDATA[<img src="https://img3.teletype.in/files/a8/48/a8480866-5757-468d-bb63-221b62a10fe6.png"></img>При разработке одностраничных сайтов (One-page) или веб-приложений, заказчики просят отключать масштабирование (зум) на мобильных устройствах. 
На первый взгляд это просто – но есть нюансы. Разберем подробно, как отключить зум на сайте во всех браузерах, включая в🤬й Safari на iPhone.]]></description><content:encoded><![CDATA[
  <figure id="3qOc" class="m_column">
    <img src="https://img3.teletype.in/files/a8/48/a8480866-5757-468d-bb63-221b62a10fe6.png" width="909" />
  </figure>
  <p id="SiFo">При разработке одностраничных сайтов (One-page) или веб-приложений, заказчики просят отключать масштабирование (зум) на мобильных устройствах. <br />На первый взгляд это просто – но есть нюансы. Разберем подробно, как отключить зум на сайте во всех браузерах, включая в🤬й Safari на iPhone.</p>
  <h2 id="6BLC">1. Отключаем зум через meta-тег</h2>
  <p id="UQYN">В  файле index.html в теге header нужно добавить:</p>
  <pre id="AoQ9">&lt;meta name=&quot;viewport&quot; content=&quot;user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width, height=device-height, target-densitydpi=device-dpi, viewport-fit=cover&quot; /&gt;</pre>
  <p id="bJJH"><strong>content=&quot;user-scalable=no</strong> – Запрещает пользователю зумировать страницу<br /><strong>initial-scale=1.0</strong> – Начальный масштаб страницы 1х<br /><strong>maximum-scale=1.0</strong> – Максимальный масштаб страницы <br /><strong>minimum-scale=1.0</strong> – Минимальный масштаб страницы<br /><strong>width=device-width</strong> – Ширина viewport равна ширине экрана устройства (чтобы сайт не выглядел как уменьшенная версия сайта с PC)<br /><strong>height=device-height</strong> – Высота viewport равна высоте экрана устройства<br /><strong>viewport-fit=cover</strong> – Для iPhone с откусанным экраном, растягивает страницу на весь экран, включая области рядом откусанной областью «домашней полоской»</p>
  <h2 id="GeKN">2. В CSS нужно запретить жесты и резиновый скролл</h2>
  <pre id="HYEc">body,
html {
  overscroll-behavior: none;
  touch-action: none;
}</pre>
  <p id="sHKA"><strong>overscroll-behavior: none</strong> – Отключаем резиновый эффект, если доскроллить страницу до конца<br /><strong>touch-action: none</strong> – Отключаем жесты</p>
  <h3 id="mtpb">Теперь на всех нормальных устройства скролл отключен.</h3>
  <p id="SB9C">😡 Но есть iPhone со своим Safari. Запрет скролла в Safari не работает, так как Apple считает что пользователи должны зумировать контент.</p>
  <h2 id="ZAvt">Как отключить зум на iPhone в Safari надо сделать это через JS.</h2>
  <p id="JsDk">Проще добавить в конце тега body вот такой скрипт</p>
  <pre id="OtLl">&lt;script&gt;
document.addEventListener(&quot;gesturestart&quot;, function (e) {
  e.preventDefault();
});
&lt;/script&gt;</pre>
  <p id="guZu">Тут мы перехватываем событие gesturestart (жесты) и отключаем их preventDefault()</p>
  <p id="imQU">👏 Теперь ваш сайт не масштабируется ни в Android, и на iPhone.</p>
  <h3 id="aJEH">📱 Мои каналы</h3>
  <p id="BhF5"><a href="http://t.me/grreru" target="_blank">Telegram</a></p>
  <p id="wBiV"><a href="https://www.youtube.com/@GrReRu" target="_blank">YouTube</a></p>
  <p id="IJ5g"><a href="https://vk.ru/grreru" target="_blank">VK</a></p>
  <p id="25EU">Автор: Ренат Гришин <em>(Renat Grishin)</em></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.grre.ru/BPQ4rwlxT0_</guid><link>https://blog.grre.ru/BPQ4rwlxT0_?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru</link><comments>https://blog.grre.ru/BPQ4rwlxT0_?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru#comments</comments><dc:creator>grreru</dc:creator><title>Кнопки с градиентной обводкой</title><pubDate>Tue, 04 Nov 2025 10:14:09 GMT</pubDate><description><![CDATA[Если нужно сделать кнопку с градиентным фоном и обводкой, то без костылей не обойтись.]]></description><content:encoded><![CDATA[
  <p id="wP5U">Если нужно сделать кнопку с градиентным фоном и обводкой, то без костылей не обойтись.</p>
  <p id="7ulv">Пример в  <a href="https://codepen.io/grreru/pen/Ggpwaxz" target="_blank">CodePen</a></p>
  <h2 id="mTcb">Градиентный фон</h2>
  <p id="HaRX">Градиентный фон делается очень просто:</p>
  <pre id="00QK">background: linear-gradient(137deg, #36ea8a 0%, rgba(30, 132, 78, 0.5) 100%);</pre>
  <p id="dS3J">Но вот обводку через CSS градиент border напрямую задать нельзя. CSS пока не поддерживает такую возможность.<br />По этому приходиться выкручиваться через костыли и использовать псевдоэлементы <code>::brfore</code> или <code>::after</code>.</p>
  <h2 id="ZSE1">Обводка элемента с градиентом</h2>
  <pre id="sJTu">&lt;button class=&quot;ui-button&quot;&gt;&lt;p&gt;Кнопка&lt;/p&gt;&lt;/button&gt;</pre>
  <pre id="sTcm">.button {
  position: relative;
  background: linear-gradient(90deg, #00ff88, #00bfff);
  border: none;
  color: #fff;
  padding: 12px 24px;
  border-radius: 12px;
  z-index: 1;
  cursor: pointer;
}

.button::before {
  content: &quot;&quot;;
  position: absolute;
  inset: -2px;
  background: linear-gradient(90deg, #0066ff, #00ffff);
  border-radius: 14px;
  z-index: -1;
}
</pre>
  <h2 id="YWGE">Как работает CSS обводка с градиентом</h2>
  <p id="TSBS">— Основной элемент получает градиентный фон<br />— Задаем псевдоэлементу ::before тоже градиентный фон, Размером делаем его чуть больше кнопки, и ставим его за кнопку. Получается что его края выполняют роль обводки</p>
  <h3 id="IT2t">📱 Мои каналы</h3>
  <p id="fvg9"><a href="http://t.me/grreru" target="_blank">Telegram</a></p>
  <p id="2hGv"><a href="https://www.youtube.com/@GrReRu" target="_blank">YouTube</a></p>
  <p id="U7Ui"><a href="https://vk.ru/grreru" target="_blank">VK</a></p>
  <p id="f7lR">Автор: Ренат Гришин <em>(Renat Grishin)</em></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.grre.ru/WOBovZqMT5c</guid><link>https://blog.grre.ru/WOBovZqMT5c?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru</link><comments>https://blog.grre.ru/WOBovZqMT5c?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru#comments</comments><dc:creator>grreru</dc:creator><title>Анимированный градиент в тексте с помощью CSS</title><pubDate>Sun, 02 Nov 2025 18:57:22 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/43/a8/43a839b3-bbef-4d27-8cdf-104cafc25805.png"></media:content><category>Frontend</category><description><![CDATA[<img src="https://img1.teletype.in/files/85/ec/85ec4f8c-2090-41b6-869f-36fdb3c6873b.png"></img>Иногда хочется выделить часть текста не просто цветом, а сделать ее динамичной и живой. Один из эффективных способов — использовать анимированный градиент.]]></description><content:encoded><![CDATA[
  <figure id="E1dY" class="m_column">
    <img src="https://img1.teletype.in/files/85/ec/85ec4f8c-2090-41b6-869f-36fdb3c6873b.png" width="1277" />
  </figure>
  <p id="yw5T">Иногда хочется выделить часть текста не просто цветом, а сделать ее <strong>динамичной и живой</strong>. Один из эффективных способов — использовать анимированный градиент.</p>
  <p id="1APn">Пример можно посмотреть здесь: <a href="https://codepen.io/grreru/pen/OPyvdrE" target="_blank">CodePen — Анимированный градиент текста</a></p>
  <h2 id="QDgF">🔧 Пример кода</h2>
  <p id="YfSG">HTML:</p>
  <pre id="ugMg">&lt;h1&gt;Сладкий &lt;span class=&quot;gradient&quot;&gt;ТЮЛЕНЬ&lt;/span&gt;&lt;/h1&gt;</pre>
  <p id="6Afc">CSS:</p>
  <pre id="DFIJ">.gradient {
  background: linear-gradient(90deg, #7c3aed, #06b6d4, #7c3aed, #f472b6);
  background-size: 600% 600%;
  background-position: 0% 50%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;

  background-clip: text;
  color: transparent;
  transition: background-position 1s;
}
.gradient:hover {
  background-position: 100% 50%;
}</pre>
  <h2 id="MuAt">🧠 Как это работает:</h2>
  <ul id="Fa18">
    <li id="oV86"><code>background-clip: text</code> — делает фон видимым только внутри текста.</li>
    <li id="UOrI"><code>background: linear-gradient(...)</code> — Задает фоновый градиент</li>
    <li id="q2KI"><code>transition: background-position 1s</code> — Задает плавную анимацию перехода</li>
  </ul>
  <p id="zhHc">Получается что мы делаем для класса gradient фоновый градиент, увеличиваем его в несколько раз, делаем фон видимым внутри текста, а цвет текста делаем прозрачным.</p>
  <p id="ZqCK">При наведении мыши на слово, мы просто двигаем задний фон.</p>
  <p id="b9CQ">Так и получается анимированный градиент текста.</p>
  <h3 id="Fk3p">📱 Мои каналы</h3>
  <p id="a7TZ"><a href="http://t.me/grreru" target="_blank">Telegram</a></p>
  <p id="ne14"><a href="https://www.youtube.com/@GrReRu" target="_blank">YouTube</a></p>
  <p id="CA6j"><a href="https://vk.ru/grreru" target="_blank">VK</a></p>
  <p id="Vp3h">Автор: Ренат Гришин <em>(Renat Grishin)</em></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.grre.ru/aCbvXk1aVRO</guid><link>https://blog.grre.ru/aCbvXk1aVRO?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru</link><comments>https://blog.grre.ru/aCbvXk1aVRO?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru#comments</comments><dc:creator>grreru</dc:creator><title>Obsidion — Как синхронизировать плагины на всех устройствах.</title><pubDate>Wed, 08 Oct 2025 18:06:38 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/69/3d/693df270-8f90-49e3-a604-cb34060c9241.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/22/42/224209aa-4a2f-4b69-afb4-3ac65c37f5e3.png"></img>Если используете Obsidian на разных устройствах и пользуетесь плагинами, то возможно вставал вопрос о синхронизации плагинов между всеми устройствами. Иначе устанавливать их вручную на всех устройствах такое себе.]]></description><content:encoded><![CDATA[
  <figure id="xZs0" class="m_column">
    <img src="https://img3.teletype.in/files/22/42/224209aa-4a2f-4b69-afb4-3ac65c37f5e3.png" width="1280" />
  </figure>
  <p id="NXEv">Если используете Obsidian на разных устройствах и пользуетесь плагинами, то возможно вставал вопрос о синхронизации плагинов между всеми устройствами. Иначе устанавливать их вручную на всех устройствах такое себе.</p>
  <p id="MfGL">Для синхронизации нам контента и плагинов нам понадобится плагин Remotely Save.<br />Если раньше им не пользовались, то вот инструкции:<br /><a href="https://blog.grre.ru/SWmKFohhFX2" target="_blank">Obsidian – облачная синхронизация через Yandex Disk<br />Obsidian – облачная синхронизация через Mail Cloud (Облако)</a></p>
  <p id="80pK">Подписывайтесь мой <strong><a href="https://t.me/grreru" target="_blank">Telegram</a></strong>, <strong><a href="https://vk.com/grreru" target="_blank">VK</a> и <a href="https://www.youtube.com/@GrReRu" target="_blank">Youtube</a></strong></p>
  <h2 id="00GP">Начинаем</h2>
  <p id="lmB9">Открываем obsidian на том устройстве, где настроены и установлены нужные вам плагины. (Например на компе).</p>
  <p id="9xsT">Заходим в <strong>Настройки</strong></p>
  <figure id="23tc" class="m_column">
    <img src="https://img1.teletype.in/files/46/a8/46a8b14c-e722-480a-892a-0158ad4ead6b.png" width="336" />
  </figure>
  <p id="fKPx">В <strong>Community plugins</strong> (Сторонние плагины) находим <strong>Remotely Save</strong>.<br />Находим пункт <strong>Sync Config Dir (experimental)</strong> устанавливаем <strong>Enable</strong>.</p>
  <figure id="yKd1" class="m_column">
    <img src="https://img1.teletype.in/files/c7/57/c757d337-edd5-49bc-8386-fad7a98cd578.png" width="1096" />
  </figure>
  <p id="DNDd">Закрываем настройки нажимаем на <strong>Remotely Save</strong>.</p>
  <figure id="W4WS" class="m_column">
    <img src="https://img4.teletype.in/files/74/a6/74a6e203-7a11-4a96-a42f-6351c0f034b4.png" width="736" />
  </figure>
  <h2 id="zv3C">Синхронизируем плагины на других устройствах</h2>
  <p id="LRqC">Например настроем на телефоне.</p>
  <p id="fHc5">Открываем боковую панель, заходим в <strong>Настройки.</strong></p>
  <figure id="I5i7" class="m_column">
    <img src="https://img2.teletype.in/files/57/08/570871cb-ce5c-4821-9119-6b8ed4841378.png" width="2201" />
  </figure>
  <p id="EZ8a">Внизу где <strong>Community plugins</strong> (Сторонние плагины) находим <strong>Remotely Save</strong>.<br />Находим пункт <strong>Sync Config Dir (experimental)</strong> устанавливаем <strong>Enable</strong>.</p>
  <figure id="28TO" class="m_column">
    <img src="https://img2.teletype.in/files/12/6c/126c963c-9b48-4dcc-ba08-fc1adbaf499d.png" width="2196" />
  </figure>
  <p id="Stxi">Закрываем все, открываем нижнее меню и жмем <strong>Remotely Save</strong>.</p>
  <figure id="etsJ" class="m_column">
    <img src="https://img1.teletype.in/files/02/b7/02b7d95f-c0e8-43bf-8cc0-e62d0269c914.png" width="2197" />
  </figure>
  <p id="Ha9c">Опять открываем боковую панель, заходим в <strong>Настройки.</strong></p>
  <figure id="bxhn" class="m_column">
    <img src="https://img2.teletype.in/files/57/08/570871cb-ce5c-4821-9119-6b8ed4841378.png" width="2201" />
  </figure>
  <p id="AotG">Заходим в пункт <strong>Community plugins</strong> (Сторонние плагины)<br />Нажимаем иконку (обновить)<br />У нас должны подтянутся наши плагины, активируем их.</p>
  <figure id="C4s5" class="m_column">
    <img src="https://img4.teletype.in/files/b7/6c/b76c5ed5-a32a-48d5-b11d-eff5dfbb377e.png" width="3310" />
  </figure>
  <p id="dRMe">Готово. Плагины в обсидиан синхронизированы со всеми настройками.</p>
  <h3 id="jklZ">📱 Мои каналы</h3>
  <p id="BKPC"><a href="http://t.me/grreru" target="_blank">Telegram</a></p>
  <p id="qybl"><a href="https://www.youtube.com/@GrReRu" target="_blank">YouTube</a></p>
  <p id="M94a"><a href="https://vk.ru/grreru" target="_blank">VK</a></p>
  <p id="NtpU">Автор: Ренат Гришин <em>(Renat Grishin)</em></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.grre.ru/6Qd489vEJe8</guid><link>https://blog.grre.ru/6Qd489vEJe8?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru</link><comments>https://blog.grre.ru/6Qd489vEJe8?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru#comments</comments><dc:creator>grreru</dc:creator><title>Obsidian – облачная синхронизация через Mail Cloud (Облако)</title><pubDate>Sun, 08 Jun 2025 09:41:27 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/b8/d5/b8d53ddd-1554-4fb5-99f7-66ced26e26bf.png"></media:content><category>IT</category><description><![CDATA[<img src="https://img1.teletype.in/files/07/fe/07fe6856-2be5-4b8e-8b4d-7f24013cbe4e.png"></img>Подробная инструкция по настройки синхронизации Obsidian через Mail cloud.]]></description><content:encoded><![CDATA[
  <blockquote id="jr2p">Подписывайтесь мой <strong><a href="https://t.me/grreru" target="_blank">Telegram</a></strong>, <strong><a href="https://vk.com/grreru" target="_blank">VK</a> и <a href="https://www.youtube.com/@GrReRu" target="_blank">Youtube</a></strong></blockquote>
  <figure id="yMv8" class="m_column">
    <img src="https://img1.teletype.in/files/07/fe/07fe6856-2be5-4b8e-8b4d-7f24013cbe4e.png" width="1280" />
  </figure>
  <p id="r8yv">Оглавление</p>
  <nav>
    <ul>
      <li class="m_level_1"><a href="#IGg0">Настройка Mail cloud</a></li>
      <li class="m_level_1"><a href="#P5jT">Настройка Obsidian</a></li>
      <li class="m_level_2"><a href="#1mvM">На компьютере</a></li>
      <li class="m_level_2"><a href="#jYid">На телефоне</a></li>
      <li class="m_level_1"><a href="#5mYZ">Возможные проблемы</a></li>
      <li class="m_level_2"><a href="#jklZ">📱 Мои каналы</a></li>
    </ul>
  </nav>
  <h2 id="IGg0">Настройка Mail cloud</h2>
  <p id="729z">Переходим по этой ссылке: <a href="https://account.mail.ru/user/2-step-auth/passwords/" target="_blank">https://account.mail.ru/user/2-step-auth/passwords/</a></p>
  <figure id="7B8d" class="m_original">
    <img src="https://img4.teletype.in/files/f7/9f/f79ff47e-2793-4232-9b8c-4ae76df7d907.png" width="427" />
  </figure>
  <p id="RfTr">Даем любое имя нашему паролю. Например Webdav.</p>
  <figure id="NZ8b" class="m_original">
    <img src="https://img2.teletype.in/files/57/2f/572fcc46-f394-48dc-8570-2702a0990e96.png" width="451" />
  </figure>
  <p id="gsyy">Выбираем — Полный доступ к Облаку (WebDAV)</p>
  <figure id="f5Cu" class="m_original">
    <img src="https://img4.teletype.in/files/76/d6/76d69588-fdb0-4ff6-8da7-4ca87d09c0ff.png" width="607" />
  </figure>
  <p id="yYzW">Возможно потребуется подтвердить аккаунт.</p>
  <figure id="pER2" class="m_original">
    <img src="https://img4.teletype.in/files/f8/2a/f82af8d3-c352-4fae-b632-cd96d79a0828.png" width="489" />
  </figure>
  <p id="rFme">Мы получили пароль от Webdav. Скопируйте и сохраните его, Она нам пригодится когда будем настраивать Obsidian.</p>
  <figure id="Gteh" class="m_original">
    <img src="https://img3.teletype.in/files/6f/5c/6f5c9e28-14b8-4d39-9bc8-c22f83db0cd7.png" width="451" />
  </figure>
  <h2 id="P5jT">Настройка Obsidian</h2>
  <h3 id="1mvM">На компьютере</h3>
  <p id="Yip1"></p>
  <p id="G0ux">Заходим в Obsidian и нажимаем на <strong>Настройки</strong></p>
  <figure id="mqH4" class="m_column">
    <img src="https://img3.teletype.in/files/6a/f9/6af98b47-c7e3-4e32-baf3-8f6760ae9f85.png" width="953" />
  </figure>
  <p id="1jhe">Переходим в <strong>Community Plugins</strong> (Сторонние плагины) -&gt; <strong>Browse</strong> (Обзор)</p>
  <figure id="jBF8" class="m_column">
    <img src="https://img4.teletype.in/files/3d/92/3d929c02-b43d-498e-91f0-253740e52f25.png" width="855" />
  </figure>
  <p id="Bub9">В поиске пишем <strong>Remotely Save</strong> и выбираем плагин у которого более 1 млн установок.</p>
  <figure id="VkaN" class="m_column">
    <img src="https://img1.teletype.in/files/47/77/4777a951-bccf-434a-b39e-8518c76d0f99.png" width="858" />
  </figure>
  <p id="fVjG">Нажимаем на <strong>Install </strong>(Установить)</p>
  <figure id="dejY" class="m_column">
    <img src="https://img2.teletype.in/files/9f/30/9f30f73e-a86c-4f24-aeae-83699e137654.png" width="956" />
  </figure>
  <p id="1VUz">Далее <strong>Enable </strong>(Включить)</p>
  <figure id="2rl9" class="m_column">
    <img src="https://img3.teletype.in/files/69/9c/699cea34-2789-46f1-87a8-4478da7f71ad.png" width="956" />
  </figure>
  <p id="9mt6">Нажимаем на <strong>Option </strong>(Настройки)</p>
  <figure id="9kjF" class="m_column">
    <img src="https://img3.teletype.in/files/2f/70/2f7077ce-c3f8-454c-abea-772260e98423.png" width="956" />
  </figure>
  <p id="fRG4">В строке <strong>Choose A Remote Service</strong> выбираем <strong>Webdav</strong></p>
  <figure id="h57Q" class="m_column">
    <img src="https://img4.teletype.in/files/7b/3c/7b3cba90-256a-436d-82e1-dad43ef76e9c.png" width="954" />
  </figure>
  <p id="9FV1"><strong>Server Address</strong> вписываем <a href="https://webdav.cloud.mail.ru" target="_blank">https://webdav.cloud.mail.ru</a><strong><br />Username </strong>наш email от почты mail.ru<br /><strong>Password</strong> вставляем пароль от Webdaw (<a href="#EXBF">мы его получали когда настраивали mail cloud</a>)</p>
  <figure id="JsO1" class="m_column">
    <img src="https://img1.teletype.in/files/c2/a9/c2a97bd2-46f5-483d-b0ab-300089273ee2.png" width="957" />
  </figure>
  <p id="9qfD">Все закрываем, и нажимаем на иконку <strong>Remotely Save</strong></p>
  <figure id="hLEd" class="m_column">
    <img src="https://img2.teletype.in/files/5a/03/5a03db9a-7d98-41ef-8e8a-61a30da7a54e.png" width="958" />
  </figure>
  <p id="1fdz">Внизу видим что наши файлы синхранизируются</p>
  <figure id="Lo0I" class="m_column">
    <img src="https://img2.teletype.in/files/d1/bb/d1bbff71-473f-4f3a-b39a-f481fa70aab7.png" width="956" />
  </figure>
  <p id="RZrZ">Видим сообщение об успешной синхронизации.</p>
  <figure id="7ao9" class="m_column">
    <img src="https://img2.teletype.in/files/5d/ff/5dff9e08-868a-43a0-8fff-33449820e291.png" width="957" />
  </figure>
  <p id="3UBJ">Если зайти в <a href="https://cloud.mail.ru/home/" target="_blank">mail cloud</a>, то мы увидим что у нас создалась папка с названием нашего проекта в obsidian</p>
  <figure id="D13E" class="m_original">
    <img src="https://img1.teletype.in/files/42/9e/429e0622-02c6-42e5-9d84-12efe8cdffde.png" width="627" />
  </figure>
  <h3 id="jYid">На телефоне</h3>
  <p id="I3KH">Открываем Obsidian на телефоне и <strong>создаем новый проект</strong></p>
  <figure id="9FOL" class="m_column">
    <img src="https://img4.teletype.in/files/38/a7/38a7f06d-f2af-48d0-8d61-611753f7607f.png" width="1080" />
  </figure>
  <p id="ZDtn"><strong>Vault name</strong> — имя проекта должно быть таким-же как и на компьютере<br />Нажимаем на <strong>Create</strong></p>
  <figure id="GFNX" class="m_column">
    <img src="https://img3.teletype.in/files/e1/e1/e1e12dcc-94e2-4b02-a32c-070a8b53469e.png" width="2352" />
  </figure>
  <p id="DsXm">На телефоне выбираем папку, где будем хранить проект<br />В верхнем левом углу вызываем навигацию по проекту</p>
  <figure id="tbPA" class="m_column">
    <img src="https://img4.teletype.in/files/b6/a7/b6a7ea4f-dfe4-4dec-bb4b-f57481b6b3f1.png" width="2204" />
  </figure>
  <p id="Rm9P">Нажимаем на <strong>Настройки</strong> -&gt; <strong>Сторонние плагины</strong></p>
  <figure id="jdlX" class="m_column">
    <img src="https://img4.teletype.in/files/73/90/73901192-174d-43ec-8574-6e6a13870894.png" width="2204" />
  </figure>
  <p id="GZsU">Жмем на <strong>Обзор</strong><br />В поиске пишем <strong>Remotely Save</strong> и выбираем плагин у которого более 1 млн установок.</p>
  <figure id="cfL5" class="m_column">
    <img src="https://img4.teletype.in/files/bd/3b/bd3b85b5-60ec-4711-8bc4-4f8e27fa64d6.png" width="2210" />
  </figure>
  <p id="jH2M">Нажимаем на <strong>Установить </strong>-&gt; <strong>Включить </strong>-&gt; <strong>Настройки</strong></p>
  <figure id="Fqam" class="m_column">
    <img src="https://img4.teletype.in/files/b2/fc/b2fc108b-03b1-45d7-8058-af6d0e54dbc4.png" width="3320" />
  </figure>
  <p id="hvcs">В строке <strong>Choose A Remote Service</strong> выбираем <strong>Webdav</strong></p>
  <p id="8wS9"><strong>Server Address</strong> вписываем <a href="https://webdav.cloud.mail.ru" target="_blank">https://webdav.cloud.mail.ru</a><strong><br />Username </strong>наш email от почты mail.ru<br /><strong>Password</strong> вставляем пароль от Webdaw (<a href="#EXBF">мы его получали когда настраивали mail cloud</a>)</p>
  <figure id="BdDH" class="m_column">
    <img src="https://img2.teletype.in/files/d1/26/d12693c6-9df3-475b-b9e2-44c0d4da328d.png" width="2192" />
  </figure>
  <p id="lrKq">Закрываем Настройки, закрываем навигацию по проекту.</p>
  <p id="p8qc">Нажимаем на нижнее правое меню</p>
  <figure id="elru" class="m_column">
    <img src="https://img1.teletype.in/files/4b/a7/4ba7293c-53a3-4d76-8a2b-aea5e23c1c4e.png" width="2198" />
  </figure>
  <p id="6y9X">Нажимаем на Remotely Save</p>
  <p id="8beK">Происходит синхронизация, мы увидим сообщение успешной синхронизации.</p>
  <p id="2Mo8">В навигации по проекту мы увидим наши разделы.</p>
  <figure id="W5ji" class="m_column">
    <img src="https://img2.teletype.in/files/12/17/12176dde-1ff1-47eb-952b-961d25fa1df8.png" width="2198" />
  </figure>
  <h2 id="5mYZ">Возможные проблемы</h2>
  <p id="SJgj">Если вы достаточно долго не синхронизировали проекты на телефоне и на компе, то могут возникнуть конфликты в синхронизации файлов.<br />Лечится тем, что нужно удалить проект на одном из устройстве и запустить настроить его по новой и запустить синхронизацию.</p>
  <h3 id="jklZ">📱 Мои каналы</h3>
  <p id="BKPC"><a href="http://t.me/grreru" target="_blank">Telegram</a></p>
  <p id="qybl"><a href="https://www.youtube.com/@GrReRu" target="_blank">YouTube</a></p>
  <p id="M94a"><a href="https://vk.ru/grreru" target="_blank">VK</a></p>
  <p id="NtpU">Автор: Ренат Гришин <em>(Renat Grishin)</em></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.grre.ru/egbRGH6eFPR</guid><link>https://blog.grre.ru/egbRGH6eFPR?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru</link><comments>https://blog.grre.ru/egbRGH6eFPR?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru#comments</comments><dc:creator>grreru</dc:creator><title>Godot – настойка проекта под PixelArt</title><pubDate>Sat, 05 Apr 2025 17:12:54 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/23/14/23149ed1-e5f2-4515-8350-936bf839a3f4.png"></media:content><category>Godot</category><description><![CDATA[<img src="https://img3.teletype.in/files/63/d7/63d70662-2a29-4d5f-9a97-8387550e7dcf.png"></img>Настройка Godot 3.6 под Pixel art проект.]]></description><content:encoded><![CDATA[
  <p id="99R2">Настройка Godot 3.6 под Pixel art проект.</p>
  <p id="uSgA"><a href="https://www.reddit.com/r/godot/comments/fah25e/best_way_to_achieve_pixel_perfect_rendering/" target="_blank">Оригинал статьи на Reddit</a></p>
  <p id="kPuD">Подписывайтесь мой <strong><a href="https://t.me/grreru" target="_blank">Telegram</a></strong> и <strong><a href="https://vk.com/grreru" target="_blank">VK</a></strong></p>
  <figure id="4kp9" class="m_column">
    <img src="https://img3.teletype.in/files/63/d7/63d70662-2a29-4d5f-9a97-8387550e7dcf.png" width="800" />
  </figure>
  <h2 id="CqBQ">1. Настройка разрешения</h2>
  <p id="vUfg"><strong>Project &gt; Project Settings &gt; Display &gt; Window &gt; Width, Height</strong></p>
  <p id="jvYH">Устанавливаем разрешение, для примера возьмем NES/SNES 256x224.<br />Так как современный формат 16:9, то переделаем это разрешение на 384x216.<br /><br />Вы можете получить другие разрешения, разделив ваше целевое разрешение (например, 1920/5 = 384, 1080/5 = 216). <br />Список разрешений, с которыми вы можете работать</p>
  <figure id="JGwp" class="m_column">
    <img src="https://img2.teletype.in/files/d5/c7/d5c78fd9-53e5-4dd5-b92a-1dbc21b4d4fa.jpeg" width="1192" />
  </figure>
  <h2 id="YJmU">2. Настройка окна</h2>
  <p id="5miv"><strong>Project &gt; Project Settings &gt; Display &gt; Window &gt; Test Width, Test Height</strong></p>
  <p id="NKqA">Устанавливаем ширину и высоту. Берем цифры которые мы указали выше и умножаем их на 3 (4 или 5). Это коэффициент масштабирования для вашей игры в оконном режиме.</p>
  <p id="FgzC">В поле вводим 386*3 и поле Godot автоматически рассчитает значение.</p>
  <p id="ABbZ">Если вы не установите тестовую ширину и высоту, ваша игра будет крошечной в оконном режиме, так как один пиксель будет одним пикселем на вашем дисплее.</p>
  <h2 id="2k8Q">3. Растяжение окна</h2>
  <p id="kY9f"><strong>Project &gt; Project Settings &gt; Display &gt; Window &gt; Stretch &gt; Mode</strong></p>
  <p id="N5PL">Ставим <strong>viewport</strong></p>
  <p id="hHzZ">Подробнее о режимах: <a href="https://www.reddit.com/r/godot/comments/e5nbzf/which_stretch_mode_should_you_chose_cheat_sheet/" target="_blank">тут (en)</a></p>
  <h2 id="iJim">4. Адаптируемость</h2>
  <p id="CUuC"><strong>Project &gt; Project Settings &gt; Display &gt; Window &gt; Stretch &gt; Aspect</strong></p>
  <p id="QIm2">keep – Если хотим чтобы экран не был адаптивным, то ставим (выберем его)</p>
  <p id="wjF9">keep_width – Экран адаптируется по высоте, подходит для игр с вертикальным экраном (мобильные например)</p>
  <p id="5c7V">keep_height – Экран адаптируется по ширине, для игр в горизонтальном формате (основная часть игр)</p>
  <p id="Y22w">expand – Растягивается по ширине и высоте</p>
  <h2 id="nMtl"><strong>5. Pixel Snap</strong></h2>
  <p id="JtIK"><strong>Project &gt; Project Settings &gt; Rendering &gt; 2D &gt; Use GPU Pixel Snap</strong></p>
  <p id="Ise5">Включаем.</p>
  <p id="PvOM">Переходим на экран 2D просмотра. Нажимаем на <strong>Snapping Option</strong> (3 вертикальные точки) и включаем <strong>Use Pixel Snap</strong></p>
  <figure id="UaVR" class="m_column">
    <img src="https://img3.teletype.in/files/24/30/24303ac7-6758-4453-b9b9-5e55e4aa9e66.png" width="1270" />
  </figure>
  <h2 id="ou1F">6. Правила импорта ассетов</h2>
  <p id="O1Ri">Если мы импортируем пиксельный ассет, то в проекте он будет размыт. Чтобы это исправить нужно поменять настройки импорта ассетов.</p>
  <p id="LZDI">Переходим в <strong>FileSystem</strong> выбираем любой ассет например <strong>icon.png</strong></p>
  <figure id="8CG8" class="m_column">
    <img src="https://img3.teletype.in/files/a3/04/a3041642-0113-4ad2-8267-0003b7181c47.png" width="1132" />
  </figure>
  <p id="4wbv">Выбираем вкладку <strong>Import &gt; Preset &gt; 2D Pixel</strong></p>
  <figure id="SoaZ" class="m_column">
    <img src="https://img2.teletype.in/files/99/43/99437567-8b91-46b8-8d8f-dfd4534b9aa0.png" width="1132" />
  </figure>
  <p id="ZR4j">Устанавливаем все импорты по умолчанию<br /><strong>Import &gt; Preset &gt; 2D Pixel &gt; Set as Default for &#x27;Texture&#x27;</strong></p>
  <figure id="qRdm" class="m_column">
    <img src="https://img2.teletype.in/files/d1/c8/d1c82392-baa5-4497-9961-2b6a8339f9ca.png" width="1250" />
  </figure>
  <p id="ZndN">Применяем настройки, нажимаем <strong>Reaimport</strong>. </p>
  <h2 id="CvYp">7. Убираем центрирование ассетов</h2>
  <p id="8Zcq">Всякий раз, когда вы добавляете узел Sprite или AnimatedSprite, обязательно отключите свойство «Centered». </p>
  <p id="CE5C">Для узла AnimatedSprite вы найдете это свойство в разделе «AnimatedSprite». </p>
  <p id="k5WH">Для узла Sprite — в разделе «Offset». </p>
  <figure id="yrZ3" class="m_column">
    <img src="https://img1.teletype.in/files/4f/e0/4fe00959-a04c-4281-b451-45e8358be638.png" width="1608" />
  </figure>
  <p id="fifh">Это гарантирует, что начало координат вашей графики не будет находиться между пикселями, если ваша графика имеет нечетное число ширины или высоты. Вы по-прежнему можете перемещать начало координат, устанавливая значения Offset. <br />Обязательно используйте целочисленные значения, когда вы это делаете.</p>
  <h2 id="mVl6">PS</h2>
  <p id="mnpR">Если вы попытаетесь переделать свой проект в pixelart некоторое время спустя, когда вы уже работали над ним, вам придется убедиться, что все позиционировано по целочисленным значениям (перейдите в инспектор и проверьте все значения Transform. Для узлов Contol также проверьте, есть ли у вас целые числа в свойствах rect_size.) В противном случае вы получите дрожание при движении камеры. Это может создать проблемы в работе с Tilemaps.</p>
  <h2 id="JAYm">И еще</h2>
  <figure id="SrQt" class="m_column">
    <img src="https://img4.teletype.in/files/75/e5/75e51d4a-5fe7-417e-a7f4-0feea270d83c.png" width="604" />
  </figure>
  <p id="Xqal">Если вы создаете более одного проекта в одинаковом стиле, рекомендую просто скопировать файл project.godot в ваш новый проект. Этот файл хранит все настройки вашего проекта, а также вашу карту входных данных, поэтому стоит настроить карту входных данных.</p>
  <h3 id="jklZ">📱 Мои каналы</h3>
  <p id="BKPC"><a href="http://t.me/grreru" target="_blank">Telegram</a></p>
  <p id="qybl"><a href="https://www.youtube.com/@GrReRu" target="_blank">YouTube</a></p>
  <p id="M94a"><a href="https://vk.ru/grreru" target="_blank">VK</a></p>
  <p id="NtpU">Автор: Ренат Гришин <em>(Renat Grishin)</em></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.grre.ru/SWmKFohhFX2</guid><link>https://blog.grre.ru/SWmKFohhFX2?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru</link><comments>https://blog.grre.ru/SWmKFohhFX2?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru#comments</comments><dc:creator>grreru</dc:creator><title>Obsidian – облачная синхронизация через Yandex Disk</title><pubDate>Thu, 31 Oct 2024 21:07:57 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/d1/13/d1132d70-08ba-4260-9873-c1508847a695.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/73/94/73942170-8ab5-4858-8c48-2ee18f101ed1.png"></img>Подключаем синхронизацию Obsidian через Yandex Disk]]></description><content:encoded><![CDATA[
  <figure id="Abgb" class="m_column">
    <img src="https://img4.teletype.in/files/73/94/73942170-8ab5-4858-8c48-2ee18f101ed1.png" width="1280" />
  </figure>
  <blockquote id="pRho">Подписывайтесь мой <strong><a href="https://t.me/grreru" target="_blank">Telegram</a></strong> и <strong><a href="https://vk.com/grreru" target="_blank">VK</a></strong></blockquote>
  <p id="7F4m"><strong>Навигация:</strong></p>
  <nav>
    <ul>
      <li class="m_level_1"><a href="#6bm9">Настройки Яндекс Диска</a></li>
      <li class="m_level_1"><a href="#ZqJp">Настройка Obsidian (Для компа)</a></li>
      <li class="m_level_1"><a href="#5msd">Настройка Obsidian (Для смартфона)</a></li>
      <li class="m_level_1"><a href="#s7zo">Возможные проблемы</a></li>
      <li class="m_level_2"><a href="#jklZ">📱 Мои каналы</a></li>
    </ul>
  </nav>
  <p id="eZUI">В этой статье будем синхронизировать <strong>Obsidian</strong> через <strong>Yandex Disk</strong></p>
  <p id="DwEe"><a href="https://obsidian.md/download" target="_blank">Качаем Obsidian</a></p>
  <h2 id="6bm9">Настройки Яндекс Диска</h2>
  <p id="hz9b">В Яндексе переходим в <strong>Пароли приложений</strong><br /><a href="https://id.yandex.ru/security/app-passwords" target="_blank">https://id.yandex.ru/security/app-passwords</a></p>
  <ul id="ZA4T">
    <li id="xJa5">Жмем на Файл <strong>WebDAV</strong></li>
    <li id="sxfm">Вводим любое имя, например: <em>Obsidian</em></li>
    <li id="U4mQ">Копируем пароль</li>
  </ul>
  <figure id="6gQs" class="m_column">
    <img src="https://img3.teletype.in/files/63/3e/633eaf44-b2b0-495b-b238-8b0583673612.png" width="1134" />
  </figure>
  <figure id="UA1F" class="m_column">
    <img src="https://img2.teletype.in/files/10/f5/10f5ff3e-0861-4160-8165-03ad6d51be4e.png" width="1134" />
  </figure>
  <figure id="9Nul" class="m_column">
    <img src="https://img2.teletype.in/files/5c/fa/5cfabcd8-e90d-4bce-85cd-f7dcd01a4cbf.png" width="1134" />
  </figure>
  <h2 id="ZqJp">Настройка Obsidian (Для компа)</h2>
  <p id="AWKb">Заходим в Настройки -&gt; Сторонние плагины -&gt; Включить плагины сообщества -&gt; Плагины сообщества (обзор)</p>
  <p id="M9mc">В поле поиска вводим <strong>Remotely Save. </strong>Выбираем его и жмем:</p>
  <ul id="zgGE">
    <li id="pBuF">Установить</li>
    <li id="GLSG">Включить</li>
    <li id="rnWM">Настройки</li>
  </ul>
  <p id="02ZD"><u>Choose A Remote Service</u> выбираем <strong>Webdav</strong></p>
  <p id="quLu">Server Address: <strong>https://webdav.yandex.ru/</strong></p>
  <p id="3NCV"><u>Username</u> вводим ваш логин от yandex почты.<br />Например: kyzmichmail@yandex.ru будет <em>kyzmichmail</em></p>
  <p id="OYui"><u>Run Once On Start Up Automatically</u> можно установить <strong>sync once after 1 second of start up.</strong><br />Обновляем данные после первого запуска.</p>
  <p id="irSA">Закрываем окно настроек.</p>
  <p id="hcuI">Когда нам надо будет сохранить данные нажимаем на <strong>Remotely Save</strong></p>
  <figure id="qhwx" class="m_column">
    <img src="https://img3.teletype.in/files/26/66/2666d678-a77f-420a-895b-8033f81efc8b.png" width="2044" />
  </figure>
  <figure id="ruN4" class="m_column">
    <img src="https://img1.teletype.in/files/4b/cd/4bcd6613-5731-4deb-8423-4f8dc44650f8.png" width="2044" />
  </figure>
  <figure id="QcH5" class="m_column">
    <img src="https://img3.teletype.in/files/65/66/65662d17-f57e-4799-876f-5430b3432d8d.png" width="2044" />
  </figure>
  <figure id="MbkG" class="m_column">
    <img src="https://img3.teletype.in/files/2e/59/2e593ae4-5f51-4cc0-b89b-e7a1903ee38c.png" width="2044" />
  </figure>
  <figure id="LVub" class="m_column">
    <img src="https://img4.teletype.in/files/f8/20/f820b368-444d-473c-8ba4-6231eb0db7a7.png" width="2044" />
  </figure>
  <figure id="QrI5" class="m_column">
    <img src="https://img3.teletype.in/files/2c/44/2c44c3bf-09b2-48b3-88f3-3946aee1d115.png" width="2044" />
  </figure>
  <figure id="yvJl" class="m_column">
    <img src="https://img3.teletype.in/files/6a/d6/6ad6fb3e-4e63-476f-a6e9-e40a3f9fb71c.png" width="2044" />
  </figure>
  <figure id="xTeV" class="m_column">
    <img src="https://img2.teletype.in/files/1e/20/1e20c8e4-6dd1-4a93-8c9f-6b888e0e5a94.png" width="2044" />
  </figure>
  <h2 id="5msd">Настройка Obsidian (Для смартфона)</h2>
  <p id="Li6p">Создаем такую-же папку как и на компе (в яндекс диске) с учетом регистра.</p>
  <p id="Q79J">Open folder as vault -&gt; Создать папку -&gt; Имя папки как на компе -&gt; OK</p>
  <figure id="KMDB" class="m_column">
    <img src="https://img2.teletype.in/files/d8/8f/d88fd0f9-b8d1-432c-b640-a1a82ba9a0c8.png" width="1833" />
  </figure>
  <p id="7CIb">Находясь в нашей папке нажимаем:</p>
  <p id="N259">Использовать эту папку -&gt; Разрешить -&gt; Навигация</p>
  <figure id="bpKy" class="m_column">
    <img src="https://img4.teletype.in/files/79/41/79410d82-63b1-4b15-bf19-08fc309bff3d.png" width="1833" />
  </figure>
  <p id="Y0dO">Настройки -&gt; Community plugins -&gt; Turn on community plugins</p>
  <figure id="O6EX" class="m_column">
    <img src="https://img3.teletype.in/files/68/d8/68d83f68-cd3f-4aef-86d8-b834af041a55.png" width="1833" />
  </figure>
  <p id="jX7e">Browse -&gt; Поиск: <strong>Remotely Save</strong> -&gt; Выбираем <strong>Remotely Save </strong>-&gt; Install</p>
  <figure id="71Ia" class="m_column">
    <img src="https://img3.teletype.in/files/ab/50/ab5013d9-ab2c-4592-8dfb-c5f7246b65bd.png" width="1833" />
  </figure>
  <p id="1PE4">Принимаем условия<br />Agree -&gt; Options</p>
  <p id="Qxpw">Настраиваем<u><br />Choose A Remote Service:</u> <strong>Webdav</strong></p>
  <figure id="LpEM" class="m_column">
    <img src="https://img2.teletype.in/files/1e/a5/1ea5baab-fd8d-40e5-a0ad-1d46e8f3e03b.png" width="1833" />
  </figure>
  <p id="sXcp"><u>Server Address</u>: <strong>https://webdav.yandex.ru/</strong></p>
  <p id="B7j0"><u>Username</u> вводим ваш логин от yandex почты.<br />Например: kyzmichmail@yandex.ru будет <em>kyzmichmail</em></p>
  <p id="QUpl"><u>Run Once On Start Up Automatically</u> можно установить <strong>sync once after 1 second of start up.</strong></p>
  <p id="oOXi">Проверяем подключение <strong>Check<br /></strong>Если все ок выйдет окно –<em>Great!</em></p>
  <p id="vTqt">Закрываем настройки</p>
  <figure id="YpRd" class="m_column">
    <img src="https://img4.teletype.in/files/3e/e7/3ee77ccc-fbce-405a-b75f-11003a0658d1.png" width="1833" />
  </figure>
  <p id="0LuF">Обновляем данные с диска</p>
  <p id="Bnn4">Меню -&gt; Remotely Save</p>
  <figure id="738q" class="m_column">
    <img src="https://img1.teletype.in/files/0c/68/0c685854-6c2d-40a7-9c69-4d3e7164d570.png" width="1833" />
  </figure>
  <p id="46fE">Заходим в навигацию и видим обновления</p>
  <figure id="Ozjd" class="m_column">
    <img src="https://img4.teletype.in/files/37/fe/37fe8d52-8333-4507-87dd-4aff6909be2b.png" width="1833" />
  </figure>
  <h2 id="s7zo">Возможные проблемы</h2>
  <p id="JSYa">С Апреля при использовании Яндекс Диска начали возникать проблемы, при синхронизации данных может выходить ошибка <strong>429 Too many requests</strong>.<br />Возможно помогут следующие шаги:</p>
  <p id="ZZhJ">В настройках Remotely Save -&gt; Advanced Settings -&gt; Concurrency поставить 1 (у некоторых через сутки заработало) </p>
  <p id="J1bb">Можно пересоздать ключ WebDav </p>
  <p id="V5Dp">Или синхронизировать данные через Mail cloud<br />Статья: <a href="https://blog.grre.ru/6Qd489vEJe8" target="_blank">Obsidian – облачная синхронизация через Mail Cloud (Облако)</a></p>
  <h3 id="jklZ">📱 Мои каналы</h3>
  <p id="BKPC"><a href="http://t.me/grreru" target="_blank">Telegram</a></p>
  <p id="qybl"><a href="https://www.youtube.com/@GrReRu" target="_blank">YouTube</a></p>
  <p id="M94a"><a href="https://vk.ru/grreru" target="_blank">VK</a></p>
  <p id="NtpU">Автор: Ренат Гришин <em>(Renat Grishin)</em></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://blog.grre.ru/wn59-s00dF_</guid><link>https://blog.grre.ru/wn59-s00dF_?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru</link><comments>https://blog.grre.ru/wn59-s00dF_?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=grreru#comments</comments><dc:creator>grreru</dc:creator><title>Появление элементов при скролле</title><pubDate>Sun, 01 Jan 2023 21:12:05 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/6c/a4/6ca4b15f-1103-4b89-9765-7c3a56e591a0.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/b9/9a/b99a1f93-248e-48fa-8988-026dd9088add.png"></img>Делаем эффект появления контента при скролле.]]></description><content:encoded><![CDATA[
  <figure id="RxvC" class="m_column">
    <img src="https://img4.teletype.in/files/b9/9a/b99a1f93-248e-48fa-8988-026dd9088add.png" width="1200" />
  </figure>
  <blockquote id="V3ks">Подписывайтесь мой <strong><a href="https://t.me/grreru" target="_blank">Telegram</a></strong> и <strong><a href="https://vk.com/grreru" target="_blank">VK</a></strong></blockquote>
  <h2 id="pH3W"><a href="https://renatgrishin.github.io/demo_001/" target="_blank">Demo</a></h2>
  <p id="OGel">Делаем эффект появления контента при скролле.</p>
  <h3 id="9qS6">HTML</h3>
  <pre id="z9FC" data-lang="html">&lt;section&gt;
 &lt;article class=&quot;anim left&quot;&gt;
  &lt;h1&gt;Заголовок 1&lt;/h1&gt;
  &lt;p&gt;Интересный роль дальнейших количественный позиций, условий. Разработке собой проверки рамки условий активизации. Также в формировании модель намеченных подготовки заданий активности организации развития. Административных плановых же оценить позволяет дальнейших реализация развития. Обучения реализации таким сфера нашей значение реализации количественный сложившаяся важны.&lt;/p&gt;
 &lt;/article&gt;
&lt;/section&gt;
&lt;section&gt;
 &lt;article class=&quot;anim right&quot;&gt;
  &lt;h1&gt;Заголовок 2&lt;/h1&gt;
  &lt;p&gt;Высшего повседневная проверки по практика важные форм занимаемых административных высшего собой формировании соображения сфера также требуют структура рост по эксперимент постоянный дальнейших в в организации формировании форм условий задания реализации нашей активизации. Эксперимент административных направлений в задач. Высшего финансовых ж.&lt;/p&gt;
 &lt;/article&gt;
&lt;/section&gt;
&lt;section&gt;
 &lt;article class=&quot;anim custom&quot;&gt;
  &lt;h1&gt;Заголовок 3&lt;/h1&gt;
  &lt;p&gt;Деятельности позволяет и условий особенности условий также высшего соответствующий кадров нашей собой существенных прогрессивного и количественный развития. Порядка, новая собой соответствующий задания деятельности сфера идейные играет структура эксперимент высшего рамки играет направлений практика сфера деятельности и нашей оценить деятельности образо.&lt;/p&gt;
 &lt;/article&gt;
&lt;/section&gt;</pre>
  <p id="zRLW">Добавляем кастомные классы элементам, которые будут появляться когда мы доскролим до его. В нашем случае это будут: <strong>anim, left, right, custom</strong><br /><strong>anim </strong>– как будет отображаться элемент, когда он появиться. Тут же и будет задана плавность анимации.<br /><strong>left</strong> – элемент будет появляться слево<br /><strong>right</strong> – элемент будет появляться справа<br /><strong>custom</strong> – элемент будет появляться скейлом (увеличиваться)</p>
  <h3 id="JgqQ">CSS</h3>
  <pre id="A5xX" data-lang="css">.anim{
    transition: transform 1s, opacity 1s;
}
.left{
    transform: translateX(-200px);
    opacity: 0;
}
.right{
    transform: translateX(200px);
    opacity: 0;
}
.custom{
    transform: scale(0.1);
    opacity: 0;
}</pre>
  <h3 id="VGyc">JS</h3>
  <pre id="UxAK" data-lang="javascript">window.addEventListener(&#x27;DOMContentLoaded&#x27;, () =&gt; {

    function onEntry (entry, getClass){
        entry.forEach( (change)=&gt;{
            if(change.isIntersecting) {
                change.target.classList.remove(getClass);
                change.target.classList.add(&#x27;animated&#x27;);
            }
        });
    }
    
    function startAnimation(getClass) {
        const elements = document.querySelectorAll(&#x60;.${getClass}&#x60;)
        elements.forEach(element =&gt; {
            let observer = new IntersectionObserver((e)=&gt;{
                onEntry(e, getClass);
            }, {threshold:[0.7]});
            observer.observe( element );
        });
    }

    startAnimation(&quot;left&quot;);
    startAnimation(&quot;right&quot;);
    startAnimation(&quot;custom&quot;);

});</pre>
  <p id="KsvC">startAnimation – Функция принимает название класса элементов, которые будут появляться.</p>
  <p id="epBn">onEntry – функция принимает элемент и название элемента, который удалит.</p>
  <h3 id="jklZ">📱 Мои каналы</h3>
  <p id="BKPC"><a href="http://t.me/grreru" target="_blank">Telegram</a></p>
  <p id="qybl"><a href="https://www.youtube.com/@GrReRu" target="_blank">YouTube</a></p>
  <p id="M94a"><a href="https://vk.ru/grreru" target="_blank">VK</a></p>
  <p id="NtpU">Автор: Ренат Гришин <em>(Renat Grishin)</em></p>

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