<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>IT Tip &#38; Tricks</title>
	<atom:link href="http://programjutsu.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://programjutsu.wordpress.com</link>
	<description>Техники и приемы в IT (программинг, системное администрирование</description>
	<lastBuildDate>Wed, 30 Nov 2011 16:20:49 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='programjutsu.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>IT Tip &#38; Tricks</title>
		<link>http://programjutsu.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://programjutsu.wordpress.com/osd.xml" title="IT Tip &#38; Tricks" />
	<atom:link rel='hub' href='http://programjutsu.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Magento 1.5.x удаление заказов</title>
		<link>http://programjutsu.wordpress.com/2011/09/20/magento-1-5-x-%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b7%d0%b0%d0%ba%d0%b0%d0%b7%d0%be%d0%b2/</link>
		<comments>http://programjutsu.wordpress.com/2011/09/20/magento-1-5-x-%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b7%d0%b0%d0%ba%d0%b0%d0%b7%d0%be%d0%b2/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 13:03:41 +0000</pubDate>
		<dc:creator>lesandr</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[clean]]></category>
		<category><![CDATA[delete orders]]></category>
		<category><![CDATA[очистка]]></category>
		<category><![CDATA[удаление заказов]]></category>

		<guid isPermaLink="false">http://programjutsu.wordpress.com/?p=99</guid>
		<description><![CDATA[При переносе проекта на другой хостинг, понадобилось удалить все заказы из magento, так как они были сделаны в тестовых целях. Оказалось, что в стандартных действия в админ панели magento нет удаления заказов. По соображениям разработчиков этого чудесного движка такая функция не доступна для заказов. Поискав немного в интернете обнаружил немалое количество расширений, позволяющих удалять заказы, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=99&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>При переносе проекта на другой хостинг, понадобилось удалить все заказы из magento, так как они были сделаны в тестовых целях. Оказалось, что в стандартных действия в админ панели magento нет удаления заказов. По соображениям разработчиков этого чудесного движка такая функция не доступна для заказов.</p>
<p>Поискав немного в интернете обнаружил немалое количество расширений, позволяющих удалять заказы, но все они оказались платные. Выход один &#8211; чистить руками в базе данных. Но какие таблицы необходимо почистить?</p>
<p>Ответ на этот вопрос я обнаружил на одном сайте: <a href="http://www.myscienceisbetter.info/delete-test-orders-in-magento-1-5-x.html" target="_blank">http://www.myscienceisbetter.info/delete-test-orders-in-magento-1-5-x.html</a></p>
<p>Итак, чтобы почистить заказы, нужно выполнить такой вот хитрый запрос:</p>
<p><pre class="brush: sql;">
SET FOREIGN_KEY_CHECKS=0;
 
TRUNCATE `sales_flat_order`;
TRUNCATE `sales_flat_order_address`;
TRUNCATE `sales_flat_order_grid`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sales_flat_order_status_history`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_order_payment`;
TRUNCATE `sales_flat_quote_payment`;
TRUNCATE `sales_flat_shipment`;
TRUNCATE `sales_flat_shipment_item`;
TRUNCATE `sales_flat_shipment_grid`;
TRUNCATE `sales_flat_invoice`;
TRUNCATE `sales_flat_invoice_grid`;
TRUNCATE `sales_flat_invoice_item`;
TRUNCATE `sendfriend_log`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `wishlist`;
TRUNCATE `log_quote`;
TRUNCATE `report_event`;
 
ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_status_history` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;
 
-- lets reset customers
TRUNCATE `customer_address_entity`;
TRUNCATE `customer_address_entity_datetime`;
TRUNCATE `customer_address_entity_decimal`;
TRUNCATE `customer_address_entity_int`;
TRUNCATE `customer_address_entity_text`;
TRUNCATE `customer_address_entity_varchar`;
TRUNCATE `customer_entity`;
TRUNCATE `customer_entity_datetime`;
TRUNCATE `customer_entity_decimal`;
TRUNCATE `customer_entity_int`;
TRUNCATE `customer_entity_text`;
TRUNCATE `customer_entity_varchar`;
TRUNCATE `log_customer`;
TRUNCATE `log_visitor`;
TRUNCATE `log_visitor_info`;
 
ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
 
-- Now, lets Reset all ID counters
TRUNCATE `eav_entity_store`;
ALTER TABLE `eav_entity_store` AUTO_INCREMENT=1;
 
SET FOREIGN_KEY_CHECKS=1;
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/programjutsu.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/programjutsu.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/programjutsu.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/programjutsu.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/programjutsu.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/programjutsu.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/programjutsu.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/programjutsu.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/programjutsu.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/programjutsu.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/programjutsu.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/programjutsu.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/programjutsu.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/programjutsu.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=99&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://programjutsu.wordpress.com/2011/09/20/magento-1-5-x-%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b7%d0%b0%d0%ba%d0%b0%d0%b7%d0%be%d0%b2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5e16ca68d8f8f4cfebf5388fcda6660a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lesandr</media:title>
		</media:content>
	</item>
		<item>
		<title>Установка нескольких версий PHP на Apache (Ubuntu)</title>
		<link>http://programjutsu.wordpress.com/2011/09/20/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d0%bd%d0%b5%d1%81%d0%ba%d0%be%d0%bb%d1%8c%d0%ba%d0%b8%d1%85-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b9-php-%d0%bd%d0%b0-apache-ubuntu/</link>
		<comments>http://programjutsu.wordpress.com/2011/09/20/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d0%bd%d0%b5%d1%81%d0%ba%d0%be%d0%bb%d1%8c%d0%ba%d0%b8%d1%85-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b9-php-%d0%bd%d0%b0-apache-ubuntu/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 12:53:09 +0000</pubDate>
		<dc:creator>lesandr</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Настройка серверов]]></category>

		<guid isPermaLink="false">http://programjutsu.wordpress.com/?p=101</guid>
		<description><![CDATA[С выходом ветки PHP 5.3 при разработке проектов мы стали ориентироваться на эту версию, к тому же клиенты стали активно обновлять свои хостинги. Однако, большинство проектов было написано под PHP 5.2.x и адаптировать их под новую версию языка не всегда представляется возможным. В связи с этим возникла необходимость установить на компьютере разработчика как минимум две [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=101&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>С выходом ветки PHP 5.3 при разработке проектов мы стали ориентироваться на эту версию, к тому же клиенты стали активно обновлять свои хостинги. Однако, большинство проектов было написано под PHP 5.2.x и адаптировать их под новую версию языка не всегда представляется возможным. В связи с этим возникла необходимость установить на компьютере разработчика как минимум две версии <strong>PHP (5.2.x и 5.3.x)</strong>, чтобы они работали на одном сервере Apache.</p>
<p>Одним из популярных способов решения этой проблемы является подключение одной версий PHP к апачу как <a href="http://ru.wikipedia.org/wiki/FastCGI" target="_blank">FastCGI</a> приложение, а другой &#8211; обычным способом &#8211; как модуль Apache.</p>
<p>Один мой друг написал мануал по настройке сервера таким механизмом. Он призводил установку PHP с Apache на сервер <strong>Debian</strong>. Эти же шаги легко адаптировать на любую ветку Unix. Я производил настройку <strong>Ubuntu 11.04</strong>. Итак, руководствуясь инструкцией из <a href="http://mbi-solutions.blogspot.com/2011/07/running-php-53-and-php-52-on-same.html" target="_blank">блога</a>, делаем настройку.</p>
<p>Для начала нужно определиться, какую версию PHP ставить как модуль, а какую подключать как FastCGI. В репозитории Ubuntu 11.04 по умолчанию идет PHP версии 5.3.5. Таким образом, эту версию можно установить <a href="http://www.mini-server.ru/server/web/192-ubuntu-lamp" target="_blank">&laquo;стандартным&raquo;</a> способом как модуль apache.</p>
<p>Теперь, установим PHP 5.2.x, а именно соберем ее из исходников. Скачать ее можно отсюда:  <a href="http://us3.php.net/get/php-5.2.17.tar.bz2/from/a/mirror" target="_blank">http://us3.php.net/get/php-5.2.17.tar.bz2/from/a/mirror</a></p>
<p>Последняя версия ветки 5.2 на данный момент &#8211; 5.2.17. В результате получится файл php-5.2.17.tar.gz. Распакуем его командой:</p>
<p><pre class="brush: bash;">
tar xzvf php-5.2.17.tar.gz
</pre></p>
<p>Установим необходимые для компиляции библиотеки:<br />
<pre class="brush: bash;">
apt-get install libxml2-dev libmysqlclient-dev libcurl4-gnutls-dev libcurl4-openssl-dev libpng12-dev libjpeg62-dev
</pre></p>
<p>Подготовим PHP  к сборке:</p>
<p><pre class="brush: bash;">
./configure --prefix=/opt/php5.2 \
--with-config-file-path=/opt/php5.2 \
--with-mysqli \
--with-mysql \
--with-curl \
--with-gd \
--with-jpeg \
--with-jpeg-dir \
--enable-cli \
--enable-fastcgi \
--enable-discard-path \
--enable-force-cgi-redirect
</pre></p>
<p>Здесь хочу отметить, что Ubuntu поругалась на отсутствие двух библиотек libpng.so и lingjpeg.so. На само деле они установлены, но сами файлы библиотек PNG и JPEG включают номер версии. В моем случае это были:</p>
<p><strong>libpng12.so</strong></p>
<p><strong>libjpeg.so.62</strong></p>
<p>Для устранения ошибки достаточно создать символические ссылки с нужным именем:</p>
<p><pre class="brush: bash;">
ln -s /usr/lib/libjpeg.so.62 libjpeg.so

ln -s /usr/lib/libpng12.so libpng.so
</pre></p>
<p>Теперь скомпилируем и установим PHP:</p>
<p><pre class="brush: bash;">
make

make install
</pre></p>
<p>Если у apache не установлен модуль для работы с FastCGI установим его:</p>
<p><pre class="brush: bash;">
apt-get install libapache2-mod-fastcgi

a2enmod fastcgi
</pre></p>
<p>Для удобства активируем модуль apache <a href="http://httpd.apache.org/docs/1.3/mod/mod_actions.html" target="_blank">mod_actions</a>:</p>
<p><pre class="brush: bash;">
a2enmod actions
</pre></p>
<p>Теперь создадим SH-скрипт, который будет запускать CGI приложение PHP для обработки скриптов:</p>
<p><pre class="brush: bash;">
vi /usr/lib/cgi-bin/php52-cgi
</pre></p>
<p>Запишем туда, следующие строчки:</p>
<p><pre class="brush: plain;">
#!/bin/sh
PHPRC=&quot;/opt/php5.2/&quot;
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /opt/php5.2/bin/php-cgi
</pre></p>
<p>Дадим этому скрипту права на запись:</p>
<p><pre class="brush: bash;">
chmod +x /usr/lib/cgi-bin/php5-cgi
</pre></p>
<p>Создадим конфигурационный файл для apache с настройками обработчика PHP скриптов, нужно сказать серверу, что скрипты должны обрабатываться CGI-приложение PHP 5.2:</p>
<p><pre class="brush: bash;">
vi /etc/apache2/php52.conf
</pre></p>
<p>Пропишем там следующее:</p>
<p><pre class="brush: plain;">
&lt;FilesMatch &quot;\.php&quot;&gt;
SetHandler application/x-httpd-php5
&lt;/FilesMatch&gt;
ScriptAlias /php52-cgi /usr/lib/cgi-bin/php52-cgi
Action application/x-httpd-php5 /php52-cgi
AddHandler application/x-httpd-php5 .php
</pre></p>
<p>Вот и все, теперь достаточно в настройках виртуального хоста добавить импорт php52.conf файла  и для этого хоста будет работать PHP 5.2:</p>
<p><pre class="brush: plain;">
&lt;VirtualHost *.80&gt;
........................................
Include php52.conf
.........................................
&lt;/VirtualHost&gt;
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/programjutsu.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/programjutsu.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/programjutsu.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/programjutsu.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/programjutsu.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/programjutsu.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/programjutsu.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/programjutsu.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/programjutsu.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/programjutsu.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/programjutsu.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/programjutsu.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/programjutsu.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/programjutsu.wordpress.com/101/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=101&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://programjutsu.wordpress.com/2011/09/20/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d0%bd%d0%b5%d1%81%d0%ba%d0%be%d0%bb%d1%8c%d0%ba%d0%b8%d1%85-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b9-php-%d0%bd%d0%b0-apache-ubuntu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5e16ca68d8f8f4cfebf5388fcda6660a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lesandr</media:title>
		</media:content>
	</item>
		<item>
		<title>Применение Sales Rules в Magento 1.5.x</title>
		<link>http://programjutsu.wordpress.com/2011/09/14/%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-sales-rules-%d0%b2-magento-1-5-x/</link>
		<comments>http://programjutsu.wordpress.com/2011/09/14/%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-sales-rules-%d0%b2-magento-1-5-x/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 14:29:13 +0000</pubDate>
		<dc:creator>lesandr</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[применение salesrules]]></category>
		<category><![CDATA[price rules]]></category>
		<category><![CDATA[SalesRules]]></category>

		<guid isPermaLink="false">http://programjutsu.wordpress.com/?p=104</guid>
		<description><![CDATA[Так получилось, что последние два проекта на работе были связаны с написанием интернет магазинов на популярном движке magento. Вся сложность заключалась в том, что дизайн, полученный от клиента никак не вписывался в &#171;стандартный&#187; движок magento. Более того в некоторых местах необходимо изменить обыкновенную логику движка, не влезая при этом в код. В связи с этим [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=104&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Так получилось, что последние два проекта на работе были связаны с написанием интернет магазинов на популярном движке magento. Вся сложность заключалась в том, что дизайн, полученный от клиента никак не вписывался в &laquo;стандартный&raquo; движок magento. Более того в некоторых местах необходимо изменить обыкновенную логику движка, не влезая при этом в код. В связи с этим пришлось решить ряд проблем.</p>
<p>Одной из таких проблем стало применение Sales Rules в ShoppingCart. Добавление, изменение количества и удаление товара было реализовано с помощью ajax.  Для этого были созданы внешние PHP скрипты, использующие классы magento. Здесь возникла проблема. После отработки ajax скрипта и обновлении данных shopping cart к ценам товаров не применяются правила скидок (SalesRules). После продолжительных поисков в сторону решения наткнулся на одну <a href="http://stackoverflow.com/questions/2817489/magento-how-do-i-get-observers-to-work-in-an-external-script" target="_blank">статью</a>. Оказывается, правила скидок применяются в ценам по определенным событиям специальными объектами (Observers). И работают они в backend&#8217;е и frontend&#8217;е по-разному в зависимости от того, в каком окружении (areas) происходит работа (frontend, admin).</p>
<p>Простейший Ajax скрипт выглядит следующим образом:</p>
<p><pre class="brush: php;">
include_once 'app/Mage.php'; // подключение файла ядра
$app = Mage::app(); // инициализация приложения
Mage::app()-&gt;getLocale()-&gt;setLocale('nl_NL');
Mage::app()-&gt;getTranslator()-&gt;init('frontend', true);
..........................................................
</pre></p>
<p>Подключается основной файл ядра magento, инициализируется приложение, а далее выполняются необходимые действия. Например, для добавления товара в карту происходит следующее:</p>
<p><pre class="brush: php;">
$session = Mage::getSingleton('core/session', array('name'=&gt;'frontend'));
$cart = Mage::helper('checkout/cart')-&gt;getCart();
......................................................
$cart-&gt;addProduct($product, $qty);
$session-&gt;setLastAddedProductId($product-&gt;getId());
$session-&gt;setCartWasUpdated(true);
$cart-&gt;save();
......................................................
</pre></p>
<p>Очевидно в этом случае, magento грузит observer&#8217;ы которые прописаны в config.xml в разделе. Таким образом, чтобы решить проблему, надо &laquo;указать magento&raquo; в каком окружении мы хотим работать:</p>
<p><pre class="brush: php;">
Mage::app()-&gt;loadArea($area);
</pre></p>
<p>В данном случае это FRONTEND. Для этого необходимо сразу после инициализации приложения добавить строку такого вида:</p>
<p><pre class="brush: php;">
Mage::app()-&gt;loadArea(Mage_Core_Model_App_Area::AREA_FRONTEND);
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/programjutsu.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/programjutsu.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/programjutsu.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/programjutsu.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/programjutsu.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/programjutsu.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/programjutsu.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/programjutsu.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/programjutsu.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/programjutsu.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/programjutsu.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/programjutsu.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/programjutsu.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/programjutsu.wordpress.com/104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=104&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://programjutsu.wordpress.com/2011/09/14/%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-sales-rules-%d0%b2-magento-1-5-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5e16ca68d8f8f4cfebf5388fcda6660a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lesandr</media:title>
		</media:content>
	</item>
		<item>
		<title>Ruby on Rails ActionMailer Inline Attachments</title>
		<link>http://programjutsu.wordpress.com/2011/05/19/ruby-on-rails-actionmailer-inline-attachments/</link>
		<comments>http://programjutsu.wordpress.com/2011/05/19/ruby-on-rails-actionmailer-inline-attachments/#comments</comments>
		<pubDate>Thu, 19 May 2011 06:14:56 +0000</pubDate>
		<dc:creator>lesandr</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[ActionMailer]]></category>
		<category><![CDATA[Inline Attachments]]></category>
		<category><![CDATA[Ruby on Rails 2.3.x]]></category>

		<guid isPermaLink="false">http://programjutsu.wordpress.com/?p=94</guid>
		<description><![CDATA[Для одного проекта на Ruby on Rails 2.3.x понадобилось отправлять письмо, внутри которого должна находиться картинка со ссылкой. К сожалению, средстами простого ActionMailer добиться такого результата не удалось. Картинка упорно приходит просто как вложение в письмо. Основательно поискав информацию в интернете решил испольвать gem inline_attachements. Что же нужно сделать, чтобы это работало?.. Для начала нужно [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=94&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Для одного проекта на Ruby on Rails 2.3.x понадобилось отправлять письмо, внутри которого должна находиться картинка со ссылкой. К сожалению, средстами простого <a href="http://guides.rubyonrails.org/action_mailer_basics.html">ActionMailer</a> добиться такого результата не удалось. Картинка упорно приходит просто как вложение в письмо. Основательно поискав информацию в интернете решил испольвать gem <a href="http://rubygems.org/gems/inline_attachment">inline_attachements</a>. Что же нужно сделать, чтобы это работало?..</p>
<p>Для начала нужно установить сам gem:</p>
<p><pre class="brush: bash;">
sudo gem install inline_attachments
</pre></p>
<p>Далее нутри метода отправки письма в ActionMailer указываем inlint_attachment:</p>
<p><pre class="brush: ruby;">
def notify()
.....................
inline_attachment :content_type=&amp;gt;'image/jpg', :body=&amp;gt;File.read(&quot;#{RAILS_ROOT}/public/images/banner_mail.jpg&quot;),
:filename=&amp;gt;'banner.jpg'
end
</pre></p>
<p><strong>content_type</strong> указывает на mime тип прикрепляемого файла</p>
<p><strong>filename</strong> &#8211; имя файла, по которому он будет доступен внутри письма</p>
<p>Теперь, осталось только в теле письма прописать ссылку на эту картинку. Я обычно создаю view файл для сообщения в каталоге <strong>view/ActionMailer_Name/ActionName.html.erb</strong>, внутри которого можно добавить следующую конструкцию:</p>
<p><pre class="brush: ruby;">
&lt;a href=&quot;&lt;%=@url%&gt;&quot;&gt;&lt;%= image_tag &quot;banner_mail.jpg&quot;, :border=&gt;0 %&gt; &lt;/a&gt;
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/programjutsu.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/programjutsu.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/programjutsu.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/programjutsu.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/programjutsu.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/programjutsu.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/programjutsu.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/programjutsu.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/programjutsu.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/programjutsu.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/programjutsu.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/programjutsu.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/programjutsu.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/programjutsu.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=94&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://programjutsu.wordpress.com/2011/05/19/ruby-on-rails-actionmailer-inline-attachments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5e16ca68d8f8f4cfebf5388fcda6660a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lesandr</media:title>
		</media:content>
	</item>
		<item>
		<title>Удаление папок .svn из проекта в Ubuntu</title>
		<link>http://programjutsu.wordpress.com/2011/05/18/%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%b0%d0%bf%d0%be%d0%ba-svn-%d0%b8%d0%b7-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b0-%d0%b2-ubuntu/</link>
		<comments>http://programjutsu.wordpress.com/2011/05/18/%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%b0%d0%bf%d0%be%d0%ba-svn-%d0%b8%d0%b7-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b0-%d0%b2-ubuntu/#comments</comments>
		<pubDate>Wed, 18 May 2011 06:28:06 +0000</pubDate>
		<dc:creator>lesandr</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[очистка]]></category>
		<category><![CDATA[очистка svn]]></category>
		<category><![CDATA[удаление служебных папок]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://programjutsu.wordpress.com/?p=89</guid>
		<description><![CDATA[По долгу службы все разрабатываемые проекты у меня хранятся в репозитории SVN. Иногда, бывает необходимо получить &#171;чистую&#187; копию проекта из локального репозитория. Конечно, можно воспользоваться функцией svn export, но это не всегда бывает удобно. Иногда, я просто копирую содержимое репозитория и стираю служебные папки svn. Чтобы сделать это для всего проекта в ubuntu, необходимо выполнить [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=89&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:left;">По долгу службы все разрабатываемые проекты у меня хранятся в репозитории SVN. Иногда, бывает необходимо получить &laquo;чистую&raquo; копию проекта из локального репозитория. Конечно, можно воспользоваться функцией svn export, но это не всегда бывает удобно. Иногда, я просто копирую содержимое репозитория и стираю служебные папки svn. Чтобы сделать это для всего проекта в ubuntu, необходимо выполнить команду вида:</p>
<p style="text-align:left;">
<p><pre class="brush: bash;">
rm -rf `find . -type d -name .svn`
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/programjutsu.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/programjutsu.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/programjutsu.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/programjutsu.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/programjutsu.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/programjutsu.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/programjutsu.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/programjutsu.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/programjutsu.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/programjutsu.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/programjutsu.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/programjutsu.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/programjutsu.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/programjutsu.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=89&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://programjutsu.wordpress.com/2011/05/18/%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%b0%d0%bf%d0%be%d0%ba-svn-%d0%b8%d0%b7-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b0-%d0%b2-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5e16ca68d8f8f4cfebf5388fcda6660a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lesandr</media:title>
		</media:content>
	</item>
		<item>
		<title>Програмный resize изображения</title>
		<link>http://programjutsu.wordpress.com/2010/06/24/%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bd%d1%8b%d0%b9-resize-%d0%b8%d0%b7%d0%be%d0%b1%d1%80%d0%b0%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f/</link>
		<comments>http://programjutsu.wordpress.com/2010/06/24/%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bd%d1%8b%d0%b9-resize-%d0%b8%d0%b7%d0%be%d0%b1%d1%80%d0%b0%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 11:48:51 +0000</pubDate>
		<dc:creator>lesandr</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[изменение размеров изображения]]></category>
		<category><![CDATA[imagemagick]]></category>
		<category><![CDATA[resize image]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://programjutsu.wordpress.com/?p=73</guid>
		<description><![CDATA[Понадобилось програмно изменить размеры изображения из своей программы. Программа работает под управлением ОС Ubuntu. Для решения этой задачи можно воспользоваться утилитой ImageMagick. Он позволяет производить множество действий с изображением. В том числе и изменять размеры. К тому же, похоже, она входит в дистрибутив Ubuntu. По крайней мере она уже был установлена на моем Ubuntu. Итак, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=73&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Понадобилось програмно изменить размеры изображения из своей программы. Программа работает под управлением ОС Ubuntu.</p>
<p>Для решения этой задачи можно воспользоваться утилитой <a title="ImageMagick" href="http://www.imagemagick.org/script/index.php" target="_blank">ImageMagick</a>. Он позволяет производить множество действий с изображением. В том числе и изменять размеры. К тому же, похоже, она входит в дистрибутив Ubuntu. По крайней мере она уже был установлена на моем Ubuntu.</p>
<p>Итак, чтобы изменить изображение необходимо выполнить команду:</p>
<p><pre class="brush: bash;">

convert -resize widthxheight source-image destanation-image


</pre></p>
<p>Если нужно,  отресайзить изображение бех сохранения aspect ratio, можно использовать команду:</p>
<p><pre class="brush: bash;">

convert -geometry widthxheight!  source-image destanation-image

</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/programjutsu.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/programjutsu.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/programjutsu.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/programjutsu.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/programjutsu.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/programjutsu.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/programjutsu.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/programjutsu.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/programjutsu.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/programjutsu.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/programjutsu.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/programjutsu.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/programjutsu.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/programjutsu.wordpress.com/73/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=73&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://programjutsu.wordpress.com/2010/06/24/%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bd%d1%8b%d0%b9-resize-%d0%b8%d0%b7%d0%be%d0%b1%d1%80%d0%b0%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5e16ca68d8f8f4cfebf5388fcda6660a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lesandr</media:title>
		</media:content>
	</item>
		<item>
		<title>Выполнение команд при запуске Ubuntu</title>
		<link>http://programjutsu.wordpress.com/2010/06/23/%d0%b2%d1%8b%d0%bf%d0%be%d0%bb%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4-%d0%bf%d1%80%d0%b8-%d0%b7%d0%b0%d0%bf%d1%83%d1%81%d0%ba%d0%b5-ubuntu/</link>
		<comments>http://programjutsu.wordpress.com/2010/06/23/%d0%b2%d1%8b%d0%bf%d0%be%d0%bb%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4-%d0%bf%d1%80%d0%b8-%d0%b7%d0%b0%d0%bf%d1%83%d1%81%d0%ba%d0%b5-ubuntu/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 08:32:37 +0000</pubDate>
		<dc:creator>lesandr</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[autoload]]></category>
		<category><![CDATA[Autostart]]></category>
		<category><![CDATA[autostart scripts]]></category>
		<category><![CDATA[автозагрузка]]></category>
		<category><![CDATA[автозагрузка скриптов]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://programjutsu.wordpress.com/?p=64</guid>
		<description><![CDATA[После некоторого времени работы в Ubuntu появилась необходимость при запуске ОС выполнять некоторые консольные команды. Эти команды предназначены для выполнения определенных действий необходимых для работы демона. Поискав немного в Интернете, я обнаружил довольно простой способ, как это можно сделать. Можно создать SH скрипт, поместить его в /etc/init.d/ и сконфигурировать на запуск утилитой update-rc.d. Например, Эта [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=64&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>После некоторого времени работы в Ubuntu появилась необходимость при запуске ОС выполнять некоторые консольные команды. Эти команды предназначены для выполнения определенных действий необходимых для работы демона. Поискав немного в Интернете, я обнаружил довольно простой способ, как это можно сделать.</p>
<p>Можно создать SH скрипт, поместить его в <strong>/etc/init.d/</strong> и сконфигурировать на запуск утилитой <strong>update-rc.d</strong>.</p>
<p>Например,</p>
<p><pre class="brush: bash;">

sudo vi /etc/init.d/local.autostart

</pre></p>
<p>Эта команда создат файл local.autostart в <strong>/etc/init.d/</strong>. Сюда можно помещать любые терминальные команды. И этот скрипт должен начинаться с</p>
<p><pre class="brush: bash;">

#!/bin/sh

</pre></p>
<p>Теперь необходимо проставить скрипту права на запуск:</p>
<p><pre class="brush: bash;">
sudo chmod +x /etc/init.d/local.autostart
</pre></p>
<p>И наконец, сконфигурировать систему, чтобы наш скрипт запускался при загрузке ОС:</p>
<p><pre class="brush: bash;">

sudo update-rc.d local.autostart defaults 80

</pre></p>
<p>Все, при следующей загрузке системы все команды, помещенные в local.startup, будут выполнены.</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/programjutsu.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/programjutsu.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/programjutsu.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/programjutsu.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/programjutsu.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/programjutsu.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/programjutsu.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/programjutsu.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/programjutsu.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/programjutsu.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/programjutsu.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/programjutsu.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/programjutsu.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/programjutsu.wordpress.com/64/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=64&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://programjutsu.wordpress.com/2010/06/23/%d0%b2%d1%8b%d0%bf%d0%be%d0%bb%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4-%d0%bf%d1%80%d0%b8-%d0%b7%d0%b0%d0%bf%d1%83%d1%81%d0%ba%d0%b5-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5e16ca68d8f8f4cfebf5388fcda6660a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lesandr</media:title>
		</media:content>
	</item>
		<item>
		<title>IE и expression</title>
		<link>http://programjutsu.wordpress.com/2010/03/30/ie-%d0%b8-expression/</link>
		<comments>http://programjutsu.wordpress.com/2010/03/30/ie-%d0%b8-expression/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 16:59:46 +0000</pubDate>
		<dc:creator>lesandr</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[expression]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://programjutsu.wordpress.com/?p=58</guid>
		<description><![CDATA[Решив недавно задачу с применением CSS параметров max-width и max-height для Internet Exlorer&#8217;ов я очень обрадовался. И, как оказалось, весьма поспешно. В предыдущую задачу входило поставить ограничения  на максимальную ширину и высоту для изображений на странице.  Соответственно, проблему можно решить поставив с CSS max-width и max-height для тэга IMG. Все отлично работает, однако, если на [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=58&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Решив недавно задачу с применением CSS параметров max-width и max-height для Internet Exlorer&#8217;ов я очень обрадовался. И, как оказалось, весьма поспешно.</p>
<p>В предыдущую задачу входило поставить ограничения  на максимальную ширину и высоту для изображений на странице.  Соответственно, проблему можно решить поставив с CSS max-width и max-height для тэга IMG. Все отлично работает, однако, если на странице довольно много изображений, Internet Explorer повисает на прочь (у некоторых даже наблюдалось полнейшнее повисание компьютера). В поисках решения наткнулся на одну запись в дневнике: <a href="http://lusever.livejournal.com/15868.html" target="_blank">http://lusever.livejournal.com/15868.html</a>. Оказывается:</p>
<p>Есть несколько особенностей у <var>expression</var>:</p>
<ul>
<li>выполняется постоянно, если не переопределить CSS–свойство;</li>
<li>выполняется мгновенно;</li>
<li>ключевое слово <var>this</var> необязательно, выражение <var>this.style</var> равносильно простому <var>style</var>;</li>
<li>работают комментарии <code>/* */</code>, несмотря на то, что мы  находимся внутри css;</li>
<li>можно использовать внешние функции или библиотеки, если они  объявлены или подключены в html;</li>
<li>пробелы могут вызывать ошибку, хотя такое встречается редко;</li>
</ul>
<p>&laquo;на каждое движение мышки по странице или выполнение JavaScript–кода  происходит пересчет expression. 	Избежать пересчета удастся, просто переопределив фильтр в начале  выражения:&raquo;</p>
<p><code>.button1, .button2, .button3, .button4<br />
{ filter: expression( runtimeStyle.<span style="color:#993300;">filter</span> = <span style="color:#009900;">'alpha(opacity='</span>+currentStyle.<span style="color:#990000;">opacity</span>*<span style="color:#cc6600;">100</span>+<span style="color:#009900;">')'</span> ) } </code></p>
<p>/** выдержки из статьи (Автор: Палсеич)**/</p>
<p>Вот как оказывается не все так просто. Последовав совету, я немного позанимался с runtime Style, и все получилось. Вот, что в итоге выходит для max-width и max-height:</p>
<p><pre class="brush: css;">
.good img {
    max-height: 140px;
    max-width:140px;
    height : expression(runtimeStyle.height = this.offsetHeight  &gt; 140 ? &quot;140px&quot; : &quot;auto&quot;);
    width:expression(runtimeStyle.width = this.width &gt; 140? &quot;140px&quot;:  &quot;auto&quot; );
}
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/programjutsu.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/programjutsu.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/programjutsu.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/programjutsu.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/programjutsu.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/programjutsu.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/programjutsu.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/programjutsu.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/programjutsu.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/programjutsu.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/programjutsu.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/programjutsu.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/programjutsu.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/programjutsu.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=58&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://programjutsu.wordpress.com/2010/03/30/ie-%d0%b8-expression/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5e16ca68d8f8f4cfebf5388fcda6660a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lesandr</media:title>
		</media:content>
	</item>
		<item>
		<title>MAX-WIDTH в IE6</title>
		<link>http://programjutsu.wordpress.com/2010/03/02/max-width-%d0%b2-ie6/</link>
		<comments>http://programjutsu.wordpress.com/2010/03/02/max-width-%d0%b2-ie6/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 09:52:03 +0000</pubDate>
		<dc:creator>lesandr</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[max-width]]></category>
		<category><![CDATA[разметка]]></category>

		<guid isPermaLink="false">http://programjutsu.wordpress.com/?p=50</guid>
		<description><![CDATA[В текущем проекте на работе возникла необходимость обрезать изображение, если его ширина превышает определенное значение. При этом никак нельзя изменять параметры в верстке. Как вариант можно было на уровне скрипта PHP  при генерации тэга IMG проверять размеры картинки, и в зависимости от ее размера подставлять соответствующий стиль. Однако, хочется более элегантного решения. Такое вполне можно [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=50&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>В текущем проекте на работе возникла необходимость обрезать изображение, если его ширина превышает определенное значение. При этом никак нельзя изменять параметры в верстке. Как вариант можно было на уровне скрипта PHP  при генерации тэга IMG проверять размеры картинки, и в зависимости от ее размера подставлять соответствующий стиль. Однако, хочется более элегантного решения. Такое вполне можно организовать с помощью CSS.</p>
<p>Существует параметр max-width, который корректно обрабатывается всеми современными броузерами. Достаточно указать максимальную ширину, и изображение будет автоматически ресайзиться:</p>
<p><pre class="brush: css;">
#element img {max-width:800px}
</pre></p>
<p>Однако для IE6 такая конструкция уже не пройдет. Погуглив немного обнаружил конструкцию, которая прилично обрабатывается даже на ранних версиях IE, начиня с 5.0:</p>
<p><pre class="brush: css;">
#element img {width:expression(document.body.clientWidth &gt; 440? &quot;440px&quot;: &quot;auto&quot; );}
</pre></p>
<p>Подробнее об expression можно почитать <a title="здесь" href="http://www.master-web.info/expression-in-css/" target="_blank">здесь</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/programjutsu.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/programjutsu.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/programjutsu.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/programjutsu.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/programjutsu.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/programjutsu.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/programjutsu.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/programjutsu.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/programjutsu.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/programjutsu.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/programjutsu.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/programjutsu.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/programjutsu.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/programjutsu.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=50&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://programjutsu.wordpress.com/2010/03/02/max-width-%d0%b2-ie6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5e16ca68d8f8f4cfebf5388fcda6660a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lesandr</media:title>
		</media:content>
	</item>
		<item>
		<title>Создание демона  (службы) в Linux</title>
		<link>http://programjutsu.wordpress.com/2010/03/02/%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b4%d0%b5%d0%bc%d0%be%d0%bd%d0%b0-%d1%81%d0%bb%d1%83%d0%b6%d0%b1%d1%8b-%d0%b2-linux/</link>
		<comments>http://programjutsu.wordpress.com/2010/03/02/%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b4%d0%b5%d0%bc%d0%be%d0%bd%d0%b0-%d1%81%d0%bb%d1%83%d0%b6%d0%b1%d1%8b-%d0%b2-linux/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 09:38:21 +0000</pubDate>
		<dc:creator>lesandr</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[daemon]]></category>
		<category><![CDATA[Программирование под Linux]]></category>
		<category><![CDATA[Создание демона]]></category>
		<category><![CDATA[Lazarus]]></category>
		<category><![CDATA[Pascal]]></category>

		<guid isPermaLink="false">http://programjutsu.wordpress.com/?p=42</guid>
		<description><![CDATA[Чего я никак не мог предположить, так это того, что на моей работе мне представится возможность или скорее появится необходимости писать что-нибудь под linux. Однако такое событие произошло. Несмотря на то, что по долгу службы я являюсь PHP-разработчиком (веб-разработчиком) мне &#171;предложили&#187; написать утилиту под Ubuntu для начинающегося проекта. И не просто утилиту а демона &#8211; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=42&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Чего я никак не мог предположить, так это того, что на моей работе мне представится возможность или скорее появится необходимости писать что-нибудь под linux. Однако такое событие произошло. Несмотря на то, что по долгу службы я являюсь PHP-разработчиком (веб-разработчиком) мне &laquo;предложили&raquo; написать утилиту под Ubuntu для начинающегося проекта. И не просто утилиту а демона &#8211; службу под linux. Еще пару лет назад подобного рода задача могла бы испугать меня. Но только не теперь. Тем более что для разработки под Linux совсем необязательно иметь специфическое программное обеспечение. Компилятор C++ уже имеется. Однако я давно собирался попробовать кросс платформенную среду для разработки ПО Lazarus. И я решил создавать демона на FreePascal.</p>
<p>Итак, здесь я попытаюсь показать пример создания простейшего демона в Lazarus.</p>
<p>Структура основной программы выглядит также, как и обыкновенного консольного приложения:</p>
<p><pre class="brush: delphi;">
program mydaemon;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
SysUtils
Begin
End.
</pre></p>
<p style="text-align:justify;">Основная идея при создании демона заключается в следующем: создается еще один экземпляр приложения в памяти а текущая программа завершается. Таким образом и стартует демон. Для реализации этого подхода используется функция fpFork. Она создает копию текущего процесса и возвращает:</p>
<ul>
<li>PID, если процесс успешно создан;</li>
<li>-1, если возникла ошибка при создании процесса;</li>
<li>0, если это уже копия процесса (потомок).</li>
</ul>
<p>
Таким образом старт демона осуществляется при помощи несложных операций:</p>
<p><pre class="brush: delphi;">
pid := fpFork;
case pid of
0 : begin { we are in the child }
Close(input); { close standard in }
Assign(input,'/dev/null');
ReWrite(input);
Close(output); { close standard out }
Assign(output,'/dev/null');
ReWrite(output);
Close(stderr); { close standard error }
pid:=fpGetPid;
end;
-1 :begin
WriteLn('forking error, so halt 1');
halt(1);
end;
else begin
Halt;          { successful fork, so parent dies }
end;
</pre></p>
<p style="text-align:justify;">При запуске программы мы делаем копию нашего процесса, и если это прошло успешно, завершаем работы (попадаем в ветку case else). Дочерний же процесс начинает свою работу, попадая в ветку case 0 и следует далее по коду программы. Теперь демон переходит в режим ожидания и ждет сигнала, после которого он активизируется и выполнит определенные действия. В простейшем случае это можно организовать в виде цикла:</p>
<p></p>
<p><pre class="brush: delphi;">
while not bTerm do
begin
......
end;
</pre><br />
</p>
<p style="text-align:justify;">
Этот цикл будет выполняться до тех пор пока не придет сигнал об уничтожении. Теперь необходимо научить демон принимать внешние сигналы от ОС. Для этого создадим функцию, которая будет обрабатывать сигналы:</p>
<p></p>
<p><pre class="brush: delphi;">
procedure DoSig(sig : longint);cdecl;
begin
case sig of
SIGTERM : bTerm := true;
end;
end;
</pre><br />
<br />
И теперь перенаправим обработку сигналов на эту функцию:<br />
</p>
<p><pre class="brush: delphi;">
{$hints off}
FpsigEmptySet(zerosigs);
{$hints on}
{ set global daemon booleans }
bTerm := false;

{ block all signals except -TERM }
sSet := $ffffbffe;
ps1 := @sSet;
fpsigprocmask(sig_block,ps1,nil);

{ setup the signal handlers }
new(aOld);
new(aTerm);
aTerm^.sa_handler{.sh} := SigactionHandler(@DoSig);
aTerm^.sa_mask := zerosigs;
aTerm^.sa_flags := 0;
fpSigAction(SIGTERM,aTerm,aOld)
</pre></p>
<p style="text-align:left;">Теперь, если наш демон получит сигнал об уничтожении sigTerm, он будет завершен. Остается придумать механизм запуска и остановки демона. Сейчас я реализовал это довольно простым способом. При запуске демона проверяется какой параметр ему передан. Если start, то форким, создаем во временной директории файл daemonname.lock и пишем туда pid демона. Если же в качестве параметра передан stop открываем файл daemonname.lock, читаем pid, убиваем процесс с таким pid, удалем lock файл. Однако, вероятно, это не лучшее решение. Поэтому предстоит еще провести исследование в этом направлении.</p>
<p>Полный код демона:</p>
<p><pre class="brush: delphi;">
program mydaemon;

{$mode objfpc}{$H+}

uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
SysUtils,BaseUnix, logger, mydb, VideoRecorder, socketserver;

Var
{ vars for daemonizing }
bTerm : boolean;
aOld,
aTerm: pSigActionRec;
ps1  : psigset;
sSet : cardinal;
pid  : pid_t;
zerosigs : sigset_t;
status: integer;
secs : longint;
FileEngine:TLogger;
err: LongInt;
counter:integer;
db:TMyDB;
Socket:TSocketServer;
CurrentQueue:TQueueInfo;
{ handle SIGTERM }
procedure DoSig(sig : longint);cdecl;
begin
case sig of
SIGTERM : bTerm := true;
end;
end;

procedure RunDaemon();
var
Player:TVideoRecorder;
begin
db:=TMyDB.Create('localhost', 'root', 'college', 'daemon');
writeln('Connecting...');
if not db.ConnectToDatabase then
begin
writeln('Error connection to database:');
writeln(db.getError());
FileEngine.WriteLog(db.getError);
halt;
exit;
end;
{$hints off}
FpsigEmptySet(zerosigs);
{$hints on}
{ set global daemon booleans }
bTerm := false;

{ block all signals except -TERM }
sSet := $ffffbffe;
ps1 := @sSet;
fpsigprocmask(sig_block,ps1,nil);

{ setup the signal handlers }
new(aOld);
new(aTerm);
aTerm^.sa_handler{.sh} := SigactionHandler(@DoSig);

aTerm^.sa_mask := zerosigs;
aTerm^.sa_flags := 0;
fpSigAction(SIGTERM,aTerm,aOld);
{ daemonize }
pid := fpFork;
case pid of
0 : begin { we are in the child }
Close(input); { close standard in }
Assign(input,'/dev/null');
ReWrite(input);
Close(output); { close standard out }
//Assign(output,'dpsoutput.log');
//ReWrite(output);
Assign(output,'/dev/null');
ReWrite(output);
Close(stderr); { close standard error }
pid:=fpGetPid;
FileEngine.Lock(pid);
writeln('Daemon Started');
end;
-1 :begin
WriteLn('forking error, so halt 1');
halt(1);
end;
else begin
Halt;          { successful fork, so parent dies }
end;
end;
FileEngine.WriteLog('Daemon start');
{ begin processing loop }
counter:=0;
Player:=TVideoRecorder.Create;
repeat
//Some actions
until bTerm;
Player.Free;
FileEngine.UnLock;
FileEngine.WriteLog('Daemon terminated');
db.Free;
end;

Begin
{Init File Engine}
FileEngine:=TLogger.Create('test');
{**Check for superuser rights**}
{ if fpGetUID&amp;lt;&amp;gt;0 then
begin
Writeln('Error: Need superuser rights');
halt;
end;}
{****}
if ParamStr(1)='start' then
begin
if FileEngine.isLockFileExists then
begin
WriteLn('Process already running');
halt;
end;
Writeln('Startin Daemon...');
RunDaemon;
end
else if ParamStr(1)='stop' then
begin
writeln('Stoping daemon');
if FileEngine.isLockFileExists then
begin
pid:=FileEngine.getPID;
if fpkill(pid, SIGTERM) &amp;lt; 0 then
begin
err := fpGetErrno;
case err of
ESysEsrch:
begin
Writeln(stderr,'Porcces with PID='+IntToStr(pid)+' not exists');
FileEngine.UnLock;
end;
ESysEperm: Writeln(stderr,'Permissions to kill process denied');
end;
end
else
begin
Writeln(stderr,'Daemon stopped');
end;
end
else
Writeln('Daemon is not running');
end
else writeln('Usage: ./mydaemon start|stop|restart');
End.
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/programjutsu.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/programjutsu.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/programjutsu.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/programjutsu.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/programjutsu.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/programjutsu.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/programjutsu.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/programjutsu.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/programjutsu.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/programjutsu.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/programjutsu.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/programjutsu.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/programjutsu.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/programjutsu.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=programjutsu.wordpress.com&amp;blog=5452604&amp;post=42&amp;subd=programjutsu&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://programjutsu.wordpress.com/2010/03/02/%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b4%d0%b5%d0%bc%d0%be%d0%bd%d0%b0-%d1%81%d0%bb%d1%83%d0%b6%d0%b1%d1%8b-%d0%b2-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5e16ca68d8f8f4cfebf5388fcda6660a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lesandr</media:title>
		</media:content>
	</item>
	</channel>
</rss>
