<?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 &#187; Софт</title>
	<atom:link href="http://olegd.com/blog/category/soft/feed/" rel="self" type="application/rss+xml" />
	<link>http://olegd.com/blog</link>
	<description>моя личная песочница...</description>
	<lastBuildDate>Wed, 28 Mar 2007 17:00:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Антиспам II. POPFile</title>
		<link>http://olegd.com/blog/soft/popfile/</link>
		<comments>http://olegd.com/blog/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,
которая проверяет приходящую почту &#8211; не была ли она отправлена через открытый релей,
что на 99% означает &#8211; &#171;спам&#187;. Тогда же я упомянул о других способах
определения спама, в частности, о возможности статистического анализа пришедших писем.

Теория

Самым &#171;модным&#187; алгоритмом является Bayesian algorithm. В двух словах об идее
алгоритма в применении к сортировке [...]]]></description>
			<content:encoded><![CDATA[<p>В <a href="/blog/soft/pop3catcher">предыдущей заметке</a> речь шла о программе POP3Catcher,
которая проверяет приходящую почту &#8211; не была ли она отправлена через открытый релей,
что на 99% означает &#8211; &#171;спам&#187;. Тогда же я упомянул о других способах
определения спама, в частности, о возможности статистического анализа пришедших писем.</p>

<h2>Теория</h2>

<p>Самым &#171;модным&#187; алгоритмом является Bayesian algorithm. В двух словах об идее
алгоритма в применении к сортировке электронной почты.</p>

<p><span id="more-40"></span></p>

<p>Пусть приходящие письма надо рассортировывать в две папки:
&#171;OK&#187; и &#171;Спам&#187;. Поначалу каждое приходящее письмо классифицируется
вручную. При этом накапливается статистика о словах в той и в другой
папках. Через некоторое время, когда информации становится достаточно,
эта статистика может быть
использована для автоматической классификации писем. Программа,
используя формулу полной вероятности, рассчитывает вероятности того,
что очередное пришедшее письмо попадет в папку &#171;OK&#187; или в &#171;Спам&#187;.
Если значения близки, то пользователю предлагается вручную уточнить,
какой именно вариант следует выбрать, в противном случае письмо
классифицируется автоматически, попадая в ту папку, для которой
рассчитанное значение вероятности оказалось выше.</p>

<p>Побочным, но очень приятным эффектом данного алгоритма является возможность
классификации почты по нескольким папкам. Для алгоритма то все равно,
сколько их будет &#8211; две или больше. Это позволяет сортировать почту,
без использования сложных фильтров.</p>

<p>Более подробно, на английском языке, теорию этого дела можно прочитать в известной
статье <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>.
Лично я остановился на программе <a href=http://popfile.sourceforge.net/>POPFile</a>.
Выбор был продиктован несколькими причинами:</p>

<ul>
<li>она попалась мне одной из первых и оказалось настолько хорошей, что
желания попробовать что-то еще не возникло
<li>автор ведет активную работу, по ходу дела добавляя новые
возможности. Живенький такой проектик,
постоянно входящий в десятку самых активных на
<a href=http://www.sourceforge.net>www.sourceforge.net</a>
<li>программа написана на perl&#8217;е причем было приложены большие
усилия для того, чтобы она была кросс-платформенной.
</ul>

<p>Видимо следует более детально объяснить, почему кросс-платформенное
программирование &#8211; это хорошо. Для дома &#8211; было бы
достаточно, чтобы программа работала под Win2K, а остальные
платформы пусть горят синим пламенем. Зато на работе &#8211; совсем другое
дело. На работе у меня под рукой сервер с установленной ОС Solaris,
там подобной программе самое место, незачем мне на рабочую
машину лишнюю &#171;фенечку&#187; навешивать, и так уже POP3 Catcher место
в памяти кушает.</p>

<p>Итак, пользователи Windows качают &#171;<a href=http://sourceforge.net/project/showfiles.php?group_id=63137>POPFile for Windows</a>&#171;,
остальные &#8211; &#171;<a href=http://sourceforge.net/project/showfiles.php?group_id=63137>POPFile Cross Platform</a>&#171;.
Последний архив значительно меньше по размерам.</p>

<p>Что умеет POPFile:</p>

<ul>
<li>Работает как POP3-proxy. То есть почтовый клиент надо перенастроить
на локальный адрес. По умолчанию это <b>127.0.0.1:110</b>.
<li>Интерфейс &#8211; через браузер, по адресу <a href=http://127.0.0.1:8080>http://127.0.0.1:8080</a>
(порт, естественно, можно сменить).
<li>В заголовки письма вставляется строчка вида X-Text-Classification: имя_корзины,
по которой и будет фильтровать непосредственно почтовый клиент.
</ul>

<h2>Установка</h2>

<p>Вся статья будет написана с расчетом на то, что POPFile устанавливается
с настройками по умолчанию (адреса серверов, порты и т.п.). Этап установки
я пропускаю, никаких особенностей там нет, переходим непосредственно к
конфигурированию.</p>

<p>Вся работа с POPFile осуществляется через браузер. Если программа запущена, то,
набрав в браузере <a href=http://127.0.0.1:8080>http://127.0.0.1:8080</a>, вы
увидете страничку с большим количеством настроек. Вкратце о самом главном.</p>

<p>Отправляемся на <a href=http://127.0.0.1:8080/buckets>http://127.0.0.1:8080/buckets</a>
и создаем (&#171;Create bucket with name&#187;) нужное количество &#171;корзин&#187; (&#171;Buckets&#187;)
по которым будет распределяться приходящая почта. Обычно две &#8211; &#171;ok&#187; и &#171;spam&#187;, но
никто не мешает создать и больше, например, для каждого проекта, в котором вы
принимаете участие. Как говорилось выше, алгоритм допускает использование
любого количества корзин.</p>

<p>Теперь, что надо сделать, чтобы связка POPFile + The Bat! работала
максимально эффективно и эффектно. Пусть изначально The Bat! был настроен так:</p>

<p>POP3 сервер: <b>pop.yandex.ru</b><br />
Имя пользователя: <b>login</b><br />
Пароль: <b>password</b><br /></p>

<p>Считая, что при установке POPFile были выбраны предлагаемые параметры, новые
настройки будут выглядеть так:</p>

<p><center><img src=/files/popfile/thebat.gif alt="настройки The Bat!"><br/>
Изменения коснулись только полей User и Mail Server</center></p>

<p>Следующий этап &#8211; создание фильтров. Тут все просто, вот как выглядит
мой фильтр, переносящий весь спам в одноименную папку:</p>

<p><center><img src=/files/popfile/spam.gif alt="пример фильтра"></center></p>

<p>собственно, на этом &#8211; все, пора проводить испытания. Жмем &#171;F2&#187; и&#8230;
Ах да, забыли этап тренировки. Опять идем сюда &#8211; <a href=http://127.0.0.1:8080>http://127.0.0.1:8080</a>
и каждому письму меняем папку на ту, которую оно заслуживает (столбец &#171;Should be&#187;).
Примерно так:</p>

<p><center><img src=/files/popfile/popfile.gif alt="интерфейс POPFile"></center></p>

<p>Когда всем письмам соответствующие папки установлены, нажимаем кнопочку Reclassify
в нижней части страницы. Первоначально, операцию придется проделать несколько раз,
пока POPFile не наберет достаточное количество статистики, но затем, поверьте, все
будет работать на полном автопилоте</p>

<p><i>А <a href=http://www.eserv.ru/StatisticalSpamFiltering>тут</a> описано
использование POPFile на почтовом сервере <b>[12.01.2004]</b></i></p>

<h2>Умелые ручки</h2>

<p>Попользовавшись программой POPFile, как было описано выше, я понял, что меня
раздражает. Время от времени приходят такие письма, в которых POPFile не может
распознать спам. И для того, чтобы подкорректировать поведение, необходимо
переклассифицировать письмо, указав ему правильную папку. При этом приходится
проделать множество мелких операций:</p>

<ul>
<li>запустить браузер
<li>открыть страницу настроек
<li>найти ошибочно классифицированное письмо
<li>выбрать нужную папку
<li>нажать Reclassify
</ul>

<p>Сложнее всего для меня оказалось найти письмо. Как оказалось, POPFile прямо в
тело письма вставляет нужную ссылку. С учетом этого последовательность операций
видоизменяется:</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 для вас не нужны,
то следующие несколько абзацев можете смело пропустить.</p>

<p>Тем же, кто предпочитает отключать заголовки, могу порекомендовать
следующий трюк, идею которого подал добрый человек, Геннадий Свиридов.</p>

<p>Как известно,
The Bat! умеет работать с полями, которые вставляют сервера почтовых
конференций (yahoogroups, и т.п.) о чем свидетельствует меню Specials/Mailing list.
Нас интересует операция просмотра архива (&#171;View archive&#187;). По идее, при выборе данного пункта, The Bat!
ищет в заголовке письма строчку &#171;List-Archive:&#187; и открывает в браузере
указанный в ней URL. Это практически то, что нужно нам, за исключением того,
что имя заголовка отличается от используемого программой POPFile.</p>

<p>Нам нужно добиться, чтобы вместо &#171;X-POPFile-Link:&#187; вставлялся &#171;List-Archive:&#187;.
Способов есть несколько. Я выбрал самый простой &#8211; заменил в файле
&#171;C:\Program Files\POPFile\Classifier\Bayes.pm&#187; два вхождения строки
&#171;X-POPFile-Link:&#187; соответственно на &#171;List-Archive:&#187;.</p>

<p>После этого в The Bat! на пункт меню Special/View Archive
повесил горячую клавишу (а вы знаете, что в новом &#171;мыше&#187;
по нажатию &#171;Alt-F12&#187; выскакивает редактор горячих клавиш?).</p>

<p>Теперь, если какое-то письмо оказалось классифицировано неправильно,
я жму &#171;Alt-S&#187; и сразу оказываюсь в нужном месте, остается только подправить папку
и нажать Reclassify.</p>

<h2>Бочка меда</h2>

<p>Статистика за последние три месяца такова:</p>

<ul>
<li>Обработано писем &#8211; <b>13379</b>
<li>Допущено ошибок &#8211; <b>24</b>
<li>Точность &#8211; <b>99.82%</b>
<li>В папку spam ушло <b>1423</b> письма
</ul>

<p>Отмечу, что ни одного &#171;нормального&#187; письма за все время в spam не попало. То
есть все 24 ошибки &#8211; это &#171;спам&#187;, умудрившийся проскочить через жесткое сито
эвристики. Результат, с моей точки зрения, более чем достойный.</p>
]]></content:encoded>
			<wfw:commentRss>http://olegd.com/blog/soft/popfile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Антиспам I. POP3Catcher</title>
		<link>http://olegd.com/blog/soft/pop3catcher/</link>
		<comments>http://olegd.com/blog/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; &#8211; это, или примерно это я произнес,
в очередной раз приняв почту на своем диалапе. Почты было на 1М &#8211; и
это всего за день. Стало ясно, что пришла пора искать программы, которые
будут отучать спамеров от моего мэйлбокса.

Поиски программ затянулись. Всеразличные
MailWasher&#8217;ы и прочие
SpamPal&#8217;ы не прижились. У каждой
программы находились свои багофичи, которые делали работу с [...]]]></description>
			<content:encoded><![CDATA[<p>&#171;#$% %$^$%^ @!&#187; &#8211; это, или примерно это я произнес,
в очередной раз приняв почту на своем диалапе. Почты было на 1М &#8211; и
это всего за день. Стало ясно, что пришла пора искать программы, которые
будут отучать спамеров от моего мэйлбокса.</p>

<p>Поиски программ затянулись. Всеразличные
<a href="http://www.mailwasher.net">MailWasher&#8217;ы</a> и прочие
<a href="http://www.spampal.com">SpamPal&#8217;ы</a> не прижились. У каждой
программы находились свои багофичи, которые делали работу с ней
практически невозможной.</p>

<p><span id="more-39"></span></p>

<p>Хотелось же вот какого счастья:</p>

<ul>
<li>Программа должна быть маленькой, поскольку будет сидеть в памяти постоянно</li>
<li>Точность опознания спама должна превышать 50%. Имитатор бросания монетки я и
сам могу написать</li>
<li>Самое главное &#8211; вероятность классификации корректного письма как &#171;спам&#187; должна быть
сведена к минимуму. Желательно, чтобы и вовсе равнялась нулю. Ну не могу я себе позволить
терять чьи бы то ни было письма!</li>
</ul>

<p></p></p>

<h2>Как отличают спам</h2>

<p>Для начала небольшое лирическое отступление. Перед тем, как описывать программы, надо
бы вообще понять, что они будут делать. Итак, вкратце, какие методы обнаружения спама
существуют:</p>

<ul>
<li><u>&#171;Черные списки&#187;</u> &#8211; в них заносятся адреса самых злостных спамеров. Один из таких
списков валяется где-то на задворках <a href=http://www.exler.ru>www.exler.ru</a>. Лично я
убедился в бесполезности такого метода после трех месяцев использования. Список Экслера
пополнился несколькими сотнями адресов, а спама меньше не стало. Хороший спамер
(хороший спамер &#8211; мертвый спамер!) редко повторяется, постоянно меняя адреса.
Резюме: плохой метод, неудачный.</li>

<li><u>Списки открытых релеев</u>. Открытый релей &#8211; это почтовый сервер, который
позволяет рассылать почту без каких-либо ограничений. Нормальный же почтовый сервер
должен проверить IP адрес клиентского компьютера и разрешить посылку письма только
для &#171;своих&#187; диапазонов IP адресов. Почему плохи открытые релеи? Хотя бы потому, что
вычислить и отключить спамера на них практически невозможно. Именно по этой причине в
Интернете ведутся списки открытых релеев, которыми можно воспользоваться для проверки &#8211; не
через такой ли сервер было послано пришедшее письмо. Если это так, то с вероятностью 99%
к вам пришел спам. Резюме: 99% спама уходят в мусорную корзину, однако к ним присоединяется
изрядная доля ваших респондентов, пользующихся бесплатной почтой. Без создания &#171;белых списков&#187;
использование метода чревато потерей ваших знакомых <img src='http://olegd.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> 
</li>

<li><u>Статистический анализ писем</u>. Соответствующие алгоритмы позволят вычислить, какие из
пришедших писем являются спамом. С одной стороны, этот метод практически не уменьшает
трафик &#8211; письма все равно придется скачать и разобраться &#171;на месте&#187;. С другой стороны,
сортировка писем тоже очень полезная задача. Лично я получаю очень большое количество
спама и ручная сортировка &#171;спам &#8211; не спам&#187;, занимала приличное количество времени.
Резюме: качество обнаружения спама зависит только лишь от используемого алгоритма.
</li>
</ul>

<h2>POP3Catcher</h2>

<p>Первым кандидатом на медаль оказался <a href=http://pop3catcher.net.ru>POP3Catcher</a>.
Программа существует в двух вариантах &#8211; полном (за деньги) и lite (за так). Фактически, можно
брать lite &#8211; для домашнего употребления хватит за глаза.</p>

<p>POP3Catcher представляет собой POP3 сервер, который вытягивает почту с любого
количества аккаунтов, при этом маркируя спам путем добавления соответствующего
заголовка в письмо. Для определения спама используются следующие методы:</p>

<ul>
<li>Базы открытых релеев (одновременно можно использовать несколько штук)</li>
<li>Черный список email-адресов</li>
<li>Черный список IP-адресов (при этом можно отсекать целые диапазоны ненавистных вам IP)</li>
<li>Настраиваемые фильтры, позволяющие, например, отказать письмам большого размера.</li>
</ul>

<p>Очень важно, что POP3Catcher позволяет формировать &#171;белые списки&#187; email- и IP-адресов.
При этом, если обнаруживается, что письмо попало в &#171;белый список&#187;, то оно считается
100% &#171;чистым&#187; и никаких проверок не производится. Рекомендую сразу занести в &#171;белый список&#187;
адрес вида &#171;@вашафирма.ru&#187;, дабы важное письмо от шефа не попало в папку &#171;Спам&#187; <img src='http://olegd.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<p>Впечатления от использования POP3Catcher остались только положительные &#8211; свою
задачу он выполняет на 5+. У меня правильно определялся практически весь спам, прорываться
умудрялись только письма начинающих спамеров, которые не стеснялись использовать
почтовые сервера своего родного провайдера (не открытый релей). Одно-два письма в день -
совсем не 30-50 за тот же срок.</p>

<p>Дополнительный бонус при использовании POP3Catcher &#8211; возможность установки
<a href=http://pop3catcher.net.ru/Plugins.php>плагинов</a>. При этом можно взять
несколько готовых с сайта автора, а можно попытаться написать самостоятельно,
благо API открыт для всех.</p>

<p>Вживление POP3Catcher будем производить в несколько этапов. Пусть изначально почтовый клиент
был настроен следующим образом:</p>

<p>POP3 сервер: <b>pop.yandex.ru</b><br />
Имя пользователя: <b>vasja_p</b><br />
Пароль: <b>password</b><br /></p>

<p>Теперь мы настраиваем POP3Catcher так, как раньше был настроен почтовый клиент:</p>

<p><center><img src=/files/pop3catcher/new_account.gif alt=POP3Catcher></center></p>

<p>Почтовый клиент (в данном случае The Bat!) перенастраивается на прием почты
с локального mail-сервера (127.0.0.1). Обратите внимание на метаморфозу, произошедшую
с именем пользователя (описано в файле &#171;How to use.txt&#187;):</p>

<p><center><img src=/files/pop3catcher/thebat.gif alt=TheBat!></center></p>

<p>Дело осталось за малым &#8211; создать фильтр, который будет перекладывать спам в
отдельную папку. При этом под действие фильтра будут попадать письма, имеющие в заголовке
поле &#171;X-Spam-Mark&#187;, добавляемое POP3Catcher:</p>

<p><center><img src=/files/pop3catcher/filter.gif alt=Фильтр></center></p>

<p>Собственно основная часть работы проделана. Можно продолжать пользоваться почтой,
наслаждаясь чистотой папки Inbox и периодически поглядывая в Inbox\SPAM. Если в Inbox\SPAM
обнаружится письмо, не являющееся спамом, то у вас есть выбор:</p>

<ul>
<li>Попросить автора этого письма сменить почтовый сервер на более приличный. Как ни странно,
но этот совет окажется полезным для вас обоих. Дело в том, что подобного рода фильтрация по
списку открытых релеев может проводиться автоматически на mail-сервере, дабы оградить
пользователей сервера от спама. Целый ряд провайдеров делает это, впрочем, особо не афишируя
сей факт. Так что, быть может, автор вышеупомянутого письма уже не раз удивлялся, почему
отправленные им письма не доходят до адресатов. Успейте первым объяснить, что он делает не так <img src='http://olegd.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>

<li>Добавить автора в &#171;белый список&#187; email-адресов или добавить используемый им сервер (см.
заголовки письма) в &#171;белый список&#187; IP-адресов.</li>
</ul>

<p>Теперь разберемся, что делать, если письмо не попало в Inbox\SPAM, хотя должно было.
И снова у вас есть выбор:</p>

<ul>
<li>Попросить автора больше так не делать <img src='http://olegd.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Добавить email автора в &#171;черный список&#187;</li>
<li>Посмотреть в заголовках письма IP адрес сервера и добавить его в &#171;черный список&#187;
IP-адресов.</li>
</ul>

<p>Могу заверить, что подобного рода операции будут очень редкими и предназначены
только для того, чтобы первоначальную точность определения спама (вполне достойную) довести
до 99,9%, а вероятность ошибочной трактовки корректного письма как &#171;спам&#187; свести к
абсолютному нулю.</p>

<h2>Мораль</h2>

<p><a href=http://pop3catcher.net.ru>POP3Catcher</a> строго рекомендуется к установке
как обладающая целым рядом полезных функций, количество которых увеличивается от версии к
версии. При желании можно даже потратить немножко денег, получив эквивалентную отдачу в виде
совсем уж полезных функций, как то: автоматический дозвон и скачивание почты по расписанию,
раздача почты в локальной сети, предпросмотр писем с возможностью удаления прямо на сервере.</p>
]]></content:encoded>
			<wfw:commentRss>http://olegd.com/blog/soft/pop3catcher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WatzNew</title>
		<link>http://olegd.com/blog/soft/watznew/</link>
		<comments>http://olegd.com/blog/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[Я всегда вовремя узнаю о новостях тех сайтов, которые мне интересны. При этом я не проверяю
обновления каждый день &#8211; их слишком много, и на это уйдет прорва времени, которого и
без того всегда не хватает. Более того, я никогда не подписываюсь на
рассылки этих сайтов &#8211; спама и без этого килограммы приходят. И, тем
не менее, я всегда [...]]]></description>
			<content:encoded><![CDATA[<p>Я всегда вовремя узнаю о новостях тех сайтов, которые мне интересны. При этом я не проверяю
обновления каждый день &#8211; их слишком много, и на это уйдет прорва времени, которого и
без того всегда не хватает. Более того, я никогда не подписываюсь на
рассылки этих сайтов &#8211; спама и без этого килограммы приходят. И, тем
не менее, я всегда в курсе.</p>

<p>Элегантное решение, позволяющее знать все обо всем, называется <a
href="http://www.watznew.com">Watznew</a>. Эта небольшая программа с
заданной периодичностью проверяет странички на предмет обновлений и,
буде таковые случились, сигнализирует об этом.</p>

<p><span id="more-38"></span></p>

<p>Разумеется, не все изменения нас интересуют &#8211; мало кому нужно
знать о появлении нового баннера на страничке. Выбрать интересующую часть можно с
помощью довольно примитивного, но, тем не менее, эффективного механизма шаблонов. При этом
программа не просто сигнализирует о случившихся изменениях, а выводит то, что вы захотите. Так для
новостного сайта это может быть заголовок последней статьи, для сайта
с метеосводкой &#8211; прогноз погоды на завтра и т.д. Иногда этого вполне
достаточно и на сайт можно не ходить вовсе.</p>

<p>Начнем, как водится, с конца &#8211; с результатов:</p>

<p><center><img src=/files/watznew/rusc.gif></center></p>

<p>Теперь расскажу о том, как я создал канал, транслирующий новости любимого сервера -
<a href=http://www.rusc.ru>http://www.rusc.ru</a>. Первым делом File / Add New / Setup a new HTTP channel,
в соответствующем месте вводим URL новостной странички -
http://www.rusc.ru и указываем периодичность проверок &#8211; 3 часа. По
большому счету этого уже достаточно. Как только страничка изменится,
программа нам об этом сообщит.</p>

<p>Однако хочется, чтобы при этом выводились заголовки новостей. Откроем окно свойств созданного
канала (Channel Properties / Search Pattern) и посмотрим HTML код страницы, нажав на
<img align=top src=/files/watznew/zoom.gif>:</p>

<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&amp;year=2002&amp;month=06<span class=bg1>"&amp;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&amp;year=2002&amp;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&amp;year=2002&amp;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&amp;year=2002&amp;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&amp;year=2002&amp;month=06"&gt;
... на этом месте новости заканчиваются ...
</code></pre></p>

<p>Особо мудрить не будем, просто на глазок прикинем, как можно найти начало и конец новостей. На
приведенном куске HTML кода я выделил цветом эти &#171;границы&#187;.</p>

<p>В языке шаблонов Watznew это может быть записано как:</p>

<p><pre><code>Последние новости:{*}"&gt;{%}&lt;/a&gt;{%}&lt;a class=sref href="/cgi-bin/newslist.pl</code></pre></p>

<p>Как вы можете догадаться, {%} обозначает текст, который нам интересен. Замечу, что использовать
{%} можно не один раз, выкусывая из странички разную информацию. Первая такая последовательность
при выводе сообщения будет обозначаться %1, вторая &#8211; %2 и т.д. В нашем случае %1 будет означать
дату, взятую со странички, а %2 &#8211; текст новостей.</p>

<p>{<em>} обозначает последовательность любых символов, которые нас не интересуют и будут
проигнорированы. Полезно, если часть страницы может произвольным образом меняться. Я использовал
{</em>} для того, чтобы пропустить некоторое количество тегов, которые мне писать было лень, к тому же
без них шаблон выглядит понятней.</p>

<p>Все остальные знаки в шаблоне обозначают сами себя.</p>

<p>После ввода шаблона еще раз жмем на изображение лупы, дабы убедиться, что все сделано
правильно. В нижней половине окна будут показаны значения переменных %1, %2, и т.д.:</p>

<p><center><img src=/files/watznew/pattern.gif></center></p>

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

<p><pre><code>Новости за %1:\n
%2
</code></pre></p>

<h2>Для самых ленивых</h2>

<p>Я подозреваю, что большая часть моих читателей просто не захочет
создавать каналы самостоятельно
- лениво станет. Ну что ж, автор программы ведет целую
<a href=http://www.watznew.com/channels/index.html>библиотеку
каналов</a>. Там уже есть готовые каналы для большинства известных
сайтов, остается их только скачать.</p>

<h2>Для самых любопытных</h2>

<p>Помимо вышесказанного WatzNew отслеживает появление писем в ваших почтовых ящиках,
синхронизирует время со специально обученными серверами точного времени и умеет использовать Perl
для выполнения особо хитрых вещей.</p>

<p>Кстати, если вы делаете
свою страничку, то рекомендую выполнить следующий трюк &#8211; после
создания канала укажите его в HTML коде, например, таким вот образом:</p>

<p><pre><code>&lt;title&gt;Записки Занятых&lt;/title&gt;</p>

<p>&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;</p>

<p>...
</code></pre></p>

<p>После этого, если кто-нибудь попытается создать канал
для вашего сайта, то ему будет предложен именно ваш вариант &#8211; WatzNew
проявляет интеллект.</p>

<p>Практически завершив очередную статью, я понял, что самое грустное и самое смешное едва не
осталось за кадром.</p>

<h2>Грустное и смешное</h2>

<p>Грустное &#8211; программа далеко не бесплатна. А всем известно, что
лекарства от жадности раздают <a href=http://astalavista.box.sk>тут</a>.
Однако асталависта сделала мне ручкой и сообщила, что версия 1.9 еще
никем не сломана. Ожидать этого можно с минуты на минуту &#8211; выпущена
она была не очень давно. Следовательно, появление лекарства от
жадности следует поджидать совсем скоро. Вот для проверки, не
появилось ли оно, и была приспособлена&#8230; программа watznew. Так
сказать, с особой циничностью:</p>

<p><center><img src=/files/watznew/crack.gif></center></p>
]]></content:encoded>
			<wfw:commentRss>http://olegd.com/blog/soft/watznew/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Баннеры</title>
		<link>http://olegd.com/blog/soft/admuncher/</link>
		<comments>http://olegd.com/blog/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 для
резки баннеров. Дело полезное и давно практикуемое значительной частью пользователей интернета.
Удаление баннеров позволяет существенно сократить трафик и ускорить загрузку страниц. Лично я за
последний месяц с домашнего диалапа &#171;нарезал&#187; рекламы на 18 мегабайт. И это притом, что серфер
из меня просто никакой &#8211; все что надо, [...]]]></description>
			<content:encoded><![CDATA[<p>Пришло мне давеча письмо, автор которого просил помочь настроить файервол ZoneAlarm для
резки баннеров. Дело полезное и давно практикуемое значительной частью пользователей интернета.
Удаление баннеров позволяет существенно сократить трафик и ускорить загрузку страниц. Лично я за
последний месяц с домашнего диалапа &#171;нарезал&#187; рекламы на 18 мегабайт. И это притом, что серфер
из меня просто никакой &#8211; все что надо, смотрю на работе, с хорошим коннектом.</p>

<p>Пришлось честно ответить &#8211; мол, так и так, ZoneAlarm не держу, а с баннерами у меня
разбирается более простая в настройке программа, называющаяся &#8230;</p>

<p><span id="more-37"></span></p>

<h2><a href=http://www.admuncher.com>AdMuncher</a></h2>

<p>Начнем с того, что размер файла, который предлагается скачать для установки, претендует
на абсолютный рекорд &#8211; 70656 байт!</p>

<p>Тем не менее, несмотря на скромный размер, программа великолепно удаляет рекламу с
посещаемых страниц, определяя их по:</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/>
оргинальный вариант</center></p>

<p>Те, кому не интересны 10 голых теток, прогулки Киселева и болтовня
&#171;последнего героя&#187;, увидят аккуратную страничку:</p>

<p><center><img src=/files/admuncher/lentaru.gif alt="лишенная рекламы Лента.Ру" border=1 width=455 height=224><br/>
результат</center></p>

<p>Как видите, назойливая реклама была аккуратно заменена на [censored].
Фотография же нашей лыжницы, в блестящем стиле выигравшей золотую олимпийскую медаль,
осталась в целости и сохранности.</p>

<p>Помимо баннеров AdMuncher успешно борется с:</p>

<ul>
<li>выскакивающими окнами (popups);
<li>музыкой на страницах;
<li>автоматически обновляющимися страницами;
<li>фоновыми картинками;
<li>скриптами, блокирующими правую кнопку мыши (поразительно как много людей боится,
что код их странички могут посмотреть);
<li>скриптами, изменяющими состояние status bar&#8217;а (очень неприятно наводить курсор на ссылку
и видеть вместо адреса что-нибудь вида &#171;обязательно нажми сюда&#187;).
</ul>

<p>Разумеется, все опционально и может быть настроено:</p>

<p><center><img src=/files/admuncher/admuncher.gif alt="окно настроек AdMuncher" width=486 height=352></center></p>

<p>Установка очень проста &#8211; запускается программа инсталляции и через пару
секунд все уже готово. Никаких дополнительных настроек не нужно, AdMuncher и без них
успешно работает со всеми популярными браузерами. Хит однозначно! Все срочно
<a href=http://www.admuncher.com/AM-Install.exe>качаем</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://olegd.com/blog/soft/admuncher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SequoiaView</title>
		<link>http://olegd.com/blog/soft/sequoiaview/</link>
		<comments>http://olegd.com/blog/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.

На описание этой программы я натыкался то там,
то сям, но значения восторженным воплям о том, что
программа позволила освободить половину винчестера, не придавал. Что
там [...]]]></description>
			<content:encoded><![CDATA[<p class="epigraph">Есть многое на свете, друг Горацио, что и не снилось
нашим мудрецам&#8230;</p>

<p>Что называется &#171;срочно в номер&#187;. В номер, тема которого планировалась совсем иной.
Однако не сложилось, ибо не смог удержаться. Просто обязан рассказать о мега-программе
<a href="ftp://ftp.win.tue.nl/pub/home/sequoia/Sequoia.exe">SequoiaView</a>.</p>

<p>На описание этой программы я натыкался то <a href="http://anfrax.ru/?p=20020104">там</a>,
то <a href="http://cooler.it/cl261001.html">сям</a>, но значения восторженным воплям о том, что
программа позволила освободить половину винчестера, не придавал. Что
там можно потерять на небольшом 6Гб диске, где каждый мегабайт на
учете? Тем не менее, решил скачать и посмотреть.</p>

<p><span id="more-36"></span></p>

<p>После запуска SequoiaView показывает содержимое
жесткого диска в виде разноцветных прямоугольников, группируя
их по каталогам. Файлы разных типов раскрашиваются в разные цвета:
архивы, mp3, программы, тексты и т.д. Казалось бы игрушка не более
того.
У меня была вот такая картинка (покрупнее, разумеется):</p>

<p><center><img src=/files/sequoiaview/sequoia.gif alt=SequoiaView width=356 height=270></center></p>

<p>Что бросилось в глаза. Первое &#8211; в правом верхнем углу два
одинаковых серых прямоугольника. Ага! Спасал ненароком убитый женой аккаунт
в Outlook Express. Для этого создал новый аккаунт и в него
импортировал сохранившиеся данные. Все восстановилось, но файлы
убитого аккаунта удалить забыл.</p>

<p>С этого момента я уже заинтересовался. Буквально несколько секунд
и плюс 70 мегабайт свободного места на диске.</p>

<p>Второе. Обратите внимание &#8211; на зеленом фоне (mp3-файлы) краснеет
узенькая вертикальная полоса, которая &#171;тянет&#187; на 20 мегабайт. Каким
образом этот zip-файл (а именно архивы раскрашиваются в такой цвет)
затесался в каталог с музыкой я уже не помню, но точно знаю, что ему
там не место.</p>

<p>А теперь грандиозный финал. Значительная часть диска занята
библиотекой MSDN Library &#8211; серый прямоугольник в левой части
картинки. Поверхностное изучение показало, что два самых больших
файла имеют одно и то же имя! При внимательном рассмотрении имен
каталогов оказалось, что у меня стоит аж две версии MSDN. Даже с
учетом того, что обе они существенно обрезаны, каждая ее экземпляр
занимает более 700 Мб.</p>

<h2>Резюме</h2>

<p>Пара минут разглядывания картинки, полученной с помощью
SequoiaView, и я освободил 800 Мб на диске. Программа получает
постоянную прописку, чего и вам желаю.</p>

<p class=sign>Удивленный, но довольный</p>
]]></content:encoded>
			<wfw:commentRss>http://olegd.com/blog/soft/sequoiaview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>P133. Часть вторая &#8211; с облегчением</title>
		<link>http://olegd.com/blog/soft/p133_dva/</link>
		<comments>http://olegd.com/blog/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 -
это тяжкое бремя, которое нести все равно придется, то все остальные
программы &#8211; наш личный выбор. И сделать его надо с умом. Дело в том, что
большинство программ со временем обрастает огромным количеством функций,
которые рядовому пользователю никогда не понадобятся. Эдакий [...]]]></description>
			<content:encoded><![CDATA[<p>В <a href="/soft/p133_raz/">первой части</a> мы говорили о том, как
разобрать мусор в завале, имя которому C:\WINDOWS. И если Windows -
это тяжкое бремя, которое нести все равно придется, то все остальные
программы &#8211; наш личный выбор. И сделать его надо с умом. Дело в том, что
большинство программ со временем обрастает огромным количеством функций,
которые рядовому пользователю никогда не понадобятся. Эдакий &#171;и швец, и жнец и
на дуде игрец&#187;. Зачастую такая универсальность неблагоприятно
сказывается на производительности, и все чаще и чаще мы видим, как программа
класса &#171;Hello world&#187; требует себе никак не меньше Pentium-4 с 256 Мб памяти,
поскольку нынче не модно просто вывести знаменитые слова, надо, чтобы они
обязательно были трехмерные.</p>

<p><span id="more-35"></span></p>

<p>Позанудстовав свое, перейдем к теме. Заметим, что подавляющему
большинству популярных &#171;тяжеловесных&#187; программ можно найти
значительно более &#171;легкие&#187; аналоги. При этом функциональность если и
снижается, то в разумных пределах. Основные параметры, по которым мы
собираемся получить выигрыш:</p>

<ul>
<li> время загрузки<br />
<li> скорость работы<br />
<li> память<br />
<li> надежность<br />
</ul>

<p>Насчет последнего пункта объяснение очень простое &#8211; чем проще
программа, тем меньше в ней проблемных мест.</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>Небезызвестный интернет-пейджер, превратившийся со временем в
монстра, поглощающего память, взамен предлагающего множество
возможностей, большая часть которых уже давно не связана с
первоначальной задачей &#8211; обменом коротенькими сообщениями. Что до
меня, то всю эту псевдофункциональность я видал известно где и
известно, в каких тапочках. А посему располневшей старушке ICQ было вежливо
указано в Trash, а на ее место была поставлена молодая и стройная
Miranda.</p>

<p>Это чудо было изначально спроектировано очень разумно. Есть ядро,
к которому можно подключать те <a href=http://www.nortiq.com/miranda/index.php?action=display&#038;cat=Plugin>плагины</a>,
которые нужны. В результате программа становится настолько функциональной,
насколько это требуется лично пользователю. Плагинов уже очень даже немало и
умеют они делать почти все, от чего мы так лихо избавились, снеся
ICQ</p>

<ul>
<li> SMS<br />
<li> проверка почты<br />
<li> поддержка протокола MSN Messenger<br />
<li> и прочая, прочая, прочая&#8230;<br />
</ul>

<p>В результате мы имеем выигрыш как минимум по первым трем пунктам.
Что касается четвертого пункта, то тут не все так очевидно -
как мне показалось, программа еще достаточно сыровата. Возможно,
впрочем, что глюки не у нее, а лично у меня. В любом случае пара
случайных падений не повод отказываться от программы, которая себя
совершенно нормально чувствует на P-133. Пять баллов.</p>

<h2>Email</h2>

<p>Вторым кандидатом на &#171;вынос&#187; я бы назвал Outlook Express. Правда,
тут надо сделать оговорку. Как email-клиент эта программа вполне меня
бы устроила, если бы в свое время я не подсел на
<a href="http://www.ritlabs.com/thebat/">http://www.ritlabs.com/thebat/</a>The Bat!</http>. Как news-клиент
Outlook Express для меня остается стандартом де-факто. Однако
то, что постоянно запущенный Outlook Express отъедает &#171;чистых&#187; 6 мегабайт
памяти не может не напрягать. Вот если бы можно было дешево и сердито
узнавать, есть ли новые письма в ящике и только после этого запускать
почтового клиента. И тут на помощь приходит целый класс программ -
&#171;email checkers&#187;. На <a href=http://www.tucows.com>www.tucows.com</a>
в этой категории можно скачать и попробовать не один десяток
программ. Лично я с удовольствием попользовался программой
<a href=http://www.kabsoftware.com/lydia.htm>Lydia 3.3.1</a>. Занимает
в памяти она около 300K, при этом с блеском выполняет свою задачу -
проверку почтовых ящиков. Помимо этого можно:</p>

<ul>
<li>просмотреть заголовки пришедших писем (From, Subject, Date, Size)
<li>просмотреть первые N строк выбранных писем
<li>удалить ненужные письма прямо на сервере, не загружая их к себе
<li>написать новое письмо или написать ответ &#8211; простенький, но вполне
функциональный email-клиент встроен в программу!
<li>запустить таки Outlook Express для скачивания и просмотра тех
писем, которые остались в живых после первых 4 шагов
</ul>

<p>Выглядит это примерно так (на рисунке одно из писем помечено для удаления):</p>

<p><center><img src=/files/p133_dva/lydia.gif alt=Lydia width=462 height=162></center></p>

<p>Маленькая ложка дегтя &#8211; с кодировкой KOI-8, программа, увы, не
знакома, так что ее родной почтовый клиент может вам пригодиться
только для переписки на тарабарском языке. В любом случае, мой P133
сделал еще один выдох, сбросив с плеч тяжкий груз в виде постоянно
запущенной почтовой программы. Троекратное ура, товарищи!</p>

<p class=sign>продолжение следует &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://olegd.com/blog/soft/p133_dva/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>P133. Часть первая &#8211; уборка</title>
		<link>http://olegd.com/blog/soft/p133_raz/</link>
		<comments>http://olegd.com/blog/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 в компьютер. Я не
оговорился. Под последним я подразумеваю нечто, на чем можно поработать и
поиграть, получая при этом  удовольствие. Насчет поиграть советчик я так себе
- последний раз компьютерную игру запускал полгода назад. И был это Quake 3,
которому места на вышеупомянутом устройстве ну никак не найдется.

Откуда у [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня мы поговорим о том, как превратить Pentium 133 в компьютер. Я не
оговорился. Под последним я подразумеваю нечто, на чем можно поработать и
поиграть, получая при этом  удовольствие. Насчет поиграть советчик я так себе
- последний раз компьютерную игру запускал полгода назад. И был это Quake 3,
которому места на вышеупомянутом устройстве ну никак не найдется.</p>

<p>Откуда у меня взялся сей музейный экспонат? Ха! Нашел. В буквальном смысле.
Собрался он из запчастей, которые не стоили мне ни копейки. Технологию поиска
пересказывать не буду &#8211; у вас не получится, поскольку ничего не осталось.</p>

<p>Что вышло. Pentium 133, памяти 32 мегабайта, 4 Гб диск, какая то
видеокарточка S3, SoundBlaster 16, монитор на 15&quot; ну и прочей мелочевки мешок.
В принципе полный набор. Лет 5 назад просто предел мечтаний. А сегодня&#8230;</p>

<p><span id="more-34"></span></p>

<p>А что сегодня? Ну подумаешь на дворе XXI век. Будем затягивать гайки!
Для начала разберемся с операционной системой. На винте имеется
предустановленная ОС Windows 98. Менять на более шуструю 95 или
переустанавливать с нуля 98 не хочется &#8211; слишком много уже поставлено
предыдущим хозяином из того, что нужно лично мне для работы, а взять в
общем-то не откуда. Значит будем разгребать мусор.</p>

<h2>Windows</h2>

<p>Что у нас лишнее? Сразу же &#8211; фоновый рисунок. Память пригодится для более
полезных вещей. Следом деинсталлируется, стирается все, что не
понадобится (мне не нужна программа для синхронизации с Palm&#8217;ом и
ежедневник на корейском языке). При этом остается барахло в реестре и
на диске в виде никому не нужных записей и неиспользуемых DLL
соответственно. Тут все просто &#8211; есть целый ряд программ,
которые помогают подмести мусор. О них и пойдет речь ниже.</p>

<h2><a href=http://www.ozemail.com.au/~kevsol/clnsysdr.zip>Clean System
Directory</a></h2>

<p>Небольшая (архив &#8211; 70Kb) программа, позволяющая найти DLL, на которые никто не
ссылается. Работает она очень просто &#8211; составляет список DLL и сканирует все
файлы на диске на предмет наличия там имен из этого списка. Все, что никем не
используется, перемещается в каталог C:\WINDOWS\SYSTEM\BKUPDLLS. После чего
можно поработать денек-другой и снести оттуда все без каких бы то ни было
угрызений совести. На этом этапе я лишился 4 Мб мусора о чем до сих пор не
пожалел.</p>

<h2><a href=http://www.vtoy.fi/jv16/programs/jv16pt_setup.exe>jv16 PowerTools</a></h2>

<p>Эта программа позволит почистить реестр. В отличие от предыдущей с ней
необходима осторожность, ибо снести что-нибудь полезное можно легким
движением руки.</p>

<p>Вот как она выглядит:</p>

<p><center><img src=/files/p133_raz/jv16mainmenu.gif width=443 height=365 alt=jv16 title=jv16></center></p>

<p>Программа сканирует реестр. Все, что указывает на файлы, не существующие
на диске, считается подлежащим удалению. Обращайте внимание &#8211; те ключики в
реестре, которые отмечены зеленым цветом, можно удалять
безболезненно:</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>Кстати, программа на самом деле содержит массу других полезных
возможностей: поиск дубликатов файлов, поиск файлов нулевой длины,
поиск временных файлов и прочая, прочая, прочая. Рекомендовано к
применению. Русский интерфейс имеет место быть.</p>

<h2><a href=http://bmi.newmail.ru/Downloads/MemGlanceSetup.exe>MemGlance</a></h2>

<p>С помощью данной программы мы можем внимательно изучить, какие
программы съедают больше всего памяти:</p>

<p><center><img src=/files/p133_raz/memglance.gif alt=MemGlance width=519 height=381 alt="MemGlance" title="MemGlance"></center></p>

<p>Обратите внимание, что память, занимаемая программой, указана в двух
столбцах. Первый столбец &#171;Полный размер&#187; включает в себя
все используемые DLL. Однако поскольку большинство из них
используется одновременно несколькими программами, то есть еще и
второе значение занятой памяти, которое указано во втором столбце -
&#171;Чистый размер&#187;.</p>

<p>Ага. Обнаруживаем, что у нас тихо и незаметно грузится RealPlayer
(на рисунке сей паразит не показан &#8211; скриншот снят много позже
состоявшегося выноса тела). Очень полезная программа, но не в нашем
случае, когда каждый килобайт на счету. Заходим в RealPlayer,
отключаем автозагрузку, что освобождает нам пару мегабайт ценной
памяти.</p>

<p class=sign>продолжение следует &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://olegd.com/blog/soft/p133_raz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WinWord и орфография</title>
		<link>http://olegd.com/blog/soft/winword_i_orfo/</link>
		<comments>http://olegd.com/blog/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, чтобы
избежать элементарных опечаток. Но временами его фокусы просто сводят
с ума.

Развлекательная часть

Вот, например, что мне предлагает Word, встретив во фразе &#171;то есть
скрипты &#8230;&#187; незнакомое слово &#171;скрипты&#187;:


крипты
скрипы
с крипты
скрип ты




Ну спасибо. Особенно за &#171;скрип ты&#187;. Сам дурак.

Или [...]]]></description>
			<content:encoded><![CDATA[<p>Обожаю я WinWord. Особенно за его проверку орфографии. Дело в том, что
все, что пишется для широкой публики, я прогоняю через Word, чтобы
избежать элементарных опечаток. Но временами его фокусы просто сводят
с ума.</p>

<h2>Развлекательная часть</h2>

<p>Вот, например, что мне предлагает Word, встретив во фразе &#171;то есть
скрипты &#8230;&#187; незнакомое слово &#171;скрипты&#187;:</p>

<blockquote>
крипты<br />
скрипы<br />
с крипты<br />
скрип ты<br />
</blockquote>

<p><span id="more-33"></span></p>

<p>Ну спасибо. Особенно за &#171;скрип ты&#187;. Сам дурак.</p>

<p>Или вот еще перл, полученный на слово &#171;медитирует&#187;:</p>

<blockquote>
меди тирует
</blockquote>

<p>Кто такой &#171;меди&#187; и зачем он &#171;тирует&#187;? Ладно, &#171;меди&#187; еще понятно -
родительный падеж слова &#171;медь&#187;, но что такое &#171;тирует&#187;???</p>

<p>Да он не знает слово &#171;интернет&#187;! Предложение &#171;скачивать из интернета
&#8230;&#187; вызвало негодование:</p>

<blockquote>
интерната<br />
интернате
</blockquote>

<p>Причем предлагается скачать из интерната не абы что, предлагается
именно исподнее белье. Не верите? Пожалуйста, &#8211; &#171;качайте исходники
мегабайтами&#187;:</p>

<blockquote>
качайте исподники мегабайтами
</blockquote>

<p>Действительно, что еще можно найти в интернате, кроме исподников.</p>

<h2>Очень серьезная часть</h2>

<p>Самое неприятное в проверке HTML-страниц с помощью Word&#8217;а заключается в
следующем. Он ругается на все тэги, как впрочем, и на все иностранные
слова. Дело в том, что при импортиртировании страницы, всем словам
выставляется один язык. В моем случае &#8211; русский. Затем Word пытается
проверить орфографию по соответствующему словарю, обламывается и
помечает слово, как неправильное.</p>

<p>Надоело это мне. К тому же, раз уж я пользуюсь Far&#8217;ом для редактирования
страниц, то было бы неплохо научить оный и проверке орфографии. Делается
это с помощью одного из трех плагинов -
<a href=http://www.uic.nnov.ru/~ruiv/plugring/downld/files/ansc031.zip>ArtN CS API Spell Checker</a>,
<a href=http://www.uic.nnov.ru/~ruiv/plugring/downld/files/gspell.1.03b.rar>gSpell</a>,
<a href=http://www.uic.nnov.ru/~ruiv/plugring/downld/files/rspl117.rar>raVen&#8217;s speller</a>.
Первый из них еще находится в стадии разработки, поэтому все его баги
названы автором &#171;фичами&#187;. Есть смысл использовать только последние два.
Мне больше приглянулся gSpell, поскольку он умеет предлагать варианты для
неверно написанных слов. При этом проверку английского языка можно
отключить и мы получим то, что хотелось:</p>

<p><center><img src=/files/winword_i_orfo/gspell.gif width=411 height=313 alt="GSpell" title="GSpell"></center></p>

<p>Чем не Word? Пока не хватает проверки грамматики. Запятые тоже надо уметь
ставить в положенных местах. Есть у меня идейка, как научить Word проверять
орфоргафию и грамматику, чтобы при этом не возникало проблем с английскими
словами. Доведу вскорости до ума и поделюсь обязательно.</p>
]]></content:encoded>
			<wfw:commentRss>http://olegd.com/blog/soft/winword_i_orfo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cygwin</title>
		<link>http://olegd.com/blog/soft/cygwin/</link>
		<comments>http://olegd.com/blog/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[Тема этой заметки будет следующая, &#8211; за что
я уважаю Unix. А уважаю я его за: bash, sed, grep, find. Казалось бы,
суть не в этом и профессионалы будут с пеной у рта доказывать, что сила, она,
брат, в концептуальном устройстве Unix, но нам бы что
попроще, на пальцах. Поэтому о самом главном как-нибудь потом, а пока
пройдемся по верхам.

Есть [...]]]></description>
			<content:encoded><![CDATA[<p>Тема этой заметки будет следующая, &#8211; за что
я уважаю Unix. А уважаю я его за: bash, sed, grep, find. Казалось бы,
суть не в этом и профессионалы будут с пеной у рта доказывать, что сила, она,
брат, в концептуальном устройстве Unix, но нам бы что
попроще, на пальцах. Поэтому о самом главном как-нибудь потом, а пока
пройдемся по верхам.</p>

<p>Есть такая вещь, которая называется <a href="http://www.cygwin.com">Cygwin</a>.
Это &#8211; качественный порт под Win32 многих Unix&#8217;овых утилит. При этом
достигается великолепная совместимость. То есть скрипты, написанные и
отлаженные под Windows, с большой вероятностью будут работать под Unix и
наоборот. Альтернативы Cygwin&#8217;у на данный момент практически нет,
единственным соперником мог бы быть MKS Toolkit, но он продается за
деньги, а нас такой вариант не устраивает. Идем качать и устанавливать
Cygwin. (<i>Тут вот проскочило некое подобие -
<a href="http://gnuwin32.sourceforge.net/packages.html">GnuWin32</a>. Фанаты могут
посмотреть, мне &#8211; лень. <b>11.01.2004</b></i>)</p>

<p><span id="more-32"></span></p>

<h2>Стоп, а зачем он мне нужен?</h2>

<p>Зачем он может пригодиться вам, я не знаю. Я могу только рассказать, зачем
он нужен мне:</p>

<ul>
<li> Во-первых, так уж сложилось, что я пишу программы, которые будут
использоваться, как на Windows, так и на unix-платформах. При этом
приходится создавать служебные скрипты, которые, например, производят
компиляцию всего проекта. Так вот с использованием Cygwin я могу написать
скрипты, которые одинаково запускаются и работают под обеими платформами
(Win/Solaris), мне не приходится делать отдельно bat и отдельно
shell-скрипты. Это сильно экономит время в момент написания
и, особенно, в момент модификации скриптов. Попробуйте параллельно править
обе версии, в которых различий больше чем сходства.

<li> Во-вторых, я могу использовать gnumake. А это один из лучших
make-ов, которые есть на данный момент. Кстати makefile будет одним и тем
же для обеих платформ.

<li> В-третьих, мощи CMD.EXE, который входит в Windows NT, не хватает
для написание серьезного скрипта. Есть, конечно, <a href=http://www.jpsoft.com>4DOS
и 4NT</a>, но это все равно не то.  Одни регулярные выражения чего стоят
(тут автор мечтательно закатывает глаза и медитирует 5 минут).

<li> В-четвертых. Вам никогда не приходилось скачивать из интернета
исходные тексты программ? Ага&#8230; Быть может и расширения вроде .tar.gz
для вас не пустой звук? Тем, кто по молодости да по неопытности с этим
никогда не сталкивался, поясню, &#8211; есть такая традиция у &#171;юниксоидов&#187; делать
архивы с помощью двух программ &#8211; tar и gzip. Первая соединяет все нужные
файлы в один, а вторая их сжимает. Степень сжатия при этом выше, чем, если
сжимать все файлы по отдельности. Очень похожим образом, кстати, работает
<a href=http://www.rarsoft.com>WinRar</a> с его solid-сжатием. И все бы
было хорошо, если бы не было так плохо в Windows с tar&#8217;ом и gzip&#8217;ом. А в
Cygwin&#8217;е есть и tar и gzip. Все работает, все счастливы. Качайте исходники
мегабайтами, учитесь.

<li> В-пятых, в-шестых, &#8230;
</ul>

<h2>Э-э-э, ты мне пример реального использования покажи&#8230;</h2>

<p>Хотите примеры? Пожалуйста. Последний пример из реальной жизни.</p>

<p>Писал я <a href=/soft/far/UpAndDown10b2.zip>плагин</a> для Far&#8217;а. Причем
писал на Visual C++. При этом нужно было получить список экспортируемых
плагином функций. То есть из:</p>

<p><pre><code><u>UpAndDown.cpp</u></p>

<p>void WINAPI _export SetStartupInfo(struct PluginStartupInfo *psi){
    ...
}</p>

<p>void WINAPI _export GetPluginInfo(struct PluginInfo *pi){
    ...
}</p>

<p>HANDLE WINAPI _export OpenPlugin(int OpenFrom,int item){
    ...
}
</code></pre></p>

<p>нужно получить:</p>

<p><pre><code><u>UpAndDown.def</u></p>

<p>EXPORTS
; Список функций
  SetStartupInfo
  GetPluginInfo
  OpenPlugin
</code></pre></p>

<p>Это что ж  получается &#8211; добавлю я еще одну экспортируемую функцию и мне
надо не забыть еще и def-файл параллельно править? Дудки. Смотрю на свои
исходники, &#8211; все экспортируемые функции выглядят очень и очень похоже, как
бы их имена выдрать из исходников?</p>

<p>Решение программиста:</p>

<p><pre><code><u>Кусок из makefile</u></p>

<p>$(DEF): $(OBJS)
  echo EXPORTS > $(DEF)
  echo ; This file was created by makefile >> $(DEF)
  cat <em>.cpp | grep _export | sed "s/.</em> &#40;.<em>&#41;(.</em>/  \1/" >> $(DEF)
</code></pre></p>

<p>Как это работает. Программа cat &#171;передает по цепочке&#187; текст всех
файлов с расширением cpp программе grep. Та оставляет только строки, в
которых присутствует ключевое слово _export и эти строки отдает sed&#8217;у:</p>

<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>

<p>Дальше &#8211; сложнее, дальше регулярные выражения. Я минут 10 пытался
описать это простенькое в сущности регулярное выражение, но потом понял,
что тем, кто с ними еще не знаком, мне не удастся в двух словах изложить
материал. Поверьте на слово, что эта последовательность &#171;скобочек и
палочек&#187; берет со стандартного входа строку и заменяет ее словом,
&#171;которое идет после пробела и за которым стоит открывающая круглая
скобка&#187;, то есть на выходе конвейера мы получаем только имена
экспортируемых функций из всех файлов, текущего каталога, что и
требовалось! Они перенаправляются в def-файл, а я про него могу забыть и
не вспоминать, он сам создается, сам модифицируется при необходимости.</p>

<h2>Резюме</h2>

<p>Лень &#8211; двигатель прогресса. Скачав и установив себе Cygwin, вы сможете
написать скрипт do_all, который будет делать за вас все, причем сразу и на
Solaris&#8217;е и Windows. Вам остается только курить и мечтательно плевать в
потолок. Кстати, хорошая идея&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://olegd.com/blog/soft/cygwin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Far. Макросы</title>
		<link>http://olegd.com/blog/soft/far_macros/</link>
		<comments>http://olegd.com/blog/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;ом становится гораздо менее удобной. Но
помимо плагинов есть одна вещь, позволяющая изменить поведение нашего
любимого файл-менеджера &#8211; макросы.

Для тех, кому уже исполнилось 6 лет, но еще не исполнилось 7,
объясняю на пальцах. Есть у нас последовательность клавиш, которую мы
часто используем. Длинная последовательность. Очень длинная. А мы
берем и [...]]]></description>
			<content:encoded><![CDATA[<p>В <a href="/soft/far_plugins/">предыдущей заметке</a> мы говорили о плагинах,
без которых работа с Far&#8217;ом становится гораздо менее удобной. Но
помимо плагинов есть одна вещь, позволяющая изменить поведение нашего
любимого файл-менеджера &#8211; макросы.</p>

<p>Для тех, кому уже исполнилось 6 лет, но еще не исполнилось 7,
объясняю на пальцах. Есть у нас последовательность клавиш, которую мы
часто используем. Длинная последовательность. Очень длинная. А мы
берем и назначаем эту длинную последовательность одной клавише. Вот
это и есть макрос.</p>

<p>Ниже я обязательно перечислю те макросы, которые использую сам,
но для начала поговорим о том, как они вообще создаются и
редактируются.</p>

<p><span id="more-31"></span></p>

<h2>Создание и редактирование макросов</h2>

<p>Стандартный вариант, который предлагается Far&#8217;ом, состоит в
следующем &#8211; мы нажимаем &#171;Ctrl-.&#187; (при этом в
левом верхнем углу появится буква R &#8211; запись, record), затем
последовательность клавиш, затем опять &#171;Ctrl-.&#187;,
после чего Far предложит назначить клавишу введенной
последовательности.</p>

<p>Описанный метод вполне пригоден для задания коротких макросов, но
длинные задавать таким способом крайне неудобно. Фактически это
делается вслепую. Более того, отредактировать макропоследовательность
и вовсе не удастся &#8211; придется повторить всю операцию с самого начала
и быть при этом более внимательным.</p>

<p>Однако есть альтернативный вариант, который я упомянул в
<a href=far_plugins>записке</a>, посвященной плагинам.
Альтернативный вариант носит название
<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>.
При вызове Macro View вы увидите все определенные на данный момент
макрокоманды, например вот такие:</p>

<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>

<p>Кстати, обратите внимание, что в данном случае клавиша
&#171;Alt-F6&#187; задана целых три раза &#8211; для
редактирования (Text editor), для просмотра (Built-in viewer) и для
файловых панелей (File panels). Помимо этого еще бывают следующие
состояния: диалоговые окна (Dialogue windows), меню дисков (Disks
menu), главное меню (Main menu), окно быстрого поиска (Quick search
files) и загадочные &#171;Other areas&#187;. Это говорит о том, что одной и той
же клавише в различных ситуациях могут соответствовать разные
макропоследовательности.</p>

<p>Любой макрос можно удалить клавишей &#171;Del&#187;,
добавить клавишей &#171;Ins&#187; или отредактировать -
&#171;Enter&#187;. При этом, в отличии от стандартного
варианта, вы визуально можете наблюдать редактируемую макрокоманду:</p>

<p><pre><code>F11 l Enter</code></pre></p>

<p>Макросы записываются в реестр, как, впрочем, и все, что касается
конфигурации Far&#8217;а. Поэтому их можно экспортировать в отдельный
reg-файл (клавиша &#171;F2&#187; в Macro View). Получается
нечто похожее на:</p>

<p><pre><code>REGEDIT4</p>

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

<p>Обратная процедура импортирования из reg-файла производится
программой regedit:</p>

<p><pre><code>regedit AltF6.reg</code></pre></p>

<p>Примеры макрокоманд, сохраненных в виде reg-файлов, вы можете найти в
каталоге C:\Program Files\Far\Addons\Macros. Там лежит примерно 25
примеров макросов.</p>

<h2>Для чего они нужны?</h2>

<p>Думаю, что пора ответить на главный вопрос, &#8211; в каких ситуациях
могут пригодиться макросы? В общих чертах понятно, но, думаю, стоит
поподробней. Давайте загибать пальцы.</p>

<h2>Для сокращения ввода</h2>

<p>Длинная последовательность нажатий заменяется одним. Выходит
короче, а, следовательно, меньше вероятность сделать ошибку. Лично я
использую следующие макросы:</p>

<p>&#171;Ctrl-,&#187; &#8211; вставляет в текущее место
редактора заготовку для тэга &#8211; две угловые скобки, после чего
помещает курсор между ними.</p>

<p><pre><code>REGEDIT4</p>

<p>[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\Ctrl,]
"Sequence"="&lt; > Left"
"DisableOutput"=dword:00000001
"Description"="Вставить тэг"
</code></pre></p>

<p>&#171;Ctrl-/&#187; &#8211; все то же самое для
закрывающего тэга.</p>

<p><pre><code>REGEDIT4</p>

<p>[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\Ctrl/]
"Sequence"="&lt; / > Left"
"DisableOutput"=dword:00000001
"Description"="Вставить закрывающий тэг"
</code></pre></p>

<h2>Для быстрого вызова плагинов</h2>

<p>Дело в том, что большинство плагинов вызываются через меню,
вызываемое нажатием &#171;F11&#187;, после чего еще, как
минимум, следует нажатие &#171;горячей клавиши&#187;. Хочу, заметить, что со
многими плагинами дело этим не ограничивается &#8211; у них есть еще свои
подменю. В общем, пока доберешься, до нужного места, рабочий день
заканчивается. А если все это, начиная с &#171;F11&#187;
повесить на какую-то удобную клавишу (только не
&#171;Reset&#187;!), то есть шанс добраться до плагина уже
к обеду.</p>

<p>Я использую следующие макросы (будьте внимательны, у вас &#171;горячие
клавиши&#187; для плагинов почти наверняка отличаются, не забудьте
подправить!):</p>

<p>&#171;Alt-F6&#187; &#8211; <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>.
Как видите, калькулятор можно позвать в момент редактирования,
просмотра, а также просто находясь в обычном состоянии, наблюдая
синие панели:</p>

<p><pre><code>REGEDIT4</p>

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

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

<p>[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\AltF6]
"Sequence"="F11 l Enter"
"DisableOutput"=dword:00000001
"Description"="Калькулятор"
</code></pre></p>

<p>Alt-D&#187; &#8211; вставить дату в редакторе
(используется плагин <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>).
Лично мне дату удобней всего наблюдать в виде ДД.ММ.ГГ, а поскольку
каждый раз задавать формат лениво, то вот вам макрос:</p>

<p><pre><code>REGEDIT4</p>

<p>[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>

<p>&#171;Alt-T&#187; &#8211; тот же плагин, на этот раз
вставляется время в формате ЧЧ:ММ:СС</p>

<p><pre><code>REGEDIT4</p>

<p>[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>

<p>&#171;Alt-H&#187; &#8211; вызов плагина
<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>.
Навеяно сходной клавишей в DN. При нажатии показывает файлы из
всех подкаталогов текущего каталога. Макрос сам по себе очень
простой, экономия мизерная, но как бы то ни было, руки уже привыкли, и
переучить их оказалось сложнее, чем написать макрос:</p>

<p><pre><code>REGEDIT4</p>

<p>[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\AltH]
"Sequence"="F11 h"
"Description"="Ветка каталогов"
</code></pre></p>

<p>&#171;Alt-F9&#187; &#8211; у меня Far запускается в
оконном режиме и переключение 25/50 строк становится излишним. Даже
более того &#8211; оно мешает. Таким образом, убивая сразу двух зайцев,
вешаю на &#171;Alt-F9&#187; вызов конфигурации плагинов:</p>

<p><pre><code>REGEDIT4</p>

<p>[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\AltF9]
"Sequence"="F9 o u"
"DisableOutput"=dword:00000001
"Description"=""
</code></pre></p>

<h2>Для замены клавиш, используемых по умолчанию</h2>

<p>Далеко не всем клавиши, используемые в Far&#8217;е, кажутся удобными и
интуитивно понятными. И именно макросы могут помочь. Тут мы сильно
выигрываем, не тратя время на то, чтобы вспомнить, какую же именно
клавишу надо нажать.</p>

<p>Что пользую я:</p>

<p>Парочка макросов, взятых из стандартной поставки (Del.reg и
Esc.reg) &#8211; ссылок не даю, учитесь искать сами и, как говорится, RTFM.</p>

<p>Клавиши &#171;Alt-0&#187;, &#171;Alt-1&#187;,
&#171;&#8230;&#187;, &#171;Alt-9&#187; используются
вместо &#171;RCtrl-0&#187;, &#171;RCtrl-1&#187;,
&#171;&#8230;&#187;, &#171;RCtrl-9&#187;. Последние
используются для быстрого перехода по каталогам. Но, как мне кажется,
это не самый удобный вариант, поскольку нужны обе руки, правая для
&#171;Ctrl&#187;, а левая для цифр. Вариант, который
&#171;намакросил&#187; я, более эргономичный:</p>

<p><pre><code>REGEDIT4</p>

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

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

<p>...
</code></pre></p>

<h2>Для создания новых функций</h2>

<p>Вам чего-то не хватает? Подумайте, а не спасут ли макросы? Зачастую
ими можно удовлетворить почти все потребности.</p>

<p>Например:</p>

<p>&#171;Alt-Q&#187; &#8211; нечто вроде блокнота, позволяющего
делать записи. Для каждой записи ставится дата и время создания.
Выглядит это примерно так:</p>

<p><pre><code>03.06.01 02:54:00
выбросить вконец испорченный и
купить новый диск</p>

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

<p>03.06.01 02:53:23
отформатировать диск
</code></pre></p>

<p>А сам макрос вот (требуется плагин Date-n-Time):</p>

<p><pre><code>REGEDIT4</p>

<p>[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>

<p>&#171;Ctrl-Enter&#187; &#8211; в редакторе используется для
дублирования текущей строки. Уже не помню, с какого редактора это
повелось, но эту функцию я просто обожаю и использую где можно и где
нельзя:</p>

<p><pre><code>REGEDIT4</p>

<p>[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\CtrlEnter]
"Sequence"="Home ShiftDown CtrlIns ShiftIns ShiftIns Up Up"
"DisableOutput"=dword:00000001
"Description"="Удвоить строку"
</code></pre></p>

<p>&#171;Ctrl-,&#187; &#8211; вам никогда не приходилось
вызывать explorer из Far&#8217;а? У меня иногда возникает такая
необходимость. Причем чаще всего нужно, чтобы explorer сразу попал в
текущий каталог. Вот этим и занимается следующий макрос (заметьте,
что опять используется &#171;Ctrl-,&#187;, но теперь уже в
панелях):</p>

<p><pre><code>REGEDIT4</p>

<p>[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></p>

<h2>Рутине &#8211; нет!</h2>

<p>Пожалуй, пора и закругляться. Напоследок хочу еще отметить одно
применение для макросов. Скажем, имеется файл вида:</p>

<p><pre><code>слово 1
слово 2
слово 3
слово 4
слово 5
слово 6
...
</code></pre></p>

<p>А надо получить файл:</p>

<p><pre><code>слово 1 слово 3
слово 4 слово 6
...
</code></pre></p>

<p>Как видим, некоторые слова удаляются, некоторые объединяются в
одну строку. Разумеется, если первый файл состоит из 100000 строк, то
без программы не обойтись. Если же в нем 100 строк, то быстрее
окажется создать макрос!</p>

<p>Макрос временно будет &#171;повешен&#187; на любую свободную клавишу,
например, на &#171;Ctrl-R&#187;:</p>

<p><pre><code>REGEDIT4</p>

<p>[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\CtrlR]
"Sequence"="End Enter CtrlY CtrlY BS Space Home Down"
"DisableOutput"=dword:00000001
</code></pre></p>

<p>Теперь, после создания макроса, установите курсор на первую
строку и нажмите &#171;Ctrl-R&#187;:</p>

<p><pre><code>слово1 слово3
<u>с</u>лово4
слово5
слово6
слово7
...
</code></pre></p>

<p>Теперь еще разок &#171;Ctrl-R&#187;:</p>

<p><pre><code>слово1 слово3
слово4 слово6
<u>с</u>лово7
...
</code></pre></p>

<p>То, что надо! А теперь финал &#8211; нажмите
&#171;Ctrl-R&#187; и не отпускайте. Текст в редакторе
начнет форматироваться так, как и было заказано.</p>

<p>Кстати, макрос был написан достаточно аккуратно, и если вы на самой
последней строке лишний раз нажмете &#171;Ctrl-R&#187;, то
ничего не случится. Эффект &#171;последней строки&#187; обязательно надо
учитывать при написании такого рода макрокоманд.</p>

<p>Не забудьте удалить макрос после использования, чтобы не
удивляться на следующий день, неожиданному форматированию исходников
вашей программы при случайном нажатии &#171;Ctrl-R&#187;.</p>

<h2>Заключение</h2>

<p>Макросы, как и плагины, существенно расширяют возможности Far&#8217;а. Если
вы хотите работать комфортно, то они вам обязательно пригодятся. В
моей коллекции есть еще десятка два макросов, однако они уже
настолько специфичны, что приводить их я не рискнул. Те же макросы,
которые были упомянуты в данной записке, вы можете скачать одним
<a href=/files/far_macros/far_macro.zip>zip-файлом</a>. Рад был помочь.</p>
]]></content:encoded>
			<wfw:commentRss>http://olegd.com/blog/soft/far_macros/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
