<?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>/var/log/dev.log</title>
	<atom:link href="http://blog.sdenix.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sdenix.net</link>
	<description>Лог моей активности</description>
	<lastBuildDate>Tue, 14 Feb 2012 15:07:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Perl FastCGI + Nginx</title>
		<link>http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/</link>
		<comments>http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 15:07:15 +0000</pubDate>
		<dc:creator>WatchDog</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://blog.sdenix.net/?p=237</guid>
		<description><![CDATA[Всем привет! Прошу прощения за столь долгое отсутствие обновлений =) работа&#8230; понимаете ли&#8230; Сегодня я кратко расскажу о том, как запустить Perl скрипт в FastCGI моде. Опыт случился такой &#8212; есть тяжелый Perl проект, запущенный под Apache. В какой-то прекрасный день Apache был &#171;задвинут за nginx&#187;, чтобы разгрузить оный, избавив его от передачи статики. Но [...]]]></description>
			<content:encoded><![CDATA[<p>Всем привет!</p>
<p>Прошу прощения за столь долгое отсутствие обновлений =) работа&#8230; понимаете ли&#8230;<br />
Сегодня я кратко расскажу о том, как запустить Perl скрипт в FastCGI моде.</p>
<p>Опыт случился такой &#8212; есть тяжелый Perl проект, запущенный под Apache.<br />
В какой-то прекрасный день Apache был &#171;задвинут за nginx&#187;, чтобы разгрузить оный, избавив его от передачи статики.<br />
Но проблема оставалась &#8212; мы видели много процессов apache в статусе W (Sending Content), просматривая /server-status&#8230;</p>
<p>Это был скрипт, который работал в CGI-моде и отрабатывал не столь быстро.<br />
<span id="more-237"></span></p>
<p>Было решено &#8212; пробуем перевести этот процесс в FastCGI, дабы не грузить его в память на каждый запрос (которых, скажу я Вам, было <strong>ОЧЕНЬ</strong> много)</p>
<p>После ряда экспериментов (и нехитрого чтения CPAN), я пришел к следующему решению:<br />
<strong>fast.cgi</strong><br />
<code><br />
#!/usr/bin/perl</p>
<p>use strict;<br />
BEGIN {<br />
    # порт<br />
    $ENV{FCGI_SOCKET_PATH} = ":9010";<br />
    # кол-во запросов в очереди на процесс<br />
    $ENV{FCGI_LISTEN_QUEUE} = 100;<br />
}<br />
# этот модуль, собственно, для FastCGI-mode<br />
use CGI::Fast;<br />
use FCGI::ProcManager;<br />
use POSIX;<br />
use Data::Dumper;</p>
<p># стартуем демона<br />
fork_proc() &#038;&#038; exit 0;</p>
<p># все потомки будут запущены от nobody.nobody<br />
POSIX::setsid() or die "Can't set sid: $!";<br />
POSIX::setuid(99) or die "Can't set uid: $!";</p>
<p># перенаправялем ввод/вывод, см. ниже<br />
&#038;assign_std_out();</p>
<p># запускаем обалденную "штуку" - менеджер процессов! Честно найдя эту вещь на CPAN я ужасно обрадовался :)<br />
# эта "штука" запустит нужное кол-во процессов и распихает между ними запросы<br />
my $proc_manager = FCGI::ProcManager->new({ n_processes => 10 });<br />
$proc_manager->pm_manage();</p>
<p># пока запрос приходит, мы его обрабатываем<br />
while (my $query = CGI::Fast->new()) {<br />
    ### делаем все, что нам нужно<br />
    ### $query теперь содержит все данные запроса - like CGI :)<br />
    ### например:<br />
    my $params;<br />
    $params->{$_} = $query->param($_) for ($query->param);<br />
    print "Content-type: text/plain\n\n";<br />
    print Data::Dumper->Dumper($params);<br />
}</p>
<p># старт демона<br />
sub fork_proc {<br />
    my $pid;<br />
    FORK: {<br />
        if (defined($pid = fork)) {<br />
            return $pid;<br />
        }<br />
        elsif ($! =~ /No more process/) {<br />
            sleep 5;<br />
            redo FORK;<br />
        }<br />
        else {<br />
            die "Can't fork: $!";<br />
        };<br />
    };<br />
};</p>
<p># перенаправление ввода/вывода<br />
sub assign_std_out {<br />
    # в null! все в null! (c)<br />
    open(STDIN,  "+>/dev/null") or die "Can't open STDIN: $!";<br />
    open(STDOUT, "+>&#038;STDIN") or die "Can't open STDOUT: $!";<br />
    open(STDERR, "+>&#038;STDIN") or die "Can't open STDERR: $!";<br />
};<br />
</code></p>
<p>Вот и все. Ставим скрипту 755. Делаем по нему &#171;ТЫЦ&#187;.<br />
Смотрим ps auxf | grep perl-fcgi<br />
И видим один родительский процесс, и 10 потомков :) РАДУЕМСЯ!!!</p>
<p>Перенаправляем нужные запросы из nginx на FastCGI &#171;сервер&#187;:<br />
<code><br />
server {<br />
        listen 0.0.0.0:80;<br />
        server_name domain.com www.domain.com;<br />
        charset utf8;</p>
<p>        set $use_fastcgi "1";</p>
<p>        location ~ fast\.cgi$ {<br />
                root /var/www/domain.com/cgi-bin;<br />
                include fastcgi.conf;<br />
                fastcgi_pass localhost:9010;<br />
        }</p>
<p>        location / {</p>
<p>            # если запрашиваемый файл существует, то нет смысла передавать запрос на fast.cgi<br />
            if (-f $request_filename) {<br />
                set $use_fastcgi "";<br />
            }</p>
<p>            if ( $use_fastcgi ) {<br />
                rewrite  "^/fastcgi$"    /cgi-bin/fast.cgi$request_uri    last;<br />
                break;<br />
            }<br />
        }<br />
</code></p>
<p>Стартуем/перезапускаем nginx. Пробуем:</p>
<p>http://www.domain.com/fast?test_param=1&#038;param2=value_</p>
<p>Если все получилось правильно, то вы увидите что-то типа вот этого:<br />
<code><br />
$VAR1 = 'Data::Dumper';<br />
$VAR2 = {<br />
          'test_param' => '1',<br />
          'param2' => 'value_'<br />
        };<br />
</code></p>
<p>Теперь, когда все запускается без проблем, делаем все, что нужно с запросом от пользователя и возвращаем ему результат быстро и без лишних напрягов системы.<br />
Этот способ хорош, когда скрипт тяжелый и требует внушительного времени и ресурсов на запуск.</p>
<p><em>PS: если Вы нашли ошибку или у вас появились вопросы &#8212; без смущения оставляйте комментарий к посту :) </em></p>
<p>Всем удачного дня!</p>

<div class="bookmarkz"><a href="http://www.google.com/bookmarks/mark?op=add&bkmk=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/&title=Perl+FastCGI+%2B+Nginx+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/google.png" border="0" width="15" height="15" alt="Google Bookmarks" title="Google Bookmarks"></a> <a href="http://digg.com/submit?url=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/digg.png" border="0" width="15" height="15" alt="Digg" title="Digg"></a> <a href="http://reddit.com/submit?url=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/&title=Perl+FastCGI+%2B+Nginx+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/reddit.png" border="0" width="15" height="15" alt="Reddit" title="Reddit"></a> <a href="http://del.icio.us/post?url=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/&title=Perl+FastCGI+%2B+Nginx+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/delicious.png" border="0" width="15" height="15" alt="del.icio.us" title="del.icio.us"></a> <a href="http://ma.gnolia.com/beta/bookmarklet/add?url=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/&title=Perl+FastCGI+%2B+Nginx+-+%2Fvar%2Flog%2Fdev.log&description=Perl+FastCGI+%2B+Nginx+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/magnolia.png" border="0" width="15" height="15" alt="Ma.gnolia" title="Ma.gnolia"></a> <a href="http://www.technorati.com/faves?add=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/technorati.png" border="0" width="15" height="15" alt="Technorati" title="Technorati"></a> <a href="http://www.slashdot.org/bookmark.pl?url=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/&title=Perl+FastCGI+%2B+Nginx+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/slashdot.png" border="0" width="15" height="15" alt="Slashdot" title="Slashdot"></a> <a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/&t=Perl+FastCGI+%2B+Nginx+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/yahoo.png" border="0" width="15" height="15" alt="Yahoo My Web" title="Yahoo My Web"></a> <a href="http://news2.ru/add_story.php?url=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/news2ru.png" border="0" width="15" height="15" alt="News2.ru" title="News2.ru"></a> <a href="http://www.bobrdobr.ru/addext.html?url=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/&title=Perl+FastCGI+%2B+Nginx+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/bobrdobr.png" border="0" width="15" height="15" alt="БобрДобр.ru" title="БобрДобр.ru"></a> <a href="http://rumarkz.ru/bookmarks/?action=add&popup=1&address=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/&title=Perl+FastCGI+%2B+Nginx+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rumarkz.png" border="0" width="15" height="15" alt="RUmarkz" title="RUmarkz"></a> <a href="http://www.vaau.ru/submit/?action=step2&url=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/vaau.png" border="0" width="15" height="15" alt="Ваау!" title="Ваау!"></a> <a href="http://memori.ru/link/?sm=1&u_data[url]=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/&u_data[name]=Perl+FastCGI+%2B+Nginx+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/memori.png" border="0" width="15" height="15" alt="Memori.ru" title="Memori.ru"></a> <a href="http://www.rucity.com/bookmarks.php?action=add&address=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/&title=Perl+FastCGI+%2B+Nginx+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rucity.png" border="0" width="15" height="15" alt="rucity.com" title="rucity.com"></a> <a href="http://moemesto.ru/post.php?url=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/&title=Perl+FastCGI+%2B+Nginx+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/moemesto.png" border="0" width="15" height="15" alt="МоёМесто.ru" title="МоёМесто.ru"></a> <a href="http://www.mister-wong.ru/index.php?action=addurl&bm_url=http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/&bm_description=Perl+FastCGI+%2B+Nginx+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/mrwong.png" border="0" width="15" height="15" alt="Mister Wong" title="Mister Wong"></a> </div>
]]></content:encoded>
			<wfw:commentRss>http://blog.sdenix.net/2012/02/14/perl-fastcgi-nginx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux: Debian Squeeze 64bit + Firefox</title>
		<link>http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/</link>
		<comments>http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 16:00:00 +0000</pubDate>
		<dc:creator>WatchDog</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[linux/unix]]></category>

		<guid isPermaLink="false">http://blog.sdenix.net/?p=234</guid>
		<description><![CDATA[Вот и решил я поиметь опыт общения с Debian :) В общем-то все ничего, но Iceweasel мне не пришелся по нраву&#8230; А т.к. Firefox пользую почти везде, то и озадачился его установкой. Пост&#8230; Точнее, краткая заметка, не рассчитана на то, чтобы решить все проблемы при установке Firefox на Debian Squeeze 64bit. Скорее, написана она для [...]]]></description>
			<content:encoded><![CDATA[<p>Вот и решил я поиметь опыт общения с Debian :)</p>
<p>В общем-то все ничего, но Iceweasel мне не пришелся по нраву&#8230; А т.к. Firefox пользую почти везде, то и озадачился его установкой.</p>
<p>Пост&#8230; Точнее, краткая заметка, не рассчитана на то, чтобы решить все проблемы при установке Firefox на Debian Squeeze 64bit. Скорее, написана она для себя любимого и расценивается как пункт в &#171;склерознике&#187;. Если возникнут вопросы &#8212; не стесняйтесь, задавайте в комментах. Буду отвечать :)</p>
<p>Кстати да, <strong>речь пойдёт о KDE</strong> ;)<br />
<span id="more-234"></span>Для начала, качаем архив с FireFox той версии, которая Вам больше нравится, отсюда &#8212; ftp://ftp.mozilla.org/pub/firefox/releases/ВЕРСИЯ/linux-x86_64/en-US/, где ВЕРСИЯ та, что Вы выберете =) Я выбрал 7.0.4b :)</p>
<p>Качаем, распаковываем в /usr/local/firefox. Делаем symlink:</p>
<p><code>sudo ln -s /usr/local/firefox/firefox /usr/bin/firefox</code></p>
<p>Запускаем :) погут понадобиться дополнительные либы &#8212; ставим, не стесняемся, на это нам есть apt-get :)</p>
<p>САМОЕ ДИКОЕ, что кинулось в глаза&#8230; Ессна оформление, все корявое, квадратное и противное. Поэтому нам нужен пакет kde-config-gtk-style<br />
Настраиваем, смотрим, вроде всё ок. НО, в том же GMail, да и вообще везде, кнопки и чекбоксы просто моснтрообразные! :) Огромные и ужасные :)<br />
А вот для этого, нам нужен пакет gtk2-engines-qtcurve<br />
После его установки идем в настройки Gtk для KDE и заставляем его пользовать тему QtCurve. Сохраняем настройки, перезапускаем FireFox &#8212; получаем все хорошо! =)</p>

