<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"> 
    <channel> 
            <title>Сайт и блог Александра Сидоренко</title> 
            <link>http://bounz.net/rss.rss</link> 
            <description /> 
            <language>ru-ru</language> 
            <copyright>bounz.net - Сайт и блог Александра Сидоренко (C)2010</copyright>
            <lastBuildDate>Sun, 26 Feb 2012 08:21:57 +0300   </lastBuildDate>
            <ttl>120</ttl> 
          <rss2lj:owner xmlns:rss2lj="http://rss2lj.net/NS">bounz</rss2lj:owner>
            
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/bounz-main-feed" /><feedburner:info uri="bounz-main-feed" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item> 
    <title>MacBook Pro: русская раскладка клавиатуры и EVE Online</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/LqFNU1v9acE/macbook-pro-russian-keyboard-and-eve.html</link> 
    <description>&lt;p&gt;В&amp;nbsp;поездке в&amp;nbsp;США осуществил давнюю задумку обновить ноутбук и&amp;nbsp;приобрёл &lt;b&gt;MacBook Pro&lt;/b&gt; небезызвестной яблочной компании.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/keyboard.png" rel="lightbox[s125s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/3412dae6e913daca463172ad5586ec2a.5b3b34cc796968d1d0a5dd01f7a06bbf.png"/&gt;
    &lt;/a&gt;Одной из&amp;nbsp;первых проблем, с&amp;nbsp;которой я&amp;nbsp;столкнулся, как завзятый пользователь ПК, стало несоответствие русской раскладки клавиатуры, поставляемой с&amp;nbsp;MacOS X&amp;nbsp;10.7 Lion привычной ПКшной. К&amp;nbsp;счастью помимо раскладки &amp;laquo;Русская&amp;raquo; в&amp;nbsp;новых версиях MacOS есть раскладка &amp;laquo;Русская&amp;nbsp;&amp;mdash; ПК&amp;raquo;, в&amp;nbsp;которой знаки препинания находятся в&amp;nbsp;привычных местах. С&amp;nbsp;ней возникла только одна проблема: отсутствие буквы &lt;b&gt;&amp;laquo;ё&amp;raquo;&lt;/b&gt;. Порыскав по&amp;nbsp;форумам я&amp;nbsp;так и&amp;nbsp;не&amp;nbsp;понял, характерна&amp;nbsp;ли эта проблема только для американских макбуков, или ей&amp;nbsp;подвержены все. Вроде в&amp;nbsp;европейских моделях ноутбуков на&amp;nbsp;клавиатуре на&amp;nbsp;одну клавишу больше.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/Ukelele.png" rel="lightbox[s125s]" class="imgr"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/94d47386515ac76c91ba62cd546ed30b.5b3b34cc796968d1d0a5dd01f7a06bbf.png"/&gt;
    &lt;/a&gt;В&amp;nbsp;любом случае, мне нужна была буква &amp;laquo;ё&amp;raquo; на&amp;nbsp;клавише с&amp;nbsp;тильдой (~), а&amp;nbsp;вместо неё там были квадратные скобки. Ещё немного покопавшись в&amp;nbsp;интернетах набрёл на&amp;nbsp;&lt;a href="http://macosworld.ru/sozdaem-sobstvennuyu-raskladku/"&gt;статью&lt;/a&gt;, посвящённую созданию собственных раскладок для MacOS. Сделать это в&amp;nbsp;удобном графическом режиме можно с&amp;nbsp;помощью бесплатной программы &lt;a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=ukelele"&gt;Ukelele&lt;/a&gt;. С&amp;nbsp;её помощью я&amp;nbsp;исправил системную русскую раскладку так, что теперь она соответствует обычной раскладке в&amp;nbsp;Windows. Скачать архив с&amp;nbsp;файлом.keylayout и&amp;nbsp;иконкой можно &lt;a href="http://bounz.net/downloads/my-programs/mbp-rus-keyboard-layout.html"&gt;здесь&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/EVE.png" rel="lightbox[s125s]" class="imgr"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/794e9ad0ae2f8b753d09c7ecd0cc756f.5b3b34cc796968d1d0a5dd01f7a06bbf.png"/&gt;
    &lt;/a&gt;Так&amp;nbsp;же, не&amp;nbsp;так давно я&amp;nbsp;вернулся в&amp;nbsp;мир EVE Online, и, находясь в&amp;nbsp;отпуске, решил попробовать клиент игры под MacOS. Все работало хорошо, за&amp;nbsp;исключением того, что в&amp;nbsp;полноэкранном режиме невозможно было переключить раскладку клавиатуры с&amp;nbsp;русской на&amp;nbsp;английскую и&amp;nbsp;обратно с&amp;nbsp;помощью стандартных комбинаций клавиш. Она менялась только при переключении игры в&amp;nbsp;оконный режим, но&amp;nbsp;и&amp;nbsp;тут была проблема. &lt;nobr&gt;Из-за&lt;/nobr&gt; жёстко заданных возможных размерах окна и&amp;nbsp;строки меню самой MacOS часть окна игры выходила за&amp;nbsp;нижнюю границу экрана, что тоже было весьма и&amp;nbsp;весьма печально. Но, к&amp;nbsp;счастью, я&amp;nbsp;вспомнил как в&amp;nbsp;одном из&amp;nbsp;выпусков подкаста &lt;nobr&gt;Радио-Т&lt;/nobr&gt; ведущие обсуждали программу &lt;a href="http://punto.yandex.ru/mac/"&gt;Punto&amp;nbsp;Switcher&lt;/a&gt; для MacOS и&amp;nbsp;высказали мнение, что она отлично подходит для выполнения задачи смены раскладки клавиатуры.&lt;/p&gt;
&lt;p&gt;Отчаявшись решить проблему имеющимися средствами я&amp;nbsp;скачал Punto Switcher и&amp;nbsp;установил его. И&amp;nbsp;вот что я&amp;nbsp;теперь хочу вас сказать&amp;nbsp;&amp;mdash; это было самое оно. В&amp;nbsp;конечном счёте я&amp;nbsp;отключил автоматическую смену раскладки и&amp;nbsp;настроил в&amp;nbsp;качестве хоткея для переключения языков ввода ⌘+Shift, так эти клавиши больше всего подходят под расположение клавиш Alt+Shift на&amp;nbsp;предыдущем ноутбуке. Вся прелесть заключается в&amp;nbsp;том, что эта комбинация клавиш работает везде. И&amp;nbsp;полноэкранном режиме клиента EVE Online тоже.&lt;/p&gt;
&lt;p&gt;Так что теперь все клавиатурные вопросы решены, ибо отсутствие русских букв на&amp;nbsp;клавиатуре уже давно не&amp;nbsp;проблема =)&lt;/p&gt;
&lt;p&gt;Быстрого вам набора текстов!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/LqFNU1v9acE" height="1" width="1"/&gt;</description> 
    <pubDate>Sat, 22 Oct 2011 18:07:00 +0400</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2011/macbook-pro-russian-keyboard-and-eve.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2011/macbook-pro-russian-keyboard-and-eve.html</feedburner:origLink></item> 
<item> 
    <title>Русская раскладка клавиатуры для MacBook Pro</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/O4bvZdLcnAQ/mbp-rus-keyboard-layout.html</link> 
    <description>&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/input_tools.png" rel="lightbox[s126s]" class="imgr"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/cb4da9e61b3898b8e3bb9a55f7dd1cce.5b3b34cc796968d1d0a5dd01f7a06bbf.png"/&gt;
    &lt;/a&gt;Русская раскладка клавиатуры для MacBook Pro, соответствующая раскладке в Windows. На правильных местах расположены как знаки препинания, так и буква "ё".&lt;/p&gt;
&lt;p&gt;Находящиеся в архиве файлы необходимо извлечь в папку &lt;b&gt;/Library/Keyboard Layouts&lt;/b&gt;, после чего выйти и войти в систему. После этого в настройках клавиатуры появится новая раскладка "&lt;b&gt;Русская&amp;nbsp;-&amp;nbsp;Win&lt;/b&gt;".&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/O4bvZdLcnAQ" height="1" width="1"/&gt;</description> 
    <pubDate>Sat, 22 Oct 2011 08:01:00 +0400</pubDate> 
    <guid isPermaLink="false">http://bounz.net/downloads/my-programs/mbp-rus-keyboard-layout.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/downloads/my-programs/mbp-rus-keyboard-layout.html</feedburner:origLink></item> 
<item> 
    <title>Настройка сжатия gzip для WCF в IIS6 и IIS7</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/kCibD8DuV5A/setting-up-gzip-compression-for-wcf-in-iis.html</link> 
    <description>&lt;p&gt;В&amp;nbsp;нашем рабочем проекте мы&amp;nbsp;используем связку &lt;strong&gt;APS.Net&lt;/strong&gt;&amp;nbsp;&amp;mdash; &lt;strong&gt;RIA Services&lt;/strong&gt;&amp;nbsp;&amp;mdash; &lt;strong&gt;Silverlight&lt;/strong&gt;. Объем передаваемых данных от&amp;nbsp;сервера к&amp;nbsp;клиенту бывает достаточно большим, несколько мегабайт.&lt;/p&gt;
