<?xml version="1.0" encoding="utf-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Форум программистов и сисадминов Киберфорум - Блоги - elnorbert</title>
		<link>https://www.cyberforum.ru/blogs/317599/</link>
		<description>КиберФорум - форум программистов, системных администраторов, администраторов баз данных, компьютерный форум, форум по электронике и бытовой технике, обсуждение софта. Бесплатная помощь в решении задач по программированию и наукам, решение проблем с компьютером, операционными системам</description>
		<language>ru</language>
		<lastBuildDate>Tue, 22 Sep 2026 19:52:39 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>60</ttl>
		<image>
			<url>https://www.cyberforum.ru//cyberstatic.net/images/misc/rss.jpg</url>
			<title>Форум программистов и сисадминов Киберфорум - Блоги - elnorbert</title>
			<link>https://www.cyberforum.ru/blogs/317599/</link>
		</image>
		<item>
			<title>Реализация безопасного логического И, ИЛИ, в языке PHP; проверено на PHP 5.3.18</title>
			<link>https://www.cyberforum.ru/blogs/317599/5980.html</link>
			<pubDate>Sun, 25 Aug 2019 14:57:39 GMT</pubDate>
			<description>Реализация безопасного логического И, ИЛИ, в языке PHP; проверено на PHP 5.3.18 
 
