<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Комментарии на сайте sb0y[AT]home</title>
	<atom:link href="http://www.bagrincev.ru/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bagrincev.ru</link>
	<description>Уютный бложик девелопера.</description>
	<lastBuildDate>Fri, 30 Jul 2010 13:25:42 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>Комментарий к записи bash-&gt;установка бита владельца директории из списка (Sb0y)</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1723</link>
		<dc:creator>Sb0y</dc:creator>
		<pubDate>Fri, 30 Jul 2010 13:25:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1723</guid>
		<description>Спасибо огромное за подробные разъяснения, исправил скрипт.
Не знал про waitpid...</description>
		<content:encoded><![CDATA[<p>Спасибо огромное за подробные разъяснения, исправил скрипт.<br />
Не знал про waitpid&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи bash-&gt;установка бита владельца директории из списка (Konstantin Khomoutov)</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1722</link>
		<dc:creator>Konstantin Khomoutov</dc:creator>
		<pubDate>Thu, 29 Jul 2010 19:01:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1722</guid>
		<description>&lt;blockquote cite=&quot;#comment-content-1721&quot;&gt;
&lt;a href=&quot;#comment-1721&quot; rel=&quot;nofollow&quot;&gt;Sb0y&lt;/a&gt; :
    &gt;Также круглые скобки после if непонятны
Обычное правило хорошего тона – разделение процессов между собой )
Так обычно делают, когда пишут, например на C. Тяжёлые процессы чаще всего отдаются процессу-потомку, чтобы операционная система смогла выдержать необходимый баланс ресурсов.
&lt;/blockquote&gt;

Вы что-то путаете. С этим кодом есть две проблемы (вторую я при первом просмотре не увидел).

Первая: выгрузка вычислений или других операций в другой процесс нужна только для того, чтобы освободить исходный процесс для *параллельного* решения другой задачи. У Вас же создаётся сабшелл, он исполняет скрипт &quot;chgrp -R $group $dir&quot; (точнее, вместо указанных переменных в скрипт будут подставлены их значения перед передачей), а исходный процесс в это время тупо спит в вызове waitpid() чтобы дождаться завершения порождённого процесса.
То есть Вы просто ухудшили ситуацию на один лишний процесс (шелл).
Код
if chgrp -R $group $dir; then ...
делал бы то же самое, только без лишнего процесса.

Вторая проблема состоит в том, что Ваш код вообще делает не то, что вы предполагали, а именно:
1) Выполняется подстановка `chgrp -R $group $dir`. Сами по себе &quot;бэктики&quot; означают: &quot;выполнить скрипт между ними и вернуть то, что скрипт написал на stdout&quot;.
2) Поскольку chgrp никогда ничего на stdout не пишет, этот скрипт вернёт пустую строку.
3) Затем выполнится код &quot;()&quot;, т.к. в скобки будет поставлена пустая строка. Эта пустая строка будет скриптом, который выполняет сабшелл, организованный при помощи ().
Поскольку пустая строка -- вполне валидный скрипт, это выполняется молча и всегда успешно. Демонстрация:

#!/bin/sh

touch /tmp/xyzzy
if (`chmod 0644 /tmp/xyzzy`); then
    echo A
else
    echo B
fi

if (`chmod 0644 /tmp/xyzzy; echo HEY`); then
    echo A
else
    echo B
fi

и выполнение:

$ /bin/dash /tmp/foo.sh
A
/tmp/foo.sh: 14: HEY: not found
B

Короче, как я указал выше, на самом деле Вам следует использовать простое
if chgrp -R $group $dir; then ...</description>
		<content:encoded><![CDATA[<blockquote cite="#comment-content-1721"><p>
<a href="#comment-1721" rel="nofollow">Sb0y</a> :<br />
    &gt;Также круглые скобки после if непонятны<br />
Обычное правило хорошего тона – разделение процессов между собой )<br />
Так обычно делают, когда пишут, например на C. Тяжёлые процессы чаще всего отдаются процессу-потомку, чтобы операционная система смогла выдержать необходимый баланс ресурсов.
</p></blockquote>
<p>Вы что-то путаете. С этим кодом есть две проблемы (вторую я при первом просмотре не увидел).</p>
<p>Первая: выгрузка вычислений или других операций в другой процесс нужна только для того, чтобы освободить исходный процесс для *параллельного* решения другой задачи. У Вас же создаётся сабшелл, он исполняет скрипт &laquo;chgrp -R $group $dir&raquo; (точнее, вместо указанных переменных в скрипт будут подставлены их значения перед передачей), а исходный процесс в это время тупо спит в вызове waitpid() чтобы дождаться завершения порождённого процесса.<br />
То есть Вы просто ухудшили ситуацию на один лишний процесс (шелл).<br />
Код<br />
if chgrp -R $group $dir; then &#8230;<br />
делал бы то же самое, только без лишнего процесса.</p>
<p>Вторая проблема состоит в том, что Ваш код вообще делает не то, что вы предполагали, а именно:<br />
1) Выполняется подстановка `chgrp -R $group $dir`. Сами по себе &laquo;бэктики&raquo; означают: &laquo;выполнить скрипт между ними и вернуть то, что скрипт написал на stdout&raquo;.<br />
2) Поскольку chgrp никогда ничего на stdout не пишет, этот скрипт вернёт пустую строку.<br />
3) Затем выполнится код &laquo;()&raquo;, т.к. в скобки будет поставлена пустая строка. Эта пустая строка будет скриптом, который выполняет сабшелл, организованный при помощи ().<br />
Поскольку пустая строка &#8212; вполне валидный скрипт, это выполняется молча и всегда успешно. Демонстрация:</p>
<p>#!/bin/sh</p>
<p>touch /tmp/xyzzy<br />
if (`chmod 0644 /tmp/xyzzy`); then<br />
    echo A<br />