&lt;p&gt;Неплохо было&amp;nbsp;бы использовать компрессию &lt;strong&gt;gzip&lt;/strong&gt;, как для статического содержимого типа &lt;nobr&gt;html-страниц&lt;/nobr&gt;, &lt;acronym title="Cascading Style Sheets" lang="en"&gt;css&lt;/acronym&gt; и&amp;nbsp;javascript файлов, так и&amp;nbsp;для динамических данных, в&amp;nbsp;том числе от&amp;nbsp;WCF сервиса (ибо в&amp;nbsp;основе RIA Services лежит WCF).&lt;/p&gt;
&lt;p&gt;На&amp;nbsp;рабочем сервере системы используется &lt;strong&gt;IIS7&lt;/strong&gt;, а&amp;nbsp;на&amp;nbsp;тестовом&amp;nbsp;&amp;mdash; &lt;strong&gt;IIS6&lt;/strong&gt;. Озадачившись вопросом компрессии я&amp;nbsp;использовал &lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/502ef631-3695-4616-b268-cbe7cf1351ce.mspx?mfr=true" rel="nofollow"&gt;руководство для IIS6&lt;/a&gt; и&amp;nbsp;&lt;a href="http://technet.microsoft.com/en-us/library/cc730629(WS.10).aspx" rel="nofollow"&gt;руководство для IIS7&lt;/a&gt; по&amp;nbsp;настройке сжатия в&amp;nbsp;gzip. В&amp;nbsp;результате система работала на&amp;nbsp;обоих серверах, но&amp;nbsp;данные от&amp;nbsp;&lt;nobr&gt;веб-сервиса&lt;/nobr&gt; не&amp;nbsp;сжимались, что меня весьма огорчало.&lt;/p&gt;
&lt;p&gt;В&amp;nbsp;поисках решения вот &lt;a href="http://vov4ik-gaevoy.blogspot.com/2010/11/sliverlight-gzip-wcf-sliverlight-and.html" rel="nofollow"&gt;тут&lt;/a&gt; было найдено предложение насильно жать ответ от&amp;nbsp;&lt;nobr&gt;веб-сервиса&lt;/nobr&gt; с&amp;nbsp;помощью gzip или deflate компрессии, если по&amp;nbsp;заголовкам запроса видно, что клиент готов принять сжатые данные. После реализации данного метода компрессия заработала в&amp;nbsp;IIS7, однако при работе с&amp;nbsp;системой на&amp;nbsp;сервере с&amp;nbsp;IIS6 стали происходить ужасные вещи: сервер в&amp;nbsp;заголовке указывал один размер сообщения, а&amp;nbsp;по&amp;nbsp;факту отдавал другой (спасибо Fiddler2), большая часть запросов завершалась по&amp;nbsp;тайм ауту. Говоря простыми словами, система не&amp;nbsp;работала.&lt;/p&gt;
&lt;p&gt;В&amp;nbsp;конечном счёте решение было найдено, оно связано с&amp;nbsp;более правильной настройкой серверов IIS.&lt;/p&gt;
&lt;p&gt;Для &lt;strong&gt;IIS6&lt;/strong&gt; с&amp;nbsp;помощью &lt;a href="http://blogs.msdn.com/b/mike/archive/2007/12/06/troubleshooting-http-compression-in-iis6.aspx" rel="nofollow"&gt;инструкции по&amp;nbsp;решению проблем&lt;/a&gt; выполняем шаги 1, 2, 3, 4 и&amp;nbsp;на&amp;nbsp;четвертом шаге добавляем расширение &amp;laquo;svc&amp;raquo; в&amp;nbsp;список компрессируемых файлов (&lt;nobr&gt;т. к.&lt;/nobr&gt; если посмотреть на&amp;nbsp;запрос к&amp;nbsp;&lt;nobr&gt;веб-сервису&lt;/nobr&gt; в&amp;nbsp;Fiddler2&amp;nbsp;можно увидеть, что генерируемый &lt;nobr&gt;веб-сервис&lt;/nobr&gt; имеет расширение &lt;strong&gt;.svc&lt;/strong&gt;). Перезапускаем w3svc и&amp;nbsp;радуемся.&lt;/p&gt;
&lt;p&gt;Для &lt;strong&gt;IIS7&lt;/strong&gt; надо указать &lt;nobr&gt;MIME-типы&lt;/nobr&gt; данных, которые должны сжиматься. Для запросов RIA Services это &lt;strong&gt;&amp;laquo;application/msbin1&amp;raquo;&lt;/strong&gt;. Настроить эти типы данных можно в&amp;nbsp;файле конфигурации IIS7 &lt;strong&gt;C:\Windows\System32\inetsrv\config\applicationhost.config&lt;/strong&gt; в&amp;nbsp;секции &lt;strong&gt;httpCompression&lt;/strong&gt; примерно таким образом:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
        &amp;lt;httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"&gt;&lt;br /&gt;
            &amp;nbsp; &amp;nbsp; &amp;lt;scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" dynamicCompressionLevel="4" /&gt;&lt;br /&gt;
            &amp;nbsp; &amp;nbsp; &amp;lt;staticTypes&gt;&lt;br /&gt;
                &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add mimeType="text/*" enabled="true" /&gt;&lt;br /&gt;
                &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add mimeType="message/*" enabled="true" /&gt;&lt;br /&gt;
                &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add mimeType="application/javascript" enabled="true" /&gt;&lt;br /&gt;
                &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add mimeType="*/*" enabled="false" /&gt;&lt;br /&gt;
            &amp;nbsp; &amp;nbsp; &amp;lt;/staticTypes&gt;&lt;br /&gt;
            &amp;nbsp; &amp;nbsp; &amp;lt;dynamicTypes&gt;&lt;br /&gt;
                &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add mimeType="text/*" enabled="true" /&gt;&lt;br /&gt;
                &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add mimeType="message/*" enabled="true" /&gt;&lt;br /&gt;
                &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add mimeType="application/x-javascript" enabled="true" /&gt;&lt;br /&gt;
		&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add mimeType="application/atom+xml" enabled="true" /&gt;&lt;br /&gt;
		&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add mimeType="application/xaml+xml" enabled="true" /&gt;&lt;br /&gt;
		&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add mimeType="application/xop+xml" enabled="true" /&gt;&lt;br /&gt;
		&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add mimeType="application/soap+xml" enabled="true" /&gt;&lt;br /&gt;
		&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add mimeType="application/msbin1" enabled="true" /&gt;&lt;br /&gt;
                &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add mimeType="*/*" enabled="false" /&gt;&lt;br /&gt;
            &amp;nbsp; &amp;nbsp; &amp;lt;/dynamicTypes&gt;&lt;br /&gt;
        &amp;lt;/httpCompression&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Сжимайте на здоровье!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/kCibD8DuV5A" height="1" width="1"/&gt;</description> 
    <pubDate>Sat, 07 May 2011 14:49:00 +0400</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2011/setting-up-gzip-compression-for-wcf-in-iis.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2011/setting-up-gzip-compression-for-wcf-in-iis.html</feedburner:origLink></item> 
<item> 
    <title>301 редирект в MODx Revolution</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/M3Wgu4ZLrIc/301-redirect-in-modx-revolution.html</link> 
    <description>&lt;p&gt;В&amp;nbsp;данной заметке я&amp;nbsp;расскажу что делать, если вдруг вы&amp;nbsp;решили изменить структуру своего сайта и&amp;nbsp;хотите настроить редиректы старым адресам, чтобы не&amp;nbsp;ломать внешние ссылки на&amp;nbsp;ваш ресурс.&lt;/p&gt;
