<?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>Bappoy&#039;s blog &#187; советы</title>
	<atom:link href="http://bappoy.pp.ru/tag/sovety/feed" rel="self" type="application/rss+xml" />
	<link>http://bappoy.pp.ru</link>
	<description>Линуксоид на велосипеде с моторчиком</description>
	<lastBuildDate>Fri, 02 Dec 2011 11:44:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Несколько советов по bash-скриптингу</title>
		<link>http://bappoy.pp.ru/2007/11/27/bash-scripting-tips.html</link>
		<comments>http://bappoy.pp.ru/2007/11/27/bash-scripting-tips.html#comments</comments>
		<pubDate>Tue, 27 Nov 2007 08:34:29 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Ссылки]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/2007/11/27/bash-scripting-tips/</guid>
		<description><![CDATA[<p><a href="http://citkit.ru/articles/121/">Tips от Madskull&#8217;a: bash</a>, в т.ч.:</p>
<ul>
<li>ожидание запущенных в фоне задач</li>
<li>прерывание по таймеру (SIGALRM)</li>
<li>параметры в скриптах и функциях</li>
<li>работа с массивами</li>
<li>перехват прерываний с помощью trap</li>
<li>как сделать прогрессбар в bash-скриптах</li>
<li>чтение конфигов из скрипта</li>
<li>работа со строками без использования внешних утилит типа sed и awk</li>
<li>подстановка параметров</li>
<li>использование getopts в shell-скриптах</li>
<li>специальные переменные, цвета ECHO, спецсимволы</li>
<li>краткое описание некоторых полезных утилит</li>
</ul>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2007/11/27/bash-scripting-tips.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Несколько советов по работе с историей команд в bash</title>
		<link>http://bappoy.pp.ru/2007/11/26/bash-history-tips-n-tricks.html</link>
		<comments>http://bappoy.pp.ru/2007/11/26/bash-history-tips-n-tricks.html#comments</comments>
		<pubDate>Mon, 26 Nov 2007 17:15:14 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[lifehack]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/2007/11/26/bash-history-tips-n-tricks/</guid>
		<description><![CDATA[<p>Оригинал: <a href="http://richbradshaw.wordpress.com/2007/11/25/bash-tips-and-tricks/">bash tips and tricks</a></p>
<p>Для непосвящённых, bash &#8212; это оболочка по умолчанию во многих дистрибутивах Linux, включая Fedora, Ubuntu, Redhat и т.д. и т.п. Если вы используете ОС, основанную на Linux, есть вероятность, что вы используете именно bash. Поэтому ниже я сделал обзор некоторых часто встречающихся неудобств, а также простых способов их избежать.</p>
<p><strong>1. Забытая история bash.</strong><br />
Если вы открыли терминал и печатаете там команды, потом открыли еще один, немного его поиспользовали, то новый терминал не &laquo;вспомнит&raquo; ни одной команды, напечатанной в первом. Вдобавок, при закрытии первого терминала второй перезапишет все команды в истории, введённые в первом. Вдвойне досадно!</p>
<p>Это происходит потому, что история bash сохраняется только когда вы закрываете терминал, а не после каждой команды. Чтобы исправить такое поведение, добавьте в ~/.bashrc строки:</p>
<blockquote><p><code>shopt -s histappend<br />
PROMPT_COMMAND=`history -a`</code></p></blockquote>
<p>Это заставит bash дополнять историю вместо того, чтобы перезаписывать её: каждый раз, когда показывается приглашение командной строки, последняя команда добавляется в историю.</p>
<p><strong>2. Опечатки в названиях каталогов при cd.</strong></p>
<p>Добавьте в ваш .bashrc:</p>
<blockquote><p><code>shopt -s cdspell</code></p></blockquote>
<p>Теперь небольшие опечатки типа ect вместо etc будут игнорироваться.</p>
<p><strong>3. Дублирующиеся команды в истории bash.</strong></p>
<p>Я часто набираю cd .. много раз подряд, и потом, когда я нажимаю кнопку &laquo;вверх&raquo;, чтобы возвратиться к предыдущим командам, я не хочу, чтобы мне напоминали о моих не слишком элегантных экскурсиях по файловой системе.<br />
Добавьте в .bashrc:</p>
<blockquote><p><code>export HISTCONTROL="ignoredups"</code></p></blockquote>
<p>Или даже так:</p>
<blockquote><p><code>export HISTIGNORE="&amp;:ls:[bf]g:exit"</code></p></blockquote>
<p>Это заставит bash игнорировать дупликаты, так же как ls, bg, fg и exit, делая историю чище.</p>
<p><strong>4. Многострочные команды в истории.</strong><br />
Добавьте</p>
<blockquote><p><code>shopt -s cmdhist</code></p></blockquote>
<p>в .bashrc, тогда bash будет преобразовывать многострочные команды в одну строку для упрощения редактирования.</p>
<p><strong>5. Советы из комментариев.<br />
</strong></p>
<p>Нажмите Ctrl+R в bash, начните печатать и вы сможете найти введённую когда-то команду гораздо проще, чем нажимая 300 раз &laquo;вверх&raquo;.<br />
Или используйте</p>
<blockquote><p><code>history|grep "foo"</code></p></blockquote>
<p>для поиска &laquo;foo&amp;qyot; в истории команд.</p>
<blockquote><p><code>cd -</code></p></blockquote>
<p>переход в предыдущую директорию &#8212; полезно, если вы хотите куда-то сходить что-то поменять, а потом быстро вернуться обратно.</p>
<p>Предположим, что нужно выполнить несколько команд подряд с каким-то объектом:</p>
<blockquote><p><code>touch file<br />
ls file<br />
echo 1 &gt; file<br />
rm file</code></p></blockquote>
<p>Вместо того, чтобы каждый раз набирать file, достаточно нажать &laquo;Esc .&raquo;,  и аргумент из предыдущей команды подставится автоматически.</p>
<p><strong>Главный совет.</strong></p>
<p>Почитайте man shopt, найдёте много полезного :)</p>
<p><strong>В заключение.</strong></p>
<p>Вот несколько советов, как сделать историю bash более управляемой. Если у вас есть еще советы, добавляйте их в комментарии к <a href="http://richbradshaw.wordpress.com/2007/11/25/bash-tips-and-tricks/">оригинальной статье</a> или сюда.</p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2007/11/26/bash-history-tips-n-tricks.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Изменение цвета фона konsole при выполнении команды sudo</title>
		<link>http://bappoy.pp.ru/2007/11/26/konsole-sudo.html</link>
		<comments>http://bappoy.pp.ru/2007/11/26/konsole-sudo.html#comments</comments>
		<pubDate>Mon, 26 Nov 2007 15:33:16 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[lifehack]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[konsole]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/2007/11/26/konsole-sudo/</guid>
		<description><![CDATA[<p>В продолжение темы <a href="http://bappoy.pp.ru/2007/11/21/konsole-encodings/">konsole + dcop</a>.</p>
<p>В konsole есть механизм сохранения сессий (или сеансов, кому как нравится). Сразу после установки имеется несколько предопределённых сеансов: shell, midnight commander, root shell, root midnight commander. Они отличаются друг от друга, во-первых, командой, выполняющейся при запуске (sudo -s, mc или sudo mc), во-вторых, жёлтым цветом фона рутовой консоли &#8212; чтобы root не зевал и не написал случайно что-нибудь деструктивное.</p>
<p>Изменение цвета фона рутовой консоли &#8212; хорошая идея, однако переключаться в рутовую консоль путём вызова соответствующего сеанса (пусть даже с помощью горячих клавиш) не всегда удобно. Гораздо чаще используется команда sudo. Было бы неплохо менять цвет консоли и при её вызове.</p>
<p>С помощью dcop реализовать это очень просто:</p>
<blockquote><p><code>#!/bin/bash<br />
test -z "$KONSOLE_DCOP_SESSION" || dcop $KONSOLE_DCOP_SESSION setSchema BlackOnLightYellow.schema<br />
sudo $*<br />
test -z "$KONSOLE_DCOP_SESSION" || dcop $KONSOLE_DCOP_SESSION setSchema LightPicture.schema</code></p></blockquote>
<p>Вместо LightPicture.schema нужно написать свою любимую схему konsole. Скрипт можно сохранить под любым названием (например, sudo.sh) в каталог ~/bin, а в .bashrc назначить alias для sudo:</p>
<blockquote><p><code>alias sudo='~/bin/sudo.sh $*'</code></p></blockquote>
<p>Теперь при запуске sudo с любыми параметрами (sudo -s, sudo whoami и т.д.) консоль будет менять цвет фона на жёлтый на время выполнения.</p>
<p>P.S. поздновато я DCOP&#8217;ом начал проникаться &#8212; в KDE4 его заменит D-BUS.</p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2007/11/26/konsole-sudo.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Автоматическое изменение кодировки в konsole</title>
		<link>http://bappoy.pp.ru/2007/11/21/konsole-encodings.html</link>
		<comments>http://bappoy.pp.ru/2007/11/21/konsole-encodings.html#comments</comments>
		<pubDate>Tue, 20 Nov 2007 21:49:35 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[lifehack]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Ссылки]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[konsole]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/2007/11/21/konsole-encodings/</guid>
		<description><![CDATA[<p>У нас в организации есть несколько серверов со старыми линуксами, которые используют кодировку KOI8-R. С того момента, как я поставил на свой рабочий компьютер Федору, меня очень раздражала необходимость вручную переключать кодировку для каждого сеанса в konsole. Сегодня под впечатлением от <a href="http://j-sheridan.livejournal.com/11522.html">заметки про установку away в ICQ в зависимости от достижимости телефона по bluetooth</a> наконец придумал, как это сделать.</p>
<p>Как и всякая программа KDE, konsole использует <a href="http://en.wikipedia.org/wiki/Dcop" title="Wikipedia: DCOP">DCOP</a> для внутрисистемных коммуникаций. Это означает, что запущенной программой можно управлять из командной строки командами типа &laquo;<code>dcop konsole-2115 konsole setFullScreen true</code>&laquo;. Здесь <code>konsole-2115</code> &#8212; название программы + её pid, все остальные аргументы &#8212; это, говоря языком ООП, объект, методы и параметры. Список программ, которыми можно рулить подобным образом, и их объектов с методами можно получить, выполняя последовательно команды dcop, dcop konsole-2115, dcop konsole-2115 konsole и т.д.</p>
<p>Вернёмся к нашим баранам. Konsole при запуске устанавливает две переменные окружения: KONSOLE_DCOP, в которой хранится ссылка на текущий экземпляр программы, и KONSOLE_DCOP_SESSION &#8212; ссылка на текущий сеанс. Для установки кодировки текущего сеанса нужно использовать такую команду:</p>
<blockquote><p><code>dcop $KONSOLE_DCOP_SESSION setEncoding KOI8-R</code></p></blockquote>
<p>Собственно, на этом задачу можно считать решённой, осталось правильно оформить ответ :)</p>
<p>В качестве быстрого решения подойдёт прописывание в .bashrc alias&#8217;ов для всех интересующих хостов:</p>
<blockquote><p><code>alias 01='dcop $KONSOLE_DCOP_SESSION setEncoding KOI8-R;ssh bpp@192.168.0.1 $*;dcop $KONSOLE_DCOP_SESSION setEncoding UTF8;'<br />
alias 02='dcop $KONSOLE_DCOP_SESSION setEncoding KOI8-R;ssh bpp@192.168.0.2 $*;dcop $KONSOLE_DCOP_SESSION setEncoding UTF8;'<br />
alias 03='dcop $KONSOLE_DCOP_SESSION setEncoding KOI8-R;ssh bpp@192.168.0.3 $*;dcop $KONSOLE_DCOP_SESSION setEncoding UTF8;'</code></p></blockquote>
<p>Более правильное решение &#8212; оформить это в виде небольшого скрипта ~/bin/ssh-launcher.sh, который умеет переименовывать сеанс и проверять, выполняется ли команда в konsole, а не, например, в xterme, который dcop не поддерживает. Кроме того, скрипт можно расширять, добавляя установку различных параметров konsole в зависимости от хоста назначения.</p>
<blockquote><p><code><br />
#!/bin/bash<br />
if !([[ "$1" ]] &amp;&amp; [[ "$2" ]]) ; then</code></p>
<blockquote><p>echo Usage: $0 username hostname \[ ssh parameters \]<br />
exit 1</p></blockquote>
<p>fi</p>
<p>ssh_params=( $* )<br />
ssh_user=${ssh_params[0]}<br />
ssh_host=${ssh_params[1]}<br />
unset ssh_params[0]<br />
unset ssh_params[1]<br />
ssh_parameters=${ssh_params[*]}</p>
<p>if [[ x"$KONSOLE_DCOP" != "x" ]] ; then # если мы в konsole</p>
<blockquote><p>dcop $KONSOLE_DCOP_SESSION setEncoding KOI8-R<br />
dcop $KONSOLE_DCOP_SESSION renameSession $ssh_user@$ssh_host<br />
ssh $ssh_user@$ssh_host $ssh_parameters<br />
dcop $KONSOLE_DCOP_SESSION renameSession `whoami`@`hostname`<br />
dcop $KONSOLE_DCOP_SESSION setEncoding UTF8</p></blockquote>
<p>else</p>
<blockquote><p>kdialog &#8211;text &laquo;run this from konsole&raquo;</p></blockquote>
<p>fi</p></blockquote>
<p>Теперь в ~/.bashrc можно прописать alias&#8217;ы длы вызова этого скрипта:</p>
<blockquote><p><code><br />
alias 01='ssh-launcher bpp 192.168.0.1 $*'<br />
alias 02='ssh-launcher bpp 192.168.0.1 $*'<br />
alias 03='ssh-launcher bpp 192.168.0.1 $*'<br />
...<br />
alias bpp='ssh-launcher bappoy bappoy.pp.ru $*'<br />
</code></p></blockquote>
<p>P.S. Обратите внимание на <code>$*</code> в конце alias&#8217;а &#8212; благодаря этой переменной можно очень быстро выполнять команды на указанном сервере:</p>
<blockquote><p><code>01 ps -ax\|grep httpd\|wc -l</code></p></blockquote>
<p><strong>Ссылки про DCOP</strong><br />
<a href="http://docs.kde.org/userguide/kde-diy.html">KDE DIY &#8211; Building Your Own Tools</a><br />
<a href="http://linuxgazette.mirrors.org.ua/issue97/oregan2.html">Using DCOP from the command line</a> (Linux Gazette #97)<br />
<a href="http://en.wikipedia.org/wiki/Dcop">DCOP @Wikipedia</a></p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2007/11/21/konsole-encodings.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Админские забавы: издевательства над ворами wifi-трафика</title>
		<link>http://bappoy.pp.ru/2007/11/12/adminskie-zabavy-izdevatelstva-nad-vorami-wifi-trafika.html</link>
		<comments>http://bappoy.pp.ru/2007/11/12/adminskie-zabavy-izdevatelstva-nad-vorami-wifi-trafika.html#comments</comments>
		<pubDate>Mon, 12 Nov 2007 10:48:08 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[советы]]></category>
		<category><![CDATA[Ссылки]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/2007/11/12/adminskie-zabavy-izdevatelstva-nad-vorami-wifi-trafika/</guid>
		<description><![CDATA[<p>Ссылка дня, однозначно! <a href="http://www.ex-parrot.com/pete/upside-down-ternet.html">Что можно сделать с воришками, тырящими трафик через wifi</a>.</p>
<p>Ну и для обычных пользователей сквида, перебравших трафик на порносайтах и приколах, тоже подойдёт, в качестве первоапрельской шутки.</p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2007/11/12/adminskie-zabavy-izdevatelstva-nad-vorami-wifi-trafika.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google Alerts over RSS.</title>
		<link>http://bappoy.pp.ru/2007/11/07/google-alerts-over-rss.html</link>
		<comments>http://bappoy.pp.ru/2007/11/07/google-alerts-over-rss.html#comments</comments>
		<pubDate>Wed, 07 Nov 2007 18:55:37 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[Ссылки]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/2007/11/07/google-alerts-over-rss/</guid>
		<description><![CDATA[<p><a href="http://blog.niksite.ru">Ник Панов</a> описывает, как можно получать результаты поиска гугл через rss: <a href="http://blog.niksite.ru/obzory/uslugi/google/google_alerts_over_rss.html">Google Alerts over RSS.</a></p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2007/11/07/google-alerts-over-rss.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4 способа быстрого запуска программ в Windows</title>
		<link>http://bappoy.pp.ru/2007/10/31/windows-quick-launch.html</link>
		<comments>http://bappoy.pp.ru/2007/10/31/windows-quick-launch.html#comments</comments>
		<pubDate>Wed, 31 Oct 2007 14:49:50 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[lifehack]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/2007/10/31/windows-quick-launch/</guid>
		<description><![CDATA[<p>Иногда даже самому убеждённому линуксоиду приходится что-то делать в самой распространённой альтернативной операционной системе (т.е. Windows), и тогда берегитесь, окружающие, ибо стенания и проклятия в адрес Microsoft способны надолго испортить настроение поклонникам БГ. Одним из основных недостатков винды является неразвитость её интерфейса взаимодействия с пользователем, или, точнее говоря, чрезмерная развитость её GUI, заточенного в основном под использование мыши, что и расстраивает основную массу линуксоидов. Однако значительную часть операций можно выполнять и с помощью клавиатуры.<!--more--></p>
<p>Самая часто повторяемая операция &#8212; это запуск программ. Обычно что-нибудь типа word запускается с помощью мыши путём открывания меню &laquo;пуск&raquo;, затем программы, догий поиск пункта &laquo;Microsoft Office&raquo; или ярлыка Word&#8230; И хорошо, если пользователь помнит о том, что в панель быстрого запуска можно добавлять ярлыки. Но всё равно более семи-восьми ярлыков держать в этой панели неудобно (существует такое правило, согласно которому разрядность кэша первого уровня человеческого мозга равняется семи позициям, т.е. за один присест пользователь может воспринять список из семи пунктов), а искать и устанавливать одну из многочисленных программ для оптимизации быстрого запуска, а затем следить за ней, обновлять, привыкать пользоваться &#8212; мне лично западло. Поэтому лучше использовать имеющиеся, пусть и небогатые средства операционной системы.</p>
<p><strong>Способ первый: горячие клавиши</strong>. В таблице ниже приведены используемые мной наиболее часто:</p>
<table width="60%">
<tr>
<td valign="top">Win+R</td>
<td valign="top">запуск программы</td>
</tr>
<tr>
<td valign="top">Win+E</td>
<td valign="top">проводник</td>
</tr>
<tr>
<td valign="top">Win+Break</td>
<td valign="top">свойства системы</td>
</tr>
<tr>
<td valign="top">Win+F</td>
<td valign="top">поиск файлов (кстати, тут есть забавный глюк: собака иногда достаёт книгу и листает её в обратную сторону)</td>
</tr>
<tr>
<td valign="top">Win+M</td>
<td valign="top">свернуть все окна</td>
</tr>
<tr>
<td valign="top">Win+F1</td>
<td valign="top">справка Windows (иногда там даже можно что-нибудь вычитать!)</td>
</tr>
</table>
<p><strong>Способ второй.</strong> Windows унаследовала очень  многое из DOS, и в том числе переменную окружения PATH. Чтобы просмотреть, что там содержиться, необходимо запустить интерпретатор командной строки (Win+R, затем cmd) и набрать команду &laquo;path&raquo;. Будет показан список каталогов, в которых производится поиск исполняемых файлов, когда пользователь набирает какую-то команду. Первые каталоги в этом списке &#8212; папки windows  и windows\system32, в которых содержатся почти все программы, доступные в меню &laquo;программы&raquo; сразу после установки windows. Поэтому их можно запускать из командной строки, которая появляется при нажатии клавиш Win+R:</p>
<table>
<tr>
<td valign="top">notepad</td>
<td valign="top">блокнот</td>
</tr>
<tr>
<td valign="top">calc</td>
<td valign="top">калькулятор</td>
</tr>
<tr>
<td valign="top">cmd</td>
<td valign="top">командная строка</td>
</tr>
<tr>
<td valign="top">charmap</td>
<td valign="top">таблица символов</td>
</tr>
<tr>
<td valign="top">winmine</td>
<td valign="top">сапёр</td>
</tr>
<tr>
<td valign="top">appwiz.cpl</td>
<td valign="top">установка/удаление программ</td>
</tr>
<tr>
<td valign="top">c:</td>
<td valign="top">содержимое диска c:</td>
</tr>
</table>
<p><strong>Способ третий. Быстрые клавиши</strong>. У любого ярлыка, находящегося в меню &laquo;пуск&raquo;, на панели быстрого запуска или на рабочем столе, в свойствах можно прописать почти любую клавиатурную комбинацию (Win + что-то почему-то не работает). Главное тут &#8212; следить, чтобы эта комбинация не пересекалась с горячими клавишами самой винды или часто используемых программ. Например, на Putty у меня назначено Ctrl+Alt+P.</p>
<p><strong>Способ четвёртый. Пути к программам в реестре.</strong><br />
Большинство сторонних программ прописывают путь к себе в ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths и их также можно запускать по имени. Например:</p>
<table>
<tr>
<td valign="top">iexplore</td>
<td valign="top">Internet Explorer</td>
</tr>
<tr>
<td valign="top">winword</td>
<td valign="top">Microsoft Word (если установлен)</td>
</tr>
<tr>
<td valign="top">excel</td>
<td valign="top">Microsoft Excel</td>
</tr>
<tr>
<td valign="top">far</td>
<td valign="top">Far Manager (рулез форева!!!)</td>
</tr>
<tr>
<td valign="top">firefox</td>
<td valign="top">FireFox</td>
</tr>
<tr>
<td valign="top">winrar</td>
<td valign="top">WinRAR</td>
</tr>
</table>
<p>и так далее. Список имеющихся программ можно посмотреть в указанной выше ветке реестра и, естественно, расширять самостоятельно, помещая туда программы, которые не сделали это сами.</p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2007/10/31/windows-quick-launch.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Insert coin</title>
		<link>http://bappoy.pp.ru/2007/10/23/insert-coin.html</link>
		<comments>http://bappoy.pp.ru/2007/10/23/insert-coin.html#comments</comments>
		<pubDate>Tue, 23 Oct 2007 12:09:00 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[Ссылки]]></category>
		<category><![CDATA[советы]]></category>
		<category><![CDATA[юмор]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/2007/10/23/insert-coin/</guid>
		<description><![CDATA[<p>Офисный прикол: выводим на LCD-дисплей принтера HP сообщение <a href="http://kovaya.com/miscellany/2007/10/insert-coin.html">INSERT COIN</a></p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2007/10/23/insert-coin.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox: как бороться с опечатками при наборе URL</title>
		<link>http://bappoy.pp.ru/2007/10/15/firefox-fix-mistypes-with-keywords.html</link>
		<comments>http://bappoy.pp.ru/2007/10/15/firefox-fix-mistypes-with-keywords.html#comments</comments>
		<pubDate>Mon, 15 Oct 2007 07:58:19 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[lifehack]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://goodvin.pp.ru/2007/10/15/firefox-fix-mistypes-with-keywords/</guid>
		<description><![CDATA[<p>Очередной пример нестандартного использования ключевых слов в закладках opera и firefox: статья в Компьютерре <a href="http://www.computerra.ru/gid/rtfm/browser/332690/">&laquo;Как бороться с опечатками при наборе URL в Opera&raquo;</a>.</p>
<p>Краткое содержание: если опечатки типа &laquo;goodle.com&raquo; случаются слишком часто, то можно создать закладку на http://google.com и назначить ей соответствующий keyword. </p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2007/10/15/firefox-fix-mistypes-with-keywords.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox: генератор букмарклетов, которые принимают несколько аргументов</title>
		<link>http://bappoy.pp.ru/2007/10/10/firefox-multiple-keywords-bookmarklet-generator.html</link>
		<comments>http://bappoy.pp.ru/2007/10/10/firefox-multiple-keywords-bookmarklet-generator.html#comments</comments>
		<pubDate>Wed, 10 Oct 2007 15:10:33 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[Ссылки]]></category>
		<category><![CDATA[bookmarklets]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://goodvin.pp.ru/?p=202</guid>
		<description><![CDATA[<p>В продолжение темы firefox&#8217;овых штучек (<a href="http://goodvin.pp.ru/?p=200" title="фокусы с Firefox: замена поисковой системы, расширение функциональности ключевых слов">1</a>, <a href="http://goodvin.pp.ru/?p=201" title="Фокусы с Firefox, часть 2: автоматизация жж с помощью ключевых слов">2</a>): <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=124237#c19">букмарклет</a>, создающий другие букмарклеты, на которые можно назначить ключевое слово и вызывать их с несколькими аргументами (а не только с одним, как обычно). На странице <a href="http://kb.mozillazine.org/Multiple_parameter_keyword_searches">Multiple parameter keyword searches</a>, откуда я попал на вышеуказанную страницу, приведены два примера использования такого букмарклета: для сервиса <a href="http://googlefight.com">Googlefight</a> (сравнение популярности двух слов по выдаче google) и сравнение графиков котировок нескольких акций.</p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2007/10/10/firefox-multiple-keywords-bookmarklet-generator.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Фокусы с Firefox, часть 2: автоматизация жж с помощью ключевых слов</title>
		<link>http://bappoy.pp.ru/2007/10/09/firefox-lj-automatization-with-keywords.html</link>
		<comments>http://bappoy.pp.ru/2007/10/09/firefox-lj-automatization-with-keywords.html#comments</comments>
		<pubDate>Tue, 09 Oct 2007 17:09:35 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[lifehack]]></category>
		<category><![CDATA[bookmarklets]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://goodvin.pp.ru/?p=201</guid>
		<description><![CDATA[<p>В <a href="http://goodvin.pp.ru/?p=200">предыдущей заметке</a> было рассказано, как можно использовать ключевые слова в Firefox более оптимально. Сейчас постараюсь продемонстрировать практическое применение.</p>
<p>В своё время <a href='http://dolboeb.livejournal.com/profile'><img src='http://stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /></a><a href='http://dolboeb.livejournal.com/'><b>dolboeb</b></a> <a href="http://dolboeb.livejournal.com/920671.html">познакомил</a> массы с возможностью быстрого перехода на некоторые полезные сайты (к которым жж тоже относится, хе-хе) с помощью задания ключевых слов и параметров к ним. Немного поколдовав над javascript&#8217;ом и покурив соответствующие мануалы, я соорудил вот такой букмарклет:<br />
<!--more--></p>
<div align="center" style="font-size:150%;font-variant:sans-serif;font-weight:bold;"><a href="javascript:me=&quot;goodvin&quot;;t=&#39;%s&#39;;/* Idea &amp; realisation (c) goodvin, see http://goodvin.pp.ru/?p=201 for details */ arr=t.split(/%20+/); url=&quot;http://www.livejournal.com&quot;; if(arr.length==2) { user=arr[0]; switch(arr[1]){ case &quot;ff&quot;: url=&quot;http://users.livejournal.com/&quot;+user+&quot;/friends&quot;;break; case &quot;ii&quot;: url=&quot;http://users.livejournal.com/&quot;+user+&quot;/profile&quot;;break; case &quot;cc&quot;: url=&quot;http://users.livejournal.com/&quot;+user+&quot;/calendar&quot;;break; default: url=&quot;http://users.livejournal.com/&quot;+user+&quot;/&quot;; } } else if(arr.length==1){ switch(arr[0]){ case &quot;ff&quot;: url=&quot;http://users.livejournal.com/&quot;+me+&quot;/friends&quot;;break; case &quot;new&quot;: url=&quot;http://www.livejournal.com/update.bml&quot;;break; case &quot;cc&quot;: url=&quot;http://users.livejournal.com/&quot;+me+&quot;/calendar&quot;;break; case &quot;last&quot;: url=&quot;http://www.livejournal.com/editjournal.bml&quot;;break; case &quot;login&quot;: url=&quot;http://www.livejournal.com/login.bml&quot;;break; case String.fromCharCode(37,115): url=&quot;http://www.livejournal.com&quot;;break; default: url=&quot;http://users.livejournal.com/&quot;+arr[0]; } } location.href=url;">жежешечка</a></div>
<p>Чтобы попробовать букмарклет в деле, необходимо взяться за ссылку &laquo;жежешечка&raquo; мышкой, перетащить на панель закладок и отпустить. Затем нажать на появившуюся закладку правой клавишей мыши, открыть свойства и, во-первых, изменить ключевое слово на lj или ;; (точка с запятой два раза, &laquo;жж&raquo; в латинской раскладке); во-вторых, заменить никнейм вашего покорного слуги (<a href='http://goodvin.livejournal.com/profile'><img src='http://stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /></a><a href='http://goodvin.livejournal.com/119223.html'><b>goodvin</b></a>)  на что-нибудь более подходящее, например, на свой юзернейм или название модерируемого community. После этого сохранить закладку и при вводе в строку адреса нижеперечисленных команд все будет работать :)</p>
<p>Условимся, что вы назначили для закладки ключевое слово &laquo;lj&raquo;:</p>
<table border="0" cellpadding="1" cellspacing="1">
<tr valign="top">
<td><code>lj&nbsp;username</code></td>
<td rowspan=9 width="5%">&nbsp;</td>
<td>жж <a href='http://username.livejournal.com/profile'><img src='http://stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /></a><a href='http://username.livejournal.com/'><b>username</b></a></td>
</tr>
<tr valign="top">
<td><code>lj&nbsp;new</code></td>
<td>новый пост</td>
</tr>
<tr valign="top">
<td><code>lj&nbsp;ff</code></td>
<td>Ваша френдлента</td>
</tr>
<tr valign="top">
<td><code>lj&nbsp;cc</code></td>
<td>Ваш календарь</td>
</tr>
<tr valign="top">
<td><code>lj&nbsp;last</code></td>
<td><a href="http://www.livejournal.com/editjournal.bml">страница редактирования жж</a></td>
</tr>
<tr valign="top">
<td><code>lj&nbsp;login</code></td>
<td><a href="http://www.livejournal.com/login.bml">страница входа в жж</a>, на случай, если выкинуло (IP-адрес поменялся или пустили брата за компьютер)</td>
</tr>
<tr valign="top">
<td colspan=2>&nbsp;</td>
</tr>
<tr valign="top">
<td><code>lj&nbsp;username&nbsp;ff</code></td>
<td>френдлента пользователя <a href='http://username.livejournal.com/profile'><img src='http://stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /></a><a href='http://username.livejournal.com/'><b>username</b></a></td>
</tr>
<tr valign="top">
<td><code>lj&nbsp;username&nbsp;cc</code></td>
<td>календарь пользователя <a href='http://username.livejournal.com/profile'><img src='http://stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /></a><a href='http://username.livejournal.com/'><b>username</b></a></td>
</tr>
<tr valign="top">
<td><code>lj&nbsp;username&nbsp;ii</code></td>
<td>профиль пользователя <a href='http://username.livejournal.com/profile'><img src='http://stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /></a><a href='http://username.livejournal.com/'><b>username</b></a></td>
</tr>
</table>
<p>Данная фича проверялась в Firefox 2.0.0.7, должна работать в более ранних версиях. По слухам, Опера тоже так умеет. Как это работает, описывается в <a ref="http://goodvin.pp.ru/?p=200">предыдущей заметке</a>. Если Вы хотите что-то изменить (например, чтобы по команде <code>lj</code> открывалась по умолчанию не главная страница ЖЖ, а, например, френдлента &#8212; меняйте :) Разрешается распространение данного букмарклета без каких-либо ограничений; <a href="http://goodvin.pp.ru/">ссылку</a> на автора сохранять желательно, но не обязательно.</p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2007/10/09/firefox-lj-automatization-with-keywords.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>фокусы с Firefox: замена поисковой системы, расширение функциональности ключевых слов</title>
		<link>http://bappoy.pp.ru/2007/10/08/firefox-replacing-search-engine-and-advanced-keywords.html</link>
		<comments>http://bappoy.pp.ru/2007/10/08/firefox-replacing-search-engine-and-advanced-keywords.html#comments</comments>
		<pubDate>Mon, 08 Oct 2007 13:33:15 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[lifehack]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[bookmarklets]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://goodvin.pp.ru/?p=200</guid>
		<description><![CDATA[<p>на Хабрахабре <a href="http://www.habrahabr.ru/blog/browsers/26207.html">опубликовали</a> статью с многочисленными примерами про то, какие в FireFox&#8217;е и Опере есть прекрасные ключевые слова (рекомендуется ознакомиться со статьей перед тем, как читать дальше). Статья действительно очень и очень хорошая, поскольку наверняка сподвигнет не одну сотню читателей ХХ на дальнейшие исследования своих браузеров. Но там не упоминаются две немаловажные особенности, о которых и попробую сейчас рассказать.</p>
<p><strong>Фокус первый</strong>. Лично мне надоел Яндекс как поисковая система &#8212; в большинстве случаев результаты поиска замусорены оптимизаторским спамом и дорвеями. Зато очень нравится <a href="http://ajax.nigma.ru">Нигма</a>, тем более, что от них мне скоро придёт бесплатная книжка :) Но пальцы всё помнят, и, получив от мозга команду &laquo;набрать адрес поисковика&raquo;, пишут &laquo;ya.ru&raquo; и жмут enter. Чтобы написать &laquo;nigma.ru&raquo;, надо приложить дополнительное мозговое усилие и послать пальцам команду &laquo;набрать nigma.ru&raquo;.</p>
<p>Достаточно создать две закладки для адреса <a href="http://ajax.nigma.ru">http://ajax.nigma.ru</a>, назначить им ключевые слова &laquo;ya.ru&raquo; и &laquo;www.ya.ru&raquo; и вуаля! &#8212; яндекс открывается гораздо реже.</p>
<p>Используя тот же принцип, можно пошутить над соседом по работе &#8212; создать глубоко в меню закладку на какой-нибудь gay.ru и назначить этой закладке адрес его любимого сайта (auto.ru там или еще что-нибудь). Товарищ будет долго недоумевать :)</p>
<p><strong>Фокус второй</strong>.<!--more--> Наши программисты написали систему работы с запросами, называется sustainer, работает через веб-интерфейс. Каждому CR (Change Request, запрос на изменение функциональности) назначается свой персональный номер и к нему можно обратиться по адресу http://sustainer/reqXXX. Можно просматривать списки запросов, отсортированные и отфильтрованные по разным параметрам &#8212; по ответственному за исполнение, приоритету, программному продукту, к которому может относиться запрос, и т.д. Думаю, подобная система используется во многих более-менее серьезных программистских фирмах. Это была преамбула :)</p>
<p>Теперь амбула. Для того, чтобы открыть реквест с известным номером, рядовой сотрудник, вооруженный до зубов Internet Explorer&#8217;ом, запустит этот недобраузер, ткнет на закладку &laquo;sustainer&raquo; (если он ещё не прописан в качестве домашней страницы), ткнёт на первый попавшийся реквест, ткнёт в строку адреса, сотрет всю строку после &laquo;http://sustainer/req&raquo; (при переходе на реквест по ссылке из списка передаётся куча параметров), при этом рискуя стереть лишнего, напишет нужные ему цифры и только после этого попадёт в свой реквест. </p>
<p>Естественным решением было бы сделать закладку на http://sustainer/req%s и попадать в реквесты, набирая в адресной строке req 123. И это действительно работало, но по прошествии какого-то времени у этого подхода обнаружился серьёзный недостаток: очень часто хочется просто написать req и попасть на главную страницу нашего сустейнера. А вместо этого открывается страница http://sustainer/req%s с сообщением о том, что реквест с таким номером отсутствует.</p>
<p>Правильное решение было найдено <a href="http://forums.mozillazine.org/viewtopic.php?t=333466">здесь</a>. Оно базируется на двух китах:<br />
1. в строке адреса можно <a href="javascript:window.alert('preved!');">использовать javascript</a> :) Напишите в строке адреса: javascript:window.alert(&#39;Preved!&#39;); и вы будете приятно удивлены. На этом же базируются многочисленные букмарклеты, гугл вам в помощь.<br />
2. если указано ключевое слово, но не указан параметр, то %s и передаётся.</p>
<p>На основе вышеуказанных условий можно сформулировать техническое задание: если то, что написано после ключевого слова, совпадает с %s, то показать страницу по умолчанию (список запросов). Если не совпадает &#8212; конкретный запрос с прибавлением того, что написано.</p>
<p>Реализация этого ТЗ на javascript выглядит так:</p>
<blockquote><p><code>javascript:if(&#39;%s&#39;==String.fromCharCode(37,115))<br />
&nbsp;&nbsp;&nbsp;&nbsp;location.href=&#39;http://sustainer/?assigned=me&#038;module=www&#39;;<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;location.href=&#39;http://sustainer/req%s&#39;;</code></p></blockquote>
<p>Ст&oacute;ит записать это в одну строчку, и по ключевому слову req будет открываться нужная страница, содержащая список запросов, относящихся к модулю &laquo;www&raquo; и назначенных на авторизированного в системе пользователя:</p>
<input type="text" name="ex1" size="80" onFocus="javascript:this.select();" value="javascript:if(&#39;%s&#39;==String.fromCharCode(37,115)) location.href=&#39;http://sustainer/?assigned=me&#038;module=www&#39;;else location.href=&#39;http://sustainer/req%s&#39;;" />
<p>Казалось бы, все удовлетворены. Но&#8230; нет в жизни совершенства! Следующая итерация:</p>
<blockquote><p><code>javascript:if(&#39;%s&#39;==String.fromCharCode(37,115))<br />
&nbsp;&nbsp;&nbsp;&nbsp;location.href=&#39;http://sustainer/?assigned=me&#038;module=www&#39;;<br />
else if (&#39;%s&#39;==&#39;new&#39;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;location.href=&#39;http://sustainer/new&#39;;<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;location.href=&#39;http://sustainer/req%s&#39;;</code>
</p></blockquote>
<p>В одну строчку:</p>
<input type="text" name="ex2" size="80" onFocus="javascript:this.select();" value="javascript:if(&#39;%s&#39;==String.fromCharCode(37,115)) location.href=&#39;http://sustainer/?assigned=me&#038;module=www&#39;; else if (&#39;%s&#39;==&#39;new&#39;) location.href=&#39;http://sustainer/new&#39;;else location.href=&#39;http://sustainer/req%s&#39;;" />
<p>Теперь, если ввести в строке адреса &laquo;req new&raquo;, то откроется форма добавления нового запроса.</p>
<p>Расширять функциональность ключевых слов в сторону придания им сходства с командами можно бесконечно: в поле ввода адреса можно вписать мегабайты кода!</p>
<p>Думаю, основная идея понятна. Дальнейшие исследования можно проводить, отталкиваясь от этой заметки и от <a href="http://kb.mozillazine.org/Using_keyword_searches">оригинальной статьи</a> на <a href="http://kb.mozillazine.org">kb.mozillazine.org</a></p>
<p><strong>Update.<br />В <a href="http://goodvin.pp.ru/?p=201">следующей заметке</a> описывается использование данной технологии для более удобного доступа к ЖЖ.</strong></p>
]]></description>
		<wfw:commentRss>http://bappoy.pp.ru/2007/10/08/firefox-replacing-search-engine-and-advanced-keywords.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

