<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Блоги: заметки с тегом prog</title>
<link>https://blogengine.me/blogs/tags/prog/</link>
<description>Автоматически собираемая лента заметок, написанных в блогах на Эгее</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.0 (v4079e)</generator>

<itunes:subtitle>Автоматически собираемая лента заметок, написанных в блогах на Эгее</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit>no</itunes:explicit>

<item>
<title>Условные комментарии</title>
<guid isPermaLink="false">121621</guid>
<link>https://bolknote.ru/all/303/</link>
<pubDate>Fri, 12 May 2006 21:00:00 +0500</pubDate>
<author>Евгений Степанищев</author>
<comments>https://bolknote.ru/all/303/</comments>
<description>
&lt;p&gt;&lt;a href="https://bolknote.ru/"&gt;Евгений Степанищев&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Одна из проблем — как подключать какие-то части кода в зависимости от того является ли браузер Internet Explorer. Веб-мастера, обычно, пользуются CSS-хаками, а вот о том, что есть специальная конструкция, которая позволяется это сделать, мало кто знает.&lt;/p&gt;
&lt;p&gt;Специальная конструкция&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;--[if IE...] ... &amp;lt;![endif]--&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;позволяет не только прятать какие-то части HTML от других браузеров (которые воспринимают их как обычный HTML-комментарий), но и выбирать HTML в зависимости от версии IE. Более подробно можно прочитать, например, в статье Manfred Staudinger &lt;a href="https://web.archive.org/web/20050215030013/http://www.positioniseverything.net/articles/multiIE.html"&gt;Taming Your Multiple IE Standalones&lt;/a&gt;. Для тех, кто не знает английского, скажу — общий принцип легко понятен из примеров.&lt;/p&gt;
&lt;p&gt;Кстати, от Internet Explorer так же можно прятать HTML-код — надо просто заключить его в теги&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;comment&amp;gt; … &amp;lt;/comment&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Этот нестандартный тег Internet Explorer считает комментарием и, соответственно, не показывает и не обрабатывает его содержимое.&lt;/p&gt;
</description>
</item>

<item>
<title>WinAPI и PHP</title>
<guid isPermaLink="false">119208</guid>
<link>https://bolknote.ru/all/114/</link>
<pubDate>Tue, 24 Aug 2004 21:00:00 +0500</pubDate>
<author>Евгений Степанищев</author>
<comments>https://bolknote.ru/all/114/</comments>
<description>
&lt;p&gt;&lt;a href="https://bolknote.ru/"&gt;Евгений Степанищев&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Так случилось, что в &lt;a href="http://www.php.net"&gt;PHP&lt;/a&gt; существует три модуля расширения — два для PHP4 и один для PHP5, позволяющих обращаться к Windows API. Способы их вызова различны, плюс ко всему, положение усугубляется тем, что модули расширения имеют одинаковые имена, документация есть только по первому из них, тогда как в комплект PHP включается второй.&lt;/p&gt;
&lt;p&gt;Ниже — результат моей потребности выяснить как же это всё работает. Прежде всего стоит заметить, что w32api не работает с mod_php, если старая версия вызывает ошибку при попытке повторного вызова в то же child, то новая вызывает ошибку сразу. В режиме CGI и с PHP5 я таких экспериментов не проводил.&lt;/p&gt;
&lt;p&gt;Итак, ниже — реализация функции link (hard link) для Windows NT. Под CLI пример работает как с PHP5, так и с PHP4. Конечно, для того, чтобы пример заработал, нужна файловая система, поддерживающая hard links. Под моей NTFS5 (Windows XP) ссылки ставятся.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="php"&gt;// Written by Evgeny Stepanischev (aka BOLK)
if (PHP_OS == &amp;#039;WINNT&amp;#039;) {
    // Модуль расширения FFI для PHP5
    if (extension_loaded(&amp;#039;ffi&amp;#039;) || intval(PHP_VERSION) &amp;gt;= 5 &amp;amp;&amp;amp; @dl(&amp;#039;php_ffi.dll&amp;#039;)) {
        function link($target, $link) {
            $api = &amp;amp; new ffi(&amp;quot;[lib=&amp;#039;kernel32.dll&amp;#039;] int &amp;quot; . &amp;quot;CreateHardLinkA( char *link, char *target, long *attr);&amp;quot;);
            return (bool)$api-&amp;gt;CreateHardLinkA($link, $target, NULL);
        }
    } else
    // Модуль расширения w32API для PHP4
    if (extension_loaded(&amp;#039;w32api&amp;#039;) || @dl(&amp;#039;php_w32api.dll&amp;#039;)) {
        // Старая версия модуля
        if (function_exists(&amp;#039;w32api_register_function&amp;#039;)) {
            if (!function_exists(&amp;#039;CreateHardLinkA&amp;#039;)) {
                @w32api_register_function(&amp;#039;kernel32.dll&amp;#039;, &amp;#039;CreateHardLinkA&amp;#039;, &amp;#039;bool&amp;#039;);
            }
            if (function_exists(&amp;#039;CreateHardLinkA&amp;#039;)) {
                function link($target, $link) {
                    return CreateHardLinkA($link, $target, NULL);
                }
            }
        } else {
            // Новая (примерно с версии PHP 4.3.0)
            function link($target, $link) {
                $api = &amp;amp; new win32;
                $api-&amp;gt;registerfunction(&amp;quot;bool CreateHardLinkA&amp;quot; . &amp;quot;(string &amp;amp;link, string &amp;amp;target) From kernel32.dll&amp;quot;);
                return $api-&amp;gt;CreateHardLinkA($link, $target);
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
</item>


</channel>
</rss>