<div class="bookmarkz"><a href="http://www.google.com/bookmarks/mark?op=add&bkmk=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/&title=Linux%3A+Debian+Squeeze+64bit+%2B+Firefox+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/google.png" border="0" width="15" height="15" alt="Google Bookmarks" title="Google Bookmarks"></a> <a href="http://digg.com/submit?url=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/digg.png" border="0" width="15" height="15" alt="Digg" title="Digg"></a> <a href="http://reddit.com/submit?url=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/&title=Linux%3A+Debian+Squeeze+64bit+%2B+Firefox+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/reddit.png" border="0" width="15" height="15" alt="Reddit" title="Reddit"></a> <a href="http://del.icio.us/post?url=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/&title=Linux%3A+Debian+Squeeze+64bit+%2B+Firefox+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/delicious.png" border="0" width="15" height="15" alt="del.icio.us" title="del.icio.us"></a> <a href="http://ma.gnolia.com/beta/bookmarklet/add?url=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/&title=Linux%3A+Debian+Squeeze+64bit+%2B+Firefox+-+%2Fvar%2Flog%2Fdev.log&description=Linux%3A+Debian+Squeeze+64bit+%2B+Firefox+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/magnolia.png" border="0" width="15" height="15" alt="Ma.gnolia" title="Ma.gnolia"></a> <a href="http://www.technorati.com/faves?add=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/technorati.png" border="0" width="15" height="15" alt="Technorati" title="Technorati"></a> <a href="http://www.slashdot.org/bookmark.pl?url=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/&title=Linux%3A+Debian+Squeeze+64bit+%2B+Firefox+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/slashdot.png" border="0" width="15" height="15" alt="Slashdot" title="Slashdot"></a> <a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/&t=Linux%3A+Debian+Squeeze+64bit+%2B+Firefox+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/yahoo.png" border="0" width="15" height="15" alt="Yahoo My Web" title="Yahoo My Web"></a> <a href="http://news2.ru/add_story.php?url=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/news2ru.png" border="0" width="15" height="15" alt="News2.ru" title="News2.ru"></a> <a href="http://www.bobrdobr.ru/addext.html?url=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/&title=Linux%3A+Debian+Squeeze+64bit+%2B+Firefox+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/bobrdobr.png" border="0" width="15" height="15" alt="БобрДобр.ru" title="БобрДобр.ru"></a> <a href="http://rumarkz.ru/bookmarks/?action=add&popup=1&address=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/&title=Linux%3A+Debian+Squeeze+64bit+%2B+Firefox+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rumarkz.png" border="0" width="15" height="15" alt="RUmarkz" title="RUmarkz"></a> <a href="http://www.vaau.ru/submit/?action=step2&url=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/vaau.png" border="0" width="15" height="15" alt="Ваау!" title="Ваау!"></a> <a href="http://memori.ru/link/?sm=1&u_data[url]=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/&u_data[name]=Linux%3A+Debian+Squeeze+64bit+%2B+Firefox+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/memori.png" border="0" width="15" height="15" alt="Memori.ru" title="Memori.ru"></a> <a href="http://www.rucity.com/bookmarks.php?action=add&address=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/&title=Linux%3A+Debian+Squeeze+64bit+%2B+Firefox+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rucity.png" border="0" width="15" height="15" alt="rucity.com" title="rucity.com"></a> <a href="http://moemesto.ru/post.php?url=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/&title=Linux%3A+Debian+Squeeze+64bit+%2B+Firefox+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/moemesto.png" border="0" width="15" height="15" alt="МоёМесто.ru" title="МоёМесто.ru"></a> <a href="http://www.mister-wong.ru/index.php?action=addurl&bm_url=http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/&bm_description=Linux%3A+Debian+Squeeze+64bit+%2B+Firefox+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/mrwong.png" border="0" width="15" height="15" alt="Mister Wong" title="Mister Wong"></a> </div>
]]></content:encoded>
			<wfw:commentRss>http://blog.sdenix.net/2011/09/06/linux-debian-squeeze-64bit-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux: прогресс клонирования жесткого диска (dd)</title>
		<link>http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/</link>
		<comments>http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/#comments</comments>
		<pubDate>Sun, 19 Jun 2011 14:06:06 +0000</pubDate>
		<dc:creator>WatchDog</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[linux/unix]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[hdd clone]]></category>
		<category><![CDATA[hdd cloning progress]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.sdenix.net/?p=229</guid>
		<description><![CDATA[Наверняка, многие из вас знают утилиту dd &#8212; хороший инструмент для копирования данных &#171;as is&#187; (как есть). Но есть огромный минус: dd не умеет показывать статус по ходу выполнения своей работы, и это так раздражает, когда копируешь, допустим, 120Gb :) А победить это довольно просто &#8230; Если мы пошлем сигнал USR1 процессу dd, то эта [...]]]></description>
			<content:encoded><![CDATA[<p>Наверняка, многие из вас знают утилиту <strong>dd</strong> &#8212; хороший инструмент для копирования данных &#171;as is&#187; (как есть). Но есть огромный минус: <strong>dd</strong> не умеет показывать статус по ходу выполнения своей работы, и это так раздражает, когда копируешь, допустим, 120Gb :)<br />
А победить это довольно просто &#8230;<br />
<span id="more-229"></span><br />
Если мы пошлем сигнал <em>USR1</em> процессу <strong>dd</strong>, то эта утилита выведет прогресс в STDERR и без всяких проблем продолжит копирование :)</p>
<p>На практике всё тоже очень просто:<br />
1. находим PID процесса <strong>dd</strong> (допустим, мы получили <em>7865</em>)<br />
<code>pgrep -l ^.*?dd$</code><br />
2. посылаем сигнал USR1<br />
<code>kill -USR1 7865</code></p>
<p><strong>dd</strong> выведет прогресс и продолжит.</p>
<p>Всё просто, но хотелось бы автоматизировать процесс, не так ли? Каждый раз ручками посылать сигнал процессу &#8212; не айс :)</p>
<p><code>watch -n 10 kill -USR1 7865</code></p>
<p>И&#8230; voila! В консоли, где запущен <strong>dd</strong>, каждые 10 секунд мы будем получать отчет о статусе копирования ;)</p>
<p>Берегите нервы! :)</p>

<div class="bookmarkz"><a href="http://www.google.com/bookmarks/mark?op=add&bkmk=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/&title=Linux%3A+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81+%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B8%D1%81%D0%BA%D0%B0+%28dd%29+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/google.png" border="0" width="15" height="15" alt="Google Bookmarks" title="Google Bookmarks"></a> <a href="http://digg.com/submit?url=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/digg.png" border="0" width="15" height="15" alt="Digg" title="Digg"></a> <a href="http://reddit.com/submit?url=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/&title=Linux%3A+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81+%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B8%D1%81%D0%BA%D0%B0+%28dd%29+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/reddit.png" border="0" width="15" height="15" alt="Reddit" title="Reddit"></a> <a href="http://del.icio.us/post?url=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/&title=Linux%3A+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81+%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B8%D1%81%D0%BA%D0%B0+%28dd%29+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/delicious.png" border="0" width="15" height="15" alt="del.icio.us" title="del.icio.us"></a> <a href="http://ma.gnolia.com/beta/bookmarklet/add?url=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/&title=Linux%3A+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81+%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B8%D1%81%D0%BA%D0%B0+%28dd%29+-+%2Fvar%2Flog%2Fdev.log&description=Linux%3A+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81+%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B8%D1%81%D0%BA%D0%B0+%28dd%29+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/magnolia.png" border="0" width="15" height="15" alt="Ma.gnolia" title="Ma.gnolia"></a> <a href="http://www.technorati.com/faves?add=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/technorati.png" border="0" width="15" height="15" alt="Technorati" title="Technorati"></a> <a href="http://www.slashdot.org/bookmark.pl?url=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/&title=Linux%3A+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81+%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B8%D1%81%D0%BA%D0%B0+%28dd%29+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/slashdot.png" border="0" width="15" height="15" alt="Slashdot" title="Slashdot"></a> <a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/&t=Linux%3A+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81+%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B8%D1%81%D0%BA%D0%B0+%28dd%29+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/yahoo.png" border="0" width="15" height="15" alt="Yahoo My Web" title="Yahoo My Web"></a> <a href="http://news2.ru/add_story.php?url=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/news2ru.png" border="0" width="15" height="15" alt="News2.ru" title="News2.ru"></a> <a href="http://www.bobrdobr.ru/addext.html?url=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/&title=Linux%3A+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81+%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B8%D1%81%D0%BA%D0%B0+%28dd%29+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/bobrdobr.png" border="0" width="15" height="15" alt="БобрДобр.ru" title="БобрДобр.ru"></a> <a href="http://rumarkz.ru/bookmarks/?action=add&popup=1&address=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/&title=Linux%3A+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81+%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B8%D1%81%D0%BA%D0%B0+%28dd%29+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rumarkz.png" border="0" width="15" height="15" alt="RUmarkz" title="RUmarkz"></a> <a href="http://www.vaau.ru/submit/?action=step2&url=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/vaau.png" border="0" width="15" height="15" alt="Ваау!" title="Ваау!"></a> <a href="http://memori.ru/link/?sm=1&u_data[url]=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/&u_data[name]=Linux%3A+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81+%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B8%D1%81%D0%BA%D0%B0+%28dd%29+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/memori.png" border="0" width="15" height="15" alt="Memori.ru" title="Memori.ru"></a> <a href="http://www.rucity.com/bookmarks.php?action=add&address=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/&title=Linux%3A+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81+%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B8%D1%81%D0%BA%D0%B0+%28dd%29+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rucity.png" border="0" width="15" height="15" alt="rucity.com" title="rucity.com"></a> <a href="http://moemesto.ru/post.php?url=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/&title=Linux%3A+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81+%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B8%D1%81%D0%BA%D0%B0+%28dd%29+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/moemesto.png" border="0" width="15" height="15" alt="МоёМесто.ru" title="МоёМесто.ru"></a> <a href="http://www.mister-wong.ru/index.php?action=addurl&bm_url=http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/&bm_description=Linux%3A+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81+%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE+%D0%B4%D0%B8%D1%81%D0%BA%D0%B0+%28dd%29+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/mrwong.png" border="0" width="15" height="15" alt="Mister Wong" title="Mister Wong"></a> </div>
]]></content:encoded>
			<wfw:commentRss>http://blog.sdenix.net/2011/06/19/linux-progress-klonirovaniya-zhestkogo-diska-dd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Наблюдение за нагрузкой сервера + нотификация по email</title>
		<link>http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/</link>
		<comments>http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 14:34:33 +0000</pubDate>
		<dc:creator>WatchDog</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[linux/unix]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[email notification]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[server load]]></category>
		<category><![CDATA[shell scripting]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[watchdog]]></category>

		<guid isPermaLink="false">http://blog.sdenix.net/?p=223</guid>
		<description><![CDATA[У одного из клиентов постоянно какой-то процесс выедал RAM/CPU и, соответственно, убивал сервер до абсолютной недоступности. Искал решение (shell-скриптингом занимался давно и не особо долго), нашел полезный скрипт для наблюдения за нагрузкой на сервере&#8230; Этот скрипт запускается так, как вам будет угодно (crontab) и, проверяя загрузку за последние 15 минут, высылает email, с загрузкой и [...]]]></description>
			<content:encoded><![CDATA[<p>У одного из клиентов постоянно какой-то процесс выедал RAM/CPU и, соответственно, убивал сервер до абсолютной недоступности. Искал решение (shell-скриптингом занимался давно и не особо долго), нашел полезный скрипт для наблюдения за нагрузкой на сервере&#8230;</p>
<p><span id="more-223"></span></p>
<p>Этот скрипт запускается так, как вам будет угодно (crontab) и, проверяя загрузку за последние 15 минут, высылает email, с загрузкой и снапшотом команды top, на указанные адреса.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Скрипт для оповещения администратора о том, что загрузка Linux/FreeBSD превысила лимит</span>
<span style="color: #666666; font-style: italic;"># При условии превышения лимита загрузки администратору будет выслан email.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Все права защищены 2005 (c) nixCraft project</span>
<span style="color: #666666; font-style: italic;"># Свободный скрипт под лицензией GNU GPL v2.0 или ниже.</span>
<span style="color: #666666; font-style: italic;"># Проверено на системах:</span>
<span style="color: #666666; font-style: italic;"># * RedHat Linux</span>
<span style="color: #666666; font-style: italic;"># * Debain Linux</span>
<span style="color: #666666; font-style: italic;"># * FreeBSD</span>
<span style="color: #666666; font-style: italic;"># -------------------------------------------------------------------------</span>
<span style="color: #666666; font-style: italic;"># Устанавливаем верхнюю границу, по достижении которой будет выслан email (при лимите 0.0 письмо будет высылаться при каждом запуске скрипта)</span>
<span style="color: #007800;">NOTIFY</span>=<span style="color: #ff0000;">&quot;0.0&quot;</span>
<span style="color: #666666; font-style: italic;"># Указываем email</span>
<span style="color: #007800;">EMAIL</span>=<span style="color: #ff0000;">&quot;admin@fakedomain.com&quot;</span>
<span style="color: #666666; font-style: italic;"># Тема письма</span>
<span style="color: #007800;">SUBJECT</span>=<span style="color: #ff0000;">&quot;Внимание! На сервере <span style="color: #007800;">$(hostname)</span> слишком высокая загрузка&quot;</span>
<span style="color: #666666; font-style: italic;"># -----------------------------------------------------------------</span>
<span style="color: #666666; font-style: italic;"># OS-специфичные &quot;костыли&quot;, менять здесь ничего не нужно ;)</span>
<span style="color: #007800;">OS</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$(uname)</span>&quot;</span>
<span style="color: #007800;">TRUE</span>=<span style="color: #ff0000;">&quot;1&quot;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$OS</span>&quot;</span> == <span style="color: #ff0000;">&quot;FreeBSD&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #007800;">TEMPFILE</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$(mktemp /tmp/$(basename $0)</span>.tmp.XXX)&quot;</span>
        <span style="color: #007800;">FTEXT</span>=<span style="color: #ff0000;">'load averages:'</span>
<span style="color: #000000; font-weight: bold;">elif</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$OS</span>&quot;</span> == <span style="color: #ff0000;">&quot;Linux&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #007800;">TEMPFILE</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$(mktemp)</span>&quot;</span>
        <span style="color: #007800;">FTEXT</span>=<span style="color: #ff0000;">'load average:'</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #666666; font-style: italic;"># загрузка за последние 5 минут</span>
<span style="color: #007800;">F5M</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$(uptime | awk -F &quot;$FTEXT&quot; '{ print $2 }' | cut -d, -f1)</span>&quot;</span>
<span style="color: #666666; font-style: italic;"># 10 минут</span>
<span style="color: #007800;">F10M</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$(uptime | awk -F &quot;$FTEXT&quot; '{ print $2 }' | cut -d, -f2)</span>&quot;</span>
<span style="color: #666666; font-style: italic;"># 15 минут</span>
<span style="color: #007800;">F15M</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$(uptime | awk -F &quot;$FTEXT&quot; '{ print $2 }' | cut -d, -f3)</span>&quot;</span>
<span style="color: #666666; font-style: italic;"># составляем письмецо</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Загрузка сервера превысила <span style="color: #007800;">$NOTIFY</span>.&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$TEMPFILE</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Хост: <span style="color: #007800;">$(hostname)</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$TEMPFILE</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Дата и Время на сервере : <span style="color: #007800;">$(date)</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$TEMPFILE</span>
<span style="color: #666666; font-style: italic;"># Проверяем превышение</span>
<span style="color: #666666; font-style: italic;"># сравниваем лимит с загрузкой за последние 15 минут</span>
<span style="color: #007800;">RESULT</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$F15M</span> &gt; <span style="color: #007800;">$NOTIFY</span>&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">bc</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #666666; font-style: italic;"># если превышает, то высылаем письмо</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$RESULT</span>&quot;</span> == <span style="color: #ff0000;">&quot;<span style="color: #007800;">$TRUE</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;-------------------------------------------&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$TEMPFILE</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Вывод top:&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$TEMPFILE</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;-------------------------------------------&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$TEMPFILE</span>
    top <span style="color: #660033;">-b</span> <span style="color: #660033;">-n1</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$TEMPFILE</span>
        mail <span style="color: #660033;">-s</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$SUBJECT</span>&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$EMAIL</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #007800;">$TEMPFILE</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #666666; font-style: italic;"># не забываем убирать за собой мусор</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$TEMPFILE</span></pre></td></tr></table></div>


<div class="bookmarkz"><a href="http://www.google.com/bookmarks/mark?op=add&bkmk=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/&title=%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B7%D0%B0+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0+%2B+%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BF%D0%BE+email+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/google.png" border="0" width="15" height="15" alt="Google Bookmarks" title="Google Bookmarks"></a> <a href="http://digg.com/submit?url=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/digg.png" border="0" width="15" height="15" alt="Digg" title="Digg"></a> <a href="http://reddit.com/submit?url=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/&title=%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B7%D0%B0+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0+%2B+%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BF%D0%BE+email+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/reddit.png" border="0" width="15" height="15" alt="Reddit" title="Reddit"></a> <a href="http://del.icio.us/post?url=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/&title=%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B7%D0%B0+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0+%2B+%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BF%D0%BE+email+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/delicious.png" border="0" width="15" height="15" alt="del.icio.us" title="del.icio.us"></a> <a href="http://ma.gnolia.com/beta/bookmarklet/add?url=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/&title=%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B7%D0%B0+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0+%2B+%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BF%D0%BE+email+-+%2Fvar%2Flog%2Fdev.log&description=%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B7%D0%B0+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0+%2B+%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BF%D0%BE+email+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/magnolia.png" border="0" width="15" height="15" alt="Ma.gnolia" title="Ma.gnolia"></a> <a href="http://www.technorati.com/faves?add=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/technorati.png" border="0" width="15" height="15" alt="Technorati" title="Technorati"></a> <a href="http://www.slashdot.org/bookmark.pl?url=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/&title=%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B7%D0%B0+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0+%2B+%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BF%D0%BE+email+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/slashdot.png" border="0" width="15" height="15" alt="Slashdot" title="Slashdot"></a> <a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/&t=%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B7%D0%B0+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0+%2B+%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BF%D0%BE+email+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/yahoo.png" border="0" width="15" height="15" alt="Yahoo My Web" title="Yahoo My Web"></a> <a href="http://news2.ru/add_story.php?url=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/news2ru.png" border="0" width="15" height="15" alt="News2.ru" title="News2.ru"></a> <a href="http://www.bobrdobr.ru/addext.html?url=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/&title=%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B7%D0%B0+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0+%2B+%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BF%D0%BE+email+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/bobrdobr.png" border="0" width="15" height="15" alt="БобрДобр.ru" title="БобрДобр.ru"></a> <a href="http://rumarkz.ru/bookmarks/?action=add&popup=1&address=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/&title=%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B7%D0%B0+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0+%2B+%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BF%D0%BE+email+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rumarkz.png" border="0" width="15" height="15" alt="RUmarkz" title="RUmarkz"></a> <a href="http://www.vaau.ru/submit/?action=step2&url=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/vaau.png" border="0" width="15" height="15" alt="Ваау!" title="Ваау!"></a> <a href="http://memori.ru/link/?sm=1&u_data[url]=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/&u_data[name]=%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B7%D0%B0+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0+%2B+%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BF%D0%BE+email+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/memori.png" border="0" width="15" height="15" alt="Memori.ru" title="Memori.ru"></a> <a href="http://www.rucity.com/bookmarks.php?action=add&address=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/&title=%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B7%D0%B0+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0+%2B+%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BF%D0%BE+email+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rucity.png" border="0" width="15" height="15" alt="rucity.com" title="rucity.com"></a> <a href="http://moemesto.ru/post.php?url=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/&title=%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B7%D0%B0+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0+%2B+%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BF%D0%BE+email+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/moemesto.png" border="0" width="15" height="15" alt="МоёМесто.ru" title="МоёМесто.ru"></a> <a href="http://www.mister-wong.ru/index.php?action=addurl&bm_url=http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/&bm_description=%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B7%D0%B0+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0+%2B+%D0%BD%D0%BE%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+%D0%BF%D0%BE+email+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/mrwong.png" border="0" width="15" height="15" alt="Mister Wong" title="Mister Wong"></a> </div>
]]></content:encoded>
			<wfw:commentRss>http://blog.sdenix.net/2011/04/18/nablyudenie-za-nagruzkojj-servera-notifikaciya-po-email/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Крепим футер внизу страницы</title>
		<link>http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/</link>
		<comments>http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 07:41:32 +0000</pubDate>
		<dc:creator>WatchDog</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://blog.sdenix.net/?p=201</guid>
		<description><![CDATA[Этот пост больше в качестве напоминалки самому себе. Периодически встает вопрос &#171;как закрепить подвал внизу страницы, чтобы даже при наличии малого кол-ва контента он все равно оставался там?&#187;. Все просто: &#60;html&#62; &#60;head&#62; &#60;style type="text/css"&#62; #footerwrap { position: absolute; width: 100%; bottom: 0px; } #footer { position: relative; margin: 0 auto; height: 46px; border: 1px dashed [...]]]></description>
			<content:encoded><![CDATA[<p><em>Этот пост больше в качестве напоминалки самому себе.</em><br />
Периодически встает вопрос &#171;как закрепить подвал внизу страницы, чтобы даже при наличии малого кол-ва контента он все равно оставался там?&#187;.</p>
<p>Все просто:</p>
<pre lang="html" escape="true" line=1>
&lt;html&gt;
  &lt;head&gt;
    &lt;style type="text/css"&gt;
      #footerwrap { position: absolute; width: 100%; bottom: 0px; }
      #footer { position: relative; margin: 0 auto; height: 46px; border: 1px dashed black; width: 760px; }
    &lt;/style&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;div id="footerwrap"&gt;
      &lt;div id="footer"&gt;Эта штука имеет ширину 760px и выровнена по центру, что можно увидеть с помощью обрамления&lt;/div&gt;
    &lt;/div&gt;
  &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Радуемся жизни :)</p>

<div class="bookmarkz"><a href="http://www.google.com/bookmarks/mark?op=add&bkmk=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/&title=%D0%9A%D1%80%D0%B5%D0%BF%D0%B8%D0%BC+%D1%84%D1%83%D1%82%D0%B5%D1%80+%D0%B2%D0%BD%D0%B8%D0%B7%D1%83+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/google.png" border="0" width="15" height="15" alt="Google Bookmarks" title="Google Bookmarks"></a> <a href="http://digg.com/submit?url=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/digg.png" border="0" width="15" height="15" alt="Digg" title="Digg"></a> <a href="http://reddit.com/submit?url=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/&title=%D0%9A%D1%80%D0%B5%D0%BF%D0%B8%D0%BC+%D1%84%D1%83%D1%82%D0%B5%D1%80+%D0%B2%D0%BD%D0%B8%D0%B7%D1%83+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/reddit.png" border="0" width="15" height="15" alt="Reddit" title="Reddit"></a> <a href="http://del.icio.us/post?url=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/&title=%D0%9A%D1%80%D0%B5%D0%BF%D0%B8%D0%BC+%D1%84%D1%83%D1%82%D0%B5%D1%80+%D0%B2%D0%BD%D0%B8%D0%B7%D1%83+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/delicious.png" border="0" width="15" height="15" alt="del.icio.us" title="del.icio.us"></a> <a href="http://ma.gnolia.com/beta/bookmarklet/add?url=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/&title=%D0%9A%D1%80%D0%B5%D0%BF%D0%B8%D0%BC+%D1%84%D1%83%D1%82%D0%B5%D1%80+%D0%B2%D0%BD%D0%B8%D0%B7%D1%83+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B+-+%2Fvar%2Flog%2Fdev.log&description=%D0%9A%D1%80%D0%B5%D0%BF%D0%B8%D0%BC+%D1%84%D1%83%D1%82%D0%B5%D1%80+%D0%B2%D0%BD%D0%B8%D0%B7%D1%83+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/magnolia.png" border="0" width="15" height="15" alt="Ma.gnolia" title="Ma.gnolia"></a> <a href="http://www.technorati.com/faves?add=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/technorati.png" border="0" width="15" height="15" alt="Technorati" title="Technorati"></a> <a href="http://www.slashdot.org/bookmark.pl?url=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/&title=%D0%9A%D1%80%D0%B5%D0%BF%D0%B8%D0%BC+%D1%84%D1%83%D1%82%D0%B5%D1%80+%D0%B2%D0%BD%D0%B8%D0%B7%D1%83+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/slashdot.png" border="0" width="15" height="15" alt="Slashdot" title="Slashdot"></a> <a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/&t=%D0%9A%D1%80%D0%B5%D0%BF%D0%B8%D0%BC+%D1%84%D1%83%D1%82%D0%B5%D1%80+%D0%B2%D0%BD%D0%B8%D0%B7%D1%83+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/yahoo.png" border="0" width="15" height="15" alt="Yahoo My Web" title="Yahoo My Web"></a> <a href="http://news2.ru/add_story.php?url=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/news2ru.png" border="0" width="15" height="15" alt="News2.ru" title="News2.ru"></a> <a href="http://www.bobrdobr.ru/addext.html?url=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/&title=%D0%9A%D1%80%D0%B5%D0%BF%D0%B8%D0%BC+%D1%84%D1%83%D1%82%D0%B5%D1%80+%D0%B2%D0%BD%D0%B8%D0%B7%D1%83+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/bobrdobr.png" border="0" width="15" height="15" alt="БобрДобр.ru" title="БобрДобр.ru"></a> <a href="http://rumarkz.ru/bookmarks/?action=add&popup=1&address=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/&title=%D0%9A%D1%80%D0%B5%D0%BF%D0%B8%D0%BC+%D1%84%D1%83%D1%82%D0%B5%D1%80+%D0%B2%D0%BD%D0%B8%D0%B7%D1%83+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rumarkz.png" border="0" width="15" height="15" alt="RUmarkz" title="RUmarkz"></a> <a href="http://www.vaau.ru/submit/?action=step2&url=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/vaau.png" border="0" width="15" height="15" alt="Ваау!" title="Ваау!"></a> <a href="http://memori.ru/link/?sm=1&u_data[url]=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/&u_data[name]=%D0%9A%D1%80%D0%B5%D0%BF%D0%B8%D0%BC+%D1%84%D1%83%D1%82%D0%B5%D1%80+%D0%B2%D0%BD%D0%B8%D0%B7%D1%83+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/memori.png" border="0" width="15" height="15" alt="Memori.ru" title="Memori.ru"></a> <a href="http://www.rucity.com/bookmarks.php?action=add&address=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/&title=%D0%9A%D1%80%D0%B5%D0%BF%D0%B8%D0%BC+%D1%84%D1%83%D1%82%D0%B5%D1%80+%D0%B2%D0%BD%D0%B8%D0%B7%D1%83+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rucity.png" border="0" width="15" height="15" alt="rucity.com" title="rucity.com"></a> <a href="http://moemesto.ru/post.php?url=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/&title=%D0%9A%D1%80%D0%B5%D0%BF%D0%B8%D0%BC+%D1%84%D1%83%D1%82%D0%B5%D1%80+%D0%B2%D0%BD%D0%B8%D0%B7%D1%83+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/moemesto.png" border="0" width="15" height="15" alt="МоёМесто.ru" title="МоёМесто.ru"></a> <a href="http://www.mister-wong.ru/index.php?action=addurl&bm_url=http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/&bm_description=%D0%9A%D1%80%D0%B5%D0%BF%D0%B8%D0%BC+%D1%84%D1%83%D1%82%D0%B5%D1%80+%D0%B2%D0%BD%D0%B8%D0%B7%D1%83+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/mrwong.png" border="0" width="15" height="15" alt="Mister Wong" title="Mister Wong"></a> </div>
]]></content:encoded>
			<wfw:commentRss>http://blog.sdenix.net/2011/03/30/krepim-futer-vnizu-stranicy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Проблема с Catalyst::Model::DBI 0.28 [rus]</title>
		<link>http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/</link>
		<comments>http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 07:14:46 +0000</pubDate>
		<dc:creator>WatchDog</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://blog.sdenix.net/?p=188</guid>
		<description><![CDATA[После обновления Perl до 5.12 и, соответственно, обновления Catalyst со всеми вытекающими, я начал еще одно приложение. Но столкнулся с проблемой: коннект к базе есть, а запрос не выполняется с ошибкой can&#8217;t call method &#171;do&#187; on undefined value O_o Вроде бы всё ясно, нет указателя на коннект в базой&#8230; Но какого же, простите, чёрта его [...]]]></description>
			<content:encoded><![CDATA[<p>После обновления Perl до 5.12 и, соответственно, обновления Catalyst со всеми вытекающими, я начал еще одно приложение.<br />
Но столкнулся с проблемой: коннект к базе есть, а запрос не выполняется с ошибкой <strong>can&#8217;t call method &#171;do&#187; on undefined value</strong> O_o</p>
<p><span id="more-188"></span><br />
Вроде бы всё ясно, нет указателя на коннект в базой&#8230; Но какого же, простите, чёрта его нет? Почему он undef? При условии, что Catalyst в логах усердно твердит <strong><em>&#171;Connected to the database via dsn: XXX&#187;</em></strong>&#8230;</p>
<p>После потугов найти баг в своём коде, я полез в сорцы Catalyst::Model::DBI и увидел (о чудо!):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">sub</span> <span style="color: #000066;">connect</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$self</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dbh</span><span style="color: #339933;">;</span>
<span style="color: #000066;">eval</span> <span style="color: #009900;">&#123;</span>
<span style="color: #0000ff;">$dbh</span> <span style="color: #339933;">=</span> DBI<span style="color: #339933;">-&gt;</span><span style="color: #006600;">connect</span><span style="color: #009900;">&#40;</span>
<span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>dsn<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>username<span style="color: #009900;">&#125;</span> <span style="color: #339933;">||</span> <span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>user<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>password<span style="color: #009900;">&#125;</span> <span style="color: #339933;">||</span> <span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>pass<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>options<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$@</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #000066;">log</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">debug</span><span style="color: #009900;">&#40;</span> <span style="color: #000066;">qq</span><span style="color: #009900;">&#123;</span>Couldn<span style="color: #ff0000;">'t connect to the database &quot;$@&quot;} ) if $self-&gt;{debug} }
else { $self-&gt;{log}-&gt;debug ( '</span>Connected to the database via dsn<span style="color: #339933;">:</span><span style="color: #ff0000;">' . $self-&gt;{dsn} ) if $self-&gt;{debug}; }
$self-&gt;_pid( $$ );
$self-&gt;_tid( threads-&gt;tid ) if $INC{'</span>threads<span style="color: #339933;">.</span>pm<span style="color: #ff0000;">'};
return $dbh;
}</span></pre></td></tr></table></div>

<p>Ничего странного? А не угадаете, случаем, почему Catalyst в логах сообщал <strong><em>&#171;Connected to the database via dsn: XXX&#187;</em></strong>, а потом напрочь отказывался исполнять запросы?<br />
В общем, в ходе раскопок было выявлено, что у меня <em>mysql.sock</em> лежал не в <em>/var/run/mysql</em>, а в <em>/var/lib/mysql</em>, и, собственно, это было исправлено. Но ЯВНОЙ ошибки MySQL я не получил. Потому что DBI-&gt;connect не падает в die сам по себе, а просто возвращает <strong>undef</strong>.</p>
<p>Дык, в общем, в чем соль? А в том, что в этот кусочек кода (при условии проверки eval на $@) нужно добавить <strong>|| die DBI-&gt;errstr</strong> в строку вызова <strong>DBI-&gt;connect</strong>.</p>
<p>Выглядеть это будет следующим образом:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">sub</span> <span style="color: #000066;">connect</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$self</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dbh</span><span style="color: #339933;">;</span>
<span style="color: #000066;">eval</span> <span style="color: #009900;">&#123;</span>
<span style="color: #0000ff;">$dbh</span> <span style="color: #339933;">=</span> DBI<span style="color: #339933;">-&gt;</span><span style="color: #006600;">connect</span><span style="color: #009900;">&#40;</span>
<span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>dsn<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>username<span style="color: #009900;">&#125;</span> <span style="color: #339933;">||</span> <span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>user<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>password<span style="color: #009900;">&#125;</span> <span style="color: #339933;">||</span> <span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>pass<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>options<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #000066;">die</span> DBI<span style="color: #339933;">-&gt;</span><span style="color: #006600;">errstr</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">### вот строчка, спасающая в таких ситуациях</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$@</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">$self</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #000066;">log</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">debug</span><span style="color: #009900;">&#40;</span> <span style="color: #000066;">qq</span><span style="color: #009900;">&#123;</span>Couldn<span style="color: #ff0000;">'t connect to the database &quot;$@&quot;} ) if $self-&gt;{debug} }
else { $self-&gt;{log}-&gt;debug ( '</span>Connected to the database via dsn<span style="color: #339933;">:</span><span style="color: #ff0000;">' . $self-&gt;{dsn} ) if $self-&gt;{debug}; }
$self-&gt;_pid( $$ );
$self-&gt;_tid( threads-&gt;tid ) if $INC{'</span>threads<span style="color: #339933;">.</span>pm<span style="color: #ff0000;">'};
return $dbh;
}</span></pre></td></tr></table></div>

<p>А вот в ЭТОМ случае, мы увидим ошибку <strong><em>&#171;Can&#8217;t connect to MySQL via socket /var/run/mysql/mysql.sock&#187;</em></strong> и её решение займёт чуть меньше 2-3 минут, против получаса.</p>
<p>P.S.: баг я засабмитил, сейчас версия модели 0.28, и скорее всего это всё же будет исправлено в версии 0.29.<br />
P.P.S.: ничего критичного, и лично к автору я никаких претензий не имею =) но это в очередной раз доказывает, что надо быть внимательнее :)</p>

<div class="bookmarkz"><a href="http://www.google.com/bookmarks/mark?op=add&bkmk=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/&title=%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0+%D1%81+Catalyst%3A%3AModel%3A%3ADBI+0.28+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/google.png" border="0" width="15" height="15" alt="Google Bookmarks" title="Google Bookmarks"></a> <a href="http://digg.com/submit?url=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/digg.png" border="0" width="15" height="15" alt="Digg" title="Digg"></a> <a href="http://reddit.com/submit?url=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/&title=%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0+%D1%81+Catalyst%3A%3AModel%3A%3ADBI+0.28+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/reddit.png" border="0" width="15" height="15" alt="Reddit" title="Reddit"></a> <a href="http://del.icio.us/post?url=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/&title=%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0+%D1%81+Catalyst%3A%3AModel%3A%3ADBI+0.28+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/delicious.png" border="0" width="15" height="15" alt="del.icio.us" title="del.icio.us"></a> <a href="http://ma.gnolia.com/beta/bookmarklet/add?url=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/&title=%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0+%D1%81+Catalyst%3A%3AModel%3A%3ADBI+0.28+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log&description=%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0+%D1%81+Catalyst%3A%3AModel%3A%3ADBI+0.28+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/magnolia.png" border="0" width="15" height="15" alt="Ma.gnolia" title="Ma.gnolia"></a> <a href="http://www.technorati.com/faves?add=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/technorati.png" border="0" width="15" height="15" alt="Technorati" title="Technorati"></a> <a href="http://www.slashdot.org/bookmark.pl?url=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/&title=%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0+%D1%81+Catalyst%3A%3AModel%3A%3ADBI+0.28+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/slashdot.png" border="0" width="15" height="15" alt="Slashdot" title="Slashdot"></a> <a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/&t=%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0+%D1%81+Catalyst%3A%3AModel%3A%3ADBI+0.28+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/yahoo.png" border="0" width="15" height="15" alt="Yahoo My Web" title="Yahoo My Web"></a> <a href="http://news2.ru/add_story.php?url=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/news2ru.png" border="0" width="15" height="15" alt="News2.ru" title="News2.ru"></a> <a href="http://www.bobrdobr.ru/addext.html?url=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/&title=%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0+%D1%81+Catalyst%3A%3AModel%3A%3ADBI+0.28+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/bobrdobr.png" border="0" width="15" height="15" alt="БобрДобр.ru" title="БобрДобр.ru"></a> <a href="http://rumarkz.ru/bookmarks/?action=add&popup=1&address=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/&title=%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0+%D1%81+Catalyst%3A%3AModel%3A%3ADBI+0.28+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rumarkz.png" border="0" width="15" height="15" alt="RUmarkz" title="RUmarkz"></a> <a href="http://www.vaau.ru/submit/?action=step2&url=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/vaau.png" border="0" width="15" height="15" alt="Ваау!" title="Ваау!"></a> <a href="http://memori.ru/link/?sm=1&u_data[url]=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/&u_data[name]=%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0+%D1%81+Catalyst%3A%3AModel%3A%3ADBI+0.28+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/memori.png" border="0" width="15" height="15" alt="Memori.ru" title="Memori.ru"></a> <a href="http://www.rucity.com/bookmarks.php?action=add&address=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/&title=%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0+%D1%81+Catalyst%3A%3AModel%3A%3ADBI+0.28+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rucity.png" border="0" width="15" height="15" alt="rucity.com" title="rucity.com"></a> <a href="http://moemesto.ru/post.php?url=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/&title=%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0+%D1%81+Catalyst%3A%3AModel%3A%3ADBI+0.28+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/moemesto.png" border="0" width="15" height="15" alt="МоёМесто.ru" title="МоёМесто.ru"></a> <a href="http://www.mister-wong.ru/index.php?action=addurl&bm_url=http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/&bm_description=%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0+%D1%81+Catalyst%3A%3AModel%3A%3ADBI+0.28+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/mrwong.png" border="0" width="15" height="15" alt="Mister Wong" title="Mister Wong"></a> </div>
]]></content:encoded>
			<wfw:commentRss>http://blog.sdenix.net/2010/11/23/problema-s-catalyst-model-dbi-028-rus/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Perl: Автоматическая печать PDF-документа при открытии [rus]</title>
		<link>http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/</link>
		<comments>http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 13:57:53 +0000</pubDate>
		<dc:creator>WatchDog</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[Hint]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[usable hints]]></category>

		<guid isPermaLink="false">http://blog.sdenix.net/?p=170</guid>
		<description><![CDATA[Поднялся вопрос: &#34;Как добавить авто-старт печати при открытии файла PDF? Сделать всё в Perl&#34; Это &#34;телодвижение&#34; было нужно для минимизации кол-ва действий,&#160;которые должен выполнить пользователь,&#160;чтобы увидеть отчёт из системы на бумаге :) Не буду вдаваться в подробности о том, почему именно такой способ был нужен, и что это за система, но, был вопрос &#8212; вот [...]]]></description>
			<content:encoded><![CDATA[<p>Поднялся вопрос: &quot;Как добавить авто-старт печати при открытии файла PDF? Сделать всё в Perl&quot;</p>
<p>Это &quot;телодвижение&quot; было нужно для минимизации кол-ва действий,&nbsp;которые должен выполнить пользователь,&nbsp;чтобы увидеть отчёт из системы на бумаге :)</p>
<p><span id="more-170"></span><em>Не буду вдаваться в подробности о том, почему именно такой способ был нужен, и что это за система, но, был вопрос &#8212; вот ответ :) Нашёл его, для себя, юзабельным. И очень надеюсь на то, что кому-нибудь он тоже пригодится :)</em></p>
<p><strong>К делу:</strong> как и всегда, немного по<a target="_blank" href="http://google.com">гуглив</a>, я отыскал вполне себе такой хороший модуль на search.cpan.org :) Называется он &#8212; <a target="_blank" href="http://search.cpan.org/~larslund/PDF-Reuse-0.35/Reuse.pm">PDF::Reuse</a>. Модуль позволяет совершать не малое кол-во манипуляций с готовыми PDF-файлами (<a target="_blank" href="http://search.cpan.org/~larslund/PDF-Reuse-Tutorial-0.11/Tutorial.pm#DESCRIPTION">подробнее&#8230;</a>)</p>
<p>Модуль очень даже подошёл для моих нужд, т.к. PDF может содержать JavaScript код (что не может не радовать, но оговорка чуть ниже), и диалог печати довольно просто с помощью этого JS вызывается. По сему его и решил использовать, а PDF::Reuse, по счастливой случайности, позволяет добавлять в PDF тот самый JavaScript код :)</p>
<p><em><strong>Добавлено 9 февраля 2010:</strong> сразу оговорюсь, вариант будет выглядеть следующим образом &#8212; открывается PDF, если viewer поддерживает JS в PDF, то будет вызван диалог печати (<u>примерно</u> так же поступает <a href="http://docs.google.com">Google Docs</a> при попытке напечатать документ из меню File</em><em>) :) Оговорка прийдётся очень кстати, потому как, допустим, <a href="http://www.foolabs.com/xpdf/">xpdf</a> не оправдает ваших ожиданий :)</em></p>
<p>Получить нужный результат можно следующим способом</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> PDF<span style="color: #339933;">::</span><span style="color: #006600;">Reuse</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> CGI <span style="color: #009966; font-style: italic;">qw/param/</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$path</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'/tmp/test/'</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;"># путь до исходного PDF-файла</span>
&nbsp;
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Content-type: text/html;charset=utf-8<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$path</span><span style="color: #339933;">.</span><span style="color: #ff0000;">'test1.pdf'</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span>e <span style="color: #0000ff;">$path</span><span style="color: #339933;">.</span><span style="color: #ff0000;">'test1.pdf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;"># удаляем старый результат</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>param<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'test'</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">'1'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    prFile<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$path</span><span style="color: #339933;">.</span><span style="color: #ff0000;">'test1.pdf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;"># открываем файл</span>
    prText<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">300</span><span style="color: #339933;">,</span><span style="color: #ff0000;">'Hello,'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;"># добавляем произвольный текст</span>
    prText<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">30</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">340</span><span style="color: #339933;">,</span><span style="color: #ff0000;">'WORLD!!!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;"># в файл</span>
    prJs<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'function prn() { this.print(); } prn();'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;"># добавляем JS-код, который будет вызывать диалог печати</span>
    prEnd<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;"># открываем PDF</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;&lt;script&gt;window.open('http://www.sdenix.net/test/test1.pdf')&lt;/script&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;PDF test&lt;/title&gt;&lt;/head&gt;&lt;body&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;&lt;form action='/test_pdf'&gt;&lt;input type='hidden' name='test' value='1'  /&gt;&lt;input type='submit' value='Смотрим пример с авто-печатью'  /&gt;&lt;/form&gt;&lt;br  /&gt;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;&lt;/body&gt;&lt;/html&gt;&quot;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Вот, собственно, и всё! Посмотреть живой пример можно <a title="Авто-печать в PDF [perl]" href="http://sdenix.net/test_pdf">тут</a>. Теперь включаем фантазию и используем этот модуль в своих целях :)</p>

<div class="bookmarkz"><a href="http://www.google.com/bookmarks/mark?op=add&bkmk=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/&title=Perl%3A+%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+PDF-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0+%D0%BF%D1%80%D0%B8+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/google.png" border="0" width="15" height="15" alt="Google Bookmarks" title="Google Bookmarks"></a> <a href="http://digg.com/submit?url=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/digg.png" border="0" width="15" height="15" alt="Digg" title="Digg"></a> <a href="http://reddit.com/submit?url=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/&title=Perl%3A+%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+PDF-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0+%D0%BF%D1%80%D0%B8+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/reddit.png" border="0" width="15" height="15" alt="Reddit" title="Reddit"></a> <a href="http://del.icio.us/post?url=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/&title=Perl%3A+%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+PDF-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0+%D0%BF%D1%80%D0%B8+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/delicious.png" border="0" width="15" height="15" alt="del.icio.us" title="del.icio.us"></a> <a href="http://ma.gnolia.com/beta/bookmarklet/add?url=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/&title=Perl%3A+%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+PDF-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0+%D0%BF%D1%80%D0%B8+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log&description=Perl%3A+%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+PDF-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0+%D0%BF%D1%80%D0%B8+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/magnolia.png" border="0" width="15" height="15" alt="Ma.gnolia" title="Ma.gnolia"></a> <a href="http://www.technorati.com/faves?add=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/technorati.png" border="0" width="15" height="15" alt="Technorati" title="Technorati"></a> <a href="http://www.slashdot.org/bookmark.pl?url=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/&title=Perl%3A+%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+PDF-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0+%D0%BF%D1%80%D0%B8+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/slashdot.png" border="0" width="15" height="15" alt="Slashdot" title="Slashdot"></a> <a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/&t=Perl%3A+%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+PDF-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0+%D0%BF%D1%80%D0%B8+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/yahoo.png" border="0" width="15" height="15" alt="Yahoo My Web" title="Yahoo My Web"></a> <a href="http://news2.ru/add_story.php?url=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/news2ru.png" border="0" width="15" height="15" alt="News2.ru" title="News2.ru"></a> <a href="http://www.bobrdobr.ru/addext.html?url=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/&title=Perl%3A+%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+PDF-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0+%D0%BF%D1%80%D0%B8+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/bobrdobr.png" border="0" width="15" height="15" alt="БобрДобр.ru" title="БобрДобр.ru"></a> <a href="http://rumarkz.ru/bookmarks/?action=add&popup=1&address=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/&title=Perl%3A+%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+PDF-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0+%D0%BF%D1%80%D0%B8+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rumarkz.png" border="0" width="15" height="15" alt="RUmarkz" title="RUmarkz"></a> <a href="http://www.vaau.ru/submit/?action=step2&url=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/vaau.png" border="0" width="15" height="15" alt="Ваау!" title="Ваау!"></a> <a href="http://memori.ru/link/?sm=1&u_data[url]=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/&u_data[name]=Perl%3A+%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+PDF-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0+%D0%BF%D1%80%D0%B8+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/memori.png" border="0" width="15" height="15" alt="Memori.ru" title="Memori.ru"></a> <a href="http://www.rucity.com/bookmarks.php?action=add&address=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/&title=Perl%3A+%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+PDF-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0+%D0%BF%D1%80%D0%B8+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rucity.png" border="0" width="15" height="15" alt="rucity.com" title="rucity.com"></a> <a href="http://moemesto.ru/post.php?url=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/&title=Perl%3A+%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+PDF-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0+%D0%BF%D1%80%D0%B8+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/moemesto.png" border="0" width="15" height="15" alt="МоёМесто.ru" title="МоёМесто.ru"></a> <a href="http://www.mister-wong.ru/index.php?action=addurl&bm_url=http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/&bm_description=Perl%3A+%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C+PDF-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0+%D0%BF%D1%80%D0%B8+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%B8%D0%B8+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/mrwong.png" border="0" width="15" height="15" alt="Mister Wong" title="Mister Wong"></a> </div>
]]></content:encoded>
			<wfw:commentRss>http://blog.sdenix.net/2010/02/08/perl-avtomaticheskaya-pechat-pdf-documenta-pri-otkrytii-rus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE6 CSS :hover fix [rus]</title>
		<link>http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/</link>
		<comments>http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 09:25:42 +0000</pubDate>
		<dc:creator>WatchDog</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Fixed]]></category>
		<category><![CDATA[Hint]]></category>
		<category><![CDATA[hotfix]]></category>
		<category><![CDATA[ie6]]></category>

		<guid isPermaLink="false">http://blog.sdenix.net/?p=157</guid>
		<description><![CDATA[Я думаю, Вам известно, что браузер IE6 самый &#34;дырявый&#34; и самый ничегонеподдерживающий =) Но как бы там ни было, его не перестаёт пользовать довольно таки большое количество веб-сёрферов&#8230; (статистика от студии Лебедева и tx3) &#160; Я столкнулся со следующей проблемой: IE6 поддерживает селектор :hover далеко не для всех элементов HTML (пожалуй, только для &#60;a>), но [...]]]></description>
			<content:encoded><![CDATA[<p>Я думаю, Вам известно, что браузер IE6 самый &quot;дырявый&quot; и самый ничегонеподдерживающий =) Но как бы там ни было, его не перестаёт пользовать довольно таки большое количество веб-сёрферов&#8230; <span id="more-157"></span>(<a href="http://www.artlebedev.ru/tools/browsers/">статистика от студии Лебедева и tx3</a>)</p>
<p>       &nbsp;</p>
<p>Я столкнулся со <strong>следующей проблемой:</strong> IE6 поддерживает селектор :hover далеко не для всех элементов HTML (пожалуй, только для &lt;a>), но меню на сайте было построено на &lt;ul>&lt;li> элементах, где использовался этот селектор для элемента &lt;li>.</p>
<p><strong>Решение #1:</strong> после некоторого времени <a href="http://www.google.ru/search?q=ie6+css+:hover+fix">гугл</a>ения я нашёл решение, хоть и не тру-css, но тем не менее работает :)&nbsp;</p>
<p>Итак, в стилях нужно прописать:</p>
<blockquote>
<p>html { behavior: url(&quot;hover.htc&quot;); }<br />
/* в оригинале файл называется csshover3.htc, а прикрепленный к посту hover.htc */</p>
</blockquote>
<p>и положить вот <a href="http://www.xs4all.nl/~peterned/htc/csshover.htc">этот вот файлик</a> в корень сайта ) обновляем страницу, и &quot;вуа ля&quot; у нас работает селектор :hover для любого HTML элемента .</p>
<p>Хак грязный, да, но работает =)</p>
<p>PS: на всякий случай продублирую <a href="http://blog.sdenix.net/wp-content/uploads/2010/01/hover.htc">этот файл у себя</a></p>
<p><strong>Решение #2:</strong> с использованием jQuery (решил уделить внимание, т.к. эта либа довольно активно пользуется разработчиками)</p>
<p>&nbsp;</p>
<pre style="overflow: auto; min-height: 300px; height: auto;">
$.ie6CssFix = function() {
	if($.browser.msie &amp;&amp; $.browser.version &lt; 7) {
		var cssRules = [], newStyleSheet = document.createStyleSheet();
		$(&quot;style,link[type=text/css]&quot;).each(function() {
				if(this.href) {
					$.get(this.href,function(cssText) {
						parseStyleSheet(cssText);
					});
				} else {
					parseStyleSheet(this.innerHTML);
				}
		});
		function parseStyleSheet(cssText) {
			var cssText = cssText.replace(/\s+/g,'');
			var arr = cssText.split(&quot;}&quot;);
			var l = arr.length;
			for(var i=0; i &lt; l; i++) {
				if(arr[i] != &quot;&quot;) {
					parseRule(arr[i] + &quot;}&quot;);
				}
			}
		}
		function parseRule(rule) {
			var pseudo = rule.replace(/[^:]+:([a-z-]+).*/i, '$1');
			if(/(hover|after|focus)/i.test(pseudo)) {
				var prefix = &quot;ie6fix-&quot;;
				var element = rule.replace(/:(hover|after|before|focus).*$/, '');
				var className = prefix + pseudo;
				var style = rule.match(/\{(.*)\}/)[1];
				var h =  getPseudo(pseudo);
				if(h) {
					h(element,className);
				}
				newStyleSheet.addRule(element + &quot;.&quot; + className,style);
			}
		}
	        function handleHover(e,c) {
			$(e).hover(function() {$(this).addClass(c);}, function() {$(this).removeClass(c);});
		}
		function handleFocus(e,c) {
			$(e).focus(function() { $(this).addClass(c); }).blur(function() {$(this).removeClass(c);});
		}
		function handleAfter(e,c) {
			$(e).after(
				$(&quot;&lt;&quot; + e + &quot;>&quot;).addClass(c)
			);
		}
		function getPseudo(pseudo) {
			switch (pseudo) {
				case &quot;hover&quot;: return handleHover;
				case &quot;focus&quot;: return handleFocus;
				case &quot;after&quot;: return handleAfter;
				default: return false;
			}
		}
	}
};

