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

<channel>
	<title>OlegD</title>
	<atom:link href="http://www.olegd.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.olegd.com</link>
	<description>моя личная песочница...</description>
	<lastBuildDate>Sat, 28 Jan 2012 20:30:31 +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>Антиспам II. POPFile</title>
		<link>http://www.olegd.com/soft/popfile/</link>
		<comments>http://www.olegd.com/soft/popfile/#comments</comments>
		<pubDate>Mon, 26 May 2003 03:23:41 +0000</pubDate>
		<dc:creator>DO</dc:creator>
				<category><![CDATA[Софт]]></category>

		<guid isPermaLink="false">http://olegd.com/soft/%d0%b0%d0%bd%d1%82%d0%b8%d1%81%d0%bf%d0%b0%d0%bc-ii-popfile/</guid>
		<description><![CDATA[В предыдущей заметке речь шла о программе POP3Catcher, которая проверяет приходящую почту &#8212; не была ли она отправлена через открытый релей, что на 99% означает &#8212; &#171;спам&#187;. Тогда же я упомянул о других способах определения спама, в частности, о возможности &#8230; <a href="http://www.olegd.com/soft/popfile/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В <a href="/blog/soft/pop3catcher">предыдущей заметке</a> речь шла о программе POP3Catcher,<br />
которая проверяет приходящую почту &#8212; не была ли она отправлена через открытый релей,<br />
что на 99% означает &#8212; &#171;спам&#187;. Тогда же я упомянул о других способах<br />
определения спама, в частности, о возможности статистического анализа пришедших писем.</p>
<h2>Теория</h2>
<p>Самым &#171;модным&#187; алгоритмом является Bayesian algorithm. В двух словах об идее<br />
алгоритма в применении к сортировке электронной почты.</p>
<p><span id="more-40"></span></p>
<p>Пусть приходящие письма надо рассортировывать в две папки:<br />
&#171;OK&#187; и &#171;Спам&#187;. Поначалу каждое приходящее письмо классифицируется<br />
вручную. При этом накапливается статистика о словах в той и в другой<br />
папках. Через некоторое время, когда информации становится достаточно,<br />
эта статистика может быть<br />
использована для автоматической классификации писем. Программа,<br />
используя формулу полной вероятности, рассчитывает вероятности того,<br />
что очередное пришедшее письмо попадет в папку &#171;OK&#187; или в &#171;Спам&#187;.<br />
Если значения близки, то пользователю предлагается вручную уточнить,<br />
какой именно вариант следует выбрать, в противном случае письмо<br />
классифицируется автоматически, попадая в ту папку, для которой<br />
рассчитанное значение вероятности оказалось выше.</p>
<p>Побочным, но очень приятным эффектом данного алгоритма является возможность<br />
классификации почты по нескольким папкам. Для алгоритма то все равно,<br />
сколько их будет &#8212; две или больше. Это позволяет сортировать почту,<br />
без использования сложных фильтров.</p>
<p>Более подробно, на английском языке, теорию этого дела можно прочитать в известной<br />
статье <a href=http://www.paulgraham.com/spam.html>A Plan for Spam</a>.</p>
<h2>Практика</h2>
<p>Программ, реализующих описанный алгоритм, <a href=http://www.paulgraham.com/filters.html>много</a>.<br />
Лично я остановился на программе <a href=http://popfile.sourceforge.net/>POPFile</a>.<br />
Выбор был продиктован несколькими причинами:</p>
<ul>
<li>она попалась мне одной из первых и оказалось настолько хорошей, что<br />
желания попробовать что-то еще не возникло</p>
<li>автор ведет активную работу, по ходу дела добавляя новые<br />
возможности. Живенький такой проектик,<br />
постоянно входящий в десятку самых активных на<br />
<a href=http://www.sourceforge.net>www.sourceforge.net</a></p>
<li>программа написана на perl&#8217;е причем было приложены большие<br />
усилия для того, чтобы она была кросс-платформенной.
</ul>
<p>Видимо следует более детально объяснить, почему кросс-платформенное<br />
программирование &#8212; это хорошо. Для дома &#8212; было бы<br />
достаточно, чтобы программа работала под Win2K, а остальные<br />
платформы пусть горят синим пламенем. Зато на работе &#8212; совсем другое<br />
дело. На работе у меня под рукой сервер с установленной ОС Solaris,<br />
там подобной программе самое место, незачем мне на рабочую<br />
машину лишнюю &#171;фенечку&#187; навешивать, и так уже POP3 Catcher место<br />
в памяти кушает.</p>
<p>Итак, пользователи Windows качают &#171;<a href=http://sourceforge.net/project/showfiles.php?group_id=63137>POPFile for Windows</a>&#171;,<br />
остальные &#8212; &#171;<a href=http://sourceforge.net/project/showfiles.php?group_id=63137>POPFile Cross Platform</a>&#171;.<br />
Последний архив значительно меньше по размерам.</p>
<p>Что умеет POPFile:</p>
<ul>
<li>Работает как POP3-proxy. То есть почтовый клиент надо перенастроить<br />
на локальный адрес. По умолчанию это <b>127.0.0.1:110</b>.</p>
<li>Интерфейс &#8212; через браузер, по адресу <a href=http://127.0.0.1:8080>http://127.0.0.1:8080</a><br />
(порт, естественно, можно сменить).</p>
<li>В заголовки письма вставляется строчка вида X-Text-Classification: имя_корзины,<br />
по которой и будет фильтровать непосредственно почтовый клиент.
</ul>
<h2>Установка</h2>
<p>Вся статья будет написана с расчетом на то, что POPFile устанавливается<br />
с настройками по умолчанию (адреса серверов, порты и т.п.). Этап установки<br />
я пропускаю, никаких особенностей там нет, переходим непосредственно к<br />
конфигурированию.</p>
<p>Вся работа с POPFile осуществляется через браузер. Если программа запущена, то,<br />
набрав в браузере <a href=http://127.0.0.1:8080>http://127.0.0.1:8080</a>, вы<br />
увидете страничку с большим количеством настроек. Вкратце о самом главном.</p>
<p>Отправляемся на <a href=http://127.0.0.1:8080/buckets>http://127.0.0.1:8080/buckets</a><br />
и создаем (&#171;Create bucket with name&#187;) нужное количество &#171;корзин&#187; (&#171;Buckets&#187;)<br />
по которым будет распределяться приходящая почта. Обычно две &#8212; &#171;ok&#187; и &#171;spam&#187;, но<br />
никто не мешает создать и больше, например, для каждого проекта, в котором вы<br />
принимаете участие. Как говорилось выше, алгоритм допускает использование<br />
любого количества корзин.</p>
<p>Теперь, что надо сделать, чтобы связка POPFile + The Bat! работала<br />
максимально эффективно и эффектно. Пусть изначально The Bat! был настроен так:</p>
<p>POP3 сервер: <b>pop.yandex.ru</b><br />
Имя пользователя: <b>login</b><br />
Пароль: <b>password</b></p>
<p>Считая, что при установке POPFile были выбраны предлагаемые параметры, новые<br />
настройки будут выглядеть так:</p>
<p><center><img src=/files/popfile/thebat.gif alt="настройки The Bat!"><br/><br />
Изменения коснулись только полей User и Mail Server</center></p>
<p>Следующий этап &#8212; создание фильтров. Тут все просто, вот как выглядит<br />
мой фильтр, переносящий весь спам в одноименную папку:</p>
<p><center><img src=/files/popfile/spam.gif alt="пример фильтра"></center></p>
<p>собственно, на этом &#8212; все, пора проводить испытания. Жмем &#171;F2&#8243; и&#8230;<br />
Ах да, забыли этап тренировки. Опять идем сюда &#8212; <a href=http://127.0.0.1:8080>http://127.0.0.1:8080</a><br />
и каждому письму меняем папку на ту, которую оно заслуживает (столбец &#171;Should be&#187;).<br />
Примерно так:</p>
<p><center><img src=/files/popfile/popfile.gif alt="интерфейс POPFile"></center></p>
<p>Когда всем письмам соответствующие папки установлены, нажимаем кнопочку Reclassify<br />
в нижней части страницы. Первоначально, операцию придется проделать несколько раз,<br />
пока POPFile не наберет достаточное количество статистики, но затем, поверьте, все<br />
будет работать на полном автопилоте</p>
<p><i>А <a href=http://www.eserv.ru/StatisticalSpamFiltering>тут</a> описано<br />
использование POPFile на почтовом сервере <b>[12.01.2004]</b></i></p>
<h2>Умелые ручки</h2>
<p>Попользовавшись программой POPFile, как было описано выше, я понял, что меня<br />
раздражает. Время от времени приходят такие письма, в которых POPFile не может<br />
распознать спам. И для того, чтобы подкорректировать поведение, необходимо<br />
переклассифицировать письмо, указав ему правильную папку. При этом приходится<br />
проделать множество мелких операций:</p>
<ul>
<li>запустить браузер
<li>открыть страницу настроек
<li>найти ошибочно классифицированное письмо
<li>выбрать нужную папку
<li>нажать Reclassify
</ul>
<p>Сложнее всего для меня оказалось найти письмо. Как оказалось, POPFile прямо в<br />
тело письма вставляет нужную ссылку. С учетом этого последовательность операций<br />
видоизменяется:</p>
<ul>
<li>включить в The Bat! режим &#171;показывать заголовки&#187; (&#171;Shift-Ctrl-K&#187;)
<li>найти в проблемном письме строчку &#171;X-POPFile-Link:&#187;, кликнуть на URL
<li>выбрать нужную папку
<li>нажать Reclassify
<li>вернуться в The Bat! и отключить показ заголовков
</ul>
<p>Если у вас заголовки показываются всегда и пункты 1 и 5 для вас не нужны,<br />
то следующие несколько абзацев можете смело пропустить.</p>
<p>Тем же, кто предпочитает отключать заголовки, могу порекомендовать<br />
следующий трюк, идею которого подал добрый человек, Геннадий Свиридов.</p>
<p>Как известно,<br />
The Bat! умеет работать с полями, которые вставляют сервера почтовых<br />
конференций (yahoogroups, и т.п.) о чем свидетельствует меню Specials/Mailing list.<br />
Нас интересует операция просмотра архива (&#171;View archive&#187;). По идее, при выборе данного пункта, The Bat!<br />
ищет в заголовке письма строчку &#171;List-Archive:&#187; и открывает в браузере<br />
указанный в ней URL. Это практически то, что нужно нам, за исключением того,<br />
что имя заголовка отличается от используемого программой POPFile.</p>
<p>Нам нужно добиться, чтобы вместо &#171;X-POPFile-Link:&#187; вставлялся &#171;List-Archive:&#187;.<br />
Способов есть несколько. Я выбрал самый простой &#8212; заменил в файле<br />
&#171;C:\Program Files\POPFile\Classifier\Bayes.pm&#187; два вхождения строки<br />
&#171;X-POPFile-Link:&#187; соответственно на &#171;List-Archive:&#187;.</p>
<p>После этого в The Bat! на пункт меню Special/View Archive<br />
повесил горячую клавишу (а вы знаете, что в новом &#171;мыше&#187;<br />
по нажатию &#171;Alt-F12&#8243; выскакивает редактор горячих клавиш?).</p>
<p>Теперь, если какое-то письмо оказалось классифицировано неправильно,<br />
я жму &#171;Alt-S&#187; и сразу оказываюсь в нужном месте, остается только подправить папку<br />
и нажать Reclassify.</p>
<h2>Бочка меда</h2>
<p>Статистика за последние три месяца такова:</p>
<ul>
<li>Обработано писем &#8212; <b>13379</b>
<li>Допущено ошибок &#8212; <b>24</b>
<li>Точность &#8212; <b>99.82%</b>
<li>В папку spam ушло <b>1423</b> письма
</ul>
<p>Отмечу, что ни одного &#171;нормального&#187; письма за все время в spam не попало. То<br />
есть все 24 ошибки &#8212; это &#171;спам&#187;, умудрившийся проскочить через жесткое сито<br />
эвристики. Результат, с моей точки зрения, более чем достойный.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olegd.com/soft/popfile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Антиспам I. POP3Catcher</title>
		<link>http://www.olegd.com/soft/pop3catcher/</link>
		<comments>http://www.olegd.com/soft/pop3catcher/#comments</comments>
		<pubDate>Fri, 14 Feb 2003 03:20:17 +0000</pubDate>
		<dc:creator>DO</dc:creator>
				<category><![CDATA[Софт]]></category>

		<guid isPermaLink="false">http://olegd.com/soft/pop3catcher/</guid>
		<description><![CDATA[&#171;#$% %$^$%^ @!&#187; &#8212; это, или примерно это я произнес, в очередной раз приняв почту на своем диалапе. Почты было на 1М &#8212; и это всего за день. Стало ясно, что пришла пора искать программы, которые будут отучать спамеров от &#8230; <a href="http://www.olegd.com/soft/pop3catcher/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&#171;#$% %$^$%^ @!&#187; &#8212; это, или примерно это я произнес,<br />
в очередной раз приняв почту на своем диалапе. Почты было на 1М &#8212; и<br />
это всего за день. Стало ясно, что пришла пора искать программы, которые<br />
будут отучать спамеров от моего мэйлбокса.</p>
<p>Поиски программ затянулись. Всеразличные<br />
<a href="http://www.mailwasher.net">MailWasher&#8217;ы</a> и прочие<br />
<a href="http://www.spampal.com">SpamPal&#8217;ы</a> не прижились. У каждой<br />
программы находились свои багофичи, которые делали работу с ней<br />
практически невозможной.</p>
<p><span id="more-39"></span></p>
<p>Хотелось же вот какого счастья:</p>
<ul>
<li>Программа должна быть маленькой, поскольку будет сидеть в памяти постоянно</li>
<li>Точность опознания спама должна превышать 50%. Имитатор бросания монетки я и<br />
сам могу написать</li>
<li>Самое главное &#8212; вероятность классификации корректного письма как &#171;спам&#187; должна быть<br />
сведена к минимуму. Желательно, чтобы и вовсе равнялась нулю. Ну не могу я себе позволить<br />
терять чьи бы то ни было письма!</li>
</ul>
<h2>Как отличают спам</h2>
<p>Для начала небольшое лирическое отступление. Перед тем, как описывать программы, надо<br />
бы вообще понять, что они будут делать. Итак, вкратце, какие методы обнаружения спама<br />
существуют:</p>
<ul>
<li><u>&#171;Черные списки&#187;</u> &#8212; в них заносятся адреса самых злостных спамеров. Один из таких<br />
списков валяется где-то на задворках <a href=http://www.exler.ru>www.exler.ru</a>. Лично я<br />
убедился в бесполезности такого метода после трех месяцев использования. Список Экслера<br />
пополнился несколькими сотнями адресов, а спама меньше не стало. Хороший спамер<br />
(хороший спамер &#8212; мертвый спамер!) редко повторяется, постоянно меняя адреса.<br />
Резюме: плохой метод, неудачный.</li>
<li><u>Списки открытых релеев</u>. Открытый релей &#8212; это почтовый сервер, который<br />
позволяет рассылать почту без каких-либо ограничений. Нормальный же почтовый сервер<br />
должен проверить IP адрес клиентского компьютера и разрешить посылку письма только<br />
для &#171;своих&#187; диапазонов IP адресов. Почему плохи открытые релеи? Хотя бы потому, что<br />
вычислить и отключить спамера на них практически невозможно. Именно по этой причине в<br />
Интернете ведутся списки открытых релеев, которыми можно воспользоваться для проверки &#8212; не<br />
через такой ли сервер было послано пришедшее письмо. Если это так, то с вероятностью 99%<br />
к вам пришел спам. Резюме: 99% спама уходят в мусорную корзину, однако к ним присоединяется<br />
изрядная доля ваших респондентов, пользующихся бесплатной почтой. Без создания &#171;белых списков&#187;<br />
использование метода чревато потерей ваших знакомых <img src='http://www.olegd.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</li>
<li><u>Статистический анализ писем</u>. Соответствующие алгоритмы позволят вычислить, какие из<br />
пришедших писем являются спамом. С одной стороны, этот метод практически не уменьшает<br />
трафик &#8212; письма все равно придется скачать и разобраться &#171;на месте&#187;. С другой стороны,<br />
сортировка писем тоже очень полезная задача. Лично я получаю очень большое количество<br />
спама и ручная сортировка &#171;спам &#8212; не спам&#187;, занимала приличное количество времени.<br />
Резюме: качество обнаружения спама зависит только лишь от используемого алгоритма.
</li>
</ul>
<h2>POP3Catcher</h2>
<p>Первым кандидатом на медаль оказался <a href=http://pop3catcher.net.ru>POP3Catcher</a>.<br />
Программа существует в двух вариантах &#8212; полном (за деньги) и lite (за так). Фактически, можно<br />
брать lite &#8212; для домашнего употребления хватит за глаза.</p>
<p>POP3Catcher представляет собой POP3 сервер, который вытягивает почту с любого<br />
количества аккаунтов, при этом маркируя спам путем добавления соответствующего<br />
заголовка в письмо. Для определения спама используются следующие методы:</p>
<ul>
<li>Базы открытых релеев (одновременно можно использовать несколько штук)</li>
<li>Черный список email-адресов</li>
<li>Черный список IP-адресов (при этом можно отсекать целые диапазоны ненавистных вам IP)</li>
<li>Настраиваемые фильтры, позволяющие, например, отказать письмам большого размера.</li>
</ul>
<p>Очень важно, что POP3Catcher позволяет формировать &#171;белые списки&#187; email- и IP-адресов.<br />
При этом, если обнаруживается, что письмо попало в &#171;белый список&#187;, то оно считается<br />
100% &#171;чистым&#187; и никаких проверок не производится. Рекомендую сразу занести в &#171;белый список&#187;<br />
адрес вида &#171;@вашафирма.ru&#187;, дабы важное письмо от шефа не попало в папку &#171;Спам&#187; <img src='http://www.olegd.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Впечатления от использования POP3Catcher остались только положительные &#8212; свою<br />
задачу он выполняет на 5+. У меня правильно определялся практически весь спам, прорываться<br />
умудрялись только письма начинающих спамеров, которые не стеснялись использовать<br />
почтовые сервера своего родного провайдера (не открытый релей). Одно-два письма в день -<br />
совсем не 30-50 за тот же срок.</p>
<p>Дополнительный бонус при использовании POP3Catcher &#8212; возможность установки<br />
<a href=http://pop3catcher.net.ru/Plugins.php>плагинов</a>. При этом можно взять<br />
несколько готовых с сайта автора, а можно попытаться написать самостоятельно,<br />
благо API открыт для всех.</p>
<p>Вживление POP3Catcher будем производить в несколько этапов. Пусть изначально почтовый клиент<br />
был настроен следующим образом:</p>
<p>POP3 сервер: <b>pop.yandex.ru</b><br />
Имя пользователя: <b>vasja_p</b><br />
Пароль: <b>password</b></p>
<p>Теперь мы настраиваем POP3Catcher так, как раньше был настроен почтовый клиент:</p>
<p><center><img src=/files/pop3catcher/new_account.gif alt=POP3Catcher></center></p>
<p>Почтовый клиент (в данном случае The Bat!) перенастраивается на прием почты<br />
с локального mail-сервера (127.0.0.1). Обратите внимание на метаморфозу, произошедшую<br />
с именем пользователя (описано в файле &#171;How to use.txt&#187;):</p>
<p><center><img src=/files/pop3catcher/thebat.gif alt=TheBat!></center></p>
<p>Дело осталось за малым &#8212; создать фильтр, который будет перекладывать спам в<br />
отдельную папку. При этом под действие фильтра будут попадать письма, имеющие в заголовке<br />
поле &#171;X-Spam-Mark&#187;, добавляемое POP3Catcher:</p>
<p><center><img src=/files/pop3catcher/filter.gif alt=Фильтр></center></p>
<p>Собственно основная часть работы проделана. Можно продолжать пользоваться почтой,<br />
наслаждаясь чистотой папки Inbox и периодически поглядывая в Inbox\SPAM. Если в Inbox\SPAM<br />
обнаружится письмо, не являющееся спамом, то у вас есть выбор:</p>
<ul>
<li>Попросить автора этого письма сменить почтовый сервер на более приличный. Как ни странно,<br />
но этот совет окажется полезным для вас обоих. Дело в том, что подобного рода фильтрация по<br />
списку открытых релеев может проводиться автоматически на mail-сервере, дабы оградить<br />
пользователей сервера от спама. Целый ряд провайдеров делает это, впрочем, особо не афишируя<br />
сей факт. Так что, быть может, автор вышеупомянутого письма уже не раз удивлялся, почему<br />
отправленные им письма не доходят до адресатов. Успейте первым объяснить, что он делает не так <img src='http://www.olegd.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>Добавить автора в &#171;белый список&#187; email-адресов или добавить используемый им сервер (см.<br />
заголовки письма) в &#171;белый список&#187; IP-адресов.</li>
</ul>
<p>Теперь разберемся, что делать, если письмо не попало в Inbox\SPAM, хотя должно было.<br />
И снова у вас есть выбор:</p>
<ul>
<li>Попросить автора больше так не делать <img src='http://www.olegd.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Добавить email автора в &#171;черный список&#187;</li>
<li>Посмотреть в заголовках письма IP адрес сервера и добавить его в &#171;черный список&#187;<br />
IP-адресов.</li>
</ul>
<p>Могу заверить, что подобного рода операции будут очень редкими и предназначены<br />
только для того, чтобы первоначальную точность определения спама (вполне достойную) довести<br />
до 99,9%, а вероятность ошибочной трактовки корректного письма как &#171;спам&#187; свести к<br />
абсолютному нулю.</p>
<h2>Мораль</h2>
<p><a href=http://pop3catcher.net.ru>POP3Catcher</a> строго рекомендуется к установке<br />
как обладающая целым рядом полезных функций, количество которых увеличивается от версии к<br />
версии. При желании можно даже потратить немножко денег, получив эквивалентную отдачу в виде<br />
совсем уж полезных функций, как то: автоматический дозвон и скачивание почты по расписанию,<br />
раздача почты в локальной сети, предпросмотр писем с возможностью удаления прямо на сервере.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olegd.com/soft/pop3catcher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WatzNew</title>
		<link>http://www.olegd.com/soft/watznew/</link>
		<comments>http://www.olegd.com/soft/watznew/#comments</comments>
		<pubDate>Mon, 01 Jul 2002 03:15:31 +0000</pubDate>
		<dc:creator>DO</dc:creator>
				<category><![CDATA[Софт]]></category>

		<guid isPermaLink="false">http://olegd.com/uncategorized/watznew/</guid>
		<description><![CDATA[Я всегда вовремя узнаю о новостях тех сайтов, которые мне интересны. При этом я не проверяю обновления каждый день &#8212; их слишком много, и на это уйдет прорва времени, которого и без того всегда не хватает. Более того, я никогда &#8230; <a href="http://www.olegd.com/soft/watznew/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Я всегда вовремя узнаю о новостях тех сайтов, которые мне интересны. При этом я не проверяю<br />
обновления каждый день &#8212; их слишком много, и на это уйдет прорва времени, которого и<br />
без того всегда не хватает. Более того, я никогда не подписываюсь на<br />
рассылки этих сайтов &#8212; спама и без этого килограммы приходят. И, тем<br />
не менее, я всегда в курсе.</p>
<p>Элегантное решение, позволяющее знать все обо всем, называется <a<br />
href="http://www.watznew.com">Watznew</a>. Эта небольшая программа с<br />
заданной периодичностью проверяет странички на предмет обновлений и,<br />
буде таковые случились, сигнализирует об этом.</p>
<p><span id="more-38"></span></p>
<p>Разумеется, не все изменения нас интересуют &#8212; мало кому нужно<br />
знать о появлении нового баннера на страничке. Выбрать интересующую часть можно с<br />
помощью довольно примитивного, но, тем не менее, эффективного механизма шаблонов. При этом<br />
программа не просто сигнализирует о случившихся изменениях, а выводит то, что вы захотите. Так для<br />
новостного сайта это может быть заголовок последней статьи, для сайта<br />
с метеосводкой &#8212; прогноз погоды на завтра и т.д. Иногда этого вполне<br />
достаточно и на сайт можно не ходить вовсе.</p>
<p>Начнем, как водится, с конца &#8212; с результатов:</p>
<p><center><img src=/files/watznew/rusc.gif></center></p>
<p>Теперь расскажу о том, как я создал канал, транслирующий новости любимого сервера -<br />
<a href=http://www.rusc.ru>http://www.rusc.ru</a>. Первым делом File / Add New / Setup a new HTTP channel,<br />
в соответствующем месте вводим URL новостной странички -<br />
http://www.rusc.ru и указываем периодичность проверок &#8212; 3 часа. По<br />
большому счету этого уже достаточно. Как только страничка изменится,<br />
программа нам об этом сообщит.</p>
<p>Однако хочется, чтобы при этом выводились заголовки новостей. Откроем окно свойств созданного<br />
канала (Channel Properties / Search Pattern) и посмотрим HTML код страницы, нажав на<br />
<img align=top src=/files/watznew/zoom.gif>:</p>
<pre><code>... ерунда ...
<span class=bg1>Последние новости:</span>&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src="/images/trans.gif" width=1 height=5&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr bgcolor=#4D6473&gt;&lt;td&gt;&lt;b&gt;
&lt;a class=sref href="/cgi-bin/newslist.pl?day=21&#038;year=2002&#038;month=06<span class=bg1>"&#038;gt</span>;
21 Июня 2002 г.
<span class=bg1>&lt;/a&gt;</span>&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor=#8F9EA7&gt;&lt;td&gt;
&lt;a class=tref href="/cgi-bin/newslist.pl?day=21&#038;year=2002&#038;month=06#a1024682527"&gt;
&lt;b&gt;Apache vs. IIS&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
... тут еще куча новостей ...
&lt;tr bgcolor=#8F9EA7&gt;&lt;td&gt;
&lt;a class=tref href="/cgi-bin/newslist.pl?day=21&#038;year=2002&#038;month=06#a1024666252"&gt;
&lt;b&gt;Unreal Tournament 2003 build #927&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr bgcolor=#8F9EA7&gt;&lt;td&gt;
&lt;a class=tref href="/cgi-bin/newslist.pl?day=21&#038;year=2002&#038;month=06#a1024605903"&gt;
&lt;b&gt;Internet Zone 279&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src="/images/trans.gif" width=1 height=6&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr bgcolor=#4D6473&gt;&lt;td&gt;&lt;b&gt;
&lt;<span class=bg1>a class=sref href="/cgi-bin/newslist.pl</span>?day=20&#038;year=2002&#038;month=06"&gt;
... на этом месте новости заканчиваются ...
</code></pre>
<p>Особо мудрить не будем, просто на глазок прикинем, как можно найти начало и конец новостей. На<br />
приведенном куске HTML кода я выделил цветом эти &#171;границы&#187;.</p>
<p>В языке шаблонов Watznew это может быть записано как:</p>
<pre><code>Последние новости:{*}"&gt;{%}&lt;/a&gt;{%}&lt;a class=sref href="/cgi-bin/newslist.pl</code></pre>
<p>Как вы можете догадаться, {%} обозначает текст, который нам интересен. Замечу, что использовать<br />
{%} можно не один раз, выкусывая из странички разную информацию. Первая такая последовательность<br />
при выводе сообщения будет обозначаться %1, вторая &#8212; %2 и т.д. В нашем случае %1 будет означать<br />
дату, взятую со странички, а %2 &#8212; текст новостей.</p>
<p>{*} обозначает последовательность любых символов, которые нас не интересуют и будут<br />
проигнорированы. Полезно, если часть страницы может произвольным образом меняться. Я использовал<br />
{*} для того, чтобы пропустить некоторое количество тегов, которые мне писать было лень, к тому же<br />
без них шаблон выглядит понятней.</p>
<p>Все остальные знаки в шаблоне обозначают сами себя.</p>
<p>После ввода шаблона еще раз жмем на изображение лупы, дабы убедиться, что все сделано<br />
правильно. В нижней половине окна будут показаны значения переменных %1, %2, и т.д.:</p>
<p><center><img src=/files/watznew/pattern.gif></center></p>
<p>Теперь осталось перейти на закладку &#171;Message Template&#187; и сформулировать, что именно должна нам<br />
&#171;сказать&#187; программа при обновлении страницы. Приблизительно таким вот образом:</p>
<pre><code>Новости за %1:\n
%2
</code></pre>
<h2>Для самых ленивых</h2>
<p>Я подозреваю, что большая часть моих читателей просто не захочет<br />
создавать каналы самостоятельно<br />
- лениво станет. Ну что ж, автор программы ведет целую<br />
<a href=http://www.watznew.com/channels/index.html>библиотеку<br />
каналов</a>. Там уже есть готовые каналы для большинства известных<br />
сайтов, остается их только скачать.</p>
<h2>Для самых любопытных</h2>
<p>Помимо вышесказанного WatzNew отслеживает появление писем в ваших почтовых ящиках,<br />
синхронизирует время со специально обученными серверами точного времени и умеет использовать Perl<br />
для выполнения особо хитрых вещей.</p>
<p>Кстати, если вы делаете<br />
свою страничку, то рекомендую выполнить следующий трюк &#8212; после<br />
создания канала укажите его в HTML коде, например, таким вот образом:</p>
<pre><code>&lt;title&gt;Записки Занятых&lt;/title&gt;

&lt;!-- WatzNew channel
[Записки Занятых]
Type=HttpDocument
NotifyMethod=PopupWindow
NotifySoundOn=0
Host=notes.rusc.ru
SearchPattern=Последние записки&#060;/td&#062;&#060;td class=menuhdr width=12&#062;
&#060;/td&#062;&#060;/tr&#062;&#060;tr valign=top&#062;&#060;td width=12 class=menu&#062;
&#060;img src=/notes/images/menu-bullet.gif width=8 height=8 alt=''&#062;&#060;/td&#062;
&#060;td width=163 class=menu&#062;{%}&#060;/td&#062;
MsgTemplate=Новая записка: %1
Interval=3
IntervalUnit=1
ExtInterval=3
ExtIntervalUnit=1
--&gt;

...
</code></pre>
<p>После этого, если кто-нибудь попытается создать канал<br />
для вашего сайта, то ему будет предложен именно ваш вариант &#8212; WatzNew<br />
проявляет интеллект.</p>
<p>Практически завершив очередную статью, я понял, что самое грустное и самое смешное едва не<br />
осталось за кадром.</p>
<h2>Грустное и смешное</h2>
<p>Грустное &#8212; программа далеко не бесплатна. А всем известно, что<br />
лекарства от жадности раздают <a href=http://astalavista.box.sk>тут</a>.<br />
Однако асталависта сделала мне ручкой и сообщила, что версия 1.9 еще<br />
никем не сломана. Ожидать этого можно с минуты на минуту &#8212; выпущена<br />
она была не очень давно. Следовательно, появление лекарства от<br />
жадности следует поджидать совсем скоро. Вот для проверки, не<br />
появилось ли оно, и была приспособлена&#8230; программа watznew. Так<br />
сказать, с особой циничностью:</p>
<p><center><img src=/files/watznew/crack.gif></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.olegd.com/soft/watznew/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Баннеры</title>
		<link>http://www.olegd.com/soft/admuncher/</link>
		<comments>http://www.olegd.com/soft/admuncher/#comments</comments>
		<pubDate>Sat, 16 Feb 2002 03:10:04 +0000</pubDate>
		<dc:creator>DO</dc:creator>
				<category><![CDATA[Софт]]></category>

		<guid isPermaLink="false">http://olegd.com/uncategorized/admuncher/</guid>
		<description><![CDATA[Пришло мне давеча письмо, автор которого просил помочь настроить файервол ZoneAlarm для резки баннеров. Дело полезное и давно практикуемое значительной частью пользователей интернета. Удаление баннеров позволяет существенно сократить трафик и ускорить загрузку страниц. Лично я за последний месяц с домашнего &#8230; <a href="http://www.olegd.com/soft/admuncher/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Пришло мне давеча письмо, автор которого просил помочь настроить файервол ZoneAlarm для<br />
резки баннеров. Дело полезное и давно практикуемое значительной частью пользователей интернета.<br />
Удаление баннеров позволяет существенно сократить трафик и ускорить загрузку страниц. Лично я за<br />
последний месяц с домашнего диалапа &#171;нарезал&#187; рекламы на 18 мегабайт. И это притом, что серфер<br />
из меня просто никакой &#8212; все что надо, смотрю на работе, с хорошим коннектом.</p>
<p>Пришлось честно ответить &#8212; мол, так и так, ZoneAlarm не держу, а с баннерами у меня<br />
разбирается более простая в настройке программа, называющаяся &#8230;</p>
<p><span id="more-37"></span></p>
<h2><a href=http://www.admuncher.com>AdMuncher</a></h2>
<p>Начнем с того, что размер файла, который предлагается скачать для установки, претендует<br />
на абсолютный рекорд &#8212; 70656 байт!</p>
<p>Тем не менее, несмотря на скромный размер, программа великолепно удаляет рекламу с<br />
посещаемых страниц, определяя их по:</p>
<ul>
<li>адресу;
<li>подписи (тэг alt);
<li>размеру;
</ul>
<p>Выглядит это примерно так:</p>
<p><center><img src=/files/admuncher/lentaru2.gif alt="Лента.Ру с рекламой" width=455 height=271 border=1><br/><br />
оргинальный вариант</center></p>
<p>Те, кому не интересны 10 голых теток, прогулки Киселева и болтовня<br />
&#171;последнего героя&#187;, увидят аккуратную страничку:</p>
<p><center><img src=/files/admuncher/lentaru.gif alt="лишенная рекламы Лента.Ру" border=1 width=455 height=224><br/><br />
результат</center></p>
<p>Как видите, назойливая реклама была аккуратно заменена на [censored].<br />
Фотография же нашей лыжницы, в блестящем стиле выигравшей золотую олимпийскую медаль,<br />
осталась в целости и сохранности.</p>
<p>Помимо баннеров AdMuncher успешно борется с:</p>
<ul>
<li>выскакивающими окнами (popups);
<li>музыкой на страницах;
<li>автоматически обновляющимися страницами;
<li>фоновыми картинками;
<li>скриптами, блокирующими правую кнопку мыши (поразительно как много людей боится,<br />
что код их странички могут посмотреть);</p>
<li>скриптами, изменяющими состояние status bar&#8217;а (очень неприятно наводить курсор на ссылку<br />
и видеть вместо адреса что-нибудь вида &#171;обязательно нажми сюда&#187;).
</ul>
<p>Разумеется, все опционально и может быть настроено:</p>
<p><center><img src=/files/admuncher/admuncher.gif alt="окно настроек AdMuncher" width=486 height=352></center></p>
<p>Установка очень проста &#8212; запускается программа инсталляции и через пару<br />
секунд все уже готово. Никаких дополнительных настроек не нужно, AdMuncher и без них<br />
успешно работает со всеми популярными браузерами. Хит однозначно! Все срочно<br />
<a href=http://www.admuncher.com/AM-Install.exe>качаем</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olegd.com/soft/admuncher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SequoiaView</title>
		<link>http://www.olegd.com/soft/sequoiaview/</link>
		<comments>http://www.olegd.com/soft/sequoiaview/#comments</comments>
		<pubDate>Sat, 05 Jan 2002 03:03:26 +0000</pubDate>
		<dc:creator>DO</dc:creator>
				<category><![CDATA[Софт]]></category>

		<guid isPermaLink="false">http://olegd.com/soft/sequoiaview/</guid>
		<description><![CDATA[Есть многое на свете, друг Горацио, что и не снилось нашим мудрецам&#8230; Что называется &#171;срочно в номер&#187;. В номер, тема которого планировалась совсем иной. Однако не сложилось, ибо не смог удержаться. Просто обязан рассказать о мега-программе SequoiaView. На описание этой &#8230; <a href="http://www.olegd.com/soft/sequoiaview/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p class="epigraph">Есть многое на свете, друг Горацио, что и не снилось<br />
нашим мудрецам&#8230;</p>
<p>Что называется &#171;срочно в номер&#187;. В номер, тема которого планировалась совсем иной.<br />
Однако не сложилось, ибо не смог удержаться. Просто обязан рассказать о мега-программе<br />
<a href="ftp://ftp.win.tue.nl/pub/home/sequoia/Sequoia.exe">SequoiaView</a>.</p>
<p>На описание этой программы я натыкался то <a href="http://anfrax.ru/?p=20020104">там</a>,<br />
то <a href="http://cooler.it/cl261001.html">сям</a>, но значения восторженным воплям о том, что<br />
программа позволила освободить половину винчестера, не придавал. Что<br />
там можно потерять на небольшом 6Гб диске, где каждый мегабайт на<br />
учете? Тем не менее, решил скачать и посмотреть.</p>
<p><span id="more-36"></span></p>
<p>После запуска SequoiaView показывает содержимое<br />
жесткого диска в виде разноцветных прямоугольников, группируя<br />
их по каталогам. Файлы разных типов раскрашиваются в разные цвета:<br />
архивы, mp3, программы, тексты и т.д. Казалось бы игрушка не более<br />
того.<br />
У меня была вот такая картинка (покрупнее, разумеется):</p>
<p><center><img src=/files/sequoiaview/sequoia.gif alt=SequoiaView width=356 height=270></center></p>
<p>Что бросилось в глаза. Первое &#8212; в правом верхнем углу два<br />
одинаковых серых прямоугольника. Ага! Спасал ненароком убитый женой аккаунт<br />
в Outlook Express. Для этого создал новый аккаунт и в него<br />
импортировал сохранившиеся данные. Все восстановилось, но файлы<br />
убитого аккаунта удалить забыл.</p>
<p>С этого момента я уже заинтересовался. Буквально несколько секунд<br />
и плюс 70 мегабайт свободного места на диске.</p>
<p>Второе. Обратите внимание &#8212; на зеленом фоне (mp3-файлы) краснеет<br />
узенькая вертикальная полоса, которая &#171;тянет&#187; на 20 мегабайт. Каким<br />
образом этот zip-файл (а именно архивы раскрашиваются в такой цвет)<br />
затесался в каталог с музыкой я уже не помню, но точно знаю, что ему<br />
там не место.</p>
<p>А теперь грандиозный финал. Значительная часть диска занята<br />
библиотекой MSDN Library &#8212; серый прямоугольник в левой части<br />
картинки. Поверхностное изучение показало, что два самых больших<br />
файла имеют одно и то же имя! При внимательном рассмотрении имен<br />
каталогов оказалось, что у меня стоит аж две версии MSDN. Даже с<br />
учетом того, что обе они существенно обрезаны, каждая ее экземпляр<br />
занимает более 700 Мб.</p>
<h2>Резюме</h2>
<p>Пара минут разглядывания картинки, полученной с помощью<br />
SequoiaView, и я освободил 800 Мб на диске. Программа получает<br />
постоянную прописку, чего и вам желаю.</p>
<p class=sign>Удивленный, но довольный</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olegd.com/soft/sequoiaview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>P133. Часть вторая &#8212; с облегчением</title>
		<link>http://www.olegd.com/soft/p133_dva/</link>
		<comments>http://www.olegd.com/soft/p133_dva/#comments</comments>
		<pubDate>Wed, 19 Dec 2001 02:57:54 +0000</pubDate>
		<dc:creator>DO</dc:creator>
				<category><![CDATA[Софт]]></category>

		<guid isPermaLink="false">http://olegd.com/soft/p133_dva/</guid>
		<description><![CDATA[В первой части мы говорили о том, как разобрать мусор в завале, имя которому C:\WINDOWS. И если Windows - это тяжкое бремя, которое нести все равно придется, то все остальные программы &#8212; наш личный выбор. И сделать его надо с &#8230; <a href="http://www.olegd.com/soft/p133_dva/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В <a href="/soft/p133_raz/">первой части</a> мы говорили о том, как<br />
разобрать мусор в завале, имя которому C:\WINDOWS. И если Windows -<br />
это тяжкое бремя, которое нести все равно придется, то все остальные<br />
программы &#8212; наш личный выбор. И сделать его надо с умом. Дело в том, что<br />
большинство программ со временем обрастает огромным количеством функций,<br />
которые рядовому пользователю никогда не понадобятся. Эдакий &#171;и швец, и жнец и<br />
на дуде игрец&#187;. Зачастую такая универсальность неблагоприятно<br />
сказывается на производительности, и все чаще и чаще мы видим, как программа<br />
класса &#171;Hello world&#187; требует себе никак не меньше Pentium-4 с 256 Мб памяти,<br />
поскольку нынче не модно просто вывести знаменитые слова, надо, чтобы они<br />
обязательно были трехмерные.</p>
<p><span id="more-35"></span></p>
<p>Позанудстовав свое, перейдем к теме. Заметим, что подавляющему<br />
большинству популярных &#171;тяжеловесных&#187; программ можно найти<br />
значительно более &#171;легкие&#187; аналоги. При этом функциональность если и<br />
снижается, то в разумных пределах. Основные параметры, по которым мы<br />
собираемся получить выигрыш:</p>
<ul>
<li> время загрузки
<li> скорость работы
<li> память
<li> надежность
</ul>
<p>Насчет последнего пункта объяснение очень простое &#8212; чем проще<br />
программа, тем меньше в ней проблемных мест.</p>
<p>Итак, поехали&#8230;</p>
<h2><a href=http://www.icq.com>ICQ</a> vs <a href=http://miranda-icq.sourceforge.net/>Miranda</a></h2>
<p>Небезызвестный интернет-пейджер, превратившийся со временем в<br />
монстра, поглощающего память, взамен предлагающего множество<br />
возможностей, большая часть которых уже давно не связана с<br />
первоначальной задачей &#8212; обменом коротенькими сообщениями. Что до<br />
меня, то всю эту псевдофункциональность я видал известно где и<br />
известно, в каких тапочках. А посему располневшей старушке ICQ было вежливо<br />
указано в Trash, а на ее место была поставлена молодая и стройная<br />
Miranda.</p>
<p>Это чудо было изначально спроектировано очень разумно. Есть ядро,<br />
к которому можно подключать те <a href=http://www.nortiq.com/miranda/index.php?action=display&#038;cat=Plugin>плагины</a>,<br />
которые нужны. В результате программа становится настолько функциональной,<br />
насколько это требуется лично пользователю. Плагинов уже очень даже немало и<br />
умеют они делать почти все, от чего мы так лихо избавились, снеся<br />
ICQ</p>
<ul>
<li> SMS
<li> проверка почты
<li> поддержка протокола MSN Messenger
<li> и прочая, прочая, прочая&#8230;
</ul>
<p>В результате мы имеем выигрыш как минимум по первым трем пунктам.<br />
Что касается четвертого пункта, то тут не все так очевидно -<br />
как мне показалось, программа еще достаточно сыровата. Возможно,<br />
впрочем, что глюки не у нее, а лично у меня. В любом случае пара<br />
случайных падений не повод отказываться от программы, которая себя<br />
совершенно нормально чувствует на P-133. Пять баллов.</p>
<h2>Email</h2>
<p>Вторым кандидатом на &#171;вынос&#187; я бы назвал Outlook Express. Правда,<br />
тут надо сделать оговорку. Как email-клиент эта программа вполне меня<br />
бы устроила, если бы в свое время я не подсел на<br />
<http://www.ritlabs.com/thebat/>The Bat!</http>. Как news-клиент<br />
Outlook Express для меня остается стандартом де-факто. Однако<br />
то, что постоянно запущенный Outlook Express отъедает &#171;чистых&#187; 6 мегабайт<br />
памяти не может не напрягать. Вот если бы можно было дешево и сердито<br />
узнавать, есть ли новые письма в ящике и только после этого запускать<br />
почтового клиента. И тут на помощь приходит целый класс программ -<br />
&#171;email checkers&#187;. На <a href=http://www.tucows.com>www.tucows.com</a><br />
в этой категории можно скачать и попробовать не один десяток<br />
программ. Лично я с удовольствием попользовался программой<br />
<a href=http://www.kabsoftware.com/lydia.htm>Lydia 3.3.1</a>. Занимает<br />
в памяти она около 300K, при этом с блеском выполняет свою задачу -<br />
проверку почтовых ящиков. Помимо этого можно:</p>
<ul>
<li>просмотреть заголовки пришедших писем (From, Subject, Date, Size)
<li>просмотреть первые N строк выбранных писем
<li>удалить ненужные письма прямо на сервере, не загружая их к себе
<li>написать новое письмо или написать ответ &#8212; простенький, но вполне<br />
функциональный email-клиент встроен в программу!</p>
<li>запустить таки Outlook Express для скачивания и просмотра тех<br />
писем, которые остались в живых после первых 4 шагов
</ul>
<p>Выглядит это примерно так (на рисунке одно из писем помечено для удаления):</p>
<p><center><img src=/files/p133_dva/lydia.gif alt=Lydia width=462 height=162></center></p>
<p>Маленькая ложка дегтя &#8212; с кодировкой KOI-8, программа, увы, не<br />
знакома, так что ее родной почтовый клиент может вам пригодиться<br />
только для переписки на тарабарском языке. В любом случае, мой P133<br />
сделал еще один выдох, сбросив с плеч тяжкий груз в виде постоянно<br />
запущенной почтовой программы. Троекратное ура, товарищи!</p>
<p class=sign>продолжение следует &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olegd.com/soft/p133_dva/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>P133. Часть первая &#8212; уборка</title>
		<link>http://www.olegd.com/soft/p133_raz/</link>
		<comments>http://www.olegd.com/soft/p133_raz/#comments</comments>
		<pubDate>Sat, 01 Dec 2001 02:52:00 +0000</pubDate>
		<dc:creator>DO</dc:creator>
				<category><![CDATA[Софт]]></category>

		<guid isPermaLink="false">http://olegd.com/soft/p133_raz/</guid>
		<description><![CDATA[Сегодня мы поговорим о том, как превратить Pentium 133 в компьютер. Я не оговорился. Под последним я подразумеваю нечто, на чем можно поработать и поиграть, получая при этом удовольствие. Насчет поиграть советчик я так себе - последний раз компьютерную игру &#8230; <a href="http://www.olegd.com/soft/p133_raz/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Сегодня мы поговорим о том, как превратить Pentium 133 в компьютер. Я не<br />
оговорился. Под последним я подразумеваю нечто, на чем можно поработать и<br />
поиграть, получая при этом  удовольствие. Насчет поиграть советчик я так себе<br />
- последний раз компьютерную игру запускал полгода назад. И был это Quake 3,<br />
которому места на вышеупомянутом устройстве ну никак не найдется.</p>
<p>Откуда у меня взялся сей музейный экспонат? Ха! Нашел. В буквальном смысле.<br />
Собрался он из запчастей, которые не стоили мне ни копейки. Технологию поиска<br />
пересказывать не буду &#8212; у вас не получится, поскольку ничего не осталось.</p>
<p>Что вышло. Pentium 133, памяти 32 мегабайта, 4 Гб диск, какая то<br />
видеокарточка S3, SoundBlaster 16, монитор на 15&quot; ну и прочей мелочевки мешок.<br />
В принципе полный набор. Лет 5 назад просто предел мечтаний. А сегодня&#8230;</p>
<p><span id="more-34"></span></p>
<p>А что сегодня? Ну подумаешь на дворе XXI век. Будем затягивать гайки!<br />
Для начала разберемся с операционной системой. На винте имеется<br />
предустановленная ОС Windows 98. Менять на более шуструю 95 или<br />
переустанавливать с нуля 98 не хочется &#8212; слишком много уже поставлено<br />
предыдущим хозяином из того, что нужно лично мне для работы, а взять в<br />
общем-то не откуда. Значит будем разгребать мусор.</p>
<h2>Windows</h2>
<p>Что у нас лишнее? Сразу же &#8212; фоновый рисунок. Память пригодится для более<br />
полезных вещей. Следом деинсталлируется, стирается все, что не<br />
понадобится (мне не нужна программа для синхронизации с Palm&#8217;ом и<br />
ежедневник на корейском языке). При этом остается барахло в реестре и<br />
на диске в виде никому не нужных записей и неиспользуемых DLL<br />
соответственно. Тут все просто &#8212; есть целый ряд программ,<br />
которые помогают подмести мусор. О них и пойдет речь ниже.</p>
<h2><a href=http://www.ozemail.com.au/~kevsol/clnsysdr.zip>Clean System<br />
Directory</a></h2>
<p>Небольшая (архив &#8212; 70Kb) программа, позволяющая найти DLL, на которые никто не<br />
ссылается. Работает она очень просто &#8212; составляет список DLL и сканирует все<br />
файлы на диске на предмет наличия там имен из этого списка. Все, что никем не<br />
используется, перемещается в каталог C:\WINDOWS\SYSTEM\BKUPDLLS. После чего<br />
можно поработать денек-другой и снести оттуда все без каких бы то ни было<br />
угрызений совести. На этом этапе я лишился 4 Мб мусора о чем до сих пор не<br />
пожалел.</p>
<h2><a href=http://www.vtoy.fi/jv16/programs/jv16pt_setup.exe>jv16 PowerTools</a></h2>
<p>Эта программа позволит почистить реестр. В отличие от предыдущей с ней<br />
необходима осторожность, ибо снести что-нибудь полезное можно легким<br />
движением руки.</p>
<p>Вот как она выглядит:</p>
<p><center><img src=/files/p133_raz/jv16mainmenu.gif width=443 height=365 alt=jv16 title=jv16></center></p>
<p>Программа сканирует реестр. Все, что указывает на файлы, не существующие<br />
на диске, считается подлежащим удалению. Обращайте внимание &#8212; те ключики в<br />
реестре, которые отмечены зеленым цветом, можно удалять<br />
безболезненно:</p>
<p><center><img src=/files/p133_raz/jv16results.gif width=482 height=471 alt="jv16 results" title="jv16 results"></center></p>
<p>Остальные желательно пробежать глазами на предмет проверки.</p>
<p>Кстати, программа на самом деле содержит массу других полезных<br />
возможностей: поиск дубликатов файлов, поиск файлов нулевой длины,<br />
поиск временных файлов и прочая, прочая, прочая. Рекомендовано к<br />
применению. Русский интерфейс имеет место быть.</p>
<h2><a href=http://bmi.newmail.ru/Downloads/MemGlanceSetup.exe>MemGlance</a></h2>
<p>С помощью данной программы мы можем внимательно изучить, какие<br />
программы съедают больше всего памяти:</p>
<p><center><img src=/files/p133_raz/memglance.gif alt=MemGlance width=519 height=381 alt="MemGlance" title="MemGlance"></center></p>
<p>Обратите внимание, что память, занимаемая программой, указана в двух<br />
столбцах. Первый столбец &#171;Полный размер&#187; включает в себя<br />
все используемые DLL. Однако поскольку большинство из них<br />
используется одновременно несколькими программами, то есть еще и<br />
второе значение занятой памяти, которое указано во втором столбце -<br />
&#171;Чистый размер&#187;.</p>
<p>Ага. Обнаруживаем, что у нас тихо и незаметно грузится RealPlayer<br />
(на рисунке сей паразит не показан &#8212; скриншот снят много позже<br />
состоявшегося выноса тела). Очень полезная программа, но не в нашем<br />
случае, когда каждый килобайт на счету. Заходим в RealPlayer,<br />
отключаем автозагрузку, что освобождает нам пару мегабайт ценной<br />
памяти.</p>
<p class=sign>продолжение следует &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olegd.com/soft/p133_raz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WinWord и орфография</title>
		<link>http://www.olegd.com/soft/winword_i_orfo/</link>
		<comments>http://www.olegd.com/soft/winword_i_orfo/#comments</comments>
		<pubDate>Sat, 03 Nov 2001 02:39:10 +0000</pubDate>
		<dc:creator>DO</dc:creator>
				<category><![CDATA[Софт]]></category>

		<guid isPermaLink="false">http://olegd.com/uncategorized/winword_i_orfo/</guid>
		<description><![CDATA[Обожаю я WinWord. Особенно за его проверку орфографии. Дело в том, что все, что пишется для широкой публики, я прогоняю через Word, чтобы избежать элементарных опечаток. Но временами его фокусы просто сводят с ума. Развлекательная часть Вот, например, что мне &#8230; <a href="http://www.olegd.com/soft/winword_i_orfo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Обожаю я WinWord. Особенно за его проверку орфографии. Дело в том, что<br />
все, что пишется для широкой публики, я прогоняю через Word, чтобы<br />
избежать элементарных опечаток. Но временами его фокусы просто сводят<br />
с ума.</p>
<h2>Развлекательная часть</h2>
<p>Вот, например, что мне предлагает Word, встретив во фразе &#171;то есть<br />
скрипты &#8230;&#187; незнакомое слово &#171;скрипты&#187;:</p>
<blockquote><p>
крипты<br />
скрипы<br />
с крипты<br />
скрип ты
</p></blockquote>
<p><span id="more-33"></span></p>
<p>Ну спасибо. Особенно за &#171;скрип ты&#187;. Сам дурак.</p>
<p>Или вот еще перл, полученный на слово &#171;медитирует&#187;:</p>
<blockquote><p>
меди тирует
</p></blockquote>
<p>Кто такой &#171;меди&#187; и зачем он &#171;тирует&#187;? Ладно, &#171;меди&#187; еще понятно -<br />
родительный падеж слова &#171;медь&#187;, но что такое &#171;тирует&#187;???</p>
<p>Да он не знает слово &#171;интернет&#187;! Предложение &#171;скачивать из интернета<br />
&#8230;&#187; вызвало негодование:</p>
<blockquote><p>
интерната<br />
интернате
</p></blockquote>
<p>Причем предлагается скачать из интерната не абы что, предлагается<br />
именно исподнее белье. Не верите? Пожалуйста, &#8212; &#171;качайте исходники<br />
мегабайтами&#187;:</p>
<blockquote><p>
качайте исподники мегабайтами
</p></blockquote>
<p>Действительно, что еще можно найти в интернате, кроме исподников.</p>
<h2>Очень серьезная часть</h2>
<p>Самое неприятное в проверке HTML-страниц с помощью Word&#8217;а заключается в<br />
следующем. Он ругается на все тэги, как впрочем, и на все иностранные<br />
слова. Дело в том, что при импортиртировании страницы, всем словам<br />
выставляется один язык. В моем случае &#8212; русский. Затем Word пытается<br />
проверить орфографию по соответствующему словарю, обламывается и<br />
помечает слово, как неправильное.</p>
<p>Надоело это мне. К тому же, раз уж я пользуюсь Far&#8217;ом для редактирования<br />
страниц, то было бы неплохо научить оный и проверке орфографии. Делается<br />
это с помощью одного из трех плагинов -<br />
<a href=http://www.uic.nnov.ru/~ruiv/plugring/downld/files/ansc031.zip>ArtN CS API Spell Checker</a>,<br />
<a href=http://www.uic.nnov.ru/~ruiv/plugring/downld/files/gspell.1.03b.rar>gSpell</a>,<br />
<a href=http://www.uic.nnov.ru/~ruiv/plugring/downld/files/rspl117.rar>raVen&#8217;s speller</a>.<br />
Первый из них еще находится в стадии разработки, поэтому все его баги<br />
названы автором &#171;фичами&#187;. Есть смысл использовать только последние два.<br />
Мне больше приглянулся gSpell, поскольку он умеет предлагать варианты для<br />
неверно написанных слов. При этом проверку английского языка можно<br />
отключить и мы получим то, что хотелось:</p>
<p><center><img src=/files/winword_i_orfo/gspell.gif width=411 height=313 alt="GSpell" title="GSpell"></center></p>
<p>Чем не Word? Пока не хватает проверки грамматики. Запятые тоже надо уметь<br />
ставить в положенных местах. Есть у меня идейка, как научить Word проверять<br />
орфоргафию и грамматику, чтобы при этом не возникало проблем с английскими<br />
словами. Доведу вскорости до ума и поделюсь обязательно.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olegd.com/soft/winword_i_orfo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cygwin</title>
		<link>http://www.olegd.com/soft/cygwin/</link>
		<comments>http://www.olegd.com/soft/cygwin/#comments</comments>
		<pubDate>Sun, 01 Jul 2001 02:32:30 +0000</pubDate>
		<dc:creator>DO</dc:creator>
				<category><![CDATA[Софт]]></category>

		<guid isPermaLink="false">http://olegd.com/soft/cygwin/</guid>
		<description><![CDATA[Тема этой заметки будет следующая, &#8212; за что я уважаю Unix. А уважаю я его за: bash, sed, grep, find. Казалось бы, суть не в этом и профессионалы будут с пеной у рта доказывать, что сила, она, брат, в концептуальном &#8230; <a href="http://www.olegd.com/soft/cygwin/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Тема этой заметки будет следующая, &#8212; за что<br />
я уважаю Unix. А уважаю я его за: bash, sed, grep, find. Казалось бы,<br />
суть не в этом и профессионалы будут с пеной у рта доказывать, что сила, она,<br />
брат, в концептуальном устройстве Unix, но нам бы что<br />
попроще, на пальцах. Поэтому о самом главном как-нибудь потом, а пока<br />
пройдемся по верхам.</p>
<p>Есть такая вещь, которая называется <a href="http://www.cygwin.com">Cygwin</a>.<br />
Это &#8212; качественный порт под Win32 многих Unix&#8217;овых утилит. При этом<br />
достигается великолепная совместимость. То есть скрипты, написанные и<br />
отлаженные под Windows, с большой вероятностью будут работать под Unix и<br />
наоборот. Альтернативы Cygwin&#8217;у на данный момент практически нет,<br />
единственным соперником мог бы быть MKS Toolkit, но он продается за<br />
деньги, а нас такой вариант не устраивает. Идем качать и устанавливать<br />
Cygwin. (<i>Тут вот проскочило некое подобие -<br />
<a href="http://gnuwin32.sourceforge.net/packages.html">GnuWin32</a>. Фанаты могут<br />
посмотреть, мне &#8212; лень. <b>11.01.2004</b></i>)</p>
<p><span id="more-32"></span></p>
<h2>Стоп, а зачем он мне нужен?</h2>
<p>Зачем он может пригодиться вам, я не знаю. Я могу только рассказать, зачем<br />
он нужен мне:</p>
<ul>
<li> Во-первых, так уж сложилось, что я пишу программы, которые будут<br />
использоваться, как на Windows, так и на unix-платформах. При этом<br />
приходится создавать служебные скрипты, которые, например, производят<br />
компиляцию всего проекта. Так вот с использованием Cygwin я могу написать<br />
скрипты, которые одинаково запускаются и работают под обеими платформами<br />
(Win/Solaris), мне не приходится делать отдельно bat и отдельно<br />
shell-скрипты. Это сильно экономит время в момент написания<br />
и, особенно, в момент модификации скриптов. Попробуйте параллельно править<br />
обе версии, в которых различий больше чем сходства.</p>
<li> Во-вторых, я могу использовать gnumake. А это один из лучших<br />
make-ов, которые есть на данный момент. Кстати makefile будет одним и тем<br />
же для обеих платформ.</p>
<li> В-третьих, мощи CMD.EXE, который входит в Windows NT, не хватает<br />
для написание серьезного скрипта. Есть, конечно, <a href=http://www.jpsoft.com>4DOS<br />
и 4NT</a>, но это все равно не то.  Одни регулярные выражения чего стоят<br />
(тут автор мечтательно закатывает глаза и медитирует 5 минут).</p>
<li> В-четвертых. Вам никогда не приходилось скачивать из интернета<br />
исходные тексты программ? Ага&#8230; Быть может и расширения вроде .tar.gz<br />
для вас не пустой звук? Тем, кто по молодости да по неопытности с этим<br />
никогда не сталкивался, поясню, &#8212; есть такая традиция у &#171;юниксоидов&#187; делать<br />
архивы с помощью двух программ &#8212; tar и gzip. Первая соединяет все нужные<br />
файлы в один, а вторая их сжимает. Степень сжатия при этом выше, чем, если<br />
сжимать все файлы по отдельности. Очень похожим образом, кстати, работает<br />
<a href=http://www.rarsoft.com>WinRar</a> с его solid-сжатием. И все бы<br />
было хорошо, если бы не было так плохо в Windows с tar&#8217;ом и gzip&#8217;ом. А в<br />
Cygwin&#8217;е есть и tar и gzip. Все работает, все счастливы. Качайте исходники<br />
мегабайтами, учитесь.</p>
<li> В-пятых, в-шестых, &#8230;
</ul>
<h2>Э-э-э, ты мне пример реального использования покажи&#8230;</h2>
<p>Хотите примеры? Пожалуйста. Последний пример из реальной жизни.</p>
<p>Писал я <a href=/soft/far/UpAndDown10b2.zip>плагин</a> для Far&#8217;а. Причем<br />
писал на Visual C++. При этом нужно было получить список экспортируемых<br />
плагином функций. То есть из:</p>
<pre><code><u>UpAndDown.cpp</u>

void WINAPI _export SetStartupInfo(struct PluginStartupInfo *psi){
    ...
}

void WINAPI _export GetPluginInfo(struct PluginInfo *pi){
    ...
}

HANDLE WINAPI _export OpenPlugin(int OpenFrom,int item){
    ...
}
</code></pre>
<p>нужно получить:</p>
<pre><code><u>UpAndDown.def</u>

EXPORTS
; Список функций
  SetStartupInfo
  GetPluginInfo
  OpenPlugin
</code></pre>
<p>Это что ж  получается &#8212; добавлю я еще одну экспортируемую функцию и мне<br />
надо не забыть еще и def-файл параллельно править? Дудки. Смотрю на свои<br />
исходники, &#8212; все экспортируемые функции выглядят очень и очень похоже, как<br />
бы их имена выдрать из исходников?</p>
<p>Решение программиста:</p>
<pre><code><u>Кусок из makefile</u>

$(DEF): $(OBJS)
  echo EXPORTS > $(DEF)
  echo ; This file was created by makefile >> $(DEF)
  cat *.cpp | grep _export | sed "s/.* \(.*\)(.*/  \1/" >> $(DEF)
</code></pre>
<p>Как это работает. Программа cat &#171;передает по цепочке&#187; текст всех<br />
файлов с расширением cpp программе grep. Та оставляет только строки, в<br />
которых присутствует ключевое слово _export и эти строки отдает sed&#8217;у:</p>
<pre><code>void WINAPI _export SetStartupInfo(struct PluginStartupInfo *psi){
void WINAPI _export GetPluginInfo(struct PluginInfo *pi){
HANDLE WINAPI _export OpenPlugin(int OpenFrom,int item){
</code></pre>
<p>Дальше &#8212; сложнее, дальше регулярные выражения. Я минут 10 пытался<br />
описать это простенькое в сущности регулярное выражение, но потом понял,<br />
что тем, кто с ними еще не знаком, мне не удастся в двух словах изложить<br />
материал. Поверьте на слово, что эта последовательность &#171;скобочек и<br />
палочек&#187; берет со стандартного входа строку и заменяет ее словом,<br />
&#171;которое идет после пробела и за которым стоит открывающая круглая<br />
скобка&#187;, то есть на выходе конвейера мы получаем только имена<br />
экспортируемых функций из всех файлов, текущего каталога, что и<br />
требовалось! Они перенаправляются в def-файл, а я про него могу забыть и<br />
не вспоминать, он сам создается, сам модифицируется при необходимости.</p>
<h2>Резюме</h2>
<p>Лень &#8212; двигатель прогресса. Скачав и установив себе Cygwin, вы сможете<br />
написать скрипт do_all, который будет делать за вас все, причем сразу и на<br />
Solaris&#8217;е и Windows. Вам остается только курить и мечтательно плевать в<br />
потолок. Кстати, хорошая идея&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olegd.com/soft/cygwin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Far. Макросы</title>
		<link>http://www.olegd.com/soft/far_macros/</link>
		<comments>http://www.olegd.com/soft/far_macros/#comments</comments>
		<pubDate>Tue, 19 Jun 2001 02:15:56 +0000</pubDate>
		<dc:creator>DO</dc:creator>
				<category><![CDATA[Софт]]></category>

		<guid isPermaLink="false">http://olegd.com/soft/far_macros/</guid>
		<description><![CDATA[В предыдущей заметке мы говорили о плагинах, без которых работа с Far&#8217;ом становится гораздо менее удобной. Но помимо плагинов есть одна вещь, позволяющая изменить поведение нашего любимого файл-менеджера &#8212; макросы. Для тех, кому уже исполнилось 6 лет, но еще не &#8230; <a href="http://www.olegd.com/soft/far_macros/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В <a href="/soft/far_plugins/">предыдущей заметке</a> мы говорили о плагинах,<br />
без которых работа с Far&#8217;ом становится гораздо менее удобной. Но<br />
помимо плагинов есть одна вещь, позволяющая изменить поведение нашего<br />
любимого файл-менеджера &#8212; макросы.</p>
<p>Для тех, кому уже исполнилось 6 лет, но еще не исполнилось 7,<br />
объясняю на пальцах. Есть у нас последовательность клавиш, которую мы<br />
часто используем. Длинная последовательность. Очень длинная. А мы<br />
берем и назначаем эту длинную последовательность одной клавише. Вот<br />
это и есть макрос.</p>
<p>Ниже я обязательно перечислю те макросы, которые использую сам,<br />
но для начала поговорим о том, как они вообще создаются и<br />
редактируются.</p>
<p><span id="more-31"></span></p>
<h2>Создание и редактирование макросов</h2>
<p>Стандартный вариант, который предлагается Far&#8217;ом, состоит в<br />
следующем &#8212; мы нажимаем &#171;Ctrl-.&#187; (при этом в<br />
левом верхнем углу появится буква R &#8212; запись, record), затем<br />
последовательность клавиш, затем опять &#171;Ctrl-.&#187;,<br />
после чего Far предложит назначить клавишу введенной<br />
последовательности.</p>
<p>Описанный метод вполне пригоден для задания коротких макросов, но<br />
длинные задавать таким способом крайне неудобно. Фактически это<br />
делается вслепую. Более того, отредактировать макропоследовательность<br />
и вовсе не удастся &#8212; придется повторить всю операцию с самого начала<br />
и быть при этом более внимательным.</p>
<p>Однако есть альтернативный вариант, который я упомянул в<br />
<a href=far_plugins>записке</a>, посвященной плагинам.<br />
Альтернативный вариант носит название<br />
<a href=http://www.uic.nnov.ru/~ruiv/plugring/cgi-bin/downld.cgi?Draw=List&#038;Sort=Date&#038;SelectCateg=Addons&#038;Select=PlugIn&#038;SelectPlugIn=35>Macro View</a>.<br />
При вызове Macro View вы увидите все определенные на данный момент<br />
макрокоманды, например вот такие:</p>
<pre><code>Built-in viewer: "AltF6" │ Калькулятор
Built-in viewer: "AltF7" │ Find All
File panels:     "AltF6" │ Калькулятор
File panels:     "Ctrl," │ Вызов проводника в текущем каталоге
Text editor:     "AltF6" │ Калькулятор
Text editor:     "AltD"  │ Вставить дату
Text editor:     "AltT"  │ Вставить время
</code></pre>
<p>Кстати, обратите внимание, что в данном случае клавиша<br />
&#171;Alt-F6&#8243; задана целых три раза &#8212; для<br />
редактирования (Text editor), для просмотра (Built-in viewer) и для<br />
файловых панелей (File panels). Помимо этого еще бывают следующие<br />
состояния: диалоговые окна (Dialogue windows), меню дисков (Disks<br />
menu), главное меню (Main menu), окно быстрого поиска (Quick search<br />
files) и загадочные &#171;Other areas&#187;. Это говорит о том, что одной и той<br />
же клавише в различных ситуациях могут соответствовать разные<br />
макропоследовательности.</p>
<p>Любой макрос можно удалить клавишей &#171;Del&#187;,<br />
добавить клавишей &#171;Ins&#187; или отредактировать -<br />
&#171;Enter&#187;. При этом, в отличии от стандартного<br />
варианта, вы визуально можете наблюдать редактируемую макрокоманду:</p>
<pre><code>F11 l Enter</code></pre>
<p>Макросы записываются в реестр, как, впрочем, и все, что касается<br />
конфигурации Far&#8217;а. Поэтому их можно экспортировать в отдельный<br />
reg-файл (клавиша &#171;F2&#8243; в Macro View). Получается<br />
нечто похожее на:</p>
<pre><code>REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Viewer\AltF6]
"Sequence"="F11 l Enter"
"Description"="Калькулятор"
"DisableOutput"=dword:00000001
</code></pre>
<p>Обратная процедура импортирования из reg-файла производится<br />
программой regedit:</p>
<pre><code>regedit AltF6.reg</code></pre>
<p>Примеры макрокоманд, сохраненных в виде reg-файлов, вы можете найти в<br />
каталоге C:\Program Files\Far\Addons\Macros. Там лежит примерно 25<br />
примеров макросов.</p>
<h2>Для чего они нужны?</h2>
<p>Думаю, что пора ответить на главный вопрос, &#8212; в каких ситуациях<br />
могут пригодиться макросы? В общих чертах понятно, но, думаю, стоит<br />
поподробней. Давайте загибать пальцы.</p>
<h2>Для сокращения ввода</h2>
<p>Длинная последовательность нажатий заменяется одним. Выходит<br />
короче, а, следовательно, меньше вероятность сделать ошибку. Лично я<br />
использую следующие макросы:</p>
<p>&#171;Ctrl-,&#187; &#8212; вставляет в текущее место<br />
редактора заготовку для тэга &#8212; две угловые скобки, после чего<br />
помещает курсор между ними.</p>
<pre><code>REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\Ctrl,]
"Sequence"="< > Left"
"DisableOutput"=dword:00000001
"Description"="Вставить тэг"
</code></pre>
<p>&#171;Ctrl-/&#187; &#8212; все то же самое для<br />
закрывающего тэга.</p>
<pre><code>REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\Ctrl/]
"Sequence"="< / > Left"
"DisableOutput"=dword:00000001
"Description"="Вставить закрывающий тэг"
</code></pre>
<h2>Для быстрого вызова плагинов</h2>
<p>Дело в том, что большинство плагинов вызываются через меню,<br />
вызываемое нажатием &#171;F11&#8243;, после чего еще, как<br />
минимум, следует нажатие &#171;горячей клавиши&#187;. Хочу, заметить, что со<br />
многими плагинами дело этим не ограничивается &#8212; у них есть еще свои<br />
подменю. В общем, пока доберешься, до нужного места, рабочий день<br />
заканчивается. А если все это, начиная с &#171;F11&#8243;<br />
повесить на какую-то удобную клавишу (только не<br />
&#171;Reset&#187;!), то есть шанс добраться до плагина уже<br />
к обеду.</p>
<p>Я использую следующие макросы (будьте внимательны, у вас &#171;горячие<br />
клавиши&#187; для плагинов почти наверняка отличаются, не забудьте<br />
подправить!):</p>
<p>&#171;Alt-F6&#8243; &#8212; <a href=http://www.uic.nnov.ru/~ruiv/plugring/cgi-bin/downld.cgi?Draw=List&#038;Sort=Date&#038;SelectCateg=Addons&#038;Select=PlugIn&#038;SelectPlugIn=14>калькулятор</a>.<br />
Как видите, калькулятор можно позвать в момент редактирования,<br />
просмотра, а также просто находясь в обычном состоянии, наблюдая<br />
синие панели:</p>
<pre><code>REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Viewer\AltF6]
"Sequence"="F11 l Enter"
"Description"="Калькулятор"
"DisableOutput"=dword:00000001

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\AltF6]
"Sequence"="F11 l Enter "
"Description"="Калькулятор"
"DisableOutput"=dword:00000001

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\AltF6]
"Sequence"="F11 l Enter"
"DisableOutput"=dword:00000001
"Description"="Калькулятор"
</code></pre>
<p>Alt-D&#187; &#8212; вставить дату в редакторе<br />
(используется плагин <a href=http://www.uic.nnov.ru/~ruiv/plugring/cgi-bin/downld.cgi?Draw=List&#038;Sort=Date&#038;SelectCateg=Addons&#038;Select=PlugIn&#038;SelectPlugIn=22>Date-n-Time</a>).<br />
Лично мне дату удобней всего наблюдать в виде ДД.ММ.ГГ, а поскольку<br />
каждый раз задавать формат лениво, то вот вам макрос:</p>
<pre><code>REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\AltD]
@=""
"Sequence"="F11 D T 0 % d . % m . % y Down Down Down Space Enter"
"Description"="Вставить дату"
"DisableOutput"=dword:00000001
</code></pre>
<p>&#171;Alt-T&#187; &#8212; тот же плагин, на этот раз<br />
вставляется время в формате ЧЧ:ММ:СС</p>
<pre><code>REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\AltT]
@=""
"Sequence"="F11 D T 0 % H : % M : % S Down Down Down Space Enter"
"DisableOutput"=dword:00000001
"Description"="Вставить время"
</code></pre>
<p>&#171;Alt-H&#187; &#8212; вызов плагина<br />
<a href=http://www.uic.nnov.ru/~ruiv/plugring/cgi-bin/downld.cgi?Draw=List&#038;Sort=Date&#038;SelectCateg=Addons&#038;Select=PlugIn&#038;SelectPlugIn=72>Branch</a>.<br />
Навеяно сходной клавишей в DN. При нажатии показывает файлы из<br />
всех подкаталогов текущего каталога. Макрос сам по себе очень<br />
простой, экономия мизерная, но как бы то ни было, руки уже привыкли, и<br />
переучить их оказалось сложнее, чем написать макрос:</p>
<pre><code>REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\AltH]
"Sequence"="F11 h"
"Description"="Ветка каталогов"
</code></pre>
<p>&#171;Alt-F9&#8243; &#8212; у меня Far запускается в<br />
оконном режиме и переключение 25/50 строк становится излишним. Даже<br />
более того &#8212; оно мешает. Таким образом, убивая сразу двух зайцев,<br />
вешаю на &#171;Alt-F9&#8243; вызов конфигурации плагинов:</p>
<pre><code>REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\AltF9]
"Sequence"="F9 o u"
"DisableOutput"=dword:00000001
"Description"=""
</code></pre>
<h2>Для замены клавиш, используемых по умолчанию</h2>
<p>Далеко не всем клавиши, используемые в Far&#8217;е, кажутся удобными и<br />
интуитивно понятными. И именно макросы могут помочь. Тут мы сильно<br />
выигрываем, не тратя время на то, чтобы вспомнить, какую же именно<br />
клавишу надо нажать.</p>
<p>Что пользую я:</p>
<p>Парочка макросов, взятых из стандартной поставки (Del.reg и<br />
Esc.reg) &#8212; ссылок не даю, учитесь искать сами и, как говорится, RTFM.</p>
<p>Клавиши &#171;Alt-0&#8243;, &#171;Alt-1&#8243;,<br />
&#171;&#8230;&#187;, &#171;Alt-9&#8243; используются<br />
вместо &#171;RCtrl-0&#8243;, &#171;RCtrl-1&#8243;,<br />
&#171;&#8230;&#187;, &#171;RCtrl-9&#8243;. Последние<br />
используются для быстрого перехода по каталогам. Но, как мне кажется,<br />
это не самый удобный вариант, поскольку нужны обе руки, правая для<br />
&#171;Ctrl&#187;, а левая для цифр. Вариант, который<br />
&#171;намакросил&#187; я, более эргономичный:</p>
<pre><code>REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\Alt0]
"Sequence"="RCtrl0"
"Description"="Каталог 0"
"DisableOutput"=dword:00000001

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\Alt1]
"Sequence"="RCtrl1"
"Description"="Каталог 1"
"DisableOutput"=dword:00000001

...
</code></pre>
<h2>Для создания новых функций</h2>
<p>Вам чего-то не хватает? Подумайте, а не спасут ли макросы? Зачастую<br />
ими можно удовлетворить почти все потребности.</p>
<p>Например:</p>
<p>&#171;Alt-Q&#187; &#8212; нечто вроде блокнота, позволяющего<br />
делать записи. Для каждой записи ставится дата и время создания.<br />
Выглядит это примерно так:</p>
<pre><code>03.06.01 02:54:00
выбросить вконец испорченный и
купить новый диск

03.06.01 02:53:44
восстановить данные после форматирования

03.06.01 02:53:23
отформатировать диск
</code></pre>
<p>А сам макрос вот (требуется плагин Date-n-Time):</p>
<pre><code>REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\AltQ]
"Sequence"="ShiftF4 c : BackSlash n o t e b o o k . t m p
            Enter CtrlHome F11 D T 0 % d . % m . % y Down
            Down Down Space Enter Space
            F11 D T 0 % H : % M : % S
            Down Down Down Space Enter Enter Enter Up"
"DisableOutput"=dword:00000001
"Description"="Блокнот"
</code></pre>
<p>&#171;Ctrl-Enter&#187; &#8212; в редакторе используется для<br />
дублирования текущей строки. Уже не помню, с какого редактора это<br />
повелось, но эту функцию я просто обожаю и использую где можно и где<br />
нельзя:</p>
<pre><code>REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\CtrlEnter]
"Sequence"="Home ShiftDown CtrlIns ShiftIns ShiftIns Up Up"
"DisableOutput"=dword:00000001
"Description"="Удвоить строку"
</code></pre>
<p>&#171;Ctrl-,&#187; &#8212; вам никогда не приходилось<br />
вызывать explorer из Far&#8217;а? У меня иногда возникает такая<br />
необходимость. Причем чаще всего нужно, чтобы explorer сразу попал в<br />
текущий каталог. Вот этим и занимается следующий макрос (заметьте,<br />
что опять используется &#171;Ctrl-,&#187;, но теперь уже в<br />
панелях):</p>
<pre><code>REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\Ctrl,]
"Sequence"="CtrlG e x p l o r e r Space . Enter"
"DisableOutput"=dword:00000001
"Description"="Вызов проводника в текущем каталоге"
</code></pre>
<h2>Рутине &#8212; нет!</h2>
<p>Пожалуй, пора и закругляться. Напоследок хочу еще отметить одно<br />
применение для макросов. Скажем, имеется файл вида:</p>
<pre><code>слово 1
слово 2
слово 3
слово 4
слово 5
слово 6
...
</code></pre>
<p>А надо получить файл:</p>
<pre><code>слово 1 слово 3
слово 4 слово 6
...
</code></pre>
<p>Как видим, некоторые слова удаляются, некоторые объединяются в<br />
одну строку. Разумеется, если первый файл состоит из 100000 строк, то<br />
без программы не обойтись. Если же в нем 100 строк, то быстрее<br />
окажется создать макрос!</p>
<p>Макрос временно будет &#171;повешен&#187; на любую свободную клавишу,<br />
например, на &#171;Ctrl-R&#187;:</p>
<pre><code>REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\CtrlR]
"Sequence"="End Enter CtrlY CtrlY BS Space Home Down"
"DisableOutput"=dword:00000001
</code></pre>
<p>Теперь, после создания макроса, установите курсор на первую<br />
строку и нажмите &#171;Ctrl-R&#187;:</p>
<pre><code>слово1 слово3
<u>с</u>лово4
слово5
слово6
слово7
...
</code></pre>
<p>Теперь еще разок &#171;Ctrl-R&#187;:</p>
<pre><code>слово1 слово3
слово4 слово6
<u>с</u>лово7
...
</code></pre>
<p>То, что надо! А теперь финал &#8212; нажмите<br />
&#171;Ctrl-R&#187; и не отпускайте. Текст в редакторе<br />
начнет форматироваться так, как и было заказано.</p>
<p>Кстати, макрос был написан достаточно аккуратно, и если вы на самой<br />
последней строке лишний раз нажмете &#171;Ctrl-R&#187;, то<br />
ничего не случится. Эффект &#171;последней строки&#187; обязательно надо<br />
учитывать при написании такого рода макрокоманд.</p>
<p>Не забудьте удалить макрос после использования, чтобы не<br />
удивляться на следующий день, неожиданному форматированию исходников<br />
вашей программы при случайном нажатии &#171;Ctrl-R&#187;.</p>
<h2>Заключение</h2>
<p>Макросы, как и плагины, существенно расширяют возможности Far&#8217;а. Если<br />
вы хотите работать комфортно, то они вам обязательно пригодятся. В<br />
моей коллекции есть еще десятка два макросов, однако они уже<br />
настолько специфичны, что приводить их я не рискнул. Те же макросы,<br />
которые были упомянуты в данной записке, вы можете скачать одним<br />
<a href=/files/far_macros/far_macro.zip>zip-файлом</a>. Рад был помочь.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olegd.com/soft/far_macros/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