*автор...</description>
			<content:encoded><![CDATA[<div><font size="4">Реализация безопасного логического И, ИЛИ, в языке PHP; проверено на PHP 5.3.18</font><br />
<br />
<b><font color="red">автор реализации способа безопасной логики не берет на себя ответственность за возможное не корректное функционирование применяемое в коде!</font></b><br />
<br />
В соответствии с документацией по PHP, сборки 2018-10-01, говорится:<br />
<br />
<b>Руководство по PHP &gt; Справочник языка &gt; Операторы &gt; Логические операторы:</b><br />
<br />
<b>Пример #1 Объяснение логических операторов</b><br />
<br />
<div class="codeblock"><table class="php"><thead><tr><td colspan="2" id="832101662"  class="head">PHP</td></tr></thead><tbody><tr class="li1"><td><div id="832101662" style="height: 206px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="de1"><pre class="de1"><span class="kw2">&lt;?php</span>
&nbsp;
<span class="co1">// --------------------</span>
<span class="co1">// foo() никогда не будет вызвана, т.к. эти операторы являются шунтирующими (short-circuit)</span>
&nbsp;
<span class="re0">$a</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">false</span> <span class="sy0">&amp;&amp;</span> foo<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$b</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">true</span> &nbsp;<span class="sy0">||</span> foo<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$c</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">false</span> and foo<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$d</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">true</span> &nbsp;or &nbsp;foo<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="co1">//...</span></pre></td></tr></table></div></td></tr></tbody></table></div>, более этого:<br />
<br />
<b>Руководство по PHP &gt; Справочник языка &gt; Операторы &gt; Приоритет оператора:</b><br />
<br />

<table width="95%"  class="bbcode_maincontainer"><tr><td>
	<div class="bbcode_container">
	  <div class="bbcode_quote">
	    <div class="btbtbt">
		<div class="quote_container">
	      	<div class="bbcode_quote_container"></div>
	       	<div class="bbcode_postedby">
	         	
	        </div>
	        <div class="message">Приоритет и ассоциативность оператора определяет только то, как группируется выражение, а не порядок его вычисления. Обычно PHP не указывает, в каком порядке вычисляются выражения и кода, который предполагает специфичный порядок вычисления следует избегать, потому, что поведение может меняться в разных версиях PHP или в зависимости от окружающего кода.</div>
	      </div>
			</div> 
		</div>
	</div>
</td></tr></table><b>Пример #2 Неопределенный порядок вычисления</b><br />
<br />
<div class="codeblock"><table class="php"><thead><tr><td colspan="2" id="735879196"  class="head">PHP</td></tr></thead><tbody><tr class="li1"><td><div id="735879196" style="height: 110px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
</pre></td><td class="de1"><pre class="de1"><span class="kw2">&lt;?php</span>
<span class="re0">$a</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
<span class="kw1">echo</span> <span class="re0">$a</span> <span class="sy0">+</span> <span class="re0">$a</span><span class="sy0">++;</span> <span class="co1">// может вывести как 2 так и 3</span>
&nbsp;
<span class="co1">//...</span></pre></td></tr></table></div></td></tr></tbody></table></div>, что определяет применение операторов <b>AND</b>, <b>OR</b>, <b>&amp;&amp;</b>, <b>||</b>, в двойне опаснее, в коде сценария интерпретатора.<br />
<br />
Попытка автора реализовать способ не шунтирующего логического оператора И, ИЛИ, совместно с вычислением аргументов строго с лева на право, реализовалась функциями:<br />
<br />
<div class="codeblock"><table class="php"><thead><tr><td colspan="2" id="35509628"  class="head">PHP</td></tr></thead><tbody><tr class="li1"><td><div id="35509628" style="height: 62px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
</pre></td><td class="de1"><pre class="de1"><span class="kw2">FUNCTION</span> __PHP_SAFE_AND<span class="br0">&#40;</span><span class="re0">$LE</span><span class="sy0">,</span> <span class="re0">$RE</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">RETURN</span> <span class="re0">$LE</span> AND <span class="re0">$RE</span><span class="sy0">;</span> <span class="br0">&#125;</span> <span class="coMULTI">/* { RETURN $LE &amp;&amp; $RE; } */</span>
<span class="kw2">FUNCTION</span> __PHP_SAFE_OR<span class="br0">&#40;</span><span class="re0">$LE</span><span class="sy0">,</span> <span class="re0">$RE</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">RETURN</span> <span class="re0">$LE</span> OR <span class="re0">$RE</span><span class="sy0">;</span> <span class="br0">&#125;</span> <span class="coMULTI">/* { RETURN $LE || $RE; } */</span></pre></td></tr></table></div></td></tr></tbody></table></div>Все функции содержат префикс, двойное нижнее подчеркивание, двойной underscore-префикс, по причине очень близкой принадлежности решаемой задачи к синтаксису языка, и для минимизации вероятности совпадения имен.<br />
<br />
Весь модуль, включая имена функций, собран прописными буквами, по причине специфичности решаемой задачи.<br />
<br />
<b>$LE</b>, <b>$RE</b>, обозначают левое и правое выражение, соответственно.<br />
<br />
Проверка в интерпретаторе версии PHP 5.3.18<br />
<br />
<div class="codeblock"><table class="unknown"><thead><tr><td colspan="2" id="816976840"  class="head">Code</td></tr></thead><tbody><tr class="li1"><td><div id="816976840" style="height: 46px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1">php --version</pre></td></tr></table></div></td></tr></tbody></table></div><div class="codeblock"><table class="php"><thead><tr><td colspan="2" id="791415168"  class="head">PHP</td></tr></thead><tbody><tr class="li1"><td><div id="791415168" style="height: 334px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="de1"><pre class="de1"><span class="kw1">require</span><span class="br0">&#40;</span><span class="st_h">'__php_safe_logic.php'</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="kw2">function</span> fle<span class="br0">&#40;</span><span class="re0">$le</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">echo</span> <span class="st_h">'&lt; '</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$le</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="kw2">function</span> fre<span class="br0">&#40;</span><span class="re0">$re</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">echo</span> <span class="st_h">'&gt; '</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$re</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
__PHP_SAFE_AND<span class="br0">&#40;</span>fle<span class="br0">&#40;</span><span class="kw4">false</span><span class="br0">&#41;</span><span class="sy0">,</span> fre<span class="br0">&#40;</span><span class="kw4">false</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
__PHP_SAFE_OR<span class="br0">&#40;</span>fle<span class="br0">&#40;</span><span class="kw4">true</span><span class="br0">&#41;</span><span class="sy0">,</span> fre<span class="br0">&#40;</span><span class="kw4">true</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">echo</span> <span class="st0">&quot;<span class="es1">\n</span>&quot;</span><span class="sy0">;</span>
&nbsp;
fle<span class="br0">&#40;</span><span class="kw4">false</span><span class="br0">&#41;</span> and fre<span class="br0">&#40;</span><span class="kw4">false</span><span class="br0">&#41;</span><span class="sy0">;</span>
fle<span class="br0">&#40;</span><span class="kw4">true</span><span class="br0">&#41;</span> or fre<span class="br0">&#40;</span><span class="kw4">true</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></td></tr></table></div></td></tr></tbody></table></div>Результат:<br />
<br />
<div class="codeblock"><table class="unknown"><thead><tr><td colspan="2" id="355533240"  class="head">Code</td></tr></thead><tbody><tr class="li1"><td><div id="355533240" style="height: 62px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
</pre></td><td class="de1"><pre class="de1">&lt; &gt; &lt; &gt; 
&lt; &lt;</pre></td></tr></table></div></td></tr></tbody></table></div>, что доказывает корректность реализации задачи, для PHP 5.3.18<br />
<br />
Почему применение шунтирующего логического оператора может быть очень опасно? Потому что <b><font color="red">пропуск вычисления второго выражения, в обработке которого, уставший программист полностью уверен, не активирует интерфейс</font></b> который мог содержатся во втором выражении.<br />
<br />
Если второе выражение шунтирующего логического оператора не содержит интерфейсов, ВОЗМОЖНО применение шунтирующего логического оператора полностью безопасно.<br />
<br />
Внимательно следует пользоваться шунтирующими логическими операторами в случае применения много поточности, если много поточность можно реализовать в PHP.<br />
<br />
Возможно где-то ошибаюсь...<br />
<br />
25.08.2019</div>

]]></content:encoded>
			<dc:creator>elnorbert</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/317599/5980.html</guid>
		</item>
		<item>
			<title>Функция sprintf. Замыкающее И, ИЛИ. C, C++, Java.</title>
			<link>https://www.cyberforum.ru/blogs/317599/5782.html</link>
			<pubDate>Sun, 28 Apr 2019 16:47:14 GMT</pubDate>
			<description>*Приношу свои извинения: в тексте пояснения замыкающих логических операций допущена серьезная...</description>
			<content:encoded><![CDATA[<div><font color="green"><b>Приношу свои извинения: в тексте пояснения замыкающих логических операций допущена серьезная ошибка. Эта ошибка исправлена. Редактирование 29.04.2019.</b></font><br />
<br />
<b>Функция sprintf; в языке C, C++</b><br />
<br />
Как можно в C, C++ соединить вместе разнотипные данные? Очень просто. Для этого можно применить функцию sprintf.<br />
<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Функция sprintf. Очень важные подробности!</div>
				   <div class="spoiler-body">
					   ... первый параметр функции sprintf это блок памяти. Второй параметр это строка форматирования. Третий, четвертый, и т.д., n-й, это список соединяемых переменных.<br />
<br />
Функции семейства *print*, *scan* отличаются только тем куда выводятся соединенные разнотипные данные [буфер, консоль, файл] и откуда считываются разнотипные данные для помещения в переменные [из буфера, из консоли, из файла]<br />
<br />
После завершения работы функции sprintf, в блоке памяти содержатся соединенные значения переменных.<br />
<br />
<font color="red"><b>Это очень важно!</b></font> Википедия:<br />
<br />

<table width="95%"  class="bbcode_maincontainer"><tr><td>
	<div class="bbcode_container">
	  <div class="bbcode_quote">
	    <div class="btbtbt">
		<div class="quote_container">
	      	<div class="bbcode_quote_container"></div>
	       	<div class="bbcode_postedby">
	         	
				<img loading="lazy" decoding="async" title="Цитата" src="//cyberstatic.net/images/buttons/quote_icon.png" alt="Цитата" />
				Сообщение от <strong>https://ru.wikipedia.org/wiki/Printf</strong>
				
	         	
	        </div>
	        <div class="message">Функции семейства printf принимают список аргументов и их размер отдельным параметром (в строке форматирования). <font color="red"><b>Несоответствие строки форматирования и переданных аргументов может приводить к непредсказуемому поведению</b></font>, повреждению стека <font color="red"><b>и выполнению произвольного кода</b></font>, приводить к разрушению областей динамической памяти. <font color="red"><b>Многие функции семейства называются «небезопасными» (англ. unsafe)</b></font>, так как <font color="red"><b>не имеют даже теоретической возможности для защиты от некорректных данных.</b></font></div>
	      </div>
			</div> 
		</div>
	</div>
</td></tr></table><a rel="nofollow noopener noreferrer" href="https://ru.wikipedia.org/wiki/Printf" target="_blank" title="https://ru.wikipedia.org/wiki/Printf">https://ru.wikipedia.org/wiki/Printf</a><br />
<a rel="nofollow noopener noreferrer" href="https://en.wikipedia.org/wiki/Printf_format_string" target="_blank" title="https://en.wikipedia.org/wiki/Printf_format_string">https://en.wikipedia.org/wiki/Printf_format_string</a>
				   </div>
			   </div><br />
<br />
<b>Замыкающие логическое И, ИЛИ; в языке Java</b><br />
<br />
В языке программирования Java есть операторы замыкающего логического И [оператор &amp;&amp;], ИЛИ [оператор ||]<br />
<br />
Применяя в составе выражений замыкающие логические операторы, если правильно прочитал в официальной технической по Java, может происходить значительная экономия вычислительных ресурсов:<br />
<br />
Для замыкающего логического &amp;&amp; значение правого операнда проверяется если значение левого операнда «true».<br />
Для замыкающего логического || значение правого операнда проверяется если значение левого операнда «false».<br />
<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Замыкающие логические операторы в языке Java. Очень важные подробности!</div>
				   <div class="spoiler-body">
					   Будьте очень внимательны: применяя в Java операторы замыкающих логических операций, правый операнд-выражение может не вычисляться. Поэтому, для выражения:<br />
<br />
<div class="codeblock"><table class="java5"><thead><tr><td colspan="2" id="53549539"  class="head">Java</td></tr></thead><tbody><tr class="li1"><td><div id="53549539" style="height: 46px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1">a <span class="sy0">&amp;&amp;</span> f1<span class="br0">&#40;</span><span class="br0">&#41;</span></pre></td></tr></table></div></td></tr></tbody></table></div>, если a = false, передачи управления функции f1() не будет! Для выражения:<br />
<br />
<div class="codeblock"><table class="java5"><thead><tr><td colspan="2" id="138990096"  class="head">Java</td></tr></thead><tbody><tr class="li1"><td><div id="138990096" style="height: 46px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1">b || f2<span class="br0">&#40;</span><span class="br0">&#41;</span></pre></td></tr></table></div></td></tr></tbody></table></div>, если b = true, передачи управления функции f2() не будет!<br />
<br />
Если Вы уверены, что произойдет гарантированная передача управления функциям f1() и f2() и возврат ихнего значения - то очень сильно ошибаетесь! Гарантированной, 100% передачи управления функциям f1() и f2(), применяя операторы замыкающих логических операторов - не будет! Это замечание относится и к операндам с префиксными и постфиксными унарными операторами инкрементирования и декрементирования: ++, --; которые содержатся в правой части замыкающего логического оператора.<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.23" target="_blank" title="https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.23">https://docs.oracle.com/javase... #jls-15.23</a><br />
<a rel="nofollow noopener noreferrer" href="https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.24" target="_blank" title="https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.24">https://docs.oracle.com/javase... #jls-15.24</a><br />
<br />
Это очень важно для безопасности проекта над которым Вы работаете!<br />
<br />
<font color="red"><b>Последствия не внимательности при работе с замыкающими логическими операторами могут быть катастрофическими!</b></font><br />
<br />
Очень хорошая идея, для замыкающих логических операций в Java, перечислять входящие выражения в порядке убывания вероятности возникновения значения «false» [для оператора &amp;&amp;]; «true» [для оператора ||]<br />
<br />
<font color="red">Не проверенная информация!</font> Замыкающее логическое И, ИЛИ, присуще не только языку Java, но и еще некоторым языкам программирования. Об этом говорили читатели которые комментируют данную блоговую статью.<br />
<br />
<font color="red">Не проверенная информация!</font> Действительно, в языке С, поведение операторов &amp;&amp;, ||, аналогичное, на сколько это смог проверить автор, поведению операторов &amp;&amp;, || в языке программирования Java. Не известно, все ли стандарты языка C, c89, c99, c11, поддерживают замыкающие логические функции?<br />
<br />
<font color="red">Не проверенная информация!</font> В языке C++ замыкающее логическое И, ИЛИ, иногда называют &quot;ленивостью&quot;. В языке C++ логические операторы не всегда ведут себя &quot;лениво&quot;, а в каких то особых ситуациях.
				   </div>
			   </div></div>

]]></content:encoded>
			<dc:creator>elnorbert</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/317599/5782.html</guid>
		</item>
		<item>
			<title>Информационный отпечаток</title>
			<link>https://www.cyberforum.ru/blogs/317599/1468.html</link>
			<pubDate>Thu, 04 Jul 2013 04:52:37 GMT</pubDate>
			<description>Информационный отпечаток 
 