else<br />
    echo B<br />
fi</p>
<p>if (`chmod 0644 /tmp/xyzzy; echo HEY`); then<br />
    echo A<br />
else<br />
    echo B<br />
fi</p>
<p>и выполнение:</p>
<p>$ /bin/dash /tmp/foo.sh<br />
A<br />
/tmp/foo.sh: 14: HEY: not found<br />
B</p>
<p>Короче, как я указал выше, на самом деле Вам следует использовать простое<br />
if chgrp -R $group $dir; then &#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи bash-&gt;установка бита владельца директории из списка (Sb0y)</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1721</link>
		<dc:creator>Sb0y</dc:creator>
		<pubDate>Tue, 27 Jul 2010 19:18:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1721</guid>
		<description>&gt;Также круглые скобки после if непонятны

Обычное правило хорошего тона - разделение процессов между собой )
Так обычно делают, когда пишут, например на C. Тяжёлые процессы чаще всего отдаются процессу-потомку, чтобы операционная система смогла выдержать необходимый баланс ресурсов.

&lt;pre lang=&quot;bash&quot;&gt;
$ while IFS=’=’ read A B; do echo «A: $A; B: $B»; done
foo=bar
A: foo; B: bar
quux=xyzzy
A: quux; B: xyzzy
^D
&lt;/pre&gt;

