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

<channel>
	<title>olex.biz &#187; Olexandr Savchuk</title>
	<atom:link href="http://olex.biz/author/olex/feed/" rel="self" type="application/rss+xml" />
	<link>http://olex.biz</link>
	<description>Сайт студента факультета информатики и просто хорошего человека</description>
	<lastBuildDate>Tue, 07 Feb 2012 14:15:59 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Цитатник &#8211; мое приложение для Android</title>
		<link>http://olex.biz/android/quoter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quoter</link>
		<comments>http://olex.biz/android/quoter/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 00:00:24 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[код]]></category>
		<category><![CDATA[юмор]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=202</guid>
		<description><![CDATA[Android Market: Quoter Смешные цитаты со множества сайтов. Идеальное времяпровождение в очередях, транспорте и т.д. - Возможность выбора любимых цитатников - Сохранение страниц для чтения оффлайн - Отправка цитат через СМС, электропочту, Facebook и т.д. Рекламу в приложении можно отключить в настройках. Но если вам нравится мое приложение и вы хотели бы поддержать меня как [...]]]></description>
			<content:encoded><![CDATA[<p>
<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh3.ggpht.com/-dITD9nIhKhY/TzCDPvWcW_I/AAAAAAAACzw/CA4kqloFSJs/1.jpg?imgmax=800" rel="lightbox[2012-1-2-2-53-55]"><img src="http://lh3.ggpht.com/-dITD9nIhKhY/TzCDPvWcW_I/AAAAAAAACzw/CA4kqloFSJs/1.jpg?imgmax=144" alt="1.jpg" width="86" height="144" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/-1hdIlABv_Mg/TzCDQfD6iqI/AAAAAAAACz4/gjcOlThmHmQ/2.jpg?imgmax=800" rel="lightbox[2012-1-2-2-53-55]"><img src="http://lh4.ggpht.com/-1hdIlABv_Mg/TzCDQfD6iqI/AAAAAAAACz4/gjcOlThmHmQ/2.jpg?imgmax=144" alt="2.jpg" width="86" height="144" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh5.ggpht.com/--dPWhxXMRWE/TzCDQ_dJaEI/AAAAAAAAC0E/z4ahSJdo4xI/3.jpg?imgmax=800" rel="lightbox[2012-1-2-2-53-55]"><img src="http://lh5.ggpht.com/--dPWhxXMRWE/TzCDQ_dJaEI/AAAAAAAAC0E/z4ahSJdo4xI/3.jpg?imgmax=144" alt="3.jpg" width="86" height="144" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh6.ggpht.com/-Z_1PEw-6ATA/TzCDRnhj4yI/AAAAAAAAC0M/Wen8lpx4T64/4.jpg?imgmax=800" rel="lightbox[2012-1-2-2-53-55]"><img src="http://lh6.ggpht.com/-Z_1PEw-6ATA/TzCDRnhj4yI/AAAAAAAAC0M/Wen8lpx4T64/4.jpg?imgmax=144" alt="4.jpg" width="86" height="144" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh5.ggpht.com/-zXBUt6CO_8M/TzCDSp-OguI/AAAAAAAAC0Q/uNBAb3olDLs/6.jpg?imgmax=800" rel="lightbox[2012-1-2-2-53-55]"><img src="http://lh5.ggpht.com/-zXBUt6CO_8M/TzCDSp-OguI/AAAAAAAAC0Q/uNBAb3olDLs/6.jpg?imgmax=144" alt="6.jpg" width="86" height="144" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/-Nxv8AxWIj34/TzCDSJ-Ts7I/AAAAAAAAC0U/Qa67up7_KUQ/5.jpg?imgmax=800" rel="lightbox[2012-1-2-2-53-55]"><img src="http://lh4.ggpht.com/-Nxv8AxWIj34/TzCDSJ-Ts7I/AAAAAAAAC0U/Qa67up7_KUQ/5.jpg?imgmax=144" alt="5.jpg" width="86" height="144" class="pie-img"/></a></p>
</div>
</div>
<p><a href="https://market.android.com/details?id=biz.olex.android.quoter">Android Market: Quoter</a></p>
<p>Смешные цитаты со множества сайтов. Идеальное времяпровождение в очередях, транспорте и т.д. </p>
<p>- Возможность выбора любимых цитатников<br />
- Сохранение страниц для чтения оффлайн<br />
- Отправка цитат через СМС, электропочту, Facebook и т.д.</p>
<p>Рекламу в приложении можно отключить в настройках. Но если вам нравится мое приложение и вы хотели бы поддержать меня как разработчика, пожалуйста оставьте ее включенной. Спасибо <img src='http://olex.biz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Любые комментарии и предложения с радостью принимаются здесь или по электропочте.</p>
<p>Цитатники на русском и украинском:<br />
- bash.org.ru: последние, случайные, бездна, лучшее бездны, с поддержкой страниц!<br />
- ibash.org.ru<br />
- ithappens.ru<br />
- zadolba.li<br />
- bash.bynets.org (бывший bash.org.by)<br />
- ukrbash.org<br />
- killmepls.ru<br />
- nefart.ru<br />
- uebalby.com</p>
<p><span id="more-202"></span></p>
<p>Цитатники на английском:<br />
- bash.org: latest, random, random >0, top100<br />
- qdb.us<br />
- fmylife.com</p>
<p>Цитатники на немецком:<br />
- german-bash.org: latest, random<br />
- ibash.de<br />
- swissbash.ch<br />
- abash.at<br />
- SMSvonGesternNacht<br />
- school-bash.org</p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fandroid%2Fquoter%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/android/quoter/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/android/quoter/"  data-text="Цитатник &#8211; мое приложение для Android" data-count="horizontal" data-via="olex"></a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/android/quoter/feed/langswitch_lang/ru/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Пакетная обработка изображений в Picasa с помощью ImageMagick</title>
		<link>http://olex.biz/software/using-imagemagick-for-batch-image-processing-in-picasa/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=using-imagemagick-for-batch-image-processing-in-picasa</link>
		<comments>http://olex.biz/software/using-imagemagick-for-batch-image-processing-in-picasa/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 13:23:41 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[Софт]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[код]]></category>
		<category><![CDATA[сделай сам]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=283</guid>
		<description><![CDATA[В нашем офисе мы используем Google Picasa для обработки множества сканов и фотографий. Мы используем Picasa уже несколько лет и очень довольны. Однако, Picasa не предоставляет всех необходимых нам функций, а некоторые слишком сложно использовать при нашем объеме работ. Чтобы упростить нашим сотрудникам задачу, я использовал два основных компонента: набор консольных утилит ImageMagick для обработки [...]]]></description>
			<content:encoded><![CDATA[<p>В нашем офисе мы используем <a href="http://picasa.google.com/" title="Google Picasa" target="_blank">Google Picasa</a> для обработки множества сканов и фотографий. Мы используем Picasa уже несколько лет и очень довольны. Однако, Picasa не предоставляет всех необходимых нам функций, а некоторые слишком сложно использовать при нашем объеме работ. Чтобы упростить нашим сотрудникам задачу, я использовал два основных компонента: набор консольных утилит <a href="http://www.imagemagick.org/script/index.php" title="ImageMagick" target="_blank">ImageMagick</a> для обработки изображений, и <a href="http://code.google.com/intl/de-DE/apis/picasa/docs/button_api.html" title="Picasa Button API" target="_blank">Picasa Button API</a>.</p>
<p>
<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh5.ggpht.com/-LuA0LAXr5NI/Ti89NnP_7BI/AAAAAAAACfA/byANL2PndxE/stitcher-2.JPG?imgmax=800" rel="lightbox[2011-6-3-0-17-16]"><img src="http://lh5.ggpht.com/-LuA0LAXr5NI/Ti89NnP_7BI/AAAAAAAACfA/byANL2PndxE/stitcher-2.JPG?imgmax=144" alt="stitcher-2.JPG" width="144" height="80" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh3.ggpht.com/-WznaqfgnYIU/Ti887FF7BtI/AAAAAAAACes/vlR8r2ESnuk/2008%252520C-Class%2525204matic%252520007.jpg?imgmax=800" rel="lightbox[2011-6-3-0-17-16]"><img src="http://lh3.ggpht.com/-WznaqfgnYIU/Ti887FF7BtI/AAAAAAAACes/vlR8r2ESnuk/2008%252520C-Class%2525204matic%252520007.jpg?imgmax=144" alt="2008 C-Class 4matic 007.jpg" width="144" height="108" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh5.ggpht.com/-xWzI2yvRZH8/Ti8870LCLUI/AAAAAAAACew/_fKDGDoZaXE/2008%252520C-Class%2525204matic%252520009.jpg?imgmax=800" rel="lightbox[2011-6-3-0-17-16]"><img src="http://lh5.ggpht.com/-xWzI2yvRZH8/Ti8870LCLUI/AAAAAAAACew/_fKDGDoZaXE/2008%252520C-Class%2525204matic%252520009.jpg?imgmax=144" alt="2008 C-Class 4matic 009.jpg" width="144" height="108" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/-9MEdtqyDDlU/Ti888kdWSQI/AAAAAAAACe0/bOke1AGxoy0/Collage%252520000814.jpg?imgmax=800" rel="lightbox[2011-6-3-0-17-16]"><img src="http://lh4.ggpht.com/-9MEdtqyDDlU/Ti888kdWSQI/AAAAAAAACe0/bOke1AGxoy0/Collage%252520000814.jpg?imgmax=144" alt="Collage 000814.jpg" width="96" height="144" class="pie-img"/></a></p>
</div>
</div>
<p>В качестве примера я опишу небольшое приложение, которое мы используем для совмещения нескольких изображений в одно одним кликом прямо из интерфейса Picasa. Немного разобравшись с ImageMagick, можно легко модифицировать этот код для других задач.</p>
<p><span id="more-283"></span></p>
<p><b>Часть 1: кнопка в Picasa</b></p>
<p>Сначала нам понадобится кнопка в интерфейсе Picasa, которая будет запускать наш ImageMagick-скрипт. Чтобы создать такую кнопку средствами Button API, делаем следующие шаги:</p>
<ol>
<li>
<p><strong>Пишем файл <em>PBF</em>.</strong><br />
<em>PBF</em> &#8211; по сути простой XML файл, описывающий нашу кнопку. Вот код моего <em>PBF</em> файла:</p>
<pre name="code" class="xml">
&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;buttons format="1" version="1"&gt;
  &lt;button id="{ca234ae3-6340-40c3-a46b-51a126bb887c}" type="dynamic"&gt;
    &lt;label&gt;Combine&lt;/label&gt;
    &lt;tooltip&gt;Combine images vertically and save as a new image&lt;/tooltip&gt;
    &lt;action verb="trayexec"&gt;
      &lt;param name="exe_name" value="stitch.cmd" /&gt;
      &lt;param name="exe_path" value="S:\Tools\" /&gt;
    &lt;/action&gt;
  &lt;/button&gt;
&lt;/buttons&gt;
</pre>
<p>Хотя весь коd заключен в контейнер <code>buttons</code>, в одном файле можно описать только одну кнопку.</p>
<p>Обратим внимание на <a href="http://ru.wikipedia.org/wiki/GUID" title="GUID на Wikipedia" target="_blank">GUID</a> в аттрибуте <code>button/id</code>. Для каждой кнопки нужно сгенерировать свой GUID. Также название PBF файла включает в себя этот GUID, <code>{ca234ae3-6340-40c3-a46b-51a126bb887c}.pbf</code> в моем примере.</p>
<p>Элементы <code>label</code> и <code>tooltip</code> особого объяснения не требуют. Следующий важный элемент &#8211;  <code>action</code>; в нем описано, что произойдет при нажатии нашей кнопки. Picasa Button API предоставляет несколько разных функций; мы же используем простой запуск исполняемого файла, который запустит скрипт по имени <code>stitch.cmd</code>, находящийся в <code>S:\Tools\</code> (в нашем офисе, S:\ &#8211; расшаренный диск на сервере). Сам скрипт я объясню в дальнейшем.
</li>
<li>
<p><em>(необязательно)</em> <strong>Рисуем иконку.</strong><br />
Можно включить собственную иконку для нашей кнопки. Иконка должна быть в <em>PSD</em> файле, названном по той же схеме с GUID (<code>{ca234ae3-6340-40c3-a46b-51a126bb887c}.psd</code> в моем примере), в одном слое. При использовании иконки, требуется включить дополнительную строку в <em>PBF</em>, внутри элемента <code>button</code>:<br />
<code>&lt;icon name="{ca234ae3-6340-40c3-a46b-51a126bb887c}.psd/layer" src="pbz"/&gt;</code>
</li>
<li>
<p><strong>Пакуем кнопку в <em>PBZ</em>.</strong><br />
<em>PBZ</em> есть ничто иное, как обычный ZIP архив, содержащий наш <em>PBF</em> (и PSD с иконкой, если мы ее используем), с расширением <code>.pbz</code>. Этот файл является инсталляционным пакетом нашей кнопки для Picasa, так что его необходимо назвать со смыслом: Picasa различает дополнительные кнопки по именам их <em>PBZ</em> пакетов. В одном <em>PBZ</em> могут содержаться несколько <em>PBF</em> файлов для нескольких кнопок.
</li>
</ol>
<p><b>Часть 2: скрипт ImageMagick</b></p>
<p>Поскольку ImageMagick предоставляет консольные утилиты для обработки изображений, простейший способ его автоматизировать &#8211; bat-скрипты. Вот код моего скрипта <code>stitch.cmd</code>, который совмещает несколько изображений вертикально в одно:</p>
<pre name="code" class="c">
@echo off
cd /D "C:\Program Files\ImageMagick-6.7.1-Q16"

rem --- Output filename
set OUTFOLDER=%~dp1
set OUTFILENAME="%OUTFOLDER%Collage.jpg"

rem --- Imagemagick
for /f "delims=" %%a in ('identify -format "%%[fx:w]" %1') do @set WIDTH=%%a
montage -mode concatenate -resize %WIDTH% -tile 1x %* %OUTFILENAME%
</pre>
<p>Когда скрипт вызывается нажатием кнопки из Picasa, ему передаются полные имена файлов всех выбранных картинок как аргументы.</p>
<p>Сначала перейдем в папку, где установлен наш ImageMagick, чтобы избежать возможных проблем с PATH. Потом сгенерируем название готового изображения, взяв полный путь из первого файла (первый аргумент) и добавив собственное имя файла.</p>
<p>Теперь воспользуемся небольшим bat-хаком: с помощью <code>for</code>-петли считаем вывод команды (<code>identify</code> из пакета ImageMagick) в переменную. Это дает нам ширину первого изображения. Наконец, вызываем <code>montage</code> и с его помощью комбинируем все изображения в одно, передав команде все имена изображений и имя файла вывода.</p>
<p><b>Часть 3: установка</b></p>
<p>Установка кнопки в Picasa несколько нетривиальна. Picasa не позволяет установить PBZ напрямую, только через специальный URL из браузера. Нужно расположить наш PBZ так, чтобы он был доступен по ссылке через <code>http://</code>; на моей системе установлен сервер для разработки, так что я воспользовался им. Вот код моего HTML-файла для установки кнопки:</p>
<pre name="code" class="html">
&lt;html&gt;
 &lt;body&gt;
  &lt;a href="picasa://importbutton/?url=http://localhost/olex-stitcher.pbz"&gt;Install&lt;/a&gt;
 &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Открываем файл в любом браузере и нажимаем на ссылку. Открывается Picasa и спрашивает, какие кнопки установить (выбор всего один, если в нашем PBZ одна кнопка), и как их расположить на панели кнопок. Делаем выбор и подтверждаем. Готово.</p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fsoftware%2Fusing-imagemagick-for-batch-image-processing-in-picasa%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/software/using-imagemagick-for-batch-image-processing-in-picasa/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/software/using-imagemagick-for-batch-image-processing-in-picasa/"  data-text="Пакетная обработка изображений в Picasa с помощью ImageMagick" data-count="horizontal" data-via="olex"></a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/software/using-imagemagick-for-batch-image-processing-in-picasa/feed/langswitch_lang/ru/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android: прокрутка ListView клавишами громкости</title>
		<link>http://olex.biz/android/scroll-listview-with-volume-keys/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=scroll-listview-with-volume-keys</link>
		<comments>http://olex.biz/android/scroll-listview-with-volume-keys/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 23:47:06 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[код]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=255</guid>
		<description><![CDATA[Basically, what you need to do is to override the <code>dispatchKeyEvent()</code> method in your Activity, and intercept key presses for the volume keys, leaving the other keys untouched. This is how I did it, fairly straightforward...]]></description>
			<content:encoded><![CDATA[<p>Прокрутка списка кнопками громкости в приложениях на Андроиде нa самом деле не является чем-то сложным. Не зная этого, вчера я потратил какое-то время в поисках хорошего руководства на эту тему. Написав код и опубликовав <a href="http://olex.biz/android/quoter">Quoter</a> в версии 1.0, я решил сам написать небольшую заметку об этом.</p>
<p>Итак, что нам нужно сделать, это переписать метод <code>dispatchKeyEvent()</code> в нашей Activity, и таким образом перехватить нажатия кнопок громкости.</p>
<pre name="code" class="java">@Override
public boolean dispatchKeyEvent(KeyEvent event) {
	if (event.getAction() == KeyEvent.ACTION_DOWN) {
		switch (event.getKeyCode()) {
		case KeyEvent.KEYCODE_VOLUME_UP:
			scrollToPrevious();
			return true;
		case KeyEvent.KEYCODE_VOLUME_DOWN:
			scrollToNext();
			return true;
		}
	}
	if (event.getAction() == KeyEvent.ACTION_UP
		&#038;&#038; (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP
			|| event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN)) {
		return true;
	}
	return super.dispatchKeyEvent(event);
}</pre>
<p>Наш код выполняется только на событии нажатия клавиш (<code>ACTION_DOWN</code>). Событие <code>ACTION_UP</code> перехватывается для того, чтобы предотвратить системный звук нажатия клавиши. Также проверяется <code>event.getKeyCode()</code>, и если нажата одна из нужных клавиш, вызываются соответствующие функции. В других случаях (другие события или клавиши) событие передается стандартному обработчику.</p>
<p>Теперь остались только собственно функции прокрутки <code>ListView</code>. Проблема с ними вот в чем. Можно прокрутить список в любую точку с помощью метода <code>scrollTo()</code>, но нам нужно перейти не к координатам, а к конкретному элементу списка &#8211; Quoter есть приложение для чтения, и читатель хочет перейти к следующей цитате. Вот что мы для этого можем сделать:</p>
<pre name="code" class="java">private void scrollToNext() {
	int currentPosition = getListView().getFirstVisiblePosition();
	if (currentPosition == getListView().getCount() - 1)
		return;
	getListView().setSelection(currentPosition + 1);
	getListView().clearFocus();
}

private void scrollToPrevious() {
	int currentPosition = getListView().getFirstVisiblePosition();
	if (currentPosition == 0)
		return;
	getListView().setSelection(currentPosition - 1);
	getListView().clearFocus();
}</pre>
<p>Вначале определяем позицию в списке первого видимого на экране элемента. Если это уже последний элемент в нужном направлении, ничего не делаем. В другом случае выставляем выбранный элемент списка на следующую позицию, при этом список прокручивается куда надо автоматически (как при навигации стрелками на клавиатуре). Единственная оставшаяся проблема: при выделении элемента списка он подсвечивается, что мешает читать. Снимаем выделение, убрав фокус со списка. Готово.</p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fandroid%2Fscroll-listview-with-volume-keys%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/android/scroll-listview-with-volume-keys/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/android/scroll-listview-with-volume-keys/"  data-text="Android: прокрутка ListView клавишами громкости" data-count="horizontal" data-via="olex"></a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/android/scroll-listview-with-volume-keys/feed/langswitch_lang/ru/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>OpenTTD WebConfig</title>
		<link>http://olex.biz/software/spiele/openttd-webconfig/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=openttd-webconfig</link>
		<comments>http://olex.biz/software/spiele/openttd-webconfig/#comments</comments>
		<pubDate>Sun, 10 Oct 2010 15:07:02 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[Игры]]></category>
		<category><![CDATA[openttd]]></category>
		<category><![CDATA[код]]></category>
		<category><![CDATA[игры]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=246</guid>
		<description><![CDATA[Система для настройки сервера OpenTTD через веб-интерфейс. Проверено и работает с OpenTTD 1.0.4, Apache2 и PHP 5.2.4 на Винде и Убунте. Должно работать везде, где есть PHP. Проэкт хостится на OpenTTDCoop DevZone: http://dev.openttdcoop.org/projects/ottd-webconfig]]></description>
			<content:encoded><![CDATA[<p>
<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh3.ggpht.com/_fCjhR7xUM2U/TLHRL96-zsI/AAAAAAAACKE/xR7DzrsTBXo/1.jpg?imgmax=800" rel="lightbox[2010-9-0-17-2-56]"><img src="http://lh3.ggpht.com/_fCjhR7xUM2U/TLHRL96-zsI/AAAAAAAACKE/xR7DzrsTBXo/1.jpg?imgmax=144" alt="1.jpg" width="144" height="101" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh6.ggpht.com/_fCjhR7xUM2U/TLHRMao76kI/AAAAAAAACKI/m240B2b0tOM/2.jpg?imgmax=800" rel="lightbox[2010-9-0-17-2-56]"><img src="http://lh6.ggpht.com/_fCjhR7xUM2U/TLHRMao76kI/AAAAAAAACKI/m240B2b0tOM/2.jpg?imgmax=144" alt="2.jpg" width="144" height="114" class="pie-img"/></a></p>
</div>
</div>
<p>Система для настройки сервера <a href="http://olex.biz/blog/software/spiele/openttd-junctions/">OpenTTD</a> через веб-интерфейс.</p>
<p>Проверено и работает с OpenTTD 1.0.4, Apache2 и PHP 5.2.4 на Винде и Убунте. Должно работать везде, где есть PHP.</p>
<p>Проэкт хостится на <em>OpenTTDCoop DevZone</em>:<br />
<a href="http://dev.openttdcoop.org/projects/ottd-webconfig">http://dev.openttdcoop.org/projects/ottd-webconfig</a></p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fsoftware%2Fspiele%2Fopenttd-webconfig%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/software/spiele/openttd-webconfig/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/software/spiele/openttd-webconfig/"  data-text="OpenTTD WebConfig" data-count="horizontal" data-via="olex"></a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/software/spiele/openttd-webconfig/feed/langswitch_lang/ru/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OpenTTD &#8211; Перекрестки и станции</title>
		<link>http://olex.biz/software/spiele/openttd-junctions/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=openttd-junctions</link>
		<comments>http://olex.biz/software/spiele/openttd-junctions/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 00:01:13 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[Игры]]></category>
		<category><![CDATA[openttd]]></category>
		<category><![CDATA[игры]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=241</guid>
		<description><![CDATA[OpenTTD — компьютерная игра, порт известной игры Transport Tycoon Deluxe. Собственнический двоичный код Transport Tycoon Deluxe был преобразован в код на C++ программистом Людвигом Стригеусом с помощью дизассемблера. OpenTTD является бесплатной и свободной программой, для работы можно использовать файлы данных от платной оригинальной Transport Tycoon Deluxe. Wikipedia Не прошло и пары лет, как я вновь [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>OpenTTD</strong> — компьютерная игра, порт известной игры Transport Tycoon Deluxe. Собственнический двоичный код Transport Tycoon Deluxe был преобразован в код на C++ программистом Людвигом Стригеусом с помощью дизассемблера. OpenTTD является бесплатной и свободной программой, для работы можно использовать файлы данных от платной оригинальной Transport Tycoon Deluxe.</p>
<div align="right"><i>Wikipedia</i></div>
</blockquote>
<p>Не прошло и пары лет, как я вновь начал играть в OpenTTD. Игра, как описано выше, представляет из себя открытый римейк досовской стратегии Transport Tycoon Deluxe. Цель игры &#8211; построить транспорную сеть поездов, грузовиков, кораблей и самолетов, перевозить дофига пассажиров и груза, и заработать больше денег чем конкуренты. Пара скриншотов для иллюстрации:</p>
<p>
<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/TKxqIOKXxfI/AAAAAAAACIE/Ms2UeH9_Bno/20091018_panswat_tongvorarat.jpg?imgmax=800" rel="lightbox[2010-9-3-14-25-56]"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/TKxqIOKXxfI/AAAAAAAACIE/Ms2UeH9_Bno/20091018_panswat_tongvorarat.jpg?imgmax=144" alt="20091018_panswat_tongvorarat.jpg" width="144" height="108" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/TKxqK6_cBwI/AAAAAAAACIQ/VkXd3vu92PI/20100313_rakim-89_d.jpg?imgmax=800" rel="lightbox[2010-9-3-14-25-56]"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/TKxqK6_cBwI/AAAAAAAACIQ/VkXd3vu92PI/20100313_rakim-89_d.jpg?imgmax=144" alt="20100313_rakim-89_d.jpg" width="144" height="82" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh6.ggpht.com/_fCjhR7xUM2U/TKxqahEfLbI/AAAAAAAACIY/tcshbpr1n10/20090821_luuk_de_vries.jpg?imgmax=800" rel="lightbox[2010-9-3-14-25-56]"><img src="http://lh6.ggpht.com/_fCjhR7xUM2U/TKxqahEfLbI/AAAAAAAACIY/tcshbpr1n10/20090821_luuk_de_vries.jpg?imgmax=144" alt="20090821_luuk_de_vries.jpg" width="144" height="72" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh3.ggpht.com/_fCjhR7xUM2U/TKxqblRIjlI/AAAAAAAACIc/Z8GEs--bKdM/20090913_luuk_de_vries.jpg?imgmax=800" rel="lightbox[2010-9-3-14-25-56]"><img src="http://lh3.ggpht.com/_fCjhR7xUM2U/TKxqblRIjlI/AAAAAAAACIc/Z8GEs--bKdM/20090913_luuk_de_vries.jpg?imgmax=144" alt="20090913_luuk_de_vries.jpg" width="144" height="75" class="pie-img"/></a></p>
</div>
</div>
<p>Эффективные железнодорожные сети в игре могут быть очень сложными, с десятками станций и сотнями поездов. Такие сети невозможны без развязок на пересечениях линий, и поток поездов часто бывает ограничен именно ими. В этом посте я соберу несколько скриншотов моих развязок и станций, с целью, возможно, немного помочь другим игрокам.</p>
<p>
<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh3.ggpht.com/_fCjhR7xUM2U/TKxmNEKOFgI/AAAAAAAACH0/Uoo6umaDbHA/junction-3-t.jpg?imgmax=800" rel="lightbox[2010-9-3-16-3-9]" title="3-Lane ML T-Junction"><img src="http://lh3.ggpht.com/_fCjhR7xUM2U/TKxmNEKOFgI/AAAAAAAACH0/Uoo6umaDbHA/junction-3-t.jpg?imgmax=144" alt="3-Lane ML T-Junction" width="144" height="76" class="pie-img"/></a></p>
<p class="pie-caption" style="width:144;">3-Lane ML T-Junction</p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/TKxmPsGhZdI/AAAAAAAACH4/CjpNExCHbjM/junction-2-t.jpg?imgmax=800" rel="lightbox[2010-9-3-16-3-9]" title="2-Lane ML T-Junction"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/TKxmPsGhZdI/AAAAAAAACH4/CjpNExCHbjM/junction-2-t.jpg?imgmax=144" alt="2-Lane ML T-Junction" width="144" height="82" class="pie-img"/></a></p>
<p class="pie-caption" style="width:144;">2-Lane ML T-Junction</p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh6.ggpht.com/_fCjhR7xUM2U/TKxmRjkLQpI/AAAAAAAACH8/aZ58jqRrIJ8/junction-2-x.jpg?imgmax=800" rel="lightbox[2010-9-3-16-3-9]" title="2-Lane ML X-Junction"><img src="http://lh6.ggpht.com/_fCjhR7xUM2U/TKxmRjkLQpI/AAAAAAAACH8/aZ58jqRrIJ8/junction-2-x.jpg?imgmax=144" alt="2-Lane ML X-Junction" width="144" height="73" class="pie-img"/></a></p>
<p class="pie-caption" style="width:144;">2-Lane ML X-Junction</p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh5.ggpht.com/_fCjhR7xUM2U/TKyBiUA3WAI/AAAAAAAACJo/R2rqRRZ8jzI/station-entry-presignal-bypass.jpg?imgmax=800" rel="lightbox[2010-9-3-16-3-9]" title="Station entry, presignal"><img src="http://lh5.ggpht.com/_fCjhR7xUM2U/TKyBiUA3WAI/AAAAAAAACJo/R2rqRRZ8jzI/station-entry-presignal-bypass.jpg?imgmax=144" alt="Station entry, presignal" width="144" height="70" class="pie-img"/></a></p>
<p class="pie-caption" style="width:144;">Station entry, presignal</p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh3.ggpht.com/_fCjhR7xUM2U/TKyBjMr6m2I/AAAAAAAACJs/TunR41DgMh8/station-exit-presignal.jpg?imgmax=800" rel="lightbox[2010-9-3-16-3-9]" title="Station exit, multi-lane"><img src="http://lh3.ggpht.com/_fCjhR7xUM2U/TKyBjMr6m2I/AAAAAAAACJs/TunR41DgMh8/station-exit-presignal.jpg?imgmax=144" alt="Station exit, multi-lane" width="144" height="104" class="pie-img"/></a></p>
<p class="pie-caption" style="width:144;">Station exit, multi-lane</p>
</div>
</div>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fsoftware%2Fspiele%2Fopenttd-junctions%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/software/spiele/openttd-junctions/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/software/spiele/openttd-junctions/"  data-text="OpenTTD &#8211; Перекрестки и станции" data-count="horizontal" data-via="olex"></a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/software/spiele/openttd-junctions/feed/langswitch_lang/ru/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>День из жизни программиста</title>
		<link>http://olex.biz/blog/day-in-programmers-life/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=day-in-programmers-life</link>
		<comments>http://olex.biz/blog/day-in-programmers-life/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 18:35:34 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[юмор]]></category>
		<category><![CDATA[Блог]]></category>
		<category><![CDATA[код]]></category>
		<category><![CDATA[перевод]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=220</guid>
		<description><![CDATA[перевод картинки &#8211; &#169; ayambit]]></description>
			<content:encoded><![CDATA[<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh6.ggpht.com/_fCjhR7xUM2U/S5_LiJhigtI/AAAAAAAABv8/7BRGTOAwXHs/1178757.image.jpg" rel="lightbox[2010-2-2-19-20-0]"><img src="http://lh6.ggpht.com/_fCjhR7xUM2U/S5_LiJhigtI/AAAAAAAABv8/7BRGTOAwXHs/1178757.image.jpg?imgmax=200" alt="1178757.image.jpg" width="200" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/S5_LnB_UdiI/AAAAAAAABwE/AjPxMSOLkd0/300px-Challenge_vs_skill.svg.jpg?imgmax=800" rel="lightbox[2010-2-2-19-20-0]"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/S5_LnB_UdiI/AAAAAAAABwE/AjPxMSOLkd0/300px-Challenge_vs_skill.svg.jpg?imgmax=144" alt="300px-Challenge_vs_skill.svg.jpg" width="144" height="140" class="pie-img"/></a></p>
</div>
</div>
<p><em>перевод картинки &#8211; &copy; <a href="http://habrahabr.ru/blogs/humour/87759/">ayambit</a></em></p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fblog%2Fday-in-programmers-life%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/blog/day-in-programmers-life/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/blog/day-in-programmers-life/"  data-text="День из жизни программиста" data-count="horizontal" data-via="olex"></a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/blog/day-in-programmers-life/feed/langswitch_lang/ru/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Подсветка монитора на CCFL</title>
		<link>http://olex.biz/blog/ccfl-backlight/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ccfl-backlight</link>
		<comments>http://olex.biz/blog/ccfl-backlight/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 14:12:11 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[Железо]]></category>
		<category><![CDATA[сделай сам]]></category>
		<category><![CDATA[железо]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=211</guid>
		<description><![CDATA[Я часто работаю за компьютером в темноте, и мне известно, что это не очень полезно для глаз &#8211; смотреть в яркий монитор на темном фоне. Я смотрел разные варианты, в том числе и синюю подсветку на LED из Икеи на телевизоре у знакомого, но самому сделать что-то подобное никак не доходили руки. Одно время я [...]]]></description>
			<content:encoded><![CDATA[<p>Я часто работаю за компьютером в темноте, и мне известно, что это не очень полезно для глаз &#8211; смотреть в яркий монитор на темном фоне. Я смотрел разные варианты, в том числе и синюю подсветку на LED из Икеи на телевизоре у знакомого, но самому сделать что-то подобное никак не доходили руки. Одно время я даже просто заворачивал настольную лампу за монитор, имитируя &#8220;подсветку&#8221; &#8211; но это было не решение.</p>
<p>Решение же пришло само собой &#8211; на одном из сайтов, где я иногда покупаю разные железки, на главной странице я присмотрел пару CCFL (<a href="http://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D0%BB%D0%BE%D0%B4%D0%BD%D1%8B%D0%B9_%D0%BA%D0%B0%D1%82%D0%BE%D0%B4">http://ru.wikipedia.org/wiki/Холодный_катод</a>) за символическую сумму в 4,99€. Одной поездкой в магазин и потраченными еще 7€ позже я сижу в темноте и пишу этот текст с абсолютно не напряженными глазами <img src='http://olex.biz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-211"></span><br />
CCFL-ы, обладателем коих я внезапно стал, оказались фирмы Sharkoon, и шли в комплекте в выключателем, трансформатором и Y-кабелем для подключения их к блоку питания компьютера (в расчете на casemodder-ов):</p>
<p><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/S5lUie3VHzI/AAAAAAAABsk/SWqHGRgw0j4/DSC03289.JPG?imgmax=800" rel="lightbox[2010-2-5-15-7-0]"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/S5lUie3VHzI/AAAAAAAABsk/SWqHGRgw0j4/DSC03289.JPG?imgmax=144" alt="DSC03289.JPG" width="144" height="108" class="pie-img" style="margin:3px 3px 0px 0px;"/></a></p>
<p>&#8220;Это все хорошо&#8221;, подумал я, &#8220;но во-первых, как мне запитать их (компьютер-то под столом, а монитор сверху), а во-вторых, куда воткнуть выключатель, чтобы удобно было?&#8221;. Я решил удлинить кабель питания метра на два, а выключатель вместе со всеми проводами и трансформатором приделать туда же, куда и лампы &#8211; сзади монитора, так, чтобы его можно было переключать с нижней стороны. После этого я поехал и приобрел следующие вещи общей стоимостью в 7€:</p>
<p><a href="http://lh5.ggpht.com/_fCjhR7xUM2U/S5lUioXt3nI/AAAAAAAABso/wzX9Y4vNPKI/DSC03290.JPG?imgmax=800" rel="lightbox[2010-2-5-15-8-3]"><img src="http://lh5.ggpht.com/_fCjhR7xUM2U/S5lUioXt3nI/AAAAAAAABso/wzX9Y4vNPKI/DSC03290.JPG?imgmax=144" alt="DSC03290.JPG" width="144" height="108" class="pie-img" style="margin:3px 3px 0px 0px;"/></a></p>
<p>Для гениального плана потребовались: пластиковый &#8220;корпус&#8221; для проводов и выключателя, изолента, стяжки и зажимы для соединения проводов (паяльника у меня нет), ну и собственно моток двужильного провода.</p>
<p>Провод питания я разрезал сразу после ответвления от молекса, и с помощью зажимов снова соединил его двумя метрами своего провода. Удлинитель был готов. Выключатель же я воткнул в стенку &#8220;корпуса&#8221;, и внутрь спрятал зажимы и излишние провода.</p>
<p><a href="http://lh3.ggpht.com/_fCjhR7xUM2U/S5lUlhHX5DI/AAAAAAAABtM/BaDVSEOdRh8/DSC03299.JPG?imgmax=800" rel="lightbox[2010-2-5-15-8-17]"><img src="http://lh3.ggpht.com/_fCjhR7xUM2U/S5lUlhHX5DI/AAAAAAAABtM/BaDVSEOdRh8/DSC03299.JPG?imgmax=144" alt="DSC03299.JPG" width="144" height="108" class="pie-img" style="margin:3px 3px 0px 0px;"/></a></p>
<p>После этого я подключил трансформатор и лампы, и воткнул молекс в свободную ветку блока питания. Включаем. Работает!</p>
<p><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/S5lUm6XTsBI/AAAAAAAABtc/vGJLAWdvYRE/DSC03303.JPG?imgmax=800" rel="lightbox[2010-2-5-15-8-27]"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/S5lUm6XTsBI/AAAAAAAABtc/vGJLAWdvYRE/DSC03303.JPG?imgmax=144" alt="DSC03303.JPG" width="144" height="108" class="pie-img" style="margin:3px 3px 0px 0px;"/></a></p>
<p>Осталась мелочь &#8211; прикрепить все это сзади монитора. Корпус с выключателем я приклеил двухсторонним скотчем у нижней кромки &#8211; таким образом его удобно включать и выключать, и не видно спереди. А для трансформатора и ламп в комплекте шли липучки, которыми я и присоединил их.</p>
<p>
<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh5.ggpht.com/_fCjhR7xUM2U/S5lUn3dY3nI/AAAAAAAABto/0NfvmNaFZIQ/DSC03306.JPG?imgmax=800" rel="lightbox[2010-2-5-15-8-43]"><img src="http://lh5.ggpht.com/_fCjhR7xUM2U/S5lUn3dY3nI/AAAAAAAABto/0NfvmNaFZIQ/DSC03306.JPG?imgmax=144" alt="DSC03306.JPG" width="144" height="108" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh3.ggpht.com/_fCjhR7xUM2U/S5lUoikH8ZI/AAAAAAAABtw/TvmUAiOwJyE/DSC03308.JPG?imgmax=800" rel="lightbox[2010-2-5-15-8-43]"><img src="http://lh3.ggpht.com/_fCjhR7xUM2U/S5lUoikH8ZI/AAAAAAAABtw/TvmUAiOwJyE/DSC03308.JPG?imgmax=144" alt="DSC03308.JPG" width="144" height="108" class="pie-img"/></a></p>
</div>
</div>
<p>Итог: за 12,99€ и пять минут работы имеем удобную заднюю подсветку монитора, сделать которую может каждый.</p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fblog%2Fccfl-backlight%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/blog/ccfl-backlight/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/blog/ccfl-backlight/"  data-text="Подсветка монитора на CCFL" data-count="horizontal" data-via="olex"></a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/blog/ccfl-backlight/feed/langswitch_lang/ru/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>§ 162. Творческий кризис</title>
		<link>http://olex.biz/blog/writers-block/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=writers-block</link>
		<comments>http://olex.biz/blog/writers-block/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 03:25:04 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[перевод]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=191</guid>
		<description><![CDATA[Поставим простой эксперимент. Произнесем без остановки вслух все известные нам слова (или попросим это сделать приятеля). Первые десять слов найдутся сразу. Потом мы начнем искать и перечислять объекты в комнате — еще штук десять. Потом мы вспомним пару необычных слов из дальних углов словарного запаса. А потом мы остановимся, потому что слова кончатся. Если мы [...]]]></description>
			<content:encoded><![CDATA[<p>Поставим простой эксперимент. Произнесем без остановки вслух все известные нам слова (или попросим это сделать приятеля). Первые десять слов найдутся сразу. Потом мы начнем искать и перечислять объекты в комнате — еще штук десять. Потом мы вспомним пару необычных слов из дальних углов словарного запаса. А потом мы остановимся, потому что слова кончатся.</p>
<p>Если мы попробуем описать своими словами любое известное нам явление, никакого дефицита слов не возникнет. Кто-то опишет хорошо, кто-то плохо — это и определит уровень исполнителя. Но никто не сможет остановиться в поисках следующего нужного слова в простом повествовании.</p>
<p>Кризис идей может возникнуть только в том случае, если дизайнер ставит перед собой цель придумывать что-либо оригинальное и необычное.</p>
<p>Оригинальное и необычное нельзя придумать — оно может появиться только само в процессе работы над поставленной задачей. Точно так же отличается перечисление слов от рассказа.</p>
<p>Творческий кризис — это тупик бессмысленного пути.</p>
<p><em>&copy; <a href="http://www.artlebedev.ru/kovodstvo/sections/162/">art.lebedev</a></em></p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fblog%2Fwriters-block%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/blog/writers-block/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/blog/writers-block/"  data-text="§ 162. Творческий кризис" data-count="horizontal" data-via="olex"></a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/blog/writers-block/feed/langswitch_lang/ru/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN для веб-сайтов &#8211; осторожно</title>
		<link>http://olex.biz/blog/svn-website-deployment/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=svn-website-deployment</link>
		<comments>http://olex.biz/blog/svn-website-deployment/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 03:28:25 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[Блог]]></category>
		<category><![CDATA[безопасность]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=161</guid>
		<description><![CDATA[Многие вебмастера используют SVN не только как систему контроля версий при разработке своего сайта, но и для развертки готового продукта на сервере. В системе была обнаружена уязвимость, о которой многие не знают, и которая может позволить атакующему получить доступ к исходным кодам и конфигурационным файлам проэкта. В каждой папке, которая контроллируется SVN, создается подпапка .svn. [...]]]></description>
			<content:encoded><![CDATA[<p>Многие вебмастера используют SVN не только как систему контроля версий при разработке своего сайта, но и для развертки готового продукта на сервере. В системе была обнаружена уязвимость, о которой многие не знают, и которая может позволить атакующему получить доступ к исходным кодам и конфигурационным файлам проэкта.</p>
<p>В каждой папке, которая контроллируется SVN, создается подпапка <strong>.svn</strong>. В ней находятся, помимо прочего, список всех файлов в данной директории, а также последние версии этих файлов. Файл <strong>.svn/entries</strong> содержит имена файлов и папок и техническую информацию о них, а директория <strong>.svn/text-base</strong> состоит из всех файлов (с добавленным к их расширению <em>.svn-base</em>).</p>
<pre>
project
  |- <em>index.php</em>
  |- <em>config.php</em>
  |- dir
  |    |- .svn
  |    |    |- <em>entries</em>
  |    |    '- text-base
  |    |         '- <em>file.ext</em>.svn-base
  |    '- <em>file.ext</em>
  |- .svn
  |    |- <em>entries</em>
  |    |- text-base
  |    |    |- <em>index.php</em>.svn-base
  |    |    '- <em>config.php</em>.svn-base
  |    '- ...
  '- ...
</pre>
<p>Обычно эта директория скрыта, и о ней мало кто заботится. Однако при стандартной конфигурации большинство серверов будут отдавать файлы из нее как и из любой другой &#8211; и кроме того, поскольку расширения в <strong>text-base</strong> изменены на <em>.svn-base</em>, то скрипты не будут выполняться, а будут просто отданы клиенту в виде исходного кода.</p>
<p>Эта уязвимость была обнаружена группой русских программистов некоторое время назад. Они провели скан многих сайтов в зонах .ru, .com и .de, и результаты были ошеломительными. Сотни владельцев крупных сайтов были оповещены об уязвимости их проектов. После того, как дыра была закрыта на большинстве сайтов, информация была <a href="http://habrahabr.ru/blogs/infosecurity/70330/">опубликована на Хабре</a>.</p>
<p>Существуют множество способов защититься от этой уязвимости. Вот самые простые и действенные:
<ul>
<li>Закрыть доступ к <strong>.svn</strong> (с помощью <strong>.htaccess</strong> (Apache) или других настроек)</li>
<li>Использовать <strong>svn export</strong> вместо <strong>svn checkout</strong> &#8211; тогда директория <strong>.svn</strong> вообще не будет создана.</li>
</ul>
<p>Эти способы могут казаться очевидными (да они и есть). Но я сильно удивился, проверив ради интереса несколько сайтов из моих закладок. Так что если вы вебмастер, и не знали об этом &#8211; знайте.</p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fblog%2Fsvn-website-deployment%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/blog/svn-website-deployment/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/blog/svn-website-deployment/"  data-text="SVN для веб-сайтов &#8211; осторожно" data-count="horizontal" data-via="olex"></a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/blog/svn-website-deployment/feed/langswitch_lang/ru/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Fanboys See Operating Systems</title>
		<link>http://olex.biz/fun/how-fanboys-see-operating-systems/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-fanboys-see-operating-systems</link>
		<comments>http://olex.biz/fun/how-fanboys-see-operating-systems/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 19:06:57 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[юмор]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=158</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img src="http://i.imgur.com/YRoqC.jpg" alt="" /></p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Ffun%2Fhow-fanboys-see-operating-systems%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/fun/how-fanboys-see-operating-systems/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/fun/how-fanboys-see-operating-systems/"  data-text="How Fanboys See Operating Systems" data-count="horizontal" data-via="olex"></a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/fun/how-fanboys-see-operating-systems/feed/langswitch_lang/ru/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