Алгоритм получения информационного отпечатка применяется в сервисе...</description>
			<content:encoded><![CDATA[<div><div align="center"><font size="5">Информационный отпечаток</font></div><br />
Алгоритм получения информационного отпечатка применяется в сервисе Track ID. В программе Tunatic. В распознавания речи человека.<br />
<br />
Вот авторская попытка реализовать данный алгоритм на языке php<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Кликните здесь для просмотра всего текста</div>
				   <div class="spoiler-body">
					   <div class="codeblock"><table class="php"><thead><tr><td colspan="2" id="317704380"  class="head">PHP</td></tr></thead><tbody><tr class="li1"><td><div id="317704380" style="height: 350px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td class="de1"><pre class="de1"><span class="kw2">&lt;?php</span>
&nbsp;
<span class="coMULTI">/* 4 July 2013</span>
<span class="coMULTI">&nbsp; &nbsp;Fingerprint algorithm implementation. </span>
<span class="coMULTI">&nbsp; &nbsp;(c) 2013, Author Rampa. */</span> 
&nbsp;
<span class="co1">// Call it for get fingerprint.</span>
<span class="kw2">function</span> DigitalFingerprint<span class="br0">&#40;</span><span class="re0">$DATA</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
&nbsp; &nbsp; &nbsp;<span class="re0">$FINGERPRNT</span> <span class="sy0">=</span> <span class="st_h">''</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; <span class="co1">// Segment length calculate.</span>
&nbsp; &nbsp; <span class="re0">$segment_len</span> <span class="sy0">=</span> <span class="br0">&#40;</span>int<span class="br0">&#41;</span><span class="br0">&#40;</span><span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re0">$DATA</span><span class="br0">&#41;</span><span class="sy0">/</span><span class="nu0">8</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; 
&nbsp; &nbsp; <span class="co1">// Parse all segments.</span>
&nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span> <span class="re0">$index</span> <span class="sy0">=</span> <span class="nu0">0</span> <span class="sy0">;</span> <span class="re0">$index</span> <span class="sy0">&lt;</span> <span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re0">$DATA</span><span class="br0">&#41;</span><span class="sy0">-</span><span class="re0">$segment_len</span> <span class="sy0">;</span> <span class="re0">$index</span> <span class="sy0">+=</span> <span class="re0">$segment_len</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sum</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Get current segment.</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$segment</span> <span class="sy0">=</span> <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$D</span><span class="sy0">,</span> <span class="re0">$index</span><span class="sy0">,</span> <span class="re0">$segment_len</span><span class="br0">&#41;</span> <span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Parse each chars.</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span> <span class="re0">$char_index</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> <span class="re0">$char_index</span> <span class="sy0">&lt;</span> <span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re0">$segment</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re0">$char_index</span><span class="sy0">++</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Chars bytes sum calculate.</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sum</span> <span class="sy0">+=</span> <span class="kw3">ord</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$segment</span><span class="sy0">,</span> <span class="re0">$char_index</span><span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Assemble outputs.</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$FINGERPRNT</span> <span class="sy0">.=</span> <span class="kw3">chr</span><span class="br0">&#40;</span><span class="br0">&#40;</span>int<span class="br0">&#41;</span><span class="br0">&#40;</span><span class="re0">$sum</span><span class="sy0">/</span><span class="re0">$segment_len</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; 
&nbsp; &nbsp; <span class="co1">// Return complette fingerprint.</span>
&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$FINGERPRNT</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="sy1">?&gt;</span></pre></td></tr></table></div></td></tr></tbody></table></div>
				   </div>
			   </div><br />
<br />
Функция разбивает данные на восемь сегментов. Считает среднее арифметическое кодов символов каждого из сегментов. Каждый из сегментов данных представлен одним символом. Длина всего отпечатка данных восемь символов.<br />
<br />
Одинаковые и близкие по содержанию блоки не сжатых данных которые обрабатывает ф-я, имеют соответсвующие им похожие информационные отпечатки.<br />
<br />
Схожесть отпечатков проверяется, в языке php ф-ей levenshtein.<br />
<br />
В сравнении изображений, нужно передавать данные каналов RGB пикселов изображений представленные символами с соответствующими цифровыми кодами. Можно применять функцию<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Кликните здесь для просмотра всего текста</div>
				   <div class="spoiler-body">
					   <div class="codeblock"><table class="php"><thead><tr><td colspan="2" id="120509006"  class="head">PHP</td></tr></thead><tbody><tr class="li1"><td><div id="120509006" style="height: 238px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="de1"><pre class="de1"><span class="kw2">function</span> charbytes<span class="br0">&#40;</span><span class="re0">$file</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="re0">$res</span> <span class="sy0">=</span> <span class="kw3">imagecreatefromgif</span><span class="br0">&#40;</span><span class="re0">$file</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="re0">$charbytes</span> <span class="sy0">=</span> <span class="st_h">''</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span> <span class="re0">$y</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> <span class="re0">$y</span> <span class="sy0">&lt;</span> <span class="kw3">imagesy</span><span class="br0">&#40;</span><span class="re0">$res</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re0">$y</span> <span class="sy0">++</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span> <span class="re0">$x</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> <span class="re0">$x</span> <span class="sy0">&lt;</span> <span class="kw3">imagesx</span><span class="br0">&#40;</span><span class="re0">$res</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re0">$x</span> <span class="sy0">++</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$colors</span> <span class="sy0">=</span> <span class="kw3">imagecolorat</span><span class="br0">&#40;</span><span class="re0">$res</span><span class="sy0">,</span> <span class="re0">$x</span><span class="sy0">,</span> <span class="re0">$y</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$colors</span> <span class="sy0">=</span> <span class="kw3">imagecolorsforindex</span><span class="br0">&#40;</span> <span class="re0">$res</span> <span class="sy0">,</span> <span class="re0">$colors</span> <span class="br0">&#41;</span> <span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$charbytes</span> <span class="sy0">.=</span> <span class="kw3">chr</span><span class="br0">&#40;</span><span class="re0">$colors</span><span class="br0">&#91;</span><span class="st_h">'red'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw3">chr</span><span class="br0">&#40;</span><span class="re0">$colors</span><span class="br0">&#91;</span><span class="st_h">'green'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw3">chr</span><span class="br0">&#40;</span><span class="re0">$colors</span><span class="br0">&#91;</span><span class="st_h">'blue'</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; <span class="kw3">imagedestroy</span><span class="br0">&#40;</span><span class="re0">$res</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$charbytes</span> <span class="sy0">;</span>
<span class="br0">&#125;</span></pre></td></tr></table></div></td></tr></tbody></table></div>
				   </div>
			   </div><br />
<br />
Что бы сравнивать аудио файлы, следует распаковать файл затем передать аналоговые данные ф-и DigitalFingerprint.<br />
<br />
Реализация алгоритма проверена практически.</div>

]]></content:encoded>
			<dc:creator>elnorbert</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/317599/1468.html</guid>
		</item>
		<item>
			<title><![CDATA[Перемещение текста тега <TITLE> веб страницы]]></title>
			<link>https://www.cyberforum.ru/blogs/317599/1250.html</link>
			<pubDate>Sat, 23 Mar 2013 12:31:03 GMT</pubDate>
			<description><![CDATA[Когда нужно отобразить большую строку текста в теге <TITLE> которая содержит важную вводную...]]></description>
			<content:encoded><![CDATA[<div>Когда нужно отобразить большую строку текста в теге &lt;TITLE&gt; которая содержит важную вводную информацию, но не помещается вся в заглавии окна/вкладки может помочь скрипт который создаст ее плавную анимацию с права на лево (<a rel="nofollow noopener noreferrer" href="http://katana.mywebcommunity.org/example.html" target="_blank" title="http://katana.mywebcommunity.org/example.html">пример</a>) как в бегущих новостных лентах новостных телепередач<br />
<br />
Исходный текст Java Script модуля<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Кликните здесь для просмотра всего текста</div>
				   <div class="spoiler-body">
					   <div class="codeblock"><table class="javascript"><thead><tr><td colspan="2" id="650125585"  class="head">JavaScript</td></tr></thead><tbody><tr class="li1"><td><div id="650125585" style="height: 350px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="de1"><pre class="de1"><span class="kw1">var</span> Stream <span class="sy0">=</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; onload <span class="sy0">:</span> <span class="kw1">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; window.<span class="me1">onload</span> <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">Go</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; Go <span class="sy0">:</span> <span class="kw1">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">param</span>.<span class="me1">text</span> <span class="sy0">+=</span> <span class="kw1">this</span>.<span class="me1">param</span>.<span class="me1">separator</span> <span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setInterval<span class="br0">&#40;</span> <span class="kw1">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">var</span> obj <span class="sy0">=</span> Stream.<span class="me1">param</span> <span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj.<span class="me1">text</span> <span class="sy0">=</span> obj.<span class="me1">text</span>.<span class="me1">substr</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span> <span class="sy0">+</span> obj.<span class="me1">text</span>.<span class="me1">charAt</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span> <span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document.<span class="me1">title</span> <span class="sy0">=</span> obj.<span class="me1">text</span> <span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">param</span>.<span class="me1">speed</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; param <span class="sy0">:</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;text <span class="sy0">:</span> document.<span class="me1">title</span><span class="sy0">,</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; separator <span class="sy0">:</span> <span class="st0">' ::: '</span><span class="sy0">,</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; speed <span class="sy0">:</span> <span class="nu0">120</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span><span class="sy0">;</span>
Stream.<span class="me1">onload</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></td></tr></table></div></td></tr></tbody></table></div>
				   </div>
			   </div><br />
<br />
Пример подключения к странице<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Кликните здесь для просмотра всего текста</div>
				   <div class="spoiler-body">
					   <div class="codeblock"><table class="html5"><thead><tr><td colspan="2" id="915046356"  class="head">HTML5</td></tr></thead><tbody><tr class="li1"><td><div id="915046356" style="height: 158px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
</pre></td><td class="de1"><pre class="de1"><span class="sc2">&lt;<span class="kw2">html</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">head</span>&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">title</span>&gt;</span>Бегущая строка<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">title</span>&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">script</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;stream.min.js&quot;</span>&gt;&lt;<span class="sy0">/</span><span class="kw2">script</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">head</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="kw2">body</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">body</span>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><span class="kw2">html</span>&gt;</span></pre></td></tr></table></div></td></tr></tbody></table></div>Указывать какой именно текст будет двигатся в строке заглавия окна нет необходимости, достаточно подключить к странице файл stream.min.js и анимация текущего текста тега &lt;TITLE&gt; начнется автоматически
				   </div>
			   </div><br />
<br />
<font size="1">модуль работает в браузерах FF, MSIE, Chrome, Opera</font></div>

]]></content:encoded>
			<dc:creator>elnorbert</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/317599/1250.html</guid>
		</item>
		<item>
			<title>Радио лампа комнатного освещения; модель BH9800-2 E27</title>
			<link>https://www.cyberforum.ru/blogs/317599/1175.html</link>
			<pubDate>Fri, 15 Feb 2013 15:32:03 GMT</pubDate>
			<description>Радио лампа BH9800-2 E27 
 
 