&lt;p&gt;Мне пришлось озадачиться этим вопросом в&amp;nbsp;тот момент, когда я&amp;nbsp;все&amp;nbsp;же решил перейти с&amp;nbsp;самописной системой архивов на&amp;nbsp;расширение &lt;strong&gt;Archivist&lt;/strong&gt;, а&amp;nbsp;заодно изменить структуру сайта таким образом, чтобы разделить записи в&amp;nbsp;блоге в&amp;nbsp;контейнеры по&amp;nbsp;годам, &lt;nobr&gt;т. к.&lt;/nobr&gt; хоть за&amp;nbsp;4 года существования сайта постов было и&amp;nbsp;не&amp;nbsp;огромное количество, но&amp;nbsp;стало заметно неудобно раскрывать ветвь &lt;strong&gt;Блог&lt;/strong&gt; и&amp;nbsp;искать в&amp;nbsp;ней нужный документ.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/modx_doctree.png" rel="lightbox[s122s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/2ba5dfbe37ce276ee8303aa0a3084e37.065b36c8a63a792450ebeff451ea66a7.png"/&gt;
    &lt;/a&gt;Раньше все блогозаписи были дочерними документами контейнера Блог и&amp;nbsp;поэтому имели адреса вида &lt;code&gt;blog/&lt;nobr&gt;blog-page-alias.html&lt;/nobr&gt;&lt;/code&gt;. При создании&amp;nbsp;же дополнительных контейнеров для годов и&amp;nbsp;перемещении в&amp;nbsp;них документов их&amp;nbsp;URL изменился на&amp;nbsp;&lt;code&gt;blog/year/&lt;nobr&gt;blog-page-alias.html&lt;/nobr&gt;&lt;/code&gt;. В&amp;nbsp;связи с&amp;nbsp;этим все внешние ссылки на&amp;nbsp;мои статьи становились нерабочими, что, конечно&amp;nbsp;же, весьма печально. Для решения этой проблемы существует прекрасная вещь&amp;nbsp;&amp;mdash; код ответа сервера &lt;strong&gt;301 Moved Permanently&lt;/strong&gt;, известный в&amp;nbsp;народе как &lt;nobr&gt;301-й&lt;/nobr&gt; редирект. Реализовать его можно различными способами, но&amp;nbsp;мне не&amp;nbsp;хотелось возиться с&amp;nbsp;прописыванием регулярных выражений в .htaccess, поэтому я&amp;nbsp;решил поискать готовые расширения для MODx Revolution. И&amp;nbsp;таковое нашлось&amp;nbsp;&amp;mdash; &lt;a href="http://modx.com/extras/package/redirector" target="_blank" rel="nofollow"&gt;Redirector&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Работает довольно просто. После установки через менеджер пакетов в&amp;nbsp;меню &lt;strong&gt;Компоненты&lt;/strong&gt; главного меню появляется пункт &lt;strong&gt;Redirector&lt;/strong&gt;, при нажатии на&amp;nbsp;который появляется таблица созданных редиректов. Реализован компонент через плагин, который срабатывает на&amp;nbsp;системное событие &lt;strong&gt;OnPageNotFound&lt;/strong&gt; и&amp;nbsp;пытается найти запрашиваемый URL&amp;nbsp;в. своей таблице. Если таковой &lt;nobr&gt;находится-то&lt;/nobr&gt; он&amp;nbsp;возвращает ответ с&amp;nbsp;перенаправлением на&amp;nbsp;новый адрес. Все легко и&amp;nbsp;просто.&lt;/p&gt;
&lt;p&gt;Единственный момент, с&amp;nbsp;которым я&amp;nbsp;столкнулся в&amp;nbsp;начале&amp;nbsp;&amp;mdash; это формат записи URL. В&amp;nbsp;самом начале я&amp;nbsp;использовал адреса вида &lt;code&gt;/blog/blog-page-alias.html&lt;/code&gt;, и&amp;nbsp;они не&amp;nbsp;работали. Потом попробовал писать полные адреса, &lt;nobr&gt;т. е.&lt;/nobr&gt; &lt;code&gt;http://bounz.net/blog/blog-page-alias.html&lt;/code&gt;, но&amp;nbsp;они тоже не&amp;nbsp;работали. После того, как посмотрел в&amp;nbsp;исходный код плагина понял, как следовало записывать адреса: без слеша в&amp;nbsp;начале, &lt;nobr&gt;т. е.&lt;/nobr&gt; просто &lt;code&gt;blog/blog-page-alias.html&lt;/code&gt;. После этого все заработало.&lt;/p&gt;
&lt;p&gt;
Теперь внутреняя структура блога меня полностью устраивает, а&amp;nbsp;старые ссылки прекрасно работают.&lt;/p&gt;
&lt;p&gt;Быстрых вам редиректов!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/M3Wgu4ZLrIc" height="1" width="1"/&gt;</description> 
    <pubDate>Fri, 15 Apr 2011 11:00:00 +0400</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2011/301-redirect-in-modx-revolution.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2011/301-redirect-in-modx-revolution.html</feedburner:origLink></item> 
<item> 
    <title>Открытая картография: OpenStreetMap и Google Map Maker</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/D0OHQ155kOY/crowdmapping-in-osm-and-gmm.html</link> 
    <description>&lt;p&gt;Продолжу рассказ о&amp;nbsp;сервисах совместного создания карт, начатый в&amp;nbsp;прошлом посте с&amp;nbsp;разговора о&amp;nbsp;Народных картах Яндекса.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/osm3.jpg" rel="lightbox[s118s]" class="imgr"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/77aeae7e2c2d6a384cd96724e044edbb.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;На&amp;nbsp;фоне всех подобных проектов &lt;a href="http://openstreetmap.org"&gt;OpenStreetMap&lt;/a&gt; (в&amp;nbsp;дальнейшем OSM) значительно выделяется: данные, созданные участниками проекта свободны и&amp;nbsp;доступны всем желающим безвозмездно на&amp;nbsp;основании условий лицензии &lt;nobr&gt;CC-BY-SA&lt;/nobr&gt; (в&amp;nbsp;настоящее время проект голосует за&amp;nbsp;переход на&amp;nbsp;лицензию ODbL). Таким образом, вся картографическая информация может быть использована в&amp;nbsp;любых приложениях. Например: можно сконвертировать данные в&amp;nbsp;формат для навигационной программы Navitel, залить полученные карты на&amp;nbsp;навигатор и&amp;nbsp;ездить по&amp;nbsp;ним; или вот информационный ресурс, предоставляющий информацию о&amp;nbsp;движении общественного транспорта в&amp;nbsp;реальном времени в&amp;nbsp;Саранске &lt;a href="http://bus13.ru/" target="_blank"&gt;bus13.ru&lt;/a&gt; использует карту OSM в&amp;nbsp;качестве подложки.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/osm1.jpg" rel="lightbox[s118s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/90b54594b0e22d9bd3415a3e5ea89dcc.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;
    &lt;a href="http://bounz.net/photos/2011/osm4.jpg" rel="lightbox[s118s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/5ed838f1bb32a2756aa8d933f98b046a.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;
Однако, у&amp;nbsp;OSM есть достаточно особенностей, которые могут отпугнуть многих желающих сделать доброе дело и&amp;nbsp;внести свою лепту в&amp;nbsp;развитие электронной картографии. &lt;nobr&gt;Во-первых&lt;/nobr&gt;, редакторы карт. Существует большое количество как &lt;nobr&gt;web-редакторов&lt;/nobr&gt;, так и&amp;nbsp;десктопных и&amp;nbsp;мобильных приложений. Каждый выглядит &lt;nobr&gt;по-своему&lt;/nobr&gt;, у&amp;nbsp;каждого свои особенности. Одним из&amp;nbsp;лучших на&amp;nbsp;мой взгляд является десктопный &lt;strong&gt;JOSM&lt;/strong&gt;. Но&amp;nbsp;чтобы понять, какой понравится именно вам, придётся их&amp;nbsp;все попробовать. &lt;br/&gt;
&lt;nobr&gt;Во-вторых&lt;/nobr&gt;, сам процесс создания карты и&amp;nbsp;доступные сущности. В&amp;nbsp;качестве исходной информации можно использовать &lt;nobr&gt;опять-таки&lt;/nobr&gt; только свободные источники: в&amp;nbsp;основном это &lt;nobr&gt;GPS-треки&lt;/nobr&gt;, а&amp;nbsp;также спутниковые снимки, бесплатно предоставленные компаниями Yahoo, Microsoft и&amp;nbsp;другими. К&amp;nbsp;сожалению, по&amp;nbsp;снимкам от&amp;nbsp;Google или Яндекса рисовать нельзя (хотя способы есть). Карта в&amp;nbsp;OSM состоит из&amp;nbsp;точек, линий и&amp;nbsp;отношений. Линии могут образовывать полигоны. Вся остальная информация описывается с&amp;nbsp;помощью атрибутов. В&amp;nbsp;принципе, можно использовать любые атрибуты, но&amp;nbsp;чтобы не&amp;nbsp;было полного разброда и&amp;nbsp;шатания основная их&amp;nbsp;часть была стандартизирована. А&amp;nbsp;так как этих стандартных атрибутов очень много, то&amp;nbsp;начинающему осмеру на&amp;nbsp;первых порах приходится нелегко: неясно, каким набором объектов и&amp;nbsp;их&amp;nbsp;атрибутов лучше и&amp;nbsp;правильнее отрисовать &lt;nobr&gt;какой-либо&lt;/nobr&gt; объект реального мира. &lt;br /&gt;
И&amp;nbsp;&lt;nobr&gt;в-третьих&lt;/nobr&gt;&amp;nbsp;&amp;mdash; отображение карты. Рендерить карту может, &lt;nobr&gt;опять-таки&lt;/nobr&gt;, любой человек так, как считает это нужным. Стандартный рендерер Mapnik, который используется на&amp;nbsp;сайте openstreetmap.org, опираясь на&amp;nbsp;значения атрибутов объектов рисует примерно &lt;a href="http://openstreetmap.org" rel="nofollow"&gt;такие&lt;/a&gt; картинки. В&amp;nbsp;общем, я&amp;nbsp;хочу сказать что имеющаяся в&amp;nbsp;данном проекте свобода привносит дополнительные сложности. Но, я&amp;nbsp;постепенно прихожу к&amp;nbsp;выводу, что оно того стоит.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.google.com/mapmaker"&gt;Google Map Maker&lt;/a&gt; доступен не&amp;nbsp;для всех регионов. Например в&amp;nbsp;России, в&amp;nbsp;Москве и&amp;nbsp;области не&amp;nbsp;доступен, а&amp;nbsp;в&amp;nbsp;Узбекистане доступен. Узнать, есть&amp;nbsp;ли возможность использования Map Maker в&amp;nbsp;определённом регионе очень просто: достаточно на&amp;nbsp;Google Maps на&amp;nbsp; приблизить интересующий участок на максимально крупном масштабе и&amp;nbsp;если в&amp;nbsp;верхней панели карты рядом с&amp;nbsp;кнопкой Печать появится кнопка Изменить&amp;nbsp;&amp;mdash; значит Map Maker доступен.&lt;/p&gt;
&lt;p&gt;В&amp;nbsp;Google Map Maker все объекты также создаются их&amp;nbsp;двух примитивов: точки и&amp;nbsp;линии. В&amp;nbsp;отличии от&amp;nbsp;OSM, где редактор сам проставляет атрибуты объектам и&amp;nbsp;их&amp;nbsp;значения, в&amp;nbsp;GMM количество возможных атрибутов ограничено, равно как и&amp;nbsp;их&amp;nbsp;значения. Это облегчает описательную часть работы. В&amp;nbsp;GMM действует система модераторов и&amp;nbsp;одобрений. Ваш объект появится на&amp;nbsp;карте только после достаточного количества одобрений со&amp;nbsp;стороны других пользователей. После одобрения объект рендерится в&amp;nbsp;обычные карты Google и&amp;nbsp;его можно увидеть на&amp;nbsp;всех сервисах, использующих Google Maps.&lt;/p&gt;
&lt;p&gt;
    &lt;a href="http://bounz.net/photos/2011/gmm2.jpg" rel="lightbox[s118s]" class="imgrwc"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/288138cec15b35219028db839bc3d746.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;
    &lt;a href="http://bounz.net/photos/2011/osm2.jpg" rel="lightbox[s118s]" class="imgrwc"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/626962ed366fd95c921d94232014d319.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;
    &lt;a href="http://bounz.net/photos/2011/nmaps4.jpg" rel="lightbox[s118s]" class="imgrwc"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/9597abc3ce5fa7878e5bbb0a7db6408c.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;
В качестве иллюстрации один и тот же участок Ташкента в трех сервисах: НЯК, OSM и GMM:
&lt;/p&gt;
&lt;p&gt;Вот в&amp;nbsp;&lt;nobr&gt;общем-то&lt;/nobr&gt; и&amp;nbsp;всё. Присоединяйтесь к&amp;nbsp;созданию карт!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/D0OHQ155kOY" height="1" width="1"/&gt;</description> 
    <pubDate>Sun, 03 Apr 2011 11:50:00 +0400</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2011/crowdmapping-in-osm-and-gmm.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2011/crowdmapping-in-osm-and-gmm.html</feedburner:origLink></item> 
<item> 
    <title>5000 для Народной карты</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/hzpf8YyasGM/5000-for-folk-map.html</link> 
    <description>&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/nmaps1.png" rel="lightbox[s116s]" class="imgr"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/399ea788a15088d897524f38039fd256.5b3b34cc796968d1d0a5dd01f7a06bbf.png"/&gt;
    &lt;/a&gt;Недавно произошло небольшое, но&amp;nbsp;достаточно знаковое событие: я&amp;nbsp;создал 5000 объектов на&amp;nbsp;Народной карте Яндекса. Любовь к&amp;nbsp;круглым числам во&amp;nbsp;всей своей красе.&lt;/p&gt;
&lt;p&gt;Пользуясь случаем, хочу рассказать о&amp;nbsp;&lt;a href="http://n.maps.yandex.ru" target="_blank"&gt;Народной карте&lt;/a&gt; и&amp;nbsp;о&amp;nbsp;других подобных проектах. Суть Народной карты сводится к&amp;nbsp;тому, что Яндекс даёт пользователям инструмент для создания карт на&amp;nbsp;основе своих спутниковых снимков. Таким образом можно создавать карты для тех мест, которые плохо или никак не&amp;nbsp;представлены в&amp;nbsp;больших Яндекс.Картах, а&amp;nbsp;также поддерживать их&amp;nbsp;в&amp;nbsp;актуальном состоянии (например, недавно нам надо было заехать на&amp;nbsp;улицу Беломорская, 20к2; этого дома ни&amp;nbsp;на&amp;nbsp;Яндекс.Картах ни&amp;nbsp;на&amp;nbsp;Google Maps не было; на&amp;nbsp;народной&amp;nbsp;же карте было обозначено, что на&amp;nbsp;месте снесённого дома 22к1 построили три дома 20к1, 20к2 и&amp;nbsp;20к3). Любой пользователь может рисовать объекты на&amp;nbsp;карте, пользуясь спутниковыми снимками, а&amp;nbsp;так&amp;nbsp;же вносить правки в&amp;nbsp;уже созданные объекты (менять их&amp;nbsp;геометрию и&amp;nbsp;атрибуты).&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/nmaps2.jpg" rel="lightbox[s116s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/c650cf05aa268a16de4f96b05f5f13a2.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;    &lt;a href="http://bounz.net/photos/2011/nmaps3.jpg" rel="lightbox[s116s]" class="imglwc"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/06eabd672a5ecbe972a6e196e68e15f5.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;Когда народные карты только появились, хороших спутниковых снимков &lt;a href="http://n.maps.yandex.ru/?oid=128159" target="_blank"&gt;Ташкента&lt;/a&gt; ещё не&amp;nbsp;было, и&amp;nbsp;я, нарисовав немного зданий и&amp;nbsp;дорог вокруг работы успокоился. После анонса обновления спутниковых снимков, в&amp;nbsp;которые попал и&amp;nbsp;Ташкент, я&amp;nbsp;принялся за&amp;nbsp;отрисовку карты родного города. И&amp;nbsp;вот результат. &lt;b&gt;5000&lt;/b&gt; объектов, и&amp;nbsp;&lt;b&gt;5400&lt;/b&gt; правок из&amp;nbsp;которых большая часть принадлежит именно Ташкенту. Изначально, активность других пользователей в&amp;nbsp;данном регионе была минимально и&amp;nbsp;основной каркас карты нарисовал я. Сейчас&amp;nbsp;же, после нескольких комментариев на различных форумах с&amp;nbsp;призывом развивать проект, активизировались и&amp;nbsp;другие участники, за&amp;nbsp;что им, конечно, большое спасибо. Ведь никто не&amp;nbsp;знает на&amp;nbsp;отлично весь город, каждый знает в&amp;nbsp;основном те&amp;nbsp;районы, в&amp;nbsp;которых живёт и&amp;nbsp;в&amp;nbsp;которых часто бывает.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/nmaps4.jpg" rel="lightbox[s116s]" class="imgr"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/9597abc3ce5fa7878e5bbb0a7db6408c.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;Вот один из&amp;nbsp;&lt;a href="http://n.maps.yandex.ru/-/C6gBV7s" target="_blank"&gt;примеров&lt;/a&gt; хорошо проработанного участка карты, на&amp;nbsp;котором обозначены и&amp;nbsp;пронумерованы практически все дома, размечены дороги, &lt;nobr&gt;внутри-дворовые&lt;/nobr&gt; проезды и&amp;nbsp;пешеходные дорожки.&lt;/p&gt;
&lt;p&gt;К&amp;nbsp;вопросу о&amp;nbsp;применимости и&amp;nbsp;используемости этих карт. Как рассказывают мои&amp;nbsp;друзья и&amp;nbsp;знакомые в&amp;nbsp;Ташкенте, Google Maps там заблокирован. Есть конечно, окольные пути, как посмотреть карту от&amp;nbsp;Google, но&amp;nbsp;обычным пользователям сделать это будет довольно тяжело. А&amp;nbsp;для Яндекс.Карт есть мобильный клиент почти для всех моделей телефонов, и&amp;nbsp;в&amp;nbsp;этом клиенте есть слой Народной карты. Так что, народные карты уже сейчас отлично подходят для ориентирования на&amp;nbsp;незнакомой территории, особенно если у&amp;nbsp;вас в&amp;nbsp;телефоне есть &lt;acronym title="Global Positioning System" lang="en"&gt;GPS&lt;/acronym&gt;.&lt;/p&gt;
&lt;p&gt;Продолжение разговора про аналогичные сервисы (OpenStreetMap и&amp;nbsp;Google MapMaker) в&amp;nbsp;следующем посте.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/hzpf8YyasGM" height="1" width="1"/&gt;</description> 
    <pubDate>Fri, 18 Mar 2011 10:30:00 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2011/5000-for-folk-map.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2011/5000-for-folk-map.html</feedburner:origLink></item> 
<item> 
    <title>Про подкасты</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/N7uClgTHy_o/about-podcasts.html</link> 
    <description>&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/podcasting.jpg" rel="lightbox[s115s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/e6740bf46a292e95038b56334604476e.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;В конце моей прошлой заметки &lt;a href="http://bounz.net/blog/devaluation-of-music.html"&gt;про обесценивание музыки&lt;/a&gt;, я написал, что в пути стал заменять музыку подкастами, и обещал рассказать о том, что интересно лично мне.&lt;/p&gt;
&lt;p&gt;Итак, что же такое &lt;strong&gt;подкасты&lt;/strong&gt;? По своей сути — это обычные звуковые файлы, чаще всего в формате mp3 или aac, которые регулярно записывает один или несколько человек, придерживаясь в них определённой тематики, и выкладывает для свободного скачивания в интернете. Таким образом имеем мысли человека записанные в аудио-формате. Что делает подкасты по-настоящему удобными — это стандартизированный способ получения их обновлений. В качестве основы используется формат RSS. Таким образом, чтобы следить за понравившимся подкастом, достаточно добавить в свой подкаст-клиент ссылку на RSS-поток.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Подкаст-клиент&lt;/strong&gt; — это программа, которая периодически опрашивает RSS-потоки на предмет появления новых выпусков, и если таковые имеются — скачивает их. Так же, они зачастую следят за тем, какие выпуске подкаста уже прослушаны, показывают шоуноты (текстовые комментарии к подкастам, содержащие обычно темы, освящённые в данном выпуске и другую полезную информацию) и другую информацию, позволяют удобно управлять процессом воспроизведения подкастов.&lt;/p&gt;
&lt;p&gt;Много полезной информации о подкастинге есть на одном из крупнейших российском подкаст-терминале &lt;a rel="nofollow" href="http://podfm.ru/topodcasters/" target="_blank"&gt;podfm.ru&lt;/a&gt; в разделе "Подкастерам".&lt;/p&gt;
&lt;p&gt;Вот на какие подкасты подписан я:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel="nofollow" href="http://radio-t.com/" target="_blank"&gt;Радио-Т&lt;/a&gt; — еженедельное русскоязычное Hi-Tech шоу, публикуемое в виде подкаста и выходящее в прямой эфир по субботам в 23:00 по московскому времени. Рад, что они сделали первые выпуски месяца по-настоящему гиковскими.&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="http://radiogrinch.ru" target="_blank"&gt;Radio Grinch&lt;/a&gt; — подкаст, который ведёт Денис aka Radio Grinch, в котором интересно рассказывает как о событиях в собственной жизни, так и об общественно-политических событиях. В регулярных рубриках так же есть лайфхаки и объяснения английских идиом. Иногда случаются выпуски — диалоги с интересными людьми.&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="http://podcast.umputun.com/" target="_blank"&gt;Еженедельный подкаст от Умпутуна&lt;/a&gt; — истории из жизни нашего человека в Америке. К сожалению, в последнее время не совсем еженедельный.&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="http://42.podfm.ru/" target="_blank"&gt;Подкаст 42&lt;/a&gt; — подкаст, основанный на сообщениях сайта lifehacker.ru. Ведущие рассказывают о разнообразным методах улучшения этого несовершенного мира. Так же у них есть подкаст «Вечерний кефир», но до него ещё руки/уши мои не дошли.&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="http://afterwednesday.rpod.ru/" target="_blank"&gt;Сегодня четверг&lt;/a&gt; — общественно-политический подкаст, проявляющий промахи нашей власти, показывающий всю дурь наших чиновников. К сожалению, в последнее время практически не выходит.&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="http://ypp.rpod.ru/" target="_blank"&gt;Янки после пьянки&lt;/a&gt; — размышления о жизни, науки и многом другом. Слушаю, когда настаёт философское настроение.&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="http://tipz.umputun.com/" target="_blank"&gt;ТиПЗ&lt;/a&gt; (Теория и практика звукозаписи) — ещё один подкаст от Умпутуна. Сейчас выходит редко, все самое вкусное можно послушать в архивах подкаста.&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" href="http://utp.umputun.com/" target="_blank"&gt;UTP&lt;/a&gt; (Upmutun Technical Podcast) — технический подкаст от Умпутуна. Выпусков было не много, но благодаря им я перешёл на распределённую систему контроля ревизий Mercurial, чему несказанно рад.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Теперь 2 слова про подкаст-клиенты. Владеющие техникой Apple используют iTunes и крутят фонарики. Я же скажу, что лучший подкаст-клиент под Android — это &lt;a rel="nofollow" href="https://market.android.com/details?id=mobi.beyondpod" target="_blank"&gt;BeyondPod&lt;/a&gt;. Он полностью оправдывает те 7 долларов, которые просят заплатить после демонстрационного периода. Из RSS-лент подгружает как аудио-подкасты, так и видео, а заодно ещё и просто заметки, которые могут оказаться в ленте. В общем владельцам Android устройств всячески рекомендую.&lt;/p&gt;
&lt;p&gt;И да, &lt;strong&gt;слушайте подкасты в дороге&lt;/strong&gt;, или когда занимаетесь какими-то рутинными делами (мытье посуды, например) - они созданы как раз для этого!&lt;/p&gt;
&lt;p style="font-size: 1.1em; margin: 6px 0px;"&gt;&lt;b&gt;А какие подкасты слушаете вы?&lt;/b&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/N7uClgTHy_o" height="1" width="1"/&gt;</description> 
    <pubDate>Tue, 01 Mar 2011 20:20:00 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2011/about-podcasts.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2011/about-podcasts.html</feedburner:origLink></item> 
<item> 
    <title>Обесценивание музыки</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/okX9sr9gPTE/devaluation-of-music.html</link> 
    <description>&lt;p&gt;Идея написать этот пост родилась у меня давно, несколько лет назад. Наконец набралось достаточное количество слов, которые можно записать по этому поводу.&lt;/p&gt;
&lt;p&gt;А повод есть и весьма грустный. На мой взгляд последнее время происходит обесценивание музыки. Под последним временем я понимаю и 5-20 лет, и 50-100.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/musd1.jpg" rel="lightbox[s114s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/7295060dfcf4b88fb622aa5a0f6bbac3.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;    &lt;a href="http://bounz.net/photos/2011/musd2.jpg" rel="lightbox[s114s]" class="imglwc"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/7f55eb44c65e0dc1c95936010b884e1a.f91df7a7abcc2f634cadb7dfa8b08a5c.jpg"/&gt;
    &lt;/a&gt;    &lt;a href="http://bounz.net/photos/2011/musd3.jpg" rel="lightbox[s114s]" class="imglwc"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/4d1dba48a2014a1ecfa0e548b8b4e31f.f91df7a7abcc2f634cadb7dfa8b08a5c.jpg"/&gt;
    &lt;/a&gt;Людям всегда нравилась хорошая музыка. Но в стародавние времена единственной возможностью послушать музыку и насладится ею было либо посещение концерта, либо приглашение музыкантов к себе в дом, либо самоличное музицирование. Для всех этих вариантов необходимо существование и реальное присутствие настоящих живых людей — музыкантов.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/musd4.jpg" rel="lightbox[s114s]" class="imgr"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/3e0cba218ab4c1d4364287ae6f1e7a7e.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;С развитием научно-технического прогресса были изобретены граммофоны, патефоны, проигрыватели пластинок. И это стало началом конца. Да, во времена патефонов они не были распространены очень широко (в каждом доме, каждой семье) и покупка пластинок для них было делом затратным. К тому же редкие пластинки достать было очень трудно. Благодаря этому и остаткам былой культуры прослушивания музыки люди её слушали. Собирались, ставили пластинку и слушали, наслаждались.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/musd5.jpg" rel="lightbox[s114s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/c8145f7816f861061bab3d9b45437fbe.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;С еще большим распространением проигрывателей грампластинок и появлением радио роль музыки в жизни людей ещё немного уменьшилась: теперь стало гораздо проще и доступнее использовать её в качестве фона к повседневной деятельности. Дальнейшее развитие эта тенденция получила с распространением транзисторных радиоприёмников, а затем с появлением и распространением кассетных и CD-плееров.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/musd7.jpg" rel="lightbox[s114s]" class="imgr"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/c9831c463cf41c9464d1966eb1e79a03.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;Последний гвоздь в этот процесс обесценивания музыки сейчас забивают музыкальные плееры типа iPod'а, мобильные телефоны и интернет, с помощью которого можно быстро и легко получить желаемые песни. Гигабайты песен. Теперь молодёжь и люди среднего возраста все чаще ходят в наушниках и слушают свою музыку. При этом уровень сосредоточения на музыке, включенности в неё, становится весьма малым. Да и сама современная популярная музыка в большинстве своём особой глубиной похвастаться не может.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/musd6.jpg" rel="lightbox[s114s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/f0ff501e1a518752cdee5715a910ac17.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;Да, остались ещё любители классической музыки, ходящие на концерты, любители живого звука, посещающие концерты музыкальных групп, и просто любители высокого качества звучания музыки, собирающие у себя дома Hi-Fi аудиосистемы. Но что их отличает от всех остальных людей, бродящих как зомби по городу в наушниках? Они слушают музыку, они на ней сосредоточены, они следят за переходами, темами, вливаются в неё и переживают её. Ходящие же в наушниках люди в большинстве своем просто слышат музыку, но не слушают ее. Таким образом они используют портативные плееры для того, чтобы перебить звуки окружающего мира и чуточку скрасить себе поездку до работы и обратно, чтобы не скучать.&lt;/p&gt;
&lt;p&gt;Я и сам бываю порой таким зомби, но для себя нашёл решение проблемы свободного времени при поездках на работу — прослушивание подкастов. Действительно, внимательно слушать некоторое конечное количество песен в музыкальном плеере много раз по кругу навряд ли получится. Слушать же человека, или нескольких людей в подкасте интереснее и полезнее. Если, конечно, вам нравится и интересен тот подкаст, который вы слушаете. Но о подкастах я напишу в другой раз (&lt;a href="http://bounz.net/blog/about-podcasts.html"&gt;почитать&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Мой призыв: слушайте хорошую музыку, не часто и вдумчиво!&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/okX9sr9gPTE" height="1" width="1"/&gt;</description> 
    <pubDate>Mon, 21 Feb 2011 13:02:00 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2011/devaluation-of-music.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2011/devaluation-of-music.html</feedburner:origLink></item> 
<item> 
    <title>Блог на MODx Revolution: система комментирования</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/BD6eijjtsZc/blog-na-modx-sistema-kommentirovaniya.html</link> 
    <description>&lt;img class="imgl" src="/photos/2011/disqus-logo.png" alt="" /&gt;
&lt;p&gt;Продолжу разговор про создание и развитие блога с помощью системы управления контентом MODx Revolution. На этот раз речь пойдет о системе публикации комментариев к записям в блоге. Действительно, автору блога очень важно иметь возможность обратной связи со своими читателями, одним из самых распространенных вариантов которой является комментирование записей.&lt;/p&gt;
&lt;p&gt;В случае создания блога на MODx у нас есть два (даже три) варианта: использовать готовый компонент, написать систему самому, использовать стороннее решение. Вариант написания своей реализации системы комментариев я отметаю сразу из-за неоправданной трудоемкости. Не зря же мы используем систему управления контентом. Из готовых компонентов для MODx Revolution есть только &lt;strong&gt;Quip&lt;/strong&gt;. Из сторонних решений подойдут любые, которые можно интегрировать путем использования JavaScript. К ним можно отнести такие популярные системы как &lt;strong&gt;Disqus&lt;/strong&gt; и &lt;strong&gt;IntenseDebate.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Изначально я использовал для своего сайта компонент &lt;strong&gt;Quip &lt;/strong&gt;(&lt;a href="http://rtfm.modx.com/display/ADDON/Quip"&gt;http://rtfm.modx.com/display/ADDON/Quip&lt;/a&gt;), настроил его под свои нужды, изменил внешний вид, чтобы он коррелировал с дизайном сайта и приготовился радоваться. Но не тут-то было. После того, как начали появляться первые комментарии к статьям, я с удивлением обнаружил, что через некоторое время они исчезают. Сами по себе. Просто р-раз - и нету комментария. Испугавшись, что они утеряны на совсем, я пошел в табличку с комментариями в базу данных и с облегчением нашел, что они не удалены совсем и навсегда, а лишь отмечены, как удаленные. Изменив значение поля "deleted" с "1" на "0", я вернул комментарии к жизни. Но спустя несколько дней ситуация повторилась. Я опять починил комментарии, но потом они снова исчезли, и так продолжалось до тех пор, пока мне это не надоело. На официальном форуме MODx у одного человечка была такая же проблема как и у меня, но работающих вариантов решения не предлагалось. Ковыряться в исходном коде Quip мне хотелось меньше всего, и тут мой взор упал на систему комментирования &lt;strong&gt;Disqus&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Меня сразу же привлек довольно приятный дизайн, а так же возможность авторизации как внутри системы Disqus (которая используется на множестве сайтов, в том числе такие крупные как CNN, TechCrunch, Fox News и другие), так и с помощью Twitter, Facebook, Yahoo, используя OpenID или обычную для всех сайтов форму "Имя - Почта - Сайт - Комментарий". Причем организовано все весьма удобно с точки зрения пользователя. Было принято решение использовать Disqus.&lt;/p&gt;
&lt;p&gt;После регистрации на сайте &lt;a href="disqus.com" target="_blank"&gt;disqus.com&lt;/a&gt; предлагается несколько инструкций по установке кода в популярные системы ведения блогов типа WordPress, Blogger, Joomla и другие. MODx в их числе не оказалось, но мы не лыком шиты, поэтому идем в раздел &lt;strong&gt;Universal Code&lt;/strong&gt;. После ознакомления с разделом становится ясно, что система состоит из двух модулей: сам модуль комментирования, который следует использовать на странице с блогозаписью, и модуль, выводящий количество комментариев в заданном посте, который можно использовать на самой странице блога в ленте статей.&lt;/p&gt;
&lt;p&gt;Разберемся для начала с основным модулем для просмотра комментариев к статье и собственно комментирования. Создадим чанк, в который поместим код, написанный на странице установки Disqus, и назовем его DisqusComments. В нем надо как минимум изменить переменную &lt;strong&gt;disqus_shortname&lt;/strong&gt;, в которой указать короткое имя, выбранное вами при регистрации, и желательно изменить переменные &lt;strong&gt;disqus_identifier &lt;/strong&gt;и &lt;strong&gt;disqus_url &lt;/strong&gt;для более простой работы системы. В качестве идентификатора статьи можно использовать ее id в MODx, например так:&lt;/p&gt;
&lt;code&gt;       var disqus_shortname = 'shortname_вашего_сайта';&lt;br /&gt;       var disqus_identifier = '&amp;#91;[+id]]';&lt;br /&gt;       var disqus_url = '&amp;#91;[+url]]';&lt;/code&gt;
&lt;p&gt;Далее, в шаблоне для отображения страниц постов из блога в нужное место добавляем вызов этого чанка:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;       .. отображение содержания статьи ..&lt;br /&gt;       &amp;#91;[$DisqusComments? &amp;amp;id=`bounz_net_&amp;#91;[*id]]` &amp;amp;url=`&amp;#91;[++site_url]]&amp;#91;[~&amp;#91;[*id]]]]` ]]&lt;br /&gt;       .. что-то еще .. &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;В данном случае я использую в качестве &lt;strong&gt;disqus_identifier &lt;/strong&gt;конструкцию вида &lt;strong&gt;bounz_net_articleID&lt;/strong&gt;, а переменной &lt;strong&gt;disqus_url&lt;/strong&gt; присваиваю полный адрес страницы. Использование полного URL связано с тем, что изначально, пытаясь интегрировать Disqus со своим сайтом, и имея относительную адресацию страниц (в чанке заголовка был прописан тег &lt;code&gt;&amp;lt;base /&amp;gt;&lt;/code&gt;), возникала ошибка при формировании постоянных ссылок на комментарии. А т.к. до этого мне уже пришлось отказаться от относительных ссылок в разделе Галерея (т.к. они криво работали с хеш-тегами), то было принято решение вообще везде перейти на полную адресацию.&lt;/p&gt;
&lt;p&gt;Но это было лирическое отступление. На данный момент система комментариев интегрирована в блог, их можно писать, читать и модерировать. Теперь было бы неплохо выводить количество комментариев в основной ленте записей блога. Это очень просто сделать. Создадим в чанке, ответственном за краткий вывод блогозаписи на главной странице блога, следующую ссылку:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&amp;lt;a href="/url_статьи#disqus_thread" class="leavecomment" data-disqus-identifier="bounz_net_&amp;#91;[+id]]"&amp;gt;
      Комментарии
    &amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Магия данной ссылки заключается в добавлении хеш-тега &lt;strong&gt;#disqus_thread&lt;/strong&gt; к ссылке на статью и добавлении небольшого javascript-кода в конец страницы. Дополнительно к хеш-тегу можно задать у ссылки аттрибут &lt;strong&gt;data-disqus-identifier&lt;/strong&gt;, который поможет Disqus идентифицировать статью. Вообще говоря, можно обойтись и  без него, тогда система будет идентифицировать статьи, основываясь на их URL. Но если адреса страниц со статьями изменятся (допустим, вы начнете использовать ЧПУ), то все сломается. Дабы такого не случилось, я добавил этот атрибут. Заметьте, что он строится точно так же, как и значение свойства &lt;strong&gt;disqus_identifier&lt;/strong&gt; в вызове скрипта комментирования. Собственно все готово.&lt;/p&gt;
&lt;p&gt;Напоследок немного оформительских работ. Текст ссылок для количества комментариев можно задать в настройках на сайте Disqus (раздел Admin, вкладка Settings, подраздел Appearance, группа настроек Comment Count Link). На этой же станице настроек можно добавить своих правил CSS. Так я избавился от ссылки "blog comments powered by Disqus". Впрочем, убрать эту ссылку можно еще проще: удалив строчку &lt;code&gt; &amp;lt;a href="http://disqus.com" class="dsq-brlink"&gt;blog comments powered by &amp;lt;span class="logo-disqus"&gt;Disqus&amp;lt;/span&gt;&amp;lt;/a&amp;gt; &lt;/code&gt; из того кода, который они дают.&lt;/p&gt;
&lt;p&gt;Радостных вам комментариев!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/BD6eijjtsZc" height="1" width="1"/&gt;</description> 
    <pubDate>Fri, 11 Feb 2011 15:59:00 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2011/blog-na-modx-sistema-kommentirovaniya.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2011/blog-na-modx-sistema-kommentirovaniya.html</feedburner:origLink></item> 
<item> 
    <title>Сумка от Яндекс.Маркета</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/LYFB08rXCXs/bag-from-yandex-market.html</link> 
    <description>&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/ya_bag1.jpg" rel="lightbox[s112s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/aecbd7c40d01622c6b95773ab50e9000.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;30 ноября 2010, в честь своего десятилетия, Яндекс.Маркетом проводилась викторина &lt;a href="http://10.market.yandex.ru/" target="_blank"&gt;«10 лет Яндекс.Маркету»&lt;/a&gt;. Задача викторины сводилась к тому, чтобы максимально быстро и максимально правильно ответить на 10 вопросов, связанных с различными группами товаров, в основном техники. 200 человек, показавших лучшие результаты, выйграли специальные сумки для покупок. Я оказался в их числе.&lt;/p&gt;
&lt;p&gt;Яндекс как всегда был крайне неспешен, и лишь 8 декабря мне на почту пришло письмо с поздравлениями и просьбой прислать контактную информацию для отправки сумки. И вот, спустя почти еще 2 месяца в почтовом ящике оказалось заветное извещение.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/ya_bag2.jpg" rel="lightbox[s112s]" class="imgr"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/8e27e88134e40c8b1b6d9b5e63092cb9.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;В общем и целом сумка не представляет из себя чего-то особенного, зато приятно будет с ней ходить по магазинам - вещь редкая и на каждом углу не продающаяся. Довольно вместительная, изнутри проклеена полеэтиленом. На одной стороне надпись "Покупки без очереди", на другой - QR-код с адресом &lt;a href="http://m.ya.ru/market" target="_blank"&gt;m.ya.ru/market&lt;/a&gt;. Таким образом, владельцы смартфонов с программой распознавания QR-кодов попадут на мобильную версию сайта маркета.&lt;/p&gt;
&lt;p&gt;Что ж, я был очень рад поучаствовать в викторине и получить приз. Давно не участвовал в подобных мероприятиях.&lt;/p&gt;
&lt;p&gt;А в каких онлайн-викторинах участвовали вы?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/LYFB08rXCXs" height="1" width="1"/&gt;</description> 
    <pubDate>Sun, 06 Feb 2011 12:42:00 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2011/bag-from-yandex-market.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2011/bag-from-yandex-market.html</feedburner:origLink></item> 
<item> 
    <title>Календарь с оригами от Тануки</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/STSayN7RgaA/calendar-with-origami-from-tanuki.html</link> 
    <description>&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/tanuki1.jpg" rel="lightbox[s111s]" class="imgr"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/4da40d3fa8a9a0011d75454978d0678b.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;Недавно сидели с друзьями в ресторане японской кухни Тануки, и, видимо, так хорошо посидели, что заведение подарило нам календарь на 2011 год. Причем не простой календарь, а с заготовками для складывания оригами, по одной на каждый месяц.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/tanuki2.jpg" rel="lightbox[s111s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/ff7f9d644e11815bcd00b5e20b43d866.2fa39f328d1f53d776d318200a17d2cd.jpg"/&gt;
    &lt;/a&gt;    &lt;a href="http://bounz.net/photos/2011/tanuki4.jpg" rel="lightbox[s111s]" class="imglwc"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/ed28027bf8bcc7aad693d8c9ae9c4d3a.2fa39f328d1f53d776d318200a17d2cd.jpg"/&gt;
    &lt;/a&gt;    &lt;a href="http://bounz.net/photos/2011/tanuki6.jpg" rel="lightbox[s111s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/af95295ff3149385aa7571c7ec06aa31.2fa39f328d1f53d776d318200a17d2cd.jpg"/&gt;
    &lt;/a&gt;    &lt;a href="http://bounz.net/photos/2011/tanuki7.jpg" rel="lightbox[s111s]" class="imglwc"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/f16fb1fc3d038d021f7cc2d1214d1554.2fa39f328d1f53d776d318200a17d2cd.jpg"/&gt;
    &lt;/a&gt;Судя по описанию акции на сайте ресторана, календари выдают за каждые 2000 рублей в счете пока они есть в наличии. &lt;a href="http://www.tanuki.ru/calendar/" target="_blank"&gt;Там же на сайте&lt;/a&gt; есть страницы календаря в различных разрешениях, чтобы можно было их использовать в качестве фонового изображения рабочего стола. Однако, там приведены только страницы с календарем, без заготовок для оригами. В бумажной же версии, перед каждой страницей месяца есть страница с заготовкой и инструкцией по складыванию фигурки. При этом страницы с месяцами более плотные, чем страницы с оригами.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/tanuki8.jpg" rel="lightbox[s111s]" class="imgr"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/3c1c0564a06da898877123f9eca39be9.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;Вместе с календарем прилагаются еще круглые кусочки двустороннего скотча. После того как очередная фигурка собрана ее можно прикрепить к календарю. Получается такой объемный и интерактивный календарь.&lt;/p&gt;
&lt;p&gt;В общем, молодцы ребята из Тануки, придумавшие такую забаву. Да и вообще молодцы: нам понравилось оформление ресторанов и качество обслуживания. А так же интересные фишечки, такие как наливание чая из чайника с супер длинным носиком. Так что если вы любите японскую кухню - можно совместить приятное с полезным и даже получить за это интересный подарок.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/STSayN7RgaA" height="1" width="1"/&gt;</description> 
    <pubDate>Wed, 02 Feb 2011 00:22:00 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2011/calendar-with-origami-from-tanuki.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2011/calendar-with-origami-from-tanuki.html</feedburner:origLink></item> 
<item> 
    <title>Блог на MODx Revolution: как сделать архив</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/ZHtoBvPKfCw/blog-na-modx-kak-sdelat-arhiv.html</link> 
    <description>&lt;p&gt;Дорабатывая свой сайт, обнаружил, что на просторах отечественных интернетов тема MODx освещена весьма скудно, а там где освещена - в основном статьи по MODx Evolution, в то время как MODx Revolution широкой поступью набирает силу и мощь. Поэтому я решил написать несколько статей по MODx Revolution в ключе практических задач. Первая задача - организовать архив записей (фильтрацию по месяцам), как это сделано в небезызвестном Wordpress.&lt;/p&gt;
&lt;p&gt;Начнем с начала: определимся с задачей и составим небольшую спецификацию, а-ля ТЗ.&lt;/p&gt;
&lt;p&gt;Пользователь приходит на блог и просматривает записи. В специальном месте расположены ссылки на архивные записи по месяцам вида &lt;strong&gt;Декабрь 2010 (4)&lt;/strong&gt;, при нажатии на которую пользователю показываются только те блого-записи, которые были написаны в декабре 2010 года. В скобочках рядом с месяцем приведено количество записей за этот месяц (в данном примере - 4). Из описанного выше видно, что для наших целей необходимо каким-то образом передать выбранный месяц, пусть это будет параметр GET запроса с названием &lt;strong&gt;bymonth &lt;/strong&gt;со значениями вида &lt;strong&gt;201012&lt;/strong&gt;, т.е. четыре цифры года и две цифры месяца. Также нам потребуется две функции, одна будет считать количество записей за месяц, проходя по всем блого-записям, чтобы сформировать ссыки архива, а другая - для выбора их базы данных только тех записей, которые были опубликованы в заданном месяце.&lt;/p&gt;
&lt;p&gt;Сниппет getArchiveMonths для формирования ссылок архива:&lt;/p&gt;
&lt;code&gt;
&lt;p&gt;$collection = $modx-&amp;gt;getCollection('modResource', array(&lt;br /&gt;    'published' =&amp;gt; 1,&lt;br /&gt;    'parent' =&amp;gt; '2')&lt;br /&gt;);&lt;/p&gt;
&lt;p&gt;setlocale(LC_TIME, 'ru_RU.UTF8');&lt;br /&gt;$output = "";&lt;br /&gt;$months = array();&lt;/p&gt;
&lt;p&gt;foreach ($collection as $resourceId =&amp;gt; $resource) {&lt;br /&gt;    $strmonth = date("Ym", $resource-&amp;gt;publishedon);&lt;br /&gt;    if(array_key_exists($strmonth, $months))&lt;br /&gt;        $months[$strmonth]['count']++;&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        $months[$strmonth]['count'] = 1;&lt;br /&gt;        $months[$strmonth]['text'] = strftime("%B %Y", $resource-&amp;gt;publishedon);&lt;br /&gt;    }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;krsort($months);&lt;/p&gt;
&lt;p&gt;foreach ($months as $month =&amp;gt; $count) {        &lt;br /&gt;    $output .= $modx-&amp;gt;getChunk($tpl, array(  &lt;br /&gt;        'month' =&amp;gt; $month,&lt;br /&gt;        'text' =&amp;gt; $count['text'] . ' (' . $count['count'] . ')'&lt;br /&gt;    ));  &lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;return $output;&lt;/p&gt;
&lt;/code&gt;
&lt;p&gt;В первом запросе мы получаем все документы, имеющие определенного родителя и опубликованные (при желании условия можно изменить, например на номер шаблона, который имеют блого-записи). Далее идет формирование словаря, ключом которого является месяц, а значением - пара значений: колчество записей в этот месяц и отформатированное название месяца. Потом этот словарь сортируется так, чтобы самые последние месяца шли раньше, и на его основе, а так же переданного чанка, генерируется кусок html-кода.&lt;/p&gt;
&lt;p&gt;Вызов сниппета в моем случае (пробел между [ и [ сделан, чтобы MODx не обрабатывал его как вызов сниппета):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;    [ [getArchiveMonths? &amp;amp;tpl=`archiveMonthRow`]]&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Пример чанка:&lt;/p&gt;
&lt;code&gt;&amp;lt;li&amp;gt;&amp;lt;a href="/blog/?bymonth="&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;/code&gt;
&lt;p&gt;Прекрасно. Теперь у нас есть набор ссылок, по которым пользователь может нажать, осталось обработать эти запросы.&lt;/p&gt;
&lt;p&gt;Т.к. для отображения документов в большинстве своем используется сниппет &lt;strong&gt;getResources&lt;/strong&gt;, то для того, чтобы он показал лишь определенные записи достаточно задать ему параметр &lt;strong&gt;resources&lt;/strong&gt;:&lt;/p&gt;
&lt;code&gt;if (!empty($_GET['bymonth'])) {&lt;br /&gt;    $month = (int)$_GET['bymonth']; // для защиты от всякой дряни&lt;br /&gt;    $ids = $modx-&amp;gt;runSnippet('getResourcesIds',array(&lt;br /&gt;          'month' =&amp;gt; $month&lt;br /&gt;    ));&lt;br /&gt;    $scriptProperties['resources'] = $ids;&lt;br /&gt;}&lt;/code&gt;
&lt;p&gt;Сниппет &lt;strong&gt;getResourcesIds &lt;/strong&gt;возвращает список id ресурсов, опубликованных в заданном месяце:&lt;/p&gt;
&lt;code&gt;$collection = $modx-&amp;gt;getCollection('modResource', array(&lt;br /&gt;    "EXTRACT(YEAR_MONTH FROM FROM_UNIXTIME(`publishedon`)) = '$month'",&lt;br /&gt;    'published' =&amp;gt; 1,&lt;br /&gt;    'parent' =&amp;gt; '2'));&lt;br /&gt;$output = "";&lt;br /&gt;foreach ($collection as $resourceId =&amp;gt; $resource) {&lt;br /&gt;    $output.=$resourceId.',';&lt;br /&gt;    }&lt;br /&gt;if(strlen($output)&amp;gt;0)&lt;br /&gt;    $output = substr($output, 0, -1);&lt;br /&gt;return $output;&lt;/code&gt;
&lt;p&gt;Вот таким образом я решил вопрос с организацией архива на своем блоге. Самое забавное то, что в процессе работы над статьей, я наткнулся на уже готовое решение данной проблемы от комманды MODx, называется &lt;a href="http://rtfm.modx.com/display/ADDON/Archivist" target="_blank"&gt;Archivist&lt;/a&gt;. Как я его не заметил несколько месяцев назад, когда делал сайт - уму непостижимо. Ну ничего. Изобрел свой велосипед - стал умнее и опытнее =)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/ZHtoBvPKfCw" height="1" width="1"/&gt;</description> 
    <pubDate>Thu, 20 Jan 2011 23:27:00 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2011/blog-na-modx-kak-sdelat-arhiv.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2011/blog-na-modx-kak-sdelat-arhiv.html</feedburner:origLink></item> 
<item> 
    <title>Боты переводчики в Google Talk</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/VGoLlRcrv_Y/google-talk-translation-bots.html</link> 
    <description>&lt;p&gt;Недавно &lt;strong&gt;Google Talk&lt;/strong&gt; предложил мне добавить в друзья нескольких человек. Так как я их не знаю, то и добавлять не стал. Однако, мое внимание привлек другой список, находившийся в том же окне. В нем перечислялись &lt;strong&gt;боты переводчики&lt;/strong&gt;. Я добавил себе ботов английского языка &lt;strong&gt;ru2en&lt;/strong&gt; и &lt;strong&gt;en2ru&lt;/strong&gt; (@bot.talk.google.com). Работают они очень просто: пишешь боту сообщение на исходном языке - он тебе отвечает переводом.&lt;/p&gt;
&lt;p&gt;Очень удобно так же и то, что бота можно добавить в групповой чат, и тогда участники чата, разговаривающие на разных языках, будут тут же видеть перевод сообщения оппонента на их родной язык.&lt;/p&gt;
&lt;p&gt;Полный список ботов приведен на странице &lt;a href="http://www.google.com/support/talk/bin/answer.py?hl=en&amp;amp;answer=89921"&gt;http://www.google.com/support/talk/bin/answer.py?hl=en&amp;amp;answer=89921.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Приятного вам общения!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/VGoLlRcrv_Y" height="1" width="1"/&gt;</description> 
    <pubDate>Wed, 12 Jan 2011 13:27:52 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2011/google-talk-translation-bots.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2011/google-talk-translation-bots.html</feedburner:origLink></item> 
<item> 
    <title>Кинобаза</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/iTZ7QhQ_FzY/kinobaza-tv.html</link> 
    <description>&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/kinobaza-logo.png" rel="lightbox[s108s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/fbf6134216b297d2405752a31777e096.5b3b34cc796968d1d0a5dd01f7a06bbf.png"/&gt;
    &lt;/a&gt;Незадолго до Нового года, благодаря публикации на хабре, я познакомился с замечательным сервисом &lt;strong&gt;&lt;a href="http://kinobaza.tv" target="_blank"&gt;kinobaza.tv&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Уже давно в моей голове сидела мысль, что было бы неплохо как-то отмечать просмотренные фильмы, рейтинговать их и иметь возможность получать рекоммендации на основе уже сделанных мной оценок. И Кинобаза оказалась как раз тем самым и даже больше. Ключевыми моментами сервиса являются:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;возможность получать рекоммендации&lt;/li&gt;
&lt;li&gt;находить источники для скачивания&lt;/li&gt;
&lt;li&gt;получать уведомления о появлении фильма в сети или скором выходе эпизода сериала&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/kinobaza1.png" rel="lightbox[s108s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/907bdc25216323b486f8ff6435460fe3.5b3b34cc796968d1d0a5dd01f7a06bbf.png"/&gt;
    &lt;/a&gt;Очень порадовал пользовательский интерфейс и продуманность многих реакций сайта на действия пользователя. Так, например, если я искал какой-либо фильм и потом скачал .torrent файл с ним, то в разделе &lt;strong&gt;Мои фильмы&lt;/strong&gt; на главной странице появится строка, в которой я могу его оценить. Таким образом довольно сложно забыть проставить оценку просмотренному фильму. Так же в этом разделе отображаются и более оффлайновые события с фильмами, которые я отметил как подлежащие просмотру: выход DVD или Blu-ray.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2011/kinobaza2.png" rel="lightbox[s108s]" class="imgr"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/89034185549599e392025ff616a0bd6d.5b3b34cc796968d1d0a5dd01f7a06bbf.png"/&gt;
    &lt;/a&gt;На странице с фильмом приведена вся необходимая информация: дата выхода, оценки IMDB и пользователей Кинобазы, прогноз моей оценки (удивительно, но в большинстве случаев он совпадал с моей оценкой!), продолжительность, жанры, быстрый переход к поиску источников или просмотру онлайн (реализовано через поиск в видеозаписях ВКонтакте, так что качество оставляет желать лучшего), описание, актерский состав и т.д. Отдельно меня радует слайдер действий для фильма (хочу посмотреть, смотрел, не хочу смотреть).&lt;/p&gt;
&lt;p&gt;На закладке &lt;strong&gt;Скачать&lt;/strong&gt; приведен список торрентов, с указанием качества, количеством сидов/пиров, типом перевода, размером файла. По всем этим параметрам можно быстро и легко отфильтровать результаты. Так же, при выставлении фильму статуса "&lt;strong&gt;хочу посмотреть&lt;/strong&gt;" можно сразу подписаться на получение уведомлений о появлении фильма в сети, что, на мой взгляд, очень и очень удобно.&lt;/p&gt;
&lt;p&gt;Хочу заметить, что на сайте имеется возможность улучшить свой аккаунт за небольшое вознаграждение. Что самое классное - так это то, что размер вознаграждения не ограничен ни с верху ни с низу! И хотя потребность в улучшенном аккаунте может у вас и не возникнуть, чтобы оценить его бесплатно, можно при регистрации на кинобазе указать промо-код: &lt;span style="color: #aaa;"&gt;&lt;strong&gt;bounz&lt;/strong&gt;&lt;/span&gt;. Это позволит вам в течении месяца пользоваться преимуществами улучшенного аккаунта. &lt;strong&gt;Внимание&lt;/strong&gt;: промо-код действителен до 12 января 2011 года. Успейте получить улучшенный аккаунт!&lt;/p&gt;
&lt;p&gt;В общем, сервис удался и я им с удовольствием пользуюсь. Желаю команде кинобазы дальнейшего развития, роста и процветания их сервиса!&lt;/p&gt;
&lt;p&gt;P.S. Срок действия моего промо-кода кончился. Однако, вы можете создать свой собственный промо-код и использовать его для себя и своих друзей! Подробнее читайте на &lt;a href="http://kinobaza.tv/help/blogger-special"&gt;http://kinobaza.tv/help/blogger-special&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/iTZ7QhQ_FzY" height="1" width="1"/&gt;</description> 
    <pubDate>Sun, 09 Jan 2011 02:07:00 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2011/kinobaza-tv.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2011/kinobaza-tv.html</feedburner:origLink></item> 
<item> 
    <title>Определение размеров экрана в JavaScript и IE</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/OOZfOY0CQ0M/screen-resolution-in-javascript-and-ie.html</link> 
    <description>&lt;p&gt;При разработке web-приложений порой возникает необходимость определить размер экрана, на котором открыт браузер, и в зависимости от полученных результатов что либо изменить. Конкретно в моем случае была необходимость изменения расположения элементов интерфейса плеера курсов системы дистанционного обучения, написанного на Silverlight. Т.к. сам Silverlight средств для определения размеров экрана не предоставляет, пришлось использовать возможности JavaScript и обращаться к странице, на которой Silverlight-приложение было расположено.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;var screenHeight = HtmlPage.Window.Eval("screen.height");&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Приложение сделано таким образом, что если размеров экрана достаточно, то управляющие элементы выводятся в нижней части, а если экран по высоте мал (как, например, часто бывает на ноутбуках, где любят ставить широкоформатные дисплеи) - то они выводятся сбоку.&lt;/p&gt;
&lt;p&gt;Вчера у нас была презентация системы для руководства, при этом в переговорной был установлен ноутбук, а к нему подключен проектор. Из браузеров - только Internet Explorer 8. Т.к. разрешение экрана ноутбука по высоте невелико, то, естественно, управляющие элементы расположились по второму варианту. Но мы то хотим чтобы все было красиво! Подумалось, что для экрана, коим является проектор, можно установить свое разрешение, и, по идее, места должно хватить для расположения кнопок управления внизу. Но не тут-то было. После перетаскивания окна браузера на второй экран, и работы с него, приложение в Internet Explorer упорно открывалось в компактном варианте. Бред, да и только. Дальнейшие эксперименты пришлось отложить из-за начала доклада.&lt;/p&gt;
&lt;p&gt;Но сегодня я решил проверить, как работают функции определения размеров экрана в разных браузерах, благо на работе к компьютеру подключено два монитора. Создал тестовую страничку, в которую вставил небольшой javascript код, выводящий информацию о размерах экрана:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;    setInterval(function () {&lt;br /&gt;        var el = document.getElementById('test');&lt;br /&gt;        el.innerHTML = 'height = ' + screen.height + '&amp;lt;br/&amp;gt;aH = ' + screen.availHeight;&lt;br /&gt;    }, 500);&lt;br /&gt; &amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;изменил разрешение одного из мониторов - и о чудо! В нормальных браузерах, таких как Google Chrome и Mozilla Firefox цифры менялись, при перетаскивании окна с экрана на экран. В IE - нет. Причем попробовал как в IE8, так и в IE9 Beta - результат одинаково отрицательный.&lt;/p&gt;
&lt;p&gt;Чтобы все это мое исследование не осталось на только на уровне слов и моего знания - написал баг-репорт по этому поводу. Будем надеяться, к релизу IE9 эту ошибку исправят.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/OOZfOY0CQ0M" height="1" width="1"/&gt;</description> 
    <pubDate>Thu, 23 Dec 2010 16:13:00 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2010/screen-resolution-in-javascript-and-ie.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2010/screen-resolution-in-javascript-and-ie.html</feedburner:origLink></item> 
<item> 
    <title>Настройка Mercurial в связке с IIS6</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/LsX3np91Ot8/setting-up-mercurial-with-iis6.html</link> 
    <description>&lt;p&gt;Слушая весной подкаст UTP от Umputun'а, я не думал, что спустя всего полгода реально оценю всю прелесть распределенных систем контроля версий и в частности - &lt;strong&gt;Mercurial&lt;/strong&gt;. Для начала я опробовал его дома для личных проектов, потом настроил для них связку с BitBucket, что придало мне еще больше восторга из-за встроенного баг-трекера и вики. И вот, наконец, я решил заменить им на работе порядком поднадоевший SVN.&lt;/p&gt;
&lt;p&gt;Заменил волевым усилием, перенеся стабильную версию проектов без сохранения истории правок в SVN. Потом встал вопрос о создании центрального репозитория для более удобной командной работы. Создать репозиторий - очень просто, но захотелось организовать еще какой-нибудь web-интерфейс для всех репозиторев, чтобы визуально наблюдать за процессом разработки и иметь централизованные адреса для push/pull.&lt;/p&gt;
&lt;p&gt;Беглый поиск по интернету дал результат: есть встроенный в Mercurial web-сервер, который может хостить один репозиторий. Для того, чтобы разместить несколько репозиториев по одному адресу - нужны дополнительные пляски с бубном. Тот же поиск вывел на несколько записей с инструкциями для более ранних версий &lt;strong&gt;Mercurial&lt;/strong&gt; (например 1.4.3), который можно было скачать отдельно от &lt;strong&gt;TortoiseHg&lt;/strong&gt; и в состав которого входил скрипт &lt;strong&gt;hgwebdir.cgi&lt;/strong&gt;. У меня же была установлена последняя версия меркуриала 1.7.2 вместе с &lt;strong&gt;TortoiseHg&lt;/strong&gt; 1.1.7, в котором данного скрипта нет. Путем проб и ошибок я смог настроить работу Mercurial с &lt;strong&gt;IIS6&lt;/strong&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Итак, для начала нам понадобится скачать сам &lt;a href="http://tortoisehg.bitbucket.org/" target="_blank"&gt;TortoiseHg&lt;/a&gt; и &lt;a href="http://python.org/" target="_blank"&gt;Python&lt;/a&gt; (если он не установлен на вашем сервере). Я использовал Python 2.7.1. Устанавливаем их с настройками по умолчанию.&lt;/li&gt;
&lt;li&gt;Создаем папку, в которой будет обитать веб сервис.&lt;/li&gt;
&lt;li&gt;Скачиваем исходники &lt;a href="http://mercurial.selenic.com/downloads/" target="_blank"&gt;Mercurial&lt;/a&gt; - &lt;strong&gt;Mercurial 1.7.2 source release&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Содержимое архива распаковываем в созданную папку. Таким образом, в корне этой папки окажется файлик &lt;strong&gt;hgweb.cgi&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Открываем Менеджер IIS из средств Администрирования&lt;/li&gt;
&lt;li&gt;Создаем новый сайт, либо, как делал я, создаем виртуальную директорию в уже существующем сайте и настраиваем ее путь к ранее созданной папке.&lt;/li&gt;
&lt;li&gt;В свойствах сайта/виртуальной директории открываем закладку &lt;em&gt;Home Directory&lt;/em&gt; или &lt;em&gt;Virtual Directory.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Жмем кнопку &lt;em&gt;Configuration.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;На закладке &lt;em&gt;Mappings&lt;/em&gt; жмем кнопку &lt;em&gt;Add.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Вводим расширение файла &lt;em&gt;.cgi&lt;/em&gt;, исполняемый файл - &lt;em&gt;&amp;lt;&lt;em&gt;PythonInstallDir&lt;/em&gt;&amp;gt;\python.exe -u "%s"&lt;/em&gt;. Отмечаем галочку &lt;em&gt;Script engine&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Жмем &lt;em&gt;OK&lt;/em&gt;, &lt;em&gt;OK&lt;/em&gt;, &lt;em&gt;OK&lt;/em&gt;, тем самым закрывая окна и возвращаясь непосредственно к менеджеру IIS.&lt;/li&gt;
&lt;li&gt;Выбираем узел дерева Web Service Extensions&lt;/li&gt;
&lt;li&gt;Жмем на нем правой кнопкой мыши и выбираем пункт Add a new Web service extension&lt;/li&gt;
&lt;li&gt;В появившемся окне вводит имя расширения (например Python) и жмем кнопку Add для добавления файлов расширения.&lt;/li&gt;
&lt;li&gt;Выбираем файл python.exe и прописываем параметры вызова. Должно получиться вот так: &lt;em&gt;&amp;lt;PythonInstallDir&amp;gt;\python.exe -u "%s"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Ставим галочку &lt;em&gt;Allowed&lt;/em&gt; и жмем &lt;em&gt;OK&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Закрываем Менеджер IIS.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Теперь все должно работать. Однако, надо еще сконфигурировать web-сервис меркуриала. Для этого в папке, в которой лежит файл скрипта hgweb.cgi создаем файл &lt;strong&gt;hgweb.config&lt;/strong&gt; с примерно следующим содержанием:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[collections]&lt;br /&gt;D:\RepositoriesHG\ = D:\RepositoriesHG\&lt;br /&gt;&lt;br /&gt;[web]&lt;br /&gt;style = monoblue&lt;br /&gt;push_ssl = false&lt;br /&gt;allow_push = *&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;В данном конфиге я указываю не конкретные репозитории, которые хочу сделать доступными через Web, а папку, в которой они все находятся. Для этого служит секция [collections]. В секции [web] задается стиль отображения web-приложения, а также разрешение пушить всем, без необходимости использования SSL.&lt;/p&gt;
&lt;p&gt;Финальным этапом необходимо указать меркуаловскому сервису на файл конфигурации. Для этого правим файл &lt;strong&gt;hgweb.cgi&lt;/strong&gt;, изменяя путь, указанный в свойстве config, например:&lt;/p&gt;
&lt;code&gt;config = "C:\Mercurial\hgweb.config"&lt;/code&gt;
&lt;p&gt;Надеюсь данная статья будет полезна и сэкономит вам время на решение вопросов по настройке доступа к репозиториям через web-интерфейс.&lt;/p&gt;
&lt;ol&gt;
&lt;/ol&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/LsX3np91Ot8" height="1" width="1"/&gt;</description> 
    <pubDate>Fri, 17 Dec 2010 15:10:00 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2010/setting-up-mercurial-with-iis6.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2010/setting-up-mercurial-with-iis6.html</feedburner:origLink></item> 
<item> 
    <title>Русская локализация DOCman 1.4.0 Stable в utf8</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/bC2IN0Bi1V0/docman-140-rus-utf8.html</link> 
    <description>&lt;p&gt;Русская локализация для DOCman 1.4.0 Stable в нормальном utf8.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/bC2IN0Bi1V0" height="1" width="1"/&gt;</description> 
    <pubDate>Sat, 11 Dec 2010 16:16:21 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/downloads/my-programs/docman-140-rus-utf8.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/downloads/my-programs/docman-140-rus-utf8.html</feedburner:origLink></item> 
<item> 
    <title>Time Machine v1.1</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/E13UELuSdIc/timemachine11.html</link> 
    <description>&lt;p&gt;Новая версия программы Time Machine. Теперь появилась возможность создавать текстовые заметки с событиями к датам, чтобы в последствии можно было легко вспомнить, что происходило в этот день. &lt;/p&gt;
&lt;p&gt;Time Machine - простая программка, позволяющая быстро и легко отсчитывать даты в 9, 40 и 49 дней от заданной даты в любую сторону.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/E13UELuSdIc" height="1" width="1"/&gt;</description> 
    <pubDate>Sat, 11 Dec 2010 16:14:31 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/downloads/my-programs/timemachine11.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/downloads/my-programs/timemachine11.html</feedburner:origLink></item> 
<item> 
    <title>Быстрорастворимый чай</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/O-HiWYVgvS8/instant-tea.html</link> 
    <description>&lt;p&gt;    &lt;a href="http://bounz.net/photos/2010/tea1.jpg" rel="lightbox[s51s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/ca428cd1907989f69eb1aa3fd237f130.5b3b34cc796968d1d0a5dd01f7a06bbf.jpg"/&gt;
    &lt;/a&gt;Во время поездкт в Лондон мы познакомились с таким необычным для нас продуктом как &lt;strong&gt;быстрорастворимый чай&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Как и всем путешествующим в заморские страны, нам надо было купить подарков для друзей, родственников и т.д. Во время одной из многочисленных прогулок мы наткнулись на замечательный магазин "Whittard of Chelsea", в котором представлены разнообразные чаи, кофе, горячий шоколад, а также различные акксесуары для них. Там так же предлагались на пробу различные чаи и они нам понравились. Решили купить в качестве подарка. Но, как и полагается подаркам, до возвращения в Москву мы не открывали банку с чаем.&lt;/p&gt;
&lt;p&gt;    &lt;a href="http://bounz.net/photos/2010/tea2.jpg" rel="lightbox[s51s]" class="imgl"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/97cf09cc107bcf6e31e7102f67bb8254.0d33797dd0ade3e04e69dbe58adce651.jpg"/&gt;
    &lt;/a&gt;    &lt;a href="http://bounz.net/photos/2010/tea3.jpg" rel="lightbox[s51s]" class="imgr"&gt;
        &lt;img src="http://bounz.net//assets/components/phpthumbof/cache/55b66807157971f9eee64bde19005080.b4abf324c6a9f176530b39f8b86e1838.jpg"/&gt;
    &lt;/a&gt;Какого же было наше удивление, когда внутри мы обнаружили не чайный листья, и даже не гранулы и не пакетики, а что-то структуре похожее на сахарный песок. Почитав еще раз банку и инструкцию по завариванию нашли, что это не чай, а чайный напиток, и заваривать его нужно просто разводя горячей или прохладной водой. По вкусу - прямо как в магазине, так что все честно и вкусно. Теперь у нас полке есть не только бытрорастворимый кофе но и чай.&lt;img src="http://bs.yandex.ru/resource/spacer.gif?sign=1347161.86717737.1292308547.3903b3b12ee0a88baa2c8347e7454ecc" alt="" width="1" height="1" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/O-HiWYVgvS8" height="1" width="1"/&gt;</description> 
    <pubDate>Sat, 11 Dec 2010 15:56:00 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/blog/2010/instant-tea.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/blog/2010/instant-tea.html</feedburner:origLink></item> 
<item> 
    <title>ArtzMania Graffiti Issue</title> 
    <link>http://feedproxy.google.com/~r/bounz-main-feed/~3/Iy3lK2GYNXA/artzmania-graffiti-issue.html</link> 
    <description>&lt;p&gt;Интерактивная версия отличного журнала по графическому дизайну &lt;strong&gt;ArtzMania&lt;/strong&gt;. Выпуск ArtzMania Graffiti Issue. Формат - PDF.&lt;/p&gt;
&lt;p&gt;Домашняя страница: &lt;a href="http://artzmania.com" target="_blank"&gt;http://artzmania.com&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style="font-size: larger; text-decoration: underline;"&gt;Лицензия на документ&lt;/span&gt;&lt;/p&gt;
&lt;div class="dm_license_body"&gt;
&lt;p&gt;&lt;em&gt;Скачивая данный файл с этого сайта вы принимаете на себя обязательство не использовать возможности, полученные путем обладания данным файлом, в коммерческих целях без разрешения на то владельца авторских прав на данный материал.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Данный материал размещен на данном сайте исключительно для ознакомительных целей.&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bounz-main-feed/~4/Iy3lK2GYNXA" height="1" width="1"/&gt;</description> 
    <pubDate>Fri, 10 Dec 2010 23:38:00 +0300</pubDate> 
    <guid isPermaLink="false">http://bounz.net/downloads/books-and-magazines/art-design-graffiti/artzmania-graffiti-issue.html</guid> 
    <dc:creator>Bounz</dc:creator> 
<feedburner:origLink>http://bounz.net/downloads/books-and-magazines/art-design-graffiti/artzmania-graffiti-issue.html</feedburner:origLink></item> 
    </channel> 
</rss>

