<?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>RudichIT </title><generator>teletype.in</generator><description><![CDATA[Переходите в мой канал https://t.me/kyps3]]></description><image><url>https://img1.teletype.in/files/8c/6c/8c6cf5e1-9075-492d-bfe4-709a76404f99.png</url><title>RudichIT </title><link>https://teletype.in/@itrudich</link></image><link>https://teletype.in/@itrudich?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/itrudich?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/itrudich?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Mon, 01 Jun 2026 19:10:57 GMT</pubDate><lastBuildDate>Mon, 01 Jun 2026 19:10:57 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@itrudich/rxIs1_AOdQT</guid><link>https://teletype.in/@itrudich/rxIs1_AOdQT?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich</link><comments>https://teletype.in/@itrudich/rxIs1_AOdQT?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich#comments</comments><dc:creator>itrudich</dc:creator><title>Что будет на выходе?</title><pubDate>Sat, 20 May 2023 14:48:18 GMT</pubDate><description><![CDATA[Ответ: false, false, false, true
Пояснение:]]></description><content:encoded><![CDATA[
  <p id="8Idb">Ответ: false, false, false, true<br />Пояснение:</p>
  <p id="346k">Сase 1. null &gt; 0, null &lt; 0</p>
  <p id="i3nP">Операторы сравнения &gt; и &lt; после приведения непримитивных операндов к примитиву, применяют метод toNumber на обеих частях выражения (исключение: оба операнда типа string). <br />Так, null преобразуется к +0, а 0 остается 0. <br />+0 и 0 имеют одинаковые числовые значения, поэтому результат false. </p>
  <p id="e4P2">[про signed zeros в JS можно почитать тут (https://medium.com/coding-at-dawn/is-negative-zero-0-a-number-in-javascript-c62739f80114)]</p>
  <p id="Bora">***</p>
  <p id="9HCF">Case 2. null == 0</p>
  <p id="BmRw">В ECMA описан алгоритм сравнения для равенств (https://javascript.ru/ecma/part11#a-11.9.3). В зависимости от типа операндов, алгоритм ведет себя по разному. В нем описаны, например, такие кейсы:<br />- когда оба операнда одного типа<br />- когда один из операндов null, а другой undefined<br />- один string, другой number <br />и некоторые другие. <br />Но кейс, в котором один из операндов null, а другой number/string в алгоритме не прописан.<br />Не попав ни в одно из условий, алгоритм вернет false по дефолту.<br />***</p>
  <p id="gTIB">Case 3. null &gt;= 0</p>
  <p id="LBz3">Алгоритм сравнения для &gt;= и &lt;= работает от обратного. (Если a НЕ меньше b, то оно точно больше или равно b.)<br />Т.к null &lt; 0 возвращает значение false, то null &gt;= 0 - это true. <br />По этой логике null &lt;= 0 тоже true.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@itrudich/Q4Mh2xPqn4g</guid><link>https://teletype.in/@itrudich/Q4Mh2xPqn4g?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich</link><comments>https://teletype.in/@itrudich/Q4Mh2xPqn4g?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich#comments</comments><dc:creator>itrudich</dc:creator><title>Что будет на выходе ?</title><pubDate>Fri, 19 May 2023 13:43:03 GMT</pubDate><description><![CDATA[Ответ: Error
]]></description><content:encoded><![CDATA[
  <p id="2OGG">Ответ: Error<br /></p>
  <p id="R9em">Пояснение:</p>
  <p id="lc3D">Параметр функции x - является локальной переменной функции. Дальше по коду функции происходит попытка создать еще одну переменную с таким же именем.</p>
  <p id="n23W">Ключевое слово let не позволяет переопределять переменную в заданной области видимости. Поэтому получаем синтаксическую ошибку &quot;Identifier &#x27;x&#x27; has already been declared&quot;.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@itrudich/58iRCyUBW2l</guid><link>https://teletype.in/@itrudich/58iRCyUBW2l?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich</link><comments>https://teletype.in/@itrudich/58iRCyUBW2l?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich#comments</comments><dc:creator>itrudich</dc:creator><title>Как сохранить самоуничтожающееся фото или видео в Telegram</title><pubDate>Wed, 17 May 2023 23:47:13 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/f2/97/f2979812-6d6f-42d5-9d10-94c72a497965.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/b6/82/b682e5b8-6444-4c35-9a59-6b39937a9697.png"></img>Сегодня речь пойдет о том, как сохранить самоуничтожающееся фото или видео, которое Вам отправил собеседник в Telegram.]]></description><content:encoded><![CDATA[
  <p id="xZgr">Сегодня речь пойдет о том, как сохранить самоуничтожающееся фото или видео, которое Вам отправил собеседник в Telegram.</p>
  <figure id="vSMh" class="m_original">
    <img src="https://img4.teletype.in/files/b6/82/b682e5b8-6444-4c35-9a59-6b39937a9697.png" width="460" />
  </figure>
  <p id="Gbtk">Способ очень простой и не требует наличия на вашем смартфоне никаких патчей или ROOT-прав.</p>
  <p id="QEAr">Итак, приступим.</p>
  <p id="0gT1">Что нужно?</p>
  <p id="IoAJ">Смартфон или эмулятор на Android</p>
  <p id="ZB0I">Telegram X (Версия использованная в статье - 0.22.8.1362, на последней beta-версии 0.25.4.1582 всё еще актуально)</p>
  <p id="K8Ml">ES Проводник (APK легко отыскать в Интернете)</p>
  <p id="8oJx">Теперь включим отображение скрытых файлов в ES Проводнике</p>
  <figure id="zTe3" class="m_original">
    <img src="https://img2.teletype.in/files/1f/a9/1fa9de69-e100-4482-bcdd-06d89a20021f.png" width="720" />
  </figure>
  <p id="wt0J">* внешний вид </p>
  <p id="yZmu">приложения может отличаться в зависимости от версии или выбранной темы оформления</p>
  <p id="yRsd">Откроем Logger</p>
  <figure id="rV1S" class="m_original">
    <img src="https://img4.teletype.in/files/ba/12/ba12ada6-a902-4fdb-a412-cbdd1698b233.png" width="720" />
  </figure>
  <p id="P6y9">Перейдем в чат с самоуничтожающимся Сообщение </p>
  <p id="gsdn">Теперь самое главное. Если вы уже открывали чат с этим сообщением, то для упрощения поиска очистите кэшTelegram X в настройках приложения.</p>
  <p id="4bcx">Иконка огонька, как на скриншоте ниже, говорит о том, что фото или видео уже закэшировано и можно переходить к следующему шагу.</p>
  <p id="Xpp6">ейдем в чат с самоуничтожающимся сообщением</p>
  <figure id="N6iO" class="m_original">
    <img src="https://img1.teletype.in/files/01/e8/01e8e76c-372f-4afc-93b3-4093587a6e51.png" width="720" />
  </figure>
  <p id="dnrj">Обновляем Logger и ищем фото или видео от Telegram X</p>
  <figure id="nps5" class="m_original">
    <img src="https://img4.teletype.in/files/b3/94/b39488f8-6066-44e8-8c29-4c4b1169e1ac.png" width="353" />
  </figure>
  <p id="qzgQ">Переходим в директорию и видим наше фото или видео</p>
  <figure id="VZPd" class="m_original">
    <img src="https://img3.teletype.in/files/e1/f7/e1f7f967-31bd-4705-862f-3a9ea68b2d58.png" width="357" />
  </figure>
  <p id="dK57"></p>
  <p id="FXh0">Копируем наш файл в любую директорию.</p>
  <p id="nwIf">Бонус: Как получить фото не прочитав диалог</p>
  <p id="9pbD">Открываем диалог зажав палец по собеседнику. Ждём кэширования файла и отпускаем палец. Повторяем шаги выше.</p>
  <figure id="VflS" class="m_original">
    <img src="https://img1.teletype.in/files/8b/4e/8b4eb82d-a71a-46bb-a7f7-08990b98ed8c.png" width="720" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@itrudich/iSR1nezNQDH</guid><link>https://teletype.in/@itrudich/iSR1nezNQDH?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich</link><comments>https://teletype.in/@itrudich/iSR1nezNQDH?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich#comments</comments><dc:creator>itrudich</dc:creator><title>Что будет на выходе?</title><pubDate>Tue, 16 May 2023 13:56:15 GMT</pubDate><description><![CDATA[Ответ: window]]></description><content:encoded><![CDATA[
  <p id="jxBz"><strong><em>Ответ: </em></strong><u>window</u></p>
  <p id="Y6hL"><strong><em>Пояснение:</em></strong></p>
  <p id="xn6J"><strong><em>Значение this определяется в момент вызова функции. Если функция вызывается на объекте obj.foo() - this будет равен этому объекту obj. </em></strong></p>
  <p id="LwD2"><strong><em>В нашем примере функция obj.foo передаётся в качестве аргумента в другую функцию callFoo, которая вызывает ее без контекста (нет объекта перед точкой). В нестрогом режиме при выполнении кода в браузере this в этом случае является объектом window.</em></strong></p>
  <p id="rw1J"></p>
  <p id="B8ys"></p>
  <p id="nOmX"></p>
  <p id="TWCm">Значение this определяется в момент вызова функции. Если функция вызывается на объекте obj.foo() - this будет равен этому объекту obj. </p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@itrudich/xC885Ebc6wN</guid><link>https://teletype.in/@itrudich/xC885Ebc6wN?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich</link><comments>https://teletype.in/@itrudich/xC885Ebc6wN?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich#comments</comments><dc:creator>itrudich</dc:creator><title>Что будет на выходе?</title><pubDate>Mon, 15 May 2023 14:07:37 GMT</pubDate><description><![CDATA[Ответ: 1, 5, 3, 4, 2
Пояснение:]]></description><content:encoded><![CDATA[
  <p id="z8Fo"><strong><em>Ответ</em></strong>: 1, 5, 3, 4, 2<br /><strong><em>Пояснение</em></strong>:</p>
  <p id="VsC4">1. Несмотря на то, что функция setTimeout в первой строке имеет нулевой тайм-аут, вызов callback функции не происходит сразу. Движок поместит callback функцию в callback queue (macrotask queue) и переместит ее в стек вызовов, когда тот будет пуст. Поэтому первой в консоль выведется цифра 1.</p>
  <p id="5KvU">2. Функция, которую принимает в качестве аргумента конструктор Promise, выполняется синхронно. Поэтому второй в консоль попадёт цифра 5.</p>
  <p id="4fP2">3. Как и в случае с setTimeout, сallback в методе then выполняется асинхронно несмотря на то, что promise резолвится без задержки. Разница с setTimeout в том, что движок поместит promise callback в другую очередь - job queue (microtask queue), где тот будет дожидаться своей очереди на выполнение. Поэтому следующей в консоль попадает цифра 3.</p>
  <p id="H480">4. Когда весь синхронный код завершен, настает очередь колбэков, которые дожидаются своего выполнения.<br />Microtasks (promises) имеют больший приоритет, чем macrotasks (setTimeout), поэтому следующей в консоль попадет цифра 4 и последней - 2.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@itrudich/mROn_dTy-W1</guid><link>https://teletype.in/@itrudich/mROn_dTy-W1?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich</link><comments>https://teletype.in/@itrudich/mROn_dTy-W1?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich#comments</comments><dc:creator>itrudich</dc:creator><title>Что будет на выходе ?</title><pubDate>Sun, 14 May 2023 11:36:45 GMT</pubDate><description><![CDATA[Ответ: Ivan Ivanov, Alex Alexandrov]]></description><content:encoded><![CDATA[
  <p id="9Bct"><strong><em>Ответ: Ivan Ivanov, Alex Alexandrov</em></strong></p>
  <p id="3nsE">Пояснение:</p>
  <p id="BIMz">Метод bind создаёт новую функцию, которая при вызове устанавливает в качестве контекста выполнения this предоставленное значение. Bind никак не влияет на вызов исходной функции.</p>
  <p id="2zaM">При вызове user.name() контекстом вызова функции является объект user. Поэтому результат - ’Ivan Ivanov’. </p>
  <p id="AMl1">При вызове getName() , созданной методом bind, контекстом вызова является объект, который мы передали в качестве аргумента в метод bind. Поэтому результат - ‘Alex Alexandrov’.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@itrudich/GnP2CLxWhfV</guid><link>https://teletype.in/@itrudich/GnP2CLxWhfV?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich</link><comments>https://teletype.in/@itrudich/GnP2CLxWhfV?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich#comments</comments><dc:creator>itrudich</dc:creator><title>Что будет на выходе?</title><pubDate>Sat, 13 May 2023 00:41:27 GMT</pubDate><description><![CDATA[<img src="https://img1.teletype.in/files/08/9d/089dee18-dd51-4ca9-be56-2626ebac432e.jpeg"></img>Ответ: true]]></description><content:encoded><![CDATA[
  <figure id="1Myg" class="m_original">
    <img src="https://img1.teletype.in/files/08/9d/089dee18-dd51-4ca9-be56-2626ebac432e.jpeg" width="942" />
  </figure>
  <p id="03c2"><em>Ответ: true</em></p>
  <p id="3lRJ"><em>Объяснение:</em></p>
  <p id="W4YQ">Добавление метода Symbol.hasInstance переопределяет поведение instanceof.</p>
  <p id="IguC">new Foo() instanceof Bar возвращает true, потому что Bar наследует Symbol.hasInstance от Foo.</p>
  <p id="f4Ri"></p>
  <p id="WEeA"><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof" target="_blank">https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@itrudich/OBeX7oWwbbf</guid><link>https://teletype.in/@itrudich/OBeX7oWwbbf?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich</link><comments>https://teletype.in/@itrudich/OBeX7oWwbbf?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=itrudich#comments</comments><dc:creator>itrudich</dc:creator><title>Запускаем несколько окон steam с помощью avast</title><pubDate>Fri, 12 May 2023 15:10:05 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/f4/39/f4395f6d-4f38-487c-9760-4f7979b8c7eb.png"></media:content><description><![CDATA[<img src="https://img2.teletype.in/files/9f/98/9f98b0b6-0b8e-435a-a731-efd655b31632.png"></img>Для начала следует открыть браузер и воспользоваться поисковой системой, чтобы найти сайт с загрузкой Avast.]]></description><content:encoded><![CDATA[
  <p id="S4O8">Для начала следует открыть браузер и воспользоваться поисковой системой, чтобы найти сайт с загрузкой Avast.</p>
  <p id="ttxZ">Достаточно написать в поисковик: <a href="https://yandex.ru/search/?text=%D0%A1%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C+Avast+Premium+&lr=10" target="_blank">Скачать Avast Premium</a>.</p>
  <figure id="XkK6" class="m_original">
    <img src="https://img2.teletype.in/files/9f/98/9f98b0b6-0b8e-435a-a731-efd655b31632.png" width="780" />
  </figure>
  <p id="qZAg">Да, в сети интернет есть множество сборок Avast с удалённой защитой и одним лишь элементом &quot;Песочница&quot;, но готовы ли подвергнуть свой компьютер рискам и установить неофициальную программу?</p>
  <figure id="bVNJ" class="m_original">
    <img src="https://img4.teletype.in/files/f5/37/f537487a-527e-46cf-9c78-956c1eb7c14b.png" width="731" />
  </figure>
  <p id="QIyP">После того как перешли на официальный сайт Avast, найдите и выберите Бесплатное 30-дневное пробное использование.</p>
  <p id="8NHG">На момент написании статьи к сожалению пользователям из Российской Федерации и Беларуси запрещено скачивать Avast. Воспользуйтесь любым доступным для вас VPN. Рекомендую NordVPN, его можно приобрести за ≈ 15 ₽. Если нужен поставщик NordVPN пиши в комментариях.</p>
  <p id="eo9C">Если не получилось скачать установщик с VPN, воспользуйся облачным хранилищем</p>
  <p id="uHtY">т</p>
  <p id="gzQZ">Тык </p>
  <p id="54Mf">[ VT ] тык </p>
  <p id="nFzS">Открываем установщик, следуем дальнейшим инструкциям. Первым делом нажимаем &quot;Настройка&quot;</p>
  <figure id="d9J5" class="m_original">
    <img src="https://img4.teletype.in/files/bb/5d/bb5d9566-f4ea-4367-8f97-03658a8b8386.png" width="1118" />
  </figure>
  <p id="1fkS">Выбираем &quot;Минимальная защита&quot;, после сменится на &quot;Настраиваемая защита&quot; и убираем три галочки, оставив галку на &quot;Песочница&quot;. Нажимаем установка.</p>
  <figure id="gvvf" class="m_original">
    <img src="https://img4.teletype.in/files/f3/fb/f3fbaadf-583b-424c-aa5d-daebdc8ba051.png" width="1104" />
  </figure>
  <p id="V7Tn">После успешной установки открываем Avast Premium Security и переходим в Меню.</p>
  <p id="YF5o"></p>
  <figure id="LiBV" class="m_original">
    <img src="https://img3.teletype.in/files/e9/3a/e93aab00-7fc5-4bcf-8340-f679e037240f.png" width="1115" />
  </figure>
  <p id="JLgj">Нажмите &quot;Ввести код активации&quot;.</p>
  <figure id="ij9V" class="m_original">
    <img src="https://img2.teletype.in/files/99/ba/99baa7da-995a-49cf-8c25-fffc161d8e89.png" width="1115" />
  </figure>
  <p id="TZIX">Выбираем &quot;Использовать файл лицензии&quot;.</p>
  <p id="ZlwE"></p>
  <figure id="jHHl" class="m_original">
    <img src="https://img4.teletype.in/files/32/77/32778d8d-f28e-4b8b-aa96-04ff170ff3c6.png" width="1113" />
  </figure>
  <p id="kiMS">Скачать файл лицензии Avast Premium можно через облачное хранилище:</p>
  <ul id="EA3f">
    <li id="ZWdN"><a href="https://drive.google.com/drive/folders/13vDjFTc7FnT2CTBUJh8EtgKORBHcEx72?usp=share_link" target="_blank">тык </a></li>
  </ul>
  <p id="ItkN">Открываем файл лицензии Avast Premium и устанавливаем &quot;Premium&quot; версию.</p>
  <figure id="1Ryk" class="m_original">
    <img src="https://img3.teletype.in/files/a8/74/a874d062-33ff-4689-b856-ccafff663159.png" width="1116" />
  </figure>
  <p id="oW0t">Убираем две галочки, а именно на Avast Cleanup и Avast Secure Line, ведь они нам не нужны. Нажимаем &quot;Активация и Установка&quot;.</p>
  <figure id="rxLL" class="m_original">
    <img src="https://img4.teletype.in/files/b8/1a/b81a8746-54e2-4dab-acb7-1934136e7a7c.png" width="1124" />
  </figure>
  <p id="JDHY">У вас уже есть 30 дней бесплатной подпись</p>
  <p id="yTD7"></p>
  <p id="93cy"></p>
  <p id="DXys">ки, активируйте лицензию после истечения срока.</p>
  <p id="1DIU">Заходим в корневую папку Steam. У меня это [ C:\Program Files (x86)\Steam ] и ищем там steam.exe</p>
  <p id="b5XZ">аходим в корневую папку Steam. У меня это [ C:\Program Files (x86)\Steam ] и ищем там steam.exe</p>
  <p id="oXXl">Нажимаем &quot;Всегда запускать в песочнице&quot;:</p>
  <figure id="turM" class="m_original">
    <img src="https://img2.teletype.in/files/91/22/91222d50-1178-405f-80fc-5fce2b269bef.png" width="530" />
  </figure>
  <p id="KnNm">Как можем видеть, теперь наш steam запускается в &quot;Avast Sandbox&quot;.</p>
  <figure id="xVNd" class="m_original">
    <img src="https://img3.teletype.in/files/e6/2d/e62df93d-735c-4d7d-81cc-48c243091d16.png" width="745" />
  </figure>

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