Вкручиваете радио лампу в патрон, и вместо стандартного выключателя...</description>
			<content:encoded><![CDATA[<div><font size="5"><div align="center">Радио лампа BH9800-2 E27</div></font><br />
<br />
Вкручиваете радио лампу в патрон, и вместо стандартного выключателя освещения управляете лампой миниатюрным пультом управления который поставляется вместе с ней. Внешний вид одной из таких ламп, модель <a rel="nofollow noopener noreferrer" href="http://www.made-in-china.com/showroom/whtjason/product-detailQbjmoWpAIJVt/China-Remote-Control-Lamp-Holder-BH9800-2-E27-.html" target="_blank" title="http://www.made-in-china.com/showroom/whtjason/product-detailQbjmoWpAIJVt/China-Remote-Control-Lamp-Holder-BH9800-2-E27-.html">BH9800-2 E27</a><br />
<br />
<a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1733" target="_blank">Вложение 1733</a><br />
<br />
Характеристика BH9800-2 E27<ul><li>Поддержка экономичного режима работы</li>
<li>Две градации яркости</li>
<li>Производится в двух международных стандартах для патронов E27 и B22</li>
<li>Карабин на пульте управления</li>
<li>Поставляется с дополнительным патроном</li>
<li>Лампой можно управлять в радиусе 30 метров свободной от препятствий</li>
<li>Приемник и передатчик взаимодействуют на двух несущих частотах 433.92MHz и 315MHz</li>
<li>Лампа питается от сети переменного напряжения 220V ~/50Гц или 120V ~/60Гц</li>
<li>Рабочая мощность 60W, или 20W в экономичном режиме</li>
<li>Для пульта управления используется батарея стандарта 1PC 23A на напряжения 12V</li>
</ul><br />
Компания производитель <a rel="nofollow noopener noreferrer" href="http://www.made-in-china.com/showroom/whtjason/companyinfo/Ningbo-Baihuang-Electric-Appliances-Co-Ltd-.html" target="_blank" title="http://www.made-in-china.com/showroom/whtjason/companyinfo/Ningbo-Baihuang-Electric-Appliances-Co-Ltd-.html">Ningbo Baihuang Electric Appliances Co., Ltd</a> КНР, цена лампы 5.5$<br />
<font size="1"><br />
<br />
Обзор составлен не на правах рекламы. Источник <a rel="nofollow noopener noreferrer" href="http://www.made-in-china.com/showroom/whtjason/product-detailQbjmoWpAIJVt/China-Remote-Control-Lamp-Holder-BH9800-2-E27-.html" target="_blank" title="http://www.made-in-china.com/showroom/whtjason/product-detailQbjmoWpAIJVt/China-Remote-Control-Lamp-Holder-BH9800-2-E27-.html">www.made-in-china.com</a></font></div>

]]></content:encoded>
			<dc:creator>elnorbert</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/317599/1175.html</guid>
		</item>
	</channel>
</rss>
