<?xml version="1.0" encoding="utf8"?>
<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>Хроники фрилансера &#187; Мои статьи</title>
	<atom:link href="http://softm.org.ua/category/moi-stati/feed/" rel="self" type="application/rss+xml" />
	<link>http://softm.org.ua</link>
	<description>Хроники фрилансера, мои проекты и история фрилансерской практики, портфолио и вообще, - путевые заметки.</description>
	<lastBuildDate>Tue, 07 Feb 2012 11:49:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>FireBug &#8212; приятное расширение.</title>
		<link>http://softm.org.ua/firebug-priyatnoe-rasshirenie/</link>
		<comments>http://softm.org.ua/firebug-priyatnoe-rasshirenie/#comments</comments>
		<pubDate>Fri, 03 Jun 2011 13:32:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Мои статьи]]></category>
		<category><![CDATA[Разное]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=1012</guid>
		<description><![CDATA[&#160; Как часто вам в руки попадается отличный инструмент, который работает как надо и при этом &#8212; отдают вам его совершенно бесплатно? Редкий случай, практически невероятный. В мире в котором ценность имеют блага не приобретенные опытом, а приобретенные в обмен &#8230; <a href="http://softm.org.ua/firebug-priyatnoe-rasshirenie/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Как часто вам в руки попадается отличный инструмент, который работает как надо и при этом &#8212; отдают вам его совершенно бесплатно? Редкий случай, практически невероятный. В мире в котором ценность имеют блага не приобретенные опытом, а приобретенные в обмен на бумагу, дисбаланс ценностей достиг такого уровня, что хороший и полезный бесплатный софт, &#8212; скоро может стать таким же ископаемым как динозавры.</p>
<p>Однако пока, мы имеем радость работать с такими прекрасными инструментами как FireBug. Єто и отладчик ява-скриптов, без которого делать что-то айаксное &#8212; практически мучение.</p>
<p>Так, мало того, что разработчики ФаерБага сделали все возможные примочки, там они еще собрали воедино все расширения для &#171;Огненной Лисы&#187;, которые только есть в природе и пользуюстся при этом популярностью и выложили в виде единого пакета на своем сайте.</p>
<p>Собственно <a href="http://getfirebug.com/firstrun#Firebug%201.7.2">вот ссылка</a>, на кнопке написано &#171;Get Your Swarm&#187;. Рекомендую!</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/firebug-priyatnoe-rasshirenie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как расшарить ISO по Сети?</title>
		<link>http://softm.org.ua/kak-rassharit-iso-po-seti/</link>
		<comments>http://softm.org.ua/kak-rassharit-iso-po-seti/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 16:49:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=505</guid>
		<description><![CDATA[Вот, подвернулась даже не задача, а так, вопрос, решил написать и заодно доделать свой старый скрипт. Вопрос вроде бы не такой уже и сложный. Есть масса iso-файлов. На каждом соответственно драйвера, ну или &#171;операционки&#187;. Надо сделать их доступными по Сети. &#8230; <a href="http://softm.org.ua/kak-rassharit-iso-po-seti/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Вот, подвернулась даже не задача, а так, вопрос, решил написать и заодно доделать свой старый скрипт.</p>
<p>Вопрос вроде бы не такой уже и сложный. Есть масса iso-файлов. На каждом соответственно драйвера, ну или &#171;операционки&#187;. Надо сделать их доступными по Сети. То есть, например, по &#171;самбе&#187;.</p>
<p>Как решается эта задача. Обычно народ начинает искать какой-то софт, который бы сделал это и на том конец. Но, даже если вспомнить, про то, что за каждый &#171;поворот головы&#187; в среде &#171;виндовс&#187; следует заплатить денег, и притом иногда &#8212; немалых, а средства на &#171;ай-ти&#187; пока выделяются по остаточному принципу, есть смысл поискать что-то альтернативное.</p>
<p><span id="more-505"></span></p>
<p>Вот собственно способ, который может привлечет ваше внимание, а может покажется излишне громоздким. Лично мне как программисту он кажется наиболее оптимальным, быстрым и дешевым. Однако, следует учесть, что для успешного решения такой задачи, необходим UNIX-сервер. Я традиционно для себя использую &#171;АльтЛинукс&#187;, 4х версии.</p>
<p>Итак, идея состоит в том, чтобы в составе внутреннего веб-сервера отобразить все доступные для подключения образы дисков (iso). И дать возможность пользователю выбрать, какой из них он хочет подключить.</p>
<p>Далее, скрипт на сервере должен выполнить запись в таблицу базы данных, где указать, что необходимо выполнить монтирование такого-то файла в таком то каталоге. Ну и предварительно создает каталог. Вот собственно часть рабочего кода:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">/*-----------------------------------------------------------------
*  ==[ Date: 15.12.2010]== Programmer: Arsen Kirillov)
*  ==[ Note: Process mount
*------------------------------------------------------------------*/</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$g_mount</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$g_mount</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// 1 . create folder  - with file name in /data/iso's</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">file_exists</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$fn</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/data/ISOS/&quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">basename</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$g_mount</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">mkdir</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$fn</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">// here mount</span>
    <span style="color: #000088;">$comm</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;/bin/mount  -t iso9660 '<span style="color: #006699; font-weight: bold;">$g_mount</span>' '<span style="color: #006699; font-weight: bold;">$fn</span>' -o loop&quot;</span><span style="color: #339933;">;</span>             
&nbsp;
    <span style="color: #000088;">$mdb</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>query<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;                                                        
&nbsp;
        INSERT INTO
            &quot;</span> <span style="color: #339933;">.</span> ibase_table<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;isos&quot;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;                                 
&nbsp;
        SET
            name='&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">mysql_escape_string</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$comm</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;',
            isofile='&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">mysql_escape_string</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$g_mount</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;',
            mounted = 0                                                   
&nbsp;
       &quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Здесь &#8212; $g_mount, это переменная $_GET[ "mount" ] в которой передается полное имя файла для подмонтирования. Поскольку такие системы итак предназначены для внутреннего пользования то вопрос безопасности решается обработки этого параметра, на предмет его соответствия каталогу с исо-образами.</p>
<p>Собственно, когда в указанной таблице MySQL появляется такая запись, уже другой (крон) скрипт, от имени &#171;рута&#187; выполняет команду на монтирование. Этот скрипт также проверяет соответствие команды, на предмет легитимности и синтаксиса. Опять же это вопрос безопасности.</p>
<p>После монтирования, все &#171;поднятые&#187; образы показываются в в списке и пользователь может их размонтировать. Ну или размонтирование выполняет скрипт по тайм-ауту. Для этого в таблице &#171;заданий&#187; есть поле timestamp, в которое заноситься последнее время изменения записи.</p>
<p>Вот собственно как выглядит интерфейс:</p>
<div id="attachment_506" class="wp-caption aligncenter" style="width: 310px"><a href="http://softm.org.ua/wp-content/uploads/2010/12/web-mount-interface.jpg"><img class="size-medium wp-image-506" title="Интерфейс для сетевого монтирования" src="http://softm.org.ua/wp-content/uploads/2010/12/web-mount-interface-300x176.jpg" alt="Интерфейс для сетевого монтирования" width="300" height="176" /></a><p class="wp-caption-text">Интерфейс для сетевого монтирования</p></div>
<p>А таким вот образом наполняется список файлов для монтирования:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"> <span style="color: #666666; font-style: italic;">//search all iso in /data</span>
 <span style="color: #000088;">$arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #000088;">$dir_iterator</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> RecursiveDirectoryIterator<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;/data&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$iterator</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> RecursiveIteratorIterator<span style="color: #009900;">&#40;</span><span style="color: #000088;">$dir_iterator</span><span style="color: #339933;">,</span> RecursiveIteratorIterator<span style="color: #339933;">::</span><span style="color: #004000;">SELF_FIRST</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$iterator</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$fname</span> <span style="color: #009900;">&#41;</span>
 <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;~\.iso$~msi&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$fname</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
      <span style="color: #b1b100;">continue</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$arr</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$fname</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
&nbsp;
 <span style="color: #000088;">$smarty</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>assign<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;isos&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arr</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$i</span><span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// What is already mounted</span>
 <span style="color: #000088;">$arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$mdb</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>query<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;SELECT * FROM  &quot;</span> <span style="color: #339933;">.</span> ibase_table<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;isos&quot;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; &quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$o</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_object</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$res</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
 <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$arr</span><span style="color: #009900;">&#91;</span> <span style="color: #000088;">$i</span> <span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span> <span style="color: #0000ff;">&quot;obj&quot;</span> <span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$o</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$i</span><span style="color: #339933;">++;</span>
&nbsp;
 <span style="color: #009900;">&#125;</span>
 <span style="color: #000088;">$smarty</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>assign<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;mounted&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arr</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Конечно, в проекте использована Smarty.</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/kak-rassharit-iso-po-seti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Слайсинг и дизайн в Фотошопе &#8230; не близнецы, не братья</title>
		<link>http://softm.org.ua/slajsing-i-dizajn-v-fotoshope-ne-bliznecy-ne-bratya/</link>
		<comments>http://softm.org.ua/slajsing-i-dizajn-v-fotoshope-ne-bliznecy-ne-bratya/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 11:38:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>
		<category><![CDATA[photoshop]]></category>
		<category><![CDATA[slice]]></category>
		<category><![CDATA[фотошоп]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=501</guid>
		<description><![CDATA[В связи с тем, что сижу пока без работы, уже целых два дня (в гамериках и прочих странах &#8212; праздники), решил вплотную заняться больной для себя темой. А именно &#8212; веб-дизайном. Нашел сайт, на котором выложены пару уроков, в том &#8230; <a href="http://softm.org.ua/slajsing-i-dizajn-v-fotoshope-ne-bliznecy-ne-bratya/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В связи с тем, что сижу пока без работы, уже целых два дня (в гамериках и прочих странах &#8212; праздники), решил вплотную заняться больной для себя темой. А именно &#8212; веб-дизайном.</p>
<p>Нашел сайт, на котором выложены пару уроков, в том числе &#8212; расписано <a href="http://photoshopworld.ru/lessons/156/">как делать навигационное меню</a> в фотошопе. Сделал с трудом этот урок, потому, что описание невнятное. Ну не нашел я как &#171;Rounded Rectangle Tool&#187; &#8212; не выделяет, а рисует прямоугольник. А может и версия моего &#171;фотошопа&#187; &#8212; древняя.</p>
<p><span id="more-501"></span></p>
<p>В итоге рисовал прямоугольник этим инструментом, потом выделял Color Range, а потом удалял выделенное. Может это и неверно.</p>
<p>Вообще в итоге результаты несколько отличались от показанного на экране. Не критично. Вот собственно то, что выдавали &#8212; за результат &#171;фотошоп-урока&#187;:</p>
<div id="attachment_503" class="wp-caption aligncenter" style="width: 286px"><a href="http://softm.org.ua/wp-content/uploads/2010/12/lesson-photoshop-result-001.jpg"><img class="size-medium wp-image-503" title="Результат фотошоп-урока" src="http://softm.org.ua/wp-content/uploads/2010/12/lesson-photoshop-result-001-276x300.jpg" alt="Результат фотошоп-урока" width="276" height="300" /></a><p class="wp-caption-text">Результат фотошоп-урока</p></div>
<p>Самое же смешное состоит в том, что когда попытался переместить это все дело в нормальный html-вид возникли проблемы. Перемещать начал с того, что &#171;результат&#187; разбил на три части, причем вывел только определенные слои. Точнее задний фон. <a href="./projects/lesson1-try1/" target="_blank">Вот эти куски вместе</a> &#8230;</p>
<p>Задача, казалось бы простая, &#8212; вроде бы, сделать div-слайсинг, коробочки, которая будет тянуться по-вертикали, при увеличении количества содержимого внутри, причем будет состоять из трех частей &#8212; заголовка (250высота) + средней части (высотой где-то 15-ть) и подвала (высотой 30-ть). Проблема в том, что текст, точнее там будет html-ное меню, должен находиться поверху как заголовка так и средней части. Вот таким образом:</p>
<div id="attachment_502" class="wp-caption aligncenter" style="width: 310px"><a href="http://softm.org.ua/wp-content/uploads/2010/12/design-what-i-want.jpg"><img class="size-medium wp-image-502" title="Что я хочу получить на выходе" src="http://softm.org.ua/wp-content/uploads/2010/12/design-what-i-want-300x264.jpg" alt="Что я хочу получить на выходе" width="300" height="264" /></a><p class="wp-caption-text">Что я хочу получить на выходе</p></div>
<p>Пробовал взять готовый код, в котором в качестве направляющих элементов были использована ul- li структура, с заголовками h2. Толком не вышло, так как проблема в двойном заднем фоне.</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/slajsing-i-dizajn-v-fotoshope-ne-bliznecy-ne-bratya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Запустить и уйти</title>
		<link>http://softm.org.ua/zapustit-i-ujti/</link>
		<comments>http://softm.org.ua/zapustit-i-ujti/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 14:43:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=499</guid>
		<description><![CDATA[Вот типичная задача, у вас есть большой файл. Есть UNIX-сервер. Вам надо скачать файл. Все бы просто, но нет времени держать консоль, пока wget &#171;трудится&#187;. Как же быть? Все очень просто, есть такая штука как screen, которая позволяет начать виртуальную &#8230; <a href="http://softm.org.ua/zapustit-i-ujti/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Вот типичная задача, у вас есть большой файл. Есть UNIX-сервер. Вам надо скачать файл. Все бы просто, но нет времени держать консоль, пока wget &#171;трудится&#187;. Как же быть?</p>
<p>Все очень просто, есть такая штука как screen, которая позволяет начать виртуальную шелл-сессию, которая будет работать в &#171;бекграунде&#187; вашего серевера.</p>
<p>Вот пример комманды, для закачки большого файла, в ваше отсутствие:</p>
<p>$screen -S имяпроцесса -d -m &lt;комманда&gt;</p>
<p>То есть запустив, такую команду:</p>
<p>$screen -S wgetter -d -m wget http://softm.org.ua/largefile.zip</p>
<p>можно добиться закачки файла в фоновом режиме сервера.</p>
<p>Кстати, просмотреть, что _сейчас_ делается в фоне можно вот так:</p>
<p>screen -x wgetter</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/zapustit-i-ujti/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>ТИцы/ПРы в реальной жизни</title>
		<link>http://softm.org.ua/ticypry-v-realnoj-zhizni/</link>
		<comments>http://softm.org.ua/ticypry-v-realnoj-zhizni/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 10:27:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=469</guid>
		<description><![CDATA[Делаю очередной проект. Вот пришлось столкнуться с проблемой &#171;раскрутки&#187; полумертвого сайта в Гуглах/Яндексах. Для сего реализовал несколько интересную, возможно концепцию подбора семантического ядра сайта, правда само исполнение можно назвать достаточно сырым. Идея состояла в том, чтобы проанализировать частотность появления ключевых &#8230; <a href="http://softm.org.ua/ticypry-v-realnoj-zhizni/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Делаю очередной проект.<br />
Вот пришлось столкнуться с проблемой &#171;раскрутки&#187; полумертвого сайта в Гуглах/Яндексах.<br />
Для сего реализовал несколько интересную, возможно концепцию подбора семантического ядра сайта, правда само исполнение можно назвать достаточно сырым. </p>
<p>Идея состояла в том, чтобы проанализировать частотность появления ключевых (более 3-х символов) слов в заголовках сайта, и вывести итоговую информацию в доступном (табличном) виде дял пользователей проекта.</p>
<p>Реализация оказалась достаточно простая (на сайте не так много материалов в районе 400-т статей). Оказалось возможным просто перебрать все из базы, склеить в одну длиннющую строку и далее разбить все это дело на слова, и далее просто подсчитать их частоту появления в этой &#171;супер-строке&#187;. Вот собственно какой функцией был реализован такой механизм:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> get_keywords_q<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$str</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>                    
  <span style="color: #000088;">$str_</span><span style="color: #339933;">=</span>
  <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span>
    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;~([a-z\&amp;\;\.\,\:\-\-\=\+\&gt;\&lt;\@\#\!\~\`\%<span style="color: #000099; font-weight: bold;">\$</span>\(\)\*\/<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>])+~msi&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;~[ ]{1,}~&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;~[ ]+[^ ]?[ ]+~&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;~[<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span><span style="color: #660099; font-weight: bold;">\x0d</span><span style="color: #660099; font-weight: bold;">\x0A</span>]+~&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #990000;">strip_tags</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #000088;">$arr_v</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_count_values</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">array_values</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">split</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$str_</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//count keys density</span>
 <span style="color: #000088;">$arr_o</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span>count<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$arrk</span><span style="color: #339933;">=</span><span style="color: #990000;">array_keys</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arr_v</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span> <span style="color: #009900;">&#41;</span>
 <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$k</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$arrk</span><span style="color: #009900;">&#91;</span> <span style="color: #000088;">$i</span> <span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #000088;">$k</span>  <span style="color: #339933;">||</span> <span style="color: #339933;">!</span><span style="color: #000088;">$k</span> <span style="color: #339933;">||</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$k</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">4</span>  <span style="color: #009900;">&#41;</span>      
      <span style="color: #b1b100;">continue</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$arr_o</span><span style="color: #009900;">&#91;</span> <span style="color: #000088;">$arrk</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$arr_v</span><span style="color: #009900;">&#91;</span> <span style="color: #000088;">$arrk</span><span style="color: #009900;">&#91;</span> <span style="color: #000088;">$i</span> <span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #990000;">arsort</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$arr_o</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #b1b100;">return</span> <span style="color: #000088;">$arr_o</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>А вот это, историческое кстати (годиков 5-ть назад писано) &#171;чудо&#187;, иначе его не назовешь, было призвано просто разбить строку на ключевые, то есть &#8212; конечно преобразовать строку в массив со словами. То есть, можно сказать, оно было прообразом новой функции.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #666666; font-style: italic;">/*-----------------------------------------------------------------
*  ==[ Date: 11.11.2010]== Programmer: Sofm@
*  ==[ Note: 
*------------------------------------------------------------------*/</span>
<span style="color: #000000; font-weight: bold;">function</span> get_keywords<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$str</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$str_</span><span style="color: #339933;">=</span>
  <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span>
    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;~([\.\,\;<span style="color: #000099; font-weight: bold;">\&quot;</span>\'\:\-\-\=\+\&gt;\&lt;\@\#\!\~\`\%\&amp;<span style="color: #000099; font-weight: bold;">\$</span>\(\)\*\/<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>])+~&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;~[ ]{1,}~&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;~[ ]+[^ ]?[ ]+~&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;~[<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span><span style="color: #660099; font-weight: bold;">\x0d</span><span style="color: #660099; font-weight: bold;">\x0A</span>]+~&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #990000;">strip_tags</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;,&quot;</span><span style="color: #339933;">,</span><span style="color: #990000;">array_unique</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">split</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$str_</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>А вот как оно используется. И иначе &#8212; никак. Поскольку просто не будет работать корректно. Я про первую функцию, конечно. Что делать,<br />
без установленной &#171;локали&#187; &#8212; тяжко жить в одномерном пространстве кодировок. А двухмерный utf &#8212; не доставляет удовольствия, сложностью реализации простейших вещей.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">  <span style="color: #990000;">setlocale</span><span style="color: #009900;">&#40;</span>LC_ALL<span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;ru_RU.CP1251&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$keysp</span> <span style="color: #339933;">=</span> get_keywords_q <span style="color: #009900;">&#40;</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$str_title</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$keysp</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_slice</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$keysp</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">50</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>В итоге достаточно четко видно, какая информация вводиться в разделы сайта.<br />
Правда, убил один маленький нюанс, несмотря на то, что все очевидно, несмотря на то, что заказчик сам, перед разработкой сайта сформулировал основной костяк семантического ядра, и дал список ключевых слов, при конечной реализации проекта &#8212; вылезли непонятные косяки.</p>
<p>А точнее &#8212; сам же исполнитель заказчика, не захотел придерживаться разработанной самим же, концепции. Загадка многогранной славянской души. Когда, увидели, что выходит, поняли, что первоначальный план &#8212; был &#171;туфтой&#187;?</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/ticypry-v-realnoj-zhizni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Само-проект, авто-лоадер торентов</title>
		<link>http://softm.org.ua/samo-proekt-avto-loader-torentov/</link>
		<comments>http://softm.org.ua/samo-proekt-avto-loader-torentov/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 10:23:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=464</guid>
		<description><![CDATA[Некоторое время назад, я уже возился с настройкой загрузчика для торентов. Использовал тогда rtorrent. Простое, хотя и не без недостатов, решение. А вот буквально вчера решил его усовершенствовать, что значит &#8212; &#171;доточать&#187; на предмет автоматической загрузки торентов. Единственной проблемой, для &#8230; <a href="http://softm.org.ua/samo-proekt-avto-loader-torentov/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Некоторое время назад, я уже возился с настройкой загрузчика для торентов. Использовал тогда rtorrent. Простое, хотя и не без недостатов, решение. А вот буквально вчера решил его усовершенствовать, что значит &#8212; &#171;доточать&#187; на предмет автоматической загрузки торентов.</p>
<p>Единственной проблемой, для данного решения &#8212; было найти подходящий трекер, который дает торенты без регистрации, чтобы минимизировать количество работы. В итоге нашел такой трекер, тут не пишу его урл, кто захочет тот и сам найдет, я уверен.</p>
<p>Скрипт, для автозагрузки торентов состоит из одной части, однако логически использует последовательную загрузку индексной страницы (раз в три часа), разбор ее на торенты, загрузку конечных страниц торентов и самих файлов.</p>
<p>При написании этого дела возникло всего несколько проблем. Во-первых, почему то себ-сервер с &#171;того конца&#187; отдавал страницы в виде зип-файлов. Вероятно было включено сжатие. Мне же всячески не хотелось вставлять в скрипт CURL и тому подобную ерунду, не нужна она мне &#8212; так как ip динамический, поэтому пришлось взять любимую библиотеку, точнее php-класс loader (// Class &#8216;loader&#8217; (rev.2005-02-18)<br />
), позволяющий грузить страницы под &#171;видом&#187; пользователя.</p>
<p>В итоге получил html-ные страницы. Правда в UTF-8, которые также перекодировал имеющейся функцией. Функция также заемная, и достаточно сложная. После всего чего просто осталось отдать файлы на  скормление рторренту. Запись закачанных файлов торентов ведется в mysql, в единственной таблице.</p>
<p>Вот пару примеров кода &#171;разборщика&#187;:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">  <span style="color: #000088;">$ldr</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> loader<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #339933;">@</span><span style="color: #000088;">$ldr</span> <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">load</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;http://softm.org.ua/torrents&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$page</span> <span style="color: #339933;">=</span> UTF8toWIN1251_entities<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$ldr</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">page</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">//file_put_contents( &quot;./tmp.html&quot;,$page );</span>
&nbsp;
  <span style="color: #990000;">preg_match_all</span><span style="color: #009900;">&#40;</span> 
&nbsp;
                   <span style="color: #0000ff;">&quot;~\s*&quot;</span><span style="color: #339933;">.</span>
                   <span style="color: #0000ff;">&quot;\s*(&lt;strong&gt;(.*?)&lt;/strong&gt;|&quot;</span><span style="color: #339933;">.</span>
                   <span style="color: #0000ff;">&quot;\s*&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>(/bigtorr/(\d+)/.*?)<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;(.*?)&lt;/a&gt;)&quot;</span><span style="color: #339933;">.</span>
&nbsp;
&nbsp;
  <span style="color: #0000ff;">&quot;~msi&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$page</span><span style="color: #339933;">,</span> <span style="color: #000088;">$vv</span><span style="color: #339933;">,</span> PREG_SET_ORDER <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">//   print_r( $vv );</span></pre></div></div>

<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/samo-proekt-avto-loader-torentov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Подмена понятий, или изменяем загруженный в iframe html-документ</title>
		<link>http://softm.org.ua/podmena-ponyatij-ili-izmenyaem-zagruzhennyj-v-iframe-html-dokument/</link>
		<comments>http://softm.org.ua/podmena-ponyatij-ili-izmenyaem-zagruzhennyj-v-iframe-html-dokument/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 16:57:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=461</guid>
		<description><![CDATA[Предположим, что у вас возникла задача вставить некий html код в ваш вывод. Однако по причинам того, что либо разработчики сайта не предусмотрели никакого интерфейса для этого (в 2010 году!), вам приходиться изголяться, чтобы выполнить такую задачу. ну вот, вы &#8230; <a href="http://softm.org.ua/podmena-ponyatij-ili-izmenyaem-zagruzhennyj-v-iframe-html-dokument/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Предположим, что у вас возникла задача вставить некий html код в ваш вывод. Однако по причинам того, что либо разработчики сайта не предусмотрели никакого интерфейса для этого (в 2010 году!), вам приходиться изголяться, чтобы выполнить такую задачу.</p>
<p>ну вот, вы написали iframe, вставили туда страницу, однако оказывается, что используемый сайт имеет массу ссылок, которые открываются в новом окне, то есть содержат аттрибут target, как жебыть, чтобы победить.<br />
Самый простой способ, который позволяет &#171;поменять&#187; содержимое iframe &#171;на-лету&#187;, это использование jQuery функций, для контента вашего iframe, конечно.</p>
<p>Идея следующая, после загрузки html, поменять аттрибуты target всех тегов <a href="..."> </a>на пустые, ну или содержащие нужную &#171;цель&#187;. Делается это <a href="/projects/js-ahref/">следующим образом</a>.</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/podmena-ponyatij-ili-izmenyaem-zagruzhennyj-v-iframe-html-dokument/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Слайдерчик &#8230; или всенародная любовь к веб2.0</title>
		<link>http://softm.org.ua/slajderchik-ili-vsenarodnaya-lyubov-k-veb2-0/</link>
		<comments>http://softm.org.ua/slajderchik-ili-vsenarodnaya-lyubov-k-veb2-0/#comments</comments>
		<pubDate>Sat, 06 Nov 2010 12:10:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои работы]]></category>
		<category><![CDATA[Мои статьи]]></category>
		<category><![CDATA[jCarousel]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=430</guid>
		<description><![CDATA[Повальная любовь к веб 2.0, которая как бы на некоторое время вроде бы прошла, я про этот весь оффсорсинговый рынок/базар, опять здесь и сейчас. Мало того, мне попался клиент, который заказал вывод картинок, прописанных в базе, в слайдере. Как и &#8230; <a href="http://softm.org.ua/slajderchik-ili-vsenarodnaya-lyubov-k-veb2-0/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Повальная любовь к веб 2.0, которая как бы на некоторое время вроде бы прошла, я про этот весь оффсорсинговый рынок/базар, опять здесь и сейчас. Мало того, мне попался клиент, который заказал вывод картинок, прописанных в базе, в слайдере.</p>
<div id="attachment_432" class="wp-caption aligncenter" style="width: 310px"><a href="http://softm.org.ua/wp-content/uploads/2010/11/jquery-slider-example.jpg"><img class="size-medium wp-image-432" title="jQuery слайдер" src="http://softm.org.ua/wp-content/uploads/2010/11/jquery-slider-example-300x235.jpg" alt="jQuery слайдер" width="300" height="235" /></a><p class="wp-caption-text">jQuery слайдер</p></div>
<p>Как и всегда, когда необходимо работать с &#171;аяксами&#187;, не мудрствуя лукаво, взял за основу готовую ЖаваСкрипт-библиотеку, в этот рназ под руку попался jQuery и расширение для него под забавным названием ДжеКарусел :) jCarousel, &#8212; вот так оно звучит по английски, взять можно на оф.сайте проекта, вот <a href="http://sorgalla.com/projects/jcarousel/">здесь</a>.</p>
<p>Собственно пару слов, что там понравилось, а за что хотелось разработчика &#8230; поругать.</p>
<p>Ну во-первых, совершенно не очевидный и непонятный с первого раза стиль оформления css, стиля, который используется для вывода &#171;карусели&#187;. Авторы библиотеки напихали ксс и для вертикальной, и для горизонтальной версии  одну кучу и предоставили мне возможность разгребать ее. Что я сделал, конечно, ибо заказчику сто пятьдесят лет не надо было иметь вертикального слайдера, а всего лишь его горизонтальную версию.</p>
<p>Далее, несколько не ясно как делать картинки, которые нужны для того, чтобы показывать кнопки. Ведь все состояния этих кнопок, сохраняются в одном пнг-файле.  Что, не радует. Проще конечно &#8212; отдельно.</p>
<p>Собственно вот <a title="Карусель" href="/projects/jcarousel" target="_self">упрощенный проектик</a>, заказчик поспешил спрятать сорцы после окончания работы, а я копий такой мелочи не делал. Кстати, в нем есть небольшой ляп, в ослике-ИЕ коробочка, в которой показывается &#171;листалка&#187; &#8212; без круглых уголков. Будьте осторожны, вставляя этот код, я его также не проверял на w3c :)</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/slajderchik-ili-vsenarodnaya-lyubov-k-veb2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>InnoDB &#8212; типо стойкая структура баз данных MySQL</title>
		<link>http://softm.org.ua/innodb-tipo-stojkaya-struktura-baz-dannyx-mysql/</link>
		<comments>http://softm.org.ua/innodb-tipo-stojkaya-struktura-baz-dannyx-mysql/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 18:31:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>
		<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=427</guid>
		<description><![CDATA[В выходные я достиг очередной степени просветления. Все изза того, что взялся за воссановление базу данных MySQL. Казалось бы, ничего сложного в этом нет, сделать repair table &#60;name&#62;.  С небольшими вариациями. Но все оакзывается просто, только на бумаге и на &#8230; <a href="http://softm.org.ua/innodb-tipo-stojkaya-struktura-baz-dannyx-mysql/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В выходные я достиг очередной степени просветления. Все изза того, что взялся за воссановление базу данных MySQL.</p>
<p>Казалось бы, ничего сложного в этом нет, сделать repair table &lt;name&gt;.  С небольшими вариациями. Но все оакзывается просто, только на бумаге и на экране, а еще в документации.</p>
<p>Все дело в том, что какая-то нехорошая личность подкинула молему клиенту очень колючую идею, &#8212; использовать MySQL InnoDB базу данных, так мало того еще и на вин32 сервере.</p>
<p>В итоге, уже не изнаю что там посыпалось, ОС или файлы, или какой шальной вирус &#171;выстрелил&#187; по файлу InnoDB базы, но некоторая чсть таблиц банально не &#171;выбиралась&#187;. То есть, при запросе вроде SELECT * FROM &#8230; сервер майскл просто умирал, вместе со своим процессом. Это на вин32.</p>
<p>При попытке переноса файлов базы данных на UNIX майскл рассказал про несоответствие структуры frm файлов. Даже после того, как я подкинул ему сделанные на том же сервере, после CREATE TABLE файлы &#171;формата&#187;. SELECT *, &#8212; расказывал про несуществующие таблицы.</p>
<p>При чем, самое смешное, что умерли не все таблицы, а лишь около 5% от общего числа (8-мь из 150). С горем попалам, запуская после каждой битой таблицы, удалось &#171;продампить&#187; живые таблицы, и заслать данные на клиентский майскл.</p>
<p>Была попытка использования recovery-tools, которая впрочем не удалась, так как в лог файл не ложилась ни какая информация про ид-таблиц. Хоть, что то там с помощью мучений, удалось получить. А именно 16к файлы страниц ил информационного метафайла иннодб. Далее, пробовал сделать файлы хаголовков и восстанавливающую утилиту. Но ничего на выходе не получил &#8230; Причем мучения продолжались более 30-часов подряд.</p>
<p>Далее, клиент приоблрел за 400 долларов проприетарное программное обеспечение (Stell Phoenix Database Recovery MySQL 3.0.0) от проприетарного производителя, подождав два дня пока пройдут выходные (ключ слали три дня!!!), он продампил еще пару таблиц, но не все. В итоге очень большой выборки информации не досчитались. Около 20 тыс записей. А бекап был от 07/2010.</p>
<p>И самое смешное, на предложение оплатить еще 50уе. за кронскрипт, для вин32, который будет автодампить майскл, аказчик не ответил, точнее думает :)</p>
<p>Из всего этого вывод &#8212; не пользуйтесь <strong>InnoDB</strong>, тем более MySQL на вин32, это &#8212; <strong>минигит</strong>. И еще, MySQL foundation &#8212; начинает откровенно нервирвоать, таким подходом к разработке ПО.</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/innodb-tipo-stojkaya-struktura-baz-dannyx-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Укртелеком &#8212; и прочие мобильные тарифы &#8230;</title>
		<link>http://softm.org.ua/ukrtelekom-i-prochie-mobilnye-tarify/</link>
		<comments>http://softm.org.ua/ukrtelekom-i-prochie-mobilnye-tarify/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 16:42:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=407</guid>
		<description><![CDATA[Итак, сижу неделю в Крыму, попробовал разнообразные мобильные тарифы, главным образом от Киевстара ХЛ и Утеловский неограниченный. Так вот, &#8212; на самом деле тариф ХЛ от Киевстара это хорошо продуманная акция, вы как бы платите всего 5 грн и потом &#8230; <a href="http://softm.org.ua/ukrtelekom-i-prochie-mobilnye-tarify/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Итак, сижу неделю в Крыму, попробовал разнообразные мобильные тарифы, главным образом от Киевстара ХЛ и Утеловский неограниченный.</p>
<p>Так вот, &#8212; на самом деле тариф ХЛ от Киевстара это хорошо продуманная акция, вы как бы платите всего 5 грн и потом всего 5 коп. за мегабайт.</p>
<p>Но подумайте, если хочется качнуть кино &#8230; 1400Мб по 5 копеек и плюс 5 грн это &#8230; 75 грн. Не дешево.</p>
<p>В тоже время у G3 &#171;Укртелекома&#187; (WCDMA) есть тариф необмежений, который будет стоить по этому самому фильму около 6-40 грн.</p>
<p>Одно но, Укртелеком не везде работает, и неограниченный тариф не дается в роуминге Киевстара, который партнер, пор понятным причинам. Но на самом деле в 25 км. от Евпатории их Интернет присуствует.А это ведь &#171;глушь&#187;.</p>
<p>Задумайтесь стоит ли иметь после этого дело с укртелекомом. Я задумался. И далее буду работать с ними только в случае крайней необходимости.</p>
<p>Ах да, укртелеком конечно сделал все непрозрачно, чтобы включить необмеженный надо поговорить с ихним оператором, который, спрочем отвечает четко и обо всех мелких пакостях, вроде снятия сраных 40ка бонусных мегабайт, предупреждает. Что приятно.</p>
<p>В то же время сотрудники  из  Киевстаровского салона на площади Мицкевича во Львове сказали, что неограниченный в КС это 5 грн и все. Про тарификацию по мегабайтно, &#171;забыли&#187;.</p>
<p><strong>Будьте осторожны имея дело с &#171;киевстаром&#187; &#8212; там недоговаривают.</strong></p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/ukrtelekom-i-prochie-mobilnye-tarify/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Фрилансерские сайты и политика зажима информации</title>
		<link>http://softm.org.ua/frilanserskie-sajty-i-politika-zazhima-informacii/</link>
		<comments>http://softm.org.ua/frilanserskie-sajty-i-politika-zazhima-informacii/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 15:38:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=391</guid>
		<description><![CDATA[Мне очень грустно смотреть, как некоторые фрилансерские сайты не дают достаточной для работы информации. Например, знаменитый scriptlance.com не может сделать элементарный фильтр по ключевым словам, по рейтингу веб-мастера. Зачем это надо? Все просто, в последнее время я несколько озадачился вопросом &#8230; <a href="http://softm.org.ua/frilanserskie-sajty-i-politika-zazhima-informacii/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Мне очень грустно смотреть, как некоторые фрилансерские сайты не дают достаточной для работы информации. Например, знаменитый scriptlance.com не может сделать элементарный фильтр по ключевым словам, по рейтингу веб-мастера.</p>
<p>Зачем это надо? Все просто, в последнее время я несколько озадачился вопросом увеличения производительности работы на фриланс-сервисах и написал пару небольших скриптов, которые коллекционируют, например отзывы.</p>
<p>Так вот, оказалось, что масса начинающих веб-мастеров, то есть не имеющих реального рейтинга, просто &#171;сажают&#187; в грязь достаточно программистов. То есть тупо ставят им оценку 1. К сожалению, скриптланс, равно как и многие другие сервисы высылают анонсы по новым проектам в том числе и от начинающих веб-мастеров.</p>
<p>Однако, лично мне такая ситуация давно не нравилась, я даже просил Rene с скриптланса, наконец сделать нормальные анонсы или хотя бы добавить поле в XML ленту оного сайта, чтобы не надо было тянуть их штмл раз в минуту. Все безрезультатно. Больше никогда просить не буду, потому, что скрипт для вытаскивания нужной информации методом парсинга пишется за пару часов (буквально). Потом выкладывается на какой-то платный хостинг, и вуаля &#8212; почтой идут нужные анонсы. Название/рейтинг/всего проектов/описание/ссылка/ссылка на PMB проекта.</p>
<p>Конечно, это все можно доделывать и вообще, сделать красиво в виде SL-tools, но нет времени. Ибо &#8212; читайте принцип Оккама.</p>
<p>В итоге я получаю необходимые мне анонсы, команда скриптланса и прочих считает бабло, и все счастливы. Вот такой анонсик&#8230;</p>
<p>ПС. Вам нужен такой скрипт? Я решил не выкладывать его на всеобщее обозрение, ибо написать его можно за пару часов. Вы не можете его написать? Извините, тогда или купите или &#8212; он вам просто не нужен. В комментариях icq пишите &#8230;</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/frilanserskie-sajty-i-politika-zazhima-informacii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка DynDNS на AltLinux (АКА русский Debian)</title>
		<link>http://softm.org.ua/ustanovka-dyndns-na-altlinux-aka-russkij-debian/</link>
		<comments>http://softm.org.ua/ustanovka-dyndns-na-altlinux-aka-russkij-debian/#comments</comments>
		<pubDate>Sat, 29 May 2010 16:07:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=380</guid>
		<description><![CDATA[Ну во-первых, зачем нужен Dynamic Dns? Самое простое объяснение, &#8212; нужен &#171;по-бедности&#187;. Потому, как статический ай-пи не всегда доступен, а иметь тестовый интернет-доступный веб-сервер (фтп/ссш и так далее), причем управляемый и хостируемый лично, &#8212; хочется. Что для этого требуется? Надо &#8230; <a href="http://softm.org.ua/ustanovka-dyndns-na-altlinux-aka-russkij-debian/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ну во-первых, зачем нужен Dynamic Dns? Самое простое объяснение, &#8212; нужен &#171;по-бедности&#187;. Потому, как статический ай-пи не всегда доступен, а иметь тестовый интернет-доступный веб-сервер (фтп/ссш и так далее), причем управляемый и хостируемый лично, &#8212; хочется.</p>
<p><strong>Что для этого требуется? </strong></p>
<ul>
<li>Надо быть зарегистрированным пользователем сервиса www.dyndns.com.</li>
<li>Надо установить специального демона, который будет отправлять информацию про ваш ip (точнее ip выбранного интерфейса) на сервер dyn-dns провайдера.</li>
<li>Надо настроить этот софт</li>
</ul>
<p><strong>Установка</strong></p>
<p>Итак, начнет по-очереди, со второго пункта. В &#171;Альте&#187; есть софтинка под названием ddclient. Ставиться просто, и обычно для Дебиана/АльтЛинукса:</p>
<ul>
<li>apt-cache search dyndns &#8212; нашел</li>
<li>apt-get install ddclient &#8212; установил</li>
<li>chkconfig ddclientd on &#8212; установил в &#171;автозапуск&#187;</li>
<li>service ddcliend restart &#8212; запустил на исполнение</li>
</ul>
<p>Конечно, надо бы это все дело настроить, иначе, работать ничего не будет. Тут пригодятся учетные данные с сервера DynDNS. Регистрация для некоторых доменов у них бесплатная, с оговоркой на количество запросов к ДНС сервису. Причем, последнее лично мне явно не критично, &#8212; ведь там счет идет на тысячи. Если же у вас дойдет до коммерческого использования данного комплекса, то 10-15 долларов в год, не будут большим бременем. На том и основан расчет &#171;дин-днсовцев&#187;</p>
<p><strong>Настройка</strong></p>
<p>Конфигурационный файлы демон ddclientd указываются в init.d скрипте (/etc/init.d/ddclientd). На АльтЛинуксе все это дело лежит в /etc/ddclient/ddclient.conf. Его нам и настраивать. Лично я пошел на dyndns.com и решил поискать мануал, который бы все это описывал. Ибо шарить по манстраницам, неохота.</p>
<p>Если у вас только один сервер, и надо привязать  &#171;единственную&#187; веб-страницу или фтп, то можно использовать данный конфиг:</p>
<pre># Basic configuration file for ddclient
#
# /etc/ddclient.conf
daemon=60
cache=/tmp/ddclient.cache
pid=/var/run/ddclient.pid
use=linksys, fw=linksys, fw-login=admin, fw-password=admin
login=your-username
password=your-password
protocol=dyndns2
server=members.dyndns.org
custom=yes, перенаправляемый.домен
</pre>
<p>В строке custom= указываете свой домен, что вы выбрали/перенаправили на сервисе DynDNS.com, имя пользователя и пароль. Далее перезапускаете демона. Смотрите в /var/log/messages, и убеждаетесь в том, что все запускается. В моем случае пришлось дать побольше прав на /etc/ddcleint/ddclient.conf, поскольку при запуске демон писал про недостаточность прав.Юмор ситуации,  &#8212; теперь демон ругается на то, что прав очень много. Но работает.</p>
<p>Уже потом, выяснилось, что надо сделать собственником конфига dyndns:dyndns. И поставить права u+rw. Тогда &#8212; &#171;все в порядке&#187;:</p>
<ul>
<li>cd /etc/ddclient &lt;- где конфиг</li>
<li>chwon dyndns:dyndns ./ddclient.conf &lt;- исправили владельца конфига</li>
<li>chmod 0 ./ddclient.conf</li>
<li>chmod u+rw ./ddclient.conf &lt;- это я так права ставлю :)</li>
<li>service ddclientd restart &lt;- перезапуск демона</li>
<li>tail -n 20 /var/log/massages &lt;- убеждаемся, что демон при запуске не выдает предупреждений</li>
</ul>
<p>Интересно, конечно, конфиги ведь обычно правит &#171;рут&#187;. НО это уже очевидно рассуждения о вкусе и цвете.</p>
<p>ПС. Кстати, уже написав статью, я решил порыться в настройках адсл-модема, и обнаружил, что там спокойно можно настроить &#171;динднс&#187;. Правда, вот вопрос, или оно будет работать и что будет, если &#171;динднс&#187; решить изменить формат запросов. Но, по крайней мере, модем пароли принимает, формы работают. Речь про Длинк 2500У (который в Украине очень распространен) . Кстати, &#8212; модем должен быть включен с WAN-настройкой под пппое-клиент, а не под бридж, иначе умная софтинушка не даст настроить динднс. И правильно сделает.</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/ustanovka-dyndns-na-altlinux-aka-russkij-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vsftpd под альтлинуксом</title>
		<link>http://softm.org.ua/vsftpd-pod-altlinuksom/</link>
		<comments>http://softm.org.ua/vsftpd-pod-altlinuksom/#comments</comments>
		<pubDate>Sat, 22 May 2010 23:00:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=356</guid>
		<description><![CDATA[Вообще vsftpd &#8212; это хреновый выбор для альтлинукса. Но я привык уже, поэтому честно говоря плевать что он не поддерживает UTF8, которое там везде внутри. Гораздо больше &#8230; мозг тот факт, что необходимо каждый раз настраивать это дело. Ну неужели &#8230; <a href="http://softm.org.ua/vsftpd-pod-altlinuksom/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Вообще vsftpd &#8212; это хреновый выбор для альтлинукса. Но я привык уже, поэтому честно говоря плевать что он не поддерживает UTF8, которое там везде внутри. Гораздо больше &#8230; мозг тот факт, что необходимо каждый раз настраивать это дело. Ну неужели нельзя вставить туда все, чтобы установив это дело с апт-инсталлом оно сразу заработало? Товарищи студенты, вы &#8230;ли</p>
<p>Итак, статья &#8212; как настроить это дело.</p>
<ul>
<li>Устанавливаем vsftpd : apt-get install vsftpd</li>
<li>перезапускаем xinetd чтобы убедиться, &#8212; что фтп нихрена не отвечает, радуемся, в альтлинуксе даже софт делается сраными студентами</li>
<li>идем в /etc/xinit.d/vsftpd &#8212; проверяем или файл запуска для супердемона &#8212; на месте</li>
<li>/etc/xinetd.conf &#8212; комментируем решетом заботливо указапнный флажок only_from 127.0.0.1.</li>
<li>проверяем /etc/vsftpd/conf, я исправил следующие директивы:</li>
</ul>
<p>local_enable=YES<br />
write_enable=YES<br />
chown_uloads=YES<br />
chown_username=myname!<br />
chmod_enable=YES // разрешить измерение прав</p>
<p>// следующие две директивы создают все файлы с правами 0755. Почему надо ве &#8212; я не понял :)<br />
file_open_mode=0755<br />
local_umask=0755</p>
<p>Перезапускаем xinitd</p>
<p>Заработало. Аминь и 73!</p>
<p>Для себя, поскольку мой сервер иногда работает как веб-сервер, я добавил еще одного пользователя (включив его в группу webmaster), для которого сделал пользовательский файл для vsftpd. Значит, чтобы заходит им на роот-папку веб сервера и правил там, что надо, когда надо.</p>
<p>для этого надо добавить в /etc/vsftpd/conf:</p>
<p>user_config_dir=/etc/vsftpd/user_conf/</p>
<p>и в директории /etc/vsftpd/user_conf/ созда ть файлик  &lt;имя пользователя&gt; в котором написать что его локальная директория это /vat/www/html/ :</p>
<p>local_root=/var/www/html/</p>
<p>Само собой (и коню) понятно, что надо этого юзера, добавить в группу webmaster</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/vsftpd-pod-altlinuksom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка ТОР под АльтЛинуксом &#8230;</title>
		<link>http://softm.org.ua/ustanovka-tor-pod-altlinuksom/</link>
		<comments>http://softm.org.ua/ustanovka-tor-pod-altlinuksom/#comments</comments>
		<pubDate>Sun, 16 May 2010 22:11:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>
		<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=338</guid>
		<description><![CDATA[Сегодня установил наконец на свой сервер, которому уже более года, TOR. Отделался достаточно дешево, хоть с первого раза, конечно ничего не вышло. Ставил, чтобы проверить возможность работы некоторых моих приложений под ПХП. ДО этого момента приходилось перебиваться с помощью виндовс-версии &#8230; <a href="http://softm.org.ua/ustanovka-tor-pod-altlinuksom/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Сегодня установил наконец на свой сервер, которому уже более года, TOR. Отделался достаточно дешево, хоть с первого раза, конечно ничего не вышло.<br />
Ставил, чтобы проверить возможность работы некоторых моих приложений под ПХП. ДО этого момента приходилось перебиваться с помощью виндовс-версии TOR, а это все-таки небольшой минигит. Да и неудобно как-то.</p>
<div id="attachment_348" class="wp-caption aligncenter" style="width: 203px"><a href="http://softm.org.ua/wp-content/uploads/2010/05/top-left.png"><img class="size-full wp-image-348" title="TOR" src="http://softm.org.ua/wp-content/uploads/2010/05/top-left.png" alt="TOR" width="193" height="79" /></a><p class="wp-caption-text">TOR</p></div>
<p>Кроме того в сети у меня несколько компьютеров, и иногда необходимо бывает обеспечить анонимность при работе с каждого из них.</p>
<p>Теперь пару слов про саму установку и настройку.</p>
<p>Во-первых, я использовал AltLinux, поэтому init.d скрипт, например, взял оттуда полностью. Иначе говоря, просто установил tor, который шел в комплекте с  Сизифом (это такой репозиторий готовых пакетов у них, альтлинуксовцев), затем там же взял Polipo &#8212; это прокси-сервер, который собственно позволяет работать с тор-сетью, из пхп-приложений, да и просто из браузера, если понадобиться.</p>
<p>Если вам не хочется этого делать, вы можете скачать его здесь: <a href="http://softm.org.ua/wp-content/uploads/2010/05/tor1.zip">Стартап-скрипт для TOR (AltLinux).</a> Понятно, что устанавливать это надо в init.d.</p>
<p>Несколько слов про нюансы установки polipo. Оказывается, что с ним не все так просто. Во-первых, значение конфигурационных параметров polipo надо указывать в кавычках. При этом наблюдается минимум проблем с данным софтом. Я не разобрался как включить логирование при запуске данной задачи, поэтому пришлось немного потанцевать с бубном, чтобы определить данную, небольшую особенность. Вы можете скачать мою рабочую конфигурацию polipo &#8212; вот здесь  <a href="http://softm.org.ua/wp-content/uploads/2010/05/polipo-config.zip">Конфигурация polipo</a>.</p>
<p><strong>Update:</strong> Ложить это дело надо в /etc/polipo/conf &#8212; который, по умолчанию, после установки альтлинусовского пакета &#8212; <strong>пустой</strong>. После чего, можно подключиться к порту 8118, как к прокси серверу. Конечно, прелдварительно намучавшись с установкой TOR. Но, про это дальше&#8230;</p>
<p><span style="color: #ff0000;"><em><strong>Примечание</strong>:  Работоспособность директиры AllowedHosts конфиг-файла polipo я бы поставил под вопрос :) ПО карйней мере, в таком вот варианте:</em><br />
<em>allowedClients = &#8217;127.0.0.1, 192.168.2.3, 192.168.2.1&#8242;<br />
полипо разрешает подлючаться, например, клиенту с адресом 192.168.2.75 &#8230; очевидная ошибка в коде? По крайней мере, игра с кавычками и вариантами конфигурации, вылилась в такой вариант этой строки. К сожалению нету желания баг-фиксить это дело &#8230; Да и времени ноль. Простите меня полиповцы :) </em></span></p>
<p>Сам TOR пришлось устанавливать вручную &#8212; то есть скачать его с офсайта проекта TOR, я взял последнюю нестабильную версию <a href="https://www.torproject.org/download-unix.html.ru">0.2.2.13</a></p>
<p>Сама по себе сборка-компиляция, стандартная для UNIX: ./configure &amp; make &amp; make install. Само собой компилировать и устанавливать это дело лучше под &#171;рутами&#187;, хотя бы потому, что ТОР устанавливается как /usr/local/bin/tor, а сама директория /usr/local/bin вот на моем &#171;Линуксе&#187; &#8212; отсутствовала.</p>
<p>Из изменений в стандартном АЛьтЛинуксе, я просто сделал правку пути в init-скрипте, чтобы указать на новую директорию тор. НУ и немного подправил пути  лог файлам, которые поместил в стандартном /var/log/*. Кстати, их пришлось создать, непонятно почему процесс тора этого сделать сам не захотел. Собственно после этого все заработало.</p>
<p><strong>Update:</strong> При второй установке, я разместил лог-файлы в /var/log/tor/* &#8212; и они создались автоматически. Вероятно дело в группе/пользователе _tor, которым принадлежит этот каталог (Пользователь root:_tor &#8212; для каталог и пользователь _tor:_tor на сам лдог файл).</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/ustanovka-tor-pod-altlinuksom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Что нам стоит ExtJS-интерфейс интерфейс построить &#8230;</title>
		<link>http://softm.org.ua/chto-nam-stoit-extjs-interfejs-interfejs-postroit/</link>
		<comments>http://softm.org.ua/chto-nam-stoit-extjs-interfejs-interfejs-postroit/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 11:31:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=335</guid>
		<description><![CDATA[На &#171;лансерских&#187; сервисах наметился тренд к использованию продвинутых яваскриптов. Проще говоря &#8212; веб-мастера ринулись в веб2.0. А еще проще, &#8212; все хотят чтобы у ихнего домашнего-, рабочего-, друга- да и просто хобби-, сайта, них был супер-пупер навороченный админ/пользовательский интерфейс. Приходиться, &#8230; <a href="http://softm.org.ua/chto-nam-stoit-extjs-interfejs-interfejs-postroit/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>На &#171;лансерских&#187; сервисах наметился тренд к использованию продвинутых яваскриптов. Проще говоря &#8212; веб-мастера ринулись в веб2.0. А еще проще, &#8212; все хотят чтобы у ихнего домашнего-, рабочего-, друга- да и просто хобби-, сайта,  них был супер-пупер навороченный админ/пользовательский интерфейс. </p>
<p>Приходиться, таким образом, изучать вещи, которыми я изначально старался не заниматься, в силу их паршивой совместимости со всеми имеющимися браузерами, в смысле &#8212;  сразу со всеми. Проблема то банальна как стакан воды. Куча разработчиков по наплодили выгодных только им, дорогим, решений. Причем w3c стандартов, я так вижу, при єтом они читают мало-мало.</p>
<p>Хорошо, что, еще народ подсуетился и разработал пару-тройку библиотек, чтобы с этим безобразием (я имею в виду запросы клиентов), было легче бороться.</p>
<p>Наиболее продвинутые, из представленных на обозрение публики, сейчас &#8212; ExtJX и jQuery. Обе они предназначены для создания динамических интерфейсов. У обеих есть свои нюансы. В настоящий момент, пришлось взяться за изучение обеих библиотек сразу, поскольку запросы звучат неоднозначно. Одним нужен &#8212; просто интерфейс, абы работало. А другим &#8212; чтобы обязательно на extJS.</p>
<p>Да и свои  проекты, хотелось бы подсуетиться и сделать более динамичными. Тем более их и так надо переделывать в силу проблем с бустродействием на хостинге и недоделанности.</p>
<p>Вот несколько примеров из ExtJS. Они есть в &#171;примерах&#187; дистрибутива, но тем не менее, я немного подсуетился и сделал их более понятными для простого русского программиста. А то, ихние комментарии, не всегда понятны. А примеры. несмотря на всю свою простоту, достаточно занятные.</p>
<p>Просто переключение между панелями.<br />
Зачем оно надо: есть юзер интерфейс. В нем поле с паролями надо сделать недоступным изначально,  а если юзер, все-таки захочет поменять что-то в это деле, то нужно предложить нажать ему кнопку &#171;Поменять пароли&#187;. Задача тривиальная, можно ее решить и с помощью банальных onclick(), но использование extJS делает ваш код более &#171;организованным&#187; и более &#171;простым&#187;, для изменений, в конечном итоге. Ведь согласитесь, все стандартизированное, легче ремонтируется, чем уникальное (кустомное) .</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/chto-nam-stoit-extjs-interfejs-interfejs-postroit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка SSH в АльтЛинукс, или хождение по мукам (+дополнения)</title>
		<link>http://softm.org.ua/nastrojka-ssh-v-altlinuks-ili-xozhdenie-po-mukam/</link>
		<comments>http://softm.org.ua/nastrojka-ssh-v-altlinuks-ili-xozhdenie-po-mukam/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 17:27:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=296</guid>
		<description><![CDATA[Вот, пришло время обновить сервер. Железо, для этого дела, стоит под ногами уже давно, это бывшая рабочая станция. Осталось дело за &#8230; главным. За софтом. Поскольку маразматическая идея вроде установки винды, хоть и более простая при реализации, мне в голову &#8230; <a href="http://softm.org.ua/nastrojka-ssh-v-altlinuks-ili-xozhdenie-po-mukam/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Вот, пришло время обновить сервер. Железо, для этого дела, стоит под ногами уже давно, это бывшая рабочая станция. Осталось дело за &#8230; главным. За софтом. Поскольку маразматическая идея вроде установки винды, хоть и более простая при реализации, мне в голову прийти не могла, осталось вспомнить. как когда то настраивал сервер на АльтЛинукс. Собственно он и сейчас пашет, пока с новым не &#171;порешаю&#187;.</p>
<p>Собственно тут и начались мучения, ход которых попробую описать на моем &#171;проектном&#187; блоге.</p>
<p>Итак, вначале был &#8230; выбор дистрибутива, казалось бы &#8212; ерунда, мелочь. Не тут то было. У &#171;АльтЛинукса&#187;, &#8212; все очень сложно. Вместо того, чтобы сложить все яйца в одну корзину, и уже хоть как- то пытаться уберечь их, команда сделала до черта дистрибутивов и с попеременным успехом борется с ними.</p>
<p>Поскольку пока у меня побед, в схватке с последним дистрибутивом, что я пробовал &#8212; все-таки больше, чем с другими версиями, с него и начну.</p>
<p>Итак, AltLinux Desktop 4.1.1. Или просто АльЛинукс для рабочего места 4.1.1. Почему именно эта версия ? Да непочему, а так вышло. Второй попавшийся под раздачу дистрибутив, с которым работаю.</p>
<p>Итак, про победы.<br />
<strong>Как происходит настройка (openssh) ssh сервера</strong>.</p>
<p>Вкратце, можно сказать, что &#8212; таки настраивать надо.</p>
<p>Для начала, документация умалчивает про необходимость ручного формирования rsa/dsa ключей, и их укладывания в нужные места. Для хоста. Могли бы и вставить это дело в apt-get install? А нафига, ответит вам любой студентишко. Хай гребутся те, кому это надо &#8230;</p>
<p>Ну да ладно, сгенерировал, с помощью:</p>
<p>ssh-keygen -t rsa<br />
ssh-keygen -t dsa</p>
<p>Два ключа, сложил их куда надо (/etc/openssh/ssh_host_rsa_key и второй туда же &#8212; /etc/openssh/ssh_host_dsa_key), запустил сервер, прописал chkconfig sshd on. Начал к нему подключаться, а на экране &#8212; нет подходящих методов автентификации.</p>
<p><span style="color: #ff0000;">Примечание:</span> <em>В 2010/05 слетел сервер. То есть я его убил. Пришлось переставлять. Дык ненадо оказалось указывать никаких способо аутентификации без пароля. Исправли, или как &#8230; </em></p>
<p>Оказалось, что документация по АльтЛинуксу советует отключать ввод паролей с клавиатуры. То бишь работать только с ключами. Оно классно, но блин головой то надо думать. в 150 тысяч раз проще работать с паролем. На да ладно, указал, что можно использовать ввод с клавиатуры, &#8212; и все заработало.</p>
<p>Уррагх!  Победа номер один. Пока же остается разобраться с pppoe, которое работает просто по дерьмовому. То есть подключатеся, но ДНС не пашет. Хоть ты умри &#8212; не работает по человечески. Пакеты не проходят, что то там еще происходит, &#8212; но не работает.</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/nastrojka-ssh-v-altlinuks-ili-xozhdenie-po-mukam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пара проектов &#8230; или как победить XML.</title>
		<link>http://softm.org.ua/para-proektov-ili-kak-pobedit-xml/</link>
		<comments>http://softm.org.ua/para-proektov-ili-kak-pobedit-xml/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 23:51:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>

		<guid isPermaLink="false">http://softm.org.ua/?p=283</guid>
		<description><![CDATA[Почти завершил пару проектов. Точнее небольших проектиков. Сначала сделал довольно симпатичную админ панель. Причем достаточно необычную. Дело в том, что по желанию заказчика, вся информация должна была сохраняться в XML-ах. Дело в том, что он гдето нарыл флеш-карту, то есть &#8230; <a href="http://softm.org.ua/para-proektov-ili-kak-pobedit-xml/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Почти </strong>завершил пару проектов. Точнее небольших проектиков.</p>
<p>Сначала сделал довольно симпатичную админ панель. Причем достаточно необычную. Дело в том, что по желанию заказчика, вся информация должна была сохраняться в XML-ах. Дело в том, что он гдето нарыл флеш-карту, то есть веб-магазин, заточенный под использование XML формата. Вероятно для экшн-скриптов это хорошо.</p>
<p>Ну, что я могу сказать, XML обработка, также как впринципе и любая другая обработка текста &#8212; сложна и достаточно трудно реализуема. Чтобы народ не городил, про общую доступность методов обработки информации, которые встроены в PHP &#8212; эт овсе ерундистика, причем полная. Правда в то, &#8212; что дешевой и быстрой, системы обработки теста &#8212; не бывает.</p>
<p>SimpleXML</p>
<p>Для обработки и парсинга. я использовал этот самый симплХМЛ. Понравился он мне, или нет? Сложно сказать. Не все так сложно, но есть моменты, окторые убивают. Причем напрочь. Например, нет удалентия &#171;узла&#187; дерева. Почему спрашивается, было бы его не добавить в пхп-шник? Ан зачем, крутые программеры хай юзают DOM. То бишь идея состоит в том, что все простое &#8212; то есть развитие дерева, и его изменение делать через простенький SimpleXML. А все &#171;сложное&#187; &#8212; то есть удаление веток, через DOM.</p>
<p>Ну не бред, скажите, только честно?</p>
<p>Кроме того, клиент решил меня поразить наповал, и дал в качестве примера хмл-файл, который имел ноды, содержащие информацию в &#8230; html. Эт опрсто абзац. Ведь интерфейсы PHP DOM не позволяют сделать элекментарных вещей. Например, получить текст, который лежит внутри элемента. Мало того, не каждый текст, который типа html-ный может быть засунут, во внутрь такой ноды.</p>
<p>Пришлось извратиться, причем довольно таи нестандартным способо. Вот скажите, как запхнуть XML текст (HTML-текст, но суть то почти одна и тажке, верно? ) вовнутрь ноды? Очень просто. Вот решение, только не ржите :)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> xml_save_main_withreplace <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #000088;">$what</span><span style="color: #339933;">,</span> <span style="color: #000088;">$to</span>  <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$require_path</span><span style="color: #339933;">,</span> <span style="color: #000088;">$config_main_xml</span><span style="color: #339933;">,</span> <span style="color: #000088;">$config_xml_header</span><span style="color: #339933;">;</span>      
   <span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$what</span><span style="color: #339933;">,</span> <span style="color: #000088;">$to</span><span style="color: #339933;">,</span> <span style="color: #000088;">$config_xml_header</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$s</span> <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">asXML</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #990000;">file_put_contents</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$require_path</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$config_main_xml</span><span style="color: #339933;">,</span>  <span style="color: #000088;">$str</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>      
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Вкратце &#8230; делаю ноду, в нее заношу какойто текст, значиться.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">        <span style="color: #000088;">$curnode</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$what</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'{{{inserthere}}}'</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//</span></pre></td></tr></table></div>

<p>Далее же, когда приходит очередь сохранить весь документ, просто заеняю это дело, с помощью указанной выше функции</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">        xml_save_main_withreplace <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #000088;">$what</span><span style="color: #339933;">,</span> <span style="color: #990000;">html_entity_decode</span><span style="color: #009900;">&#40;</span> pprocess<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$p_desc</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>  <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Маленький &#171;прикольчик&#187; состоит в том, что все подряд, как я уже писал, пхать в этот текст нельзя. То есть нужна верификация, вот такого плана:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">   <span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$config_xml_header</span>  <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&lt;item&gt;&quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">html_entity_decode</span><span style="color: #009900;">&#40;</span> pprocess<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$p_desc</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;/item&gt;&quot;</span><span style="color: #339933;">;</span>
   <span style="color: #000088;">$xml</span> <span style="color: #339933;">=</span> <span style="color: #339933;">@</span><span style="color: #990000;">simplexml_load_string</span><span style="color: #009900;">&#40;</span>  <span style="color: #000088;">$str</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #000088;">$xml</span> <span style="color: #009900;">&#41;</span> 
   <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$errs</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Can't load anyone HTML here! Your have unclosed tags somewhere in description field. Pls verify this!&quot;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>:) Кароче цирковое представление. Ну а как иначе решить эту проблему? Я лично не понял. Информации по XML и PHP, и решение там всего этого хлама &#8212; ноль. Зато куча теоретисеских статей, про то, как лучше. Да зачем они нужны, спрашивается? Ведь человек решает конкретную проблему, причем профи надо сделать это быстро. а не коппаться в &#171;доках&#187; и россыпях плассов &#171;DOMа&#187;.</p>
<p><strong>Второй проект, или парсинг вебархива.</strong></p>
<p>Гениальная идея. между прочим. По адресу web.archive.org есть огроменный архив информации. За разные года. То есть, всегда остается возможность посмотреть свои гениальные старые сайты. Я вот имел пару &#8230; куда они делись.<br />
Дык вот, заказчикпоставил задачу &#8212; выкачать старый &#171;снапшут&#187;, и сделать из него базу. Сделал. Качается. Защиты пока не поставили. Хоть можно не сомневаться, наверное, поставят &#8230; А сделали бы выкачку одним файлом &#8230; дык и вообще чудно было бы. Ан нет &#8230; </p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/para-proektov-ili-kak-pobedit-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Анонимный серфинг с помощью Torpark (исправлено)</title>
		<link>http://softm.org.ua/anonimnyj-serfing-s-pomoshhyu-torpark-ispravleno/</link>
		<comments>http://softm.org.ua/anonimnyj-serfing-s-pomoshhyu-torpark-ispravleno/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 17:13:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>

		<guid isPermaLink="false">http://softm.org.ua/anonimnyj-serfing-s-pomoshhyu-torpark-ispravleno/</guid>
		<description><![CDATA[Несколько лет назад, я публиковал свои статьи в издании .hostinfo, вот теперь очевидно пришло время немного исправить некоторые из них и дополнить новыми данными. В первую очередьрешил переделать материал про анонимный браузер TorPark. Сейчас, наверное, уже никого не удивит появление &#8230; <a href="http://softm.org.ua/anonimnyj-serfing-s-pomoshhyu-torpark-ispravleno/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>Несколько лет назад, я публиковал свои статьи в издании .hostinfo, вот теперь очевидно пришло время немного исправить некоторые из них и дополнить новыми данными. В первую очередьрешил переделать материал про анонимный браузер TorPark.</em></p>
<p>Сейчас, наверное, уже никого не удивит появление в браузере страницы, которая локализована именно для вашей страны. Это стало настолько же привычно, как и появление в популярном российском поисковике Яндекс рекламы, которая ориентирована именно на российского (или украинского) серфера. Также ни для кого, наверное, уже не секрет, что некоторые популярные веб-ресурсы, которые заинтересованы в увеличении количества посетителей, умеют и стараются определять физическое местоположение своих посетителей. Это явление вошло в сетевые будни под названием &#171;геотаргетинг&#187; и хорошо знакомо профессиональным веб-программистам. Причем следует отметить, что местоположение определяется как минимум с точностью до страны, из которой подключается веб-серфер. Иногда используемые базы веб-адресов настолько детальны, что позволяют даже указать город, из которого выполняется подключение. Хотя такая точность, конечно, более характерна в случае нахождения посетителя в США или одной из высокоразвитых стран, в которых Интернет уже вошел в большую часть домов. Анализ аудитории предоставляют также такие отечественные счетчики, как Hotlog, Spylog, LiveInternet, а также многие другие ресурсы. Бесплатные базы данных, предназначенные для геотаргетинга, доступны на ряде зарубежных и отечественных веб-сайтов. А более детальные данные (с поддержкой регулярного обновления) можно попросту купить за определенную плату.</p>
<p class="note-r"><strong>Приваси и Интернет</strong></p>
<p class="note-r">&nbsp;</p>
<p class="note-r">Понятно, что пользователь, местоположение которого хорошо известно, не застрахован не только от целевой рекламы, но и от специально нацеленных на него страниц. Таким образом, например, можно регулировать цену для посетителей из различных стран на товары в произвольном веб-магазине. Однако доступность информации о пользователе и его личная приватность — вещи не совсем совместимые. Не говоря уже о возможности контроля конкретных запросов ведущими поисковыми системами и о возможности доступа к таким результатам не только для специальных служб, но и для простых коммерческих покупателей статистики, вмешательство в приватность даже на уровне определения страны веб-сервера само по себе — малоприятный факт. Чтобы хоть как-то обезопасить себя (и своих близких) от вероятных нарушений личной безопасности, был разработан специальный комплекс мер, который декларирует анонимность перемещений в Сети. Сеть, названная TOR, призвана скрыть ваш IP-адрес путем использования специальным образом настроенной и свободно расширяемой распределенной вычислительной системы.</p>
<p class="note-r">&nbsp;</p>
<p class="note-r">
<p style="text-align: center"><img src="http://softm.org.ua/wp-content/uploads/2008/07/tor1.jpg" alt="tor1.jpg" /></p>
<p class="note-r">
<p class="note-r" align="left"><strong>Что такое TOR</strong></p>
<p class="note-r" align="left">&nbsp;</p>
<p class="note-r" align="left">В основе сети TOR лежит идея пропускания трафика от целевого источника по случайному маршруту. Таким образом, для скачивания конкретной веб-страницы вам предоставляется безопасный туннель, который проходит через несколько случайно выбранных серверов этой сети. Поскольку данные про подключения внутри указанной сети постоянно уничтожаются, проследить, откуда именно происходит подключение к указанному веб-серверу, достаточно сложно. Фактически цель создания сети TOR — это построение достаточно простой и легкой в использовании анонимной сети для передачи данных. Сконструированная по принципу максимальной открытости, эта структура позволяет пропускать не только веб-трафик, но и, например, обеспечивать скрытый от получателя туннель SSH, чем сделать анонимным свое авторство в некоем веб-проекте.</p>
<p class="note-r" align="left">
<p class="note-r" align="left"><strong>Torpark — клон Firefox cо встроенным подключением к TOR</strong></p>
<p class="note-r" align="left">&nbsp;</p>
<p class="note-r" align="left">Для использования подключения к сети TOR произвольный пользователь может использовать абсолютно бесплатное программное обеспечение, которое доступно на веб-сайте системы. В том же случае, если необходимо обеспечить именно анонимный серфинг, к примеру, с целью сокрытия списка посещаемых вами веб-сайтов, можно воспользоваться специальной сборкой браузера Firefox. Указанный программный продукт, который распространяется под названием Torpark, не только включает поддержку подключения через сеть TOR, но и является полностью мобильным win32-приложением. Идея разработчиков заключается в создании браузера, который будет запускаться (а также хранить всю информацию) с внешнего USB-носителя.</p>
<p class="note-r" align="left">&nbsp;</p>
<p class="note-r" align="left">Torpark можно загрузить с <a href="http://torpark.nfshost.com/download.php">официального веб-сайта этой программы</a>. Фактически инсталлятор представляет собой самораспаковывающийся архив, поскольку браузер хранит все данные исключительно внутри каталога, в который он распакован и из которого он запускается. По умолчанию в инсталляционном архиве Torpark не встроена поддержка русской локализации. Однако эта неприятность легко устраняется с помощью установки со страницы загрузки дополнительных языковых модулей необходимого вам расширения. Для большего удобства пользователей веб-ссылка на страницу установки локализации прописана в закладках браузера (меню Boormarks — <a href="http://releases.mozilla.org/pub/mozilla.org/firefox/releases/1.5.0.7/win32/xpi/">Add languages to Torpark</a>).</p>
<p class="note-r" align="left">&nbsp;</p>
<p class="note-r" align="left">
<p class="note-r"><strong>Возможности браузера</strong></p>
<p class="note-r" align="left">&nbsp;</p>
<p class="note-r" align="left">
<p class="note-r">Поскольку Torpark — это всего лишь расширенная версия Firefox, то его пользователям открыты все другие возможности «Огненной лисы». Например, полностью доступны к использованию внешние расширения и схемы оформления этого браузера, а также ставшие уже стандартными плагины-расширения вроде Macromedia Flash или Adobe Acrobat. Последняя сборка Torpark на момент написания статьи (а именно — 1.5.0.7) использует для своей работы самую последнюю сборку Firefox. Таким образом, можно сделать вывод, что разработка новых возможностей и поддержка обновлений браузера достаточно оперативны и своевременны. Основным отличием от Firefox в Torpark является наличие установленных по умолчанию расширений. Для своевременного управления подключением к сети TOR используется расширение Torbutton, которое фактически добавляет в браузер поддержку быстрого переключения прохождения трафика через сеть TOR. С помощью ссылки в строке состояния, которую добавляет это расширение, можно в любой момент оборвать подключение через TOR и запустить прямое подключение.</p>
<p class="note-r">&nbsp;</p>
<p class="note-r">
<p style="text-align: center"><img src="http://softm.org.ua/wp-content/uploads/2008/07/tor2.jpg" alt="tor2.jpg" /></p>
<p class="note-r">&nbsp;</p>
<p class="note-r">&nbsp;</p>
<p class="note-r">Среди джентльменского набора веб-расширений, включенных в базовую версию Torpark, есть и хорошо известные пользователям Firefox плагины. Это Adblock и NoScript, которые предназначены для блокировки баннеров и ограничения выполнения кода JavaScript. Поскольку расширение Adblock используется практически любым мало-мальски опытным хакером Firefox, то его включение в Torpark попросту экономит время, необходимое для установки этого расширения.</p>
<p class="note-r"><strong>Дополнительная анонимность</strong></p>
<p>Как известно, большинство браузеров сохраняют в процессе ваших путешествий по Сети историю посещения вами узлов Паутины. Torpark изначально не ведет журнала посещений и не выводит подсказок в строке адресов браузера, таким образом, еще больше увеличивая защищенность и анонимность веб-серфинга. Кроме того, среди изначально встроенных расширений установлен плагин Live ip Address, который, как следует из его названия, специально предназначен для показа IP-адреса, под которым вы видны для посещаемого вами веб-сервера. Фактически с помощью элементарного сравнения IP-адреса вашего подключения в Сети и указываемого плагином значения можно убедиться в вашей анонимности. Конечно, не помешает изредка проверять работоспособность сети TOR на сетевых ресурсах, которые предназначены для контроля анонимности, — вроде <a href="http://leader.ru/secure/who.html">этой страницы</a> сайта leader.ru.</p>
<p>Torpark предусматривает некоторые на первый взгляд довольно безапелляционные методы обеспечения безопасности. Например, вы не сможете увидеть окно браузера до тех пор, пока он не подключится к сети TOR. Хотя, с одной стороны, такой процесс достаточно утомителен для пользователей, которые пользуются низкоскоростными соединениями, но он гарантирует, что при использовании этого программного обеспечения вы будете хоть как-то защищены от целевых методов, которыми пользуются некоторые сетевые ресурсы в своей повседневной работе.</p>
<p class="note-r"><strong>Недостатки Torpark</strong></p>
<p>При работе на медленных линиях Torpark испытывает определенные трудности с подключением к серверному кругу сети TOR. Таким образом, необходимо потратить некоторое время на соединение. В тех случаях, когда нужно срочно подключиться к Сети, можно использовать другую инсталляцию Firefox, поскольку по умолчанию Torpark не предоставляет возможность прямого подключения к Интернету и при запуске выводит окно для подтверждения подключения к TOR. Поскольку сеть-анонимайзер — это дело добровольное, нет никакой гарантии, что в тот момент, когда ее возможности будут действительно необходимы, она не будет перегружена запросами других пользователей. Конечно, вы всегда можете увеличить потенциал TOR за счет <a href="http://tor.eff.org/docs/tor%20doc%20server.html.ru">пожертвования</a> некоторой части трафика вашего личного (а возможно, служебного или корпоративного) шлюза. Кроме того, свобода личности и работы в Сети довольно-таки неприятные для любой тоталитарной спецслужбы понятия, поэтому можно предполагать ограничения для работы с TOR в некоторых странах.</p>
<p style="text-align: center"><img src="http://softm.org.ua/wp-content/uploads/2008/07/tor3.jpg" alt="tor3.jpg" /></p>
<p>Сетевые права и свободы, которые столь часто не берутся в расчет как отдельными государственными службами, так и сетевыми мошенниками, вполне возможно обеспечить себе самостоятельно. Никому не приятна ситуация, когда администратор вашего учреждения следит за списком веб-сайтов, которые вы посещаете, и передает их «выше». Кроме того, иногда такая инсайдерская информация может как очень серьезно навредить репутации организации, так и привести к утечке важной коммерческой информации. И для того чтобы защититься от таких неприятностей, достаточно всего-навсего распаковать архив с последней версией Torpark и дождаться подключения к серверному кругу TOR.</p>
<p class="add">Полезные ссылки:</p>
<ul class="add">
<li><a href="http://tor.eff.org/index.html.ru">Веб-сайт Torpark</a></li>
<li><a href="http://torpark.nfshost.com/">Веб-сайт сети TOR</a></li>
<li><a href="http://leader.ru/secure/who.html">Проверка параметров браузера клиента на leader.ru</a></li>
</ul>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/anonimnyj-serfing-s-pomoshhyu-torpark-ispravleno/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Основные ошибки начинающих (и не только) блоггеров</title>
		<link>http://softm.org.ua/osnovnye-oshibki-nachinayushhix-i-ne-tolko-bloggerov/</link>
		<comments>http://softm.org.ua/osnovnye-oshibki-nachinayushhix-i-ne-tolko-bloggerov/#comments</comments>
		<pubDate>Fri, 02 May 2008 23:14:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>

		<guid isPermaLink="false">http://softm.org.ua/osnovnye-oshibki-nachinayushhix-i-ne-tolko-bloggerov/</guid>
		<description><![CDATA[Вот набрел на очередной креатив. Оригинально называлось оно, &#171;Про 7-мь ошибок начинающих блоггеров&#187;. Пришлось исправить ошибки и неологизмы, от которых, извините, тошнит. А так ничего материальчик, ой по теме моего, фактически уже и блога. Мне стало не лень отредактировать это &#8230; <a href="http://softm.org.ua/osnovnye-oshibki-nachinayushhix-i-ne-tolko-bloggerov/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://softm.org.ua/wp-content/uploads/2008/05/blogggger.jpg" title="Ошибки блоггера - дело святое" alt="Ошибки блоггера - дело святое" align="left" />Вот набрел на <strong>очередной</strong> креатив. Оригинально  называлось оно, &#171;Про 7-мь ошибок начинающих блоггеров&#187;. Пришлось исправить ошибки и неологизмы, от которых, извините, тошнит. А так ничего материальчик, ой по теме моего, фактически уже и блога. Мне стало не лень отредактировать это дело. Вот почитайте.</p>
<p><strong>Анонсы сообщений в блоге и в RSS</strong></p>
<p>Это прямо напасть какая-то. От того, что основная часть сообщений будет под капотом &#8212; посещаемость вашего блога ничуть не увеличиться. Немного измениться количество просмотров. Но объясните, зачем они нужны? Вас же не будут читать! Если пост стоящий, то есть прочитают и напишут комментарий, если еруднда &#8212; то в любом виде ничего не добьетесь.. Единственное, что надо прятать за ссылкой &#171;Читать полностью&#187; &#8212; это гигантские посты типа &#171;как заработать в Интернете&#187;.</p>
<p><strong>Спам в комментариях</strong></p>
<p>Это особенно раздражает. Я про самих блоггеров, которые спамят популярные,и не очень, блоги. Если вы думаете, что блоггер не заметит &#8212; вы ошибаетесь. Стоило мне поставить плагин для отлова лучших комментаторов и настроить его на последние 30 дней (а не на все год) &#8212; как тут же объявились два нехороших человека, которые решили на этом получить несколько посетителей. Да, комментирование &#8212; лучший способ привлечь внимание, но спамить &#8212; это совсем другой путь.</p>
<p>Тут мой небольшой коммент. Спамить можно, когда ты уверен, что твоя ссылка будет интересней чем изначальный материал. Это даже полезно. Пускай и блоггер злится. Плевать, у него же отстой, а у тебя гениальный материал.</p>
<p><strong>Так называемые &#8212; общетематические блоги</strong></p>
<p><span id="more-109"></span></p>
<p>Да, блоги &#171;обо всем на свете&#187; обычно самые популярные (смотрим топ &#8230; того поисковика, чью морду рисовал сами знаете кто). Но для того, чтобы вы писали обо всем, а вас читали и комментировали &#8212; надо быть достаточно популярной личностью, уметь излагать свои мысли и быть как минимум чем-то отличающимся (короче неудачникам, вроде редактора этого сочинения стоять смирно и не рыпаться). Я вообще считаю, что все эти блоги обо всем &#8212; это для LJ, LI и т.д., а standalone блоги &#8212; это тематические блоги. Поэтому &#8212; следуйте своей тематике, не отходите от неё сильно, а про себя вы еще успеете написать.</p>
<p><strong>Не затрудняйте комментирование</strong></p>
<p>К этому относится требование регистрация (щас слава богу почти исчезло, кроме блогспота), капча (особенно трудноразличимая), неудобная форма отправки комментария и т.д. Да, спам в имеет место быть, но есть мирные способы решения этой проблемы &#8212; та же модерация тех, кто еще не отправлял комментарии. Это позволяет основным комментаторам сразу оставлять ответы, а остальным &#8212; немного подождать до модерирования. Желательно еще поставить плагин подписки на комментарии.</p>
<p>От редактора: вообще мысли у автора попутались. Или комментировать или регистрироваться. Мрак. Как по мне все, в том числе и регистрация &#8212; это бред. Поэтому настоящий блог &#8212; постмодерируемый. А если спамят, &#8212; переводится в премодерацию. Все.</p>
<p><strong>Перебор с рекламой</strong></p>
<p>Так же распространенная ошибка дорвавшихся до денег блоггеров, не только начинающих… Когда блог превращается в хранилище рекламы &#8212; это плохо сказывается на его аудитории. Новый год не скоро, и увешивать блог баннерами, партнерскими ссылками, платными постами как праздничную елку &#8212; это хоть и выгодно, но либо нечитабельно, либо невыгодно. Лучше размещать пару баннеров за нормальную цену, чем два десятка за копейки.</p>
<p><strong>Переход к своему дизайну</strong></p>
<p>Да, свой дизайн это круто. Но часто стандартные шаблоны выглядят вполне нормально, а дизайн на качество постов не влияет. А ведь плохим дизайном можно только все испортить &#8212; там тупо не удобно читать и комментировать блог, поэтому желание это делать охладевает.</p>
<p><strong>Попрошайничество</strong></p>
<p>Вообще ужас, до чего некоторые дошли &#8212; до просьб поставить ссылки на их блог. Не опускаетесь до тупого выпрашивания, если вы хотите, чтобы вас заметили &#8212; пишите толковые комментарии, если хотите, чтобы на вас ссылались &#8212; пишите толковые посты. И сами ссылайтесь &#8212; блоггеры постоянно смотрят, кто и где на них ссылаются</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/osnovnye-oshibki-nachinayushhix-i-ne-tolko-bloggerov/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Вышла новая статья про Авианалет-2</title>
		<link>http://softm.org.ua/vyshla-novaya-statya-pro-avianalet-2/</link>
		<comments>http://softm.org.ua/vyshla-novaya-statya-pro-avianalet-2/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 11:10:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои статьи]]></category>
		<category><![CDATA[Софткей]]></category>

		<guid isPermaLink="false">http://softm.org.ua/vyshla-novaya-statya-pro-avianalet-2/</guid>
		<description><![CDATA[Вышла статья про игрушку, &#8212; Авианалет 2. Стрелялка, аркада, убиватель времени. На работе включать не рекомендуется &#8212; убивает весь процесс :) Динамичная трехмерная аркада &#171;Авианалет&#187; поразит вас красочностью специальных эффектов. Особенностью этой игры является возможность запуска даже на несколько устаревших &#8230; <a href="http://softm.org.ua/vyshla-novaya-statya-pro-avianalet-2/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://softm.org.ua/wp-content/uploads/2008/04/as_70x70_01.jpg" title="as_70×70_01.jpg" alt="as_70×70_01.jpg" align="left" />Вышла статья про игрушку, &#8212; Авианалет 2.<br />
Стрелялка, аркада, убиватель времени.<br />
На работе включать не рекомендуется &#8212; убивает весь процесс :)</p>
<p><font class="textsm">Динамичная трехмерная аркада &#171;Авианалет&#187; поразит вас красочностью специальных эффектов. Особенностью этой игры является возможность запуска даже на несколько устаревших компьютерах. Вы можете играть в нее даже без наличия сверхсовременного ускорителя видео. Итак, встречайте, сегодняшняя статья будет посвящена трехмерной аркаде &#171;Авианалет-2&#8243;, которая гармонично сочетает в себе динамичный прокручивающийся арканоид и целые мириады спецэффектов</font></p>
<p><a href="http://softkey.info/reviews/review4960.php" title="Авианалет-2" target="_blank">Вот ссылка</a>.</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://softm.org.ua/vyshla-novaya-statya-pro-avianalet-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