$(function() {
	$.ie6CssFix();
});
</pre>
<p>&nbsp;</p>
<p>Всё! :) только перед этим кодом нужно сделать include скрипта jQuery :)<br />
       &nbsp;</p>
<p>&nbsp;</p>

<div class="bookmarkz"><a href="http://www.google.com/bookmarks/mark?op=add&bkmk=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/&title=IE6+CSS+%3Ahover+fix+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/google.png" border="0" width="15" height="15" alt="Google Bookmarks" title="Google Bookmarks"></a> <a href="http://digg.com/submit?url=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/digg.png" border="0" width="15" height="15" alt="Digg" title="Digg"></a> <a href="http://reddit.com/submit?url=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/&title=IE6+CSS+%3Ahover+fix+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/reddit.png" border="0" width="15" height="15" alt="Reddit" title="Reddit"></a> <a href="http://del.icio.us/post?url=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/&title=IE6+CSS+%3Ahover+fix+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/delicious.png" border="0" width="15" height="15" alt="del.icio.us" title="del.icio.us"></a> <a href="http://ma.gnolia.com/beta/bookmarklet/add?url=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/&title=IE6+CSS+%3Ahover+fix+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log&description=IE6+CSS+%3Ahover+fix+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/magnolia.png" border="0" width="15" height="15" alt="Ma.gnolia" title="Ma.gnolia"></a> <a href="http://www.technorati.com/faves?add=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/technorati.png" border="0" width="15" height="15" alt="Technorati" title="Technorati"></a> <a href="http://www.slashdot.org/bookmark.pl?url=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/&title=IE6+CSS+%3Ahover+fix+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/slashdot.png" border="0" width="15" height="15" alt="Slashdot" title="Slashdot"></a> <a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/&t=IE6+CSS+%3Ahover+fix+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/yahoo.png" border="0" width="15" height="15" alt="Yahoo My Web" title="Yahoo My Web"></a> <a href="http://news2.ru/add_story.php?url=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/news2ru.png" border="0" width="15" height="15" alt="News2.ru" title="News2.ru"></a> <a href="http://www.bobrdobr.ru/addext.html?url=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/&title=IE6+CSS+%3Ahover+fix+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/bobrdobr.png" border="0" width="15" height="15" alt="БобрДобр.ru" title="БобрДобр.ru"></a> <a href="http://rumarkz.ru/bookmarks/?action=add&popup=1&address=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/&title=IE6+CSS+%3Ahover+fix+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rumarkz.png" border="0" width="15" height="15" alt="RUmarkz" title="RUmarkz"></a> <a href="http://www.vaau.ru/submit/?action=step2&url=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/vaau.png" border="0" width="15" height="15" alt="Ваау!" title="Ваау!"></a> <a href="http://memori.ru/link/?sm=1&u_data[url]=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/&u_data[name]=IE6+CSS+%3Ahover+fix+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/memori.png" border="0" width="15" height="15" alt="Memori.ru" title="Memori.ru"></a> <a href="http://www.rucity.com/bookmarks.php?action=add&address=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/&title=IE6+CSS+%3Ahover+fix+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rucity.png" border="0" width="15" height="15" alt="rucity.com" title="rucity.com"></a> <a href="http://moemesto.ru/post.php?url=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/&title=IE6+CSS+%3Ahover+fix+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/moemesto.png" border="0" width="15" height="15" alt="МоёМесто.ru" title="МоёМесто.ru"></a> <a href="http://www.mister-wong.ru/index.php?action=addurl&bm_url=http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/&bm_description=IE6+CSS+%3Ahover+fix+%5Brus%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/mrwong.png" border="0" width="15" height="15" alt="Mister Wong" title="Mister Wong"></a> </div>
]]></content:encoded>
			<wfw:commentRss>http://blog.sdenix.net/2010/01/28/ie6-css-hover-fix-rus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Авторизация в MVC Catalyst</title>
		<link>http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/</link>
		<comments>http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 07:58:48 +0000</pubDate>
		<dc:creator>WatchDog</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[Catalyst]]></category>
		<category><![CDATA[Hint]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[ооп]]></category>

		<guid isPermaLink="false">http://blog.sdenix.net/?p=150</guid>
		<description><![CDATA[Прикрутить авторизацию в приложении написанном с помощью MVC Catalyst оказалось довольно таки просто.&#160;Для этого нам нужны следующие модули - Authentication Session Session::Store::FastMmap Session::State::Cookie Их же мы должны включить в главном модуле приложения (допустим,&#160;что приложение называется Test, тогда этот модуль будет называться Test.pm): use Catalyst qw/&#160; &#160; &#160; &#160; &#160; Static::Simple &#160; &#160; &#160; Authentication &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Прикрутить авторизацию в приложении написанном с помощью MVC Catalyst оказалось довольно таки просто.&nbsp;<span id="more-150"></span>Для этого нам нужны следующие модули -</p>
<ul>
<li>Authentication</li>
<li>Session</li>
<li>Session::Store::FastMmap</li>
<li>Session::State::Cookie</li>
</ul>
<p>Их же мы должны включить в главном модуле приложения (допустим,&nbsp;что приложение называется Test, тогда этот модуль будет называться Test.pm):</p>
<blockquote>
<p>use Catalyst qw/&nbsp;                 &nbsp;<br />
&nbsp;                   &nbsp; &nbsp; Static::Simple<br />
&nbsp;                   &nbsp; &nbsp; Authentication<br />
&nbsp;                   &nbsp; &nbsp; Session<br />
&nbsp;                   &nbsp; &nbsp; Session::Store::FastMmap<br />
&nbsp;                   &nbsp; &nbsp; Session::State::Cookie<br />
/;</p>
<p>&nbsp;</p>
</blockquote>
<p>Далее, в конфигурации модуля указываем параметры сессии:</p>
<blockquote>
<p>Test->config(</p>
<p>&#8230;</p>
<p>&#8216;Plugin::Session&#8217; => {expires => 3600, storage => &#8216;/tmp/session&#8217;},</p>
<p>&#8216;authentication&#8217; => {<br />
&nbsp;       &nbsp; &nbsp; &#8216;default_realm&#8217; => &#8216;default&#8217;,<br />
&nbsp;       &nbsp; &nbsp; &#8216;use_session&#8217; => 1,<br />
&nbsp;       &nbsp; &nbsp; &#8216;realms&#8217; => {<br />
&nbsp;         &nbsp; &nbsp; &nbsp; &nbsp; &#8216;default&#8217; => {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;           &nbsp; &nbsp; &#8216;credential&#8217; => {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;             &nbsp; &nbsp; &#8216;class&#8217;               => &#8216;Password&#8217;,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;             &nbsp; &nbsp; &#8216;password_field&#8217;      => &#8216;user_password&#8217;, &nbsp; &nbsp;<em># поле в таблице, пароль</em><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;             &nbsp; &nbsp; &#8216;password_type&#8217;       => &#8216;clear&#8217;,<br />
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;         &nbsp;},<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;           &nbsp; &nbsp; &#8216;store&#8217; => {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;             &nbsp; &nbsp; &#8216;class&#8217;              => &#8216;DBI&#8217;, &nbsp; &nbsp;<em># я решил использовать DBI, т.к. таблица с пользователями хранится в MySQL</em><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;             &nbsp; &nbsp; &#8216;user_table&#8217;         => &#8216;users&#8217;, &nbsp; &nbsp;<em># таблица пользователей</em><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;             &nbsp; &nbsp; &#8216;user_key&#8217;           => &#8216;id_user&#8217;, &nbsp; &nbsp;<em># ключ, id пользователя</em><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;             &nbsp; &nbsp; &#8216;user_name&#8217;          => &#8216;user_login&#8217;, &nbsp; &nbsp;<em># логин</em><br />
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;            &nbsp;},<br />
&nbsp; &nbsp; &nbsp;         &nbsp; &nbsp; },<br />
&nbsp;       &nbsp; &nbsp; },<br />
},<br />
&nbsp;</p>
<p>&#8230;</p>
<p>);</p>
</blockquote>
<p>После столь не сложных манипуляций, можем использовать авторизацию =)</p>
<p>Создаем контроллер Login (для примера), после чего в функцию index пишем следующее:</p>
<blockquote>
<p>sub index :Path {<br />
my ($self, $c) = @_;<br />
my $req = $c->request();</p>
<p>if ($req->param(&#8216;login&#8217;) ne &#187; &amp;&amp; $req->param(&#8216;key&#8217;) ne &#187;) {<br />
&nbsp;       unless ($c->authenticate({&#8216;user_login&#8217;     => $req->param(&#8216;login&#8217;),&#8217;user_password&#8217;  => md5_hex($req->param(&#8216;key&#8217;)),}))<br />
&nbsp; {<br />
&nbsp;           &nbsp;$c->stash->{error} = &#8216;Неверный логин/пароль&#8217;;<br />
&nbsp;           &nbsp;$c->stash->{template} = &quot;service/auth.tt&quot;; &nbsp; &nbsp;<em># я использую TemplateToolkit (TT) как шаблонизатор (View/TT.pm)</em><br />
&nbsp;}<br />
&nbsp;else<br />
&nbsp;{<br />
&nbsp;           &nbsp;$c->stash->{error} = &quot;&quot;;<br />
&nbsp;          &nbsp;$c->response->redirect(&#8216;/&#8217;);<br />
&nbsp;}<br />
} else {<br />
&nbsp;       &nbsp;$c->stash->{template} = &quot;service/auth.tt&quot;; &nbsp; <em># я использую TemplateToolkit (TT) как шаблонизатор (View/TT.pm)</em><br />
}<br />
}<br />
&nbsp; &nbsp;      &nbsp;</p>
</blockquote>
<p>Всё, теперь можете проверять залогинен ли пользователь с помощью <strong>$c->user_exists</strong> и обращаться ко всем свойствам/параметрам/полям пользователя через <strong>$c->user->get(&#8216;parameter_name&#8217;)</strong>.</p>

<div class="bookmarkz"><a href="http://www.google.com/bookmarks/mark?op=add&bkmk=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/&title=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B2+MVC+Catalyst+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/google.png" border="0" width="15" height="15" alt="Google Bookmarks" title="Google Bookmarks"></a> <a href="http://digg.com/submit?url=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/digg.png" border="0" width="15" height="15" alt="Digg" title="Digg"></a> <a href="http://reddit.com/submit?url=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/&title=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B2+MVC+Catalyst+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/reddit.png" border="0" width="15" height="15" alt="Reddit" title="Reddit"></a> <a href="http://del.icio.us/post?url=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/&title=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B2+MVC+Catalyst+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/delicious.png" border="0" width="15" height="15" alt="del.icio.us" title="del.icio.us"></a> <a href="http://ma.gnolia.com/beta/bookmarklet/add?url=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/&title=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B2+MVC+Catalyst+-+%2Fvar%2Flog%2Fdev.log&description=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B2+MVC+Catalyst+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/magnolia.png" border="0" width="15" height="15" alt="Ma.gnolia" title="Ma.gnolia"></a> <a href="http://www.technorati.com/faves?add=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/technorati.png" border="0" width="15" height="15" alt="Technorati" title="Technorati"></a> <a href="http://www.slashdot.org/bookmark.pl?url=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/&title=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B2+MVC+Catalyst+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/slashdot.png" border="0" width="15" height="15" alt="Slashdot" title="Slashdot"></a> <a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/&t=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B2+MVC+Catalyst+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/yahoo.png" border="0" width="15" height="15" alt="Yahoo My Web" title="Yahoo My Web"></a> <a href="http://news2.ru/add_story.php?url=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/news2ru.png" border="0" width="15" height="15" alt="News2.ru" title="News2.ru"></a> <a href="http://www.bobrdobr.ru/addext.html?url=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/&title=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B2+MVC+Catalyst+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/bobrdobr.png" border="0" width="15" height="15" alt="БобрДобр.ru" title="БобрДобр.ru"></a> <a href="http://rumarkz.ru/bookmarks/?action=add&popup=1&address=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/&title=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B2+MVC+Catalyst+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rumarkz.png" border="0" width="15" height="15" alt="RUmarkz" title="RUmarkz"></a> <a href="http://www.vaau.ru/submit/?action=step2&url=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/vaau.png" border="0" width="15" height="15" alt="Ваау!" title="Ваау!"></a> <a href="http://memori.ru/link/?sm=1&u_data[url]=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/&u_data[name]=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B2+MVC+Catalyst+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/memori.png" border="0" width="15" height="15" alt="Memori.ru" title="Memori.ru"></a> <a href="http://www.rucity.com/bookmarks.php?action=add&address=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/&title=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B2+MVC+Catalyst+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rucity.png" border="0" width="15" height="15" alt="rucity.com" title="rucity.com"></a> <a href="http://moemesto.ru/post.php?url=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/&title=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B2+MVC+Catalyst+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/moemesto.png" border="0" width="15" height="15" alt="МоёМесто.ru" title="МоёМесто.ru"></a> <a href="http://www.mister-wong.ru/index.php?action=addurl&bm_url=http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/&bm_description=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B2+MVC+Catalyst+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/mrwong.png" border="0" width="15" height="15" alt="Mister Wong" title="Mister Wong"></a> </div>
]]></content:encoded>
			<wfw:commentRss>http://blog.sdenix.net/2010/01/18/avtorizaciya-v-mvc-catalyst/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MVC Catalyst + Apache 2 + FastCGI [quick and simple hint]</title>
		<link>http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/</link>
		<comments>http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 05:40:16 +0000</pubDate>
		<dc:creator>WatchDog</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[Catalyst]]></category>
		<category><![CDATA[FastCGI]]></category>
		<category><![CDATA[Hint]]></category>

		<guid isPermaLink="false">http://blog.sdenix.net/?p=144</guid>
		<description><![CDATA[Не понравилось каждый раз перезапускать Apache, чтобы применить изменения в скриптах (да и чего душой кривить, просто интересно стало!) =) Решил поковырять в сторону Catalyst + FastCGI Этот способ отличается от предыдущего настройками сервера и запуском FastCGI&#160;сервера вашего приложения. Считается, что модуль mod_fastcgi уже установлен (Catalyst и всё прочее тоже). Итак: Создаём приложение Catalyst, пусть [...]]]></description>
			<content:encoded><![CDATA[<p>Не понравилось каждый раз перезапускать Apache, чтобы применить изменения в скриптах (да и чего душой кривить, просто интересно стало!) =) Решил поковырять в сторону Catalyst + FastCGI</p>
<p><span id="more-144"></span>Этот способ отличается от <a href="http://blog.sdenix.net/2009/08/17/mvc-catalyst-mod_perl-quick-and-simple-hint/" target="_blank">предыдущего</a> настройками сервера и запуском FastCGI&nbsp;сервера вашего приложения. Считается, что модуль mod_fastcgi уже установлен (Catalyst и всё прочее тоже). Итак:</p>
<ol>
<li>Создаём приложение Catalyst, пусть это будет Test :)</li>
<li>В конфиге vurtual host&#8217;а пишем:<br />
<blockquote>
<p>LoadModule fastcgi_module /usr/lib/apache2/mod_fastcgi.so # у меня OpenSUSE 11.0 и модуль лежит здесь</p>
<p>&lt;IfModule mod_fastcgi.c&gt;<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FastCgiIpcDir /var/lib/apache2/fastcgi<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddHandler fastcgi-script fcg fcgi fpl pl cgi<br />
    &lt;/IfModule&gt;<br />
    &nbsp;</p>
<p>FastCgiExternalServer /srv/www/vhosts/test/cgi-bin/script/test_fastcgi.pl -host 127.0.0.1:82 -idle-timeout 500</p>
<p>&lt;VitualHost 127.0.0.1:81&gt;</p>
<p>### эти настройки опущу =) предположу, что вы знаете как настраивать virtual host&#8217;ы</p>
<p>&nbsp;Alias /test /srv/www/vhosts/test/cgi-bin/script/test_fastcgi.pl/<br />
    &nbsp;Alias /static /srv/www/vhosts/test/htdocs/static</p>
<p>&lt;/VirtualHost&gt;</p>
</blockquote>
</li>
<li>Далее, перезапускаем Apache</li>
<li>Идем в директорию script/ (для данного примера это /srv/www/vhosts/test/cgi-bin/script/) и запускаем FastCGI&nbsp;сервер вашего приложения:<br />
<blockquote>./test_fastcgi.pl -l :82 -n 3 -p /tmp/test_catalyst.pid -d</p></blockquote>
</li>
</ol>
<p>Теперь радостно открываем свой любимый браузер и резво набираем там http://127.0.0.1:81/ должны увидеть результат работы пустого приложения Catalyst :)</p>
<p>Если что не получилось &#8212; милости прошу за ответами на вопросы :) Опять же, этот микропост не претендует на проф. документацию :)</p>

<div class="bookmarkz"><a href="http://www.google.com/bookmarks/mark?op=add&bkmk=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/&title=MVC+Catalyst+%2B+Apache+2+%2B+FastCGI+%5Bquick+and+simple+hint%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/google.png" border="0" width="15" height="15" alt="Google Bookmarks" title="Google Bookmarks"></a> <a href="http://digg.com/submit?url=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/digg.png" border="0" width="15" height="15" alt="Digg" title="Digg"></a> <a href="http://reddit.com/submit?url=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/&title=MVC+Catalyst+%2B+Apache+2+%2B+FastCGI+%5Bquick+and+simple+hint%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/reddit.png" border="0" width="15" height="15" alt="Reddit" title="Reddit"></a> <a href="http://del.icio.us/post?url=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/&title=MVC+Catalyst+%2B+Apache+2+%2B+FastCGI+%5Bquick+and+simple+hint%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/delicious.png" border="0" width="15" height="15" alt="del.icio.us" title="del.icio.us"></a> <a href="http://ma.gnolia.com/beta/bookmarklet/add?url=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/&title=MVC+Catalyst+%2B+Apache+2+%2B+FastCGI+%5Bquick+and+simple+hint%5D+-+%2Fvar%2Flog%2Fdev.log&description=MVC+Catalyst+%2B+Apache+2+%2B+FastCGI+%5Bquick+and+simple+hint%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/magnolia.png" border="0" width="15" height="15" alt="Ma.gnolia" title="Ma.gnolia"></a> <a href="http://www.technorati.com/faves?add=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/technorati.png" border="0" width="15" height="15" alt="Technorati" title="Technorati"></a> <a href="http://www.slashdot.org/bookmark.pl?url=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/&title=MVC+Catalyst+%2B+Apache+2+%2B+FastCGI+%5Bquick+and+simple+hint%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/slashdot.png" border="0" width="15" height="15" alt="Slashdot" title="Slashdot"></a> <a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/&t=MVC+Catalyst+%2B+Apache+2+%2B+FastCGI+%5Bquick+and+simple+hint%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/yahoo.png" border="0" width="15" height="15" alt="Yahoo My Web" title="Yahoo My Web"></a> <a href="http://news2.ru/add_story.php?url=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/news2ru.png" border="0" width="15" height="15" alt="News2.ru" title="News2.ru"></a> <a href="http://www.bobrdobr.ru/addext.html?url=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/&title=MVC+Catalyst+%2B+Apache+2+%2B+FastCGI+%5Bquick+and+simple+hint%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/bobrdobr.png" border="0" width="15" height="15" alt="БобрДобр.ru" title="БобрДобр.ru"></a> <a href="http://rumarkz.ru/bookmarks/?action=add&popup=1&address=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/&title=MVC+Catalyst+%2B+Apache+2+%2B+FastCGI+%5Bquick+and+simple+hint%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rumarkz.png" border="0" width="15" height="15" alt="RUmarkz" title="RUmarkz"></a> <a href="http://www.vaau.ru/submit/?action=step2&url=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/vaau.png" border="0" width="15" height="15" alt="Ваау!" title="Ваау!"></a> <a href="http://memori.ru/link/?sm=1&u_data[url]=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/&u_data[name]=MVC+Catalyst+%2B+Apache+2+%2B+FastCGI+%5Bquick+and+simple+hint%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/memori.png" border="0" width="15" height="15" alt="Memori.ru" title="Memori.ru"></a> <a href="http://www.rucity.com/bookmarks.php?action=add&address=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/&title=MVC+Catalyst+%2B+Apache+2+%2B+FastCGI+%5Bquick+and+simple+hint%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/rucity.png" border="0" width="15" height="15" alt="rucity.com" title="rucity.com"></a> <a href="http://moemesto.ru/post.php?url=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/&title=MVC+Catalyst+%2B+Apache+2+%2B+FastCGI+%5Bquick+and+simple+hint%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/moemesto.png" border="0" width="15" height="15" alt="МоёМесто.ru" title="МоёМесто.ru"></a> <a href="http://www.mister-wong.ru/index.php?action=addurl&bm_url=http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/&bm_description=MVC+Catalyst+%2B+Apache+2+%2B+FastCGI+%5Bquick+and+simple+hint%5D+-+%2Fvar%2Flog%2Fdev.log" rel="nofollow" target="_blank"><img src="http://blog.sdenix.net/wp-content/plugins/bookmarkz/images/mrwong.png" border="0" width="15" height="15" alt="Mister Wong" title="Mister Wong"></a> </div>
]]></content:encoded>
			<wfw:commentRss>http://blog.sdenix.net/2010/01/12/mvc-catalyst-apache-2-fastcgi-quick-and-simple-hint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