Спасибо за трюк, раньше так никогда не делал. Вообще задумка была реализовать explode() из PHP...</description>
		<content:encoded><![CDATA[<p>>Также круглые скобки после if непонятны</p>
<p>Обычное правило хорошего тона &#8211; разделение процессов между собой )<br />
Так обычно делают, когда пишут, например на C. Тяжёлые процессы чаще всего отдаются процессу-потомку, чтобы операционная система смогла выдержать необходимый баланс ресурсов.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #007800;">IFS</span>=’=’ <span style="color: #c20cb9; font-weight: bold;">read</span> A B; <span style="color: #000000; font-weight: bold;">do</span> <span style="color: #7a0874; font-weight: bold;">echo</span> «A: <span style="color: #007800;">$A</span>; B: <span style="color: #007800;">$B</span>»; <span style="color: #000000; font-weight: bold;">done</span>
<span style="color: #007800;">foo</span>=bar
A: foo; B: bar
<span style="color: #007800;">quux</span>=xyzzy
A: quux; B: xyzzy
^D</pre></div></div>

<p>Спасибо за трюк, раньше так никогда не делал. Вообще задумка была реализовать explode() из PHP&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи bash-&gt;установка бита владельца директории из списка (Konstantin Khomoutov)</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1720</link>
		<dc:creator>Konstantin Khomoutov</dc:creator>
		<pubDate>Tue, 27 Jul 2010 17:38:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1720</guid>
		<description>Разбиение строк на поля можно было сделать чуть элегантнее -- при помощи временной смены IFS. Пример:
$ while IFS=&#039;=&#039; read A B; do echo &quot;A: $A; B: $B&quot;; done
foo=bar
A: foo; B: bar
quux=xyzzy
A: quux; B: xyzzy
^D

Также круглые скобки после if непонятны -- они организуют сабшелл. По-моему, достаточно было простого:
if chgrp -R $group $dir; then ...</description>
		<content:encoded><![CDATA[<p>Разбиение строк на поля можно было сделать чуть элегантнее &#8212; при помощи временной смены IFS. Пример:<br />
$ while IFS=&#8217;=&#8217; read A B; do echo &laquo;A: $A; B: $B&raquo;; done<br />
foo=bar<br />
A: foo; B: bar<br />
quux=xyzzy<br />
A: quux; B: xyzzy<br />
^D</p>
<p>Также круглые скобки после if непонятны &#8212; они организуют сабшелл. По-моему, достаточно было простого:<br />
if chgrp -R $group $dir; then &#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи Pidgin: Смайлы из QIP (s@work)</title>
		<link>http://www.bagrincev.ru/pidgin-qip-smiles/comment-page-1/#comment-1719</link>
		<dc:creator>s@work</dc:creator>
		<pubDate>Tue, 27 Jul 2010 13:51:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=746#comment-1719</guid>
		<description>На текущий момент имеет смысл обновить данный пакет!
Если есть желание, имеется полностью переработанный пакет со смайлами от qip 2010.
Вся карта написана с нуля, сами смайлы, естественно, тоже обновлены.</description>
		<content:encoded><![CDATA[<p>На текущий момент имеет смысл обновить данный пакет!<br />
Если есть желание, имеется полностью переработанный пакет со смайлами от qip 2010.<br />
Вся карта написана с нуля, сами смайлы, естественно, тоже обновлены.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи Gentoo-&gt;монтирование FTP сайтов к файловой системе (Sb0y)</title>
		<link>http://www.bagrincev.ru/autofs-mount-ftp/comment-page-1/#comment-1714</link>
		<dc:creator>Sb0y</dc:creator>
		<pubDate>Tue, 22 Jun 2010 02:51:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=967#comment-1714</guid>
		<description>Я вот потыркал на днях gvfs и сразу наткнулся на нерешаемые вопросы.
Можно ли заставить монтировать его в заданную директорию, а не в ~/.gvfs/ ?</description>
		<content:encoded><![CDATA[<p>Я вот потыркал на днях gvfs и сразу наткнулся на нерешаемые вопросы.<br />
Можно ли заставить монтировать его в заданную директорию, а не в ~/.gvfs/ ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи Gentoo-&gt;монтирование FTP сайтов к файловой системе (Pavel Vyazovoi)</title>
		<link>http://www.bagrincev.ru/autofs-mount-ftp/comment-page-1/#comment-1711</link>
		<dc:creator>Pavel Vyazovoi</dc:creator>
		<pubDate>Tue, 08 Jun 2010 16:14:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=967#comment-1711</guid>
		<description>curlftpfs весьма и весьма медленный фтп-клиент. Лучше прикрутить gvfs-mount (работает отдельно от gnome).</description>
		<content:encoded><![CDATA[<p>curlftpfs весьма и весьма медленный фтп-клиент. Лучше прикрутить gvfs-mount (работает отдельно от gnome).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи ejabberd: переход с mnesia на mysql (Sb0y)</title>
		<link>http://www.bagrincev.ru/ejabberd-%d0%bf%d0%b5%d1%80%d0%b5%d1%85%d0%be%d0%b4-%d1%81-mnesia-%d0%bd%d0%b0-mysql/comment-page-1/#comment-1710</link>
		<dc:creator>Sb0y</dc:creator>
		<pubDate>Wed, 02 Jun 2010 10:10:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=620#comment-1710</guid>
		<description>Хм, а зачем же может понадобится ставить ejabberd инсталятором, когда есть репазитории?

Кстати он бинарную сборку ставит или компилирует?</description>
		<content:encoded><![CDATA[<p>Хм, а зачем же может понадобится ставить ejabberd инсталятором, когда есть репазитории?</p>
<p>Кстати он бинарную сборку ставит или компилирует?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи ejabberd: переход с mnesia на mysql (24pm)</title>
		<link>http://www.bagrincev.ru/ejabberd-%d0%bf%d0%b5%d1%80%d0%b5%d1%85%d0%be%d0%b4-%d1%81-mnesia-%d0%bd%d0%b0-mysql/comment-page-1/#comment-1709</link>
		<dc:creator>24pm</dc:creator>
		<pubDate>Wed, 02 Jun 2010 03:30:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=620#comment-1709</guid>
		<description>Если ставить ejabberd не из пакетов, а инсталятором с оф. сайта, то все компоненты располагаются в /opt/ejabberd-x.x.x/
где x.x.x - версия приложения. 
В этом случае откомпеллированный модуль нужно скопировать в /opt/ejabberd-x.x.x/lib/ejabberd-x.x.x/ebin и сделать его исполняемым:
chmod +x mod_ctlextra.beam</description>
		<content:encoded><![CDATA[<p>Если ставить ejabberd не из пакетов, а инсталятором с оф. сайта, то все компоненты располагаются в /opt/ejabberd-x.x.x/<br />
где x.x.x &#8211; версия приложения.<br />
В этом случае откомпеллированный модуль нужно скопировать в /opt/ejabberd-x.x.x/lib/ejabberd-x.x.x/ebin и сделать его исполняемым:<br />
chmod +x mod_ctlextra.beam</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи Pidgin: Смайлы из QIP (annkapul)</title>
		<link>http://www.bagrincev.ru/pidgin-qip-smiles/comment-page-1/#comment-1708</link>
		<dc:creator>annkapul</dc:creator>
		<pubDate>Sat, 15 May 2010 07:07:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=746#comment-1708</guid>
		<description>Спасибо , ура, помогло</description>
		<content:encoded><![CDATA[<p>Спасибо , ура, помогло</p>
]]></content:encoded>
	</item>
</channel>
</rss>
