<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Веб-разработчик Роман Чернышов</title>
	<atom:link href="http://rche.ru/feed" rel="self" type="application/rss+xml" />
	<link>https://rche.ru/</link>
	<description>Делаю сайты, плагины, интеграции, боты, поддержка, сопровождение</description>
	<lastBuildDate>Mon, 01 Jun 2026 15:22:04 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>
	<item>
		<title>Распознавание QR-кодов</title>
		<link>https://rche.ru/6842_raspoznavanie-qr-kodov.html</link>
					<comments>https://rche.ru/6842_raspoznavanie-qr-kodov.html#respond</comments>
		
		<dc:creator><![CDATA[Роман Чернышов]]></dc:creator>
		<pubDate>Mon, 01 Jun 2026 14:46:40 +0000</pubDate>
				<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[распознать qr]]></category>
		<guid isPermaLink="false">https://rche.ru/?p=6842</guid>

					<description><![CDATA[<p>Сервис распознавания QR-кодов позволяет быстро расшифровать любую информацию с загруженного изображения. Поддерживаются форматы JPEG, PNG, GIF, WEBP и BMP. Сервис автоматически определяет тип данных: ссылки, номера телефонов, email, Wi-Fi настройки и визитные карточки. Просто загрузите изображение с QR-кодом — и вы получите готовое к использованию содержимое. Распознавание происходит мгновенно, файлы не сохраняются на сервере. Распознавание QR-кодов [&#8230;]</p>
<p>Сообщение <a href="https://rche.ru/6842_raspoznavanie-qr-kodov.html">Распознавание QR-кодов</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="alignleft size-full wp-image-5718" src="https://rche.ru/wp-content/uploads/qr_gen.png" alt="Генератор QR" width="200" height="100" /><strong><span class="">Сервис распознавания QR-кодов</span></strong><span class=""> позволяет быстро расшифровать любую информацию с загруженного изображения. Поддерживаются форматы JPEG, PNG, GIF, WEBP и BMP. Сервис автоматически определяет тип данных: ссылки, номера телефонов, email, Wi-Fi настройки и визитные карточки. Просто загрузите изображение с QR-кодом — и вы получите готовое к использованию содержимое. Распознавание происходит мгновенно, файлы не сохраняются на сервере.</span><br />
<span id="more-6842"></span></p>

<form class="calc-form" action="http://rche.ru/wp-content/plugins/rche-tools/services/33.read_qr/ajax.php" method="post" id="33.read_qr" 
	accept-charset="UTF-8" enctype="multipart/form-data" >

        <div class="container-calc">

	    <div class="form-item form-group">
	       <label class="control-label" for="edit-n">Загрузите изображение</label>
	       <div class="form-control form-inline">
	          <div class="form-item form-group w100p">
                    <input type="file" name="file" accept="image/*" required>
	          </div>
	       </div>
	    </div>

	    <input type="hidden" value="1" name="proccess" />
            <button type="submit" value="Рассчитать" class="btn btn-default form-submit ajax-processed" data-autoclick="false">
		Распознать
		<img decoding="async" src="/wp-content/plugins/rche-tools/images/ajax.gif" class="loading-indicator" style="display:none" title="" alt="" />
	    </button>
        </div>

        <div class="container-answer">
            <div class="e_answer">Тут будет отображен результат</div>
        </div>
</form>


<p>Распознавание QR-кодов с изображений в форматах JPEG, PNG, GIF, WEBP, BMP.</p>
<h2>Как использовать</h2>
<ul>
<li>Загрузите изображение</li>
<li>Нажмите на кнопку &#171;Выберите файл&#187;</li>
<li>Выберите изображение с QR-кодом на вашем компьютере</li>
<li>Нажмите кнопку &#171;Распознать QR-код&#187;</li>
<li>Получите результат</li>
<li>Скрипт покажет расшифрованное содержимое</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Сообщение <a href="https://rche.ru/6842_raspoznavanie-qr-kodov.html">Распознавание QR-кодов</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rche.ru/6842_raspoznavanie-qr-kodov.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Подключение АТОЛ-30ф к серверу на Linux</title>
		<link>https://rche.ru/6827_podklyuchenie-atol-30f-k-serveru-na-linux.html</link>
					<comments>https://rche.ru/6827_podklyuchenie-atol-30f-k-serveru-na-linux.html#respond</comments>
		
		<dc:creator><![CDATA[Роман Чернышов]]></dc:creator>
		<pubDate>Sat, 14 Feb 2026 08:21:32 +0000</pubDate>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[Система]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[web request]]></category>
		<category><![CDATA[АТОЛ 30ф]]></category>
		<category><![CDATA[ККТ]]></category>
		<category><![CDATA[тест драйвера]]></category>
		<guid isPermaLink="false">https://rche.ru/?p=6827</guid>

					<description><![CDATA[<p>Небольшая заметка о базовой настройке ККТ АТОЛ 30ф и схожих моделей(поддерживающих Web Request) на ОС Linux (в моем примере это CentOS), установка драйвера 10.0.8.1, с поднятием сервера Web Request и примером кода запроса на PHP. Скачать пакет драйверов можно тут, для Linux подойдет «полный архив», в нем будет директория ./install/ с вариантами пакетов для Debian, [&#8230;]</p>
<p>Сообщение <a href="https://rche.ru/6827_podklyuchenie-atol-30f-k-serveru-na-linux.html">Подключение АТОЛ-30ф к серверу на Linux</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://rche.ru/wp-content/uploads/atol_linux.png" alt="АТОЛ Linux" width="200" height="100" class="alignleft size-full wp-image-6831" /> Небольшая заметка о базовой настройке ККТ АТОЛ 30ф и схожих моделей(поддерживающих Web Request) на ОС Linux (в моем примере это CentOS), установка драйвера 10.0.8.1, с поднятием сервера Web Request и примером кода запроса на PHP. Скачать пакет драйверов можно <a href="https://fs.atol.ru/SitePages/%D0%A6%D0%B5%D0%BD%D1%82%D1%80%20%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8.aspx?raz1=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5+%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&#038;raz2=%D0%94%D0%A2%D0%9E&#038;raz3=10.x" target="_blank">тут</a>, для Linux подойдет «полный архив», в нем будет директория ./install/ с вариантами пакетов для Debian, RedHat, FreeBSD. Такое решение позволяет существенно сократить издержки на аренде онлайн-кассы, его можно интегрировать например с сайтом.<span id="more-6827"></span></p>
<h2>Установка пакетов</h2>
<p>Установка драйвера:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6827code10'); return false;">Просмотр кода</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p682710"><td class="code" id="p6827code10"><pre class="bash" style="font-family:monospace;">yum <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>libfptr10-10.10.8.0-<span style="color: #000000;">1</span>.x86_64_uem.rpm</pre></td></tr></table></div>

<p>Установка Web Request:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6827code11'); return false;">Просмотр кода</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p682711"><td class="code" id="p6827code11"><pre class="bash" style="font-family:monospace;">yum <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>fptr10-web-requests-1.0.4.0-<span style="color: #000000;">1</span>.x86_64.rpm</pre></td></tr></table></div>

<p>Установка EoT (Ethernet Over Transport):<br />
Подробно описано <a href="https://itproblog.ru/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-eou-%D0%BD%D0%B0-linux/" target="_blank">тут</a>.</p>
<p>Дополнительно если нужно можете установить:<br />
libfptr10-gui &#8212; графическая библиотека драйвера ККТ. Предоставляется в вариантах с Qt5 (основной вариант) и Qt4;<br />
fptr10-test-util &#8212; тестовое приложение драйвера ККТ. Предоставляется в вариантах с Qt5 (основной вариант) и Qt4;<br />
fptr10-rpc-server &#8212; сервер удаленного подключения ККТ.</p>
<p>Тест доступа Web Request по http:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6827code12'); return false;">Просмотр кода</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p682712"><td class="code" id="p6827code12"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> 127.0.0.1:<span style="color: #000000;">16732</span></pre></td></tr></table></div>

<p><i>Как задать логин и пароль для доступа указано ниже</i></p>
<h2>Настройка Web Request</h2>
<p>Создание пользователя</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6827code13'); return false;">Просмотр кода</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p682713"><td class="code" id="p6827code13"><pre class="bash" style="font-family:monospace;">atol-fptr-web-requests-users add admin Password</pre></td></tr></table></div>

<p>Где логин &#8212; admin, пароль &#8212; Password.</p>
<p>Список пользователей</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6827code14'); return false;">Просмотр кода</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p682714"><td class="code" id="p6827code14"><pre class="bash" style="font-family:monospace;">atol-fptr-web-requests-users list</pre></td></tr></table></div>

<p>Удалить пользователя</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6827code15'); return false;">Просмотр кода</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p682715"><td class="code" id="p6827code15"><pre class="bash" style="font-family:monospace;">atol-fptr-web-requests-users del admin</pre></td></tr></table></div>

<h2>Для доступа к Web Request с разных IP</h2>
<p>Web Request ограничивает доступ, позволяя отправлять к нему запросы только с одного IP, с возможностью смены его раз в сутки. Поэтому, можно перед Web Request установить проксирующий сервер, это может быть Apache или nGinx, в случае с Windows, на локальном ПК можно использовать XAMMP и Apache входящий в его пакет. Я в своих решения использую Apache, с такой конфигурацией:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6827code16'); return false;">Просмотр кода</a> CONF</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p682716"><td class="code" id="p6827code16"><pre class="conf" style="font-family:monospace;">    &lt;VirtualHost 10.0.0.101:8080 &gt;
    ServerName atol.localhost
&nbsp;
    ProxyPreserveHost On
&nbsp;
    ProxyPass / http://10.0.0.101:16732/ # IP и порт на котором находится Web Request
    ProxyPassReverse / http://10.0.0.101:16732/
&nbsp;
    RequestHeader unset X-Forwarded-For
    RequestHeader unset X-Forwarded-Host
    RequestHeader unset X-Forwarded-Proto
    RequestHeader set X-Forwarded-For &quot;10.0.0.102&quot; # IP который будет видеть Web Request (не зависимо от того какой реальный IP у пользователя)
&nbsp;
    &lt;Proxy *&gt;
        Order deny,allow
        Allow from all
    &lt;/Proxy&gt;
&nbsp;
    ErrorLog &quot;logs/proxy-error.log&quot;
    CustomLog &quot;logs/proxy-access.log&quot; common
&nbsp;
    &lt;/VirtualHost&gt;</pre></td></tr></table></div>

<p>Теперь для всех клиентов, Web Request будет доступен по адресу http://atol.localhost:8080, при этом каким бы ни был IP-адрес клиента, Web Request будет видеть всегда один IP (в примере конфигурации это 10.0.0.102) и ограничивать запросы не будет.</p>
<p>Для доступа к локальному домену, можно также прописать настройку в файле хоста ОС (для Windows это C:\Windows\System32\drivers\etc\hosts), связав домен с неконкретным IP в локальной сети:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6827code17'); return false;">Просмотр кода</a> CONF</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p682717"><td class="code" id="p6827code17"><pre class="conf" style="font-family:monospace;">10.0.0.101 atol.localhost</pre></td></tr></table></div>

<h2>Пример запроса на PHP с помощью CURL</h2>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6827code18'); return false;">Просмотр кода</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p682718"><td class="code" id="p6827code18"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$ch</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/curl_init"><span style="color: #990000;">curl_init</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// URL запроса</span>
<a href="http://www.php.net/curl_setopt"><span style="color: #990000;">curl_setopt</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_URL<span style="color: #339933;">,</span> <span style="color: #0000ff;">'http://atol.localhost:8080'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Возвращать результат в переменную, а не выводить в браузер</span>
<a href="http://www.php.net/curl_setopt"><span style="color: #990000;">curl_setopt</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_RETURNTRANSFER<span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Basic авторизация</span>
<a href="http://www.php.net/curl_setopt"><span style="color: #990000;">curl_setopt</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_USERPWD<span style="color: #339933;">,</span> <span style="color: #0000ff;">'username:password'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># логин и пароль доступа к АТОЛ Web Request
</span>
<span style="color: #666666; font-style: italic;">// Заголовки</span>
<a href="http://www.php.net/curl_setopt"><span style="color: #990000;">curl_setopt</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_HTTPHEADER<span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span>
    <span style="color: #0000ff;">'Content-Type: application/json'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'Accept: application/json'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'User-Agent: MyApp/1.0'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'Host: atol.localhost'</span> <span style="color: #666666; font-style: italic;"># название хоста указанного в Apache
</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Выполняем запрос</span>
<span style="color: #000088;">$response</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/curl_exec"><span style="color: #990000;">curl_exec</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$httpCode</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/curl_getinfo"><span style="color: #990000;">curl_getinfo</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLINFO_HTTP_CODE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Проверяем на ошибки</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/curl_error"><span style="color: #990000;">curl_error</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Ошибка cURL: '</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/curl_error"><span style="color: #990000;">curl_error</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<a href="http://www.php.net/curl_close"><span style="color: #990000;">curl_close</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;HTTP код: &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$httpCode</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Ответ: &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$response</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Если вам нужна помощь в настройке АТОЛ или прочие работы связанные с администрированием серверов работающих на безе ОС Linux, обращаетесь, буду рад вам помочь!</p>
<p>Сообщение <a href="https://rche.ru/6827_podklyuchenie-atol-30f-k-serveru-na-linux.html">Подключение АТОЛ-30ф к серверу на Linux</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rche.ru/6827_podklyuchenie-atol-30f-k-serveru-na-linux.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Запрет пробуждения ПК от различных устройств в Windows 10/11</title>
		<link>https://rche.ru/6820_zapret-probuzhdeniya-pk-ot-razlichnyx-ustrojstv-v-windows-10-11.html</link>
					<comments>https://rche.ru/6820_zapret-probuzhdeniya-pk-ot-razlichnyx-ustrojstv-v-windows-10-11.html#respond</comments>
		
		<dc:creator><![CDATA[Роман Чернышов]]></dc:creator>
		<pubDate>Sat, 31 Jan 2026 09:57:10 +0000</pubDate>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Прочее]]></category>
		<category><![CDATA[windows]]></category>
		<guid isPermaLink="false">https://rche.ru/?p=6820</guid>

					<description><![CDATA[<p>Доброго времени друзья! Небольшой пост-заметка, на тему того — как настроить в Windows 10/11 запрет пробуждения ПК от различных устройств. Заметка актуальна по двум причинам. Первая — это то, что к современным ПК может быть подключено гиганское количество устройств: USB концентраторы, смартфоны, ноутбуки, ККТ, внешняя сетевая карта и прочие (многие из них «по умолчанию» могут [&#8230;]</p>
<p>Сообщение <a href="https://rche.ru/6820_zapret-probuzhdeniya-pk-ot-razlichnyx-ustrojstv-v-windows-10-11.html">Запрет пробуждения ПК от различных устройств в Windows 10/11</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://rche.ru/wp-content/uploads/wakepc.png" alt="" width="200" height="100" class="alignleft size-full wp-image-6824" /> Доброго времени друзья! Небольшой пост-заметка, на тему того — как настроить в Windows 10/11 запрет пробуждения ПК от различных устройств. Заметка актуальна по двум причинам. Первая — это то, что к современным ПК может быть подключено гиганское количество устройств: USB концентраторы, смартфоны, ноутбуки, ККТ, внешняя сетевая карта и прочие (многие из них «по умолчанию» могут пытаться пробудить ПК). И вторая причина — держать эту информацию по настройке, в своей памяти, нет ни какого смысла — один раз настроил и забыл, до следующей переустановки операционной системы. Собственно поэтому и появилась эта заметка.<span id="more-6820"></span></p>
<h2>Шаг 1. Проверка устройств у которых есть разрешение будить ПК</h2>
<p>Открываем командную строку PowerShell с правами Администратора и вводим команду:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6820code21'); return false;">Просмотр кода</a> TXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p682021"><td class="code" id="p6820code21"><pre class="txt" style="font-family:monospace;">powercfg -devicequery wake_armed</pre></td></tr></table></div>

<p>В ответ видим список устройств, примерно такой:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6820code22'); return false;">Просмотр кода</a> TXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p682022"><td class="code" id="p6820code22"><pre class="txt" style="font-family:monospace;">Клавиатура HID (002)
Клавиатура HID (004)
Клавиатура HID (006)
Клавиатура HID (008)
Realtek USB 2.5GbE Family Controller
Клавиатура HID (015)
HID-совместимая мышь (002)
Intel(R) Ethernet Controller (3) I225-V</pre></td></tr></table></div>

<h2>Шаг 2. Отключаем ненужные устройства</h2>
<p><img loading="lazy" decoding="async" src="https://rche.ru/wp-content/uploads/Screenshot_1.png" alt="" width="393" height="473" class="aligncenter size-full wp-image-6821" srcset="https://rche.ru/wp-content/uploads/Screenshot_1.png 393w, https://rche.ru/wp-content/uploads/Screenshot_1-249x300.png 249w" sizes="auto, (max-width: 393px) 100vw, 393px" /></p>
<p>&#8212; Открываем Настройки -> Диспетчер устройств (Win + X);<br />
&#8212; Находим в списке устройство которому хотим запретить осуществлять пробуждение ПК, затем -> Свойства -> Управление электропитанием;<br />
&#8212; Снимаем галочку с &#171;Разрешить этому устройству выводить компьютер из ждущего режима&#187;;</p>
<p>На этом все!</p>
<p>Сообщение <a href="https://rche.ru/6820_zapret-probuzhdeniya-pk-ot-razlichnyx-ustrojstv-v-windows-10-11.html">Запрет пробуждения ПК от различных устройств в Windows 10/11</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rche.ru/6820_zapret-probuzhdeniya-pk-ot-razlichnyx-ustrojstv-v-windows-10-11.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Список всех BIN российский банков в JSON</title>
		<link>https://rche.ru/6357_spisok-vsex-bin-rossijskij-bankov-v-json.html</link>
					<comments>https://rche.ru/6357_spisok-vsex-bin-rossijskij-bankov-v-json.html#respond</comments>
		
		<dc:creator><![CDATA[Роман Чернышов]]></dc:creator>
		<pubDate>Thu, 10 Jul 2025 09:57:13 +0000</pubDate>
				<category><![CDATA[Бизнес]]></category>
		<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[BIN]]></category>
		<category><![CDATA[bin банков]]></category>
		<category><![CDATA[Банки]]></category>
		<category><![CDATA[Программирование]]></category>
		<guid isPermaLink="false">https://rche.ru/?p=6357</guid>

					<description><![CDATA[<p>📢 Друзья всем привет! У меня отличные новости для всех, кто работает с банковскими данными! Я собрал полный массив BIN-кодов (6 цифр) российских банков и оформил его в удобный JSON-формат! 💾 Теперь вы можете легко использовать эти данные для своих проектов. В файле — все актуальные BIN-коды с названиями банков, например: {&#171;427401&#187;: &#171;SBERBANK OF RUSSIA&#187;, [&#8230;]</p>
<p>Сообщение <a href="https://rche.ru/6357_spisok-vsex-bin-rossijskij-bankov-v-json.html">Список всех BIN российский банков в JSON</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://rche.ru/wp-content/uploads/banks_bin.png" alt="" width="200" height="100" class="alignleft size-full wp-image-6358" /> <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4e2.png" alt="📢" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Друзья всем привет! У меня отличные новости для всех, кто работает с банковскими данными! Я собрал полный массив BIN-кодов (6 цифр) российских банков и оформил его в удобный JSON-формат! <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4be.png" alt="💾" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Теперь вы можете легко использовать эти данные для своих проектов. В файле — все актуальные BIN-коды с названиями банков, например: {&#171;427401&#187;: &#171;SBERBANK OF RUSSIA&#187;, &#171;419805&#187;: &#171;OJSC BANK URALSIB&#187;}. <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4ca.png" alt="📊" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <span id="more-6357"></span></p>
<p>Скачать массив можно <a href="/upload2.php?f=russia-bins.json">по ссылке</a> (Всего бинов 4584). Данные собраны этично и в соответствии с правилами сайтов где они размещались. Если нужны доработки или другие форматы — пишите в комментариях! <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Буду рад вашим отзывам и идеям, как использовать эти данные. Делитесь постом, если полезно! <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f60e.png" alt="😎" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Сообщение <a href="https://rche.ru/6357_spisok-vsex-bin-rossijskij-bankov-v-json.html">Список всех BIN российский банков в JSON</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rche.ru/6357_spisok-vsex-bin-rossijskij-bankov-v-json.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Плагин для WordPress, поддержка заголовка If-Modified-Since</title>
		<link>https://rche.ru/6310_plagin-dlya-wordpress-podderzhka-zagolovka-if-modified-since.html</link>
					<comments>https://rche.ru/6310_plagin-dlya-wordpress-podderzhka-zagolovka-if-modified-since.html#respond</comments>
		
		<dc:creator><![CDATA[Роман Чернышов]]></dc:creator>
		<pubDate>Thu, 22 May 2025 10:47:24 +0000</pubDate>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[заголовки]]></category>
		<category><![CDATA[плагин]]></category>
		<guid isPermaLink="false">https://rche.ru/?p=6310</guid>

					<description><![CDATA[<p>If-Modified-Since — это заголовок передаваемый в HTTP запросе, который отправляется сторонней службой(например поисковой системой) к вашему сайту, в заголовке содержится дата, которую должен проверить сайт, и в случае если после этой даты страницы была изменена, отдать в ответ новую версию страницы, или же ответить только заголовком сообщающим, что изменений не было. Таким образом сторонней службе [&#8230;]</p>
<p>Сообщение <a href="https://rche.ru/6310_plagin-dlya-wordpress-podderzhka-zagolovka-if-modified-since.html">Плагин для WordPress, поддержка заголовка If-Modified-Since</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://rche.ru/wp-content/uploads/lastm.png" alt="" width="200" height="100" class="alignleft size-full wp-image-6312" /> If-Modified-Since — это заголовок передаваемый в HTTP запросе, который отправляется сторонней службой(например поисковой системой) к вашему сайту, в заголовке содержится дата, которую должен проверить сайт, и в случае если после этой даты страницы была изменена, отдать в ответ новую версию страницы, или же ответить только заголовком сообщающим, что изменений не было. Таким образом сторонней службе не нужно заново загружать страницу и проверять, есть ли на ней изменения, что экономит время, ресурсы и трафик.<span id="more-6310"></span></p>
<h2>Установка</h2>
<p>1. <a href="/upload2.php?f=rche-ifmodifeied.zip">Скачать плагин</a> (.zip)<br />
2. Распаковать архив<br />
3. Загрузить в директорию вашего сайта ./wp-content/plugins/<br />
4. Активировать плагин RCHE If-Modified-Since Support в админпанели WordPress -&gt; Плагины</p>
<h2>Правильная работа с Last-Modified и If-Modified-Since – секрет быстрой загрузки сайта</h2>
<p class="ds-markdown-paragraph">Если вы серьезно занимаетесь продвижением сайтов, то наверняка сталкивались с необходимостью проверки заголовков ответа сервера. Один из ключевых моментов – корректная работа с <strong>Last-Modified</strong> и <strong>If-Modified-Since</strong>. Эти заголовки не только ускоряют загрузку страниц, но и помогают поисковым системам эффективнее индексировать ваш контент.</p>
<h2>Last-Modified – метка последних изменений</h2>
<p><strong>Last-Modified</strong> – это HTTP-заголовок, который сервер отправляет браузеру вместе с контентом. Он указывает дату и время последнего изменения страницы. Например:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6310code25'); return false;">Просмотр кода</a> TXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p631025"><td class="code" id="p6310code25"><pre class="txt" style="font-family:monospace;">Last-Modified: Wed, 21 Oct 2023 07:28:00 GMT</pre></td></tr></table></div>

<p>Этот заголовок помогает:</p>
<ul>
<li>Браузерам понимать, нужно ли загружать страницу заново;</li>
<li>Поисковым роботам оценивать актуальность контента;</li>
<li>Администраторам отслеживать частоту обновлений;</li>
</ul>
<h2>If-Modified-Since – умный запрос от браузера</h2>
<p>Когда страница уже есть в кеше браузера, при повторном посещении он отправляет запрос с заголовком <strong>If-Modified-Since</strong>, например:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6310code26'); return false;">Просмотр кода</a> TXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p631026"><td class="code" id="p6310code26"><pre class="txt" style="font-family:monospace;">If-Modified-Since: Wed, 21 Oct 2023 07:28:00 GMT</pre></td></tr></table></div>

<p><strong>Что происходит дальше?</strong><br />
<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Если контент не менялся</strong> → сервер отвечает <strong>304 Not Modified</strong>, и браузер показывает страницу из кеша (экономия трафика и времени).<br />
<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Если контент обновлялся</strong> → сервер присылает новую версию с кодом <strong>200 OK</strong>.</p>
<h2>Почему это важно для SEO?</h2>
<ol start="1">
<li>
<p><strong>Экономия ресурсов поисковых роботов</strong><br />
– Если страница не менялась, робот получит <strong>304</strong> и перейдет к следующей, ускоряя индексацию.</p>
</li>
<li>
<p><strong>Улучшение скорости загрузки</strong><br />
– Браузеры реже загружают одни и те же данные, что улучшает пользовательский опыт.</p>
</li>
<li>
<p><strong>Снижение нагрузки на сервер</strong><br />
– Меньше запросов с полной загрузкой страницы = меньше потребление CPU и трафика.</p>
</li>
</ol>
<h2>Вывод</h2>
<p>Правильная настройка <strong>Last-Modified</strong> и <strong>If-Modified-Since</strong> – не просто техническая деталь, а важный элемент оптимизации. Если ваш сайт корректно работает с этими заголовками, вы получаете:<br />
<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Быструю загрузку для пользователей<br />
<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Эффективное взаимодействие с поисковыми системами<br />
<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Снижение нагрузки на хостинг</p>
<p class="ds-markdown-paragraph">Проверьте, как ваш сервер обрабатывает эти заголовки, и при необходимости настройте их через <strong>.htaccess</strong> или специальные плагины WordPress. Это небольшое изменение может дать заметный прирост производительности! <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Сообщение <a href="https://rche.ru/6310_plagin-dlya-wordpress-podderzhka-zagolovka-if-modified-since.html">Плагин для WordPress, поддержка заголовка If-Modified-Since</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rche.ru/6310_plagin-dlya-wordpress-podderzhka-zagolovka-if-modified-since.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Настройка NAT на OPNsense</title>
		<link>https://rche.ru/6301_nastrojka-nat-na-opnsense.html</link>
					<comments>https://rche.ru/6301_nastrojka-nat-na-opnsense.html#respond</comments>
		
		<dc:creator><![CDATA[Роман Чернышов]]></dc:creator>
		<pubDate>Wed, 30 Apr 2025 20:37:07 +0000</pubDate>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[opnsense]]></category>
		<category><![CDATA[outbound]]></category>
		<guid isPermaLink="false">https://rche.ru/?p=6301</guid>

					<description><![CDATA[<p>Казалось бы, что может быть проще настройки NAT для проброса портов из одной подсети в другую? Создаем правило, указываем интерфейс, порт для получения пакетов и IP:порт для перенаправления пакетов, и вроде бы всё. Но, не тут то было, как-то раз я промучился с пробросом портов аж целую неделю, а все потому, что система с которой [&#8230;]</p>
<p>Сообщение <a href="https://rche.ru/6301_nastrojka-nat-na-opnsense.html">Настройка NAT на OPNsense</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://rche.ru/wp-content/uploads/opnsense.png" alt="opnsense" width="200" height="100" class="alignleft size-full wp-image-6302" /> Казалось бы, что может быть проще настройки NAT для проброса портов из одной подсети в другую? Создаем правило, указываем интерфейс, порт для получения пакетов и IP:порт для перенаправления пакетов, и вроде бы всё. Но, не тут то было, как-то раз я промучился с пробросом портов аж целую неделю, а все потому, что система с которой мне предстояло поработать слишком изобилует функционалам и это OPNSense (может быть актуально и для pfSense). Далее расскажу, все же, как правильно настраивается проброс портов. Моя очередная заметка&#8230;<span id="more-6301"></span></p>
<p>OPNSense — Операционная система на базе FreeBSD для организации маршрутизатора на безе ПК или сервера, с множеством функций, брандмауэром, плагинами для анализа трафика и многим другим (чем и подкупает). Шикарное решение если ваша подсеть чуть более чем пара-тройка ПК или уж тем более, если вы размещаете в своей посети сервера с публичным доступом (бизнес, хостинг, базы дынных, 1С и т.д.).</p>
<h2>Настройка NAT</h2>
<p>Задача — Пробросить порт 80 из сети WAN с IP 10.0.0.100 (для примера) на сервер в подсети LAN с IP 192.168.0.200.</p>
<p>На этом этапе вроде бы нет ни чего, неочевидного, идем в админпанель OPNsense -&gt; Firewall -&gt; NAT -&gt; Port Forward, далее жмем Add (плюс), и добавляем новое правило со следующими параметрами:</p>
<p><strong>Interface: WAN</strong><br />
TCP/IP Version: IPv4<br />
Protocol: TCP<br />
Destination: WAN address<br />
Destination port range (from / to): HTTP<br />
Redirect target IP: Single host or Network, IP: 192.168.0.200<br />
Redirect target port: HTTP<br />
Description: WAN HTTP to LAN:80<br />
Filter rule association: Add associated filter rule</p>
<h2>NAT Outbound</h2>
<p>Настройка NAT Outbound необходима для так называемого маскардинга (Masquerading), подмены IP адреса клиента на IP адреса маршридизатора, от имени которого далее пойдут пакеты в сеть LAN. Это касается и обратного направления, когда пакеты движутся из LAN в сеть WAN, также необходимо настроить правило для маскардинга. Для этого идем в раздел OPNsense -&gt; Firewall -&gt; NAT -&gt; Outbound и также жмем Add (плюс), затем добавляем новое правило, <strong>маскарадинг для пакетов из WAN в LAN</strong>, со следующими параметрами:</p>
<p><strong>Interface: WAN</strong><br />
TCP/IP Version: IPv4<br />
Protocol: TCP<br />
Source address: LAN net<br />
Source port: any<br />
Destination address: WAN net<br />
Destination port: any<br />
Translation / target: Interface address<br />
Description: NAT for LAN to WAN</p>
<p><strong>Маскарадинг для пакетов из LAN в WAN:</strong></p>
<p><strong>Interface: LAN</strong><br />
TCP/IP Version: IPv4<br />
Protocol: TCP<br />
Source address: WAN net<br />
Source port: any<br />
Destination address: <strong>any</strong><br />
Destination port: any<br />
Translation / target: Interface address<br />
Description: NAT for WAN to LAN</p>
<p>Кто-то скажет: — «Ну это же элементарно», увы порой, чтобы решить казалось бы достаточно простую задачу, приходиться перепробовать гигантское количество конфигураций, прочитать десятки разделов документации, и в результате прейти к решению.</p>
<h2>Полезные утилиты</h2>
<p>В ходе настройки OPNSense, мне были полезны следующие утилиты:</p>
<p>Просмотр списка правил файрвола pfctl:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6301code33'); return false;">Просмотр кода</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p630133"><td class="code" id="p6301code33"><pre class="bash" style="font-family:monospace;">pfctl <span style="color: #660033;">-s</span> rules</pre></td></tr></table></div>

<p>Просмотр списка правил NAT файрвола pfctl:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6301code34'); return false;">Просмотр кода</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p630134"><td class="code" id="p6301code34"><pre class="bash" style="font-family:monospace;">pfctl <span style="color: #660033;">-s</span> nat</pre></td></tr></table></div>

<p>Просмотр состояние TCP-соединений:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6301code35'); return false;">Просмотр кода</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p630135"><td class="code" id="p6301code35"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">netstat</span> <span style="color: #660033;">-rn</span></pre></td></tr></table></div>

<p>Информация по IP и MAC интерфейса:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6301code36'); return false;">Просмотр кода</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p630136"><td class="code" id="p6301code36"><pre class="bash" style="font-family:monospace;">arp <span style="color: #660033;">-a</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> 10.0.0.100</pre></td></tr></table></div>

<p>Запрос с использованием CURL, для проверки доступности сервера за NAT по протоколу HTTPS:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6301code37'); return false;">Просмотр кода</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p630137"><td class="code" id="p6301code37"><pre class="bash" style="font-family:monospace;">curl <span style="color: #660033;">-v</span> <span style="color: #660033;">-H</span> <span style="color: #ff0000;">&quot;Host: example.ru&quot;</span> https:<span style="color: #000000; font-weight: bold;">//</span>192.168.0.200 <span style="color: #660033;">--insecure</span></pre></td></tr></table></div>

<p>Шикарная утилита, просмотр приходящих пакетов на интерфейс и определенный порт</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6301code38'); return false;">Просмотр кода</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p630138"><td class="code" id="p6301code38"><pre class="bash" style="font-family:monospace;">tcpdump <span style="color: #660033;">-i</span> igb1 host 192.168.0.200 and port <span style="color: #000000;">80</span></pre></td></tr></table></div>

<p>Сообщение <a href="https://rche.ru/6301_nastrojka-nat-na-opnsense.html">Настройка NAT на OPNsense</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rche.ru/6301_nastrojka-nat-na-opnsense.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Модуль для DLE парсинга RSS ленты с изображениями</title>
		<link>https://rche.ru/6291_modul-dlya-dle-parsing-rss-lenty-s-izobrazheniyami.html</link>
					<comments>https://rche.ru/6291_modul-dlya-dle-parsing-rss-lenty-s-izobrazheniyami.html#respond</comments>
		
		<dc:creator><![CDATA[Роман Чернышов]]></dc:creator>
		<pubDate>Mon, 14 Apr 2025 09:51:05 +0000</pubDate>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[dle]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[модуль]]></category>
		<guid isPermaLink="false">https://rche.ru/?p=6291</guid>

					<description><![CDATA[<p>Доброго времени друзья! Для CMS DataLife Engine (DLE) существует множество модулей и плагинов позволяющий импортировать на сайт новости из ленты RSS, но у большинства из них отсутствует функция скачивания и сохранения изображений на сайт, которые встречаются в тексте новостей, а те модули, у которых данная функция имеется, почему-то работают нестабильно. Поэтому я решил написать свой [&#8230;]</p>
<p>Сообщение <a href="https://rche.ru/6291_modul-dlya-dle-parsing-rss-lenty-s-izobrazheniyami.html">Модуль для DLE парсинга RSS ленты с изображениями</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="alignleft size-full wp-image-6293" src="https://rche.ru/wp-content/uploads/dle_rss.png" alt="" width="200" height="100" />Доброго времени друзья! Для CMS DataLife Engine (DLE) существует множество модулей и плагинов позволяющий импортировать на сайт новости из ленты RSS, но у большинства из них отсутствует функция скачивания и сохранения изображений на сайт, которые встречаются в тексте новостей, а те модули, у которых данная функция имеется, почему-то работают нестабильно. Поэтому я решил написать свой модуль, с данным функционалом, где основная его фишка будет в его простоте! Подробности далее.<span id="more-6291"></span></p>
<h2>Функционал</h2>
<p>Для DLE версии 13 и выше.</p>
<ul>
<li>Простая установка и начало работы;</li>
<li>Работа с несколькими RSS каналами одновременно;</li>
<li>Добавление, редактирование и удаление каналов;</li>
<li>Речной режим;</li>
<li>Автоматический режим с запуском по расписанию;</li>
<li>Скачивание изображений и сохранение их на сайт, с изменением URL в коде текста;</li>
<li>Сохранение в указанную категорию на сайте;</li>
<li>Автоматическая сортировка записей от старого к новому;</li>
<li>Вывод отчета о работе.</li>
</ul>
<blockquote><p>При использовании данного модуля вы также можете рассчитывать на поддержку и помощь в установке!</p>
<p>Возможна доработка функционала.</p></blockquote>
<h2>Скриншоты</h2>
<p><a href="https://rche.ru/wp-content/uploads/Screenshot_370.jpg"><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-6292" src="https://rche.ru/wp-content/uploads/Screenshot_370-1024x580.jpg" alt="" width="1024" height="580" srcset="https://rche.ru/wp-content/uploads/Screenshot_370-1024x580.jpg 1024w, https://rche.ru/wp-content/uploads/Screenshot_370-300x170.jpg 300w, https://rche.ru/wp-content/uploads/Screenshot_370-768x435.jpg 768w, https://rche.ru/wp-content/uploads/Screenshot_370.jpg 1256w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<h2>Ручной режим</h2>
<p>Для запуска парсинга в ручном режиме, просто нажмите кнопку &#171;Ручной запуск парсера&#187;, после чего будет запущен процесс сбора контента с RSS лент, также вам будет выведен отчет о работе парсинга.</p>
<h2>Автоматический режим</h2>
<p>Для автоматического режима работы требуется настройка планировщика CRON, с указанием URL адреса парсера. Примеры настройки:</p>
<p><b>Вызов раз в минуту:</b> (рекомендуется)</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6291code41'); return false;">Просмотр кода</a> CRON</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p629141"><td class="code" id="p6291code41"><pre class="cron" style="font-family:monospace;">* * * * * /usr/bin/wget -O -q https://pro-voinu.info/engine/cron/rss_import.php</pre></td></tr></table></div>

<p><b>Вызов раз в час:</b></p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6291code42'); return false;">Просмотр кода</a> CRON</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p629142"><td class="code" id="p6291code42"><pre class="cron" style="font-family:monospace;">0 * * * * /usr/bin/wget -O -q https://pro-voinu.info/engine/cron/rss_import.php</pre></td></tr></table></div>

<h2>Установка</h2>
<p>Процесс установки модуля достаточно прост:</p>
<ol>
<li>Скачиваете архив .zip и распаковываете его;</li>
<li>Заливаете содержимое архива в корневую директорию сайта;</li>
<li>Импортируете в базу данных файл install.sql (или копируете его содержимое и выполняете запрос в PHPMyAdmin);</li>
</ol>
<h2>Скачать</h2>
<p>Для получения данного vодуля обращайтесь через форму <a href="/about">обратно связи</a> или посетите страницу контакты.</p>
<p>Сообщение <a href="https://rche.ru/6291_modul-dlya-dle-parsing-rss-lenty-s-izobrazheniyami.html">Модуль для DLE парсинга RSS ленты с изображениями</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rche.ru/6291_modul-dlya-dle-parsing-rss-lenty-s-izobrazheniyami.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Проверка CORS онлайн</title>
		<link>https://rche.ru/6284_proverka-cors-onlajn.html</link>
					<comments>https://rche.ru/6284_proverka-cors-onlajn.html#respond</comments>
		
		<dc:creator><![CDATA[Роман Чернышов]]></dc:creator>
		<pubDate>Fri, 04 Apr 2025 11:37:41 +0000</pubDate>
				<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[cors]]></category>
		<category><![CDATA[проверка]]></category>
		<guid isPermaLink="false">https://rche.ru/?p=6284</guid>

					<description><![CDATA[<p>Работа веб-мастера не представляется без реализации кроссдоменных запросов, например по средствам Ajax/Fetch, при работе с API сторонних сервисов, запросе изображений или JavaScript. В виду, чего постоянно приходится иметь дело с механизмом обеспечивающим безопасность таких запросов по средствам политики CORS (Cross-Origin Resource Sharing, в переводе — совместное использование ресурсов между разными источниками). Для проверки доступности ресурсов [&#8230;]</p>
<p>Сообщение <a href="https://rche.ru/6284_proverka-cors-onlajn.html">Проверка CORS онлайн</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://rche.ru/wp-content/uploads/cors.png" alt="" width="200" height="100" class="alignleft size-full wp-image-6285" /> Работа веб-мастера не представляется без реализации кроссдоменных запросов, например по средствам Ajax/Fetch, при работе с API сторонних сервисов, запросе изображений или JavaScript. В виду, чего постоянно приходится иметь дело с механизмом обеспечивающим безопасность таких запросов по средствам политики CORS (Cross-Origin Resource Sharing, в переводе — совместное использование ресурсов между разными источниками). Для проверки доступности ресурсов я подготовил очередной инструмент, который позволяет указав целевой URL, Origin и тип запроса (GET, POST, PUT, PATCH, HEAD или OPTION) осуществить проверку.<span id="more-6284"></span></p>

<form class="calc-form" action="http://rche.ru/wp-content/plugins/rche-tools/services/66.check_cors/ajax.php" method="post" id="66.check_cors" accept-charset="UTF-8">
        <div class="container-calc">

	    <div class="form-item form-group">
	       <label class="control-label" for="url">URL для проверки:</label>
	       <div class="form-control form-inline">
	          <div class="form-item form-group w100p">
			<input class="form-control form-select" type="text" id="url" name="url" placeholder="https://example.com" required>
	          </div>
	       </div>
	    </div>

	    <div class="form-item form-group">
	       <label class="control-label" for="origin">Origin:</label>
	       <div class="form-control form-inline">
	          <div class="form-item form-group w100p">
			<input class="form-control form-select" type="text" id="origin" name="origin" placeholder="http://your-site.com" required>
	          </div>
	       </div>
	    </div>

	    <div class="form-item form-group">
	       <label class="control-label" for="method">HTTP Метод:</label>
	       <div class="form-control form-inline">
	          <div class="form-item form-group w100p">
		    <select class="form-control form-select" id="method" name="method">
		<option value="GET">GET</option>
            <option value="POST">POST</option>
            <option value="PUT">PUT</option>
            <option value="PATCH">PATCH</option>
            <option value="HEAD">HEAD</option>
            <option value="OPTIONS">OPTIONS</option>
		    </select>
	          </div>
	       </div>
	    </div>

	    <input type="hidden" value="1" name="proccess" />
            <button type="submit" value="Рассчитать" class="btn btn-default form-submit ajax-processed">
		Проверить
		<img decoding="async" src="/wp-content/plugins/rche-tools/images/ajax.gif" class="loading-indicator" style="display:none" title="" alt="" />
	    </button>
        </div>

        <div class="container-answer">
            <div class="e_answer">Тут будет отображен результат</div>
        </div>
</form>

<h2>Зачем нужен CORS?</h2>
<p>1. Безопасность. Защищает пользователей от несанкционированного доступа к данным на других доменах.<br />
2. Гибкость. Позволяет разработчикам API открывать доступ к своим ресурсам для доверенных источников(внешних запросов).</p>
<h2>Проблемы с CORS</h2>
<p>Если сервер не настроен на отправку нужных заголовков, вы увидите ошибку вроде:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6284code44'); return false;">Просмотр кода</a> TEXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p628444"><td class="code" id="p6284code44"><pre class="text" style="font-family:monospace;">Access to ... has been blocked by CORS policy.</pre></td></tr></table></div>

<p>Решение: Настроить сервер (например, добавить заголовки через .htaccess, Nginx или в код приложения, например на PHP) или использовать прокси (что тоже вариант).</p>
<p>Сообщение <a href="https://rche.ru/6284_proverka-cors-onlajn.html">Проверка CORS онлайн</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rche.ru/6284_proverka-cors-onlajn.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Декодер JWT онлайн</title>
		<link>https://rche.ru/6277_dekoder-jwt-onlajn.html</link>
					<comments>https://rche.ru/6277_dekoder-jwt-onlajn.html#respond</comments>
		
		<dc:creator><![CDATA[Роман Чернышов]]></dc:creator>
		<pubDate>Thu, 03 Apr 2025 19:40:24 +0000</pubDate>
				<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[jwt]]></category>
		<category><![CDATA[декодер]]></category>
		<guid isPermaLink="false">https://rche.ru/?p=6277</guid>

					<description><![CDATA[<p>Доброго времени друзья! Работая с REST API, любой веб-разработчик и не только наверняка, часто сталкивается с токеном авторизации в формате JWT, или JSON Web Token, — это открытый стандарт (RFC 7519) для создания токенов доступа, которые используются для передачи информации между сторонами в виде JSON-объекта. Эти токены широко применяются в веб-разработке для аутентификации и авторизации [&#8230;]</p>
<p>Сообщение <a href="https://rche.ru/6277_dekoder-jwt-onlajn.html">Декодер JWT онлайн</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://rche.ru/wp-content/uploads/jwt_decoder.png" alt="jwt decoder" width="200" height="100" class="alignleft size-full wp-image-6281" /> Доброго времени друзья! Работая с REST API, любой веб-разработчик и не только наверняка, часто сталкивается с токеном авторизации в формате JWT, или JSON Web Token, — это открытый стандарт (RFC 7519) для создания токенов доступа, которые используются для передачи информации между сторонами в виде JSON-объекта. Эти токены широко применяются в веб-разработке для аутентификации и авторизации пользователей. Раз данный токен содержит данные, значит их можно прочитать, для этого токен нужно декодировать, для чего и будет полезен данный декодер JWT.<span id="more-6277"></span></p>

<form class="calc-form" action="http://rche.ru/wp-content/plugins/rche-tools/services/63.decoder_jwt/ajax.php" method="post" id="63.decoder_jwt" accept-charset="UTF-8">
        <div class="container-calc">

	    <div class="form-item form-group">
	       <label class="control-label" for="edit-n">Введите данные JWT для декодинга</label>
	    </div>
	    <div class="form-item form-group">
	       <div class="form-control form-inline" style="width: 100%;">
	          <div class="form-item form-group" style="width: 100%;">
		    <textarea class="form-control" style="width: 100%; min-height: 150px;"
			name="text" placeholder="Введите данные"></textarea>
	          </div>
	       </div>
	    </div>

	    <input type="hidden" value="1" name="proccess" />
            <button type="submit" value="Рассчитать" class="btn btn-default form-submit ajax-processed">
		Декодировать
		<img decoding="async" src="/wp-content/plugins/rche-tools/images/ajax.gif" class="loading-indicator" style="display:none" title="" alt="" />
	    </button>
        </div>

        <div class="container-answer">
            <div class="e_answer">Тут будет отображен результат</div>
        </div>
</form>

<h2>Структура JWT</h2>
<p>JWT состоит из трёх основных частей, разделённых точками (.):</p>
<p><strong>Header (Заголовок)</strong>: Содержит метаданные о токене, такие как тип токена (обычно &#171;JWT&#187;) и алгоритм шифрования (например, HMAC SHA256 или RSA).<br />
<strong>Payload (Полезная нагрузка)</strong>: Содержит данные, которые передаются (например, идентификатор пользователя, роли, время истечения срока действия). Это так называемые &#171;claims&#187; (утверждения).<br />
<strong>Signature (Подпись)</strong>: Используется для проверки целостности токена. Подпись создаётся путём шифрования заголовка и полезной нагрузки с использованием секретного ключа.</p>
<h2>Пример JWT</h2>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6277code46'); return false;">Просмотр кода</a> TEXT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p627746"><td class="code" id="p6277code46"><pre class="text" style="font-family:monospace;">eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c</pre></td></tr></table></div>

<p>Сообщение <a href="https://rche.ru/6277_dekoder-jwt-onlajn.html">Декодер JWT онлайн</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rche.ru/6277_dekoder-jwt-onlajn.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Конвертер RGB в HEX (и обратно) онлайн</title>
		<link>https://rche.ru/6273_konvertor-rgb-v-hex-i-obratno-onlajn.html</link>
					<comments>https://rche.ru/6273_konvertor-rgb-v-hex-i-obratno-onlajn.html#respond</comments>
		
		<dc:creator><![CDATA[Роман Чернышов]]></dc:creator>
		<pubDate>Wed, 02 Apr 2025 13:26:58 +0000</pubDate>
				<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[HEX в RGB]]></category>
		<category><![CDATA[RGB в HEX]]></category>
		<category><![CDATA[конвертор]]></category>
		<guid isPermaLink="false">https://rche.ru/?p=6273</guid>

					<description><![CDATA[<p>Приветствую друзья! Представляю вашему вниманию конвертер RGB в HEX (и обратно) онлайн. HEX и RGB — это способы задания цветов в цифровом виде. RGB (Red, Green, Blue) использует три числа от 0 до 255 для красного, зелёного и синего (например, RGB(255, 0, 0) — красный), применяясь в устройствах и графике. HEX — это шестнадцатеричный код [&#8230;]</p>
<p>Сообщение <a href="https://rche.ru/6273_konvertor-rgb-v-hex-i-obratno-onlajn.html">Конвертер RGB в HEX (и обратно) онлайн</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="alignleft size-full wp-image-6275" src="https://rche.ru/wp-content/uploads/hex_rgb.png" alt="hex rgb конвертер" width="200" height="100" />Приветствую друзья! Представляю вашему вниманию конвертер RGB в HEX (и обратно) онлайн. HEX и RGB — это способы задания цветов в цифровом виде. RGB (Red, Green, Blue) использует три числа от 0 до 255 для красного, зелёного и синего (например, RGB(255, 0, 0) — красный), применяясь в устройствах и графике. HEX — это шестнадцатеричный код (#RRGGBB), где те же значения записаны от 00 до FF (например, #FF0000 — тот же красный), популярный в веб-разработке. Они взаимозаменяемы: RGB — десятичная система, HEX — компактная шестнадцатеричная, но оба описывают один и тот же цвет.<span id="more-6273"></span><br />

<form class="calc-form" action="http://rche.ru/wp-content/plugins/rche-tools/services/53.rgb_hex_converter/ajax.php" method="post" id="53.rgb_hex_converter" accept-charset="UTF-8">
        <div class="container-calc">

	    <div class="form-item form-group">
	       <label class="control-label" for="edit-n">Направление конвертации</label>
	       <div class="form-control form-inline">
	          <div class="form-item form-group w100p">
		    <select class="form-control form-select" name="direction" id="direction">
			<option value="rgb2hex">RGB → HEX</option>
	                <option value="hex2rgb">HEX → RGB</option>
		    </select>
	          </div>
	       </div>
	    </div>

	    <div id="rgb-inputs" class="input-group form-item form-group">
	       <label class="control-label" for="edit-n">RGB:</label>
	       <div class="form-control form-inline">
	          <div class="form-item form-group w100p">
		    	R: <input type="number" name="r" min="0" max="255" class="rgb-input">
                	G: <input type="number" name="g" min="0" max="255" class="rgb-input">
                	B: <input type="number" name="b" min="0" max="255" class="rgb-input">
			<input type="color" id="colorPickerRGB" style="margin-left: 10px;">
	          </div>
	       </div>
	    </div>

	    <div id="hex-input" class="input-group form-item form-group" style="display: none;">
	       <label class="control-label" for="edit-n">HEX:</label>
	       <div class="form-control form-inline">
	          <div class="form-item form-group w100p">
			<input type="text" name="hex" maxlength="7" placeholder="#RRGGBB">
	                <input type="color" id="colorPickerHEX">
	          </div>
	       </div>
	    </div>

	    <input type="hidden" value="1" name="proccess" />
            <button type="submit" value="Рассчитать" class="btn btn-default form-submit ajax-processed">
		Конвертировать
		<img decoding="async" src="/wp-content/plugins/rche-tools/images/ajax.gif" class="loading-indicator" style="display:none" title="" alt="" />
	    </button>
        </div>

        <div class="container-answer">
            <div class="e_answer">Тут будет отображен результат</div>
        </div>
</form>

<style>
        .input-group {
            margin: 15px 0;
        }
        .container-calc .input-group input[type="number"], .container-calc .input-group input[type="color"] {
		width: 40px !important;
	}
	.container-calc .input-group .w100p input[type="text"] {
		width: 100px !important;
		min-width: auto;
	}
@media all  and (max-width: 640px) {
	.container-calc>#rgb-inputs.form-item>label, .container-calc>#hex-input.form-item>label {
	    width: 25% !important;
	}
	#rgb-inputs .form-inline, #hex-input.form-inline {
	    width: 75% !important;
	}
}
</style>
<script>
document.addEventListener("DOMContentLoaded", function(e) { 
        // Переключение полей ввода
        jQuery('#direction').change(function() {
            if (jQuery(this).val() == 'rgb2hex') {
                jQuery('#rgb-inputs').show();
                jQuery('#hex-input').hide();
            } else {
                jQuery('#rgb-inputs').hide();
                jQuery('#hex-input').show();
            }
        });

        // Синхронизация Color Picker с RGB
        jQuery('#colorPickerRGB').change(function() {
            let hex = jQuery(this).val();
            let r = parseInt(hex.substr(1,2), 16);
            let g = parseInt(hex.substr(3,2), 16);
            let b = parseInt(hex.substr(5,2), 16);
            jQuery('.rgb-input').eq(0).val(r);
            jQuery('.rgb-input').eq(1).val(g);
            jQuery('.rgb-input').eq(2).val(b);
        });

        // Синхронизация RGB с Color Picker
        jQuery('.rgb-input').change(function() {
            let r = parseInt(jQuery('.rgb-input').eq(0).val()) || 0;
            let g = parseInt(jQuery('.rgb-input').eq(1).val()) || 0;
            let b = parseInt(jQuery('.rgb-input').eq(2).val()) || 0;
            r = Math.max(0, Math.min(255, r));
            g = Math.max(0, Math.min(255, g));
            b = Math.max(0, Math.min(255, b));
            let hex = '#' + r.toString(16).padStart(2, '0') + 
                           g.toString(16).padStart(2, '0') + 
                           b.toString(16).padStart(2, '0');
            jQuery('#colorPickerRGB').val(hex);
        });

        // Синхронизация Color Picker с HEX
        jQuery('#colorPickerHEX').change(function() {
            jQuery('input[name="hex"]').val(jQuery(this).val());
        });

        // Синхронизация HEX с Color Picker
        jQuery('input[name="hex"]').change(function() {
            let hex = jQuery(this).val();
            if (/^#[0-9A-Fa-f]{6}jQuery/.test(hex)) {
                jQuery('#colorPickerHEX').val(hex);
            }
        });
});
</script></p>
<h2>Конвертер предоставляет следующие возможности</h2>
<ul>
<li>Выбор направления конвертации через выпадающий список;</li>
<li>Динамическое переключение между полями ввода RGB (3 поля) и HEX (1 поле);</li>
<li>Встроенный Color Picker для обоих вариантов;</li>
<li>Синхронизация значений между полями ввода и Color Picker;</li>
<li>Валидация входных данных:<br />
Для RGB: ограничение значений 0-255;<br />
Для HEX: проверка формата (#RRGGBB или RGB).</li>
<li>Поддержка короткого формата HEX (#RGB).</li>
</ul>
<h2>Как это работает</h2>
<ul>
<li>При выборе &#171;RGB → HEX&#187; показываются три поля для R, G, B и соответствующий Color Picker;</li>
<li>При выборе &#171;HEX → RGB&#187; показывается одно поле для HEX и соответствующий Color Picker;</li>
<li>При изменении значений в полях они автоматически синхронизируются с Color Picker;</li>
<li>При выборе цвета в Color Picker значения в полях обновляются;</li>
<li>После отправки формы PHP обрабатывает данные и выводит результат.</li>
</ul>
<p>&nbsp;</p>
<p>Сообщение <a href="https://rche.ru/6273_konvertor-rgb-v-hex-i-obratno-onlajn.html">Конвертер RGB в HEX (и обратно) онлайн</a> появились сначала на <a href="https://rche.ru">Веб-разработчик Роман Чернышов</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rche.ru/6273_konvertor-rgb-v-hex-i-obratno-onlajn.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
